随笔-18  评论-11  文章-12  trackbacks-0
@善用佳软
命令1对于“1234567890ab”这样的式子就没法替换了。
但命令2仍然可以工作。相比于命令1,其主要改进是增加了表达式结尾非数字的判断。
对命令2
:%s/\d\@=\(\(\d\d\d\)\+\d\@!\)\@=/,/g

:%s/\d\@<=\(\(\d\d\d\)\+\d\@!\)\@=/,/g
两种写法都是可以的。
在gcc下example1和example2都是16
我对你这个图是用什么画的比较感兴趣
重载操作符就可以搞定吧
re: 文件夹比较备份工具 ronliu 2008-11-07 10:10
计算md5时间复杂度如何?
re: 文件夹比较备份工具 ronliu 2008-11-07 08:37
直接比较文件名和修改时间?
就像版本管理工具,比如vss那样。
re: epoll为什么这么快 ronliu 2008-10-22 22:18
这个例子甚好!
弄不清楚epoll和select的区别来着。
为啥要用A、B两个缓冲区呢?
可以用一个循环数组data[N]来做缓存,in_index用于主线程写数据,指向下一个空位, out_index用于副线程读数据,指向下一个数据位。in_index和out_index都模N运算。
当out_index = (in_index + 1)%N时,缓冲已慢,等待。
---------
比《设计模式》上的例子容易理解些。
附上观察者模式的定义:
定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
人、汽车、北京是实体,乘坐、去是谓词。先New一个人、一辆车、一个地点。将人和车赋予谓词的两端,在组合起来,就是一个行为。可以理解为,行为即是一个赋予实体后的谓词。
实体和谓词继承自同一个基类,在基类中提供字符串的封装和解封的方法,以及属性的字符串转换和还原函数。在定义实体和谓词时,调用基类中提供的字符串转换函数和还原函数,重写基类的decode、encode方法。对于组合实体,调用每一个原子实体的encode方法就是了。
对用户而言,它需要定义一些实体,和谓词,然后给他们赋值,然后调用一个fillContent()把行为转化为字符串。解封相反,将一串字符串转为一个对象。
------------
这是我用C++实现的一个类自然语言的库的基本思想。不知道你用脚本语言做,会是个什么样子,呵呵,关注ing!
re: Vczh Messenger ronliu 2008-08-03 01:05
很好的思路,
觉得没有必要区分client和host。client之间发消息,需要通过各自的host来中转,中转的次数太多,增加了复杂度。
一台主机上有一个host对应很多个client的情况我想不多,即使有,也只是少数的服务器型的机器。
另外,能否说明一下你的这个框架预计的应用场景呢?