摘要: 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 /****... 阅读全文
posted @ 2011-02-16 21:23 程序员天下 阅读(1171) 评论(0) 推荐(0) 编辑
摘要: 了解系统的线程资源限制是使得应用程序恰当地管理它们的关键。前面已经讨论了利用系统资源的示例。当设置线程的栈大小时,最小值为PTHREAD_MIN_STACK。栈大小不应当低于由pthread_attr_getstacksize( )返回的默认栈大小的最小值。每个进程的最大线程数决定了能够为每个进程创建的worker线程的上限。函数sysconf( )用于返回可配置系统限制或选项的当前值。系统中定义了同线程、进程和信号量相关的多个变量和常量。在表6-8中,列出了部分变量和常量。变量名字值(Name Value)描述_SC_THREADS_POSIX_THREADS支持线程_SC_THREAD_A 阅读全文
posted @ 2011-02-16 21:11 程序员天下 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 当一个查询到达数据库引擎时,SQL SERVER执行两个主要的步骤来产生期望的查询结果。第一步是查询编译,它生成查询计划,第二步执行这个查询计划。SQL SERVER 2005中的查询编译由三个步骤组成:分析、代数化及查询优化。完成这些步骤后,编译器把经过优化的查询计划保存到过程缓存中。在这里,执行引擎把该计划转换为可执行的形式,然后执行其中的步骤以生成查询结果。如果今后再次执行相同的查询或存储过程时,过程缓存已经包含了该计划,则跳过编译步骤,直接重用缓存的计划来执行该查询或存储过程。关于SQL Server的优化:SQL SERVER并不优化批处理中的每条语句。只优化那些访问表而且可能生成多 阅读全文
posted @ 2011-02-16 15:21 程序员天下 阅读(280) 评论(0) 推荐(0) 编辑
摘要: SVN常用命令1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)简写:svn co2、往版本库中添加新的文件svn add file3、将改动的文件提交到版本库svn commit -m “LogMessage” [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)简写:svn ci4、加锁/解锁svn lock -m “LockMessage” [--force] PATHsvn unlock PATH5、更新到某个版本svn update -r m path简写:svn up6、查看文件或者目录状 阅读全文
posted @ 2011-02-16 11:10 程序员天下 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 在Python中可以使用继承threading.Thread类来实现多线程编程,其中子类可以重写父类的__init__和run方法来实现用户线程的逻辑,如下是一个简单的多线程类实现import threadingclass MyThread(threading.Thread): def __init__(self, name=None): threading.Thread.__init__(self) self.name = name def run(self): print self.namedef test(): for i in range(0, 100): t = MyThr... 阅读全文
posted @ 2011-02-16 08:38 程序员天下 阅读(196) 评论(0) 推荐(0) 编辑