Wireshark的过滤器

使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。

过犹不及。



这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。

-

-

捕捉过滤器:用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。

显示过滤器:在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。

那么我应该使用哪一种过滤器呢?



两种过滤器的目的是不同的。

捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。

显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。



两种过滤器使用的语法是完全不同的。我们将在接下来的几页中对它们进行介绍:


1. 捕捉过滤器           
2. 显示过滤器


1. 捕捉过滤器



捕捉过滤器的语法与其它使用Lipcap(Linux)或者Winpcap(Windows)库开发的软件一样,比如著名的TCPdump。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。



设置捕捉过滤器的步骤是:

- 选择
capture -> options。

- 填写"capture
filter"栏或者点击"capture
filter"按钮为您的过滤器起一个名字并保存,以便在今后的捕捉中继续使用这个过滤器。

- 点击开始(Start)进行捕捉。

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1232328-0.jpg\" />

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1232117-1.jpg\" />

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U123I43-2.jpg\" />

Protocol(协议):

可能的值:
ether, fddi,
ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp
and udp.

如果没有特别指明是什么协议,则默认使用所有支持的协议。



Direction(方向):

可能的值:
src, dst, src and dst, src or dst

如果没有特别指明来源或目的地,则默认使用
"src or dst" 作为关键字。

例如,"host
10.2.2.2"与"src
or dst host 10.2.2.2"是一样的。
<BR

Host(s):

可能的值:
net, port, host, portrange.

如果没有指定此值,则默认使用"host"关键字。

例如,"src
10.1.1.1"与"src
host 10.1.1.1"相同。



Logical Operations(逻辑运算):

可能的值:not,
and, or.

否("not")具有最高的优先级。或("or")和与("and")具有相同的优先级,运算时从左至右进行。

例如,

"not tcp port 3128 and tcp port 23"与"(not tcp port 3128) and tcp port 23"相同。

"not tcp port 3128 and tcp port 23"与"not (tcp port 3128 and tcp port 23)"不同。


例子:

tcp dst port 3128

显示目的TCP端口为3128的封包。

ip src host 10.1.1.1

显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3

显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500

显示来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp

显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net
10.200.0.0/16

显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。

(src host 10.4.1.12 or src net
10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

显示来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。


注意事项:



当使用关键字作为值时,需使用反斜杠“”。

"ether proto ip" (与关键字"ip"相同).

这样写将会以IP协议作为目标。



"ip proto icmp" (与关键字"icmp"相同).

这样写将会以ping工具常用的icmp作为目标。



可以在"ip"或"ether"后面使用"multicast"及"broadcast"关键字。

当您想排除广播请求时,"no
broadcast"就会非常有用。


2. 显示过滤器:



通常经过捕捉过滤器过滤后的数据还是很复杂。此时您可以使用显示过滤器进行更加细致的查找。

它的功能比捕捉过滤器更为强大,而且在您想修改过滤器条件时,并不需要重新捕捉一次。

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1233K0-3.jpg\" />

Protocol(协议):



您可以使用大量位于OSI模型第2至7层的协议。点击"Expression..."按钮后,您可以看到它们。

比如:IP,TCP,DNS,SSH

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1235c2-4.jpg\" />

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1234R6-5.jpg\" />

您同样可以在如下所示位置找到所支持的协议:

650) this.width=650;\" border=\"0\"
alt=\"\" src=\"/uploads/allimg/110803/0U1232608-6.jpg\"
/>

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1233024-7.jpg\" />

String1, String2 (可选项):



协议的子类。

点击相关父类旁的"+"号,然后选择其子类。

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U1231448-8.jpg\" />

Comparison operators (比较运算符):

可以使用6种比较运算符:

英文写法:

C语言写法:

含义:

eq

==

等于

ne

!=

不等于

gt

>

大于

lt

<

小于

ge

>=

大于等于

le

<=

小于等于

Logical expressions(逻辑运算符):

英文写法:

C语言写法:

含义:

and

&&

逻辑与

or

||

逻辑或

xor

^^

逻辑异或

not

!

逻辑非

被程序员们熟知的逻辑异或是一种排除性的或。当其被用在过滤器的两个条件之间时,只有当且仅当其中的一个条件满足时,这样的结果才会被显示在屏幕上。

让我们举个例子:

"tcp.dstport 80 xor tcp.dstport 1025"

只有当目的TCP端口为80或者来源于端口1025(但又不能同时满足这两点)时,这样的封包才会被显示。


例子:

