Archive for 四月, 2010

jvm关闭钩子与信号处理

星期五, 四月 30th, 2010

对于使用Java做server端程序来说,通常会希望在JVM关闭时做些扫尾工作,比如写内存数据到磁盘、关闭句柄等。JVM提供了关闭钩子(shutdown hooks)来做这件事情。关闭钩子使用起来很简单,调用Runtime实例的public void addShutdownHook(Thread hook)即可,其中参数hook就是要做扫尾工作的钩子线程。这就是说,调用这个方法,JVM便会在初始化时注册这个钩子,待时机到了触发钩子。而触发的时机有:1)程序正常推出或者调用System.exit方法,如果是多线程环境,要求是最后一个非守护线程触发,2)JVM收到需要关闭自己的信号(比如SIGINT、SIGTERM等,但像SIGKILL,JVM就没有机会去处理了),也或者发生如系统关闭这种不可阻挡的事件。

分享Poppen.de架构经验

星期六, 四月 24th, 2010

Poppen.de是德国的一家婚姻中介网站,对于该网站的统计数字有:1)2.000.000的用户数,2)20.000的并发用户数,3)每天产生300.000的私信,4)250.000的日登录用户数。这样的网站也就是个中型规模的网站,下面看看这个网站在技术应用及经验方面带来的东西。

闲话编程语言的那点破事儿

星期六, 四月 24th, 2010

编程语言对一个程序员有多重要?看看那些招聘广告吧,有那么多赤裸裸的招聘会某种语言的程序员的广告,这无异是将程序员的价值与编程语言挂钩了,这也使得不少人在选择编程语言时会关注什么语言最火或者什么语言最赚钱,而忽视了工作内容所体现的价值。就web开发来说,为求开发迅速,像PHP这样的脚本语言是多数网站的选择,所以PHP程序员遍地都是。但是,招聘web开发人员显然不仅仅要求会个PHP语言就行的,而是要求能解决web开发中的各种问题,而这些问题和语言的关系是不大的。有能力的程序员不会过多的纠结于编程语言、使用的框架等这样低层次的问题。

CAP理论及BASE思想等

星期天, 四月 18th, 2010

CAP理论是由 Brewer远在2000年的PODC会议上提出来的。CAP指的是:Consistency、Availability和 Partition Tolerance,下面简述此三者:

1、Consistency(一致性):一致性是说数据的原子性,这种原子性在经典的数据库中是通过事务来保证的,当事务完成时,无论其是成功还是回滚,数据都会处于一致的状态。在分布式环境中,一致性是说多点的数据是否一致。

2、 Availability(可用性):可用性是说服务能一直保证是可用的状态,当用户发出一个请求,服务能在有限时间内返回结果。而这种可用性是不关乎结果的正确与否,所以,如果服务一致返回错误的结果,其实也可以称为其是可用的。

3、Partition Tolerance(分区容忍性):Partition这个词不是常说的操作系统或数据库中的用语,而是指网络的分区。网络中的两个服务结点出现分区的原因很多,比如网络断了、对方结点因为程序bug或死机等原因不能访问。