- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 利用golang中的chan数据类型来实现简易连接池
chan其实是一个队列,而且是一个带有锁等待功能的队列,因此用它可以做很多任务队列相关的工作,比如说连接池。最近打算用go来写一个小的软件配置管理系统,使用中发现没有连接池,于是就是chan写了一个简单的,使用了一下发现相当好用。var MySQLPool chan *mysql.MySQLfunc getMySQL() *mysql.MySQL { if MySQLPool == nil { MySQLPool = make(chan *mysql.MySQL, MAX_P
2010-12-30 14:11:00 14118 4
原创 利用ulimit对资源进行限制
<br />大家都知道可以使用ulimit来查看当前的系统资源限制,比如<br />[babel@localhost ~]$ ulimit -a<br />core file size (blocks, -c) unlimited<br />data seg size (kbytes, -d) unlimited<br />scheduling priority (-e) 0<br />file size
2010-12-30 14:06:00 1104
原创 利用golang实现与boost中asio相同的功能
<br />今天在地铁上的时候突然想到,其实可以利用go中的channel轻易实现asio中的异步功能。其实asio主要借助了函数变量来将代码封存,而它之所以这么做是因为c和c++都不支持反映,这一点在go里根本就不存在任何问题,直接用反映就可以搞定。而在go中异步执行也会很简单,因为channle天然就是一个队列,我们一开始只需要指定channel的buffer(这一点比asio要更好用,因为通过buffer的大小我们可以解决异步程序无法解决的流量控制问题),然后将要执行的代码丢给channel,一个专门
2010-12-24 19:45:00 2950 2
原创 go语言中的interface与c++中的template
<br />这两天在使用c++的时候发现go语言中的interface其实与c++中的template有异曲同工之处。比如template同样只需要参数满足某些条件即可,而不需要参数一定符合继承关系,在这一点上go语言也是一样的。在c++中通过template可以部分实现继承所达到的效果,同样的道理利用interface在go中也可以实现继承。并且在很多情况下这更好用,因为一层层继承是一件很恶心的事情,这也是为什么java发展到今天越来越重量级的原因,继承使用的越多,程序将会越重量级。
2010-12-24 19:37:00 2278
原创 go语言中的反射的使用
<br />今天尝试了一下使用go语言中的反射来将struct类型转换成xml,结果相当纠结。首先去看了一下go的reflect包的实现,根据go的规则,首先应该去看一个NewXXX的方法,结果发现了一个叫NewValue的方法,通过这个方法我们能够得到一个Value接口。另外我们还应该注意到,go的反映实现中将Type和Value分开了,于是还有另外一个接口Type.<br />type Value interface { // Type returns the value's type.
2010-12-24 19:32:00 8597 3
原创 boost::bind
<br />其实boost::bind就是一个函数对象,这个函数对象可以有各种形式,因此它是可以嵌套的,就像表达式可以嵌套一样,但是注意,如果boost::bind嵌套了,那么它的意义就不同了,看下面的例子<br /> <br />boost::bind(func1, boost::bind(func2))<br /> <br />那么其实这个函数对象在执行时相当于func1(func2()),注意这里得到的是func2的返回值,而不是这个函数对象,如果需要使用函数对象的话,那么就需要使用boost::fu
2010-12-15 18:16:00 1687
原创 c++中的继承
<br />c++里的继承对每个类前面都必须加一个修饰,比如public, private,protected否则就会被当private处理
2010-12-03 14:39:00 555
原创 共享内存的权限问题
<br />今天测试一段代码时发现在创建共享内存时,如果没有对其他人设置写权限,那么以其他用户去运行时也无法拥有读权限,这个结果相当奇怪,上网搜索了很久也没有发现有类似的问题。
2010-12-01 17:53:00 3164 1
原创 一个诡异问题
<br />今天碰到一个很诡异的问题,当时想使用静态类成员常量,结果报错说只能在类里初始化数字型常量,于是我就把初始化挪到了外面,结果再次编译没有问题了,链接的时候会出错。后来找了半天发现是原来有一个.h文件,那个文件后来不用了,但是没有从svn中删除,于是这个文件原来已经被编译进.o了,因为每次都是make而没有make clean,因此这个文件定义一直存在,导致出现问题。<br /> <br />另外记录一个format规则:%.*s需要指定两个参数,一个表示拷贝多少长度,一个表示拷贝的源数据。
2010-12-01 16:15:00 635
Computer Science Handbook第二版.下
2010-02-03
Computer Science Handbook第二版.上
2010-02-03
Handbook of Data Structures and Applications
2009-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人