snmp || dns || icmp

显示SNMP或DNS或ICMP封包。

ip.addr == 10.1.1.1

显示来源或目的IP地址为10.1.1.1的封包。

ip.src != 10.1.2.3 or ip.dst !=
10.4.5.6

显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。

换句话说,显示的封包将会为:

来源IP:除了10.1.2.3以外任意;目的IP:任意

以及

来源IP:任意;目的IP:除了10.4.5.6以外任意

ip.src != 10.1.2.3 and ip.dst !=
10.4.5.6

显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。

换句话说,显示的封包将会为:

来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意

tcp.port == 25

显示来源或目的TCP端口号为25的封包。

tcp.dstport == 25

显示目的TCP端口号为25的封包。

tcp.flags

显示包含TCP标志的封包。

tcp.flags.syn == 0x02

显示包含TCP SYN标志的封包。

如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

650) this.width=650;\"
border=\"0\" alt=\"\"
src=\"/uploads/allimg/110803/0U12343K-9.jpg\" />

您可以在Wireshark官方网站或Wiki
Wireshark website上找到关于显示过滤器的补充信息。

1.
过滤IP,如来源IP或者目标IP等于某个IP
例子:
ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107
或者
ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP

2.
过滤端口
例子:
tcp.port eq 80 // 不管端口是来源的还是目标的都显示
tcp.port == 80
tcp.port eq 2722
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80 // 只显tcp协议的目标端口80
tcp.srcport == 80 // 只显tcp协议的来源端口80

udp.port eq 15000

过滤端口范围
tcp.port >= 1 and tcp.port <= 80

3.
过滤协议
例子:
tcp
udp
arp
icmp
http
smtp
ftp
dns
msnms
ip
ssl
oicq
bootp
等等

排除arp包,如!arp 或者 not arp

4.
过滤MAC
太以网头过滤
eth.dst == A0:00:00:04:C5:84 // 过滤目标mac
eth.src eq A0:00:00:04:C5:84 // 过滤来源mac
eth.dst==A0:00:00:04:C5:84
eth.dst==A0-00-00-04-C5-84
eth.addr eq A0:00:00:04:C5:84 // 过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的

less than 小于 < lt
小于等于 le

等于 eq
大于 gt
大于等于 ge
不等 ne
5.
包长度过滤
例子:
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包长度,从eth开始到最后

eth ---> ip or arp ---> tcp or udp ---> data

6.
http模式过滤
例子:
http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."

// GET包
http.request.method == "GET" && http contains "Host: "
http.request.method == "GET" && http contains "User-Agent: "
// POST包
http.request.method == "POST" && http contains "Host: "
http.request.method == "POST" && http contains "User-Agent: "
// 响应包
http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "
http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "
一定包含如下
Content-Type:

7.
TCP参数过滤
tcp.flags 显示包含TCP标志的封包。
tcp.flags.syn == 0x02 显示包含TCP SYN标志的封包。
tcp.window_size == 0 && tcp.flags.reset != 1

8.
过滤内容

tcp[20]表示从20开始,取1个字符
tcp[20:]表示从20开始,取1个字符以上
tcp[20:8]表示从20开始,取8个字符
tcp[offset,n]

udp[8:3]==81:60:03 // 偏移8个bytes,再取3个数,是否与==后面的数据相等?
udp[8:1]==32 如果我猜的没有错的话,应该是udp[offset:截取个数]=nValue
eth.addr[0:3]==00:06:5B

例子:
判断upd下面那块数据包前三个是否等于0x20 0x21 0x22
我们都知道udp固定长度为8
udp[8:3]==20:21:22

判断tcp那块数据包前三个是否等于0x20 0x21 0x22
tcp一般情况下,长度为20,但也有不是20的时候
tcp[8:3]==20:21:22
如果想得到最准确的,应该先知道tcp长度

matches(匹配)和contains(包含某字符串)语法
ip.src==192.168.1.107 and udp[8:5] matches "\\x02\\x12\\x21\\x00\\x22"
ip.src==192.168.1.107 and udp contains 02:12:21:00:22
ip.src==192.168.1.107 and tcp contains "GET"
udp contains 7c:7c:7d:7d 匹配payload中含有0x7c7c7d7d的UDP数据包,不一定是从第一字节匹配。

