`
eyesmore
  • 浏览: 363915 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
Help:  Workbench User Guide -> Concepts -> Team programming with CVS 学会看官方资料很重要,理解帮助文档的组织形式。   一、CVS对于团队开发的重要性   我们的项目都是工程级的,一个project需要许多人共同完成,team member之间既相互独立又相互联系。独立的是独立完成一个project的某个module;联系的是最后要merge and share各自的module。这些工作需要借助CVS这样的源代码公里工具。 In the Concurrent Versions System (CVS) tea ...
Help:  Workbench User Guide -> Concepts -> Team programming with CVS 学会看官方资料很重要,理解帮助文档的组织形式。   一、CVS对于团队开发的重要性   我们的项目都是工程级的,一个project需要许多人共同完成,team member之间既相互独立又相互联系。独立的是独立完成一个project的某个module;联系的是最后要merge and share各自的module。这些工作需要借助CVS这样的源代码公里工具。 In the Concurrent Versions System (CVS) tea ...
http://www.refactoring.com/catalog/moveMethod.html   (一个不错的例子)   【code smells】 A method is, or will be, using or used by more features of another class than the class on which it is defined. 如果一个类的方法中过多的访问了另一个类的属性,那我们就应该考虑是不是把这个方法挪到另一个类中去。    
package com.eyesmore.ideas; import java.util.Formatter; import junit.framework.Assert; import junit.framework.TestCase; public class FormatterTest extends TestCase { public void testFormat() { StringBuilder strBuilder = new StringBuilder(); Formatter formatter = new Formatter(strBuilder); ...
从名字可以看出,CountDownLatch是一个倒数计数的锁,当倒数到0时触发事件,也就是开锁,其他人就可以进入了。在一些应用场合中,需要等待某个条件达到要求后才能做后面的事情;同时当线程都完成后也会触发事件,以便进行后面的操作。 CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待了。   下面的例子简单的说明了CountDownLatch的使用方法,模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。     package com.eyesm ...

signal 信号处理

#include <stdio.h> #include <stdlib.h> #include <signal.h> void signalHandler(int); /* declare a function*/ int main(int argc,char** argv) { printf("Process id is %d\n",getpid());/*display the current process id */ signal(SIGHUP,signalHandler); /* register handle ...
fork 创建子进程,特点: 调用一次,返回两次。   #include<stdio.h> int main(char** args) { int cpid = fork(); if(cpid == 0) { //in the child process printf("I am child process, PID= %d, cpid = %d \n",getpid(),cpid); } else if(cpid > 0) { //in the parent process printf(&q ...
Seletor和SelectorProvider综合使用了“Simple Factory”和“Factory Method”来应对将来可能的Selector机制和SelectorProvider的变化。使用“Simple Factory”可以提供一种默认工厂,使用起来很方便;使用“Factory Method”能够最大程度的满足实现机制方面的变化。   下面是关于这两个类在工厂模式方面的代码片段   Selector代码:   package java.nio.channels; import java.io.IOException; import java.nio.channels.spi. ...
ServerSocketChannel 只能把OP_ACCEPT注册到某个Selector上,不能注册OP_CONNENCT,OP_READ,OP_WRITE事件;而SocketChannel 恰恰相反,它能注册OP_CONNENCT,OP_READ,OP_WRITE事件,不能注册OP_ACCEPT。但是,将某种Channel注册到某个Selector的操作绝大多数都是一样的,也就是说我们可以在超类中实现这些东西。 Bad smells in code中有提过“Duplicated code”,其中一种情况就是重复的代码出现在两个兄弟类中,我们应该把共同的部分Pull up到超类中去,对于他们之 ...
     一般认为简单工厂模式,产品部分能够在OCP原则下应对变化(这也恰恰是使用静态工厂的意义所在),但是当新增一种产品时候,我们的工厂的static createProduct还是必须被迫修改代码,也就是不具有应对变化的能力。      本文提供了一种先注册后使用的办法,能够对静态工厂应对变化方面有一定的改善。可能不一定具有太大的使用价值,但对于拓展思路有点启示。      阅读前,先推荐阅读 http://www.iteye.com/topic/180972   主题:工厂模式----易懂版(转)   package com.eyesmore.staticf ...

IoFuture 源码阅读

    博客分类:
  • MINA
阅读前请参考: (1) http://eyesmore.iteye.com/blog/243648 写道 Future模式入门     MINA2.0中关于Future模式的应用体系:   IoFuture(Future异步调用的需求)       |       |==DefaultIoFuture(把Future模式给实现了,针对IoSession的不同操作有 ...
在多线程交互的中2,经常有一个线程需要得到另个一线程的计算结果,我们常用的是Future异步模式来加以解决。 Future顾名思意,有点像期货市场的“期权”,是“对未来的一种凭证”,例如当我们买了某个房地产开发商的期房 ...

MINA使用FAQ

    博客分类:
  • MINA
1、如何设置Session的一些SocketOption参数?         // set idle time to 60 seconds        session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 60); 而且这些设置往往在SessionOpened时候设置: public void sessionOpened(IoSession session) {        // set idle time to 60 seconds        session.getConfig().setIdleTime(IdleStatus.B ...
IoService(Inf)      |      |==AbstractIoService       --IoAcceptor                              -----IoConnector      |                       |                 |                           ...

Buffer

  内容一、基本概念 java.io.Buffer的相关定义:A container for data of a specific primitive type.   (这点上很类似于DataInputStream,DataOutputStream,不同的是一个提供的是基于流的操作,具有单向,不可逆性;Buffer不再是流了。)   /** * A container for data of a specific primitive type. * * <p> A buffer is a linear, finite sequence of elements of a specifi ...
Global site tag (gtag.js) - Google Analytics