专注于Web技术的研究

oracle,linux,java,open source,c#,搜索引擎

博客园 首页 新随笔 联系 订阅 管理

2010年4月19日 #

摘要: 在上一篇随笔中,对COMET使用的类和作用进行了简短的介绍,从本篇随笔开始,将从实体类开始,对COMET的核心进行构建分析。 CometMessage类是COMET的通信载体,对消息的主体进行抽象,实际上这个类是最容易进行扩展的,因为从设计上看,它只是一个消息的容器。而诸如地理坐标,业务数据等,都可以通过这个类来进行直接扩充。 阅读全文
posted @ 2010-04-19 14:01 一条辉 阅读(1267) 评论(3) 推荐(0) 编辑

摘要: COMET的理念是先进而直接的,从服务器发布信息,同时让浏览器(也可以是客户端)接收并响应消息事件。就是这样简单的理念,造成了系统设计上的多重麻烦。 首先就是如何让我们的浏览器接收到服务器发来的事件呢? 有一种实现方式是借由无实体大小的FLASH,IFRAME或者APPLET等组件来间接打通客户端SOCKET,然后向这些元件中推入信息,并通过javascript线程,得到元件返回的信息(当然也有极个别情况下,由这些元件来直接向页面注入信息)。 从最终结果看,我们好似得到了一个服务器的稳定连接,并刷新了页面信息。但是实际上,这样的实现方式实在是有点不够“直接”。 阅读全文
posted @ 2010-04-19 12:37 一条辉 阅读(1753) 评论(1) 推荐(1) 编辑

2010年4月16日 #

摘要: 还在为AJAX赞叹的时候,COMET竟也悄悄降临,更有甚者已经将COMET比作是AJAX的接班人。暂且不考虑服务性能和维持connection的负担,COMET的日益走红,让SERVER PUSH这样在传统C/S模式下需要借助线程服务和SOCKET通信的实现,衍生成为了借助事件和Script注册机制的WEB应用框架。 SERVER PUSH就如同它自己的名字一样,将更多华丽的web体验“推”进了我们的视野。 阅读全文
posted @ 2010-04-16 14:17 一条辉 阅读(2989) 评论(1) 推荐(0) 编辑

2010年4月6日 #

摘要: 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新、发送请求。本文首先介绍、比较了常用的“服务器推”方案,着重介绍了 Comet - 使用 HTTP 长连接、无须浏览器安装插件的两种“服务器推”方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile 的流方式。最后分析了开发 Comet 应用需要注意的一些问题,以及如何借助开源的 Comet 框架-pushlet 构建自己的“服务器推”应用。 阅读全文
posted @ 2010-04-06 15:38 一条辉 阅读(677) 评论(1) 推荐(0) 编辑

2010年3月29日 #

摘要: 蓝斯登原则:在你往上爬的时候,一定要保持梯子的整洁,否则你下来时可能会滑倒。 提出者:美国管理学家蓝斯登。 点评:进退有度,才不至进退维谷;宠辱皆忘,方可以宠辱不惊。 卢维斯定理 :谦虚不是把自己想得很糟,而是完全不想自己。 提出者:美国心理学家卢维斯 点评:如果把自己想得太好,就很容易将别人想得很糟。 托利得定理: 测验一个人的智力是否属于上乘,只看脑子里能否同时容纳两种相反的思想,而无碍于其处世行事。 提出者:法国社会心理学家托利得 点评:思可相反,得须相成。 阅读全文
posted @ 2010-03-29 17:57 一条辉 阅读(321) 评论(2) 推荐(0) 编辑

摘要: 有七个人曾经住在一起,每天分一大桶粥。要命的是,粥每天都是不够的。 一开始,他们抓阄决定谁来分粥,每天轮一个。于是乎每周下来,他们只有一天是饱的,就是自己分粥的那一天。 后来他们开始推选出一个道德高尚的人出来分粥。强权就会产生腐败,大家开始挖空心思去讨好他,贿赂他,搞得整个小团体乌烟障气。 然后大家开始组成三人的分粥委员会及四人的评选委员会,互相攻击扯皮下来,粥吃到嘴里全是凉的。 最后想出来一个方法:轮流分粥,但分粥的人要等其它人都挑完后拿剩下的最后一碗。为了不让自己吃到最少的,每人都尽量分得平均,就算不平,也只能认了。大家快快乐乐,和和气气,日子越过越好。 阅读全文
posted @ 2010-03-29 16:04 一条辉 阅读(586) 评论(0) 推荐(0) 编辑

2010年3月24日 #

摘要: Hash 算法的一个衡量指标是单调性( Monotonicity ),定义如下: 单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。 容易看到,上面的简单 hash 算法 hash(object)%N 难以满足单调性要求。 阅读全文
posted @ 2010-03-24 17:56 一条辉 阅读(700) 评论(0) 推荐(0) 编辑

摘要: Cassandra 项目是Facebook在2008年开源出来的,随后Facebook自己使用Cassandra的另外一个不开源的分支,而开源出来的 Cassandra主要被Amazon的Dynamite团队来维护,并且Cassandra被认为是Dynamite2.0版本。目前除了Facebook之外,twitter和digg.com都在使用Cassandra。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。我看到有文章说Facebook的Cassandra群集有超过100台服务器构成的数据库群集。Cassandra也支持比较丰富的数据结构和功能强大的查询语言,和MongoDB比较类似,查询功能比MongoDB稍弱一些,twitter的平台架构部门领导Evan Weaver写了一篇文章介绍Cassandra:http://b 阅读全文
posted @ 2010-03-24 17:54 一条辉 阅读(3650) 评论(1) 推荐(0) 编辑

摘要: 前言 在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了。相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由client端的api来决定的,api根据存储用的key以及已知的服务器列表,根据key的hash计算将指定的key存储到对应的服务器列表上。 基本的原理以及分布 在这里我们通常使用的方法是根据 key的hash值%服务器数取余数 的方法来决定当前这个key的内容发往哪一个服务器的。这里会涉及到一个hash算法的分布问题,哈希的原理用一句话解释就是两个集合间的映射关系函数,在我们通常的应用中基本上可以理解为 在集合A(任意字母数字等组合,此处为存储用的key)里的一条记录去查找集合B(如0-2^32)中的对应记录。(题外话:md5的碰撞或者说冲突其实就是发生在这里,也就是说多个A的记录映射到了同一个B的记录) 阅读全文
posted @ 2010-03-24 16:18 一条辉 阅读(18922) 评论(0) 推荐(5) 编辑

2010年3月17日 #

摘要: 晚上花了一段时间学习了一下XML-RPC,简单的说,就是在Internet上实现远程的方法调用的一种规范和实现。其实这种规范可真是不能算少,DCOM、CORBA、SOAP、RMI,那么XML-RPC有啥优势呢?"Does distributed computing have to be any harder than this? I don’t think so." — B... 阅读全文
posted @ 2010-03-17 11:28 一条辉 阅读(576) 评论(0) 推荐(0) 编辑