周末去海岸城买东东,发现有一台海尔的一体机产品,预装的操作系统是linux(即时linux,thizlinux),不知道用户名和密码无法进入系统,咨询卖电脑的,也不知道。
用了很多linux发行版,我以前还没有用过即时linux(英文名:thizlinux),记住它的官方网站:http://www.thizlinux.com/ 。
电脑右下角还有一个360的标,我问了下,听说都是安在电脑的芯片里了,想恢复就成,不用也成,这既然是360,何必用Linux?这是一个疑问,也就是让用户安Windows吧?呵呵。
  “武功者,包括内功、外功、武术技击术之总和。有形的动作,如支撑格拒,姿式回环,变化万千,外部可见,授受较易,晨操夕练,不难熟练。而无形的内功指内部之灵惠素质,即识、胆、气、劲、神是也,此乃与学练者整个内在世界的学识水平密切相关,是先天之慧根悟性与后天智能的总成,必需寻得秘籍方可炼成。”
  ——摘自《武林秘籍大全》
其实上面谈到的也就是九阴真经中的虚实罢了,摘录如下:
天之道,损有余而补不足,是故虚胜实,不足胜有余。其意博,其理奥,其趣深,天地之象分,阴阳之候列,变化之由表,死生之兆彰,不谋而遗迹自同,勿约而幽明斯契,稽其言有微,验之事不忒,诚可谓至道之宗,奉生之始矣。假若天机迅发,妙识玄通,成谋虽属乎生知,标格亦资于治训,未尝有行不由送,出不由产者亦。然刻意研精,探微索隐,或识契真要,则目牛无全,故动则有成,犹鬼神幽赞,而命世奇杰,时时间出焉。
  ——摘自《九阴真经》

阅读全文
yum install libevent-dev 安装libevent
yum install libevent
PHP Extention: http://pecl.php.net/package/libevent/0.0.5



再就是:自己编译 http://libevent.org/

缘起:PHP5的先进之处在于,你可以用stream_select()处理几乎所有的stream-例如你可以通过include STDIN用它接收键盘输入并保存进数组,你还可以接收通过proc_open()打开的管道中的数据。
目的:想用这个函数进行对文件句柄进行监控,其并不是想用于网络的socket句柄,为此做了如下试验:
探索:能否用PHP的stream_select的方式对CentOs下的串口进行监控呢?经过一系列的研究,发现是可以进行多串口的监控的。
研究: 发现会报错,stream_select(): cannot represent a stream of type dio as a select()
解决: 最后,见代码吧。代码下载:
如果,你想时间更短一点,E文是这样说的:
If you want to set an absolute maximum execution time for stream_select in a loop, it's important to decrement the max_time value passed to stream_select.修改了一下的情况,好像效果不明显,呵呵:

完善的第三个版本备案下载,这个实现了对多个串口的同时读写。By:jack
  其实主要是对这个超时机制的理解。见下面这段代码的超时:

插曲:dio.raw://[device]
for raw streams anddio.serial://[devicefor serials streams. 这两种stream有什么区别啊?用serial不行,而用raw就Ok了。但是会出现上面的报错:stream_select(): cannot represent a stream of type dio as a select()
php有个libevent扩展,我觉得这个扩展应该可以有更广泛的用途,比如:
(1)异步的服务器端开发框架.
(2)类似unix下的tail命令行.
(3)用php和ZeroMQ实现的一个事件驱动服务器端
http://blog.sina.com.cn/s/blog_60b9ee7f0100qdmh.html
搞录:
问题:
有没有办法在php中实现多线程呢?
假设你正在写一个基于多台服务器的php应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台。
可以实现吗?
回答:
当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如perl。
其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。
。。。

PHP5的先进之处在于,你可以用stream_select()处理几乎所有的stream-例如你可以通过include STDIN用它接收键盘输入并保存进数组,你还可以接收通过proc_open()打开的管道中的数据。

日常生活中:
如对多个URL进行异步访问,那个curl_multi一族函数的函数是循环,而用这个就是真正调用类似Linux下的select函数:
实践安装步骤如下:
wget http://pecl.php.net/get/libevent-0.0.4.tgz
checking for libevent support... yes, shared
checking for libevent headers in default path... not found
configure: error: Cannot find libevent headers
root@192.168.1.108:~/software/libevent-0.0.4# yum -y install libevent-devel   libevent
不安libevent-devel会在具体安php的libevent扩展时出现找不到.h文件,用指定路径也成也就是下面的:
最好还是安上吧,但要是版本低于1.4还是指定的好,可能会出现问题,这样:
在安php的libevent扩展时加上 -with-libevent=/usr/local/webserver/libevent/:
./configure  -with-libevent=/usr/local/webserver/libevent/
---
原因是如下的包没有安装
libevent-devel
把此包安装上去就好了
yum -y install libevent-devel

