摘要:
1 Redis 内存存储结构 本文是基于 Redis-v2.2.4 版本进行分析. 1.1 Redis 内存存储总体结构 Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创建一个 redisDb 数组. 客户端在连接后,通过 SELECT 指令来选择一个 reidsDb,如果不指定,则缺省是redisDb数组的第1个(即下标是 0 ) redisDb. 一个客户端在...
阅读全文
posted @ 2012-04-17 10:16
ChaunceyHao
阅读(327)
推荐(0)
摘要:
目前磁盘都是机械方式运作的,主要体现在磁盘读写前寻找磁道的过程。磁盘自带的读写缓存大小,对于磁盘读写速度至关重要。读写速度快的磁盘,通常 都带有较大的读写缓存。磁盘的寻道过程是机械方式,决定了其随机读写速度将明显低于顺序读写。在我们做系统设计和实现时,需要考虑到磁盘的这一特性。 FastDFS是一个开源的高效分布式文件系统,它最初的实现,文件是按hash方式随机分布到多个目录中的,后来增加了顺序存放的做法。通过对比测试,发现文件按目录顺序存储,写文件IO效率明显高于按目录随机存储。 目前磁盘顺序读取的速度并不差,比如普通硬盘的IO可以达到每秒40~60MB,好一些的硬盘可以达到每秒1...
阅读全文
posted @ 2012-04-17 10:15
ChaunceyHao
阅读(627)
推荐(0)
摘要:
group varint 是一种极为高效的压缩和解压算法, 只针对 uint32整数,是一种针对特定数据类型的压缩算法, 压缩比不高, 但是速度极快。 int32整数可以通过zigZag转换为 uint32数据。 下面给了2张图 辅助大家理解varint 和 group varint 我的这个实现版本, 压缩 400M整数数据 耗时 0.56 秒, 解压 400M整数数据 耗时 0.35 秒 下面直接上代码, 看不懂的直接联系我 !!!!!! 123456789101112131415161718192021222324252627282930313233343536373839...
阅读全文
posted @ 2012-04-17 10:08
ChaunceyHao
阅读(538)
推荐(0)
摘要:
本文是作者在学习doclist压缩时的一点总结,希望以尽可能简单明了的方式描述各个算法的思想和适用场景,帮助同学们理解和比较。本文 并不涉及具体的算法实现,代码请大家自行google。这里需要强调的是“所谓的改进顺序”只是作者yy出来方便理解记忆,并不反应真实的压缩方法发展历 程。 1.什么是doclist? 倒排表的基本组成部分,看例子: Computer: 10,35,100,170,370,29000,30000,30010 表示computer这个词出现在编号(docid)为10,35,100,170,37029000,30000,30010的doc中,10,35,100,1...
阅读全文
posted @ 2012-04-17 10:06
ChaunceyHao
阅读(339)
推荐(0)
摘要:
1, spinlock介绍 spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得 锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其 他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当 (如临界区执行时间过长)会导致cpu busy飙高。 2, spinlock与mutex对比 2.1,优缺点比较 spinlock不会使线程状
阅读全文
posted @ 2012-04-17 10:06
ChaunceyHao
阅读(1119)
推荐(0)
摘要:
定义: 首先,我们定义一下定向抓取,定向抓取是一种特定的抓取需求,目标站点是已知的,站点的页面是已知的。本文的介绍里面,主要是侧重于如何快速构建一个实时的抓取系统,并不包含通用意义上的比如链接分析,站点发现等等特性。 在本文提到的实例系统里面,主要用到 linux+mysql+redis+django+scrapy+webkit,其中scrapy+webkit作为抓取端,redis作为链接库存 储,mysql作为网页信息存储,django作为爬虫管理界面,快速实现分布式抓取系统的原型。 名词解析: 1. 抓取环:抓取环指的是spider在存储中获取url,从互联网上下载网页,然后将网页...
阅读全文
posted @ 2012-04-17 09:30
ChaunceyHao
阅读(263)
推荐(0)
摘要:
我想,列出当前主流浏览器的版本发布历史是一件挺有趣的事情。 我相信最终会废除浏览器的版本号的两个因素是:快速发布版本和自动更新——无论哪个,如果我没搞错的话,都是Google Chrome的发明。 每个列表中都有一个橙色行表示间隔最久的一个版本 Internet Explorer 版本发布历史 版本# 发布时间 1 8月 16, 1995 2 11月 22, 1995 3 8月 13, 1996 4 10月, 1997 5 3月 18, 1999 5.5 7月 8, 2000 6 8月 27, 2001 7 10月 18, 2006 8 3月 19...
阅读全文
posted @ 2012-04-17 00:30
ChaunceyHao
阅读(267)
推荐(0)
摘要:
这是在css3 UI规范中新增的一个功能,用来控制内容的可选择性。 用法: 1 user-select:value; 值: auto——默认值,用户可以选中元素中的内容none——用户不能选择元素中的任何内容text——用户可以选择元素中的文本element——文本可选,但仅限元素的边界内(只有IE和FF支持)all——在编辑器内,如果双击/上下文点击发生在子元素上,改值的最高级祖先元素将被选中。-moz-none——firefox私有,元素和子元素的文本将不可选,但是,子元素可以通过text重设回可选。 实例——用鼠标拖动或双击下面的文字试下: 浏览器支持 目前,只有Gecko和w...
阅读全文
posted @ 2012-04-17 00:29
ChaunceyHao
阅读(443)
推荐(0)
摘要:
升级了浏览器到IE9,今天进入公司网站后台突然发现有些页面进不去了,F12调试显示有JS错误:DOM Exception: INVALID_CHARACTER_ERR (5) ,具体截图如下: 之前各类JS错误提示中貌似没见过这个,按照提示找到错误位置代码如下: 貌似和CreateElement有关,但是实在不明白,于是google了一把,有如下解释:http://stackoverflow.com/questions/5344029/invalid-character-dom-exception-in-ie9 原来IE9创建DOM元素的方式较之前有了改变,开始严格遵循标准的实现,不允许...
阅读全文
posted @ 2012-04-17 00:28
ChaunceyHao
阅读(564)
推荐(0)
摘要:
我们在Stage3D的底层API编写中,会经常遇到要处理以下情形:Vertex顶点在3D空间中的变换。这个行为会根据Render机制的不断刷新而形成3D物体在空间中整体坐标变换。在编写Stage3D的应用中,最基础常见的AGAL OpCode是这样:m44op,va0,vc0这个简单的OpCode构成了寄存器中的Vertex坐标的动态变换。那么接下来,就给出从头至尾的原理分析。首先,我们先要了解Stage3D API基本原理之外的矩阵乘法,如果你求学时代已经学过大量的矩阵计算理论,那么你应该庆幸你当初学习的这部分知识并不是没用的花瓶,现在终于有了用武之地。矩 阵乘法的基本理论是:一个mxn的矩
阅读全文
posted @ 2012-04-17 00:23
ChaunceyHao
阅读(428)
推荐(0)
摘要:
前几天,O'Reilly出版社发表了一本免费的在线书籍,是“What's New in Flash Player 11”,里面有一个关于立方贝泽尔曲线的小Demo,但是太过简单。那个Demo的源码是这样的:package{importflash.display.Sprite;[SWF(width="600",height="500",backgroundColor="#CCCCCC")]publicclassCubicBezierCurveextendsSprite{privatevardrawingHolder:Sp
阅读全文
posted @ 2012-04-16 23:41
ChaunceyHao
阅读(312)
推荐(0)
摘要:
Flash Player 11引入了一个全新的功能是异步解码位图的功能,这个功能对某些类型的Flash应用会很有效,尤其是需要加载大分辨率的位图的相册或游戏会有显著效果。这 个功能在Flash Player 11里的实现非常简单,需要使用flash.system.ImageDecodingPolicy这个类。这个类的使用,是通过 flash.system.LoaderContext类中制定imageDecodingPolicy属性的值。这个属性的两个值描述了不同的策略(来 自官方Help):ON_DEMAND:在需要时同步解码图像。此设置对较小的图像非常有用。ON_LOAD:在图像加载后立即.
阅读全文
posted @ 2012-04-16 23:35
ChaunceyHao
阅读(146)
推荐(0)
摘要:
网管员在工作中遇到的网络问题,故障现象都是千变万化、多种多样的。所以也不能用单一、固定的方法或知识去解决它们,必须根据实际的故障现象,结合 自己的工作经验,运用多种方法和知识灵活的排除故障。下面就是自己在实际工作中碰到的一则故障实例,通过对故障现象的分析,和故障的排除过程来说明排除网 络故障并不是一件简简单单的事情。 图1 公司网络服务器部署图 一、公司网络服务器部署架构 单位网络中的服务器部署结构图,如图1所示。为了确保重要设备的稳定性和冗余性,核心层交换机使用两台Cisco 4506,通过Trunk线连接。在核心交换机上连接有单位重要的服务器,如安全中心、DHCP、E-MAIL和WEB..
阅读全文
posted @ 2012-04-16 22:14
ChaunceyHao
阅读(847)
推荐(0)
摘要:
用Mid函数,substring是SQL Server的语法。
阅读全文
posted @ 2012-04-16 21:56
ChaunceyHao
阅读(303)
推荐(0)
摘要:
无线网络IP地址冲突是我们最为常见的网络故障之一,经常禁用然后启用。那么有时候这个方法就不管用了,那么如何解决呢?当无线接入点作为DHCP服务器工作时,它们可能会引起两个主要问题。 第一是增加IP地址冲突的可能性。市场上的大多数无线接入点是通过默认配置来分配客户端无线网络IP地址,其范围是192.168.0.x。这是一 个问题,因为在一个网段中包含多个无线接入点是相当普遍的情况。如果这些接入点每个都分配了相同的DHCP作用域,那么无线网络IP冲突将在所难免。请记 住,这些地址分配可能不仅局限于无线客户端。许多无线接入点也会分配IP地址给有线网络客户端,所以你可能在你的有线网络上遇到有线网络客户
阅读全文
posted @ 2012-04-16 21:34
ChaunceyHao
阅读(372)
推荐(0)
摘要:
有时候,当我们调用了缓存的API之后,我们就会认为:数据已经被换成了,之后就可以直接读取缓存中的数据。尽管情况很多时候如此,但是不是绝对的!很多的问题就是这样产生的! 我们通过一个例子来讲解。 例如,对于一个ASP.NET 应用而言,如果我们在一个按钮的Click事件中调用了缓存API,然后在页面呈现的时候,就去读取缓存,代码如下: 上面的代码照道理来说是对的,但是会发生问题。按钮点击之后回传页面,然后呈现页面的时候显示数据,流程没有问题。但是没有考虑到这样一个问题:如果服务器的内存紧张,而导致进行服务器内存的回收,那么很有可能缓存的数据就没有了! 这里有朋友就要说了:内存回收这么快? 这主.
阅读全文
posted @ 2012-04-16 13:36
ChaunceyHao
阅读(226)
推荐(0)
摘要:
当数据放在缓存中的时候,我们程序的多个线程都可以访问这个公共的区域。多个线程在访问缓存数据的时候,会产生一些竞争,这也是多线程中常常发生的问题。 下面我们分别从本地内存缓存与分布式缓存两个方面介绍竞争的带来的问题。 看下面的一段代码: 对于本地内存缓存,对于上面的代码,当这个三个线程运行起来之后,在线程1中,item的值很多时候可能为1,线程2可能是2,线程3可能是3。当然,这不一定!只是大多数情况下的可能值! 如果是对于分布式缓存,就不好说了!因为数据的修改不是立刻发生在本机的内存中的,而是经过了一个跨进程的过程。 有一些缓存模块已经实现了加锁的方式来解决这个问题,例如AppFabric。.
阅读全文
posted @ 2012-04-16 13:33
ChaunceyHao
阅读(256)
推荐(0)
摘要:
有时候,我们想要把一些大对象缓存起来,因为产生一次大对象的代价很大,我们需要产生一次,尽可能的多次使用,从而提升响应。 提到大对象,这里就很有必要对其进行一个比较深入的介绍了。在.NET中,所谓的大对象,就是指的其占用的内存大于了85K的对象,下面通过一个比较将问题说清楚。 如果现在有一个Person类的集合,定义为List<Person>,每个Person对象占用1K的内存,如果这个Person集合中包含了100个Person对象实例,那么这个集合是否是大对象呢? 回答是:不是! 因为集合中只是包含的Person对象实例的引用而言,即,在.NET的托管堆上面,这个Person集合
阅读全文
posted @ 2012-04-16 13:01
ChaunceyHao
阅读(387)
推荐(0)
摘要:
insert into Sd_Info(Title,Content,ClassID) select 标题,内容,4 from [;database=G:\ermusoft\Data\86-数学教案\SpiderResult.mdb].Content; insert into Sd_Info(Title,Content,ClassID) select 标题,内容,24 from [;database=G:\ermusoft\Data\86-数学教案\SpiderResult.mdb].Content where ID>4200 and id<4400;
阅读全文
posted @ 2012-04-15 23:13
ChaunceyHao
阅读(906)
推荐(0)
摘要:
自2000版本起,SQL Server企业版中引入分布式分区视图,允许你为分布在不同的SQL 实例的两个或多个水平分区表创建视图。 简要步骤如下:根据Check约束中定义的一组值把大表分割成更小的一些表。Check约束确保每个小表保存着不能保存在其他表的唯一数据。然后使用Union All创建分布式分区视图,把所有这些小表联结成单独的结果集。 这样对性能的改善是有益的,例如,如果视图根据日期分区,并用查询来返回仅保存在一个分区表中的行,那么SQL Server会智能地只搜索一个分区而不是分布式分区视图中的所有表。 我们假设一个场景,某公司成立上海和北京分公司,分别有各自的SQL ...
阅读全文
posted @ 2012-04-15 22:30
ChaunceyHao
阅读(202)
推荐(0)
摘要:
项目中使用dojox.grid.DataGrid组件来渲染页面数据,尤其是db记录的查询或是数据源的组成一致的时候。下面把grid的几个基本应用说一下。 做过多年开发,这些数据显示的组件逻辑大都是一样的。通过指定数据源中的field来加载数据源中特定数据列,这样server端的数据就能简单的显示出来了。 1.html页面引入grid。[html] view plaincopyprint?<divdata-dojo-type="dojox.grid.DataGrid"data-dojo-attach-point="defaultGrid"style=
阅读全文
posted @ 2012-04-15 22:28
ChaunceyHao
阅读(383)
推荐(0)
摘要:
前言为什么需要脚本引擎这里不多做说明。javascript就是使用最广的解析执行脚本语言,它背后就是一个脚本引擎。脚本引擎分为客户端的脚本引擎和服务端的脚本引擎,特别是服务端的脚本引擎,脚本引擎的性能直接影响了脚本解析执行的效率,影响到系统数据处理的能力,所以提高脚本引擎的解析性能是优化的一个重要环节。影响脚本引擎性能主要由2个方面:1.脚本引擎的技术平台2.脚本引擎的设计理念脚本引擎的技术平台在同一设计理念的情况下,c/c++下的脚本引擎性能要比java/c#下的脚本引擎性能要高,这取决于技术的选型,需要在开发效率和执行效率做一个取舍。脚本引擎的设计理念设计理念非常重要,设计的合理的java
阅读全文
posted @ 2012-04-15 22:28
ChaunceyHao
阅读(244)
推荐(0)
摘要:
当我们在应用中使用跨进程的缓存机制,例如分布式缓存memcached或者微软的AppFabric,此时数据被缓存在应用程序之外的进程中。每 次,当我们要把一些数据缓存起来的时候,缓存的API就会把数据首先序列化为字节的形式,然后把这些字节发送给缓存服务器去保存。同理,当我们在应用中要 再次使用缓存的数据的时候,缓存服务器就会将缓存的字节发送给应用程序,而缓存的客户端类库接受到这些字节之后就要进行反序列化的操作了,将之转换为我们 需要的数据对象。 另外还有三点需要注意的就是: 这个序列化与反序列化的机制都是发生在应用程序服务器上的,而缓存服务器只是负责保存而已。.NET中的默认使用的序列化机制不
阅读全文
posted @ 2012-04-15 11:05
ChaunceyHao
阅读(169)
推荐(0)
摘要:
Power Tools for Team Foundation Server已经针对11 beta版本做了更新。这些工具提供了没有包含在主要TFS发布版本中的重要功能。现在微软还没有在线上公布完整的特性列表,我们只能从安装文档中看到相关总结如下: 最佳实践分析器(Best Practices Analyzer) 带有图形化用户界面的诊断工具,你可以使用它执行以下工作: 验证对Team Foundation Server的部署是否依据推荐的最佳实践配置。找到不健康部署环境中问题的来源。对部署的配置情况抓取快照。获得过去14天内存储或者访问过数据的使用情况。其中包括一些特定的关于数据库表的信息,.
阅读全文
posted @ 2012-04-15 11:04
ChaunceyHao
阅读(251)
推荐(0)
摘要:
在2012年2月27日于西班牙巴塞罗那举办的世界移动通信大会上,Telefónica Digital(西班牙电信)和Mozilla一同揭晓了一项雄心勃勃的计划——打造首款基于开放互联网的使用HTML5标准的平台。据了解,该款开放互联网设备平台(Open Web Devices platform,简称OWD),将会于2012年正式上线。,这将是推进HTML5成为下一代手机重要生态系统中非常重要的一步,并会降低提供智能手机功能的手机价格。 亮点一:基于HTML5标准,以普通手机的价格获得智能手机的功能Telefónica Digital的产品研发和创新团队与开放互联网标准的先锋
阅读全文
posted @ 2012-04-14 08:58
ChaunceyHao
阅读(165)
推荐(0)
摘要:
近日,北京谋智网络技术有限公司(Mozilla Online Ltd.)与北京中科红旗软件技术有限公司达成战略合作,联合推出“红旗Linux专版火狐浏览器”。该版本致力于为Linux用户提供更便捷的上网体 验,将全面预置于红旗Linux个人版操作系统产品中,甚至会延伸至服务器产品线进行集成。双方的这次深度合作,旨在打造一款基于Linux操作系统、能 为用户带来更好操作体验的开源应用产品。Mozilla Firefox火狐浏览器是Mozilla基金会开发的一款自由、开放、开源、可定制的浏览器。桌面版火狐浏览器支持Windows, Mac和Linux三大平台。火狐浏览器因其高度定制性而受到众...
阅读全文
posted @ 2012-04-14 08:57
ChaunceyHao
阅读(299)
推荐(0)
摘要:
上周Mozilla在巴黎的IETF 83会议上播放了一个视频,它演示了两个拥有BrowserID 认证的账户通过经编译后支持WebRTC功能的Firefox进行视频会议和通话。虽然离将WebRTC集成到Firefox略有些时日,但是我们非常兴奋的看到这些功能已经雏形初现! 视频演示链接:http://cf.cdn.vid.ly/0l0x1b/webm.webm在Mozilla Labs里,我们一直在实验将社交功能集成到浏览器中。将这个想法和WebRTC结合起来真是个不错的主意。这样两个登录到BrowserID(现称为Persona)的账户就能直接视频通话了。一旦安装了SocialAPI 扩展,
阅读全文
posted @ 2012-04-14 08:56
ChaunceyHao
阅读(337)
推荐(0)
摘要:
本周我们参与了在巴塞罗那举办的2012世界移动通信大会,这是一场最盛大的移动产业路演。我们的目标是与行业的经营者,供应商和开发商碰面,以进一步促进为消费者和开发者服务的开放的、以人为本的跨设备和平台的互联网。今 天,我们宣布了很多针对这一目标的非常重要的里程碑。首先,是Telefónica支持基于开放移动设备的我们的"Boot to Gecko”(B2G)项目。并且,行业中的领军者,Adobe和高通(Qualcomm)也都表示支持该项目。大家将通力将HTML5标准打造为移动行 业的一个可行的平台选项。在一场合作媒体发布会上,Telefónica透露了他们想要和我们
阅读全文
posted @ 2012-04-14 08:56
ChaunceyHao
阅读(181)
推荐(0)
摘要:
先看看效果吧~~ 方法很简单,只需要:将移动版QQ(http://w.qq.com/)登录后用侧栏打开 如果想更方便,将移动版QQ加入书签,书签属性改成用侧栏打开,然后就可以一键在火狐侧栏使用QQ喽~~~ 【补充】 设置为在侧栏打开的具体步骤如下: 1)将移动QQ网页添加为书签 2)右击书签,选择属性,选中“在侧栏中载入此书签”即可
阅读全文
posted @ 2012-04-14 08:54
ChaunceyHao
阅读(379)
推荐(1)
摘要:
有机会试过Visual Studio 11或者Visual Studio Async CTP的开发人员想必对Visual Basic和C#中新的Await和Async关键字一定不陌生。最近,微软披露了.NET Framework 4.5中一些新的变化细节,用于一步扩展异步编程的能力。 .NET 4.5中编写异步代码已经可以信手拈来,它不再需要借助非常复杂的方法或回调。新的async任务结构在开发人员看来会非常熟悉,例如下面的例子展示了一个同步方法声明以及它对应的异步声明: 'synchronous method Private Function GetInfo(url As Strin
阅读全文
posted @ 2012-04-13 09:45
ChaunceyHao
阅读(382)
推荐(0)
摘要:
在广大开发人员的强力要求下,CodePlex为源代码控制提供了Git支持。Git是CodePlex托管项目第三种可用的源代码控制系统,前两种是TFS和Mercurial。(第四种选项是对TFS使用SVN绑定)。 标准的DVCS工作流,如分叉(fork)和拉取(pull)请求,由Git绑定支持。其他特性,如问题跟踪与讨论列表,则继续像以前一样工作。新项目创建可以直接选择Git,而如果想把已有的项目转为Git,则需要联系CodePlex支持寻求帮助 。 Brain Harry说,Git支持仅仅是微软对CodePlex投资新承诺中的第一步。 我们努力想把CodePlex打造成一个与微软平台相关的最.
阅读全文
posted @ 2012-04-13 09:44
ChaunceyHao
阅读(210)
推荐(0)
摘要:
Silverlight Embedded是专门为嵌入式设备设计的,那些设备不一定拥有网络连接能力,或者只会偶尔连接。它选择XAML作为UI层,从而嵌入式系统的设计师和开 发人员可以实现工作的分离,就像.NET和Web开发人员一样。但是硬件的限制意味着本地编程语言更适合。 重要的是要注意到这并不是Windows 8或者WinRT。Silverlight Embedded拥有对操作系统暴露出来的Win32 API以及硬件的完整访问权限。在Silverlight之下,所有遗留的Windows Embedded类库都可以继续使用。 也就是说,它们之间有类似之处。例如,通过DirectDraw或者Op.
阅读全文
posted @ 2012-04-13 09:43
ChaunceyHao
阅读(244)
推荐(0)
摘要:
CQRS作为一种模式,适合需要高可伸缩性和性能的应用程序,它近来变得越来越流行。Mark Seemann在文章《CQRS On Windows Azure》中,使用示例探究了如何在Windows Azure平台中使用这种模式。 CQRS的意思是命令查询责任分离(Command Query Responsibility Segregation),这个模式所基于的想法是,你能够使用与读取信息不同的模型来更新信息。这让你可以对读取和写入操作区别对待,可能会使用不同的 数据访问技术访问不同的数据库,甚至使用其他架构模式像Eventual consistency和Event Sourcing。文中的..
阅读全文
posted @ 2012-04-13 09:43
ChaunceyHao
阅读(163)
推荐(0)
摘要:
Faker是Ruby Faker gem的C#开源移植实现,主要用于方便地生成仿造数据(虽然是假数据,但是看起来很像真的),包括姓名、地址、电话号码等等。无论是用于演示,还是用作测试数据,Faker都非常好用。 那么它是如何工作的呢?阅读它的代码你会发现——解决方案包含了一些资源文件,这些文件包含了每个属性(attribute)的一些可能的优质值 (例如,First Name,Last Name等等),之后通过代码随机混合和匹配这些值来生成数据。每个属性预留的值越多,组合就越多,从而结果数据就越丰富。根据你的特定需要,可以修改资 源文件来反映你的数据需求(例如,限定于某一区域的姓名或地址)。.
阅读全文
posted @ 2012-04-10 17:05
ChaunceyHao
阅读(409)
推荐(0)
摘要:
当您在应用架构中用到命令模式(Command Pattern)或服务器端代理设计模式(Server Delegate Design pattern)时,本章描述的事务设计模式就比较适合了。在本模式中,服务器端代理组件,作为对服务器的远程接入点,拥有事务并负责对事务实施全面的管 理。其他任何组件,包括客户端组件、领域服务组件、或是持久化组件都不负责管理事务,它们甚至不会察觉到它们正在使用到了事务。 命令模式是一种非常有用的设计模式,它解决了关于客户端事务管理以及EJB中的很多常见问题。这种设计模式背后最基本的原则是,客户端功能被包装在 所谓”命令(command)“中,提交给服务器端以便执行。.
阅读全文
posted @ 2012-04-10 16:29
ChaunceyHao
阅读(142)
推荐(0)
摘要:
Hazelcast是面向Java的缓存、集群及数据分发解决方案。最近,它的2.0版本发布了。作为新版本的一部分,该产品提供了商用企业版和免费的开源社区版。 其中,社区版在Apache许可2.0下发布,并托管于Google Code中。2.0版本包含了一个分布式备份功能,用以确保每个结点都能均匀地被所有其他结点备份。Hazelcast创始人Talip Ozturk告诉InfoQ说,“我相信我们的备份分发是一个全新的解决方案”。 采用分布式数据备份,结点在丢失时仅会对集群造成很小的影响。这点在内存中有大数据时尤为重要。 Hazelcast解决方案的工作原理是将差不多大小的数据分布到集群中的每个..
阅读全文
posted @ 2012-04-10 15:26
ChaunceyHao
阅读(394)
推荐(0)
摘要:
Fabric Engine 是一款可以让 JavaScript 和 Python 一类的动态脚本语言完成高性能编程的解决方案。 Fabric Engine 具有以下特点: 高性能 根据在 Amazon EC2 Fabric Engine 上使用 Monte Carlo Value-at-Risk 测试的结果表明,使用了 Fabric Engine 的 Node.js 结果完全可以媲美使用多线程 C++ 技术实现的结果,同样的相比单纯使用 Node.js 也有显著的提升。 可扩展性 同样的测试平台上的 Node.js 并发请求数显示当使用了...
阅读全文
posted @ 2012-04-01 23:06
ChaunceyHao
阅读(202)
推荐(0)
摘要:
BrowserQuest 是 Mozilla 推出的一款仅使用标准 HTML5 技术实现的多人在线网络 RPG 游戏。 游戏采用活泼的 8 位机画风,颇有早期 FF 的风格。利用 HTML5 Canvas 完成全部渲染任务,使用 Web Workers 完成适时地图载入,并通过 WebSocket 实现和远程基于 Node.js 的服务器的持续性交互。 BrowserQuest 支持桌面版本的 Firefox、Chrome、Safari 和移动平台上的 Safari Mobile 及 Firefox for Android,Opera 需要手动打开了 WebSocket 支持。 更多...
阅读全文
posted @ 2012-04-01 23:05
ChaunceyHao
阅读(300)
推荐(0)
摘要:
Potix,这家提供ZK框架的公司最近发布了该基于Java的Ajax Web应用框架的6.0版。ZK是一款开源Java框架,使得开发者能够基于Ajax(无需编写任何JavaScript)来开发丰富的互联网应用。除了提供样例演示外,公司官方网站还罗列了几个现实生活中使用ZK的应用。 和Google Web Toolkit采用的方式类似,ZK抽 象了所有JavaScript和HTML,开发者只需关注运行在服务器端的面向业务逻辑的Java代码即可。这可以通过实现一个在服务器端的事件引擎和一 个在客户端(Web浏览器)的JavaScript来达到。按这种方式,服务器端数据和客户端呈现之间的同步完全是自
阅读全文
posted @ 2012-04-01 09:08
ChaunceyHao
阅读(298)
推荐(0)
摘要:
在.NET 4.0中,Task类暴露了IDisposable接口。Task可被回收(disposable)是为了清理IAsyncResult接口中AsyncWaitHandle属性暴露的等待句柄(wait handle)。在.NET 4.0中,等待句柄只有在读取AsyncWaitHandle属性,或者使用Task.WaitAll、Task.WaitAny时才会被创建,其他情况调用Task.Dispose都是多余的。 遗憾的是,.NET 4.0中的Task在处理ObjectDisposedException时显得过于武断:一旦调用Dispose释放等待句柄之后,即使其他属性与之毫无联系,剩余对象
阅读全文
posted @ 2012-03-31 10:10
ChaunceyHao
阅读(210)
推荐(0)