例子:
得到本地qq登陆数据包(判断条件是第一个包==0x02,第四和第五个包等于0x00x22,最后一个包等于0x03)
0x02 xx xx 0x00 0x22 ... 0x03
正确
oicq and udp[8:] matches "^\\x02[\\x00-\\xff][\\x00-\\xff]\\x00\\x22[\\x00-\\xff]+\\x03$"
oicq and udp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x00\\x22[\\x00-\\xff]+\\x03$" // 登陆包
oicq and (udp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x03$" or tcp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x03$")
oicq and (udp[8:] matches "^\\x02[\\x00-\\xff]{2}\\x00\\x22[\\x00-\\xff]+\\x03$" or tcp[20:] matches "^\\x02[\\x00-\\xff]{2}\\x00\\x22[\\x00-\\xff]+\\x03$")

不单单是00:22才有QQ号码,其它的包也有,要满足下面条件(tcp也有,但没有做):
oicq and udp[8:] matches "^\\x02[\\x00-\\xff]+\\x03$" and !(udp[11:2]==00:00) and !(udp[11:2]==00:80)
oicq and udp[8:] matches "^\\x02[\\x00-\\xff]+\\x03$" and !(udp[11:2]==00:00) and !(udp[15:4]==00:00:00:00)
说明:
udp[15:4]==00:00:00:00 表示QQ号码为空
udp[11:2]==00:00 表示命令编号为00:00
udp[11:2]==00:80 表示命令编号为00:80
当命令编号为00:80时,QQ号码为00:00:00:00

得到msn登陆成功账号(判断条件是"USR 7 OK ",即前三个等于USR,再通过两个0x20,就到OK,OK后面是一个字符0x20,后面就是mail了)
USR xx OK mail@hotmail.com
正确
msnms and tcp and ip.addr==192.168.1.107 and tcp[20:] matches "^USR\\x20[\\x30-\\x39]+\\x20OK\\x20[\\x00-\\xff]+"
9.
dns模式过滤

10.
DHCP
以寻找伪造DHCP服务器为例,介绍Wireshark的用法。在显示过滤器中加入过滤规则,
显示所有非来自DHCP服务器并且bootp.type==0x02(Offer/Ack)的信息:
bootp.type==0x02 and not ip.src==192.168.1.1

11.
msn
msnms && tcp[23:1] == 20 // 第四个是0x20的msn数据包
msnms && tcp[20:1] >= 41 && tcp[20:1] <= 5A && tcp[21:1] >= 41 && tcp[21:1] <= 5A && tcp[22:1] >= 41 && tcp[22:1] <= 5A
msnms && tcp[20:3]=="USR" // 找到命令编码是USR的数据包
msnms && tcp[20:3]=="MSG" // 找到命令编码是MSG的数据包
tcp.port == 1863 || tcp.port == 80

如何判断数据包是含有命令编码的MSN数据包?
1)端口为1863或者80,如:tcp.port == 1863 || tcp.port == 80
2)数据这段前三个是大写字母,如:
tcp[20:1] >= 41 && tcp[20:1] <= 5A && tcp[21:1] >= 41 && tcp[21:1] <= 5A && tcp[22:1] >= 41 && tcp[22:1] <= 5A
3)第四个为0x20,如:tcp[23:1] == 20
4)msn是属于TCP协议的,如tcp

MSN Messenger 协议分析
http://blog.csdn.net/Hopping/archive/2008/11/13/3292257.aspx

MSN 协议分析
http://blog.csdn.net/lzyzuixin/archive/2009/03/13/3986597.aspx

更详细的说明
<<wireshark过滤表达式实例介绍>>
http://www.csna.cn/viewthread.php?tid=14614

Wireshark 主界面的操作菜单中英对比
http://www.csna.cn/viewthread.php?tid=9645&extra=page%3D1

又一款好的网络分析软件
"科来网络分析系统"

学习Ethereal/Wireshark网站
http://www.csna.cn/index.php


###########################################################################


1、wireshark基本的语法字符

\d 0-9的数字
\D \d的补集(以所以字符为全集,下同),即所有非数字的字符
\w 单词字符,指大小写字母、0-9的数字、下划线
\W \w的补集
\s 空白字符,包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f
\S \s的补集
. 除换行符\n外的任意字符。 在Perl中,“.”可以匹配新行符的模式被称作“单行模式”
.* 匹配任意文本,不包括回车(\n)? 。 而,[0x00-0xff]* 匹配任意文本,包括\n
[…] 匹配[]内所列出的所有字符
[^…] 匹配非[]内所列出的字符

