主机名

CentOS 6

查看。

# hostname

设置。

# hostname NEW_NAME

设置完成后,xshell的会话中不会显示NEW_NAME,可通过重新登录会话来显示。不过实际上我们在设置完成后立即再次查看的话,是已经设置为NEW_NAME了。

这样子设置,是临时有效,系统重启之后,就恢复为之前的主机名了。想要永久有效的话,应该将NEW_NAME写入配置文件中。

# vim /etc/sysconfig/network
HOSTNAME=NEW_NAME
# vim /etc/hosts
127.0.0.1 NEW_NAME

CentOS 7

查看。

# hostnamectl [status]

设置。

CentOS 7可直接使用该命令实现主机名的永久设置,不需要修改配置文件。

不同于CentOS 6,它的主机名保存在/etc/hostname文件中。

# hostnamectl set-hostname NEW_NAME

CentOS 7上的网卡命名方式

参考资料:一致网络设备命名-红帽官方文档

CentOS 6上的网卡名称是通过枚举(enumerate)的方式命名为eth0、eth1和eth2等等,以此类推。优点是对于用户来说,它容易记忆。但是缺点是它并不一定准确地对应于主板上的设备,它的命名和内核发现网卡设备的顺序有关系,因此它是不可预测(predictable)的。对于现在的多网卡的服务器来说,这样接口的命名方案存在许多不确定性和违反直觉的。

因此在CentOS 7上提供了新的命名方案,官网称之为【一致网络设备命名】(consistent network device naming)。新的命名通过udev提供了一系列的命名方案(scheme)。新命名方案基于固件、拓扑和位置信息,网卡名称会完全自动化且可预测,甚至当硬件添加或者删除的时候也可以保持不变,也就是说可以做到无缝替换坏掉的硬件。

如何关闭【一致网络设备命名】?如何在不关闭【一致网络设备命名】的情况下启用传统的ethX命名方式?以及新的命名方案具体是如何命名的?这些可以见上文的参考资料。

传统工具

传统的Linux上的网络管理命令主要有三个。

  • ifcfg:管理网卡、IP地址相关。
  • route:管理路由相关。
  • netstat:管理网络连接相关。

这三个命令均来自net-tools程序包。在命令对应的man手册当中,已经明确说明这三个命令是废弃(obsolete)的了,并且提供了替换方案:iproute程序包中的ip和ss命令。

由于这次的实验是针对网络进行调整,并且我是通过xshell连接虚拟机进行操作,如果对原本存在的那块网卡进行操作,会导致我连接失败,因此这里新增了一块网卡,网络连接为NAT模式。

注意,进入系统后,使用ip命令查看发现网卡的名称叫ens37,但是它不会自动生成对应的配置文件,类似原本存在的网卡ens33的/etc/sysconfig/network-scripts/ifcfg-ens33。

命令:ip

语法。

ip [ OPTIONS ] OBJECT { COMMAND | help }

OPTIONS:实际使用中,基本不会用到,有需要的参考man ip。

OBJECT:ip命令具体所执行的操作,是由OBJECT来定义的。本文只描述常用的3个OEJECT:link、addr和route。

COMMAND:OBJECT中的子命令,不同的OBJECT的子命令是不一样的,不过一般可能会有show/list、add、delete等。

help:可用于查看对应OBJECT的简要用法。

# ip link help
# ip addr help
# ip route help

OBJECT和COMMAND都是可以缩写的。

# ip link show
# ip lin sho
# ip li sh

缩写的好处是简洁,但是缺点是较难让人理解。并且如果缩写过多的话,会让程序无法理解,从而导致报错。

ip link

用于管理网络设备。

查看。可查看到网卡的MAC地址。不过ip link无法查看到ip地址。

[root@C7 ~]# ip link show
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN mode DEFAULT group default qlen
link/loopback ::::: brd :::::
: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP mode DEFAULT group default qlen
link/ether 00:0c:29:bb:3c:26 brd ff:ff:ff:ff:ff:ff
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP mode DEFAULT group default qlen
link/ether 00:0c:29:bb:3c:30 brd ff:ff:ff:ff:ff:ff
: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu qdisc noqueue state DOWN mode DEFAULT group default qlen
link/ether ::::af: brd ff:ff:ff:ff:ff:ff
: virbr0-nic: <BROADCAST,MULTICAST> mtu qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen
link/ether ::::af: brd ff:ff:ff:ff:ff:ff
[root@C7 ~]# ip link show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP mode DEFAULT group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff

查看的话,也可以直接执行ip link命令,不跟上任何的COMMAND,因为show是ip link的默认COMMAND。在man手册当中,有说明。其他的OBJECT,也有默认的COMMAND,具体看man手册,一般是show。

