最近看到lscpu命令,简单实在。CPU的型号和L1,L2,L3 Cache大小等信息一目了然了。
类似的命令包括lsusb、lsblk命令。
1.lscpu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
2.lsusb
lsusb命令显示usb设备的情况
1 2 3 4 5 6 7 8 9 |
|
3.lsblk
lsblk命令显示块设备的情况
1 2 3 4 5 6 7 8 9 |
|
最近看到lscpu命令,简单实在。CPU的型号和L1,L2,L3 Cache大小等信息一目了然了。
类似的命令包括lsusb、lsblk命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
lsusb命令显示usb设备的情况
1 2 3 4 5 6 7 8 9 |
|
lsblk命令显示块设备的情况
1 2 3 4 5 6 7 8 9 |
|
之前在处理图片下载延时比较大问题的时候,OPS说使用Squid这个东东,抽时间看看这个东西。
简而言之,Squid就是一个Web缓存代理服务器。
代理服务器是介于浏览器和Web服务器之间的另一台服务器。有了该服务器之后,浏览器发出的信息会先送到代理服务器,由代理服务器来取回网页内容并传送给客户的浏览器。对于企业网络而言,代理服务器可以起到控制网络访问并屏蔽不安全信息,以及网络加速的目的。
Squid官方网站 : http://www.squid-cache.org/
Squid 是一个 Web 缓存代理,支持 HTTP, HTTPS, FTP, 以及更多。它通过缓存与重用经常请求的web页面,减少带宽使用同时提升了响应时间,并设置过滤。使用Squid可以通过访问控制特性来灵活的控制用户访问时间、站点等限制。
客户端请求访问 WEB 服务时,DNS 将访问的域名解析为 Squid 代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到代理服务器。如果 Squid代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
Squid 代理一般只缓存可缓冲的数据(比如 html 网页和图片等),而一些ASP、JSP 之类的动态程序默认不缓存。它根据从 WEB 服务器返回的 HTTP 头标记来缓冲静态页面。有四个最重要 HTTP 头标记:
Last-Modified: 告诉代理页面什么时间被修改
Expires: 告诉代理页面什么时间应该从缓冲区中删除
Cache-Control: 告诉代理页面是否应该被缓冲
Pragma: 用来包含实现特定的指令,最常用的是 Pragma:no-cache
(1).下载 squid,这里下载的是3.4版本 : http://www.squid-cache.org/Versions/v3/3.4/
(2).解压缩
```
xiaobaoqiu@xiaobaoqiu:~/Download$ tar -xzvf squid-3.4.11.tar.gz
```
(3).配置
(待续...)
nc(netcat)是网络工具中的瑞士军刀。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
下面列举了几个典型的使用,更多使用case参见: http://xmodulo.com/useful-netcat-examples-linux.html
在线上机器和本地机器之间传输文件,使用scp的话通常需要多次scp,并且通常需要密码,这是nc命令就显示其强大之处:
文件源端:
1
|
|
文件目的端:
1
|
|
测试远端机器的某一个端口是否打开,succeeded表示打开:
1 2 3 4 5 |
|
一端打开:
1 2 3 |
|
另外一端连接,就可以聊天了:
1 2 3 |
|
最近项目的图片处理的系统出问题比较多,典型的一个问题就是因为计算md5出现的问题。
问题的现象很简单,使用这套代码批量切图,会出现一张灵异图片,灵异之处在于,很多人批量切图都会出现这张图片,且这张图片不在他们的原始图片中。
最后分析的原因是计算图片md5的代码,使用的是Java自带的MessageDigest,大致使用如下
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
问题的原因就是多线程计算md5的时候getMD5这个函数有问题。
最后定位发现重复出现的md5是
d41d8cd98f00b204e9800998ecf8427e
这是一个特殊的md5,即其是空字符串的md5:
1
|
|
参考: http://zh.wikipedia.org/wiki/MD5
在MessageDigest类的源代码注释有这样一段话:
1 2 3 4 5 6 7 8 9 10 |
|
上面这段话第二部分的意思是说,digest()这个方法只能被调用一次,一旦调用MessageDigest对象会被重置到初始状态。
根据这个逻辑,getMD5这个函数的代码,多个线程进入这段代码的时候(这里假设两个线程),线程A执行完步骤1,在执行步骤2之前,线程B也执行完步骤1,之后线程B调用了步骤2得到正确的md5,之后线程A再调用步骤2的时候得到的md5就是d41d8cd98f00b204e9800998ecf8427e。
本地验证:
1 2 3 4 5 6 7 8 9 10 11 |
|
得到的结果:
1 2 |
|
MessageDigest类的注释里面其实给出了正确的用法,注意其md.clone()的调用:
1 2 3 4 5 6 7 8 9 10 11 |
|
Apache的DigestUtils是一个线程安全的类,是对MessageDigest的封装,使用很简单,首先加入依赖:
1 2 3 4 5 |
|
然后就可以使用DigestUtils计算md5:
1
|
|
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。这是很ss还是会很快。
ss 和 netstat 效率对比:
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
即处于Listening的端口
1
|
|
1
|
|
可以根据ss -pl结果进行grep
1 2 3 |
|
1
|
|