文件及内容处理 - ping、route

1. ping:测试主机之间网络的连通性

ping命令的功能说明

ping 命令用于检测主机。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

ping命令的语法格式

ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t][主机名称或IP地址]

ping [-aAbBdDfhLnOqrRUvV46] [-c count] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N node‐info_option] [-w deadline] [-W timeout] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop ...] des‐tination

ping命令的常用参数说明:

ping 参数很多,表1为 ping 命令的参数及说明:

表1: ping 命令的参数及说明

参数选项 解释说明
-d 使用Socket的SO_DEBUG功能。
-c 设置完成要求回应的次数。
-f 极限检测。
-i 指定收发信息的间隔时间。
-I 使用指定的网络接口送出数据包。
-l 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
-p 设置填满数据包的范本样式。
-q 不显示指令执行过程,开头和结尾的相关信息除外。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-R 记录路由过程。
-s 设置数据包的大小。
-t 设置存活数值TTL的大小。
-v 详细显示指令的执行过程。

ping命令的实践操作

范例1: 检测是否与主机连通

[root@db01 ~]# ping www.baidu.com #需手动终止 Ctrl+c
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=128 time=11.2 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=128 time=11.4 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=3 ttl=128 time=5.74 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=4 ttl=128 time=4.95 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=5 ttl=128 time=5.69 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 4.953/7.833/11.495/2.915 ms

范例2: 指定接收包的次数

[root@db01 ~]# ping -c 2 10.0.0.222 #收到两次包后,自动退出
PING 10.0.0.222 (10.0.0.222) 56(84) bytes of data.
64 bytes from 10.0.0.222: icmp_seq=1 ttl=64 time=0.282 ms
64 bytes from 10.0.0.222: icmp_seq=2 ttl=64 time=0.209 ms

--- 10.0.0.222 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.209/0.245/0.282/0.039 ms

范例3: 多参数使用

[root@db01 ~]# ping -i 3 -s 1024 -t 255 www.jd.com #-i 3 发送周期为 3 秒,-s 设置发送包的大小,-t 设置TTL值为 255
PING cloud.jdcdn.com (223.99.237.1) 1024(1052) bytes of data.
1032 bytes from 223.99.237.1 (223.99.237.1): icmp_seq=1 ttl=128 time=51.4 ms
1032 bytes from 223.99.237.1 (223.99.237.1): icmp_seq=2 ttl=128 time=48.7 ms
1032 bytes from 223.99.237.1 (223.99.237.1): icmp_seq=3 ttl=128 time=46.2 ms
^C
--- cloud.jdcdn.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10145ms
rtt min/avg/max/mdev = 46.208/48.780/51.432/2.133 ms

2. route:显示和设置linux系统的路由表

route命令的功能说明

route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,可以保存到配置文件。linux 默认只支持一条默认路由,当重新启动网口时,会把其他默认路由去掉,只剩下一条该网口生成的默认路由。当然可以通过 route 命令手动添加多条默认路由,如果多条路由一样,则选择最开始找到的路由(排在前面的路由)。。

route命令的语法格式

route [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]

route命令的常用参数说明:

route 参数很多,表1为 route 命令的参数选项及说明:

表1: route 命令的参数选项及说明

参数选项 解释说明
-C 显示路由缓存。
-F 显示发送信息
-v 显示详细的处理信息。
-n 不解析名字。
-ee 使用更详细的资讯来显示
-V 显示版本信息。
-net 到一个网络的路由表。
-host 到一个主机的路由表。

表2为 route 命令的参数及说明:

表2: route 命令的参数及说明

参数选项 解释说明
add 增加路由记录。
del 删除路由记录。
target 目的网络或目的主机。
gw 设置默认网关。gateway 的简写,后续接的是 IP 的数值。
mss 设置TCP的最大区块长度(MSS),单位MB。
window 指定通过路由表的TCP连接的TCP窗口大小。
dev 如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等。
reject 设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。

route命令的常用命令格式

(1) 添加和删除路由

route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]

增加 (add) 与删除 (del) 路由的相关参数:
(a) -net :表示后面接的路由为一个网域。
(b) -host :表示后面接的为连接到单部主机的路由。
(c) netmask :与网域有关,可以设定 netmask 决定网域的大小。
(d) gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同。
(e) dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等。

(2) 查询路由信息

route -nee

(a) -n:不要使用通讯协定或主机名称,直接使用 IP 或 port number。
(b) -ee:使用更详细的资讯来显示。

(3) 添加/删除默认网关路由

route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME}

(a) IP-ADDRESS:用于指定路由器(网关)的IP地址。
(b) INTERFACE-NAME:用于指定接口名称,如eth0。

例1:route add default gw 192.168.1.1 eth0
例2:route del default gw 192.168.1.1 eth0

(4) 添加/删除到指定网络的路由规则

route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

(a) NETWORK-ADDRESS:用于指定网络地址。
(b) NETMASK:用于指定子网掩码。
(c) INTERFACE-NAME:用于指定接口名称,如eth0。