网卡的启用和禁用。

[root@C7 ~]# ip link set ens37 down
[root@C7 ~]# ip link show ens37
: ens37: <BROADCAST,MULTICAST> mtu qdisc pfifo_fast state DOWN mode DEFAULT group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff
[root@C7 ~]# ip link set ens37 up
[root@C7 ~]# ip link show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP mode DEFAULT group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff

显示相关的统计信息,可以看到数据包的往来信息。

[root@C7 ~]# ip -s link show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP mode DEFAULT group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast TX: bytes packets errors dropped carrier collsns

只查看启用的网卡信息。

# ip link show up

ip addr

用于管理协议地址。

ip addr是ip address的缩写,而不是ip addrlabel的缩写。可能是因为按照字母顺序的话,address排在addrlabel的前面。

查看所有网卡地址信息。

# ip addr show

查看指定网卡地址信息。

[root@C7 ~]# ip addr show dev ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff
inet 192.168.17.137/24 brd 192.168.17.255 scope global noprefixroute dynamic ens37
valid_lft 1529sec preferred_lft 1529sec
inet6 fe80::e5ed:f759:25e8:b2fd/ scope link noprefixroute
valid_lft forever preferred_lft forever

ip addr和ip link的一个重大区别在于它可以看到网卡的IP地址。广播地址(brd)会根据IP和子网掩码自动计算。

只看已启用的网卡地址信息。

# ip addr show up

为网卡添加一个IP地址。

[root@C7 ~]# ip addr add 192.168.0.100/ dev ens37
[root@C7 ~]# ip addr show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff
inet 192.168.17.137/ brd 192.168.17.255 scope global noprefixroute dynamic ens37
valid_lft 1178sec preferred_lft 1178sec
inet 192.168.0.100/24 scope global ens37
valid_lft forever preferred_lft forever
inet6 fe80::e5ed:f759:25e8:b2fd/ scope link noprefixroute
valid_lft forever preferred_lft forever

为网卡删除一个IP地址。

[root@C7 ~]# ip addr delete 192.168.0.100/ dev ens37
[root@C7 ~]# ip addr show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff
inet 192.168.17.137/ brd 192.168.17.255 scope global noprefixroute dynamic ens37
valid_lft 1690sec preferred_lft 1690sec
inet6 fe80::e5ed:f759:25e8:b2fd/ scope link noprefixroute
valid_lft forever preferred_lft forever

清空某个网卡的IP地址。

[root@C7 ~]# ip addr show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff
inet 192.168.17.137/ brd 192.168.17.255 scope global noprefixroute dynamic ens37
valid_lft 1662sec preferred_lft 1662sec
inet 192.168.0.100/ scope global ens37
valid_lft forever preferred_lft forever
inet 10.0.0.100/ scope global ens37
valid_lft forever preferred_lft forever
inet 172.16.0.1/ scope global ens37
valid_lft forever preferred_lft forever
inet6 fe80::e5ed:f759:25e8:b2fd/ scope link noprefixroute
valid_lft forever preferred_lft forever
[root@C7 ~]# ip addr flush ens37
[root@C7 ~]# ip addr show ens37
: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :0c::bb:3c: brd ff:ff:ff:ff:ff:ff

在我的环境中,是通过网卡的IP地址是通过DHCP自动获取的,我尝试重启了网络服务,依然无法获取IP地址。

# systemctl restart network.service

可通过nmtui文本工具禁用(deactive)并激活(active)网卡。注意不要禁用错了。

ip route

用于管理路由表。

查看路由表。

[root@C7 ~]# ip route show
default via 192.168.17.2 dev ens33 proto static metric
default via 192.168.17.2 dev ens37 proto dhcp metric
192.168.17.0/ dev ens33 proto kernel scope link src 192.168.17.7 metric
192.168.17.0/ dev ens37 proto kernel scope link src 192.168.17.137 metric
192.168.122.0/ dev virbr0 proto kernel scope link src 192.168.122.1

default:表示默认路由。

via:下一跳地址。上面的192.168.17.2,其实是我的VMware中对应虚拟机的网络的网关IP。

虚拟机被DHCP所分配到的IP地址,是在虚拟网络中的【DHCP设置】中设置的。可设置分配的网络地址段,网络地址范围和租约期等信息。

dev:数据包从本地哪张网卡设备出去。在本示例中就是ens33或者ens37。

src:当某张网卡有多个IP地址的时候,选择其中的一个地址作为源地址。

添加一条路由。

