无奈Blogger被墙了,听说还能用Email发,但今后是没法传图片了。用u.exe穿墙失败,相当囧。
如果现实中邮递员叔叔都那么和蔼可亲
Oracle收购了Sun,MySQL将何去何从
Oracle收购了Sun,这无疑是最近业内的头等大事。Oracle从Sun那里得到了Solaris、Java、NetBeans等一批优秀的产品,当然也包括MySQL。于是担忧就来了,尽管作为最广泛使用的开源数据库,MySQL一直表现良好,但是Oracle无论如何也不会允许MySQL来和它既有的数据库产品竞争。许多人发帖子表示,MySQL将亡,更多的甚至预言,MySQL的死亡将带走PHP。业界形成了Microsoft、Oracle和IBM的三大阵营的格局。严重缺乏底层应用支撑的PHP与被Oracle遗弃的MySQL将被挤出历史舞台。
不过我认为事情没有想象的那么糟糕。一直以来,PHP和MySQL都是依赖开源社区的力量在发展,缺乏商业支持不可能导致这些产品终结。另外,MySQL一直占有中小型企业网站市场,本来就没有成为Oracle等数据库的正面竞争对手,Oracle未必会打压MySQL的发展。相反,他可能还会继续支持MySQL以利用他占领低端市场。
开源产品从来都是供那些愿意花时间精力但不愿意花钱的人玩的,经营开源产品的公司从来又是从愿意花钱不愿意花时间精力的人手里赚利润的。也就是说,Oracle完全可以让MySQL依赖社区自由发展,然后将不愿意投入时间和人力成本,希望付费购买支持的客户转化为Oracle的客户。当然这种设想有理想主义的成分,毕竟Oracle的定价策略决定了它面向中高端客户,可是从MySQL支持本身盈利也不是什么不可能的事情——原来Sun就是这么做的。
五一国际劳动节的由来
1886年5月1日,以美国芝加哥为中心,在美国举行了约35万人参加的大规模罢工和示威游行,示威者要求改善劳动条件,实行八小时工作制。5月3日芝加哥政府出动警察进行镇压,开枪打死两人,事态扩大,5月4日罢工工人在干草市场广场举行抗议,由于不明身份者向警察投掷炸弹,最终警察开枪,先后共有4位工人、7位警察死亡,史称“干草市场暴乱”(Haymarket Riot)或“干草市场屠杀”(Haymarket Massacre)。在随后的宣判中又有4位工人被绞死。
为纪念这次事件以及抗议随后的宣判,在世界范围内举行了工人的抗议活动。这些活动成为了“国际劳动节”的前身。1889年7月在巴黎举行的第二国际第一次代表大会决定把5月1日作为“国际示威游行日”亦称“国际劳动节”。在美国直到1935年罗斯福总统执政时,八小时工作制才作为一种全国立法被确定下来。
PHP中各种Hash算法性能比较
今天做的模块又用到了Hash函数,突然想起Hash函数可能会比较占CPU资源,所以希望使用一种速度最快的摘要函数。但是PHP中的Hash函数很多,MD4、MD5、SHA-1、SHA-256、SHA-384以及SHA-512,都是比较常见的安全领域的HASH应用。于是写了个程序对比了一下PHP支持的各种Hash函数:
<?php define('testtime', 50000); $algos = hash_algos(); foreach($algos as $algo) { $st = microtime(); for($i = 0; $i < testtime; $i++) { hash($algo, microtime().$i); } $et = microtime(); list($ss, $si) = explode(' ', $st); list($es, $ei) = explode(' ', $et); $time[$algo] = $ei + $es - $si - $ss; } asort($time, SORT_NUMERIC); print_r($time); ?>
此程序测试每种hash函数支持的算法,对50000个字符串执行hash计算,然后将耗时按从低到高排序,结果如下:
Array ( [crc32b] => 1.14942403926 [crc32] => 1.15080493481 [adler32] => 1.17250810205 [md4] => 1.21484698894 [md5] => 1.25582505324 [sha256] => 1.31992111638 [ripemd256] => 1.34005199425 [ripemd128] => 1.34174097336 [sha1] => 1.34424093234 [ripemd160] => 1.36161398381 [haval128,3] => 1.37490507759 [haval160,3] => 1.37925811601 [haval192,3] => 1.37971906387 [haval224,3] => 1.38690299403 [haval256,3] => 1.38968507692 [tiger128,3] => 1.40321999939 [tiger192,3] => 1.42025405684 [tiger160,3] => 1.42113689062 [ripemd320] => 1.42461802158 [haval128,4] => 1.4465580045 [haval160,4] => 1.44935391309 [haval192,4] => 1.45606506625 [haval224,4] => 1.4650528846 [tiger128,4] => 1.47951410777 [tiger192,4] => 1.49081709387 [haval256,4] => 1.50713596634 [haval160,5] => 1.51613600436 [haval224,5] => 1.51645894888 [haval192,5] => 1.51678603177 [haval256,5] => 1.51900808377 [tiger160,4] => 1.52507308815 [haval128,5] => 1.53689793875 [whirlpool] => 1.82801189377 [snefru] => 1.85931909387 [gost] => 1.89863007236 [sha384] => 1.95804009064 [sha512] => 1.97130295938 [md2] => 4.99702701607 )
CRC是冗余验证算法,不适合用来做唯一标识符Hash计算,MD4是最快的摘要算法,MD5次之,SHA系列算法居然是SHA-256最快,比SHA-1还快一些。由此得出结论:要把唯一标识符转换成定长字串可以考虑使用MD4,而密码加密则SHA-1或SHA-256更合适。MD5就没有多少使用的必要了,速度比不过MD4,安全性比不过SHA,还是趁早放弃的好。