代码改变世界

随笔档案-2012年1月21日

自己最近写的一组日志处理类(支持高并发处理)

2012-01-21 21:55 by java线程例子, 375 阅读, 收藏,
摘要: 下面的日志处理我在3000个线程同时调用,写20个文件,相当于每个文件150个线程不间断大规模写.没问题,我提高到10000时,出了问题,但不是日志代码的问题,而是系统创建新的线程时报错,建到3500个线程的时候出现问题.后面我会贴出测试代码.1)FileLogWorker/// <summary> /// 文件日志处理类,利用队列机制,让写日志调用和日志写到文件分离,调用 /// 方将要写的日志和目标文件插入到日志队列中去就返回, /// 然后由内置线程去写到文件里去。这里用了单例模式。 /// </summary> public class File... 阅读全文

关于CLR内存管理一些深层次的讨论[下篇]

2012-01-21 17:32 by java线程例子, 217 阅读, 收藏,
摘要: http://www.cnblogs.com/artech/archive/2010/10/20/1857086.html关于CLR内存管理一些深层次的讨论[下篇]《上篇》中我们主要讨论的是程序集(Assembly)和应用程序域(AppDomain)的话题,着重介绍了两个不同的程序集加载方式——独占方式和共享方式(中立域方式);以及基于进程范围内的字符串驻留。这篇将关注点放在托管对象创建时内存的分配和对大对象(LO:Large Object)的回收上,不对之处,还望各位能够及时指出。目录 一、从类型(Type)与实例(Instance)谈起 二、实例内存分配不仅限于GC堆 三、实例对类型的引用 阅读全文

程序集与应用程序域关系讲解(1)

2012-01-21 17:30 by java线程例子, 361 阅读, 收藏,
摘要: 关于CLR内存管理一些深层次的讨论[上篇]半年之前,PM让我在部门内部进行一次关于“内存泄露”的专题分享,我为此准备了一份PPT。今天无意中将其翻出来,觉得里面提到的关于CLR下关于内存管理部分的内存还有点意思。为此,今天按照PPT的内容写了一篇文章。本篇文章不会在讨论那些我们熟悉的话题,比如“值类型引用类型具有怎样的区别?”、“垃圾回收分为几个步骤?”、“Finalizer和Dispose有何不同”、等等,而是讨论一些不同的内容。整篇文章分上下两篇,上篇主要谈论的是“程序集(Assembly)和应用程序域(AppDomain)”。也许有的地方说的不是很正确,希望读者不吝赐教。一、程序集与应用 阅读全文

一些C#面试题(无聊之举)

2012-01-21 16:31 by java线程例子, 324 阅读, 收藏,
摘要: 既然无聊,又不能浪费时间,那就做点无聊的事情打发时间:1.Thread和Process之间有什么区别?.NET新引入了Application Domain的概念,这样他们三个之间有什么区别?引入了Application Domain会带来一些潜在的问题么? 进程是程序的组织形式,线程是系统调度的基本单元,一个进程至少包含一个以上的线程,线程存在于进程内; 应用程序域是为了像IIS这类程序提供的一种进程内隔离方法,便于在一个进程内运行多个应用。进程>应用程序域>线程.对于像IIS这样的应用程序而言,它可以运行多个应用程序,如果一个应用崩溃,整个程序都崩溃是有问题的,所以引入应用程序域 阅读全文

《java编程思想》之控制对成员的访问权限的原因、final、继承和组合、私有方法的“覆盖”

2012-01-21 16:07 by java线程例子, 300 阅读, 收藏,
摘要: 控制对成员的访问权限有两个原因: 第一是为了使用户不要碰触那些他们不该碰触的部分,这些部分对于类内部的操作是必要的,但是它井不属于客户端程序员所需接口的一部分。因此,将方法和域指定成private,对客户端程序员而言是一种服务。因为这样他们可以很清楚地看到什么对他们重要,什么是他们可以忽略的。这样简化了他们对类的理解。 第二个原因,也是最重要的原因,是为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大的影响。例如,最初可能会以某种方式创建一个类,然后发现如果更改程序结构,可以大大提高运行速度。 如果接口和实现可以被明确地隔离和加以保护,那么就可以实现这一目的... 阅读全文

分布式流水作业系统项目经理挂掉的处理办法(Hadoop模拟思考系列)

2012-01-21 12:13 by java线程例子, 221 阅读, 收藏,
摘要: 在前一篇中的流水作业系统中,劳动者挂掉后,由项目经理来负责处理(重新分配该子任务),这个影响相对比较小,但项目经理挂掉后,整个任务都要重新开始,就有点浪费了,这里我们采用土八路打仗的方式,让每个成员都知道打仗的目的和自己的任务(包括整体任务号,子任务号,项目经理是谁,自己负责处理的加工原料在那里,交互的产品放哪里等)同时这些成员在完成任务后,除了给项目经理报告结果之外,并不立即进行清场,而是要接到项目经理的指令后才清场,对于没有清场的任务,成员有义务每间隔一段时间发一个项目经理还活着没有的询问,如果多次询问,无结果的情况下,可以向Master报告,由Master暂时担当项目经理角色,这有4种情 阅读全文

关于分布式流水作业架构的一点浅见(领导者压力和瓶颈的解决方法和思路)

2012-01-21 10:31 by java线程例子, 217 阅读, 收藏,
摘要: 这段时间其实一直在思考Hadoop的东西,主要是我准备用Dotnet来模拟玩一下,这两天刚好看到 http://blog.csdn.net/cenwenchu79/article/details/7206804这篇文章,看来对hadoop的架构有看法的不止我一个,当然,别人都是牛人,有牛人敢怀疑,我也跟着说点看法。首先,坦率的讲,我没有用过hadoop,我只是了解过其机制,根据上面那位牛人的看法,hadoop的master会成为瓶颈,因为其担当的Reducer职责,就是最后归并结果。因为我没有实际用过hadoop,我没有发现这个问题,只是我在准备模拟hadoop的思考过程中,我觉得maste. 阅读全文