杨晖's profileMy WayPhotosBlogLists Tools Help

晖 杨

Occupation
Interests

My Way

偶尔翻起了日记 翻起了你我之间的故事
May 21

ip checksum

在发送数据时,为了计算数IP据报的校验和。应该按如下步骤:
    (1)把IP数据报的首部都置为0,包括校验和字段。
    (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。
    (3)把得到的结果存入校验和字段中。
    在接收数据时,计算数据报的校验和相对简单,按如下步骤:
    (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段。
    (2)检查计算出的校验和的结果是否等于零。
    (3)如果等于零,说明被整除,校验是和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。
May 20

Big-endian和Little-endian

http://dev.csdn.net/article/60/60401.shtm

简而言之:
Big endian machine: It thinks the first byte it reads is the biggest.
Little endian machine: It thinks the first byte it reads is the littlest.
举个例子,从内存地址0x0000开始有以下数据
 0x0000     0x12
 0x0001     0x34
 0x0002     0xab
 0x0003     0xcd
如果我们去读取一个地址为0x0000的四个字节变量,若字节序为big-endian,则读出
结果为0x1234abcd;若字节序位little-endian,则读出结果为0xcdab3412.
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
                big-endian     little-endian
0x0000     0x12              0xcd
0x0001     0x23              0xab
0x0002     0xab              0x34
0x0003     0xcd              0x12
x86系列CPU都是little-endian的字节序.

December 06

最近在忙啥?

做了一些以前自己没做过的事情,写一个后台server,涉及到对item的批价和发货,从其他server接受数

据,然后接受数据再去另外一个server发送命令开通服务,其中涉及到跨部门的沟通很多,每遇到一个

部门间合作的问题几乎都需要打电话去催,“这个请求我怎么没收到?是不是你那边配置问题?”,“不好

意思,我们这边改了一下服务端口,你们那边需要更新下。。。。。”,于是时间就拖了下来。。。,自

己也在慢慢摸索对于网络编程的认知,公司wiki刚刚上线,大牛们就在上面发了很多资料,够自己消化

一段时间了。
这周末好好休息下,前2周都在忙,连杀人都没力气了.....

November 25

推荐一本书:Mastering Regular Expressions

之前很长时间对正则表达式的理解都停留在一些简单的例子上,要用的时候就去google,搜出一堆表达式来琢磨,琢磨了半天发觉读不懂,于是放弃,能用就行,这不是一个好的学习态度。突然有一天我看到了此书。。。。。。,二话没说就买了下来。
此书从正则表达式的匹配原理出发,对正则表示式的方方面面进行了阐述,从古老的DFA到现在的NFA,从强大的perl到现在的.net2.0中对regex的使用,都说的很详细,尤其是对正则表达式匹配原理的剖析,可以让你对regex有更深的认识。
今天在公司加班,要对qq号码按照规则进行分类,就用到了regex,几乎所有的规则都可以用regex匹配完成,通过括号和反向引用都能完成,这里给出几个例子,请大家帮我看看写的对不对:,
1.9位号码带有2个aaa :\d*(\d)\1{2}\d*\1{3}\d*
2.9位,13开头,aabb,不带4:^13\d*([0-35-9])\1([0-35-9])\2\d*
3.9位,带有ababab:\d*(\d\d)\1{2}\d*
上面都是很简单的例子,有复杂的,比如
9位,ABCDDECBA:要求E=D+1=C+2=B+3=A+4
请问这个可以单纯地使用regex匹配出来吗?
 
November 23

硬盘被我填满了

周二凌晨5点才从三亚度假回来,结果这两天一直在跟睡神做斗争。
这几天一直在写一个server程序,第一次写,也是按照别人的代码依葫芦画瓢,结果在test时候log以每秒30m的速度占领硬盘,大家意识到的时候先想到把自己的数据清理一下,后来辛辛苦苦清理了一下,发现马上硬盘空间又变为0了,最后我du一下我的目录,omg,居然有56g,后来发现是log文件太大了,于是不管怎么样,先kill掉进程再说把,rm日志也要了很长的时间,汗~~~~~~,core文件居然也有18m。对新手来说也是一次难忘的经历吧。。。。。。。。。。。
晚上回来实在太累,看了一会儿apue睡神就来了,洗了澡后倒头就睡,结果今天还没到7点就醒了,于是想起昨天写blog时候ie突然down掉,于是补之。
November 14

tips:about CR/LF

CR:Carriage Return(回车)

LF:Line Feed(换行)

windows use CR/LF to terminate line,*nix use LF,MAC uses CR.

if you tranfer windows file to unix.sometimes, you can see ^M at the end of each line in the file. ^M is CR sign in unix.

you can use tr or sed command to solve this problem.

windows -> Unix

tr -d '\r' < oldfile > newfile

sed 's/.$//'

Unix->windows

sed -e 's/$/\r/' myunix.txt > mydos.txt

in VIM

:set ff:show the file format.

:set ff=unix:set the file format to unix.

php类基础简介

昨天简要地介绍了一下php的对象模型,今天主要介绍php类的一些基础知识

1.构造函数__construct,析构函数__destruct,构造函数可以传参,而析构函数不能。同时,构造函数不能重载。

2.析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。

$test = NULL;unset($test)都会调用析构函数。

3.php中的拷贝构造函数:__clone.

从网上看到的下列代码,大家看看输出是什么?

PHP代码如下:
未命名图片

 
There are no music lists on this space.