zoukankan      html  css  js  c++  java
  • dpdk test

    [root@localhost dpdk_lcores]# ls
    main.c  Makefile
    [root@localhost dpdk_lcores]# cat Makefile 
    
    export RTE_TARGET=arm64-armv8a-linuxapp-gcc
    export RTE_SDK=/data1/dpdk-19.11
    
    include $(RTE_SDK)/mk/rte.vars.mk
    
    APP = test
    
    SRCS-y := main.c
    
    include $(RTE_SDK)/mk/rte.extapp.mk
    [root@localhost dpdk_lcores]# cat main.c 
    
    #include <stdio.h>
    #include <string.h>
    #include <stdint.h>
    #include <errno.h>
    #include <sys/queue.h>
    
    #include <rte_memory.h>
    #include <rte_launch.h>
    #include <rte_eal.h>
    #include <rte_per_lcore.h>
    #include <rte_lcore.h>
    #include <rte_debug.h>
    
    static int
    lcore_hello(__attribute__((unused)) void *arg)
    {
            unsigned lcore_id;
            lcore_id = rte_lcore_id();
            printf("hello from core %u
    ", lcore_id);
            while (1) {
                    ;
            }
            return 0;
    }
    
    int
    main(int argc, char **argv)
    {
            int ret;
            unsigned lcore_id;
    
            ret = rte_eal_init(argc, argv);
            if (ret < 0)
                    rte_panic("Cannot init EAL
    ");
    
            /* call lcore_hello() on every slave lcore */
            RTE_LCORE_FOREACH_SLAVE(lcore_id) {
                    rte_eal_remote_launch(lcore_hello, NULL, lcore_id);
            }
    
            /* call it on master lcore too */
            lcore_hello(NULL);
    
            rte_eal_mp_wait_lcore();
            return 0;
    }
    [root@localhost dpdk_lcores]# 

    [root@localhost dpdk_lcores]# ls
    build  main.c  Makefile
    [root@localhost dpdk_lcores]# ls build/
    app  _install  main.o  _postbuild  _postinstall  _preinstall  test  test.map
    [root@localhost dpdk_lcores]# ls build/app/
    test  test.map
    [root@localhost dpdk_lcores]# pwd
    /data1/dpdk-19.11/demo/dpdk_lcores
    [root@localhost dpdk_lcores]#
    [root@localhost dpdk_lcores]# ./build/app/test 
    EAL: Detected 128 lcore(s)
    EAL: Detected 4 NUMA nodes
    EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
    EAL: Selected IOVA mode 'VA'
    EAL: No available hugepages reported in hugepages-2048kB
    EAL: Probing VFIO support...
    EAL: PCI device 0000:05:00.0 on NUMA socket 0
    EAL:   probe driver: 19e5:200 net_hinic
    EAL: PCI device 0000:06:00.0 on NUMA socket 0
    EAL:   probe driver: 19e5:200 net_hinic
    EAL: PCI device 0000:7d:00.0 on NUMA socket 0
    EAL:   probe driver: 19e5:a222 net_hns3
    EAL: PCI device 0000:7d:00.1 on NUMA socket 0
    EAL:   probe driver: 19e5:a221 net_hns3
    EAL: PCI device 0000:7d:00.2 on NUMA socket 0
    EAL:   probe driver: 19e5:a222 net_hns3
    EAL: PCI device 0000:7d:00.3 on NUMA socket 0
    EAL:   probe driver: 19e5:a221 net_hns3
    hello from core 1
    hello from core 2
    hello from core 3
    hello from core 4
    hello from core 7
    hello from core 6
    hello from core 5
    hello from core 8
    hello from core 9
    hello from core 10
    hello from core 11
    hello from core 12
    hello from core 13
    hello from core 14
    hello from core 15
    hello from core 16
    hello from core 17
    hello from core 18
    hello from core 19
    hello from core 20
    hello from core 21
    hello from core 22
    hello from core 23
    hello from core 24
    hello from core 25
    hello from core 26
    hello from core 28
    hello from core 29
    hello from core 27
    hello from core 31
    hello from core 30
    hello from core 33
    hello from core 34
    hello from core 32
    hello from core 39
    hello from core 35
    hello from core 45
    hello from core 37
    hello from core 38
    hello from core 40
    hello from core 41
    hello from core 48
    hello from core 49
    hello from core 44
    hello from core 50
    hello from core 46
    hello from core 47
    hello from core 42
    hello from core 43
    hello from core 36
    hello from core 51
    hello from core 64
    hello from core 65
    hello from core 54
    hello from core 66
    hello from core 55
    hello from core 56
    hello from core 57
    hello from core 58
    hello from core 59
    hello from core 67
    hello from core 61
    hello from core 68
    hello from core 63
    hello from core 69
    hello from core 53
    hello from core 70
    hello from core 71
    hello from core 60
    hello from core 72
    hello from core 73
    hello from core 74
    hello from core 52
    hello from core 75
    hello from core 62
    hello from core 76
    hello from core 77
    hello from core 78
    hello from core 79
    hello from core 80
    hello from core 81
    hello from core 82
    hello from core 83
    hello from core 84
    hello from core 85
    hello from core 86
    hello from core 87
    hello from core 88
    hello from core 89
    hello from core 90
    hello from core 91
    hello from core 92
    hello from core 93
    hello from core 94
    hello from core 95
    hello from core 96
    hello from core 97
    hello from core 98
    hello from core 99
    hello from core 100
    hello from core 101
    hello from core 102
    hello from core 103
    hello from core 104
    hello from core 105
    hello from core 106
    hello from core 107
    hello from core 108
    hello from core 109
    hello from core 110
    hello from core 111
    hello from core 112
    hello from core 113
    hello from core 114
    hello from core 115
    hello from core 116
    hello from core 117
    hello from core 118
    hello from core 119
    hello from core 120
    hello from core 121
    hello from core 122
    hello from core 123
    hello from core 124
    hello from core 125
    hello from core 126
    hello from core 127
    hello from core 0
    [root@localhost kni]# ps -elf | grep test
    0 R root      18972  18466 99  80   0 - 8405522 -    04:17 pts/1    01:48:10 ./build/app/test
    0 S root      19105  17774  0  80   0 -  1729 pipe_w 04:18 pts/0    00:00:00 grep --color=auto test
    [root@localhost kni]# ps -T -p 18466
       PID   SPID TTY          TIME CMD
     18466  18466 pts/1    00:00:00 bash
    [root@localhost kni]# ps -T -p 18972
       PID   SPID TTY          TIME CMD
     18972  18972 pts/1    00:00:47 test
     18972  18973 pts/1    00:00:00 eal-intr-thread
     18972  18974 pts/1    00:00:00 rte_mp_handle
     18972  18975 pts/1    00:00:47 lcore-slave-1
     18972  18976 pts/1    00:01:34 lcore-slave-2
     18972  18977 pts/1    00:00:47 lcore-slave-3
     18972  18978 pts/1    00:01:34 lcore-slave-4
     18972  18979 pts/1    00:01:34 lcore-slave-5
     18972  18980 pts/1    00:01:34 lcore-slave-6
     18972  18981 pts/1    00:01:34 lcore-slave-7
     18972  18982 pts/1    00:01:34 lcore-slave-8
     18972  18983 pts/1    00:01:34 lcore-slave-9
     18972  18984 pts/1    00:01:34 lcore-slave-10
     18972  18985 pts/1    00:01:34 lcore-slave-11
     18972  18986 pts/1    00:01:34 lcore-slave-12
     18972  18987 pts/1    00:01:34 lcore-slave-13
     18972  18988 pts/1    00:01:34 lcore-slave-14
     18972  18989 pts/1    00:01:34 lcore-slave-15
     18972  18990 pts/1    00:01:34 lcore-slave-16
     18972  18991 pts/1    00:01:34 lcore-slave-17
     18972  18992 pts/1    00:01:34 lcore-slave-18
     18972  18993 pts/1    00:01:34 lcore-slave-19
     18972  18994 pts/1    00:01:34 lcore-slave-20
     18972  18995 pts/1    00:01:34 lcore-slave-21
     18972  18996 pts/1    00:01:34 lcore-slave-22
     18972  18997 pts/1    00:01:34 lcore-slave-23
     18972  18998 pts/1    00:01:34 lcore-slave-24
     18972  18999 pts/1    00:01:34 lcore-slave-25
     18972  19000 pts/1    00:01:34 lcore-slave-26
     18972  19001 pts/1    00:01:34 lcore-slave-27
     18972  19002 pts/1    00:01:34 lcore-slave-28
     18972  19003 pts/1    00:01:34 lcore-slave-29
     18972  19004 pts/1    00:01:34 lcore-slave-30
     18972  19005 pts/1    00:01:34 lcore-slave-31
     18972  19006 pts/1    00:00:47 lcore-slave-32
     18972  19007 pts/1    00:01:34 lcore-slave-33
     18972  19008 pts/1    00:01:34 lcore-slave-34
     18972  19009 pts/1    00:01:34 lcore-slave-35
     18972  19010 pts/1    00:01:34 lcore-slave-36
     18972  19011 pts/1    00:01:34 lcore-slave-37
     18972  19012 pts/1    00:01:34 lcore-slave-38
     18972  19013 pts/1    00:01:34 lcore-slave-39
     18972  19014 pts/1    00:01:34 lcore-slave-40
     18972  19015 pts/1    00:01:34 lcore-slave-41
     18972  19016 pts/1    00:01:34 lcore-slave-42
     18972  19017 pts/1    00:01:34 lcore-slave-43
     18972  19018 pts/1    00:01:34 lcore-slave-44
     18972  19019 pts/1    00:01:34 lcore-slave-45
     18972  19020 pts/1    00:01:34 lcore-slave-46
     18972  19021 pts/1    00:01:34 lcore-slave-47
     18972  19022 pts/1    00:01:34 lcore-slave-48
     18972  19023 pts/1    00:01:34 lcore-slave-49
     18972  19024 pts/1    00:01:34 lcore-slave-50
     18972  19025 pts/1    00:01:34 lcore-slave-51
     18972  19026 pts/1    00:01:34 lcore-slave-52
     18972  19027 pts/1    00:01:34 lcore-slave-53
     18972  19028 pts/1    00:01:34 lcore-slave-54
     18972  19029 pts/1    00:01:34 lcore-slave-55
     18972  19030 pts/1    00:01:34 lcore-slave-56
     18972  19031 pts/1    00:01:34 lcore-slave-57
     18972  19032 pts/1    00:01:34 lcore-slave-58
     18972  19033 pts/1    00:01:34 lcore-slave-59
     18972  19034 pts/1    00:01:34 lcore-slave-60
     18972  19035 pts/1    00:01:34 lcore-slave-61
     18972  19036 pts/1    00:01:34 lcore-slave-62
     18972  19037 pts/1    00:01:34 lcore-slave-63
     18972  19038 pts/1    00:01:34 lcore-slave-64
     18972  19039 pts/1    00:01:34 lcore-slave-65
     18972  19040 pts/1    00:01:34 lcore-slave-66
     18972  19041 pts/1    00:01:34 lcore-slave-67
     18972  19042 pts/1    00:01:34 lcore-slave-68
     18972  19043 pts/1    00:01:34 lcore-slave-69
     18972  19044 pts/1    00:01:34 lcore-slave-70
     18972  19045 pts/1    00:01:34 lcore-slave-71
     18972  19046 pts/1    00:01:34 lcore-slave-72
     18972  19047 pts/1    00:01:34 lcore-slave-73
     18972  19048 pts/1    00:01:34 lcore-slave-74
     18972  19049 pts/1    00:01:34 lcore-slave-75
     18972  19050 pts/1    00:01:34 lcore-slave-76
     18972  19051 pts/1    00:01:34 lcore-slave-77
     18972  19052 pts/1    00:01:34 lcore-slave-78
     18972  19053 pts/1    00:01:34 lcore-slave-79
     18972  19054 pts/1    00:01:34 lcore-slave-80
     18972  19055 pts/1    00:01:34 lcore-slave-81
     18972  19056 pts/1    00:01:34 lcore-slave-82
     18972  19057 pts/1    00:01:34 lcore-slave-83
     18972  19058 pts/1    00:01:34 lcore-slave-84
     18972  19059 pts/1    00:01:34 lcore-slave-85
     18972  19060 pts/1    00:01:34 lcore-slave-86
     18972  19061 pts/1    00:01:34 lcore-slave-87
     18972  19062 pts/1    00:01:34 lcore-slave-88
     18972  19063 pts/1    00:01:34 lcore-slave-89
     18972  19064 pts/1    00:01:34 lcore-slave-90
     18972  19065 pts/1    00:01:34 lcore-slave-91
     18972  19066 pts/1    00:01:34 lcore-slave-92
     18972  19067 pts/1    00:01:34 lcore-slave-93
     18972  19068 pts/1    00:01:34 lcore-slave-94
     18972  19069 pts/1    00:01:34 lcore-slave-95
     18972  19070 pts/1    00:01:34 lcore-slave-96
     18972  19071 pts/1    00:01:34 lcore-slave-97
     18972  19072 pts/1    00:01:34 lcore-slave-98
     18972  19073 pts/1    00:01:34 lcore-slave-99
     18972  19074 pts/1    00:01:34 lcore-slave-100
     18972  19075 pts/1    00:01:34 lcore-slave-101
     18972  19076 pts/1    00:01:34 lcore-slave-102
     18972  19077 pts/1    00:01:34 lcore-slave-103
     18972  19078 pts/1    00:01:34 lcore-slave-104
     18972  19079 pts/1    00:01:34 lcore-slave-105
     18972  19080 pts/1    00:01:34 lcore-slave-106
     18972  19081 pts/1    00:01:34 lcore-slave-107
     18972  19082 pts/1    00:01:34 lcore-slave-108
     18972  19083 pts/1    00:01:34 lcore-slave-109
     18972  19084 pts/1    00:01:34 lcore-slave-110
     18972  19085 pts/1    00:01:34 lcore-slave-111
     18972  19086 pts/1    00:01:34 lcore-slave-112
     18972  19087 pts/1    00:01:34 lcore-slave-113
     18972  19088 pts/1    00:01:34 lcore-slave-114
     18972  19089 pts/1    00:01:34 lcore-slave-115
     18972  19090 pts/1    00:01:34 lcore-slave-116
     18972  19091 pts/1    00:01:34 lcore-slave-117
     18972  19092 pts/1    00:01:34 lcore-slave-118
     18972  19093 pts/1    00:01:34 lcore-slave-119
     18972  19094 pts/1    00:01:34 lcore-slave-120
     18972  19095 pts/1    00:01:34 lcore-slave-121
     18972  19096 pts/1    00:01:34 lcore-slave-122
     18972  19097 pts/1    00:01:34 lcore-slave-123
     18972  19098 pts/1    00:01:34 lcore-slave-124
     18972  19099 pts/1    00:01:34 lcore-slave-125
     18972  19100 pts/1    00:01:34 lcore-slave-126
     18972  19101 pts/1    00:01:34 lcore-slave-127
    [root@localhost kni]#

    4个numa + 128个核

    [root@localhost kni]# lscpu
    Architecture:          aarch64
    Byte Order:            Little Endian
    CPU(s):                128
    On-line CPU(s) list:   0-127
    Thread(s) per core:    1
    Core(s) per socket:    64
    Socket(s):             2
    NUMA node(s):          4
    Model:                 0
    CPU max MHz:           2600.0000
    CPU min MHz:           200.0000
    BogoMIPS:              200.00
    L1d cache:             64K
    L1i cache:             64K
    L2 cache:              512K
    L3 cache:              65536K
    NUMA node0 CPU(s):     0-31
    NUMA node1 CPU(s):     32-63
    NUMA node2 CPU(s):     64-95
    NUMA node3 CPU(s):     96-127
    Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma dcpop
    [root@localhost kni]#

    6张网卡

    [root@localhost kni]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp125s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether b0:08:75:5f:b7:d9 brd ff:ff:ff:ff:ff:ff
        inet 10.10.16.229/24 brd 10.10.16.255 scope global noprefixroute enp125s0f0
           valid_lft forever preferred_lft forever
        inet6 fe80::f9ec:a960:7518:b745/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp125s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether b0:08:75:5f:b7:da brd ff:ff:ff:ff:ff:ff
    4: enp125s0f2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether b0:08:75:5f:b7:db brd ff:ff:ff:ff:ff:ff
    5: enp125s0f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether b0:08:75:5f:b7:dc brd ff:ff:ff:ff:ff:ff
    6: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 44:a1:91:a4:9b:eb brd ff:ff:ff:ff:ff:ff
    7: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 44:a1:91:a4:9b:ec brd ff:ff:ff:ff:ff:ff
    [root@localhost dpdk_lcores]# ./build/app/test --lcores "(0,1,2,3,4)@(0,1),(5,6,7,8)@3"
    EAL: Detected 128 lcore(s)
    EAL: Detected 4 NUMA nodes
    EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
    EAL: Selected IOVA mode 'VA'
    EAL: No available hugepages reported in hugepages-2048kB
    EAL: Probing VFIO support...
    EAL: PCI device 0000:05:00.0 on NUMA socket 0
    EAL:   probe driver: 19e5:200 net_hinic
    EAL: PCI device 0000:06:00.0 on NUMA socket 0
    EAL:   probe driver: 19e5:200 net_hinic
    EAL: PCI device 0000:7d:00.0 on NUMA socket 0
    EAL:   probe driver: 19e5:a222 net_hns3
    EAL: PCI device 0000:7d:00.1 on NUMA socket 0
    EAL:   probe driver: 19e5:a221 net_hns3
    EAL: PCI device 0000:7d:00.2 on NUMA socket 0
    EAL:   probe driver: 19e5:a222 net_hns3
    EAL: PCI device 0000:7d:00.3 on NUMA socket 0
    EAL:   probe driver: 19e5:a221 net_hns3
    hello from core 1
    hello from core 2
    hello from core 3
    hello from core 4
    hello from core 5
    hello from core 6
    hello from core 7
    hello from core 8
    hello from core 0
    [root@localhost kni]# ps -mo pid,tid,%cpu,psr -p   19113
       PID    TID %CPU PSR
     19113      -  221   -
         -  19113 24.9   0
         -  19114  0.0  39
         -  19115  0.0  40
         -  19116 33.3   1
         -  19117 25.0   0
         -  19118 33.3   1
         -  19119 25.0   0
         -  19120 20.0   3
         -  19121 20.0   3
         -  19122 20.0   3
         -  19123 20.0   3
    The format pattern:
    –lcores=’<lcore_set>[@cpu_set][,<lcore_set>[@cpu_set],...]’
    ‘lcore_set’ and ‘cpu_set’ can be a single number, range or a group.
    
    A number is a “digit([0-9]+)”; a range is “<number>-<number>”; a group is “(<number|range>[,<number|range>,...])”.
    
    If a ‘@cpu_set’ value is not supplied, the value of ‘cpu_set’ will default to the value of ‘lcore_set’.
    
    For example, "--lcores='1,2@(5-7),(3-5)@(0,2),(0,6),7-8'" which means start 9 EAL thread;
        lcore 0 runs on cpuset 0x41 (cpu 0,6);
        lcore 1 runs on cpuset 0x2 (cpu 1);
        lcore 2 runs on cpuset 0xe0 (cpu 5,6,7);
        lcore 3,4,5 runs on cpuset 0x5 (cpu 0,2);
        lcore 6 runs on cpuset 0x41 (cpu 0,6);
        lcore 7 runs on cpuset 0x80 (cpu 7);
        lcore 8 runs on cpuset 0x100 (cpu 8).
    Using this option, for each given lcore ID, the associated CPUs can be assigned. It’s also compatible with the pattern of corelist(‘-l’) option.
    [root@localhost kni]# ps -elf | grep test
    0 R root      19113  18466 99  80   0 - 8390171 -    04:28 pts/1    00:00:53 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3
    0 S root      19125  17774  0  80   0 -  1729 pipe_w 04:28 pts/0    00:00:00 grep --color=auto test
    [root@localhost kni]# ps -T -p 19113
       PID   SPID TTY          TIME CMD
     19113  19113 pts/1    00:00:08 test
     19113  19114 pts/1    00:00:00 eal-intr-thread
     19113  19115 pts/1    00:00:00 rte_mp_handle
     19113  19116 pts/1    00:00:11 lcore-slave-1
     19113  19117 pts/1    00:00:08 lcore-slave-2
     19113  19118 pts/1    00:00:11 lcore-slave-3
     19113  19119 pts/1    00:00:08 lcore-slave-4
     19113  19120 pts/1    00:00:06 lcore-slave-5
     19113  19121 pts/1    00:00:06 lcore-slave-6
     19113  19122 pts/1    00:00:06 lcore-slave-7
     19113  19123 pts/1    00:00:06 lcore-slave-8
    [root@localhost kni]#
    [root@localhost kni]# ps -eLF |  grep 19113
    root      19113  18466  19113 24   11 8390171 10048 0 04:28 pts/1    00:00:31 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3
    root      19113  18466  19114  0   11 8390171 10048 39 04:28 pts/1   00:00:00 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3
    root      19113  18466  19115  0   11 8390171 10048 40 04:28 pts/1   00:00:00 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3
    ----------------------------------------------------------------------------------------------------------------------
    root 19113 18466 19116 33 11 8390171 10048 1 04:28 pts/1 00:00:41 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19117 25 11 8390171 10048 0 04:28 pts/1 00:00:31 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19118 33 11 8390171 10048 1 04:28 pts/1 00:00:41 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19119 25 11 8390171 10048 0 04:28 pts/1 00:00:31 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19120 20 11 8390171 10048 3 04:28 pts/1 00:00:24 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19121 20 11 8390171 10048 3 04:28 pts/1 00:00:24 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19122 20 11 8390171 10048 3 04:28 pts/1 00:00:24 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3 root 19113 18466 19123 20 11 8390171 10048 3 04:28 pts/1 00:00:24 ./build/app/test --lcores (0,1,2,3,4)@(0,1),(5,6,7,8)@3
  • 相关阅读:
    Mysql 时间操作
    curl 学习
    CURL详解
    mysql 获取当前时间戳
    php开启openssl的方法
    0,null,empty,空,false,isset
    ecshop微信扫描支付开发
    seaJs的简单应用
    js运动框架之掉落的扑克牌(重心、弹起效果)
    js运动框架完成块的宽高透明度及颜色的渐变
  • 原文地址:https://www.cnblogs.com/dream397/p/13566079.html
Copyright © 2011-2022 走看看