• 二 平均负载


    一  配置信息:

    hostname:load-exam-03

    ip:10.100.213.28

    config:4c8G

    二  都在说“平均负载”,何为平均负载

    拿个例子:

    [root@load-exam-03 ~]# uptime 
     13:56:46 up 197 days,  3:08,  1 user,  load average: 139.97, 135.86, 132.39

    是指cpu的使用率吗?eg:上面的139.97是指:cpu使用率是139.97%。答案是否定的。

    执行man uptime就可以看到它的解释:

    [root@load-exam-03 ~]# man uptime
    System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use
    the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk. The averages are taken over the three time intervals. Load averages are not normal‐
    ized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.

    即:平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,他和cpu使用率并没有直接关系。

    两个名词的解释:

    可运行状态:正在使用cpu和正在等待cpu的进程,也就是ps命令看到的处于R状态(Running或者Runnable)的进程。

    不可中断状态:正处于内核态关键流程中的进程,这些进程是不可打断的,eg:等待硬件设备的I/O响应,也就是ps aux中看到的D状态(Uninterruptible Sleep也成为Disk Sleep)的进程。

    一个很好的例子:进程想磁盘写数据时,在得到磁盘回复前,该进程是不能被打断的,这个时候该进程就处于不可中断状态,如果被打断磁盘和进程中的数据就不一致了。

    不可中断状态实际上是系统对进程和硬件的一种保护机制。

    eg:平均负载为2:

    在有1个cpu的系统的系统中,有一半的进程竞争不到cpu

    在有2个cpu的系统的系统中,cpu被刚好完全占用

    在有4个cpu的系统的系统中,cpu有50%的空闲

    当平均负载高于cpu数量70%的时候,就应该分析排查负载高的问题了。eg:上面我的系统是4C,如果平均负载达到670%时,就的关注了。

    三  cpu使用率

    单位时间内cpu繁忙情况的统计。

    四  平均负载和cpu使用率

    理解了平均负载和cpu使用率,你就会发现他两并不完全对应,大体分为以下三类:

    1  cpu密集型进程:使用大量cpu会导致平均负载升高,此时两者一致

    2  I/O密集型进程,等待I/O也会导致平均负载升高,但cpu使用率不一定升高

    3  大量等待CPU的进程调度也会导致平均负载升高,此时两者一致

    五  案例分析

    三工具:iostat、mpstat、pidstat

    yum install stress sysstat -y

    介绍:

    stress:linux系统压力测试工具

    mpstat:实时查看每个cpu的性能指标,以及所有cpu的性能指标

    pidstat:进程性能分析工具,查看进程的cpu、内存、I/O,上下文切换等性能指标。

    案例一:cpu密集型进程

    [root@xpro-load-exam-02 ~]# stress --cpu 1 --timeout 600
    stress: info: [1713] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

    (模拟一个cpu使用率100%的场景。)

    [root@xpro-load-exam-02 ~]# watch -d uptime
    Every 2.0s: uptime                                                                                                                                                          Tue Dec  4 14:55:36 2018
    
     14:55:36 up 197 days,  4:07,  3 users,  load average: 0.85, 0.80, 0.52
     14:58:06 up 197 days,  4:10,  3 users,  load average: 1.05, 0.90, 0.60

    (-d:高亮显示变化的区域。会发现1分钟内的平均负载逐渐变成1。查看平均负载情况)

    [root@xpro-load-exam-02 ~]# mpstat -P ALL 5
    Linux 3.10.0-327.el7.x86_64 (xpro-load-exam-02)         12/04/2018      _x86_64_        (4 CPU)
    
    02:58:34 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    02:58:39 PM  all   21.77    0.00    0.16    0.00    0.00    0.00    0.05    0.00    0.00   78.02
    02:58:39 PM    0    0.40    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    02:58:39 PM    1    0.20    0.20    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    02:58:39 PM    2    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80
    02:58:39 PM    3   99.76    0.00    0.00    0.00    0.00    0.00    0.24    0.00    0.00    0.00
    
    02:58:39 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    02:58:44 PM  all   22.43    1.45    0.88    0.00    0.00    0.00    0.05    0.00    0.00   75.18
    02:58:44 PM    0    0.40    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    02:58:44 PM    1    0.20    4.02    1.41    0.00    0.00    0.00    0.00    0.00    0.00   94.37
    02:58:44 PM    2    0.20    1.40    1.40    0.00    0.00    0.00    0.20    0.00    0.00   96.79
    02:58:44 PM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    
    02:58:44 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    02:58:49 PM  all   21.82    0.05    0.26    0.00    0.00    0.00    0.00    0.00    0.00   77.86
    02:58:49 PM    0    0.20    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.60
    02:58:49 PM    1    0.20    0.20    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    02:58:49 PM    2    0.20    0.20    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    02:58:49 PM    3   99.76    0.00    0.00    0.00    0.00    0.00    0.24    0.00    0.00    0.00

    (可以发现有一个cpu的使用率接近100%,但是它的iowait只有0,这说明平均负载的升高正是由于cpu的使用率为100%。

    -P ALL表示监控所有的cpu,5表示每隔5秒后输出一组数据。)

    [root@xpro-load-exam-02 ~]# pidstat -u 5 1
    Linux 3.10.0-327.el7.x86_64 (xpro-load-exam-02)         12/04/2018      _x86_64_        (4 CPU)
    
    03:01:24 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    03:01:29 PM     0      1714   99.80    0.00    0.00   99.80     2  stress
    03:01:29 PM     0      3409    0.00    0.20    0.00    0.20     3  pidstat
    03:01:29 PM     0      7293    0.00    0.20    0.00    0.20     1  monitor-agent
    03:01:29 PM     0     22282    0.60    0.20    0.00    0.80     1  filebeat
    03:01:29 PM     0     25454    0.20    0.00    0.00    0.20     1  cetus_agent
    03:01:29 PM   995     26372    0.20    0.00    0.00    0.20     1  zabbix_agentd
    
    Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
    Average:        0      1714   99.80    0.00    0.00   99.80     -  stress
    Average:        0      3409    0.00    0.20    0.00    0.20     -  pidstat
    Average:        0      7293    0.00    0.20    0.00    0.20     -  monitor-agent
    Average:        0     22282    0.60    0.20    0.00    0.80     -  filebeat
    Average:        0     25454    0.20    0.00    0.00    0.20     -  cetus_agent
    Average:      995     26372    0.20    0.00    0.00    0.20     -  zabbix_agentd

    (可以看到stress进程的cpu使用率为100%。)

    案例二:I/O密集型进程

    [root@xpro-load-exam-02 ~]# stress -i 1 --timeout 600
    stress: info: [5610] dispatching hogs: 0 cpu, 1 io, 0 vm, 0 hdd

    (模拟I/O压力,即不停的执行sync。)

    [root@xpro-load-exam-02 ~]# watch -d uptime
    Every 2.0s: uptime                                                                                                                                                          Tue Dec  4 15:12:53 2018
    
     15:12:53 up 197 days,  4:25,  3 users,  load average: 0.74, 0.43, 0.51
     15:13:37 up 197 days,  4:25,  3 users,  load average: 0.88, 0.51, 0.53

    (会发现1分钟内的平均负载逐渐变成1。查看平均负载情况)

    [root@xpro-load-exam-02 ~]# mpstat -P ALL 5
    Linux 3.10.0-327.el7.x86_64 (xpro-load-exam-02)         12/04/2018      _x86_64_        (4 CPU)
    
    03:36:59 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:37:04 PM  all    0.31    0.05   22.26    0.05    0.00    0.00    0.05    0.00    0.00   77.27
    03:37:04 PM    0    0.40    0.00    0.40    0.00    0.00    0.00    0.20    0.00    0.00   98.99
    03:37:04 PM    1    0.00    0.00   97.69    0.00    0.00    0.00    0.23    0.00    0.00    2.08
    03:37:04 PM    2    0.40    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    03:37:04 PM    3    0.40    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    
    03:37:04 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:37:09 PM  all    0.15    0.05   23.52    0.00    0.00    0.00    0.00    0.00    0.00   76.28
    03:37:09 PM    0    0.40    0.00    0.81    0.00    0.00    0.00    0.00    0.00    0.00   98.79
    03:37:09 PM    1    0.00    0.00   96.58    0.00    0.00    0.00    0.00    0.00    0.00    3.42
    03:37:09 PM    2    0.00    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.60
    03:37:09 PM    3    0.20    0.20    0.40    0.00    0.00    0.00    0.00    0.00    0.00   99.20
    
    03:37:09 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:37:14 PM  all    0.20    0.05   23.83    0.05    0.00    0.00    0.05    0.00    0.00   75.81
    03:37:14 PM    0    0.20    0.00    0.81    0.00    0.00    0.00    0.00    0.00    0.00   98.99
    03:37:14 PM    1    0.00    0.00   94.65    0.21    0.00    0.00    0.00    0.00    0.00    5.14
    03:37:14 PM    2    0.20    0.20    0.60    0.00    0.00    0.00    0.00    0.00    0.00   98.99
    03:37:14 PM    3    0.40    0.20    0.60    0.00    0.00    0.00    0.20    0.00    0.00   98.59

    (从图可以看出%sys,内核态占用cpu达到94.65%。)

    [root@xpro-load-exam-02 ~]# pidstat -u 5 1
    Linux 3.10.0-327.el7.x86_64 (xpro-load-exam-02)         12/04/2018      _x86_64_        (4 CPU)
    
    03:36:11 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    03:36:16 PM     0      8913    0.00    0.60    0.00    0.60     2  kworker/u8:2
    03:36:16 PM     0     10487    0.00    1.40    0.00    1.40     2  kworker/u8:0
    03:36:16 PM     0     11490    0.00   97.01    0.00   97.01     1  stress
    03:36:16 PM     0     11491    0.00   97.01    0.00   97.01     2  stress
    03:36:16 PM     0     11600    0.00    0.20    0.00    0.20     3  pidstat
    03:36:16 PM     0     22282    0.80    0.20    0.00    1.00     2  filebeat
    03:36:16 PM   995     26370    0.00    0.20    0.00    0.20     0  zabbix_agentd
    
    Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
    Average:        0      8913    0.00    0.60    0.00    0.60     -  kworker/u8:2
    Average:        0     10487    0.00    1.40    0.00    1.40     -  kworker/u8:0
    Average:        0     11490    0.00   97.01    0.00   97.01     -  stress
    Average:        0     11491    0.00   97.01    0.00   97.01     -  stress
    Average:        0     11600    0.00    0.20    0.00    0.20     -  pidstat
    Average:        0     22282    0.80    0.20    0.00    1.00     -  filebeat
    Average:      995     26370    0.00    0.20    0.00    0.20     -  zabbix_agentd

    (可以看出负载过高是由于stree进程导致的。)

    案例三:大量进程的场景

    [root@xpro-load-exam-02 ~]# stress -c 16 --timeout 600                                                                                                                                              
    stress: info: [13110] dispatching hogs: 16 cpu, 0 io, 0 vm, 0 hdd

    (系统cpu个数:8个,开启进程数16个,系统cpu处于过载状态。)

    [root@xpro-load-exam-02 ~]# watch -d uptime
    Every 2.0s: uptime                                                                                                                                                          Tue Dec  4 15:46:09 2018
    
     15:46:09 up 197 days,  4:58,  3 users,  load average: 18.00, 10.49, 4.85
     15:46:20 up 197 days,  4:58,  3 users,  load average: 18.07, 10.75, 4.99

    (负载过高。)

    03:46:25 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:46:30 PM  all   99.79    0.10    0.05    0.00    0.00    0.00    0.05    0.00    0.00    0.00
    03:46:30 PM    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:30 PM    1   99.78    0.22    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:30 PM    2   99.60    0.20    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:30 PM    3   99.80    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    
    03:46:30 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:46:35 PM  all   99.69    0.10    0.16    0.00    0.00    0.00    0.05    0.00    0.00    0.00
    03:46:35 PM    0   99.79    0.00    0.21    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:35 PM    1   99.40    0.40    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:35 PM    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:35 PM    3   99.79    0.00    0.21    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    
    03:46:35 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:46:40 PM  all   99.79    0.10    0.10    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:40 PM    0   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:40 PM    1   99.36    0.43    0.21    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:40 PM    2   99.80    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:40 PM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    
    03:46:40 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:46:45 PM  all   99.74    0.10    0.10    0.00    0.00    0.00    0.05    0.00    0.00    0.00
    03:46:45 PM    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:45 PM    1   99.59    0.21    0.21    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:45 PM    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    03:46:45 PM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
    Average:        0        17    0.00    0.20    0.00    0.20     -  rcuos/3
    Average:        0     13111   24.16    0.00    0.00   24.16     -  stress
    Average:        0     13112   23.96    0.00    0.00   23.96     -  stress
    Average:        0     13113   23.96    0.00    0.00   23.96     -  stress
    Average:        0     13114   24.16    0.00    0.00   24.16     -  stress
    Average:        0     13115   23.96    0.00    0.00   23.96     -  stress
    Average:        0     13116   24.36    0.00    0.00   24.36     -  stress
    Average:        0     13117   23.96    0.00    0.00   23.96     -  stress
    Average:        0     13118   27.52    0.00    0.00   27.52     -  stress
    Average:        0     13119   27.13    0.00    0.00   27.13     -  stress
    Average:        0     13120   23.96    0.00    0.00   23.96     -  stress
    Average:        0     13121   24.75    0.00    0.00   24.75     -  stress
    Average:        0     13122   24.75    0.00    0.00   24.75     -  stress
    Average:        0     13123   24.55    0.00    0.00   24.55     -  stress
    Average:        0     13124   24.36    0.00    0.00   24.36     -  stress
    Average:        0     13125   24.36    0.00    0.00   24.36     -  stress
    Average:        0     13126   24.75    0.00    0.00   24.75     -  stress
    Average:        0     13646    0.00    0.20    0.00    0.20     -  pidstat
    Average:        0     20287    0.20    0.00    0.00    0.20     -  inf-agent-guard
    Average:        0     22282    0.79    0.00    0.00    0.79     -  filebeat

    (stess导致系统负载过高。)

    好了,到这有关平均负载的知识就差不多完了。

    为了帮助你理解,这里有个比喻,如果不够形象,欢迎指正:

    以地铁为例,地铁的乘客容量就是cpu个数,正在使用CPU的进程就是在地铁上的人,等待cpu的进程就是在下一站等地铁来的人,等待I/O的进程就是下一站要上车和下车的人,

    虽然现在对cpu没有影响,但未来会影响,所以也要考虑到平均负载上。

    补充:部分人可能对上面“案例二”有疑问,因为实验结果和结论似乎互相矛盾了,其实这是因为工具的问题,stree模拟的场景是使用sync()系统调用,它的作用是刷新缓冲区内存

    到磁盘中。对于我上面实验的虚机比较新,缓冲区很小很小,无法产生IO压力,我们换个工具stress的加强版stess-ng来模拟这个场景,安装也方便:

    案例二:I/O密集型进程:

    yum install stress-ng -y

    [root@xpro-load-exam-02 ~]# stress-ng -i 1 --hdd 1 --timeout 600
    [root@xpro-load-exam-02 ~]# watch -d uptime
    Every 2.0s: uptime                                                                                                                                                                             Wed Dec  5 11:03:35 2018
    
     11:03:35 up 198 days, 15 min,  3 users,  load average: 0.87, 0.71, 0.65
     11:03:43 up 198 days, 15 min,  3 users,  load average: 1.20, 0.79, 0.67
     11:04:15 up 198 days, 16 min,  3 users,  load average: 1.90, 1.00, 0.75
    [root@xpro-load-exam-02 ~]# mpstat -P ALL 5
    11:04:29 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:04:34 AM  all    0.31    0.00   19.43   19.38    0.00    0.00    0.05    0.00    0.00   60.84
    11:04:34 AM    0    0.20    0.00    5.23    9.86    0.00    0.00    0.00    0.00    0.00   84.71
    11:04:34 AM    1    0.41    0.00   10.16   51.42    0.00    0.00    0.00    0.00    0.00   38.01
    11:04:34 AM    2    0.20    0.20    9.76   15.85    0.00    0.00    0.00    0.00    0.00   73.98
    11:04:34 AM    3    0.42    0.00   53.78    0.00    0.00    0.00    0.00    0.00    0.00   45.80
    
    11:04:34 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:04:39 AM  all    0.26    0.05   18.01   19.86    0.00    0.00    0.05    0.00    0.00   61.77
    11:04:39 AM    0    0.20    0.00   10.91   46.26    0.00    0.00    0.20    0.00    0.00   42.42
    11:04:39 AM    1    0.00    0.00    3.64   17.98    0.00    0.00    0.00    0.00    0.00   78.38
    11:04:39 AM    2    0.40    0.00    9.84   14.06    0.00    0.00    0.20    0.00    0.00   75.50
    11:04:39 AM    3    0.21    0.00   49.46    0.00    0.00    0.00    0.21    0.00    0.00   50.11
    
    11:04:39 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:04:44 AM  all    0.31    1.37   16.40   20.98    0.00    0.00    0.00    0.00    0.00   60.95
    11:04:44 AM    0    0.20    0.00    6.05   32.66    0.00    0.00    0.00    0.00    0.00   61.09
    11:04:44 AM    1    0.40    1.81    4.42   42.77    0.00    0.00    0.00    0.00    0.00   50.60
    11:04:44 AM    2    0.20    0.60    8.63    7.43    0.00    0.00    0.00    0.00    0.00   83.13
    11:04:44 AM    3    0.42    3.59   47.99    0.00    0.00    0.00    0.00    0.00    0.00   47.99
    [root@xpro-load-exam-02 ~]# pidstat -u 5 1
    Linux 3.10.0-327.el7.x86_64 (xpro-load-exam-02)         12/05/2018      _x86_64_        (4 CPU)
    
    11:05:44 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    11:05:49 AM     0      4138    0.20   51.50    0.00   51.70     1  stress-ng-hdd
    11:05:49 AM     0      4139    0.00    8.58    0.00    8.58     0  stress-ng-io
    11:05:49 AM     0      4140    0.00    3.79    0.00    3.79     2  kworker/2:0
    11:05:49 AM     0      4153    0.00    7.39    0.00    7.39     0  kworker/u8:1
    11:05:49 AM     0      4239    0.00    0.20    0.00    0.20     3  watch
    11:05:49 AM     0      4816    0.00    0.20    0.00    0.20     2  pidstat
    11:05:49 AM     0      6308    0.00    2.40    0.00    2.40     0  kworker/0:1
    11:05:49 AM     0     22282    0.60    0.40    0.00    1.00     3  filebeat
    11:05:49 AM     0     25449    0.00    0.20    0.00    0.20     2  mon_cetus.sh
    11:05:49 AM     0     25454    0.20    0.00    0.00    0.20     1  cetus_agent
    
    Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
    Average:        0      4138    0.20   51.50    0.00   51.70     -  stress-ng-hdd
    Average:        0      4139    0.00    8.58    0.00    8.58     -  stress-ng-io
    Average:        0      4140    0.00    3.79    0.00    3.79     -  kworker/2:0
    Average:        0      4153    0.00    7.39    0.00    7.39     -  kworker/u8:1
    Average:        0      4239    0.00    0.20    0.00    0.20     -  watch
    Average:        0      4816    0.00    0.20    0.00    0.20     -  pidstat
    Average:        0      6308    0.00    2.40    0.00    2.40     -  kworker/0:1
    Average:        0     22282    0.60    0.40    0.00    1.00     -  filebeat
    Average:        0     25449    0.00    0.20    0.00    0.20     -  mon_cetus.sh
    Average:        0     25454    0.20    0.00    0.00    0.20     -  cetus_agent

    对比上面三张图可以返现,IO一度很高达到51.42%,但此时的cpu使用率却不是很高,只有62%。

  • 相关阅读:
    CRF相关论文 按时间序
    python自学记录 pydev安装
    Dell无线网卡驱动安装 linux
    WPF DataGrid自动生成行号
    WPF Tips
    Links
    Prototype的Class.create解析
    Javascript中的this绑定
    Javascript的命名空间库namespace.js
    【转】一个优秀的Javascript框架--Prototype解说
  • 原文地址:https://www.cnblogs.com/fengzhihai/p/10063978.html
Copyright © 2020-2023  润新知