root@116.255.139.240:~/software# rpm -qa|grep libevent
libevent-1.4.13-1
root@116.255.139.240:~/software# rpm -ql libevent-1.4.13-1
/usr/lib/libevent-1.4.so.2
/usr/lib/libevent-1.4.so.2.1.3
/usr/lib/libevent_core-1.4.so.2
/usr/lib/libevent_core-1.4.so.2.1.3
/usr/lib/libevent_extra-1.4.so.2
/usr/lib/libevent_extra-1.4.so.2.1.3
/usr/share/doc/libevent-1.4.13
/usr/share/doc/libevent-1.4.13/README

libevent的官网:http://libevent.org/
wget https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz

yum -y install libevent-devel  主要是防止编译PHP扩展Configure时出现找不到.h文件,有了它就不用指明:-with-libevent=/usr/local/webserver/libevent/
./configure prefix=/usr/local/webserver/libevent/

扩展安装:http://pecl.php.net/package/libevent
wget http://pecl.php.net/get/libevent-0.0.4.tgz
/usr/local/webserver/php/bin/phpize
./configure  -with-libevent=/usr/local/webserver/libevent/
自己安或者yum,注意:yum安可能会出现问题:由於 PHP libevent 需要搭配C 的 libevent 1.4 以上版本 , 所以並非每個 Linux 套件都有 , 例如我的 CentOS 的 libevent 版本就比較舊 , 因此要自行編譯 , 以下就說明 CentOS 5.4 下成功編譯 PHP libevent 的步驟,PHP Warning:  stream_select(): supplied argument is not a valid stream resource .
root@192.168.1.108:~/software/libevent-0.0.4# ./configure  -with-libevent=/usr/local/webserver/libevent/
root@192.168.1.108:~/software/libevent-0.0.4# make;make install
......
........
Build complete.
Don't forget to run 'make test'.
Installing shared extensions:     /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/

安装完毕,如下:
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/libevent.so
DownLoad 测试源码,来自网上:


代码示例,来自网上,注释部分代码,测试读部分是ok的,如下:






网上其他的步骤,主要是注意不有yum默认的安装方法【由於 PHP libevent 需要搭配C 的 libevent 1.4 以上版本 , 所以並非每個 Linux 套件都有 , 例如我的 CentOS 的 libevent 版本就比較舊 , 因此要自行編譯 , 以下就說明 CentOS 5.4 下成功編譯 PHP libevent 的步驟】:

1. 編譯 libevent

解開 libevent source code , 進入 source code 目錄

執行 ./configure –prefix=/usr/local

執行 make

執行 make install

2. 編譯 PHP libevent

解開 PHP libevent source code , 進入 source code 目錄

執行 phpize

執行 ./configure –with-libevent=/usr/local

執行 make

執行 make install

這樣會把 libevent.so 安裝到 /usr/lib/php/modoules 或 /usr/lib64/php/modules , 看 os 是 32bit 或 64bit

同时呢,也可以参考下这个URL:http://www.ooso.net/archives/607

