类别:晴天の女程序员 | October 22nd, 2009
最近的工作是进行程序由 SUN SPARC 向 Intel X86 移植的工作,多数问题都出现在网络字节序的部分,所以拿出来在这部分工作中使用频率较高的几个接口区分比较下:) ntohs =net to host short int 16位 htons=host to net short int 16位 ntohl =net to host long int 32位 htonl=host to net long int 32位 ntohs 简述: 将一个无符号短整形数从网络字节顺序转换为主机字节顺序。 #include u_short PASCAL FAR ntohs( u_short netshort); netshort:一个以网络字节顺序表达的16位数。注释: 本函数将一个16位数由网络字节顺序转换为主机字节顺序。返回值:ntohs()返回一个以主机字节顺序表达的数。 htons 简述: 将主机的无符号短整形数转换成网络字节顺序。 #include u_short PASCAL FAR [...]
类别:晴天の女程序员 | February 10th, 2009
我得blog似乎真的成了月季,不是玫瑰花…这笑话真寒 -_-! 最近白天每天都要跟bug作斗争,gdb技术倒是娴熟了不少,以后debug要逼迫自己不添加打印信息而是使用gdb ^_^ 今天用SVN打标签,发觉本地windows上的代码似乎不是要打标签的代码的全部,所以也就不能用 Branch/Tag 选项了,因为这个功能的 “From WC at URL”是不能更改的,这样如果你要打标签的代码只有部分在你的windows上,就糟糕了,你所打的tag必然会有部分代码缺失… 不过也不用很麻烦的去把你要打标签的所有代码都co到本地,你可以使用 Repositery Browser 功能。 步骤如下: 1、SVN 右键选择 Repositery Browser,这里你可以看到版本库中所有的文件夹 2、选择你要打标签的文件夹 3、右键选择 copy to… 选项 4、在 New Name 输入框中输入你要打的新标签的名字 5、确认后OK,恭喜新标签生成! 注:对于版本名称要求比较规范的小平友们,可以在第2步之前到 tags 的文件夹下选择一个类似的tag name的URL,这样在步骤4的时候就便于统一啦o(∩_∩)o… 好啦,嘿嘿,又不知道今天晚上吃啥呢!哼哼~~继续debug~~晕乎乎~~
类别:晴天の女程序员 | September 23rd, 2008
今天公司的数据库被搞挂了,所以我的单元测试也无法进行了… 不过利用今天一天的时间对所理解的Common A**做了一边回顾,发现经过这次的程序调试,自己居然对C A 的认识有了一个质的飞跃哦!基本上对MSG的流程有了一个清晰的思路,对多进程编程也有了很多的了解。总得来说,还是很有成就感的啦!o(∩_∩)o…哈哈 对于一个1W+行的code,附加复杂的业务流程,经过单元测试,再调试,对于一个新手儿来说无疑是受益匪浅啊!导师说,其实我这个任务,不能简单的说成完全的单元测试,而应该是程序的开发,并行单元测试。^_^让我很有面子的说法咧~ 昨天买了双红色漆皮的路伴,恩,个人还是很喜欢的啦,红色拉带,还有手工皮花,看起来很卡的感觉,hoho~感觉就像是小时候穿的那种小皮鞋一样,圆圆的小头,有可爱的带子:) 这周要上7天的班咧,加油,加油,还有股市加油,加油,争取7天涨停,恩,对!!这样才能弥补广大人民的伤痛啊~~
类别:晴天の女程序员 | September 18th, 2008
看来以后我都是阶段性的写写blog了…哎~ 最近一直都沉浸在与BUG的明争暗斗中,昨天下午发现了个很阴险的bug,系统既不报错,也不出core,就是在那傻傻的wait…我这个汗啊~ 调吧,按着设计思路一点一点查,转眼到了今天,早上继续查,迷迷糊糊的就感觉不对劲,再仔细一看,我都从我的功能模块查到了别的模块里面了…囧… 这可怎么办啊,就是什么也没发现啊~跟踪调试吧,一条一条的打印,管他什么过程的,所有函数都加上debug_msg,一个来回下来,就只见满屏的log啊…慢慢看吧,突然在不打眼的地方发现了一个状态值很诡异的从2转变成了0,让我这个乐和啊,乐和~可再一看,这两个函数动作之间好像没有其它行为了啊…再囧… 找来牛人问,寻思着,我也不能老师闭门造车啊,向先进文化学习吧,没想到,牛人说,“恩,很奇怪,很奇怪,真的没有动作了啊,怎么就变了呢?”还满脸狐疑的看着我…我只能遥遥头,说:恩,真奇怪,真奇怪… 后来干脆,不调了,把程序重头到尾重新屡屡思路,看看能不能像 柯南,包拯 啥的,不经意之间发现了真相!可惜结果很令我失望啊…. 哎~看来这无尽的叹息只能交给明天的太阳了~
类别:晴天の女程序员 | September 9th, 2008
也不知道为什么,今天的情绪特别的低落~ 可能是不喜欢被别人落在后面的感觉…有的时候女生就是有失落的特权吧,很庆幸自己是一个女生,这样我可以给自己一个理由,告诉自己不要太为难自己~ 然而,在一个竞争激烈的年代,一个日益发展的IT行业,谁又会在乎你是男是女呢?不过就是一个code的机器,还有什么性别而言呢?所以,在这样一个行业,我又记恨我是一个女孩,因为在世俗的眼光下,你就是不如男生的逻辑力强,人们就是这样,看轻你,却又允许你落后…这也许就是女程序员的悲哀,也许注定这就是一个错误的选择,可是已经没有了退路,只能硬着头皮向前冲~ 不把自己当女人看,不把自己当人看,放弃现在的生活习惯,完全忘记自己,重新开始,我是不是才会成为一个合格的程序员呢? 至少我要试着努力的做一做,不过给自己一个期限,一年以后的我如果还是没有成为真正合格的程序员,也许那时,我已经疯狂的喜爱这个职业,也许那时…… 还有,谢谢昨天一同座公交车的很阳光的GG,也许这是我们生平唯一的相遇,可是你的话却让我的心情一下子明亮了许多,谢谢你,同样的话也送给你“能和你一同,是我今生的荣幸!”
类别:晴天の女程序员 | August 14th, 2008
300多KL的代码啊,没有命名对照表,体系结构设计文档也不完全,我就硬着头皮,耗着心血,一行一行的读,嘟啊嘟~函数的引用,居然可恶到这种程度!就像个万丈深渊,让我看不到边际~ 谁来帮帮我啊~我要昏迷啦!!!
类别:晴天の女程序员 | April 3rd, 2008
网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个和打开的文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和文件描述符通信的一种方法。目前最常用的套接口是字:字节流套接口(基于TCP)和数据报套接口(基于UDP),当然还有原始套接口(原始套接口提供TCP套接口和UDP套接口所不提供的功能,如构造自己的TCP或UDP分组)等,我们这里主要介绍字节流套接口和数据报套接口。 要学习网络编程,一定离不开网络库的函数,在Linux系统下,可以用"man 函数名"来得到这个函数的帮助,不过为了照顾E文不大好的朋友,下面就将常用的网络函数和用法列出来供大家参考: 1、socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。 ————————————————————————————- #include #include int socket(int family,int type,int protocol); 返回:非负描述字---成功 -1---失败 ————————————————————————————- 第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议);第二个参数指明套接口类型,有三种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);如果套接口类型不是原始套接口,那么第三个参数就为0。 2、connect函数:当用socket建立了套接口后,可以调用connect为这个套接字指明远程端的地址;如果是字节流套接口,connect就使用三次握手建立一个连接;如果是数据报套接口,connect仅指明远程端地址,而不向它发送任何数据。 ————————————————————————————- #include #include int connect(int sockfd,const struct sockaddr * serv_addr,int addrlen); 返回:0---成功 -1---失败 ————————————————————————————- 第一个参数是socket函数返回的套接口描述字;第二和第三个参数分别是一个指向套接口地址结构的指针和该结构的大小。 这些地址结构的名字均已“sockaddr_”开头,并以对应每个协议族的唯一后缀结束。以IPv4套接口地址结构为例,它以“sockaddr_in”命名,定义在头文件;以下是结构体的内容: ————————————————————————————- struct in_addr { unsigned long s_addr; /* IPv4地址 */ }; struct sockaddr_in { short int sin_family; [...]