凑热闹,写个微信5.0 08月05日

凑热闹,写个微信5.0

实在忍不住了,觉得微信这次改版太大,也确实感觉到腾讯的强大,不得不写个文章来说说微信5.0的新功能,我更感兴趣 [...]

说说我们组开发的那些key-value存储吧 08月05日

当写下这个题目的时候,很多人会说,哎,又来key-val数据库了,市面上的key-value存储这么多了,为啥还要自己去实现一个?其实最初我也是这样想的,新浪以前不是开发过一个memcachedb么,所有产品线都用就行了呗。后来才弄清楚,原来这个世界上,到目前为止没有像mysql一样的关系数据库垄断key-val数据库是有很多原因的。

先说几个大家熟悉的key-value 解决方案吧,好对比我们的方案。

memcached

memcached不用说了吧,就是传说中的万金油,哪儿痒了点哪里,只要是一个中型网站以上,一般都有memcached的存在。它的好处呢,我觉得太多了,多到没有你不用的理由的地步。在内存这么便宜的年代,memcached 依旧是缓存的最好的解决方案。

但是,它是个cache缓存,也就是不能持久化,当然就不能算作数据库了。但是memcached的作者从来都没有计划把它开发成一个DB,因为cache就是cache嘛,做好这件事情就行了,国外的大神们做的产品,就是专注,不想国内的很多产品经理,一个产品做出来,完全是为了把页面占满。

当然,也有人做了memcached的持久化,这句话有点错,应该是“用memcached的协议,对传入的数据做了持久化”,比如我浪08年开发的memcachedb (更多…)

新型序列化类库MessagePack,比JSON更快、更小的格式 07月26日

新型序列化类库MessagePack,比JSON更快、更小的格式

MessagePack 是个什么东东?先来看一段官方的解释: MessagePack is an effici [...]

站在技术角度说说国内的云计算 07月21日

站在技术角度说说国内的云计算

云计算和大数据,两个高端大气上档次的词语,在如今这个浮躁的互联网、移动互联网社会,如果一个项目不接上这两个词, [...]

Facebook工程师的MemSQL体验 06月19日

Facebook工程师的MemSQL体验

大早起来,发现微博上全是这个牛逼哄哄的软件的介绍, @刘江CE : 前Facebook工程师创办的MemSQL [...]

推荐一个社会化评论系统——友言 09月06日

推荐一个社会化评论系统——友言

今天在网上看见一个不错的插件,就是社会化媒体评论插件,由于以前很讨厌wordpress的评论,干嘛每次写邮箱, [...]

《使用HTML、CSS和JavaScript开发Android程序》初读 09月05日

《使用HTML、CSS和JavaScript开发Android程序》初读

上周买的一本书,是关于用html、css、javascript开发android应用的一本书,因为搜索关键字的 [...]

say goodbye to GWF——SSH翻墙出来了 09月05日

say goodbye to GWF——SSH翻墙出来了

最近公司很严格,twitter 和 facebook都不能访问了,只能另外找找办法,不想再去买什么vpn之类的 [...]

IE iframe cookie session丢失问题【转】 07月04日

http://www.php-oa.com/2008/05/13/iframezhongkuayuchuandicookie.html

晕掉,IE真是超级破,还好我二年没用它了(用了二年linux做桌面).这次一个大问题,客户的一台主页使用了frame的方法来固定自己的域名指向一个二级,为了让用户看起来更加好.

但发现很多用户不能登陆,但有的用户也能登陆(现在才清楚能上的都是firefox)。查了好久,后来发现原来是IE有个叫P3P(The Platform for Privacy Preferences)隐私参数选择平台,这样的一个超强的功能.

在frameset里面,也就是里面的frame是来自第三方站点(不同IP或不同域名),那么默认情况下IE会自动禁用这些站点的cookie,也就是在请求某url时在HTTP header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏览器的。

但象IE 6.0和IE 7.0有个自己的标准.要支持P3P,IE 6的缺省隐私等级设置为”中”——即”阻止没有合同隐私策略的第三方cookie”。而在用户浏览a.php时 A.com写入的为第一方Cookie,其嵌入的iframe指向b.php.这时B.com写入的就为第三方Cookie了,所以它是被IE当在了大门外。

所以,每次当用户提交的cookie提交时,就挂掉了.因为传不到真实的服务器.

好了,不多讲了,直接讲解决方案. (更多…)

Thrift vs. Protocol Buffers 06月23日

Google recently released its Protocol Buffers as open source. About a year ago, Facebook released a similar product called Thrift. I’ve been comparing them; here’s what I’ve found:

Thrift Protocol Buffers
Backers Facebook, Apache (accepted for incubation) Google
Bindings C++, Java, Python, PHP, XSD, Ruby, C#, Perl, Objective C, Erlang, Smalltalk, OCaml, and Haskell C++, Java, Python
(Perl, Ruby, and C# under discussion)
Output Formats Binary, JSON Binary
Primitive Types bool
byte
16/32/64-bit integersdouble
string
byte sequence
map<t1,t2>
list<t>
set<t>
bool32/64-bit integers
float
double
string
byte sequence

“repeated” properties act like lists

Enumerations Yes Yes
Constants Yes No
Composite Type struct message
Exception Type Yes No
Documentation So-so Good
License Apache BSD-style
Compiler Language C++ C++
RPC Interfaces Yes Yes
RPC Implementation Yes No
Composite Type Extensions No Yes

Overall, I think Thrift wins on features and Protocol Buffers win on documentation. Implementation-wise, they’re quite similar. Both use integer tags to identify fields, so you can add and remove fields without breaking existing code. Protocol Buffers support variable-width encoding of integers, which saves a few bytes. (Thrift has an experimental output format with variable-width ints.)

The major difference is that Thrift provides a full client/server RPC implementation, whereas Protocol Buffers only generate stubs to use in your own RPC system.

Update July 12, 2008: I haven’t tested for speed, but from a cursory examination it seems that, at the binary level, Thrift and Protocol Buffers are very similar. I think Thrift will develop a more coherent community now that it’s under Apache incubation. It just moved to a new web site and mailing list, and the issue trackeris active.

第 1 页,共 3 页123