存档

‘技术研究’ 分类的存档

编程实现文件上传

2007年2月8日

服务器的cgi程序处理都差不多,都会从在某个字典里面存放文件的数据,主要数据就3个:

  • 文件名
  • 文件长度
  • 文件内容一次可以上传多个文件.RFC1867定义了这个协议

阅读全文…

分类: 技术研究 标签: , ,

vector,list中的遍历删除

2006年6月25日

很普通的算法,在一个循环中检查每个元素,判断条件,如果为真,就删除这个节点,再继续循环.看似简单,但是却一个不大不小的陷阱,这种小问题的结论,总是记不住,每次遇到的时候,都得写一个测试程序来验证,干脆总结一下,做个结论
最简单的方法

std::remove_if(_First, _Last, Predicate)

STL是用模板实现,简单高效,但是很多情况下,需要在循环中处理其他逻辑,不能直接使用这个函数
阅读全文…

分类: 技术研究 标签: , , ,

诡异的gcc编译错误

2006年6月5日

最近一直在linux上写程序,先把x windows上所有听说过没有听说过的IDE都装了一遍,非常的不好用,然后又逐个的试windows上的远程调试软件,如Magic c++,uniwin等,还是国人写的软件,都用不了,甚至Magic c++在网站上提供的for linux的免费版本,编译都会报错。最后还是老老实实的用ssh登陆上去,make+ gdb. 虽然不是很熟练,但是还是稳定能用。

只遇到有一个问题,当单步进入switch-case scope,看不到任何栈信息

switch(messageType) {
        case P2P_FOOR: 	{
              int piece_index=0;
              int nothing;
               ...
             } break;

info locals 什么也看不到,谁能告诉我为什么

阅读全文…

分类: 技术研究 标签: , ,

多线程静态方法重入错误

2006年4月6日

Static function variable in multithread

今天花了4个小时来折腾这个.在写一个多线程下载程序,突然发现下载下来的数据包不对,先是怀疑数据拼接有问题,然后是怀疑网络传送端有问题,一个一个的dump出来看.然后用脚本一个一个字节的比对.最后,才知道原来是这个.

void CSimpleSocket::Read(string &buf)
 {  
    static char buf[BUF_SIZE];     //...
}

这种function scope 的static 变量,多线程使用会被反复的修改.

libc time.h里面几个函数不是线程安全,就是这个原因.这样做,其实也省不了多少资源,去掉static不过多了两条push stack的指令.这种优化强迫症,自从学了汇编以来一直这样.有个重要原则是

先把事情做正确

分类: 技术研究 标签: ,

gtalk机器人开发指南

2006年4月1日

gtalk机器人很火,twitter类网站基本上都支持,原因只有一个

gtalk采用了jabber协议,这个是一个开放性协议,一堆开源代码包,所以比较好开发

我贡献一个python脚本程序,基于jabber.py 阅读全文…

分类: 技术研究 标签: , , , ,

delphi中的hash函数

2005年10月12日
  • Hash table ,也叫做字典,是任何数据结构教材都会提到,O(0)的访问性能让它得到很广阔的应用,
  • STL中也有map,hashmap,当然map一般是使用平衡 BST来实现的,但是外部使用接口和hash table差不多。
  • dict和list,scalar(string和numbers)组成了python,perl等脚本语言中基本数据元素。
  • 在各种程序应用中,相当大部分计算是在处理字符串,很多情况下,hash table会给字符串处理提供极大的方便。 阅读全文…
分类: 技术研究 标签: ,