2013年3月5日
摘要: http://freewind.me/blog/20110912/67.html本来打算这几天好好研究Netty的源代码的,真做起来发现还是缺少充足的动力。最开始还算认真的看了其buffer包,但是到了后来,就变成看javadoc了,知道有哪些类、类中有哪些方法就知足了。毕竟有500多个java文件,看起来真够累的。好在基本理解了nio 之后,看netty也不是很难。Netty跟Mina结构上相当的相似,据说性能略优、在细节上更完善一些,但是我的直观感觉就是,Netty的文档和例子相当不错,让人很理解起来容易一些(以前学Mina时,费不了少工夫)。这里简单的总结一下,技术含量不高(因为没有深入 阅读全文
posted @ 2013-03-05 16:54 kkmm 阅读(352) 评论(0) 推荐(0) 编辑
摘要: http://freewind.me/blog/20110912/66.htmlJava的nio是jdk5推出的东西,距现在已经五六年了。我虽然曾经使用过Mina(一个使用事件驱动的nio框架)做过一些项目,但实际上对nio的了解还是很模糊,只是知道它的特点是“非阻塞”。近期打算研究一下Netty(它跟Mina很像,是同一个作者的作品),所以先研究下Nio。网上的中文资料相当少,大多讲得不清不楚,给的示例代码更是看得人头晕。好在群友“羊八井”推荐了我一本好书:《Java network programming 3rn edition》,它的第12章就是专讲nio的。这本书写得不错,详细而清晰, 阅读全文
posted @ 2013-03-05 16:53 kkmm 阅读(366) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/VCSockets/阻塞模式 Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待时间。图所示,在调用recv()函数时,发生在内核中等待数据和复制数据的过程。当调用recv()函数时,系统首先查是否有准备好的数据。如果数据没有准备好,那么系统就处于等待状态。. 阅读全文
posted @ 2013-03-05 14:53 kkmm 阅读(12075) 评论(0) 推荐(1) 编辑
摘要: http://daimojingdeyu.iteye.com/blog/828696Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。先用比较直观的方式来介绍一下这种方式的优点,通过和常用的多线程方式比较一下,可能更好理解。以一个餐饮为例,每一个人来就餐就是一个事件,他会先看一下菜单,然后点餐。就像一个网站会有很多的请求,要求服务器做一些事 阅读全文
posted @ 2013-03-05 11:31 kkmm 阅读(286) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/fanqimeng/archive/2009/05/13/1456183.html一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 呢,面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用,是不是一下子感觉自己对复用理解的高度又上升了一层?^_^说到了抽象,我就不能不提到曾让我头痛的Java接 阅读全文
posted @ 2013-03-05 10:51 kkmm 阅读(178) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。从击鼓传花谈起 击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上.. 阅读全文
posted @ 2013-03-05 10:30 kkmm 阅读(201) 评论(0) 推荐(0) 编辑
摘要: Class.forName(xxx.xx.xx)返回的是一个类首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new不一样,要分清楚)。至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。Aa=(A)Class.forName("pacage.A").newInstance();这和你Aa=newA();是一样的效果。关于补充的问题答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执 阅读全文
posted @ 2013-03-05 09:42 kkmm 阅读(675) 评论(0) 推荐(0) 编辑