zhuweisky
君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。
ESFramework,基于.NET的通信框架。DataRabbit,数据存取框架,包括数据库访问框架、实体缓存、内存数据库。sky.zhuwei@163.com
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 242 文章- 1 评论- 1757
置顶随笔
[置顶]ESBasic 可复用的.NET类库(00) -- 开源前言
摘要: 自从03年正式使用.NET开发以来,已经走过了6个年头,这期间我积累了几套类库和框架,ESBasic便是其中最基础的一个类库。现在我将它开源出来,希望能让感兴趣的朋友有所启发。加入QQ群:37677395,一起探讨ESBasic。
阅读全文
posted @
2009-08-25 09:54
zhuweisky 阅读(4387) |
评论 (41)
|
编辑
[置顶]DCFramework 动态分布式计算框架(00) -- 序
摘要: 分布式计算最基本的目的之一就是为了充分利用空闲的计算节点的计算能力。通常,我们首先会将要被分布式计算的程序在每个计算节点部署好,然后才可以调用分布式计算。这种“部署”是一种静态的。之所以称为静态的,是因为还有一种更动态更灵活的方式 -- 我们可以随时的、动态的将我们新完成的程序自动【提交】到已经部署好的分布式框架里动态运行起来。
阅读全文
posted @
2009-05-28 09:29
zhuweisky 阅读(1976) |
评论 (10)
|
编辑
[置顶]DataRabbit 企业级的数据存取框架(00) -- 序
摘要: DataRabbit支持基于关系(Relation)和基于ORM的数据库操作,内置了对Oracle和SqlServer的支持,并且可以通过插件的方式提供对其它类型的数据库的支持。加入QQ群:37677395,一起探讨DataRabbit。
阅读全文
posted @
2007-03-19 16:36
zhuweisky 阅读(9095) |
评论 (46)
|
编辑
[置顶]ESFramework网络通信框架 -- 序
摘要: ESFramework是一套高度灵活的、可复用的、轻量级通信框架,支持Tcp和Udp协议,支持服务端和客户端开发,支持流协议和文本协议。ESFramework的QQ群:37677395
阅读全文
posted @
2006-05-28 11:05
zhuweisky 阅读(23154) |
评论 (79)
|
编辑
2010年1月18日
ESBasic 可复用的.NET类库(20) -- TopN排行榜容器 TopNOrderedContainer
摘要: 1.缘起:假设我们的会员管理系统有一个排行榜的功能,需要每隔一段时间就对系统中的所有会员(假设会员数有100万)的积分进行排序,然后对其中的前100名进行某些奖励。 这是一个典型的TopN算法――对巨大数量的对象进行排序,然后只需要取出最Top的前N名(N比对象总数小很多),作为排行榜的数据。 解决这样的问题,我们要注意一点,如果我们每次都对所有的对象进行完全排序,那无疑效...
阅读全文
posted @
2010-01-18 10:00
zhuweisky 阅读(1411) |
评论 (3)
|
编辑
2010年1月5日
ESBasic 可复用的.NET类库(19) -- 热缓存 IHotCache
摘要: 1.缘起: 假设我们有一个订单系统,现在这个系统要增加一个功能――允许客人查核他认为有问题的订单的详细信息。当客人觉得自己的某个订单不对劲时,他首先会从订单系统查询这个订单的详细信息,然后打电话告诉我们的客服有问题的订单的编号,客服再去查核,如果属实,客服还要进一步上报,如果该订单非常重要,则可能需要更进一步上报复查等。 从这个需求我们看到,同一个订单可能会在比较短的时间内...
阅读全文
posted @
2010-01-05 10:13
zhuweisky 阅读(1621) |
评论 (5)
|
编辑
2009年12月21日
ESBasic 可复用的.NET类库(18) -- 智能字典缓存 ISmartDictionaryCache
摘要: 1.缘起:假设我们有一个会员管理系统,需要向各方提供查询会员基础资料的功能。会员一经注册,其基础资料就将不再发生变化(如会员帐号、身份证ID、注册时间等等)。基于这样的需求,我们可以将会员的基础资料“永久地”缓存在内存中,从而提升对任何一个会员基础资料的查询速度。我设计了ESBasic.ObjectManagement.Cache.ISmartDictionaryCache...
阅读全文
posted @
2009-12-21 16:38
zhuweisky 阅读(1735) |
评论 (4)
|
编辑
2009年12月10日
ESBasic 可复用的.NET类库(17) -- 对象获取器IObjectRetriever
摘要: 1.缘起:ESBasic中许多管理对象的容器都用到了这个ESBasic.ObjectManagement.IObjectRetriever接口,所以单独将其提出来介绍一下。当我们向对象容器(Container)请求某个对象时,也许目标对象还未加载到容器中,这可能是因为容器在初始化的时候就没有加载这个对象,也有可能是因为这个对象是容器初始化以后新增到数据库(当然也有可能是其它的持久化存储)的。在这种...
阅读全文
posted @
2009-12-10 09:12
zhuweisky 阅读(1274) |
评论 (0)
|
编辑
2009年11月21日
ESBasic 可复用的.NET类库(16) -- 定时刷新缓存管理器 IRefreshableCacheManager
摘要: 1.缘起: 为了提升系统的性能或减轻数据库的压力等原因,我们经常在系统中使用缓存来把那些经常使用的数据保留在内存中。如果因为某些原因,缓存中这些经常使用的数据不能及时与数据源进行同步更新,那么采用定时刷新缓存中的数据有可能就是一种合适的选择。 如果你的缓存是定时刷新,那么你就需要自己为其维护一个定时器或循环引擎。如果你的系统中像这样定时刷新的缓存有多个,而且每个缓存定时刷新的时间间隔又要求不一样,...
阅读全文
posted @
2009-11-21 10:09
zhuweisky 阅读(1560) |
评论 (4)
|
编辑
2009年11月11日
ESBasic 可复用的.NET类库(15) -- 对象池 IObjectPool
摘要: 1.缘起: 对象池应该是一个“历史悠久”的概念了,像我们经常说的线程池、还有ADO.NET中的数据库连接池等,都属于对象池的应用。 我们的应用有时也会碰到需要使用对象池的情况,我举个例子说明一下。假设,我们需要记录某个类MyClass的每个方法每次被调用时方法执行所消耗的时间,而且,这个类是使用在多线程的环境中的,每个方法都可以同时在多个线程中执行,不需要被同步,这样可以使...
阅读全文
posted @
2009-11-11 09:43
zhuweisky 阅读(1564) |
评论 (1)
|
编辑
2009年11月4日
ESBasic 可复用的.NET类库(14) -- 优先级管理器 IPriorityManager
摘要: 1.缘起: 假设我们的订单处理系统所要处理的订单是有优先级的,也就是说,不同的订单类型所要求被处理的紧迫程度不同,对那些优先级高的注单要先处理,对于优先级低的注单可稍后处理。对于处于同一优先级的订单了,就按照其到达的先后顺序进行处理。 这是一个典型的管理具有优先级的对象的需求,注单就是具有优先级(With Priority)的对象。我设计了ESBasic.ObjectManagement.Mana...
阅读全文
posted @
2009-11-04 16:03
zhuweisky 阅读(1431) |
评论 (2)
|
编辑
2009年10月27日
ESBasic 可复用的.NET类库(13) -- 分组对象管理器 IGroupingObjectManager
摘要: 1.缘起: 假设我们的订单系统需要管理所有未处理的订单,而客人经常需要查询属于自己的未处理的订单列表。另外,可能客服人员也需要根据订单ID迅速地找到对应的未处理订单。基于第一个需求,我们就可以将未处理的订单依据客人的帐号进行分组管理。 我设计了ESBasic.ObjectManagement.Managers.IGroupingObjectManager分组对象管理器来完成对对象进行分组管理的功能...
阅读全文
posted @
2009-10-27 15:09
zhuweisky 阅读(1397) |
评论 (2)
|
编辑
2009年10月21日
ESBasic 可复用的.NET类库(12) -- 对象管理器 IObjectManager
摘要: 1.缘起:我们经常需要对一些动态对象进行管理,最常见的例子就是在线用户管理。当一个用户成功登陆到服务器后,我们就需要将其管理起来;当他退出后,就不再需要再管理他了。这就是所谓动态对象的含义,这些对象并不是一直需要被管理,只有当其被激活后,才需要被管理。它们总是在“激活”状态和“非激活”状态之间不断地切换。我设计了对象管理器ESBasic.Object...
阅读全文
posted @
2009-10-21 09:43
zhuweisky 阅读(1982) |
评论 (5)
|
编辑
2009年10月15日
ESBasic 可复用的.NET类库(11) -- 双向映射 IBidirectionalMapping
摘要: 1.缘起:假设我们的用户管理系统要求用户的ID和Name都必须是唯一的,并且用户的ID和Name一经确定就不能被修改。而且管理系统经常需要根据ID来查找Name,也经常需要根据Name来查找ID。根据这样的需求,我们可以考虑使用一个Dictionary来将ID和Name缓存起来,通常ID作为Key,Name作为Value。这样便可实现通过ID查询Name的快速查找,但是,通过Name查找ID就不是...
阅读全文
posted @
2009-10-15 10:49
zhuweisky 阅读(1655) |
评论 (4)
|
编辑
2009年10月10日
ESBasic 可复用的.NET类库(10) -- 简易的读写锁 SmartRWLocker
摘要: 1.缘起: 对于需要进行线程同步的地方,我们经常用的就是.NET内置的lock关键字和ReaderWriterLock类。lock的功能相对简单,因为它不区分读写,也就是说如果都在lock块中,读线程都会阻塞另一个读线程,在很多读远远多于写的应用中,这会极大地折损性能。所以我们也经常需要使用读写分离的锁ReaderWriterLock,使用它,我们可以明确的指定是要获取“读”...
阅读全文
posted @
2009-10-10 16:16
zhuweisky 阅读(1868) |
评论 (4)
|
编辑
2009年9月30日
ESBasic 可复用的.NET类库(09) -- 心跳监测器 IHeartBeatChecker
摘要: 1.缘起:假设我们的C/S系统中服务端与客户端之间采用UDP进行通信,那么服务端如何知道每个客户端当前是否仍然在线了?有可能某个客户端一直没有退出,但是在很长一段时间内都没有与服务端作任何通信,那么服务端就应该认为这个客户端已经离线了吗?为了能让服务端掌握每个客户端是否在线的状态,我们可以这样做,只要客户端一启动起来,就每隔一段时间间隔(如10秒)就向服务端发一个“我还在线”...
阅读全文
posted @
2009-09-30 09:20
zhuweisky 阅读(1867) |
评论 (4)
|
编辑
2009年9月26日
ESBasic 可复用的.NET类库(08) -- 定时任务管理器 TimingTaskManager
摘要: 1.缘起:假设我们的报表系统需要在每天的00:05:00统计前一天的报表数据,需要在每周一的00:30:00统计上周的报表数据,又需要在每月1日的00:30:00统计上月的报表数据。这些报表统计任务是很常见的系统需求,对于类似这样的在指定时刻执行的定时任务,我使用ESBasic.Threading.Timers.TimingTaskManager(定时任务管理器)来处理它。TimingTaskMa...
阅读全文
posted @
2009-09-26 09:19
zhuweisky 阅读(2058) |
评论 (7)
|
编辑
2009年9月21日
ESBasic 可复用的.NET类库(07) -- 回调定时器ICallbackTimer
摘要: 1.缘起: 举个例子也许就能够说清楚回调定时器的用途。假设我的订单系统接收各种不同类型的订单,当订单A进来时,系统根据订单的类型和其它特征进行综合判断后,决定A订单要在2秒之后被方法M1处理;接下来收到的B订单经过同样的判断后,决定要在10秒后被方法M2处理,……。这时候就可以用回调定时器来管理这些将要被延迟一定时间再执行的任务。 当然,我们可以使用定时器或前面介绍的循环...
阅读全文
posted @
2009-09-21 10:38
zhuweisky 阅读(1728) |
评论 (1)
|
编辑
2009年9月12日
ESBasic 可复用的.NET类库(06) -- 循环任务切换器 CircleTaskSwitcher
摘要: 1.缘起: 假设我的订单处理系统有这样的需求:将一天24小时分为4个时段,凌晨2:15到8:30采用A类型的处理器处理接收到的订单,8:30到14:00采用B类型的处理器,14:00到20:00采用C类型的处理器,20:00到第二天凌晨2:15采用D类型的处理器。 即我们的订单处理器需要在任一天的2:15、8:30、14:00、20:00这四个时刻发生切换,这就是一个循环切换器所要做的工作。 我...
阅读全文
posted @
2009-09-12 15:22
zhuweisky 阅读(1690) |
评论 (3)
|
编辑
2009年9月7日
ESBasic 可复用的.NET类库(05) -- 工作者引擎 IWorkerEngine
摘要: 使用工作者引擎,可以多个线程来并行处理任务,从而最大发挥系统的硬件优势,提高系统的吞吐能力。
阅读全文
posted @
2009-09-07 16:49
zhuweisky 阅读(2216) |
评论 (14)
|
编辑
2009年9月1日
ESBasic 可复用的.NET类库(04) -- 循环引擎 ICycleEngine
摘要: 有些系统需要每隔一段时间就执行一下某个动作,比如,一个监控系统每隔10秒钟就要检测一下被监控对象的状态是否正常,那这时我们就可以用到循环引擎了。
阅读全文
posted @
2009-09-01 09:03
zhuweisky 阅读(2557) |
评论 (12)
|
编辑
2009年8月29日
ESBasic 可复用的.NET类库(03) -- 圈 Circle
摘要: 1.缘起: 假设我们要开发一个多人跳棋游戏。在跳棋游戏中,当一个人走一步棋之后,控制权就轮到下一家,如此轮询,一圈之后控制权又回到自己,然后再继续轮圈下去。我们可以使用数组或列表等数据结构来解决这种转圈圈的问题,但是始终都不够直观。 我设计了Circle来对“圈”这种数据结构进行抽象,我们在类似跳棋这样的游戏中可以非常方便地直接使用它。Circle的形象示意图如下: 2.适...
阅读全文
posted @
2009-08-29 16:22
zhuweisky 阅读(2122) |
评论 (8)
|
编辑
2009年8月27日
ESBasic 可复用的.NET类库(02) -- 日期 Date
摘要: 同我们从DateTime中将时刻部分作为ShortTime抽离出来一样,我们将DateTime中的日期部分也抽离出来,以ESBasic.Date类来表示。
阅读全文
posted @
2009-08-27 09:30
zhuweisky 阅读(2121) |
评论 (6)
|
编辑
2009年8月25日
ESBasic 可复用的.NET类库(01) -- 时刻 ShortTime
摘要: (如果您能对照着源码来阅读本文,效果会更好。) 1.缘起: 假设我们的员工打卡系统,需要设定公司规定的上班时间、下班时间、以及还要对员工是否迟到早退等这些情况进行判断。 我们以什么方式来记录类似上下班时间这样只有时分秒没有年月日的时间了?你说可以使用DateTime,但是合适吗?总是觉得用DateTime来表示上下班的时间很别扭,因为我们的上下班时间并需要指定到具体的哪一天啊。 我设计了ESBas...
阅读全文
posted @
2009-08-25 11:06
zhuweisky 阅读(3051) |
评论 (18)
|
编辑
仅列出标题
下一页
公告
 
