手机用的Andoried手机,发现拍照片特别是从电脑上屏幕上拍(本来想用豌豆荚传到手机相册里,但是手机版本的微信没有显示出来,不知为什么,难道其只显示里面通过手机镜头的照片?没细研究),但这样搞主要是手机镜头不行,再就是电脑屏有闪光,拍出来的效果不好。
怎么在电脑上修改微信头像?如下Url实践没有问题:
http://jingyan.baidu.com/album/1612d5007f3ae7e20e1eee06.html?picindex=1
怎么在电脑上修改微信头像?如下Url实践没有问题:
http://jingyan.baidu.com/album/1612d5007f3ae7e20e1eee06.html?picindex=1
在Raspberry Pi上跑FreeBSD11,修改raspberry pi上安装的freebsd可用内存大小,定制Raspberry Pi网站。
Unix/LinuxC技术 jack 2014-9-15 21:53
FreeBSD 在 RPi 2上的用户名和密码:
默认的密码是 freebsd/freebsd 和 root/root
FreeBSD系统中无线网络连接无线网卡:
http://www.111cn.net/sys/freebsd/59534.htm
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-12/126724.htm
FreeBSD 11-CURRENT on Raspberry Pi Apache 2.4/MySQL 5.6/PHP 5.6, 如何在树莓派 2B 上安装 FreeBSD及网络配置:
http://jackxiang.com/post/8455/
定制Raspberry Pi网站:
http://www.embest-tech.cn/pi-customization/
FreeBSD has supported Raspberry Pi since November 2012, and the current production version (FreeBSD 10) is available as a pre-built image which can be copied onto a memory card.
Download the latest image file from the official FreeBSD ARM page. This page has images for other ARM-based boards like the Beaglebone and the Pandaboard. You need to download an image for the “RPI-B”: for example “FreeBSD-10.0-RELEASE-arm-armv6-RPI-B-20140131-r260789.img.bz2”
摘自 : https://www.maketecheasier.com/freebsd-on-raspberry-pi/
DRAM: 944 MiB
WARNING: Caches not enabled
RPI 2 Model B
MMC: bcm2835_sdhci: 0
reading uboot.env
修改raspberry pi上安装的freebsd可用内存大小:
http://blog.sina.com.cn/s/blog_a0aacb430101mj69.html
background:Freebsd是真正的Unix血统的Os,其稳定性是顶级的,真正的坚如磐石。在树莓派下也有ARM版本了,最新稳定版本:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0//FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340.img.bz2
CheckSum:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0/CHECKSUM.SHA256-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340
三、FreeBSD 11 on Raspberri pi 2(树莓派 2 安装 FreeBSD 11) :
A note for my own installation.(树莓派 2 安装 FreeBSD 11)
I tried compiling the FreeBSD 11 by myself, but I found there are ready-to-use systems here.
1. Identify your SD card:
# df -h
you will see the result as
de>/dev/mmcblk0p1de> or de>/dev/sdb1de> or something is different from /sda.
2. Unmount the card
# umount de>/dev/mmcblk0p1de> or de>/dev/sdb1de>
3. Copy your image file to the card, (Very important! DO NOT add the partition number p1 or 1, just use the whole card de>mmcblk0 or sdbde>)
# dd bs=4M if=your-freebsd-rpi2-image.img of=/dev/de>mmcblk0de>
4. First boot
After the raspberry pi 2 is powered on, you need login using user name : root, you need also set the password
# passwd
5.Increase swap space
# dd if=/dev/zero of=/usr/swap0 bs=1m count=1024
# chmod 0600 /usr/swap0
# echo 'md99 none swap sw,file=/usr/swap0 0 0' >> /etc/fstab
# swapon -aq
*系统目前很卡,还是不建议安装。感觉Raspbian 还是最流畅的。
来自:http://rhuta.blog.163.com/blog/static/17757006220154129421478/
阅读全文
默认的密码是 freebsd/freebsd 和 root/root
FreeBSD系统中无线网络连接无线网卡:
http://www.111cn.net/sys/freebsd/59534.htm
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-12/126724.htm
FreeBSD 11-CURRENT on Raspberry Pi Apache 2.4/MySQL 5.6/PHP 5.6, 如何在树莓派 2B 上安装 FreeBSD及网络配置:
http://jackxiang.com/post/8455/
定制Raspberry Pi网站:
http://www.embest-tech.cn/pi-customization/
FreeBSD has supported Raspberry Pi since November 2012, and the current production version (FreeBSD 10) is available as a pre-built image which can be copied onto a memory card.
Download the latest image file from the official FreeBSD ARM page. This page has images for other ARM-based boards like the Beaglebone and the Pandaboard. You need to download an image for the “RPI-B”: for example “FreeBSD-10.0-RELEASE-arm-armv6-RPI-B-20140131-r260789.img.bz2”
摘自 : https://www.maketecheasier.com/freebsd-on-raspberry-pi/
DRAM: 944 MiB
WARNING: Caches not enabled
RPI 2 Model B
MMC: bcm2835_sdhci: 0
reading uboot.env
修改raspberry pi上安装的freebsd可用内存大小:
http://blog.sina.com.cn/s/blog_a0aacb430101mj69.html
background:Freebsd是真正的Unix血统的Os,其稳定性是顶级的,真正的坚如磐石。在树莓派下也有ARM版本了,最新稳定版本:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0//FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340.img.bz2
CheckSum:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0/CHECKSUM.SHA256-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340
三、FreeBSD 11 on Raspberri pi 2(树莓派 2 安装 FreeBSD 11) :
A note for my own installation.(树莓派 2 安装 FreeBSD 11)
I tried compiling the FreeBSD 11 by myself, but I found there are ready-to-use systems here.
1. Identify your SD card:
# df -h
you will see the result as
de>/dev/mmcblk0p1de> or de>/dev/sdb1de> or something is different from /sda.
2. Unmount the card
# umount de>/dev/mmcblk0p1de> or de>/dev/sdb1de>
3. Copy your image file to the card, (Very important! DO NOT add the partition number p1 or 1, just use the whole card de>mmcblk0 or sdbde>)
# dd bs=4M if=your-freebsd-rpi2-image.img of=/dev/de>mmcblk0de>
4. First boot
After the raspberry pi 2 is powered on, you need login using user name : root, you need also set the password
# passwd
5.Increase swap space
# dd if=/dev/zero of=/usr/swap0 bs=1m count=1024
# chmod 0600 /usr/swap0
# echo 'md99 none swap sw,file=/usr/swap0 0 0' >> /etc/fstab
# swapon -aq
*系统目前很卡,还是不建议安装。感觉Raspbian 还是最流畅的。
来自:http://rhuta.blog.163.com/blog/static/17757006220154129421478/
阅读全文
背景:用爱奇艺网页播放电视剧,发现用那个遨游浏览器神马跳过能跳过的,这货好像不行,一看,它有一个请求在做时间记录着呢,返回204,这样就能像一个对时功能一样,防止用户跳过。
HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。
HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。
使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。
例子:ajax提交用户名、文章id,记录用户访问过该文章
[html] view plaincopy
$(document).ready(function(){
$.get("api.php", {name:'fdipzone',article_id:'100'});
})
HTTP 状态码header输出:
[php] view plaincopy
/**
* HTTP Protocol defined status codes
* @param int $num
*/
function HTTPStatus($num) {
static $http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
206 => "HTTP/1.1 206 Partial Content",
300 => "HTTP/1.1 300 Multiple Choices",
301 => "HTTP/1.1 301 Moved Permanently",
302 => "HTTP/1.1 302 Found",
303 => "HTTP/1.1 303 See Other",
304 => "HTTP/1.1 304 Not Modified",
305 => "HTTP/1.1 305 Use Proxy",
307 => "HTTP/1.1 307 Temporary Redirect",
400 => "HTTP/1.1 400 Bad Request",
401 => "HTTP/1.1 401 Unauthorized",
402 => "HTTP/1.1 402 Payment Required",
403 => "HTTP/1.1 403 Forbidden",
404 => "HTTP/1.1 404 Not Found",
405 => "HTTP/1.1 405 Method Not Allowed",
406 => "HTTP/1.1 406 Not Acceptable",
407 => "HTTP/1.1 407 Proxy Authentication Required",
408 => "HTTP/1.1 408 Request Time-out",
409 => "HTTP/1.1 409 Conflict",
410 => "HTTP/1.1 410 Gone",
411 => "HTTP/1.1 411 Length Required",
412 => "HTTP/1.1 412 Precondition Failed",
413 => "HTTP/1.1 413 Request Entity Too Large",
414 => "HTTP/1.1 414 Request-URI Too Large",
415 => "HTTP/1.1 415 Unsupported Media Type",
416 => "HTTP/1.1 416 Requested range not satisfiable",
417 => "HTTP/1.1 417 Expectation Failed",
500 => "HTTP/1.1 500 Internal Server Error",
501 => "HTTP/1.1 501 Not Implemented",
502 => "HTTP/1.1 502 Bad Gateway",
503 => "HTTP/1.1 503 Service Unavailable",
504 => "HTTP/1.1 504 Gateway Time-out"
);
header($http[$num]);
}
来自:http://blog.csdn.net/fdipzone/article/details/12322575
HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。
HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。
使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。
例子:ajax提交用户名、文章id,记录用户访问过该文章
[html] view plaincopy
$(document).ready(function(){
$.get("api.php", {name:'fdipzone',article_id:'100'});
})
HTTP 状态码header输出:
[php] view plaincopy
/**
* HTTP Protocol defined status codes
* @param int $num
*/
function HTTPStatus($num) {
static $http = array (
100 => "HTTP/1.1 100 Continue",
101 => "HTTP/1.1 101 Switching Protocols",
200 => "HTTP/1.1 200 OK",
201 => "HTTP/1.1 201 Created",
202 => "HTTP/1.1 202 Accepted",
203 => "HTTP/1.1 203 Non-Authoritative Information",
204 => "HTTP/1.1 204 No Content",
205 => "HTTP/1.1 205 Reset Content",
206 => "HTTP/1.1 206 Partial Content",
300 => "HTTP/1.1 300 Multiple Choices",
301 => "HTTP/1.1 301 Moved Permanently",
302 => "HTTP/1.1 302 Found",
303 => "HTTP/1.1 303 See Other",
304 => "HTTP/1.1 304 Not Modified",
305 => "HTTP/1.1 305 Use Proxy",
307 => "HTTP/1.1 307 Temporary Redirect",
400 => "HTTP/1.1 400 Bad Request",
401 => "HTTP/1.1 401 Unauthorized",
402 => "HTTP/1.1 402 Payment Required",
403 => "HTTP/1.1 403 Forbidden",
404 => "HTTP/1.1 404 Not Found",
405 => "HTTP/1.1 405 Method Not Allowed",
406 => "HTTP/1.1 406 Not Acceptable",
407 => "HTTP/1.1 407 Proxy Authentication Required",
408 => "HTTP/1.1 408 Request Time-out",
409 => "HTTP/1.1 409 Conflict",
410 => "HTTP/1.1 410 Gone",
411 => "HTTP/1.1 411 Length Required",
412 => "HTTP/1.1 412 Precondition Failed",
413 => "HTTP/1.1 413 Request Entity Too Large",
414 => "HTTP/1.1 414 Request-URI Too Large",
415 => "HTTP/1.1 415 Unsupported Media Type",
416 => "HTTP/1.1 416 Requested range not satisfiable",
417 => "HTTP/1.1 417 Expectation Failed",
500 => "HTTP/1.1 500 Internal Server Error",
501 => "HTTP/1.1 501 Not Implemented",
502 => "HTTP/1.1 502 Bad Gateway",
503 => "HTTP/1.1 503 Service Unavailable",
504 => "HTTP/1.1 504 Gateway Time-out"
);
header($http[$num]);
}
来自:http://blog.csdn.net/fdipzone/article/details/12322575
iframe跨域传值超过2M的问题解决
Php/Js/Shell/Go jack 2014-9-11 18:20
iframe跨域传值超过2M的问题解决
使用iframe进行传值时,如果采用URL的方式传递,则最大只能传递大约2k的数据,超过这个长度就会被截断了,那么是否可以采用post的方式传值呢?答案是可以的,我们可以采用js创建一个form表单,并将此form提交到iframe上,这样就能做到打破2k数据的限制。
还需要注意2个问题:
1 tomcat下post不能超过2M的问题
这个需要将tomcat的配置文件server.xml修改一下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0"/>
maxPostSize为0时,表示不用限制长度。
2 跨域的问题
跨域不影响iframe的post传值,发送方的tomcat无需更改,只是需要将接收方的tomcat的maxPostSize修改为0即可。
来自:http://housen1987.iteye.com/blog/1695065
使用iframe进行传值时,如果采用URL的方式传递,则最大只能传递大约2k的数据,超过这个长度就会被截断了,那么是否可以采用post的方式传值呢?答案是可以的,我们可以采用js创建一个form表单,并将此form提交到iframe上,这样就能做到打破2k数据的限制。
还需要注意2个问题:
1 tomcat下post不能超过2M的问题
这个需要将tomcat的配置文件server.xml修改一下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0"/>
maxPostSize为0时,表示不用限制长度。
2 跨域的问题
跨域不影响iframe的post传值,发送方的tomcat无需更改,只是需要将接收方的tomcat的maxPostSize修改为0即可。
来自:http://housen1987.iteye.com/blog/1695065
背景:我查一些按顺序的uuid,后用select in(uuid,uuid2...),查出来的顺序是按uuid ,uuid2么?会不会出现不一致的情况。
select * from table_name where id in ()的时候,MySQL会自动按主键自增排序,要是按给定的顺序来取,如何实现呢?
select * from table_name where id in (122,1,5,323,23,1200) order by find_in_set(id, '122,1,5,323,23,1200')
这样读取出来的顺序为 122,1,5,323,23,1200
来自:http://blog.163.com/zhaoyingzhaoying@yeah/blog/static/168024152201110149140931/
示例:
Mysql FIND_IN_SET 语句原始排序:
find_in_set()
问:
mysql中怎么按in语句中的id顺序取数据
select * from ecs_goods where goods_id in (14,1,33,23)
按14,1,33,23这个顺序取
答:
在程序中,$idList='14,1,33,23';
select * from ecs_goods where goods_id in ($idList) order by FIND_IN_SET(goods_id,'$idList')
来自:http://jianzhong5137.blog.163.com/blog/static/9829049201201421430839/
注意,这个find_in_set单条记录没问题,比如唯一id的in。多条记录order会失效(instr也不全行,大部分可以,不过对于特殊的,比如CD是会认为C也在里面的情况。):
select * from act_log where answer in ('B','C','CD') order by instr( "'B','C','CD'",answer)
正确排序: B,B,C
select * from act_log where answer in ('B','C','CD') order by find_in_set( answer,"'B','C','CD'")
排序错误:CD,C,BB,C。
select * from table_name where id in ()的时候,MySQL会自动按主键自增排序,要是按给定的顺序来取,如何实现呢?
select * from table_name where id in (122,1,5,323,23,1200) order by find_in_set(id, '122,1,5,323,23,1200')
这样读取出来的顺序为 122,1,5,323,23,1200
来自:http://blog.163.com/zhaoyingzhaoying@yeah/blog/static/168024152201110149140931/
示例:
Mysql FIND_IN_SET 语句原始排序:
find_in_set()
问:
mysql中怎么按in语句中的id顺序取数据
select * from ecs_goods where goods_id in (14,1,33,23)
按14,1,33,23这个顺序取
答:
在程序中,$idList='14,1,33,23';
select * from ecs_goods where goods_id in ($idList) order by FIND_IN_SET(goods_id,'$idList')
来自:http://jianzhong5137.blog.163.com/blog/static/9829049201201421430839/
注意,这个find_in_set单条记录没问题,比如唯一id的in。多条记录order会失效(instr也不全行,大部分可以,不过对于特殊的,比如CD是会认为C也在里面的情况。):
select * from act_log where answer in ('B','C','CD') order by instr( "'B','C','CD'",answer)
正确排序: B,B,C
select * from act_log where answer in ('B','C','CD') order by find_in_set( answer,"'B','C','CD'")
排序错误:CD,C,BB,C。
美化桌面快捷图片的小键头
如果你之前改过这个,发现桌面的快捷方式不能放在超级任务栏上,那说明你的那种方法不正确。以下是我找到的正确方法可以去掉快捷方式图标的小键头:
找一透明ico图标,保存到C:\windows文件夹中,文件名为Empty.ico
新建一文本文档,粘贴以下内容,另存为扩展名reg的注册表文件,
双击导入,注销后重新登录即可
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"29"="C:\\Windows\\Empty.ico,0"
如果你之前改过这个,发现桌面的快捷方式不能放在超级任务栏上,那说明你的那种方法不正确。以下是我找到的正确方法可以去掉快捷方式图标的小键头:
找一透明ico图标,保存到C:\windows文件夹中,文件名为Empty.ico
新建一文本文档,粘贴以下内容,另存为扩展名reg的注册表文件,
双击导入,注销后重新登录即可
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"29"="C:\\Windows\\Empty.ico,0"
今天遇到一个问题,jQuery的Ajax取得卡余额
var url='${ajaxGetCardBalance}';
jQuery.ajax({
url : url,
type : "get",
dataType : "json",
data : params,
success : function(data) {
var result = eval("(" + data + ")");
if(result.code == '1') {
jQuery('#lblCardBalance').html(result.pros.balance);
}
else if(result.code == '-1'){
alert(result.message);
}
}
});
怎么也取不到值,点击后没有反应,
仔细分析,原来这个页面使用了ssl,但访问这个页面却是普通http链接,导致ajax用https访问,但当前域却是http模式,导致出问题,比如当前域(浏览器地址栏里面)是http://www.xxx.com,则ajax的url也需要基于http://www.xxx.com,不能是https://www.xxx.com,同理如果当前域是https://www.xxx.com,ajax的url也不能用http。
还有一个问题需要注意,如果页面设置了<base href="http://www.xxx.com/"/>,则ajax也不能访问ssl模式的url(即便当前域是ssl模式也不行),目前测试看,firefox是可以的,但ie系列没法返回,现象和上面一样。
来自:http://linct21.blog.163.com/blog/static/847219382012991575680/
var url='${ajaxGetCardBalance}';
jQuery.ajax({
url : url,
type : "get",
dataType : "json",
data : params,
success : function(data) {
var result = eval("(" + data + ")");
if(result.code == '1') {
jQuery('#lblCardBalance').html(result.pros.balance);
}
else if(result.code == '-1'){
alert(result.message);
}
}
});
怎么也取不到值,点击后没有反应,
仔细分析,原来这个页面使用了ssl,但访问这个页面却是普通http链接,导致ajax用https访问,但当前域却是http模式,导致出问题,比如当前域(浏览器地址栏里面)是http://www.xxx.com,则ajax的url也需要基于http://www.xxx.com,不能是https://www.xxx.com,同理如果当前域是https://www.xxx.com,ajax的url也不能用http。
还有一个问题需要注意,如果页面设置了<base href="http://www.xxx.com/"/>,则ajax也不能访问ssl模式的url(即便当前域是ssl模式也不行),目前测试看,firefox是可以的,但ie系列没法返回,现象和上面一样。
来自:http://linct21.blog.163.com/blog/static/847219382012991575680/
socket中的SO_REUSEADDR,setsockopt中参数之SO_REUSEADDR的意义。
Unix/LinuxC技术 jack 2014-9-7 17:03
Q: 我正在写一个unix server程序,不是daemon,经常需要在命令行上重启它,绝大多数时候工作正常,但是某些时候会报告"bind: address in use",于是重启失败。
A: Andrew Gierth
server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项。至于TIME_WAIT状态,你无法避免,那是TCP协议的一部分。
阅读全文
A: Andrew Gierth
server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项。至于TIME_WAIT状态,你无法避免,那是TCP协议的一部分。
阅读全文
背景:mysql的严格模式有一句:my.cnf加了:sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",中间有一个:NO_AUTO_CREATE_USER。
参看:https://jackxiang.com/post/6810/
阅读全文
参看:https://jackxiang.com/post/6810/
阅读全文
背景:各位同事,请大家根据表中的明细,自查下 各自名下的设备 看看数量和序列号是否 都符合,如果有问题,尽快跟我反馈 部分同事名下设备较多,请逐一核查,不要有遗漏。你会看标签还是直接通过键盘查哩?
————————————————————————————————————————————————————————————————————
一、最简单的查看显示器的方式:
右击“我的电脑”--“管理”--“设备管理器”--“监视器”--右击“即插即用监视器”--“属性”--“详细信息”--里面会有显示DISPLAY\AOCxxxx\......类似这样的信息,一看就知道是Dell E2011H (Digital)的显示器了~
{这是直接读出显示器的EDID,从而有这些相关资料,所有的工具都是这个原理}
二、最简单的查看电脑型号的方式(软件不太好查):
答1:我觉得你的提问有问题,机子的品牌从外部标签或商标处可得到查看。不过如果系统盘是品牌机赠送的,那点“我的电脑”右键属性即可看出。如果想了解你机器的硬件配置情况可下载一款名为“鲁大师”的软件进行检测。
答2:如果电脑可以正常开机,可以在开机看到启动画面的时候,按键盘的<F2>键,进入BIOS查看服务编号。
如果电脑有故障,无法进入BIOS查看服务编号,那么,可以掀开笔记本底部的金属铭牌,查看服务编号。
微软 Windows 系统的 COA 标签,也贴在金属铭牌下方。
请注意,XPS L321x 底部的金属铭牌卡扣固定的比较紧,建议使用塑料撬棒等工具
摘自1:http://zhidao.baidu.com/question/197920028.html?qbl=relate_question_0&word=Win%3Bdows7%20%C8%E7%BA%CE%B2%E9%BF%B4%CF%D4%CA%BE%C6%F7%D0%CD%BA%C5
摘自2:http://jingyan.baidu.com/article/5553fa820b14ed65a3393472.html
————————————————————————————————————————————————————————————————————
一、最简单的查看显示器的方式:
右击“我的电脑”--“管理”--“设备管理器”--“监视器”--右击“即插即用监视器”--“属性”--“详细信息”--里面会有显示DISPLAY\AOCxxxx\......类似这样的信息,一看就知道是Dell E2011H (Digital)的显示器了~
{这是直接读出显示器的EDID,从而有这些相关资料,所有的工具都是这个原理}
二、最简单的查看电脑型号的方式(软件不太好查):
答1:我觉得你的提问有问题,机子的品牌从外部标签或商标处可得到查看。不过如果系统盘是品牌机赠送的,那点“我的电脑”右键属性即可看出。如果想了解你机器的硬件配置情况可下载一款名为“鲁大师”的软件进行检测。
答2:如果电脑可以正常开机,可以在开机看到启动画面的时候,按键盘的<F2>键,进入BIOS查看服务编号。
如果电脑有故障,无法进入BIOS查看服务编号,那么,可以掀开笔记本底部的金属铭牌,查看服务编号。
微软 Windows 系统的 COA 标签,也贴在金属铭牌下方。
请注意,XPS L321x 底部的金属铭牌卡扣固定的比较紧,建议使用塑料撬棒等工具
摘自1:http://zhidao.baidu.com/question/197920028.html?qbl=relate_question_0&word=Win%3Bdows7%20%C8%E7%BA%CE%B2%E9%BF%B4%CF%D4%CA%BE%C6%F7%D0%CD%BA%C5
摘自2:http://jingyan.baidu.com/article/5553fa820b14ed65a3393472.html
背景:有时一个文件,往往想知道是谁在写,是哪个进程,是哪个用户组的进程等,如:日志文件太大了,一直在写,但关了还有程序在写,能反查到是谁在写么?看起来简单,但是如果这个日志是多台机器都往里写:加载的NFS,Linux都挂载到日志上了。你怎么知道是哪台机器的进程在写能知道么?我没有NFS资源,但我想这都是一个问题:怎么我都关闭所有机器往该文件的写进程了,怎么用tail -f log文件,还有日志在写呢,这样的需求场景是有时会有的,于是有此博文出现。
一)在Linux下:
请问如何确认一个文件正在被哪个进程读写?
用lsof试一试
lsof|awk '/\<filename\>;/{print $2}'
就简单的用:lsof 文件名
实践如下,PHP-FPM进程日志文件作实验如下:
根据进程号找到这个进程,Linux下如下命令即可找到:
于是,原来是php-fpm的主进程在写这个文件,明白了。
本站blog 之前问过同事的Url备查链接:https://jackxiang.com/post/6800/
二)在Windows上:
filemon.exe 追踪特定程序运行的过程,包括读取的文件等等。你可以用这个试试
Download: http://butian.org/soft/721.html
以下来自:
http://bbs.chinaunix.net/thread-2225994-1-1.html
http://zhidao.baidu.com/link?url=m6sJQBdrwYsCRoc9poMMldQSihlRxjq_oUOMwBJUE2F7gEny4qgkoRhGenYYA7xtyKXVtlB1AbDYNvmz-AsHMa
Linux下的用得比较多,摘自:http://blog.csdn.net/guang11cheng/article/details/16980667
有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。
fuser find files or sockets' user
格式:fuser [选项] fname
-k 如果找到打开文件的进程,则发送SIGKILL杀死此进程,通过-i选项,可以为用户提供交互选择
-signal 用户可以指定使用何种信号去kill进程,如果-k参数指定,则忽略此参数
-m 如果指定一个文件,则所有访问那个文件所在文件系统的进程都会被列出来
-n type 指定不同的文件类型,默认类型为file,此外还支持tcp和udp类型,此时可以简写作port/tcp
-u 显示进程属主
-v 显示详细进程与打开文件信息
-4/-6 只搜索IPv4/IPv6套接字
例如,我们想查看端口TCP端口9000由哪个进程打开 fuser -v -u 9000/tcp
查看哪些进程在访问/home挂载分区 fuser -mv /home
lsof list open file
格式:lsof [选项] [names]
单独执行lsof将输出系统中所有打开的文件,我们可以grep过滤出我们关心的内容,不过lsof提供了相应的参数帮助我们精确查找
lsof name 将输出所有使用文件name的进程
-p pid 列出进程pid所打开的所有文件
-d FD_pattern 列出所有已经打开的FD值为FD_pattern的文件FD的值有整数,TXT,MEM等等
-a lsof后可以加多个匹配条件,默认为or连接,此参数将多个条件变成and关系
-i [46] [proto] [@hostname|ip][:service|port] 用来选择占用某个端口的进程
+d/+D dir 非递归或递归的显示打开dir下文件的进程
-c string 显示进程的command中包含string的进程所打开的文件
-u username 显示属于user的进程所打开的文件
-g gid
以上这些参数已经足够用了,上面这两个工具都是读取/proc文件系统中的数据进行工作的。网上有提到借助于lsof的查找功能,可以对一个删除的文件进行恢复,前提是占用这个文件的进程当前还没有关闭。通过被删除的文件,找到对应的进程及在进程中的fd-num,然后通过cat /proc/process-num/fd/fd-num即可恢复被删除的文件。
一)在Linux下:
请问如何确认一个文件正在被哪个进程读写?
用lsof试一试
lsof|awk '/\<filename\>;/{print $2}'
就简单的用:lsof 文件名
实践如下,PHP-FPM进程日志文件作实验如下:
根据进程号找到这个进程,Linux下如下命令即可找到:
于是,原来是php-fpm的主进程在写这个文件,明白了。
本站blog 之前问过同事的Url备查链接:https://jackxiang.com/post/6800/
二)在Windows上:
filemon.exe 追踪特定程序运行的过程,包括读取的文件等等。你可以用这个试试
Download: http://butian.org/soft/721.html
以下来自:
http://bbs.chinaunix.net/thread-2225994-1-1.html
http://zhidao.baidu.com/link?url=m6sJQBdrwYsCRoc9poMMldQSihlRxjq_oUOMwBJUE2F7gEny4qgkoRhGenYYA7xtyKXVtlB1AbDYNvmz-AsHMa
Linux下的用得比较多,摘自:http://blog.csdn.net/guang11cheng/article/details/16980667
有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。
fuser find files or sockets' user
格式:fuser [选项] fname
-k 如果找到打开文件的进程,则发送SIGKILL杀死此进程,通过-i选项,可以为用户提供交互选择
-signal 用户可以指定使用何种信号去kill进程,如果-k参数指定,则忽略此参数
-m 如果指定一个文件,则所有访问那个文件所在文件系统的进程都会被列出来
-n type 指定不同的文件类型,默认类型为file,此外还支持tcp和udp类型,此时可以简写作port/tcp
-u 显示进程属主
-v 显示详细进程与打开文件信息
-4/-6 只搜索IPv4/IPv6套接字
例如,我们想查看端口TCP端口9000由哪个进程打开 fuser -v -u 9000/tcp
查看哪些进程在访问/home挂载分区 fuser -mv /home
lsof list open file
格式:lsof [选项] [names]
单独执行lsof将输出系统中所有打开的文件,我们可以grep过滤出我们关心的内容,不过lsof提供了相应的参数帮助我们精确查找
lsof name 将输出所有使用文件name的进程
-p pid 列出进程pid所打开的所有文件
-d FD_pattern 列出所有已经打开的FD值为FD_pattern的文件FD的值有整数,TXT,MEM等等
-a lsof后可以加多个匹配条件,默认为or连接,此参数将多个条件变成and关系
-i [46] [proto] [@hostname|ip][:service|port] 用来选择占用某个端口的进程
+d/+D dir 非递归或递归的显示打开dir下文件的进程
-c string 显示进程的command中包含string的进程所打开的文件
-u username 显示属于user的进程所打开的文件
-g gid
以上这些参数已经足够用了,上面这两个工具都是读取/proc文件系统中的数据进行工作的。网上有提到借助于lsof的查找功能,可以对一个删除的文件进行恢复,前提是占用这个文件的进程当前还没有关闭。通过被删除的文件,找到对应的进程及在进程中的fd-num,然后通过cat /proc/process-num/fd/fd-num即可恢复被删除的文件。
[mysql]不要再执着于thread_concurrency
结论:
thread_concurrency 在GNU/Linux系统上没有用的。
不过很多LINUX自带的mysql包里面的配置文件都有thread_concurrency选项,
甚至Mysql官方源码里面的my-large.cnf my-innodb-heavy-4G.cnf里面也有。。
Xml代码 收藏代码
# This permits the application TO give the threads system a hint FOR the
# desired NUMBER OF threads that should be run at the same TIME. This
# VALUE ONLY makes sense ON systems that support the thread_concurrency()
# FUNCTION CALL (Sun Solaris, FOR example).
# You should try [NUMBER OF CPUs]*(2..4) FOR thread_concurrency
thread_concurrency = 8
于是在网上就流传开了,在一些优化mysql配置的文章中,都说要把thread_concurrency设置为 CPU核数*2。
但是千万别上当,调整这个选项纯属浪费时间。
它只在Solaris < 9 的系统中有用。。。
而且从mysql5.6.1开始,这个选项就被废了。
http://bugs.mysql.com/bug.php?id=55001
INNODB:
innodb_thread_concurrency = 128
innodb_purge_threads = 32 # 5.6之后才支持大于1, 5.5上会自动变成1
# 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量
结论:
thread_concurrency 在GNU/Linux系统上没有用的。
不过很多LINUX自带的mysql包里面的配置文件都有thread_concurrency选项,
甚至Mysql官方源码里面的my-large.cnf my-innodb-heavy-4G.cnf里面也有。。
Xml代码 收藏代码
# This permits the application TO give the threads system a hint FOR the
# desired NUMBER OF threads that should be run at the same TIME. This
# VALUE ONLY makes sense ON systems that support the thread_concurrency()
# FUNCTION CALL (Sun Solaris, FOR example).
# You should try [NUMBER OF CPUs]*(2..4) FOR thread_concurrency
thread_concurrency = 8
于是在网上就流传开了,在一些优化mysql配置的文章中,都说要把thread_concurrency设置为 CPU核数*2。
但是千万别上当,调整这个选项纯属浪费时间。
它只在Solaris < 9 的系统中有用。。。
而且从mysql5.6.1开始,这个选项就被废了。
http://bugs.mysql.com/bug.php?id=55001
INNODB:
innodb_thread_concurrency = 128
innodb_purge_threads = 32 # 5.6之后才支持大于1, 5.5上会自动变成1
# 默认设置为 0,表示不限制并发数,这里推荐设置为0,更好去发挥CPU多核处理能力,提高并发量
背景:
Nginx模块fastcgi_cache后会在启动时候出现cache manager process和cache loader process 进程,查了下得知这玩意是用来作header使用的,PHP输出后由经它后给替换了header,有点像NAT出去时经过外网的路由时给把IP头给替换一个道理,这样有它的好处,也就是cache控制由前端nginx而不是由php本身,起到分层的作用:
程序代码是Discuz!论坛, 随便开启测试了几下,发现/dev/shm/nginx_cache/下没有任何目录建立,也没有文件创建。调试的http header响应头里的X-Cache-CFC 结果一直是MISS。从服务器进程上来看,Nginx cache manager process 跟Nginx cache loader process 进程也正常运行:
1 root 3100 1 0 14:52 ? 00:00:00 nginx: master process /usr/sbin/nginx
2 www-data 3101 3100 0 14:52 ? 00:00:00 nginx: worker process
3 www-data 3102 3100 0 14:52 ? 00:00:00 nginx: cache manager process
4 www-data 3103 3100 0 14:52 ? 00:00:00 nginx: cache loader process
不知道为何会这样,为何没有cache成功,我以为我配置参数有问题,只好阅读WIKI。发现fastcgi_ignore_headers 参数下解释有这么一段
fastcgi_ignore_headers
Syntax: fastcgi_ignore_headers field …
Default:
Context: http
server
location
Reference: fastcgi_ignore_headers
This directive forbids processing of the named headers from the FastCGI-server reply. It is possible to specify headers like “X-Accel-Redirect”, “X-Accel-Expires”, “Expires” or “Cache-Control”.
也就是说这个参数的值,将会被忽略掉,同样被忽略掉的响应头比如”X-Accel-Redirect”, “X-Accel-Expires”, “Expires” or “Cache-Control”,而nginx配置中并没有fastcgi_ignore_headers参数的设定,那么问题会不会出现在FASTCGI响应结果里包含了类似”X-Accel-Redirect”, “X-Accel-Expires”, “Expires” or “Cache-Control”这几个响应头呢?用strace抓包,看了下nginx与fpm进程通讯的数据
1 ####为了确保准确抓到处理该http请求的进程,我把nginx 、fpm都只开启了一个进程处理。
2 //strace -ff -tt -s 1000 -o xxx.log -p PHPFPM-PID
3 14:52:07.837334 write(3, "\1\6\0\1\0\343\5\0X-Powered-By: PHP/5.3.10-1ubuntu3.5\r\nExpires: Thu, 19 Nov 1981 08:52:00 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\nPragma: no-cache\r\nContent-type: text/html\r\n\r\nHello cfc4n1362034327\0\0\0\0\0\1\3\0\1\0\10\0\0\0\0\0\0\0\0\0\0", 256) = 256
4
5 //strace -ff -tt -s 1000 -o xxx.log -p Nginx-PID
6 15:05:13.265663 recvfrom(12, "\1\6\0\1\0\343\5\0X-Powered-By: PHP/5.3.10-1ubuntu3.5\r\nExpires: Thu, 19 Nov 1981 08:52:00 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\nPragma: no-cache\r\nContent-type: text/html\r\n\r\nHello cfc4n1362035113\0\0\0\0\0\1\3\0\1\0\10\0\0\0\0\0\0\0\0\0\0", 4023, 0, NULL, NULL) = 256
从抓取的数据包里可以看到,fpm确实返回了包含“Expires”、“Cache-Control”头的http 响应头信息。那么疑问来了:
nginx的fastcgi_cache没缓存这条http响应,是因为响应头里包含“Expires”、“Cache-Control”的原因吗?
程序里并没有输出“Expires”、“Cache-Control” http header的代码,这是谁输出的呢?
既然是fpm响应的时候,就已经有了,那么是php的core模块,还是其他拓展模块输出的?
“Expires:”时间为何是“Thu, 19 Nov 1981 08:52:00 GMT”?
疑问比较多,一个一个查起,先从Nginx的fastcgi_cache没缓存这条http响应查起。我根据测试环境nginx版本1.1.9(ubuntu 12.04默认的),到nginx官方下了对应版本的源码,搜索了fastcgi参数使用的地方,在http\ngx_http_upstream.c找到了。虽然不能很流程的读懂nginx的代码,但粗略的了解,根据了解的情况加以猜测,再动手测试实验,也得出了结论,确定了nginx的fastcgi_cache的规则。
来自:http://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
Nginx模块fastcgi_cache后会在启动时候出现cache manager process和cache loader process 进程,查了下得知这玩意是用来作header使用的,PHP输出后由经它后给替换了header,有点像NAT出去时经过外网的路由时给把IP头给替换一个道理,这样有它的好处,也就是cache控制由前端nginx而不是由php本身,起到分层的作用:
程序代码是Discuz!论坛, 随便开启测试了几下,发现/dev/shm/nginx_cache/下没有任何目录建立,也没有文件创建。调试的http header响应头里的X-Cache-CFC 结果一直是MISS。从服务器进程上来看,Nginx cache manager process 跟Nginx cache loader process 进程也正常运行:
1 root 3100 1 0 14:52 ? 00:00:00 nginx: master process /usr/sbin/nginx
2 www-data 3101 3100 0 14:52 ? 00:00:00 nginx: worker process
3 www-data 3102 3100 0 14:52 ? 00:00:00 nginx: cache manager process
4 www-data 3103 3100 0 14:52 ? 00:00:00 nginx: cache loader process
不知道为何会这样,为何没有cache成功,我以为我配置参数有问题,只好阅读WIKI。发现fastcgi_ignore_headers 参数下解释有这么一段
fastcgi_ignore_headers
Syntax: fastcgi_ignore_headers field …
Default:
Context: http
server
location
Reference: fastcgi_ignore_headers
This directive forbids processing of the named headers from the FastCGI-server reply. It is possible to specify headers like “X-Accel-Redirect”, “X-Accel-Expires”, “Expires” or “Cache-Control”.
也就是说这个参数的值,将会被忽略掉,同样被忽略掉的响应头比如”X-Accel-Redirect”, “X-Accel-Expires”, “Expires” or “Cache-Control”,而nginx配置中并没有fastcgi_ignore_headers参数的设定,那么问题会不会出现在FASTCGI响应结果里包含了类似”X-Accel-Redirect”, “X-Accel-Expires”, “Expires” or “Cache-Control”这几个响应头呢?用strace抓包,看了下nginx与fpm进程通讯的数据
1 ####为了确保准确抓到处理该http请求的进程,我把nginx 、fpm都只开启了一个进程处理。
2 //strace -ff -tt -s 1000 -o xxx.log -p PHPFPM-PID
3 14:52:07.837334 write(3, "\1\6\0\1\0\343\5\0X-Powered-By: PHP/5.3.10-1ubuntu3.5\r\nExpires: Thu, 19 Nov 1981 08:52:00 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\nPragma: no-cache\r\nContent-type: text/html\r\n\r\nHello cfc4n1362034327\0\0\0\0\0\1\3\0\1\0\10\0\0\0\0\0\0\0\0\0\0", 256) = 256
4
5 //strace -ff -tt -s 1000 -o xxx.log -p Nginx-PID
6 15:05:13.265663 recvfrom(12, "\1\6\0\1\0\343\5\0X-Powered-By: PHP/5.3.10-1ubuntu3.5\r\nExpires: Thu, 19 Nov 1981 08:52:00 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\nPragma: no-cache\r\nContent-type: text/html\r\n\r\nHello cfc4n1362035113\0\0\0\0\0\1\3\0\1\0\10\0\0\0\0\0\0\0\0\0\0", 4023, 0, NULL, NULL) = 256
从抓取的数据包里可以看到,fpm确实返回了包含“Expires”、“Cache-Control”头的http 响应头信息。那么疑问来了:
nginx的fastcgi_cache没缓存这条http响应,是因为响应头里包含“Expires”、“Cache-Control”的原因吗?
程序里并没有输出“Expires”、“Cache-Control” http header的代码,这是谁输出的呢?
既然是fpm响应的时候,就已经有了,那么是php的core模块,还是其他拓展模块输出的?
“Expires:”时间为何是“Thu, 19 Nov 1981 08:52:00 GMT”?
疑问比较多,一个一个查起,先从Nginx的fastcgi_cache没缓存这条http响应查起。我根据测试环境nginx版本1.1.9(ubuntu 12.04默认的),到nginx官方下了对应版本的源码,搜索了fastcgi参数使用的地方,在http\ngx_http_upstream.c找到了。虽然不能很流程的读懂nginx的代码,但粗略的了解,根据了解的情况加以猜测,再动手测试实验,也得出了结论,确定了nginx的fastcgi_cache的规则。
来自:http://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
这个相当于windows里的启动项
vi /etc/rc.d/rc.local
按i
然后把你的命令贴进去 ,一行一条命令
/bin/bash /usr/local/scripts/autoStartNginxEnterSSLKey.sh
然后按 esc
再 :wq 保存 注意前面有两点的冒号
下次重启的时候这个就会自动执行你添加的命令。
vi /usr/local/scripts/autoStartNginxEnterSSLKey.sh
./startNginx.sh
cat ./startNginx.sh
/usr/local/nginx/sbin/nginx
来自:http://zhidao.baidu.com/link?url=D7tZLZFqg7LODR60qIkvAeoSk-ocjBWgLppmxkHh_gSxH3AvOkZ_S9SxTj-C50espCswUiYZRK9F4JYi2nVC8K
vi /etc/rc.d/rc.local
按i
然后把你的命令贴进去 ,一行一条命令
/bin/bash /usr/local/scripts/autoStartNginxEnterSSLKey.sh
然后按 esc
再 :wq 保存 注意前面有两点的冒号
下次重启的时候这个就会自动执行你添加的命令。
vi /usr/local/scripts/autoStartNginxEnterSSLKey.sh
./startNginx.sh
cat ./startNginx.sh
/usr/local/nginx/sbin/nginx
来自:http://zhidao.baidu.com/link?url=D7tZLZFqg7LODR60qIkvAeoSk-ocjBWgLppmxkHh_gSxH3AvOkZ_S9SxTj-C50espCswUiYZRK9F4JYi2nVC8K
背景:在云vps里安装了一个virtualbox后,好象云vps可以有啥启动后,导致上面的virtualbox下的虚拟机(虚拟机下面的linux下面的虚拟机xp),启动不起来,出现异常。
一、从virtual box的环境下手排查:
之前由于openSUSE的/var不足引起系统不正常重启后,virtualbox也报虚拟机异常退出无法启动和配置。再次重新重启系统后,提示需要在root状态下执行:/etc/init.d/vboxdrv setup。
执行后,虚拟机又可以正常启动了。
执行如下:
rpm -e VirtualBox-4.3-4.3.20_96996_el6-1.x86_64
rpm -ihv VirtualBox-4.3-4.3.24_98716_el6-1.x86_64.rpm
摘自:http://blog.sina.com.cn/s/blog_62d4d5900101eupz.html
二、还是有问题,那就打开windows xp的日志记录吧,如下所示:
—————————————————————打开Windows XP 日志记录—————————————————————————
点击“开始→运行”,在运行对话框中输入“gpedit.msc”命令,启动组策略编辑器。然后依次展开“计算机配置→管理模板→Windows 组件→Windows Installer”,双击打开右侧的“日志记录”选项,在日志记录属性窗口中选择“已启用”选项,然后在“日志记录”栏中输入“voicewarmup”参数选项,最后点击“确定”按钮就启用了日志记录功能。
—————————————————————查看Windows XP 日志记录—————————————————————————
控制面板→性能和维护→管理工具→事件查看器→里面有四项:(应用程序、安全性、系统、Internet Explorer)
========================================================================
打开windows xp日志链接来自:http://blog.sina.com.cn/s/blog_3c98f3a101000982.html
查看windows xp日志的图例子:http://jingyan.baidu.com/article/3065b3b6c006f2becef8a46d.html
一、从virtual box的环境下手排查:
之前由于openSUSE的/var不足引起系统不正常重启后,virtualbox也报虚拟机异常退出无法启动和配置。再次重新重启系统后,提示需要在root状态下执行:/etc/init.d/vboxdrv setup。
执行后,虚拟机又可以正常启动了。
执行如下:
rpm -e VirtualBox-4.3-4.3.20_96996_el6-1.x86_64
rpm -ihv VirtualBox-4.3-4.3.24_98716_el6-1.x86_64.rpm
摘自:http://blog.sina.com.cn/s/blog_62d4d5900101eupz.html
二、还是有问题,那就打开windows xp的日志记录吧,如下所示:
—————————————————————打开Windows XP 日志记录—————————————————————————
点击“开始→运行”,在运行对话框中输入“gpedit.msc”命令,启动组策略编辑器。然后依次展开“计算机配置→管理模板→Windows 组件→Windows Installer”,双击打开右侧的“日志记录”选项,在日志记录属性窗口中选择“已启用”选项,然后在“日志记录”栏中输入“voicewarmup”参数选项,最后点击“确定”按钮就启用了日志记录功能。
—————————————————————查看Windows XP 日志记录—————————————————————————
控制面板→性能和维护→管理工具→事件查看器→里面有四项:(应用程序、安全性、系统、Internet Explorer)
========================================================================
打开windows xp日志链接来自:http://blog.sina.com.cn/s/blog_3c98f3a101000982.html
查看windows xp日志的图例子:http://jingyan.baidu.com/article/3065b3b6c006f2becef8a46d.html
为什么Android手机总是越用越慢?
Unix/LinuxC技术 jack 2014-8-26 22:02




