一个usb系统,其控制芯片的程序是C写的,现在想加入温度传感器,已有现成的汇编代码(伟纳ME300A+产品提供)
阅读全文
TEMPL DATA 26H
TEMPH DATA 27H
FLAG1 EQU 38H ;是否有ds18b20
DATE_LINE EQU P3.6 ;接到ds18b20数据线引脚
;**************************************************
ORG 0000H
MAIN: MOV SP,#30H
START: CALL RESET
SETB P3.2
CALL RESET
JNB FLAG1,MAIN
MOV A,#0CCH ; 跳过ROM匹配
CALL WRITE
MOV A,#044H ; 发出温度转换命令
CALL WRITE
CALL RESET
MOV A,#0CCH ; 跳过ROM匹配
CALL WRITE
MOV A,#0BEH ; 发出读温度命令
CALL WRITE
CALL READ ; 将读出的温度数据保存到26H/27H
;CALL CONVTEMP
;CALL DISPBCD
;CALL DISP1
JMP MAIN
;*************************************************
RESET: SETB DATE_LINE
NOP
CLR DATE_LINE
MOV R0,#0D6H ;主机发出延时642微秒的复位低脉冲
MOV R1,#03H
TSR1: DJNZ R0,$
MOV R0,#0D6H
DJNZ R1,TSR1
SETB DATE_LINE ;然后拉高数据线
NOP
NOP
NOP
MOV R0,#4AH
TSR2: JNB DATE_LINE,TSR3 ;等待DS18B20回应
DJNZ R0,TSR2
JMP TSR4 ; 延时
TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在
JMP TSR5
TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在
JMP TSR7
TSR5: MOV R0,#06BH
TSR6: DJNZ R0,$ ; 时序要求延时一段时间
TSR7: SETB DATE_LINE
RET
;********************************************************************
WRITE: MOV R2,#8 ;一共8位数据
CLR CY
WR1:
CLR DATE_LINE ;开始写入DS18B20总线要处于复位(低)状态
MOV R3,#10
DJNZ R3,$ ;总线复位保持16微妙以上
RRC A ;把一个字节DATA 分成8个BIT环移给C
MOV DATE_LINE,C ;写入一个BIT
MOV R3,#2EH
DJNZ R3,$ ;等待46微妙
SETB DATE_LINE ;重新释放总线
NOP
DJNZ R2,WR1 ;写入下一个BIT
SETB DATE_LINE
RET
;******************************************************
READ: MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
MOV R1,#26H ; 存入26H 27H
RE00: MOV R2,#8
RE01: CLR CY
SETB DATE_LINE
NOP
NOP
CLR DATE_LINE ;读前总线保持为低
NOP
NOP
NOP
SETB DATE_LINE ;开始读总线释放
MOV R3,#18 ;延时18微妙
DJNZ R3,$
MOV C,DATE_LINE ;从DS18B20总线读得一个BIT
MOV R3,#46
DJNZ R3,$ ;等待46微妙
RRC A ;把读得的位值环移给A
DJNZ R2,RE01 ;读下一个BIT
MOV @R1,A
INC R1
DJNZ R4,RE00
RET
END
TEMPH DATA 27H
FLAG1 EQU 38H ;是否有ds18b20
DATE_LINE EQU P3.6 ;接到ds18b20数据线引脚
;**************************************************
ORG 0000H
MAIN: MOV SP,#30H
START: CALL RESET
SETB P3.2
CALL RESET
JNB FLAG1,MAIN
MOV A,#0CCH ; 跳过ROM匹配
CALL WRITE
MOV A,#044H ; 发出温度转换命令
CALL WRITE
CALL RESET
MOV A,#0CCH ; 跳过ROM匹配
CALL WRITE
MOV A,#0BEH ; 发出读温度命令
CALL WRITE
CALL READ ; 将读出的温度数据保存到26H/27H
;CALL CONVTEMP
;CALL DISPBCD
;CALL DISP1
JMP MAIN
;*************************************************
RESET: SETB DATE_LINE
NOP
CLR DATE_LINE
MOV R0,#0D6H ;主机发出延时642微秒的复位低脉冲
MOV R1,#03H
TSR1: DJNZ R0,$
MOV R0,#0D6H
DJNZ R1,TSR1
SETB DATE_LINE ;然后拉高数据线
NOP
NOP
NOP
MOV R0,#4AH
TSR2: JNB DATE_LINE,TSR3 ;等待DS18B20回应
DJNZ R0,TSR2
JMP TSR4 ; 延时
TSR3: SETB FLAG1 ; 置标志位,表示DS1820存在
JMP TSR5
TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在
JMP TSR7
TSR5: MOV R0,#06BH
TSR6: DJNZ R0,$ ; 时序要求延时一段时间
TSR7: SETB DATE_LINE
RET
;********************************************************************
WRITE: MOV R2,#8 ;一共8位数据
CLR CY
WR1:
CLR DATE_LINE ;开始写入DS18B20总线要处于复位(低)状态
MOV R3,#10
DJNZ R3,$ ;总线复位保持16微妙以上
RRC A ;把一个字节DATA 分成8个BIT环移给C
MOV DATE_LINE,C ;写入一个BIT
MOV R3,#2EH
DJNZ R3,$ ;等待46微妙
SETB DATE_LINE ;重新释放总线
NOP
DJNZ R2,WR1 ;写入下一个BIT
SETB DATE_LINE
RET
;******************************************************
READ: MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
MOV R1,#26H ; 存入26H 27H
RE00: MOV R2,#8
RE01: CLR CY
SETB DATE_LINE
NOP
NOP
CLR DATE_LINE ;读前总线保持为低
NOP
NOP
NOP
SETB DATE_LINE ;开始读总线释放
MOV R3,#18 ;延时18微妙
DJNZ R3,$
MOV C,DATE_LINE ;从DS18B20总线读得一个BIT
MOV R3,#46
DJNZ R3,$ ;等待46微妙
RRC A ;把读得的位值环移给A
DJNZ R2,RE01 ;读下一个BIT
MOV @R1,A
INC R1
DJNZ R4,RE00
RET
END
阅读全文
两年来的投资使我经历了股市的牛熊更迭,基市的跌宕起伏,可以说这样的经历对于每个投资者来说既是不幸的,又是幸运的。说它是不幸的,因为多数的投资者都没躲过这场劫难;说它是幸运的,因为以前投资者可能要十年八年才能获得经验的机会,现在两年就呈现给了你!关键看你有没有吸取教训,总结和反思经验教训!
经验之一:贪婪者死!
虽说人都是受利益驱动的,大家投资也好、理财也好目的都是为了钱,也可以说为了生活的更好,钱固然很重要,但钱不是生活得好的唯一标准,好的生活还需要许多其他的东西来充实!人如果把追求金钱作为唯一的目标,那么就会形同槁木,或者因过度追求金钱,贪恋与金钱而自我毁灭!只有你的贪婪有限,能够正视投资、理财,正视金钱,你才能保持良好心态,纵横于基金的王国!理性客观地作出自己的判断!
阅读全文
经验之一:贪婪者死!
虽说人都是受利益驱动的,大家投资也好、理财也好目的都是为了钱,也可以说为了生活的更好,钱固然很重要,但钱不是生活得好的唯一标准,好的生活还需要许多其他的东西来充实!人如果把追求金钱作为唯一的目标,那么就会形同槁木,或者因过度追求金钱,贪恋与金钱而自我毁灭!只有你的贪婪有限,能够正视投资、理财,正视金钱,你才能保持良好心态,纵横于基金的王国!理性客观地作出自己的判断!
阅读全文
http://www.phpchina.com/html/68/n-34068.html
很多程序员在干了两三年后,会有一阵子的迷惘,他们在想,我这样子的算是优秀的程序员吗?这日子一天一天的过,每天不断的重复,也不知道干了些什么。其实当你有这个迷惘的时候,证明你最少是一个熟手了,不是刚毕业那会,急着工作,什么都不会,凡事现学,那时候想不到这个问题。当你做了两三年,公司里的项目基本都对你不陌生了,你也算是这个公司的老人了,对于写代码完成任务,非常容易了。这个时候人很容易感到厌倦,弄来弄去还是这点东西,没劲啊。这个时候特想知道别人是怎么过来的,别人每天都在干吗。我是不是要学点新的东西了呢。
阅读全文
阅读全文
以PHP同事突然问我这个问题,呵呵,记录一下:
方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
方法二: dbcc checkident ('table_name', reseed, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。
方法二 不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
truncate table 表名
方法二: dbcc checkident ('table_name', reseed, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。
方法二 不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
转载来源:http://www.160km.com/bear/?p=103
javascript对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。天空
例如:<script language=”javascript”>document.write(’<a href=”http://www.160km.com/?logout&aid=7& u=’+encodeURIComponent(”http://www.160km.com/bruce42″)+’”>退出</a& gt;’);</script>
2、 进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI(”http://www.160km.com/do/s?word=小福&ct=21″);
3、 js使用数据时可以使用escape
例如:搜藏中history纪录。
4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,’,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z
javascript对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。天空
例如:<script language=”javascript”>document.write(’<a href=”http://www.160km.com/?logout&aid=7& u=’+encodeURIComponent(”http://www.160km.com/bruce42″)+’”>退出</a& gt;’);</script>
2、 进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI(”http://www.160km.com/do/s?word=小福&ct=21″);
3、 js使用数据时可以使用escape
例如:搜藏中history纪录。
4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,’,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z
最近,手机费用暴涨,我得查查短信为何这么多,进入移动网站,得到一个短信清单如下:
短信费 81.05
彩信费 1.80
GPRS流量费 273.33
本地基本话费 1.99
国内长途费 28.03
必选套餐费 20.00
福娃音乐计划套餐费 6.00
费用合计 412.20
短信总记录数 1114
免费短信记录数 300
重点查短信:
发送时间 通信类型 对方号码 基本通话费
短信条数 短信号码
两个大头,共发短信552:
得到完美的结论。。。呵呵呵!
去掉重复的QQ号码,(一个号码一行):
短信费 81.05
彩信费 1.80
GPRS流量费 273.33
本地基本话费 1.99
国内长途费 28.03
必选套餐费 20.00
福娃音乐计划套餐费 6.00
费用合计 412.20
短信总记录数 1114
免费短信记录数 300
重点查短信:
发送时间 通信类型 对方号码 基本通话费
11月01日00:00:33 普通短信 861377489428* 0.00
11月01日00:01:16 普通短信 861358196226* 0.00
11月01日00:04:53 普通短信 861377489428* 0.00
11月01日00:08:03 普通短信 861386815989* 0.00
通过editplus按住:alt+鼠标选取出号码,丢如Linux,通过命令:cat mobile.txt|sort > mobile_number11月01日00:01:16 普通短信 861358196226* 0.00
11月01日00:04:53 普通短信 861377489428* 0.00
11月01日00:08:03 普通短信 861386815989* 0.00
cat mobile.txt |sort |uniq -c
短信条数 短信号码
65 861350110466*
44 861365766558*
94 861377489428*
10 861381000687*
239 861386815989*
44 861365766558*
94 861377489428*
10 861381000687*
239 861386815989*
两个大头,共发短信552:
[xiangdong2@101/udp mobile]$ cat sort_mobile_number.txt |grep 861358196226*|wc
313 313 4695 这是**的
[xiangdong2@101/udp mobile]$ cat sort_mobile_number.txt |grep 861386815989*|wc
239 239 3585 这个是**点的
313 313 4695 这是**的
[xiangdong2@101/udp mobile]$ cat sort_mobile_number.txt |grep 861386815989*|wc
239 239 3585 这个是**点的
得到完美的结论。。。呵呵呵!
去掉重复的QQ号码,(一个号码一行):
cat qqyellow.txt |sort|uniq -c
1.Linux下关闭和开启防火墙
1) 重启后生效
2) 即时生效,重启后失效
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 字串6
2.查看防火墙:
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
关闭: service iptables stop
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 字串6
[root@101/udp socket_interface]# /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
2.查看防火墙:
iptables -L
1.下载程序:
去这个网站下载:http://www.it-adv.net/index.php?action=downloads,然后:LINUX X86/32版全新发布fetion20080910048-linux.tar.gz,下载地址:
http://www.it-adv.net/fetion/download/fetion20080910048-linux.tar.gz
如果是64位的请下载:LINUX X86/64版全新发布fetion20080910047-lin64.tar.gz
下载地址:
http://www.it-adv.net/fetion/download/fetion20080910047-lin64.tar.gz
2.下载链接库库:
LINUX X86/32支持库下载:解压到同级目录,以LD_LIBRARY_PATH=. ./fetion的形式运行
下载地址:
http://www.it-adv.net/fetion/library32.rar
解压到:/home/xiangdong2/sms/library32
如果是64位的请下载:
LINUX X86/64支持库下载:解压到同级目录,以LD_LIBRARY_PATH=. ./fetion的形式运行
http://www.it-adv.net/fetion/library64_linux.tar.gz
export LD_LIBRARY_PATH=/home/xiangdong2/sms/library32 //这一步很重要,添加链接库到环境变量LD_LIBRARY_PATH中
cd install #注:自动解到install目录
./fetion -u xxxxxxxx #运行即可 -u 后面为您的飞信账号,如:
登陆... 服务器返回数据中无法定位sipc-proxy
这个问题我也不清楚,呵呵!
你也可以把:/home/xiangdong2/sms/library32 的所有的东西放到fetion的目录里面,然后直接运行:

web飞信:
http://www.websafeguard.cn/webfetion/
资料:
telnet 221.176.31.36 8080
把那两个lib文件cp到lib目录下:直接运行:./fetion
netstat -ntp:
正确应该是:
tcp 0 0 10.1.27.61:33684 221.176.31.36:8080 ESTABLISHED 968/fetion
Debug:
LD_LIBRARY_PATH=. ./fetion -u 13811461081 -p 001002 -d
在当前目下生成:13811461081_debug.log 类似文件名称!
FreeBSD:
FreeBSD的支持库直接从ports安装揪可以: cd /usr/ports/devel/ace && make install clean
下载:FreeBSD最新程序:freebsd 版飞信 20081128
地址:http://www.it-adv.net/fetion/fetion_freebsd_20081128.tar.gz
如下:
下载cacti 插件.
cacti 页面导入插件
将应用程序解压到/data/monitor/目录
将支持库直接解压到/data/monitor/目录
cp lib*so* /usr/lib/
ln -s /usr/lib/libcrypto.so.0.9.7a /usr/lib/libcrypto.so.4
ln -s /usr/lib/libssl.so.0.9.7a /usr/lib/libssl.so.4
以下配置为linux 配置。freebsd 中没有配置也一样可以运行
设定lib库配置文件
#vi /etc/ld.so.conf
#增加一条
/usr/lib/
#保存退出后,执行
#ldconfig
先编译麻烦:
pkg_add -r ace
站长提供的是在:freebsd7.0开发的一个二进制文件,6.2的容易出现问题啊。。!
去这个网站下载:http://www.it-adv.net/index.php?action=downloads,然后:LINUX X86/32版全新发布fetion20080910048-linux.tar.gz,下载地址:
http://www.it-adv.net/fetion/download/fetion20080910048-linux.tar.gz
如果是64位的请下载:LINUX X86/64版全新发布fetion20080910047-lin64.tar.gz
下载地址:
http://www.it-adv.net/fetion/download/fetion20080910047-lin64.tar.gz
2.下载链接库库:
LINUX X86/32支持库下载:解压到同级目录,以LD_LIBRARY_PATH=. ./fetion的形式运行
下载地址:
http://www.it-adv.net/fetion/library32.rar
解压到:/home/xiangdong2/sms/library32
如果是64位的请下载:
LINUX X86/64支持库下载:解压到同级目录,以LD_LIBRARY_PATH=. ./fetion的形式运行
http://www.it-adv.net/fetion/library64_linux.tar.gz
export LD_LIBRARY_PATH=/home/xiangdong2/sms/library32 //这一步很重要,添加链接库到环境变量LD_LIBRARY_PATH中
tar xzf fetion200XXXXXXXX-linux.tar.gz
cd install #注:自动解到install目录
./fetion -u xxxxxxxx #运行即可 -u 后面为您的飞信账号,如:
./fetion -u 660157287
请输入密码:登陆... 服务器返回数据中无法定位sipc-proxy
这个问题我也不清楚,呵呵!
你也可以把:/home/xiangdong2/sms/library32 的所有的东西放到fetion的目录里面,然后直接运行:
LD_LIBRARY_PATH=. ./fetion -u 660157287 -p ****密码****
LD_LIBRARY_PATH=. ./fetion -u 13811461081 -p ****密码****

web飞信:
http://www.websafeguard.cn/webfetion/
资料:
telnet 221.176.31.36 8080
把那两个lib文件cp到lib目录下:直接运行:./fetion
netstat -ntp:
正确应该是:
tcp 0 0 10.1.27.61:33684 221.176.31.36:8080 ESTABLISHED 968/fetion
Debug:
LD_LIBRARY_PATH=. ./fetion -u 13811461081 -p 001002 -d
在当前目下生成:13811461081_debug.log 类似文件名称!
FreeBSD:
FreeBSD的支持库直接从ports安装揪可以: cd /usr/ports/devel/ace && make install clean
下载:FreeBSD最新程序:freebsd 版飞信 20081128
地址:http://www.it-adv.net/fetion/fetion_freebsd_20081128.tar.gz
如下:
下载cacti 插件.
cacti 页面导入插件
将应用程序解压到/data/monitor/目录
将支持库直接解压到/data/monitor/目录
cp lib*so* /usr/lib/
ln -s /usr/lib/libcrypto.so.0.9.7a /usr/lib/libcrypto.so.4
ln -s /usr/lib/libssl.so.0.9.7a /usr/lib/libssl.so.4
以下配置为linux 配置。freebsd 中没有配置也一样可以运行
设定lib库配置文件
#vi /etc/ld.so.conf
#增加一条
/usr/lib/
#保存退出后,执行
#ldconfig
先编译麻烦:
pkg_add -r ace
站长提供的是在:freebsd7.0开发的一个二进制文件,6.2的容易出现问题啊。。!
**rvinzhou(周*飞) 14:28:27
波波 请教个问题 你晓得一个php请求 在服务器上占用多少内存 这个有办法查的吗
jackxiang(向东) 14:30:23
$a = memory_get_usage(); Bytes为单位。
也就是当时 PHP 脚本使用的内存(不含 memory_get_usage() 函数本身占用的内存)
由下面的例子可以看出,要想减少内存的占用,可以使用 PHP unset() 函数把不再需要使用的变量删除(下面就是测试真的销毁了没)。类似的还有:PHP mysql_free_result() 函数,可以清空不再需要的查询数据库得到的结果集,这样也能得到更多可用内存。
PHP memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。默认为 FALSE,表示得到的内存使用量不包括该函数(PHP 内存管理器)占用的内存;当设置为 TRUE 时,得到的内存为不包括该函数(PHP 内存管理器)占用的内存。
所以在实际编程中,可以用PHP memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。
阅读全文
波波 请教个问题 你晓得一个php请求 在服务器上占用多少内存 这个有办法查的吗
jackxiang(向东) 14:30:23
$a = memory_get_usage(); Bytes为单位。
也就是当时 PHP 脚本使用的内存(不含 memory_get_usage() 函数本身占用的内存)
由下面的例子可以看出,要想减少内存的占用,可以使用 PHP unset() 函数把不再需要使用的变量删除(下面就是测试真的销毁了没)。类似的还有:PHP mysql_free_result() 函数,可以清空不再需要的查询数据库得到的结果集,这样也能得到更多可用内存。
PHP memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。默认为 FALSE,表示得到的内存使用量不包括该函数(PHP 内存管理器)占用的内存;当设置为 TRUE 时,得到的内存为不包括该函数(PHP 内存管理器)占用的内存。
所以在实际编程中,可以用PHP memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。
<?php
for ( $i = 1; $i < 100; $i++ ) {
$str = str_repeat('01234567', $i);
$a = memory_get_usage();
unset($str);
echo $str;
$b = memory_get_usage();
echo "\n<br />".$i.': '.($b - $a).' Bytes.';
}
?>
for ( $i = 1; $i < 100; $i++ ) {
$str = str_repeat('01234567', $i);
$a = memory_get_usage();
unset($str);
echo $str;
$b = memory_get_usage();
echo "\n<br />".$i.': '.($b - $a).' Bytes.';
}
?>
<br />10: 0 Bytes.
<br />11: 0 Bytes.
<br />12: 0 Bytes.
<br />13: 0 Bytes.
<br />14: 0 Bytes.
<br />15: 0 Bytes.
<br />16: 0 Bytes.
<br />17: -148 Bytes.
<br />18: -156 Bytes.
<br />19: -164 Bytes.
<br />20: -172 Bytes.
<br />21: -180 Bytes
<br />11: 0 Bytes.
<br />12: 0 Bytes.
<br />13: 0 Bytes.
<br />14: 0 Bytes.
<br />15: 0 Bytes.
<br />16: 0 Bytes.
<br />17: -148 Bytes.
<br />18: -156 Bytes.
<br />19: -164 Bytes.
<br />20: -172 Bytes.
<br />21: -180 Bytes
阅读全文
第一种方法:$varname=null
第二种方法:unset($varname)
代码:
结果:
第二种方法:unset($varname)
代码:
<?php
$a = array(
'a' => 'a',
'b' => 'b'
);
$b = array(
'a' => 'a',
'b' => 'b'
);
$a['b'] = null;
unset($b['b']);
print('<pre>');
print_r($a);
print('<br />');
print_r($b);
print('</pre>');
?>
$a = array(
'a' => 'a',
'b' => 'b'
);
$b = array(
'a' => 'a',
'b' => 'b'
);
$a['b'] = null;
unset($b['b']);
print('<pre>');
print_r($a);
print('<br />');
print_r($b);
print('</pre>');
?>
结果:
Array
(
[a] => a
=>
)
Array
(
[a] => a
)
(
[a] => a
=>
)
Array
(
[a] => a
)
访问世纪流年BLOG站时看到的一段文字,对设计模式的解释很风趣,能够让人很快的了解其含义,学到了不少东西,以下是文章的内容:
对设计模式很有意思的诠释,呵呵,原作者不详。
我来添加一句:世纪流年就是现在thinkPHP的原作者,我读大学的时候找他要到过前世纪流年BLOG站的模板!
阅读全文
对设计模式很有意思的诠释,呵呵,原作者不详。
我来添加一句:世纪流年就是现在thinkPHP的原作者,我读大学的时候找他要到过前世纪流年BLOG站的模板!
阅读全文
# cat stream
#! /bin/bash
# Write by Neil.xu qq:37391319 email: xurongzhong@gmail.com
# 2008-8-19 we need to monitor streams of LTS channels, so write this script
typeset in in_old dif_in dif_in1 dif_out1
typeset out out_old dif_out
in_old=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $1 }' )
out_old=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $9 }')
while true
do
sleep 1
in=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $1 }')
out=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $9 }')
dif_in=$((in-in_old))
dif_in1=$((dif_in * 8 / 1024 / 1024 ))
dif_out=$((out-out_old))
echo " IN: ${dif_in} bytes OUT: ${dif_out} bytes "
dif_out1=$((dif_out * 8 / 1024 / 1024 ))
echo "IN: ${dif_in1} mbps OUT: ${dif_out1} mbps"
in_old=${in}
out_old=${out}
done
#! /bin/bash
# Write by Neil.xu qq:37391319 email: xurongzhong@gmail.com
# 2008-8-19 we need to monitor streams of LTS channels, so write this script
typeset in in_old dif_in dif_in1 dif_out1
typeset out out_old dif_out
in_old=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $1 }' )
out_old=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $9 }')
while true
do
sleep 1
in=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $1 }')
out=$(cat /proc/net/dev | grep eth0 | sed 's=^.*:==' | awk '{ print $9 }')
dif_in=$((in-in_old))
dif_in1=$((dif_in * 8 / 1024 / 1024 ))
dif_out=$((out-out_old))
echo " IN: ${dif_in} bytes OUT: ${dif_out} bytes "
dif_out1=$((dif_out * 8 / 1024 / 1024 ))
echo "IN: ${dif_in1} mbps OUT: ${dif_out1} mbps"
in_old=${in}
out_old=${out}
done
startkde :可以成功.请教: 为什么startx不能起? gnome-session &
http://forum.nokia.com.cn/sch/index.html
http://nokia.it168.com/forum-88-1.html
http://nokia.it168.com/forum-88-1.html
最近在做公司的服务器网络监控。由于要做到实时监控,所以想到要用发送短信到手机的方式。在网上找到一个linux命令行下的飞信工具。来配合 nagios做监控。服务器有任何状况都可以发送短信到手机上。这样对于系统管理者来说很是方便。我在Debian和Ubuntu下测试成功。下面是飞信在debian系统的安装过程。
1.首先手机要开通中国移动的飞信业务。目前使用飞信发送短信是免费的。
2.下载飞信的linux客户端程序.解开包后只有一个文件sms。不错。这个就是飞信发送短信的程序啦。现在的飞信还是不能用的。因为它需要libace的glibc库的支持。
阅读全文
1.首先手机要开通中国移动的飞信业务。目前使用飞信发送短信是免费的。
2.下载飞信的linux客户端程序.解开包后只有一个文件sms。不错。这个就是飞信发送短信的程序啦。现在的飞信还是不能用的。因为它需要libace的glibc库的支持。
阅读全文