[root@C7 ~]# ip route add 192.168.0.0/ via 192.168.17.2 dev ens37 src 192.168.17.137
[root@C7 ~]# ip route show
default via 192.168.17.2 dev ens33 proto static metric
default via 192.168.17.2 dev ens37 proto dhcp metric
192.168.0.0/24 via 192.168.17.2 dev ens37 src 192.168.17.137
192.168.17.0/ dev ens33 proto kernel scope link src 192.168.17.7 metric
192.168.17.0/ dev ens37 proto kernel scope link src 192.168.17.137 metric
192.168.122.0/ dev virbr0 proto kernel scope link src 192.168.122.1

像这种单独设置的一条路由,也叫做静态路由。

如果是网络设备(路由器)基于路由协议(诸如RIP或者OSPF协议)自动学习的路由,则被称之为动态路由。

添加默认路由。

[root@C7 ~]# ip route add default via 192.168.17.2
[root@C7 ~]# ip route show
default via 192.168.17.2 dev ens33
default via 192.168.17.2 dev ens33 proto static metric
default via 192.168.17.2 dev ens37 proto dhcp metric
192.168.0.0/ via 192.168.17.2 dev ens37 src 192.168.17.137
192.168.17.0/ dev ens33 proto kernel scope link src 192.168.17.7 metric
192.168.17.0/ dev ens37 proto kernel scope link src 192.168.17.137 metric
192.168.122.0/ dev virbr0 proto kernel scope link src 192.168.122.1

默认路由,一般来说只有一条就够了,多余的条目应该是不会生效的。

原本只有1条,当我添加了一块新网卡后,多了一条。因此,默认路由应该是每个网卡一条。

我们添加的路由条目中,必须要确保下一跳地址(via)是可达的,如果不可达,就会报错。可以通过先添加其他路由条目或者调整网络拓扑结构来使其可达。

RTNETLINK answers: Network is unreachable

路由条目还可以修改和替换,用法和添加类似。

# ip route add ...
# ip route change ...
# ip route replace ...

删除路由。删除路由的语法,和添加路由的语法,基本类似。

一般情况下,它可以比添加路由更简洁,只要给出的条件能定位到我们所要删除的路由条目即可。

[root@C7 ~]# ip route delete 192.168.0.0/
[root@C7 ~]# ip route delete default via 192.168.17.2
[root@C7 ~]# ip route show
default via 192.168.17.2 dev ens33 proto static metric
default via 192.168.17.2 dev ens37 proto dhcp metric
192.168.17.0/ dev ens33 proto kernel scope link src 192.168.17.7 metric
192.168.17.0/ dev ens37 proto kernel scope link src 192.168.17.137 metric
192.168.122.0/ dev virbr0 proto kernel scope link src 192.168.122.1

批量删除路由条目。之前的delete是一条条删除,而flush是可以根据给出的条件删除条件所符合的所有路由条目。

flush可能会被认为是清空的意思,因此可能大家就不加参数直接使用了,但是这样其实是错误的,它需要条件来删除。

[root@C7 ~]# ip route flush
"ip route flush" requires arguments.
[root@C7 ~]# ip route flush dev ens37
[root@C7 ~]# ip route show
default via 192.168.17.2 dev ens33 proto static metric
192.168.17.0/ dev ens33 proto kernel scope link src 192.168.17.7 metric
192.168.122.0/ dev virbr0 proto kernel scope link src 192.168.122.1

命令:ss

ss命令可实现类似netstat命令的功能,用于显示网络连接的状态。在网络连接数十分巨大的情况下,它的性能表现要优于netstat,并且在netstat的man手册中也说明了ss可用来取代netstat。

语法。

ss [options] [ FILTER ]

当没有选项的时候,ss会显示一些已建立连接的打开的非监听的套接字。

[root@C7 ~]# ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB * *
u_str ESTAB @/tmp/dbus-tHtcTzd0Uc *
u_str ESTAB @/tmp/dbus-tHtcTzd0Uc *
u_str ESTAB /run/dbus/system_bus_socket *
...
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
v_str ESTAB : :
...

ss显示的内容有许多,因为它还包含了TCP和UDP以外的连接。

-t, --tcp:显示TCP相关的连接。默认是显示非监听的,对于TCP来说,非监听就是已建立的连接。

[root@C7 ~]# ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 192.168.17.7:ssh 192.168.17.1:
ESTAB 192.168.17.7:ssh 192.168.17.1:
ESTAB 192.168.17.7:ssh 192.168.17.1:

-u, --udp:显示UDP相关的连接。我的实验虚拟机并没有UDP相关的连接。