----------------------------------------------------------------------------------------
2、定位字符 所代表的是一个虚的字符,它代表一个位置,你也可以直观地认为“定位字符”所代表的是某个字符与字符间的那个微小间隙。

^ 表示其后的字符必须位于字符串的开始处
$ 表示其前面的字符必须位于字符串的结束处
\b 匹配一个单词的边界
\B 匹配一个非单词的边界

----------------------------------------------------------------------------------------
3、重复描述字符

{n} 匹配前面的字符n次
{n,} 匹配前面的字符n次或多于n次
{n,m} 匹配前面的字符n到m次
? 匹配前面的字符0或1次
+ 匹配前面的字符1次或多于1次
* 匹配前面的字符0次或式于0次

----------------------------------------------------------------------------------------
4、and or 匹配

and 符号 并
or 符号 或
例如:
tcp and tcp.port==80
tcp or udp

----------------------------------------------------------------------------------------
5、wireshark过滤匹配表达式实例

5.1、搜索按条件过滤udp的数据段payload(数字8是表示udp头部有8个字节,数据部分从第9个字节开始udp[8:])
udp[8]==14 (14是十六进制0x14)匹配payload第一个字节0x14的UDP数据包
udp[8:2]==14:05 可以udp[8:2]==1405,且只支持2个字节连续,三个以上须使用冒号:分隔表示十六进制。 (相当于 udp[8]==14 and udp[9]==05,1405是0x1405)
udp[8:3]==22:00:f7 但是不可以udp[8:3]==2200f7
udp[8:4]==00:04:00:2a,匹配payload的前4个字节0x0004002a
而udp contains 7c:7c:7d:7d 匹配payload中含有0x7c7c7d7d的UDP数据包,不一定是从第一字节匹配。
udp[8:4] matches "\\x14\\x05\\x07\\x18"
udp[8:] matches "^\\x14\\x05\\x07\\x18\\x14"

5.2、搜索按条件过滤tcp的数据段payload(数字20是表示tcp头部有20个字节,数据部分从第21个字节开始tcp[20:])
tcp[20:] matches "^GET [ -~]*HTTP/1.1\\x0d\\x0a"
等同http matches "^GET [ -~]*HTTP/1.1\\x0d\\x0a"

tcp[20:] matches "^GET (.*?)HTTP/1.1\\x0d\\x0a"
tcp[20:] matches "^GET (.*?)HTTP/1.1\\x0d\\x0a[\\x00-\\xff]*Host: (.*?)pplive(.*?)\\x0d\\x0a"
tcp[20:] matches "^GET (.*?)HTTP/1.1\\x0d\\x0a[\\x00-\\xff]*Host: "
tcp[20:] matches "^POST / HTTP/1.1\\x0d\\x0a[\\x00-\\xff]*\\x0d\\x0aConnection: Keep-Alive\\x0d\\x0a\\x0d\\x0a"

检测SMB头的smb标记,指明smb标记从tcp头部第24byte的位置开始匹配。
tcp[24:4] == ff:53:4d:42

检测SMB头的smb标记,tcp的数据包含十六进制ff:53:4d:42,从tcp头部开始搜索此数据。
tcp contains ff:53:4d:42
tcp matches "\\xff\\x53\\x4d\\x42"

检测tcp含有十六进制01:bd,从tcp头部开始搜索此数据。
tcp matches "\\x01\\xbd"

检测MS08067的RPC请求路径
tcp[179:13] == 00:5c:00:2e:00:2e:00:5c:00:2e:00:2e:00
\ . . \ . .
5.3、其他
http.request.uri matches ".gif$" 匹配过滤HTTP的请求URI中含有".gif"字符串,并且以.gif结尾(4个字节)的http请求数据包($是正则表达式中的结尾表示符)
注意区别:http.request.uri contains ".gif$" 与此不同,contains是包含字符串".gif$"(5个字节)。匹配过滤HTTP的请求URI中含有".gif$"字符串的http请求数据包(这里$是字符,不是结尾符)

eth.addr[0:3]==00:1e:4f 搜索过滤MAC地址前3个字节是0x001e4f的数据包。

