摘要:
1.缘起: 对于需要进行线程同步的地方,我们经常用的就是.NET内置的lock关键字和ReaderWriterLock类。lock的功能相对简单,因为它不区分读写,也就是说如果都在lock块中,读线程都会阻塞另一个读线程,在很多读远远多于写的应用中,这会极大地折损性能。所以我们也经常需要使用读写分离... 阅读全文
摘要:
1.缘起:假设我们的C/S系统中服务端与客户端之间采用UDP进行通信,那么服务端如何知道每个客户端当前是否仍然在线了?有可能某个客户端一直没有退出,但是在很长一段时间内都没有与服务端作任何通信,那么服务端就应该认为这个客户端已经离线了吗?为了能让服务端掌握每个客户端是否在线的状态,我们可以这样做,只... 阅读全文
摘要:
1.缘起:假设我们的报表系统需要在每天的00:05:00统计前一天的报表数据,需要在每周一的00:30:00统计上周的报表数据,又需要在每月1日的00:30:00统计上月的报表数据。这些报表统计任务是很常见的系统需求,对于类似这样的在指定时刻执行的定时任务,我使用ESBasic.Threading.... 阅读全文
摘要:
1.缘起: 举个例子也许就能够说清楚回调定时器的用途。假设我的订单系统接收各种不同类型的订单,当订单A进来时,系统根据订单的类型和其它特征进行综合判断后,决定A订单要在2秒之后被方法M1处理;接下来收到的B订单经过同样的判断后,决定要在10秒后被方法M2处理,……。这时候就可以用回调定时器来管理这些... 阅读全文
摘要:
1.缘起: 假设我的订单处理系统有这样的需求:将一天24小时分为4个时段,凌晨2:15到8:30采用A类型的处理器处理接收到的订单,8:30到14:00采用B类型的处理器,14:00到20:00采用C类型的处理器,20:00到第二天凌晨2:15采用D类型的处理器。 即我们的订单处理器需要在任一天的2... 阅读全文
摘要:
使用工作者引擎,可以多个线程来并行处理任务,从而最大发挥系统的硬件优势,提高系统的吞吐能力。 阅读全文
摘要:
有些系统需要每隔一段时间就执行一下某个动作,比如,一个监控系统每隔10秒钟就要检测一下被监控对象的状态是否正常,那这时我们就可以用到循环引擎了。 阅读全文
摘要:
1.缘起: 假设我们要开发一个多人跳棋游戏。在跳棋游戏中,当一个人走一步棋之后,控制权就轮到下一家,如此轮询,一圈之后控制权又回到自己,然后再继续轮圈下去。我们可以使用数组或列表等数据结构来解决这种转圈圈的问题,但是始终都不够直观。 我设计了Circle来对“圈”这种数据结构进行抽象,我们在类似跳... 阅读全文
摘要:
同我们从DateTime中将时刻部分作为ShortTime抽离出来一样,我们将DateTime中的日期部分也抽离出来,以ESBasic.Date类来表示。 阅读全文
摘要:
(如果您能对照着源码来阅读本文,效果会更好。)1.缘起: 假设我们的员工打卡系统,需要设定公司规定的上班时间、下班时间、以及还要对员工是否迟到早退等这些情况进行判断。 我们以什么方式来记录类似上下班时间这样只有时分秒没有年月日的时间了?你说可以使用DateTime,但是合适吗?总是觉得用DateTi... 阅读全文
摘要:
自从03年正式使用.NET开发以来,已经走过了6个年头,这期间我积累了几套类库和框架,ESBasic便是其中最基础的一个类库。现在我将它开源出来,希望能让感兴趣的朋友有所启发。加入QQ群:134720401,一起探讨ESBasic。 阅读全文
摘要:
所谓动态程序集,就是在运行期间由Emit创建的程序集。假设,我们的Client和Server之间通过Remoting通信,在某个时刻,Client会创建一个动态程序集,并且Client和Server都会基于该程序集做一些逻辑操作,那么Client如何将动态程序集传递到Server端了?Client和Server又如何做才能正常使用这个程序集了? 阅读全文
摘要:
假设,Remoting服务端接受并保存了一个Remoting客户端注册的回调接口(比如ICallback),在一定的时刻,服务端会通过ICallback接口调用客户端的某些方法。当运行一段时间后,服务端再次回调ICallback时,就抛出了类似下面的异常:对象“/9ca38d87_7f53_49b7... 阅读全文
摘要:
DCFramework的基础结构介绍,提供 DCFramework Demo源码下载。 阅读全文
摘要:
分布式计算最基本的目的之一就是为了充分利用空闲的计算节点的计算能力。通常,我们首先会将要被分布式计算的程序在每个计算节点部署好,然后才可以调用分布式计算。这种“部署”是一种静态的。之所以称为静态的,是因为还有一种更动态更灵活的方式 -- 我们可以随时的、动态的将我们新完成的程序自动【提交】到已经部署好的分布式框架里动态运行起来。 阅读全文
摘要:
在系统中,我们经常会遇到这样的需求:将大量(比如几十万、甚至上百万)的对象进行排序,然后只需要取出最Top的前N名作为排行榜的数据,这即是一个TopN算法。 阅读全文
摘要:
系统架构的思想是重要的,但是架构不能纸上谈兵、不能脱离实践。 阅读全文
摘要:
在高并发的系统中,我们常采用多数据库分散放置、读写分离、细粒度的隔离级别设定等策略来提高系统的性能。DataRabbit3.3 以及以上版本对这三种策略都给予了内置的支持。
阅读全文
摘要:
在大型系统中,我们经常需要监视我们系统执行的性能状况,当出现性能问题时,我们要能够迅速地找到瓶颈在什么地方。在程序的层面上来说,就是看哪个方法执行所消耗的时间很长。 阅读全文
摘要:
宽容与忍耐 (转摘) 不让古人,是谓有志;不让今人,是谓无量。 忍耐若与敏感、魄力、思维、迅速行动结合,将所向无敌。 脾气服从理性的判断才会成功,否则只是动物式愤怒欲的满足.或从心理学的角度讲是怒需求。 大智者知道:永远不要目中无人,要甘愿并且能够“容忍愚人”。 容忍一个人无异于侮辱他,或无异于让他在你面前变成小人(儿)。因如在家庭中,常常是大人容忍小人(儿)的无理。 ... 阅读全文