附录,关于curl_multi一族函数的问题:
阅读全文
60 多年前,一群小白程序员扒了一个俄罗斯的开源框架,写了几行漏洞百出的代码,产品上线运营了,30 年后新的 CTO 实在看不下去了,重构了部分代码,但框架依旧是旧的,又过了 30 年新代码和就框架严重不兼容,产品濒临崩溃,用户流失严重。
这时我们该:
1、继续修 bug 打补丁;
2、换个框架重构代码;
3、干脆换掉这些程序猿;
关键是那个开源框架糟烂得很,还没哪个使用它的产品成功过,后来连俄国人自己都抛弃不用了
我看后面后,于是猜测后文的一个注解:Mac Linux[ 毛版],Debian Linux[邓版]  [金版]gentoo Linux,那再发挥下:
当今,Unix/Linux 主流版本在我眼里也就无非四个版本:Mac Linux[ 毛版],Debian Linux[邓版] [金版]Gentoo Linux,[胡版]FreeBsd,分别冠以我们的领导人来命名,Linux的设计思路也很符合他们的理念和哲学,呵呵。By:jackxiang
点击在新窗口中浏览此图片
阅读全文
每一个程序员都有改变世界的梦想,他们不甘平凡,他们想要与众不同,他们想要创立世界上最酷的公司,那具体该如何做呢?风靡全球的《Rework》将告诉你答案。
37signals是一家很特别的公司,他们有很独特的理念。虽然他们的团队只有16人,但他们的几个产品每年都会带来相当可观的利润。他们反对风险投资,反对扩大规模,反对堆砌功能。如果让我用一个词形容他们的话,那就是maverick,在某种程度上他们与乔布斯有相似之处。除了他们的产品外,他们还有一些byproduct: 一个很著名的博客:Signal vs Noise,全世界都为之疯狂的web框架ruby on rails,还有2本书:《getting real》《rework》,今天我就要介绍一下《rework / 重来:更为简单有效的商业思维》这本书。
用一个词形容《rework》这本书就是“短小精悍”,只有130页,你只需要3-4个小时就可以读完,而且书中每一个观点都配了一张图,看起来很轻松,一点都不乏味。我们说“字如其人”,同样的道理,这本书很鲜明反映了37signals这家公司的特点。废话不多说了,我把每个观点都通用一句汉语总结出来了:
轻装上阵
不要被教条所束缚阅读全文
用户有路由器,网站路过交换机,但也有是境会出现 http 400 错误请求,这种现象往往很少发生,但也可能发生。
英文怎么说的:
This error (HTTP 400 Bad Request) means that Internet Explorer was able to connect to the web server, but the webpage could not be found because of a problem with the address.
中文:
此错误 (HTTP 400 坏请求) 意味着 Internet Explorer 是能够连接到 web 服务器,但由于的地址有问题找不到该网页。

在百度知道上有人回答:这是网站的问题,不必担心,变为了最佳答案,如:http://zhidao.baidu.com/question/83711863.html

可能的问题:
但在海量服务时,别人访问Ok,别的地区,海外都Ok,而你访问不行,那你可能还处于城中村的网络中,可能是交换机,也可能是路由器,更可能是防火墙,在http协议头里加入了空格,使这个协议出现不完整,进而返回了400请求,你可以建议该区寻找硬件及硬件配置的问题,为此,这种情况也只能在服务器端对该地的用户http请求头的数据进行抓包来分析其是否符合http协议。如果确定是在路途中给篡改了相关数据,是否可以修改网站的程序进行容错处理(如果你认为该地区很重要),否则,那就点到为此吧,中国是一片神奇的土地,也有神奇的网络,网路结构,要为用户提供好的服务,就看你的产品观和方法手段了,如何服务好你的用户,这是关键,用户没有错,因为有很多用户都生活在城中村里,我们能不能放弃他们,在于我们产品的定位。
mysql的SQL_CALC_FOUND_ROWS 使用:
在很多分页的程序中都这样写:
SELECT COUNT(*) from `table` WHERE ......;   查出符合条件的记录总数
SELECT * FROM `table` WHERE ...... limit M,N; 查询当页要显示的数据
这样的语句可以改成:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE ......   limit M, N;
SELECT FOUND_ROWS();
这样只要执行一次较耗时的复杂查询可以同时得到与不带limit同样的记录条数
第二个 SELECT返回一个数字,指示了在没有LIMIT子句的情况下,第一个SELECT返回了多少行 (若上述的 SELECT语句不包括 SQL_CALC_FOUND_ROWS 选项,则使用LIMIT 和不使用时,FOUND_ROWS() 可能会返回不同的结果)。

参考:
http://blog.chinaunix.net/u/2326/showart_425640.html
  
       半年以前,E71手机在打篮球时不小心给小偷偷了,买了非诺基亚的手机,于是诺基亚的手机套件软件不能使了,一直在思考,如何才能提取我在电脑中的一个备份通讯录,因为里面有一些前大学同学,好友等的资料,但一直没有找到好的方法恢复,But今天在网上找了下,在Sina爱问上找到一个,果然可以把通讯录一个一个的提取,也可以导出为文本文件的方法,自己使用了下,觉得很好,分享一下该Url:
http://ishare.iask.sina.com.cn/f/12418141.html?from=like
  同时也给那些没有积分的用户提供下载地址。
如下:   ,以此希望给那些丢手机后,有备份,但又换成苹果或者google 手机的人带来帮助,Thanks。
看此文写得实在,有实用价值,特转。
阅读全文
   centos 6.0已经正式发布了,做为一个大版本的第一个版本肯定有很多问题,RHEL 6.1早发布修补了很多问题,当然还有增强(或增加)了一些功能,所以真正重要生产服务器还是期待centos 6.1的发布,估计下个月底就会发布。
   http://qaweb.dev.centos.org/qa/dashboard
