linux学习-系统监控工具
系统监控工具
come from:https://blog.csdn.net/free050463/article/details/82842273
top、free、vmstat、iostat、pmap、glances、dstat、iotop、lsof
1 命令top
动态监控系统状态 ,在命令行输入top,界面如下
格式:
top [选项]
选项:
-p:指定进程
-b:全部显示所有进程
-H : 线程模式,示例:top -H -p 5155
-n#:刷新多少次后退出
-d#:指定刷新时间间隔,默认为3秒
执行界面
1. |top - 21:01:47 up 10:45, 4 users, load average: 0.04, 0.03, 0.05|
|命令uptime信息|
2. |Tasks: 259 total, | 1 running, |258 sleeping, | 0 stopped, | 0 zombie
| 总进程数 | 活动进程 | 睡眠进程 | 停止进程 | 僵尸进程|
3. |%Cpu(s): | 0.1 us, | 0.2 sy, | 0.0 ni, | 99.8 id,| 0.0 wa, | 0.0 hi, | 0.0 si, | 0.0 st|
| cpu状态 |用户占用比例|内核占用|改变过ni优先级的进程占用| 空闲占比 |等待IO时间| 硬中断 |软终端|丢失的时间片|
4. |KiB Mem : 1514076 total, | 76768 free, | 791284 used, | 646024 buff/cache|
| 总内存 | 剩余量 | 使用量 |用于缓存的量|
5. |KiB Swap: 3145724 total, | 3145724 free, | 0 used. | 503752 avail Mem |
| 虚拟内存总量 | 空闲量 | 使用量 |缓冲的交换区总量|
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
742 root 20 0 320060 6536 5072 S 0.3 0.4 0:49.45 vmtoolsd
1
2
3
4
5
6
7
8
9
10
11
12
首部信息显示隐藏开关
uptime信息:开关 l
tasks信息与cpu: 开关 t
memory信息:开关 m
cpu分别显示:(数字)1,显示所有核心信息
st:丢失的时间片,系统识别虚拟机,但不会识别虚拟机中运行的,cpu会分配给虚拟机中一些进程用,就会产生未知时间片
排序:
p:以占据的cpu百分比%cpu
M:占据内存百分比,%MEM
T:累计占据CPU时长,TIME+
管理指令:
q:退出命令
S:修改刷新时间间隔
k:终止指定进程
W: 保存至root/.toprc
####7.5.1 htop命令:EPEL源
与top命令相似,UI设计前卫一些
格式
htop [选项]
选项:
-d#:指定延迟时间
-u UserName:仅显示指定用户的进程
-s COLUME:以指定字段进行排序
子命令
s:跟踪选定进程系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t:显示进程树
2 内存空间管理
2.1 命令free
内存空间使用状态
格式:free[OPTION]
选项
-b:以字节为单位
-m:以MB为单位
-g:以GB为单位
-h:易读模式
-t:显示RAM+swap的总和
-s n:刷新间隔为n秒
-c n:刷新n次后即退出
执行结果
buffers,解决速度不匹配问题;cache缓存,提高访问速度的
[v9@hai7 ~]$free
total used free shared buffers cached
1:Mem: 1003020 887824 115196 4104 89252 428612
2:-/+ buffers/cache: 369960 633060
3:Swap: 2097148 1076 2096072
1
2
3
4
5
内存使用情况
-/+ buffers/cach
(-buffers/cache) used内存数: used – buffers – cached
(+buffers/cache) free内存数 :free + buffers + cached
虚拟内存信息
2.2 vmstat命令
虚拟内存信息
格式
vmstat [options][delay[count]]
选项:
-s:显示内存的统计数据
示例:
vmstat 1 动态观察,1秒刷新一次
vmstat 1 10 执行10次退出,1秒执行一次
执行结果说明
vmstat -n
|procs| |-----------memory--------| |-swap-| -|---io---|-|system ||-------cpu-----|
1 2 3 4 5 6
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 107296 94720 442468 0 0 5 1 17 16 0 0 100 0 0
1
2
3
4
5
procs:
r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory:
swpd:交换内存的使用总量
free: 空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存容量
swap
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
io:
bi:从块设备读入数据到系统的速率(kb/s)
bo:保存数据至块设备的速率
system:
in:interrupts终端速率,包括时钟
cs:context switch 进程切换速率
cpu:
us:运行非内核代码的时间
sy:运行内核代码的时间
id:空闲时间.Linux2.5.41前,包括IO-wait time
wa:I/O等待时间. 2.5.41前,包括in idle
st:丢失时间.
2.3命令iostat
与vmstat使用方法相似,统计CPU和设备IO信息
格式
iostat [选项] [-p [device…] [interval [count] ]
选项
-c:仅显示CPU统计信息.与-d选项互斥.
-d:仅显示磁盘统计信息.与-c选项互斥.
-k:以K为单位显示每秒的磁盘请求数,默认单位块.
-p:device | ALL 与-x选项互斥,用于显示块设备及系统分区的统计信息.
-t:在输出数据时,打印搜集数据的时间.
-V:打印版本号和帮助信息.
-x :输出扩展信息.
示例
示例1. 监控设备adv1的扩展数据,每秒刷新一次,执行10次
[v9@hai7 ~]$iostat -x -d sda1 1 10
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda1 0.00 0.00 0.01 0.00 0.09 0.00 8.42 0.00 0.07 0.07 0.14 0.07 0.00
1
2
3
rrqm/s:每秒这个设备相关的读取请求有多少被合并了
rsec/s:每秒读取的扇区数
avgrq-sz:平均请求扇区的大小
avgqu-sz:是平均请求队列的长度,越短越好
await: I/O响应时间,一般低于5ms,await与svctm差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm: 表示平均每次设备I/O操作的服务时间
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
示例2. 以k为单位显示磁盘使用情况,每2秒刷新一次
[v9@hai7 ~]$iostat -d -k 2
1
示例3. 默认执行结果示例
[v9@hai7 ~]$iostat
1:Linux 2.6.32-754.el6.x86_64 (hai6) 09/06/2018 _x86_64_ (4 CPU)
2:avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.16 0.00 0.00 99.81
3:Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
scd0 0.01 0.03 0.00 1540 0
sda 0.46 19.71 2.57 1047842 136528
1
2
3
4
5
6
7
8
9
架构CPU信息
CPU信息
块设备信息
1. tps: 每秒钟发送到的I/O请求数.
2. Blk_read /s: 每秒读取的block数.
3. Blk_wrtn/s: 每秒写入的block数.
4. Blk_read: 读入的block总数.
5. Blk_wrtn: 写入的block总数.
2.4 命令pmap
进程对应的内存映射,与文件/proc/PID(进程编号)/maps类似
格式
pmap [options] pid […]
选项
-x:显示详细格式的信息
执行示例,查看进程7795的内存占用信息
[v9@hai7 ~]$pmap -x 7795
7795: nano
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 168 112 0 r-x-- nano
0000000000629000 8 8 4 rw--- nano
0000000001fd9000 528 468 468 rw--- [ anon ]
... <==省略
[v9@hai7 ~]$cat /proc/7795/maps <==与pmap显示内容相似
1
2
3
4
5
6
7
8
9
RSS:真正占用空间
Dirty:脏数据,数据没有最终结束,处于中间状态
3. 命令glances
EPEL源,可以跨网络监控
格式
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file][-o output]
常用选项:
选项 含义
-b 以Byte为单位显示网卡数据速率
-d 关闭磁盘I/O模块
-f /path/to/somefile 设定输入文件位置
-o{HTML CSV}
-m 输入格式
-n 禁用mount模块
-t 延迟时间间隔
-1 每个CPU的相关数据单独显示
内建命令
选项 含义
a 按进程自动排序
l 显示或隐藏日志
c 按 CPU% 排序
b Bytes or bits for network I/O
m 按 MEM% 排序
w 删除警告日志
p 按用户排序
x 删除警告和关键日志
i 按I/O使用状况排序
1 流显示每个CPU内核的使用情况
d 显示隐藏磁盘读写状况
h 帮助信息
f 显示系统信息
t View network I/O as combination
n 显示网络状态
u View cumulative network I/O
s 显示传感器信息
q 离开程序
y hddtemp统计信息
C/S模式下运行glances命令,跨网络访问
服务器模式( S ):
格式
glances -s -B IPADDR
选项:
-s :表示以服务器端
-B:开启某一个监听地址,不加是所有网卡都参与
IPADDR:指明监听的本机那个地址
客户端模式( C ):
格式
glances -c IPADDR
选项
-c:以客户端
IPADDR:要连入的服务器端地址,服务器指定的地址
4 命令dstat
系统资源统计,代替vmstat,iostat
格式
dstat [-afv] [options…] [delay[count]]
选项
选项 含义
-c 显示cpu相关信息
-C 此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息
-d 显示disk相关信息
-D total,sda,sdb…
-g 显示page相关统计数据
-m 显示memory相关统计数据
-n 显示network相关统计数据
-p 显示process相关统计数据
-r 显示io请求相关统计数据
-s 显示swapped相关统计数据
-y 系统状态
- -socket 用来显示tcp udp端口状态
- -ipc 显示ipc消息队列,信号等信息
- -top-cpu 显示最占用CPU的进程
- -top-io 显示最占用io的进程
- -top-mem 显示最占用内存的进程
- -top-latency 显示延迟最大的进程
- -output 将状态信息以##.csv后缀定向到指定目录下
示例
默认输入 dstat 等于输入了dstat -cdngy 1或dstat -a 1
dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0| 0 0 | 424B 346B| 0 0 | 121 104
0 0 100 0 0 0| 0 0 | 240B 346B| 0 0 | 102 92
1
2
3
4
5
system:int、csw分别为系统的中断次数(interrupt)和上下文切换(context switch)
5. 命令iotop
是一个用来监视磁盘I/O使用状况的top类工具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO
[root@hai7 ~]$iotop
1:Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
2:Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
3: PID PRIO< USER DISK READ DISK WRITE SWAPIN IO COMMAND
1936 ?dif root 0.00 B/s 0.00 B/s 0.00 % 0.00 % tracker-extract
1943 ?dif root 0.00 B/s 0.00 B/s 0.00 % 0.00 % tracker-miner-fs
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
1
2
3
4
5
6
7
界面如上所示
Read和Write速率总计
实际的Read和Write速率
参数如下
PID:线程ID
PRIO:优先级
USER:用户
DISK:磁盘读速率
SWAPIN:swap交换百分比
IO:IO等待所占的百分比
COMMAND:线程/进程命令
iotop常用参数
选项 含义
-o,–only 只显示正在成I/O的进程或线程,除了传参,可以在运行过程总按o生效
-b,–batch 非交互模式,一般用来记录日志
-n NUM,–iter=NUM 设置监测的次数,默认无限。在非交互模式下很有用
-d SEC,–delay=SEC 设置每次检测的间隔,默认1秒,接受非整型数据例如1.1
-p PID,–pid=PID 指定检测的进程/线程
-u USER,–user=USER 指定监测某个用户产生的I/O
-P --processes 仅显示进程,默认iotop显示所有线程
-a,–accumulated 显示累计的I/O,而不是带宽
-k,–kilobytes 使用KB单位,而不是对人友好的单位,在非交互模式下,脚本编程有用
-t,–time 加上时间戳,非交互非模式
-q,–quiet 禁止头几行,非交互模式,有三种指定方式
-q 只在第一次监测时显示列名
-qq 永远不显示列名
-qqq 永远不显示I/O汇总
交互按键
按键 用途
left和right方向键 改变排序
r 反向排序
o 切换至选项–only
p 切换至–processes选项
a 切换至–accumulatd选项
q 退出
i 改变线程的优先级
6. 命令lsof
list open files查看当前系统文件的工具,在Linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议(TCP)和用户数据协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符
格式
lsof [选项]
选项
选项 含义
-a 列出打开文件存在的进程
-c 显示command列中包含指定字符的进程所打开的文件
-g 列出GID号进程详情
-d FD 列出占用该文件号的进程
+d /DIR/ 列出目录下被打开的文件
+D /DIR/ 递归列出目录下被打开的文件
-n目录 列出使用NFS的文件
-i条件 列出符合条件的进程(4、6、协议、:端口、@ip)
-p进程号 列出指定进程号所打开的文件
-u 列出UID号进程详情
-h 列出UID号进程详情
-v 显示版本信息
-n 不反向解析网络名字
示例
查看由登录用户启动而非系统启动的进程
[root@hai7 ~]$tty
/dev/pts/0
[root@hai7 ~]$lsof /dev/pts/0
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2189 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 2189 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 2189 root 2u CHR 136,0 0t0 3 /dev/pts/0
1
2
3
4
5
6
7
指定进程号,可以查看该进程打开的文件
[root@hai7 ~]$lsof -p 2189
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2189 root cwd DIR 8,3 4096 64 /data
bash 2189 root mem REG 8,2 106070960 101092451 /usr/lib/locale/locale-archive
... <==省略部分内容
bash 2189 root 0u CHR 136,0 0t0 3 /dev/pts/0
1
2
3
4
5
6
通过参数-i查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况,例如:sshd等,也可以通过制定ip查看该ip的网络连接情况
lsof -i -n
lsof -i@127.0.0.1
通过参数-i:端口,可以查看端口的占用情况,-i参数还有查看协议,ip的连接情况等
lsof -i:80 -n
查看指定状态的网络连接
lsof -n -P -i TCP -s TCP:ESTABLISHED
-n:no host names, -p:no port names
-i:TCP指定协议
-s:指定协议状态通过多个参数可以清晰的查看网络连接情况、协议连接情况等
恢复删除文件,此方法只适用于正在使用的文件
1. 确定文件是在使用中
[root@hai7 ~]$lsof /var/log/messages
2. 删除文件
[root@hai7 ~]$rm -f /var/log/messages
3. 查看文件进程,拿到进程编号
[root@hai7 ~]$lsof |grep /var/log/messages
4. 进入对应进程下的fd文件
[root@hai7 ~]$cd /proc/1027/fd/
5. 查看文件列表,可以看到带有(deleted)的文件
[root@hai7 ~]$ll
lrwx------ 1 root root 64 Sep 6 14:15 3 -> socket:[28141]
l-wx------ 1 root root 64 Sep 6 14:15 4 -> /var/log/messages (deleted) <==丢失的文件
6. 恢复文件,查看丢失的文件,这里会显示内容,重定向到删除目录
[root@hai7 ~]$cat /proc/1027/fd/4>/var/log/messages
[root@hai7 ~]$ls /var/log/messages
/var/log/messages <==已恢复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
执行结果说明
$lsof -i tcp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 744 rpc 8u IPv4 15285 0t0 TCP *:sunrpc (LISTEN)
rpcbind 744 rpc 11u IPv6 15288 0t0 TCP *:sunrpc (LISTEN
1
2
3
4
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
7 命令kill、pkill
7.1 kill命令
用来删除执行中的程序或工作,kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看
格式
kill [选项] [参数]
选项
-l :列出指定编号的信息,不指定则列出全部的信息名称
-n:指定信号,编号或名称都可以
-u:指定用户
信号
介绍
向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头,不区分大小写
查看
显示当前系统可用信号:kill -l, trap -l
常用信号:man 7 signal
指定信号的方法
(1)信号的数字标识:1、2、9
(2)信号完整名称:SIGHUP
(3)信号的简写名称:HUP
常用信号
编号 名称 作用
1 SIGHUP 无须关闭进程而让其重读配置文件
2 SIGINT 终止正在运行的进程;相当于Ctrl+c\
3 SIGQUIT 相当于ctrl+\
9 SIGKILL 强制杀死正在运行的进程
15 SIGTERM 终止正在运行的进程
18 SIGCONT 继续运行
19 SIGSTOP 后台休眠
示例
终止程序nano
1: 找到对应PID
[root@hai7 ~]$ps -C nano
PID TTY TIME CMD
4763 pts/0 00:00:00 nano
2:终止进程,指定信号15
[root@hai7 ~]$kill -n 15 4812
1
2
3
4
5
6
强制终止httpd服务
[root@hai7 ~]$echo $$ <==查看当前bash进程
2189
[root@hai7 ~]$kill 2189 <==尝试终止进程,没有终止
[root@hai7 ~]$kill -9 2189 <==使用9信号,强制终止
1
2
3
4
终止全部同名进程
[root@hai7 ~]$pidof httpd <==httpd有很多进程,也可以直接终止父进程
9919 9918 9917 9916 9915 9914 9913 9912 9909
[root@hai7 ~]$killall -15 httpd <==这里主要为说明killall用法
1
2
3
7.2 命令pkill
与pgrep用法相似,查找同时可以终止进程
格式
pkill [options] pattern
选项
选项 含义
-signal 发送信号给匹配到的进程
-u uid effective user,生效者
-U uid real user ,真正发起运行命令者
-t terminal 与指定终端相关的进程
-l 显示进程名(pgrep可用)
-a 显示完整格式的进程名(pgrep可用)
-P pid 显示指定进程的子进程
示例
删除所有以http开头的进程
pkill -9 "^http"
删除终端1的进程
[root@hai7 ~]$pkill -t pts/1 <==结束部分运行进程
[root@hai7 ~]$pkill -t pts/1 -9 <==连同终端一起关闭
---------------------
作者:你的微笑像茉莉
来源:CSDN
原文:https://blog.csdn.net/free050463/article/details/82842273
版权声明:本文为博主原创文章,转载请附上博文链接!
linux学习-系统监控工具的更多相关文章
- Linux下系统监控工具nmon使用
Mongodb安装在Centos7或以上的版本,对于系统的监控方法如下: 1.从\\10.10.10.1\ShareDoc\User\Zchen\linux系统监控下下载2个工具 nmon16e_mp ...
- Linux学习-系统基本设定
网络设定 (手动设定与 DHCP 自动取得) 网络其实是又可爱又麻烦的玩意儿,如果你是网络管理员,那么你必须要了解局域网络内的 IP, gateway, netmask 等参数,如果还想要连上 Int ...
- LR杂记 - Linux的系统监控工具vmstat详细说明
一.前言 非常显然从名字中我们就能够知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,可是如何通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回想一下 ...
- Linux学习 - 系统定时任务
1 crond服务管理与访问控制 只有打开crond服务打开才能进行系统定时任务 service crond restart chkconfig crond on 2 定时任务编辑 crontab [ ...
- 管理员必备的Linux系统监控工具
管理员必备的Linux系统监控工具 #1: top - 进程活动 top提供一个当前运行系统实时动态的视图, 也就是正在运行进程.在默认情况下,显示系统 中CPU使用率最高的任务,并每5秒钟刷新一次. ...
- 管理员必备的20个Linux系统监控工具
需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧.大多数Linux发行版本都装备了大量的监控工具.这些工具提供了能用作取得相关信息和系统活动的量度指标.你能使用这些工具发现造成性 ...
- 【转】管理员必备的Linux系统监控工具
原文连接: 管理员必备的Linux系统监控工具 #1: top - 进程活动 top提供一个当前运行系统实时动态的视图,也就是正在运行进程.在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷 ...
- Linux学习之系统的构建
实验环境:ubuntu 12.04 LTS 内核版本:linux-3.9.4 因为一直以来都对Linux的工作机理比较感兴趣,所以正好这两天有机会好好的研究一下,那闲话不多说,直接进入正题. 俗话说的 ...
- Linux学习之Centos(三)------系统文件目录及含义详解
Linux学习之Centos 之三------文件目录及含义 在了解了每个文件的相关种类与属性,以及了解了如何更改文件属性/权限的相关信息后,再来要了解的就是, 为什么每套Linux distribu ...
随机推荐
- 前端每日实战:35# 视频演示如何把 CSS 径向渐变用得出神入化,只用一个 DOM 元素就能画出国宝熊猫
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/odKrpy 可交互视频教程 此视频 ...
- 【leetcode】1080. Insufficient Nodes in Root to Leaf Paths
题目如下: Given the root of a binary tree, consider all root to leaf paths: paths from the root to any l ...
- UI定位元素大全(跟App定位元素差不多哦)
selenium+python自动化之元素定位 作者:一飞冲天 同样的道理,把一个页面上的元素当成是一个对象(你的女神),我们就可以通过她的属性值来找到她,比如她性别女爱好爬山---------你就可 ...
- U盘安装win8(win7)+centos7双系统
centos7除了之后,就像尝鲜看看,但是发现安装之后会失去win8启动项.导致重装系统,经过反复折腾,终于搞定了,发出来共享下.默认你的 window系统已经安装好,不介绍window安装过程.本文 ...
- BZOJ 1096: [ZJOI2007]仓库建设 动态规划 + 斜率优化
#include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #defi ...
- Python_005(字典无极坑)
一.字典(dict) 1.字典的定义格式:dic{key1:value1,key2,value2} :这里面key是唯一的,保存的时候,根据key计算一个内存地址,然后将key-value保存在这个地 ...
- __I、 __O 、__IO是什么意思?怎么用?
出处:http://www.chuxue123.com/forum.php?mod=viewthread&tid=122&ctid=3 __I. __O .__IO是什么意思?这是ST ...
- Failed to load resource: the server responsed with a status of 400 (Bad Request)
浏览器报错:Failed to load resource: the server responsed with a status of 400 (Bad Request) ajax请求失败,一般情况 ...
- 设计模式 - 建造者模式 Builder Pattern
简介 场景 在创建复杂对象时,用户无须关心该对象所包含的属性以及它们的组装方式,只需要指定复杂对象的类型和内容就可以构建它们. 模式定义 建造者模式:将一个复杂对象的构建与表示分离,使得同样的构建过程 ...
- jQuery遍历集合
jQuery 遍历List集合 $(function(){ var tbody = ""; var obj =[{"name ":"xxxx&quo ...