气度影响格局
性格决定命运
  正在阅读的书籍:
我的主页
个人资料
我的闪存
发短消息
<
2010年2月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
最新闪存
出污泥而不染,明机巧而不用
10-21 17:07
君子中庸,小人反中庸。
10-21 16:37
善者不辨,辩者不善。
10-15 10:52
联合索引的原理是怎样的?
09-21 10:47
更多闪存...
搜索
我的标签
Timing
(1)
Callback
(1)
lock
(1)
ReaderWriterLock
(1)
随笔分类
(242)
C#专栏(44)
(rss)
DataRabbit(26)
(rss)
DCFramework(2)
(rss)
DTS(11)
(rss)
Emit(11)
(rss)
ESBasic 开源(20)
(rss)
ESFramework(54)
(rss)
sky随笔(12)
(rss)
Strive Game Engine(7)
(rss)
分布式(11)
(rss)
管理实践(9)
(rss)
技术随笔(17)
(rss)
数据库(7)
(rss)
系统架构/EAI、SOA(11)
(rss)
随笔档案
(240)
2010年1月 (2)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (6)
2009年8月 (6)
2009年7月 (1)
2009年5月 (5)
2009年4月 (3)
2009年3月 (3)
2009年2月 (1)
2009年1月 (3)
2008年12月 (3)
2008年11月 (4)
2008年10月 (4)
2008年9月 (6)
2008年8月 (2)
2008年6月 (2)
2008年5月 (5)
2008年4月 (4)
2008年3月 (1)
2007年12月 (1)
2007年11月 (2)
2007年9月 (2)
2007年8月 (3)
2007年7月 (1)
2007年6月 (1)
2007年5月 (2)
2007年4月 (6)
2007年3月 (16)
2007年2月 (1)
2007年1月 (1)
2006年12月 (3)
2006年11月 (4)
2006年9月 (5)
2006年8月 (2)
2006年7月 (9)
2006年6月 (6)
2006年5月 (19)
2006年4月 (18)
2006年3月 (27)
2006年2月 (4)
2006年1月 (4)
2005年12月 (10)
2005年11月 (2)
2005年10月 (1)
2005年9月 (20)
好友博客
05年之前的Blog
(rss)
Donald
(rss)
ESBasic
(rss)
Ivan Zou
(rss)
wwp
(rss)
XCodeFactory
(rss)
嘟嘟的博客
(rss)
积分与排名
积分 - 682381
排名 - 48
最新评论
1. Re:DataRabbit 企业级的数据存取框架(00) -- 序
得好好研究一下!谢谢楼主分享! 我想要那种框架,例如,输入表名,字段,字段值,字段类型,根据配置文件,或者输入的参数,产生相应的实例去执行sql语句。 (jolboy)
2. Re:ESBasic 可复用的.NET类库(20) -- TopN排行榜容器 TopNOrderedContainer
支持下 (daconglee)
3. Re:ESBasic 可复用的.NET类库(20) -- TopN排行榜容器 TopNOrderedContainer
用N长度的堆来维护TopN不行吗,插入排序这个堆就可以了,堆的排序速度很快,上界下界都比较让人满意。 (guojing)
4. Re:ESBasic 可复用的.NET类库(20) -- TopN排行榜容器 TopNOrderedContainer
所有的OPENSOURCE吗? (别爱上哥,哥只是个传说!)
5. Re:ESFramework网络通信框架 -- 序
学习中...如能有源码学习就好了! (C雷)
6. Re:ESFramework3.0 Demo源码
感谢楼主,什么时候出4.0啊? (wenjie)
7. Re:写书计划启动!《.NET通信框架的设计、实现与应用》
书写好了吗 2010 年了啊 (工业控制)
8. Re:DCFramework 动态分布式计算框架(00) -- 序
1. 如果WCF,就可以支持更多协议 2. 只是分布计算吗? 3. 是否考虑 变成ESB 框架? (老李飞刀)
9. Re:ESBasic 可复用的.NET类库(19) -- 热缓存 IHotCache
收藏一下慢慢品味!貌似不错! ------------------------------------------------------------- 专注于自己的网站,(全新改版,欢迎捧场) (Aspgreener)
10. Re:ESBasic 可复用的.NET类库(19) -- 热缓存 IHotCache
用一个MRU的链表不就的了。反正随着不断加载,少处理的就会慢慢被移除链表。 lz的顶多是个有时间限制的list,我当时做权限的token的时候差不多 (辰)
阅读排行榜
1. ESFramework网络通信框架 -- 序(23154)
2. Java -- 在Eclipse上使用XFire开发WebService(19124)
3. 路径规划(最短路径)算法C#实现(13051)
4. 项目经理的职责(10199)
5. Java -- 在Eclipse上使用Hibernate(9513)
6. AgileIM 源码公开(9242)
7. 我的架构经验小结(三)-- 深入三层架构(9181)
8. DataRabbit 企业级的数据存取框架(00) -- 序(9095)
9. 基于Web的IM实现思考(7962)
10. 做一个合格的Team Leader -- 基本概念(7884)
评论排行榜
1. ESFramework网络通信框架 -- 序(79)
2. DataRabbit 企业级的数据存取框架(00) -- 序(46)
3. AgileIM 源码公开(44)
4. ESBasic 可复用的.NET类库(00) -- 开源前言(41)
5. 我的架构经验小结(四)-- 实战中演化的三层架构 (35)
6. 写书计划启动!《.NET通信框架的设计、实现与应用》(33)
7. 总裁与专才(31)
8. 基于Web的IM实现思考(31)
9. DataRabbit 企业级数据访问框架(21)-- DataRabbit 4.0 & DataRabbit 与三层架构融合Demo源码(29)
10. 路径规划(最短路径)算法C#实现(28)
60天内阅读排行
1. ESBasic 可复用的.NET类库(18) -- 智能字典缓存 ISmartDictionaryCache(1735)
2. ESBasic 可复用的.NET类库(19) -- 热缓存 IHotCache(1621)
3. ESBasic 可复用的.NET类库(20) -- TopN排行榜容器 TopNOrderedContainer(1411)