例1:route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
例2:route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0

(5) 添加/删除路由到指定网络为不可达

设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。

route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject

(a) NETWORK-ADDRESS:用于指定网络地址。
(b) NETMASK:用于指定子网掩码。

例1:route add -net 10.0.0.0 netmask 255.0.0.0 reject
例2:route del -net 10.0.0.0 netmask 255.0.0.0 reject

route命令的实践操作

范例1: 查看路由信息

[root@db01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1

说明
route命令输出的路由表字段含义如下:

字段 说明
Destination 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关。
Gateway 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关。如果没有就显示星号(*)。
Genmask Destination 字段的网络掩码,Destination 是主机时需要设为 255.255.255.255,是默认路由时会设置为 0.0.0.0
Flags 标记
Flags ● U 该路由可以使用。
Flags ● H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
Flags ● G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地 是直接相连的。
Flags ● R 恢复动态路由产生的表项。
Flags ● D 该路由是由改变路由(redirect)报文创建的。
Flags ● M 该路由已被改变路由报文修改。
Flags ● ! 这个路由将不会被接受。
Metric 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的。
Ref 路由项引用次数 。
Use 此路由项被路由软件查找的次数。
Iface 网卡名字,例如 eth0。

路由选择分析

当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:

  • (1) TCP/IP使用需要通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项。
  • (2) 当计算完路由表中所有的路由项后,

    • (a) TCP/IP选择记录下的路由项中的最长匹配路由(网络掩码中具有最多“1”位的路由项)来和此目的IP地址进行通信。
    • (b) 如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项。
    • (c) 如果存在多个具有最低跃点数的最长匹配路由,那么:均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定(一般有线(eth0) > 无线 (wlan0) > 移动信号(4G))。
    • (d) 如果优先级一致,则选择最开始找到的最长匹配路由。(排在前面的路由)

验证分析

(1) 验证:traceroute www.baidu.com

我们通过路由表可以知道有两条相同默认路由可以选择,由于先找到192.168.233.2 网关路由,所以最后选择了 192.168.233.2 网关。

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.233.2   0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.39), 30 hops max, 60 byte packets
 1  gateway (192.168.233.2)  0.200 ms  0.109 ms  0.141 ms
 2  * * *
 3  * * *
 4  * * *

(2) 删除原先路由,重新添加路由

重新添加路由后,我们通过路由表可以知道有两条相同默认路由可以选择,由于先找到192.168.1.1 网关路由,所以最后选择了 192.168.1.1 网关。

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.233.2   0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route del default gw 192.168.233.2
[root@localhost ~]#
[root@localhost ~]# route del default gw 192.168.1.1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route add default gw 192.168.233.2
[root@localhost ~]#
[root@localhost ~]# route add default gw 192.168.1.1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
0.0.0.0         192.168.233.2   0.0.0.0         UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.39), 30 hops max, 60 byte packets
 1  gateway (192.168.1.1)  2.683 ms  2.432 ms  15.680 ms
 2  * * *
 3  * * *
 4  * * *

添加和删除路由

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0             192.168.233.2   0.0.0.0             UG    0      0        0 eth1
169.254.0.0     0.0.0.0               255.255.0.0     U     1002   0       0 eth0
192.168.1.0     0.0.0.0               255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0             255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]# route del -net 192.168.233.0 netmask 255.255.255.0 dev eth1
# 上面这个动作可以删除掉 192.168.233.0/24 这个网域!
# 请注意,在删除的时候,需要将路由表上面出现的资讯都写入
# 包括  netmask , dev 等等参数!

[root@localhost ~]# route add -net 192.168.233.0 netmask 255.255.255.0 dev eth1
# 透过 route add 来增加一个路由!请注意,这个路由必须要能够与你互通。
# 举例来说,如果我下达底下的指令就会显示错误:
[root@localhost ~]# route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254
# 因为我的环境内仅有 192.168.1.145 和 192.168.233.137 ,
# 所以不能与 192.168.200.254这个网段直接使用 MAC 互通!

[root@localhost ~]# route add default gw 192.168.1.1
# 增加默认路由的方法!请注意,只要有一个默认路由就够了!
# 在这个地方如果您随便设定后,记得使用底下的指令重新设定你的网路
  /etc/init.d/network restart

# 如果是要进行路由的删除与增加,那就得要参考上面的例子了,当出现『SIOCADDRT: Network is unreachable』这个错误时,
# 肯定是由于 gw 后面接的 IP 无法直接与您的网域沟通 (Gateway 并不在你的网域内)。

默认路由

[root@localhost ~]# route add default  gw 192.168.233.2 dev eth1
# 添加默认路由方式一,default
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.233.2   0.0.0.0         UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route del default gw 192.168.233.2 dev eth1
# 删除默认路由方式一,default
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.233.2 dev eth1
# 添加默认路由方式二,-net 0.0.0.0 netmask 0.0.0.0
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.233.2   0.0.0.0         UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route del -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.233.2 dev eth1
# 删除默认路由方式二,default
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

