02 2011 档案
摘要:GlobalAlloc是为了与Win16兼容才保留的,在Win32下不要使用。 全局内存对象使用GlobalAlloc函数分配,在Windows 3.X的时代,分配的内存可以有两种,全局的和局部的,例如GlobalAlloc和LocalAlloc。但在Win32的时代这些函数已经被废弃了,现在的内存只有一种就是虚存。在Win32中所有的进程所使用的内存区域是相互隔离的,每个进程都拥有自己的地址空间。而且系统使用了页面交换功能,就是利用磁盘空间来模拟RAM,在RAM中数据不使用时将会被交换到磁盘,在需要时将会被重新装入RAM。两者都是在堆上分配内存区。malloc是C运行库中的动态内存分配函数,
阅读全文
摘要:C++中的智能指针简单地讲,智能指针是用一个对象来对指针进行建模,使之具有指针的特性,跟指针具有相同含义的->,*操作.并且通过对象的构造函数(获取资源),析构资源(释放资源)来对资源进行管理,从而减少程序员对通过new操作获取到的对象的生命周期进行管理的负担.根据《Moden C++ Design》,我们可以构造具有很多正交特性的智能指针。1.1 C++中的智能指针与JAVA中的对象前段时间跟朋友聊了些有关JAVA的东西,感觉上Java中的对象就是C++中的智能指针,但具有不同的资源释放方式。在JAVA中,不能象C++中运用" A a;"语句声明得到一个类(A)的事
阅读全文
摘要:在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出.对于网络编程的更多详细说明建议参考下面的书籍《UNIX网络编程》 《TCP/IP 详解》 《Unix环境高级编程》非阻塞IO和阻塞IO:在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做一下说明基本概念:socket的阻塞模式意味着必须要做完IO操作(包括错误)才会返回。 非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。设置:一般对于一个socket是阻塞模式还是非阻塞模式有两
阅读全文
摘要:领导者/追随者模型(Leader/Followers)这几天翻了些文章,发现对领导者/追随者模型说的比较少,下面就这个模型打个比方:话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。一般就是有一个山贼在山路口察看,其他人在林子里面睡觉。假如发现有落单的过往客商,望风的山贼就会弄醒一个睡觉的山贼,然后自己去打劫。醒来的山贼接替作望风的事情。打劫的山贼搞定以后,就会去睡觉,直到被其他望风的山贼叫醒来望风为止。有时候过往客商太多,而山贼数量不够,有些客商就能侥幸平安通过山岭(所有山贼都去打劫其他客商了)。下面是这个模式的计算机版本:有若干个线程(一般组成线程池)用来处理大量的事件有一个线
阅读全文
摘要:使用print输出各型的字符串整数浮点数出度及精度控制strHello = 'Hello Python' print strHello#输出结果:Hello Python#直接出字符串1.格式化输出整数pythonprint也支持参数格式化,与C言的printf似,strHello = "the length of (%s) is %d" %('Hello World',len('Hello World'))print strHello#输出果:the length of (Hello World) is 112.格式化输出1
阅读全文
摘要:func(Typepara1,Typepara2,Typepara3,...) { /******Step1******/ va_listap; va_start(ap,para3);//一定要“...”之前的那个参数**ap指向para后的第一个可变参数。 /******Step2******/ //此时ap指向第一个可变参数 //调用va_arg取得里面的值 Typexx=va_arg(ap,Type); //Type一定要相同,如: //char*p=va_arg(ap,char*); //inti=va_arg(ap,int); //如果有多个参数继续调用va_arg /****...
阅读全文
摘要:了解系统的线程资源限制是使得应用程序恰当地管理它们的关键。前面已经讨论了利用系统资源的示例。当设置线程的栈大小时,最小值为PTHREAD_MIN_STACK。栈大小不应当低于由pthread_attr_getstacksize( )返回的默认栈大小的最小值。每个进程的最大线程数决定了能够为每个进程创建的worker线程的上限。函数sysconf( )用于返回可配置系统限制或选项的当前值。系统中定义了同线程、进程和信号量相关的多个变量和常量。在表6-8中,列出了部分变量和常量。变量名字值(Name Value)描述_SC_THREADS_POSIX_THREADS支持线程_SC_THREAD_A
阅读全文
摘要:SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。SVN 官方网址:Apache SubversionSVN 服务器配置:安装SVN服务器一、 SVN常用命令1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)简写:svn co2、往版本库中添加新的文件
阅读全文
摘要:本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序源码例子例如,有模拟税收计算的程序:#!/usr/bin/pythondef debug_demo(val):if val <= 1600 :print "level 1"print 0elif val <= 3500 :print "level 2"print (val - 1600) * 0.05elif val <= 6500 :print "level 3"print (val - 3500) * 0.10 + (3500-1600)
阅读全文
摘要:Shell脚本是含有若干UNIX命令或可执行程序的文本文件。1 运行Shell脚本Shell脚本有两种运行方式,第一种方式是利用sh命令,把shell脚本文件名作为参数。这种执行方式要求shell脚本文件具有“可读”的访问权限。第二种执行方式是利用chmod命令设置shell脚本文件,使shell脚本具有“可执行”的访问权限。然后直接在命令提示符下输入shell脚本文件名。2 退出或出口状态一个UNIX进程或命令终止运行时,将会自动地向父进程返回一个出口状态。如果进程成功执行完毕,将会返回一个数值为0的出口状态。如果进程在执行过程中出现异常而未正常结束时,将会返回一个非零值得出错代码。在she
阅读全文
摘要:VIM配置文件vimrc""""""""""""""""""""""""""""""""""""""""""""""""
阅读全文
摘要:这篇博客,从我前段时间开发项目中出现的一个bug说起。一个把from写成form的bug说起 一个不起眼的错误,可能是手误,可能是长期敲错导致坏习惯,也可能从根本上就没有理解透彻form和from的意思和用途。 不管是根于什么原因(这个问题涉及的东西太多,在这里就不探究了),我们每天都要和bug打交道,因为我们做这个职业,每天都会和代码打交道。金无足赤,人无完人,我们coding会出现错误。 当bug出现了,我们是否能够经受住它给我们带来的考验呢?如果我们经不住,那么项目就有可能会失败,因为千里之堤,毁于蚁穴的道理人人皆知。所以我们必须要打倒它。 当然,有时候bug的出现不能完全怪编码人员;相
阅读全文