摘要: LightCloud使用一致性Hash算法(Consistent Hashing),好处就是当添加新节点的时候不用移动大量数据了。还不知道为什么?Consistent Hashing介绍。 一致性Hash算法也不算什么新鲜玩意儿了,凡是分布式系统都不免能见到它的身影,那LightCloud特别之处在哪里呢? 阅读全文
posted @ 2009-03-08 20:32 tmfc 阅读(994) 评论(0) 推荐(0) 编辑
摘要: 2009年度的MONSTER OF COMPRESSION排名,提供了大量压缩工具(类库)的性能测试,可以通过榜单来找合适你的压缩算法。 阅读全文
posted @ 2009-03-08 18:52 tmfc 阅读(1891) 评论(3) 推荐(0) 编辑
摘要: LightCloud是一个性能堪比Memcached的分布式的键-值数据库,但相对于易失的Memcached,它是持久化存储的,在传统的关系数据库之外提供了另一种选择。 阅读全文
posted @ 2009-03-07 21:45 tmfc 阅读(4334) 评论(8) 推荐(0) 编辑
摘要: 翻译自Maoni's WebLog 文章Using GC Efficiently – Part 1,Maoni是微软CLR Performance组的成员 本文的目标是解释一些东西的代价好让你可以更好使用托管内存-而不是解释GC本身-只是解释如何使用它而已。我假设绝大多数人对于使用垃圾收集感兴趣,而不想自己实现一个。本文假设读者对GC有基础的了解,如果你需要一些关于GC的背景知识,Jeff Richter写了两篇非常好的MSDN文章,1和2。 首先我会关注工作站级类型的GC(Wks GC),然后我会解释服务器类型的GC(Svr GC)与前者的区别和你该用哪个(但是通常情况下你不需要选择,而我也会解释为什么你不需要)。 阅读全文
posted @ 2008-07-29 13:53 tmfc 阅读(1678) 评论(5) 推荐(0) 编辑
摘要: Web展现 最近几年企业应用中最大的改变无疑是基于Web浏览器的用户界面的崛起。优势在于:不需要部署任何客户端软件,一致的UI使用方法,便利的全球访问。 通常Web服务器上有着各种各样的配置文件来确定哪些URL该由那个程序处理,一个Web服务器可以支持多种程序。它的工作只是解释请求(request)的URL并把控制交给服务器端程序。 服务器端程序基本上可以分为两种基本的类型:script和server page 阅读全文
posted @ 2006-12-25 20:55 tmfc 阅读(2613) 评论(3) 推荐(0) 编辑
摘要: 结构映射模式 当人们谈论对象-关系映射时,大部分的人都是在讨论结构映射模式,大部分模式都和Table Data Gateway无关,某些可以用在Row Data Gateway或Active Record上,大部分都需要用在Data Mapper上。 映射关系 关键点是联系对象和关系的不同的方法,这会引出两个问题。第一个问题在表现(representation)上,对象保持引用而关系数据库保持的是键的关联。第二个问题是,对象可以很容易的使用集合来保持多个与它有关的其他对象的引用,但是关系数据库却正好相反,相关对象会有一个到主对象的反向的引用。比如一个部门有多个员工,部门对象持有多个员工的引用,但是再关系数据库中,每个员工的数据行中会有一个到部门表的外键连接,而不是在部门表中引用多个员工(因为关系数据库不支持这样做)。 解决表现问题的方法是在对象中保持一个Identity Field,使用它来作为关系数据库的键。当你访问数据库中的外键时,你使用的是Foreign Key Mapping来连接适当的对象间的连接。如果你没有在Identit 阅读全文
posted @ 2006-12-19 19:54 tmfc 阅读(2469) 评论(4) 推荐(0) 编辑
摘要: 架构模式 架构模式的选择对后续的程序开发有着深远的影响并且难以切换(难以从一种模式重构到另一种),所以必须仔细的选择架构模式。 将SQL语句嵌在逻辑代码中会显得非常的丑陋,DBA也希望能够通过了解SQL语句来决定怎样对数据库进行索引,所有这一切的原因让我们倾向于将访问数据库的SQL语句从领域逻辑中分离出来。 以数据表结构来组织类的结构是一个好主意,这样类和数据表可以一一对应。这些类组成了一个数据表的Gateway,Gateway主要分为两种,Row Data Gateway和Table Data Gateway。 Row Data Gateway中,数据表中的每一行对应于一个对象实例,比较自然的符合了面向对象的思想。 Table Data Gateway中,整个数据表只需要一个对应的对象实例。而用来储存数据的则是Record Set,一个通用的数据结构,适合于任何一张表。 阅读全文
posted @ 2006-12-18 20:29 tmfc 阅读(3578) 评论(7) 推荐(0) 编辑
摘要: 三个主要的模式:Transaction Script,Domain Model,Table Model 最简单的方法是使用Transaction Script,Transaction Script本质上就是从表现层接受输入,进行验证和计算,保存进数据库,调用其他外部操作并且返回更多的信息,帮助计算并组织数据给表现层的过程。基本上就是将用户可能做的事情组织成一个个的函数,所以可以将其想象成动作的脚本,或者一个个事务。 Transaction Script的优势: 是几乎每个开发者都了解的简单的过程模式 配合使用简单的数据库层模式,如Row Data Gateway,Table Data Gateway时工作的很好 非常明显的边界:以打开事务开始,关闭事务结束。 但是,在领域逻辑变得越来越复杂时,Transaction Script也会有很多劣势,会出现很多难以消除的重复代码,子方法越来越多后,缺乏清晰的结构。 这个时候,就该以面向对象方式处理逻辑的Domain Model模式登场了。我们主 阅读全文
posted @ 2006-10-10 17:09 tmfc 阅读(3202) 评论(1) 推荐(0) 编辑
摘要: 分层是用来分割复杂软件系统的最常用手段之一。如:操作系统建立在设备驱动和CPU指令上;FTP建立在TCP层之上,TCP建立在IP层上,IP建立在以太网上。 把分层结构想像成蛋糕,每一层都建立在它下一层上。意味着上层使用下层的服务,但是对更底层的服务一无所知。如,第四层使用第三层定义的服务,第三层使用第二层的服务,但是第四层并不了解第二层的服务。 分层的优势: 可以单独了解一层的东西,而不用管其他层 可以替换某一层的实现 最小化层之间的依赖 为建立标准做好准备 一个低层可以被很多高层使用(提高复用率) 分层的劣势: 分层对部分东西,而不是全部东西,有一个良好的封装。有时会引起连锁的更改,如,为了在用户界面上多显示一个属性,必须更改从数据库到UI之间的所有层。 额外的层会降低性能 阅读全文
posted @ 2006-09-26 21:33 tmfc 阅读(4738) 评论(6) 推荐(0) 编辑
摘要: 我的前两篇blog原意是想通过一个故事说明委托的来龙去脉,但是后来的主题却变成了解耦的一些方法介绍,对于委托本身的关注反而少了,加上编故事的水平不高,有点虎头蛇尾的感觉,大家见谅,以后有机会再来好好整理以下。 在网上找几篇好文来补充一下委托的内容: 台湾msdn的大内高手专栏,蔡学镛先生的好文(繁体+台湾术语,希望大家看得懂): 函数指针进化论(上) 函数指针进化论(下) 阅读全文
posted @ 2006-09-18 11:45 tmfc 阅读(1096) 评论(0) 推荐(0) 编辑