[root@C7 ~]# ss -u
Recv-Q Send-Q Local Address:Port Peer Address:Port

显示TCP和UDP相关的连接。

[root@C7 ~]# ss -tu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:

会多出Netid字段用于表示协议类型。

-a, --all:显示所有监听和非监听的连接。

[root@C7 ~]# ss -tua
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN *:mdns *:*
udp UNCONN *: *:*
udp UNCONN 192.168.122.1:domain *:*
udp UNCONN *%virbr0:bootps *:*
udp UNCONN *:bootpc *:*
udp UNCONN *:sunrpc *:*
udp UNCONN *: *:*
udp UNCONN ::: :::*
udp UNCONN :::sunrpc :::*
tcp LISTEN *:sunrpc *:*
tcp LISTEN 192.168.122.1:domain *:*
tcp LISTEN *:ssh *:*
tcp LISTEN 127.0.0.1:ipp *:*
tcp LISTEN 127.0.0.1:smtp *:*
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp ESTAB 192.168.17.7:ssh 192.168.17.1:
tcp LISTEN :::sunrpc :::*
tcp LISTEN :::ssh :::*
tcp LISTEN :::ipp :::*
tcp LISTEN :::smtp :::*

-l, --listening:显示监听状态下的连接。

[root@C7 ~]# ss -tul
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN *:mdns *:*
udp UNCONN *: *:*
udp UNCONN 192.168.122.1:domain *:*
udp UNCONN *%virbr0:bootps *:*
udp UNCONN *:bootpc *:*
udp UNCONN *:sunrpc *:*
udp UNCONN *: *:*
udp UNCONN ::: :::*
udp UNCONN :::sunrpc :::*
tcp LISTEN *:sunrpc *:*
tcp LISTEN 192.168.122.1:domain *:*
tcp LISTEN *:ssh *:*
tcp LISTEN 127.0.0.1:ipp *:*
tcp LISTEN 127.0.0.1:smtp *:*
tcp LISTEN :::sunrpc :::*
tcp LISTEN :::ssh :::*
tcp LISTEN :::ipp :::*
tcp LISTEN :::smtp :::*

-n, --numeric:不解析服务名称。例如ssh协议名称会显示为对应的端口号22。

[root@C7 ~]# ss -tn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 192.168.17.7: 192.168.17.1:
ESTAB 192.168.17.7: 192.168.17.1:
ESTAB 192.168.17.7: 192.168.17.1:

-p, --processes:显示连接所对应的进程信息。

[root@C7 ~]# ss -tnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 192.168.17.7: 192.168.17.1: users:(("sshd",pid=,fd=))
ESTAB 192.168.17.7: 192.168.17.1: users:(("sshd",pid=,fd=))
ESTAB 192.168.17.7: 192.168.17.1: users:(("sshd",pid=,fd=))

-s, --summary:显示汇总的统计信息。

[root@C7 ~]# ss -s
Total: (kernel )
TCP: (estab , closed , orphaned , synrecv , timewait /), ports Transport Total IP IPv6
* - -
RAW
UDP
TCP
INET
FRAG

-o, --options:显示计时器(timer)信息。

[root@C7 ~]# ss -to
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 192.168.17.7:ssh 192.168.17.1: timer:(on,229ms,0)
ESTAB 192.168.17.7:ssh 192.168.17.1: timer:(keepalive,93min,0)

FILTER表示过滤器,由状态过滤器(STATE-FILTER)和表达式(EXPRESSION)构成。

FILTER := [ state STATE-FILTER ] [ EXPRESSION ]

STATE-FILTER的值可以是established、syn-sent、syn-recv、fin-wait-1、fin-wait-2、time-wait、closed、close-wait、last-ack、listen和closing。

不同的值组合可以用以下关键词表示:

  • all:表示所有状态。
  • connected:除了listen和closed以外的所有状态。
  • synchronized:除了syn-sent以外的所有connected状态。
  • bucket:作为minisockets来维护的状态,即time-wait和syn-recv。
  • big:bucket的取反结果。

EXPRESSION:可用于指定一些条件,类似iptables防火墙,例如指定源端口、目标端口、目标地址等。

显示所有与SSH协议相关的连接。

ss -o state established '( dport = :ssh or sport = :ssh )'

显示所有的本机的web服务至193.223.7.0/24网络的TCP状态为fin-wait-1的连接。

ss -o state fin-wait- '( sport = :http or sport = :https )' dst 193.233./

更多的关于FILTER的用法,man手册中建议参考iproute-doc程序包中的内容。在里头我找到一个文件。

/usr/share/doc/iproute-doc-4.11./ss.ps