添加带metric的路由


[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route add default gw 192.168.233.2 dev eth1 metric 99
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0             192.168.233.2   0.0.0.0           UG    99     0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0         U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0         U     1003   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0     U     0         0        0 eth0
192.168.233.0   0.0.0.0       255.255.255.0     U     0         0        0 eth1

今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津

Shell命令-网络操作之基础之ping、route的更多相关文章

  1. Shell命令-网络操作之基础之telnet、ssh

    文件及内容处理 - telnet.ssh 1. telnet:使用TELNET协议远程登录 telnet命令的功能说明 telnet 命令用于远端登入.执行 telnet 指令开启终端机阶段作业,并登 ...

  2. Shell命令-网络操作之基础之scp、wget

    文件及内容处理 - scp.wget 1. scp:用于不同主机之间复制文件 scp命令的功能说明 scp 命令用于 Linux 之间复制文件和目录.scp 是 secure copy 的缩写, sc ...

  3. Shell命令行操作

    1.1 shell提示符 [me@linuxbox ~]$ 如果最后一个字符是"#",表示当前终端会话有超级用户权限.使用root用户登录或者使用能提供超级用户权限的终端能获得该权 ...

  4. 一些风骚的shell命令行操作

    1.用你最喜欢的编辑器来敲命令 command <CTRL-x CTRL-e> 在已经敲完的命令后按<CTRL-x CTRL-e>,会打开一个你指定的编辑器(比如vim,通过环 ...

  5. 『003』Shell命令

    『001』索引-Linux Shell Command shell命令 <01>[线上查询及帮助][001]-[001] [001]- 点我快速打开文章[man][help][已改版] & ...

  6. shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

    shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...

  7. Hadoop Shell命令大全

    hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...

  8. Hadoop学习笔记(2)-HDFS的基本操作(Shell命令)

    在这里我给大家继续分享一些关于HDFS分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ...

  9. Linux 操作基础(一) -- Shell 命令格式和元字符

    1 命令格式 cmd [-选项] [参数] 说明: • 最简单的Shell命令只有命令名,复杂的Shell命令可以有多个选项和参数 • 参数是文件也可以是目录,有些命令必须使用多个操作对象 • 并非所 ...

随机推荐

  1. Thymeleaf常用语法:数据延迟加载

    在处理模板时,可以由模板逻辑决定是否加载数据,以提高性能.在Spring Boot控制器中设置数据时,使用LazyContextVariable可以实现这功能. 开发环境:IntelliJ IDEA ...

  2. bay——安装_Oracle 12C-RAC-Centos7.txt

    ★★★____★☆★〓〓〓〓→2019年6月26日10:29:42 bayaim-RAC ——搭建第4次VMware vSphere Client6.0 ----------------------- ...

  3. Codeforces Round #600 (Div. 2)

    传送门 A. Single Push 直接乱搞即可. Code /* * Author: heyuhhh * Created Time: 2019/11/16 22:36:20 */ #include ...

  4. Day6 - Python基础6 模块shelve、xml、re、subprocess、pymysql

    本节目录: 1.shelve模块 2.xml模块 3.re模块 4.subprocess模块 5.logging模块 6.pymysql 1.shelve 模块 shelve模块是一个简单的k,v将内 ...

  5. bzoj5219 [Lydsy2017省队十连测] 最长路径

    题意: 做法来自 首先竞赛图缩点后是一条链,\(1\)号节点在开头的那个\(SCC\)中,因此从\(1\)号节点出发的最长链即为\(1\)号节点所在的\(SCC\)的大小\(+1\)号节点拓扑序之后的 ...

  6. 【转】Ubuntu 16 安装 python 依赖出现 error: command 'i686-linux-gnu-gcc' failed with exit status 1

    问题 在 Ubuntu 下安装 python 依赖的时候出现以下错误 build/temp.linux-i686-3.5/_openssl.c:498:30: fatal error: openssl ...

  7. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 10

    18.8  设计完美分页类 数据记录列表几乎出现在Web项目的每个模块中,假设一张表中有十几万条记录,我们不可能一次全都显示出来,当然也不能仅显示几十条.为了解决这样的矛盾,通常在读取时设置以分页的形 ...

  8. IntelliJ IDEA代码常用的快捷键(自查)

    IntelliJ IDEA代码常用的快捷键有: Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 Ctrl+Alt+O ...

  9. 在wcharczuk/go-chart图表上打印文字

    先看效果: 源码 package main import (    "bytes"    "fmt"    "io/ioutil"    & ...

  10. ArrayList、LinkedList和Vector的源码解析,带你走近List的世界

    java.util.List接口是Java Collections Framework的一个重要组成部分,List接口的架构图如下: 本文将通过剖析List接口的三个实现类——ArrayList.Li ...