Linux下CVS服务器的配置和管理总结

帮公司搭了个CVS服务器,相当麻烦,把步骤记录一下吧。

1. 添加系统用户

#useradd -g cvs -G users youjing

注: -G 表示youjing还属于哪几个用户.

2. 修改用户密码

#passwd youjing

3. 初始化CVS仓库

#cvs -d /data/cvsdata init

4. 修改/etc/xinetd.d/cvspserver文件:

service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server[……]

继续阅读

诗二首

《孩子》

妈妈在远方,轻声呼唤
我能感应,声波穿透了跳动的心
震颤爬满疲惫的身躯
是的,一个孩子
想留驻在青涩的记忆里

把思绪尘封
蜷曲成懵懂的胚胎
我愿意这就是永远
一个没有成熟的果实

可是谁都不能阻止
年华腐烂、忧伤弥漫
声音嘶哑到无法呐喊
只有孩子才会
在阳光明媚里轮回

《渐渐》

轻轻的回眸
把北京的黄昏
存成一片朦胧的影像
作为告别的句点
远去的铁道灯
模糊的地平线
自己为自己送别
疲惫的身躯
陌生的脸庞
是否离家又近了一点[……]

继续阅读

C++类的初始化

构造函数的执行顺序

假设有如下两个类:

所有子类(Circle)构造函数如果没有显式调用父类(Shape)构造函数时均会调用父类的默认构造函数。

例如:new Circle() 产生的结果是:

Shape’s default constructor!
Circle’s default constructor!

而 new Circle(1) 产生的结果是:

Shape’s constructor with msg:Init Shape Directly
Circle’s constrctor with parameter(int a).

第二种情况已经[……]

继续阅读

Delphi生成的ActiveX创建模板的研究--Com对象是如何创建的

Delphi 生成的XXX_TLB.pas文件中生成了一个类

另外在XXX_Impl.pas文件中同样生成了一个类:TActiveFormX,经过研究,这两个类的确是:一个是接口,一个是实现类。

前者TActiveFormX从TOleObject继承,并且实现了方法:

该方法负责定义这个OLE控件的类ID,事件接口ID,在TOleObject的方法TOleControl.createInstance中
则利用到了这些注册信息,创建COM对象:

COM对象的实现单元XXX_Impl.pas则定义了该COM对象的实现,并且创建了一个TActiveXControlF[……]

继续阅读

Singleton 模式在多线程实现下的误区

今天使用多线程的方式写一个程序。非常不幸,碰到了死锁问题,最终发现:单例对象的创建时必须保证是同步的,否则多线程高并发情况下,可能创建出多个对象。并且导致错误。
以前写单例对象时使用的是下面的错误的写法:

于是在多线程高并发的情况下,public static SomeObject getInstance()方法由于没有同步,被两个线程同时进入,这时候 instance 被创建两次。虽然最终instance对象只会保持有一个(因为只有一个对象句柄),但在这两个对象创建到销毁的一小段时间里边,就有可能发生死锁这样的情况。

所以一定要注意,创建Singleton对象时进行同步。另外考[……]

继续阅读