2013年3月5日
摘要: 1. str的decode与encode成员方法str.decode : other encoding-> utf16str.encode : utf16 -> other encoding2. 文件编码与字符串在内存中的表示形式文件编码同字符串在内存中的编码相同。例如:,程序运行后,结果如下:1#coding:utf823u1='你好'.decode('gbk')4u2='你好'.decode('utf8')5printu16printu2文件编码为 utf8浣犲ソ你好注意:1. 文件时utf8编码;2. u1以gb 阅读全文
posted @ 2013-03-05 09:41 sanlo 阅读(355) 评论(0) 推荐(0) 编辑
  2013年2月28日
摘要: 原文:简单常识-关于string看到这篇文章,才发现,原来string如此强大。toupper, tolower地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法:string s("heLLo");transform(s.begin(), s.end(), s.begin(), toupper);cout << s << endl;transform(s.begin(), s.end(), s.begin(), tolower);cout << s << endl;当 阅读全文
posted @ 2013-02-28 21:02 sanlo 阅读(2150) 评论(3) 推荐(0) 编辑
  2012年12月6日
摘要: 试验结论:1. javac支持源文件为unicode编码,但是要求文件开头不能带有BOM(Byte Order Marker),否则编译就会失败2. 对于系统默认编码不需要添加 -encoding选项,对于Unicode编码需要添加-encoding选项, 具体如下: utf8 : -encoding utf8 utf16le: -encoding utf-16le utf16be : -encoding utf-16be试验所使用工具:1. notepad++ notepad++转换编码默认都带有BOM,对于unicode编码,它只能识别带有BOM的unicode文件2. uconv ... 阅读全文
posted @ 2012-12-06 14:46 sanlo 阅读(863) 评论(0) 推荐(0) 编辑
摘要: http://support.microsoft.com/kb/830473此文大致内容如下:在windows XP或更高版本,命令行的最大长度为8191 个字符在windows2000或windows NT4.0,命令行的最大长度为2047个字符这个限制对于环境变量同样有效,例如 windows XP下,PATH不能超过8191个字符如果使用cmd运行批处理文件(即.bat),这个限制同样有效。解决方法如下:将程序的命令行放在一个文本中,程序从这个文本中读取命令行。对于 javac来说,它的命令行支持 Argument File,在这个Argument File中,可以指定编译选项和文件名, 阅读全文
posted @ 2012-12-06 14:39 sanlo 阅读(14485) 评论(0) 推荐(0) 编辑
  2012年11月22日
摘要: 1. 如何获取和设置某一行的选中状态? 1) 获取选中状态 int state = listCtrl.GetItemState(item, LVIS_SELECTED); if (state & LVIS_SELECTED){ // 选中 } else{ // 为选中 } 2) 设置选中状态 取消选中: listCtrl.SetItemState(item, 0, LVIS_SELECTED); 设置选中: listCtrl.SetItemState(item, 1, LVIS_SELECTED);2. 如何获取所有选中的行? ... 阅读全文
posted @ 2012-11-22 20:41 sanlo 阅读(2691) 评论(0) 推荐(0) 编辑
  2012年10月30日
摘要: 设计模式,我对它的理解就是,解决问题的方法,模式本身的重要性自不必说,但是我认为模式之外的解决问题的方法才是我们真正需要掌握的, 其中,最基本的三点:封装变化,模块化,模块间的低耦合 以前也看过Head first 设计模式,但总有点雾里看花的感觉,总觉得不是那么的真切。不过一些思想已经印在脑子里了,这半年来体会良多,于是决定再把这本书看一遍,温故而知新。 对于软件开发而言,一个很让人头疼的一个拦路猛虎就是“变”,可能是客户有了新的需求,可能是我们要使用新的技术,也可能是我们本领提高了,想要来重构原来的软件…… 设计模式很大程度上也是为了解决“变”的问题,当有变化产生... 阅读全文
posted @ 2012-10-30 23:15 sanlo 阅读(303) 评论(0) 推荐(0) 编辑
  2012年10月29日
摘要: 看了一点wxPython,感觉上 wx和MFC程序的结构差不多,1. 在哪里对程序初始化? wx.App.OnInit(), 这个方法类似于MFC的InitInstance, 我们在这个方法里对程序进行初始化,如创建并显示frame 注: 如果初始化成功,这个函数应该返回True,否则程序将终止 我们一般在wx.App.OnInit()中对我们的程序进行初始化, 如果有某些特殊原因需要重写__init__, 那么就必须调用父类的__init__方法,否则OnInit不会被调用2. 在哪里清理我们的程序? 重写wx.App的OnExit(),当程序的主循环结束后,会调用这个函数 ... 阅读全文
posted @ 2012-10-29 20:27 sanlo 阅读(1927) 评论(1) 推荐(0) 编辑
  2012年10月28日
摘要: 在多线程环境下,python虚拟机按照以下方式运行: 1. 设置GIL(全局解释器锁) 2. 切换到一个线程中去 3. 运行 a. 指定数量的字节码的指令,或者 b. 线程主动让出控制(可以条用time.sleep(0) ) 4. 把线程设置为睡眠模式 5. 解锁GIL 6. 再次重复以上步骤调用C/C++扩展函数的时候,GIL会被锁定,直到这个函数结束。由于这期间没有python的字节码被运行,所以线程不会切换。如果我在扩展模块中调用阻塞式地I/O函数,那么就会发生比较糟糕的事情。比如说,我在扩展模块中接受网络数据,如果对端机器没有发送数据,那么我的整个Python程序就会阻塞到... 阅读全文
posted @ 2012-10-28 18:04 sanlo 阅读(2358) 评论(0) 推荐(0) 编辑
  2012年10月20日
摘要: 1. 利用 __iter__内建属性ifhasattr(obj,'__iter__'): print'iterable'这种方法不能检测字符串,如:hasattr('', '__iter__')返回False。 或者这样子:try: i=iter(obj)exceptTypeError,v: printv2. 假设obj是iterable的,如果不是的话,就抛出异常try: forvinobj: printvexceptTypeError,e: printe3. 检查实例是否是collections.Iterable子类impor 阅读全文
posted @ 2012-10-20 22:13 sanlo 阅读(2411) 评论(0) 推荐(0) 编辑
摘要: 有时候我们可能需要随机获取一个可用的端口号,本文采用使用以下方法完成这项任务:思路: 将一个socket 绑定到本机,使用getsockname获取此socket关联的端口号我们可以定义这样一个函数,用以获取可用的端口号:函数声明boolgetAvaliablePort(unsignedshort&port);//返回:若成功则为true,否则为false下面是函数定义:1/**2*@brief获取可用的端口3*4*@paramport:输出,返回可用的端口号5*6*@return若成功则返回true,否则放回false7*/8boolgetAvaliablePort(unsigned 阅读全文
posted @ 2012-10-20 22:02 sanlo 阅读(12342) 评论(0) 推荐(0) 编辑