预计下周会正式发布下载,且centos  5.7 发布也一样
2011-08-26
centos 5.7官方最新消息称最快7-10天内发布
centos 6.1不太顺利,估计要比5.7晚点
2011-09-01
centos 5.7已经发布了,开始同步外部镜像,估计这两天就可以下载
现在已经有部份镜像点有下载了:
http://ftp.twaren.net/Linux/CentOS/5.7/isos
http://centos.mirror.nexicom.net/5.7/isos/
更多的见:
http://www.centos.org/modules/tinycontent/index.php?id=30

按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。centos。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,centos ftp,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。centos和rhel。
centos 6.1预15天左右可供下载,可能还得等,官方更新build包日志:http://qaweb.dev.centos.org/qa/blog  ,感谢CentOS团队无私的奉献。

在centos 6.1发布之前,centos临时发布了CentOS 6.0 CR Repo,有需要的可以下载用于CENTOS 6.0
同时也说明centos 6.1可能会再次跳票(大家都习惯了吧!)
yum install centos-release-cr
yum update
详见:https://www.centos.org/modules/newbb/viewtopic.php?topic_id=33458&forum=53
         http://www.h-online.com/open/news/item/Advance-updates-for-CentOS-6-1-1350302.html
1.模拟Linux下的82端口:[Linux自带的nc (netcat) ]
Suse: netcat -l -p 82
Centos: nc -l localhost 82

参考:http://linux.vbird.org/linux_server/0140networkcommand.php
2.查看某个特定进程的CPU,内存等信息:
top只能看前几位,但是这样就可能看到任意,top -p 进程号,如:


3.tcpdump之监听某个端口:


4.gdb 之调试某个启动后的进程(注意该进程必须编译时加 -g):
通过ps 知道进程号为:16418,这样:

有某个文件的106行停止。

5.尽量在调试C++服务程序时不要用到 -O2,也就是不要用优化,这样更方便GDB调试。

6.善于用ipcs -m查看共享内存:

Eof。
Write -By:jack


实践情况:
端口收到实践:
netcat -l -p 82
gooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygooddaygoodday
root@116.255.139.240:~#  nc -l localhost 82
goodday
端口监听情况:
tcpdump -n -ilo port 82  
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
14:04:10.344635 IP 127.0.0.1.38541 > 127.0.0.1.82: S 3710369840:3710369840(0) win 32767 <mss 16396,sackOK,timestamp 1126784740 0,nop,wscale 2>
14:04:10.344859 IP 127.0.0.1.82 > 127.0.0.1.38541: S 3702073690:3702073690(0) ack 3710369841 win 32767 <mss 16396,sackOK,timestamp 1126784740 1126784740,nop,wscale 2>
近来发现Vps上的内存不够用,是由于Mysql启动后不断扩大内存引起的,于是查了下内存增大原因后,
为了减少内存,为了尽量使其能稳定运行Vps,Mysql内存减少是关键,这样的背景下,
关闭Mysql5.5.8的Innodb引擎,记录步骤如下:
1、stop mysql
2、编辑my.cnf文件[mysqld]下面的配置:
     1)将default-storage-engine=INNODB前的注释掉(#)去掉在[mysqld]下面加入:default-storage-engine = MyISAM
     2)将skip-innodb这行注释(不加上#); 如大版本的Mysql如:Mysql5.5,skip-innodb在Mysql5.5.18中已经改成loose-skip-innodb了!
     3)innodb=OFF
3、在数据库目录中把ibdata1、ib_logfile0、ib_logfile1 这三个文件删掉。也可不用删除,我个人觉得删除保险点儿,呵呵:

4、start mysql:

5.启动时看日志是否真关闭了InnoDB引擎:
这行是关键:111105 10:27:39 [Note] Plugin 'InnoDB' is disabled.
启动日志如下:

6.终端进入Mysql后查看配置后的情况,没有了Innodb:
mysql> show engines;
show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
| storage_engine         | MyISAM |
+------------------------+--------+

7.内存占用明显减少,改动前后:

果然,Innodb还是很耗费内存的,尤其是对一个小内存的Vps机器来说,而最主要是的Innodb还会在运行中消耗比启动时更大的内存,只是为了提高Innodb的性能罢了,所以,我的Vps果断关掉它,而要是自己生产服务器,还是建议打开并使用Innodb,更何况
现在的Mysql默认就是Innodb,在性能上都不是相当不错的。EOF

8.我的配置文件记录,Download Url:


