02 2011 档案
摘要:如果你还不是很了解CPS是什么,那么推荐几个链接给你(希望你的英语要给力啊):http://blogs.msdn.com/b/wesdyer/archive/2007/12/22/continuation-passing-style.aspxhttp://en.wikipedia.org/wiki/Continuation-passing_stylehttp://blogs.msdn.com/b/ericlippert/archive/2010/10/22/continuation-passing-style-revisited-part-two-handwaving-about-contro
阅读全文
摘要:GlobalAlloc是为了与Win16兼容才保留的,在Win32下不要使用。 全局内存对象使用GlobalAlloc函数分配,在Windows 3.X的时代,分配的内存可以有两种,全局的和局部的,例如GlobalAlloc和LocalAlloc。但在Win32的时代这些函数已经被废弃了,现在的内存只有一种就是虚存。在Win32中所有的进程所使用的内存区域是相互隔离的,每个进程都拥有自己的地址空间。而且系统使用了页面交换功能,就是利用磁盘空间来模拟RAM,在RAM中数据不使用时将会被交换到磁盘,在需要时将会被重新装入RAM。两者都是在堆上分配内存区。malloc是C运行库中的动态内存分配函数,
阅读全文
摘要:最近做一个小工具需要用到Python的字进程,看了一下Python的API,subprocess模块可以就可以实现,并且还挺简单要实现一个简单的自进程,只需要import sys, os, subprocessp = subprocess.Popen(["ls", "-l"], shell=False, stdin=None, stdout=None, stderr=None)print p.pidprint p.returncode此时,pid将是子进程的ID号,如果子进程正常推出,returncode将会是None。也可以使用以下代码创建子进程imp
阅读全文
摘要: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
阅读全文
摘要:在Python中除了可以通过继承threading.Thread类来实现多线程外,也可以调用thread模块中的start_new_thread()函数来产生新的线程,如下import time, threaddef timer(): print('hello')def test(): for i in range(0, 10): thread.start_new_thread(timer, ())if __name__=='__main__': test() time.sleep(10)或者import time, threaddef timer(name=N
阅读全文
摘要:作为Ext JS团队的代表,我很高兴地宣布第一个Ext JS 4开发者预览版发布了。Ext JS 4是到目前为止,我们所做的改动最大,有史以来最先进的Javascript框架。从生成HTML代码到类系统,框架的每一个领域几乎都被更新了。我们统一了Api,添加了令人难以置信的新功能和改进了整个框架的性能。 对Ext JS 4,我们有三个主要目标: 速度、 健壮性和易用性。我们想要速度更快,并尽可能在每个浏览器上足够健壮,而且很容易学习和使用的框架。为了实现这一目标,我们整个框架回到画板,以及回到我们曾将创建的的速度最快、 最防弹的版本。最重要的是,我们已经成功做到这一点,并坚持了走使用“the.
阅读全文
摘要: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
阅读全文
摘要:当一个查询到达数据库引擎时,SQL SERVER执行两个主要的步骤来产生期望的查询结果。第一步是查询编译,它生成查询计划,第二步执行这个查询计划。SQL SERVER 2005中的查询编译由三个步骤组成:分析、代数化及查询优化。完成这些步骤后,编译器把经过优化的查询计划保存到过程缓存中。在这里,执行引擎把该计划转换为可执行的形式,然后执行其中的步骤以生成查询结果。如果今后再次执行相同的查询或存储过程时,过程缓存已经包含了该计划,则跳过编译步骤,直接重用缓存的计划来执行该查询或存储过程。关于SQL Server的优化:SQL SERVER并不优化批处理中的每条语句。只优化那些访问表而且可能生成多
阅读全文
摘要: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、查看文件或者目录状
阅读全文
摘要:在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...
阅读全文
摘要:在Select列表中创建的别名不能在Select子句之前执行的子句中使用。实际上,表达式别名甚至不能用于Select列表的其他表达式。该限制是由于SQL的另一个独有的特性,即同时操作(all-at-once operation)。例如,在下面这个Select列表中,计算表达式的逻辑顺序无关紧要,而且具有不确定性:Select c1+1 As e1,c2+1 As e2.因此,不支持下面这个表达式:Select c1+1 As e1,e1+1 As e2.你只能在Select列表后面的步骤(如Order By步骤)中使用列的别名。理解:同时操作(all-at-once operation)我们在
阅读全文
摘要:本文讨论在没有方便的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
阅读全文
摘要:以下这段对SQL Server执行逻辑查询时,SQL被解析的步骤。摘自《SQL Server 2005技术内幕 T-SQL查询》。这是一本非常好的讲解SQL Server的书,整个SQL Server 2005技术内幕系列都是,个人强烈推荐。我一直认为,学好任何一种技术,没有什么比学好它的基础知识和底层原理更重要。如果你相信有“捷径”,那么这就是唯一的“捷径”。了解这些,有助于你更快地掌握技术最本质的核心。我真希望早点看到那些好书,也希望看到这篇文章的你,能有点收获,多读好书,少走一些弯路。他山之石可以攻玉!以上步骤从1-11按顺序被执行,如果没有将跳过相应步骤;以上每个步骤都会产生一个虚拟表
阅读全文
摘要:VIM配置文件vimrc""""""""""""""""""""""""""""""""""""""""""""""""
阅读全文
摘要:基本图形功能 一直以来,在Web应用程序中进行绘图是很困难的事情。虽然我们很希望在应用程序中创建丰富的交互式图表或其他图像,但是HTML真的是不是这块料。通常,我们需要使用到Adobe Flash,但这给我们带来了两个难题:我们习惯书写Javascript代码,而且Flash并不是所有设备都支持。解决这个问题的方法就是使用一个纯Javascript的图形库,通过它创建丰富的图形和图表。它可以运行在ie6到iOS等任何平台,而且它已经成为Sencha Touch的附件。 在Ext JS 4中,一个崭新的强大的Ext.draw类,不单使不同绘图引擎的绘图标准化,而且提供了简单统一的绘图API。E.
阅读全文
摘要:如果你在跟踪Ext JS动态,你可能已经知道,在Ext JS 4中有一个全新的数据包。新的数据包在Ext JS 3的基础上,增加了大良的新功能。近期我们在博客上介绍了新的数据包,今天我们将深度探讨新的Model类。 几乎每一个Model类就代表了应用程序中持久化的数据类型。例如,在电子商务应用程序可能包含用户、产品、订单等模型,而每个模型包含一些字段以及允许应用操作这些数据的函数。例如,一个订单模型可以包含一个“shipToCustomer”的函数用来实现配送流程。 Ext JS 3.x之前的版本有一个Record类,它与Model类非常类似。所不同的是,Record类虽然也包含字段和函数,.
阅读全文
摘要:ExceptionArgs.cs://异常信息基类 [Serializable] public abstract class ExceptionArgs { public virtual String Message { get { return String.Empty; } } } 泛型的异常类:[Serializable] public sealed class Exception<TExceptionArgs>:Exception,System.Runtime....
阅读全文
摘要:大家都很熟悉结构化的异常处理方式。最近遇到一个问题,我在练习Remtoting,将业务逻辑放在服务端实现。而客户端则主要用于获取数据,并负责界面及数据的展示。是一个很平常的三层应用,但是在调试时出现了些意外。先Debug服务端(一个解决方案),然后再Debug客户端。问题来了,客户端在通关服务类的代理对象调用时,在服务端抛出了异常。奇怪的是,异常居然不能在客户端捕获。怎么可能?这不就颠覆了传统的异常处理机制了?客户端无法捕获服务端抛出的异常,也就无法获得处理失败的异常信息。注意,这里的异常还只是系统提供的异常。并没有涉及到自定义异常可能产生的未继承RemotingException,以及未序列
阅读全文