2008-07-18

把sprintf进行改造,提升将近4倍的拷贝速度

关键字: sprintf 将近4倍 速度
inline void CollectChar(char* _comSQL, const char *_pcAccounts, const char *_pcIP) { /* char buff[128]; _comSQL+=strlen(_comSQL); memset(buff, 0, sizeof(buff)); sprintf(buff, " onrecv_account_logon('%s','%s'); ", _pcAccounts, _pcIP); strcpy(_comSQL, buff); */ char buff[128]; ch ...
2008-07-15

随便聊聊找BUG的方法

关键字: 找bug 技巧 经验
一、现场环境证据收集 将一个bug比喻成一次案件。对案件进行分析时,可以从邻居口中得到线索,也可以从现场找到突破口。那么我更喜欢从邻居口中用较少的次数收集到我所需要的信息后,将更多的时间花费在从现场找到蛛丝马迹。找bug时也是如此,假设你的程序打印出人员的排序情况不一致,不应该马上就去查找你的排序代码。更应该从“现场”周围来收集更多情况:比如可以增加若干人员后看看排序情况;查看程序其他地方输出的排序是否正常。。。通过这些可以了解是一些索引越界了还是排序本身代码的问题。接着再去具体查看排序的子代码。 二、凶手范围的确认 这里《代码大全》中总结了几条 先怀疑有前科的人员: ...
2008-07-09

原始套接字接收时犯的一个错误

关键字: 原始套接字 recvfrom
if ( (nread = recvfrom( fd, ptr, nleft, 0, (sockaddr*)&m_addrSourceIp, &sizeSock) ) < 0) int CSynScan::CheckSyn(const char* _buffPackage) { assert( _buffPackage!=NULL); cout<<"pTcp->tcp_flags:"<<pTcp->tcp_flags<<endl; cout<<"pTcp->ackno ...
说是详解,实在是有愧。只不过是自己前段时间不理解,花费了点时间来总结下而已。因此此篇文章完全代表自己主观的观点^_^ 关于"大小字节序"方面的知识详见BLOG前一篇文章<<大字节序 小字节序>> 那么,先理清下在网络传输里这个字节序转换的过程。假设是一台小字节序的PC机,构造好包后,以大字节(即网络流)方式传输,接着达到终端。我一开始以为传输的时候把高低字节替换,其实不是,只是一个读取值的顺序不同而已。本着这个,来看看IP头格式的定义: 标准的IP头的第一个字节里,是先版本,后首部长度,后来在很多代码里看到这两个是相反的。当时就很纳闷。比如这个定义 #if defin ...
2008-07-03

大字节序 小字节序

关键字: 大字节序 小字节序
from: http://www.sf.org.cn/Article/base/200709/20502.html Endian 的由来 一、引子   在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了 计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、 字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方 将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采 用的字节存储机制主要有两种: big-edian和little-endian。本文简要描述这两种存储机制的来历、特点和区别。      为了叙述方便,下 ...
2008-07-03

返回静态地址 g++和VC的一点不同

关键字: 静态地址 g++和vc
在调试一个地址时无意中发现 g++代码,inet_nota情况也一样,后来为了验证就换成如下 char *fun_test(char* c) { static char s_buff[10]; char *p_buff=s_buff; strcpy(p_buff, c); return s_buff; } //main函数 char c1[]="abc",c2[]="def"; cout<<fun_test(c1)<<endl <<fun_test(c2)<<endl; retu ...
execl函数功能如下:启动一个可执行文件,并且对他进行传送参数。一些原型如下 #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg , ..., char * const ...
2008-06-17

阻塞和非阻塞的一点使用心得

关键字: 阻塞 非阻塞 select
在《unp》书上,stevent一开始的一个服务器小例子这样介绍到:一个TCP的服务器和客户 端,客户端puts进行阻塞式的输入消息。暴露的问题是,当用户进行阻塞到puts输入时,对方 的服务器关闭,那么用户可能发了一大断消息按下发送时,发现程序崩溃了。。阻塞的出现的 另一种意义就是各司职。 最近在负责的一个项目中,需要频繁的进行TCP吞吐,我一时认为不 需要什么阻塞,都是即时的消息,而且又很频繁。结果暴露的问题出来了:(9060为服务端) 1、如 tcp 0 16385 218.66.25.238:32821 218.66.25.238:9060 ...
2008-06-15

断开连接时,time_wait状态的解释和验证

关键字: tcp断开 time_wait 状态
time_wait状态的解释和验证:在TCP同步双工断开连接中,假设没有time-wait这个状态,那么在最后一个FIN N发送时,主动关闭方接到后,返回ack N+1.那么这个时候如果N+1这个包在没有正确达到,那么对方会一直处于LAST ACK的状态,而发送方因为没tim_wait这个状态,已经认为是正确发送了就退出了,造成接收方一直等待。 加入time_wait后,time_wait本身这个值也代表这个一个包在网络上能生存的时间,接收方就可以简单认为在这个时间内没收到N+1的包就可以认为 这次断开是失败的,那么要重新发送FIN N的序列号。而这个时候time_wait端也要将状态改为 ...
2008-05-23

做个计划

关键字: 计划 忙碌 学习 突破
今天加了个87年的程序员群,发现87年后学C++的好少啊。。都是javaer.. 做个计划在这里,不然每天看似忙碌,其实都是瞎忙 5月份:利用业务时间把代码大全兴趣的地方先过一遍 6月份:把linux shell编程指南过一遍
lin_style
  • 浏览: 12659 次
  • 性别: Icon_minigender_1
  • 来自: 福建福州
  • 详细资料
搜索本博客
我的相册
8f0b8c72-a1b2-3c14-87b4-a63cda96b15a-thumb
未命名
共 1 张
最近加入圈子
存档
最新评论