为何要关闭,我是为了减少内存的消耗罢了,引用网上的文章摘录如下:
(1)  Innodb表缓存: Innnodb表有自己的缓存,它保存了从一开始访问每个表的元数据。它们从未被清除过,如果有很多Innodb表的话,那么这个量就很大了。这也就意味着拥有 CREATE TABLE 权限的用户就可能把MySQL服务器的内存耗尽。
(2) MyISAM缓冲:MyISAM表可能会分配一个足以装下指定表最大记录的缓冲,而且这个缓冲直到表关闭了才释放。
MyISAM我要用,Innodb这个我可以不用,所以关闭之,主要是Vps内存太小,这样可以省下不少空间。阅读全文
在我的个人VPS上发现如下SQL:

查了下Google发现是有人想从外网登录Mysql,做了下尝试给Mysql拒绝了,老外解释如下:
“[Warning] IP address ‘XXX.XXX.XXX.XX’ could not be resolved: no reverse address mapping.”

The reverse address mapping is basically requesting from the DNS, “I have this IP address can you give me a domain name associated with this IP address”. The domain name is needed in the login verification i.e. authentication is based on username and host. The host in this case is not an IP address but a host name.

So for example, if the authentication in the server is myuser@localhost, we need to verify that the person is logged on from localhost.

The person logging in will have an identified IP address but not a domain name, so we need to convert the IP address to a domain name. The domain name is then compared along with the username to verify which entry in the mysql.user table should be used to complete verification.

不光是Mysql,连ssh都有人尝试登录:


外网很不安全哇,大家小心为好。
以前我也写过类似的博文,今天也重再抄一个吧:
   日常维护我们经常会遇到某个程序使用了哪些端口,某个端口被哪个程序占用,如何查看呢,下面介绍如下:
对windows系统:通过windows任务管理器找到应用程序,右击“转到进程”,查看进程pid号(如无此列,请在“查看”-“选择列”中添加该列),然后在 cmd命令行下面输入netstat -an -o 然后找到对应的PID号 就能找到端口了。同理,某个端口被哪个程序占用,反查便可。注:有时netstat -na -o查出内容太多,不易找到pid,可通过重定向到txt文件(>pid.txt)查找。
对linux系统:查看某程序使用端口,在控制台输入netstat -na -p |grep  pid/program name,便可;查看某端口被程序占用,在控制台输入lsof -i tcp:port或netstat -na -p |grep port便可。

当然,以上也可以通过cport或sv等端口查看工具查看。如:
在桌面新建一个文本文档, 重新命名为《清理虚拟内存.bat 》。

右键点击, 编辑, 复制以下文字:
title=正在清理虚拟内存文件...
Del /a/f/q "%HomeDrive%\PageFile.sys"
cls

关闭保存文件就OK了。  想用的时候一点击它就会自动清理虚拟内存,  非常方便实用。

实践:
用wholockme强制删除,解锁删除,出现蓝屏,而不删除好像文件都近2G。
Del /a/f/q "c:\PageFile.sys" 这样好像依旧不行。。。

下面方法有时间再试试:如何删除windos xp pagefile.sys文件?
http://blog.vsharing.com/jekkon/A1021127.html
删除方法:
在"我的电脑"右键"属性"-->"高级"-->"性能"->"高级"-->"虚拟内存"中更改它的大小为0之后,重新启动就会发现该文件没有了。
文件作用:
如果计算机在较低的 RAM 下运行,并且立即需要更多 RAM,则 Windows 会用硬盘空间来模拟系统 RAM。这叫做虚拟内存,通常称为页面文件。也就由于虚拟内存的设定产生了pagefile.sys文件。通过上面的文字不难看出,虚拟内存的设定对于自己计算机的性能在一定成都上面是有好处的。所以这里我建议大家还是保留虚拟内存。甚至可以扩大虚拟内存的容量。
正确设置虚拟内存:
注意:以下所说的页面文件就是只自己设定的虚拟内存
尽量避免将页面文件和系统文件置于同一驱动器上。
避免将页面文件放入容错驱动器,例如镜像卷或 RAID-5 卷。页面文件无需容错,而且有一些容错系统的数据写操作会减慢,因为它们需将数据写到多个位置。
不要在同一物理磁盘驱动器中不同的分区上放置多个页面文件。
您可以进行选择以便优化计算机的内存使用情况。如果计算机主要用作工作站,而不是服务器,则可将更多的内存分配给程序。程序将运行得更快,系统缓存的大小将达到 Windows 提供的默认大小。如果计算机主要用作服务器,或所用的程序要求较大的缓存,那么可选择给较大的系统缓存留出更多的计算机内存。
分页: 123/339 第一页 上页 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 下页 最后页 [ 显示模式: 摘要 | 列表 ]