wireshark使用手册的更多相关文章

  1. wireshark lua脚本

    1.目的:解析rssp2协议   2.如何使用wireshark lua插件 将编写的(假设为rssp2.lua)lua文本,放入wireshark 安装目录下,放哪里都行只要dofile添加了路径. ...

  2. linux中非root用户使用wireshark进行抓包

    开始的时候我是在终端中使用sudo 命令打开 wireshark 的,因为如果不这样的话 wireshark 就没法抓包啊.偶尔抓一次包就使用这样的方式提权. 今天使用 wireshark 的时候特意 ...

  3. 【原】用PHP搭建基于swoole扩展的socket服务(附PHP扩展的安装步骤及Linux/shell在线手册)

    最近公司的一项目中,需要用PHP搭建一个socket服务. 本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信.经过多次尝试,最终选择了开源的PHP扩展:swoo ...

  4. Wireshark入门与进阶系列(二)

    摘自http://blog.csdn.net/howeverpf/article/details/40743705 Wireshark入门与进阶系列(二) “君子生非异也,善假于物也”---荀子 本文 ...

  5. 抓包工具Wireshark的使用

    WireShark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息. WireShark界面简介 启动WireShark的界面如下: 选择网卡 wireshar ...

  6. 重磅发布:《阿里巴巴Android开发手册(规约)》

    1.前言 阿里巴巴于近日为广大程序员再送上重磅开春好礼:<阿里巴巴Android开发手册(规约)>.该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者.技术爱好者开放,希 ...

  7. [ipsec][strongswan] 使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容

    一,编译,启用strongswan的save-keys plugin ./configure --prefix=/root/OUTPUT --exec-prefix=/root/OUTPUT --en ...

  8. Android 抓包并通过 Wireshark 分析

    分析 Android 中 app 的网络数据交互,需要在 Android 上抓包,常用工具为 tcpdump ,用 tcpdump 生成 Wireshark 识别的 pcap 文件,把 pcap 文件 ...

  9. 成都国嵌-嵌入式linux必修实验手册…

    emouse收集整理,转载请注明: emouse的技术专栏 博客园:http://www.cnblogs.com/emouse/ CSDN:http://blog.csdn.net/haozi_198 ...

随机推荐

  1. Linux中的System V信号量

    在进程同步,并发运行时,保证按序地访问共享资源是十分重要的.因此引入了临界区的概念,一次只能有一个线程进入临界区完成他的指令.而信号量(semaphore)的作用,类似于一个交通信号灯,它负责进程协作 ...

  2. 诡异的NPE--三目运算自动类型转换

    今天在项目中碰到一个诡异的空指针异常的问题,刚开始很不解,明明自己做了空判断,为什么还是出现了空指针呢? 最后排查出来的原因是:三目运算符的自动类型匹配机制. 现场 java.lang.NullPoi ...

  3. MM-合作伙伴确定过程

    第一步:物料管理---采购---合作伙伴确定---合作伙伴角色---定义合作伙伴角色. 第二步:物料管理---采购---合作伙伴确定---合作伙伴角色---定义每个科目组适合的合作伙伴角色. 第三步: ...

  4. [leetcode]543. Diameter of Binary Tree二叉树的直径

    题目中的直径定义为: 任意两个节点的最远距离 没想出来,看的答案 思路是:diameter = max(左子树diameter,右子树diameter,(左子树深度+右子树深度+1)) 遍历并更新结果 ...

  5. myeclipse经常弹出Subversion Native Library Not Available框解决办法

    两种解决方案:(1)在myeclipse中选择 "Windows" -> Perferences. 然后通过左上方的筛选,选出svn设置菜单,点解左侧的"SVN&q ...

  6. 聊聊风口上的 eBPF

    eBPF 是一个用于访问 Linux 内核服务和硬件的新技术,由于其灵活性和高性能等特点,被迅速用于网络.出错.跟踪以及防火墙等多场景.目前国内已有少数企业开始尝试将 eBPF 引入生产实践,又拍云也 ...

  7. Vue2+Koa2+Typescript前后端框架教程--05Sequelize的使用(ORM)

    本篇开始分享Node.js后端服务开发中对于数据结构ORM的实现,主要使用的技术栈是:Sequelize. 上一篇文章中讲到班级管理的数据结构:ID,班级名称,班级编码,班主任ID,使用的数据库是My ...

  8. 面试官:Mysql 中主库跑太快,从库追不上怎么整?

    写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度,导致产生了主从延迟,出现了一点小事故. 今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题. 坐好了, ...

  9. Redis学习之路(四)Redis-cluster java api操作

    import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;import java.util.Hash ...

  10. Linux运维入门到高级全套系列PDF

    Linux运维入门到高级全套系列PDF(转) [日期:2016-08-01] 来源:Linux社区  作者:Linux [字体:大 中 小]     Linux 学习技巧 初学者可以自己安装虚拟机,然 ...