这个文件的格式是postscript,需要找到对应的工具打开,或者到网上进行转换,可转换成PDF格式。

CentOS 7上的主机名设置和基本网络管理的更多相关文章

  1. 如何在CentOS 7上修改主机名

    如何在CentOS 7上修改主机名 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时 ...

  2. CentOS 7上修改主机名

                                       如何在CentOS 7上修改主机名                                           在Cent ...

  3. 在CentOS 7上修改主机名的方法

    这次我们来讲解一下如何在CentOS 7环境上修改主机名 1.从VMware上登录CentOS 7的虚拟机,并以root用户登录. 2.查看未修改前的主机名 1>.我们可以通过文件hostnam ...

  4. 034-openstack中虚拟机启动后主机名设置问题

    openstack中虚拟机启动后主机名设置问题,在centos7中设置hostname后怎么都是原来的hostname,根本无效. 方法一: 在centos7中除了修改hosts文件和network文 ...

  5. Ubuntu14.04上修改主机名

    Ubuntu14.04上修改主机名 author:headsen chen  2017-10-12 15:41:31 个人原创,转载请注明作者,出处,否则依法追击法律责任 查看主机名:hostname ...

  6. centos7上修改主机名

    centos7上修改主机名 2017-10-09   13:45:17 个人原创,转载请注明,否则追究法律责任 1,临时修改: 和centos5,centos6 一样,重启失效 2,永久修改: 命令: ...

  7. CentOS 6.2修改主机名

    写在前面的话:因为服务器要统一主机名,但是在安装的时候忘记设置了,所以需要修改主机名   需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会 ...

  8. CentOS与Ubuntu修改主机名

    CentOS 1.执行hostname查看主机名 2.hostname + 主机名  使需要修改的主机名立即生效,但是下次重启会失效,故需要执行第三步 3.vim /etc/sysconfig/net ...

  9. centos 6 7更改主机名 命令添加ip

    6:vi /etc/sysconfig/network 中hostname =主机名 vi /etc/hosts  添加127.0.0.1相应的主机名 7: hostnamectl set-hostn ...

随机推荐

  1. NLog日志框架使用探究-2

    目录 前言 自定义参数 日志输出方式 文件 网络传输 数据库 科学使用 参考文档 前言 在一年前,我写过一篇关于NLog入门文章<NLog日志框架使用探究-1>,文章简单的介绍了Nlog的 ...

  2. 2019年12月2日Linux开发手记

    开始学习在Linux下视频源捕获驱动框架,也就是V4L2(video4linux),本次关于v4l2的知识准备主要在于其的官方例程,理解官方例程也就差不多掌握了v4l2的基本内容.例程在:http:/ ...

  3. Linux job control

    Linux 系统中有一个 job control 的概念,本文简单介绍什么是 job,以及常见的 job control 命令.本文中演示部分使用的环境为 ubuntu 18.04. 进程组(job) ...

  4. linux 生成免密登陆步奏

    1.大致流程 有时需要从服务器A免密连接到服务器B,这时需要在服务器A生成私钥和公钥,大致过程其实就2步. 1.1 在服务器A生成公钥和私钥 在服务器A上输入如下命令: ssh-keygen -t r ...

  5. 工作中的开发过程(Javaweb路线,写给刚刚实习或者马上就要工作的朋友)

    工作中的开发过程(Javaweb路线,写给刚刚实习或者马上就要工作的朋友) 当我还没开始工作的时候,我是对实际项目开发流程充满未知和向往的,当时很希望能够有一个过来人,给我介绍一下实际工作起来是什么样 ...

  6. 记录我的 python 学习历程-Day03 数据类型 str切片 for循环

    一.啥是数据类型 ​ 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字,否则它是分 ...

  7. Android 通知的基本用法

    一.概念 通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望像用户发送一些提示消息的时候,然而此时应用程序并不在前台运行,此时就可以借助通知来实现.发出 ...

  8. JWT攻击手册:如何入侵你的Token

    JSON Web Token(JWT)对于渗透测试人员而言,可能是一个非常吸引人的攻击途径.因为它不仅可以让你伪造任意用户获得无限的访问权限,而且还可能进一步发现更多的安全漏洞,如信息泄露,越权访问, ...

  9. Flink 中LatencyMarks延迟监控(源码分析)

    流式计算中处理延迟是一个非常重要的监控metric flink中通过开启配置   metrics.latency.interval  来开启latency后就可以在metric中看到askManage ...

  10. ios 在APP内提示更新

    http://www.jianshu.com/p/24daf5147bda     ios如何在应用内部提示更新  两颗星 http://www.jianshu.com/p/2ba10a58bb02  ...