12 2014 档案
摘要:IPC链接上长时间没有发生远程调用,客户端会发送一个心跳消息给服务器端,用于维护链接。
Connection的lastActivity用来记录上次发生IPC通信的时间。 Connection.touch方法更新lastActivity为当前时间,在setupIOstream和receiveResponse中被调用。
lastActivity和当前时间超过某个值(在${ipc.ping.inte...
阅读全文
摘要:建立IPC连接 IPC Client通过调用getConnection获取IPC连接,具体流程图如下: 服务器端的IPC连接代码分散在Listener和Server.Connection中。
Listener.run() 实现了NIO中的选择器循环。如下代码: //Listener构造函数
public Listener() throws IOException { addre...
阅读全文
摘要:与IPC相关的代码在org.apache.hadoop.ipc包下。共七个文件,其中4个辅助类: RemoteException Status VersionedProtocol ConnectionHeader 主要实现类3个: Client Server RPC 客户端Client: 如上图: 与IPC连接相关的 Clien...
阅读全文
摘要:Java NIO和阻塞IO的区别:
阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时(或超时)才会返回;同样,在调用ServerSocket.accept()方法时,也会一直阻塞到有客户端连接才会返回,每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求。 阻塞I/O的缺点: 1. 当客户端多时,会创建大量的处理线程。且每个线程都要占用栈空...
阅读全文
摘要:在单独的线程中,检查多个通道是否可以进行IO操作。 Selector创建:静态工厂方法创建 Selector selector = Selector.open(); 注册通道 channel.configureBlocking(false);
SelectionKey key = channel.register(selector, Selectionkey.OP_READ)...
阅读全文
摘要:channel与流的区别: 流基于字节,且读写为单向的。
通道基于快Buffer,可以异步读写。除了FileChannel之外都是双向的。 channel的主要实现: FileChannel
DatagramChannel:UDP读写
SocketChannel:TCP读写
ServerSocketChannel 支持scatter/gather(分散和聚集) 分散(scatte...
阅读全文
摘要:Java NIO的核心部件: Buffer
Channel
Selector Buffer
是一个数组,但具有内部状态。如下4个索引: capacity:总容量
position:下一个要读取/写入的元素索引
limit:限制,第一个不能读取/写入的元素索引
mark:位置标记,重置position
//通过调用Buffer.mark()方法,可以标记Buffer中的一个特定positio...
阅读全文
摘要:被代理的接口特点: 1. 不能有重复的接口,以避免动态代理类代码生成时的编译错误。 2. 这些接口对于类装载器必须可见,否则类装载器将无法链接它们,将会导致类定义失败。 3. 需被代理的所有非 public 的接口必须在同一个包中,否则代理类生成也会失败。 4. 接口的数目不能超过 65535,这是
阅读全文
摘要:服务器端代码如下:
IHello接口: import java.rmi.Remote;
import java.rmi.RemoteException; public interface IHello extends Remote { /** * @return return hellowold * @throws java.rmi.RemoteExcepti...
阅读全文
摘要:From: http://blog.csdn.net/yinan9/article/details/16805275 环境:CentOS 5.10(虚拟机下) [root@localhost hadoop]# lsb_release -a LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics...
阅读全文
摘要:intel cpu提供Ring0-Ring3三种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为 内核态,Ring3状态不能访问Ring0的地址空间,包括代码和数据,一条工作在0级特权级的指令具有了CPU能提供的最高权力,而一条工作在3级特权级的指令具有CPU提供的最低或者说最基本权力。 用户态切换到内核态的3种方式 ...
阅读全文
摘要:Hadoop序列化:Long 和Int---变长编码的方法: 如果整数在[ -112, 127] ,所需字节数为1,即第一个字节数就表示该值。 如果大于127,则第一个字节数在[-120,-113]之内,正数字节数为(-112-第一个字节)---最多八个字节。 如果小于-112,则第一个字节数在[-128,-121]之内,负数字节数为(-120-第一个字节)---最多八个字节。...
阅读全文
摘要:Doug Cutting
Lucene(索引引擎)---Nutch(搜索Data抓取)---Hadoop 1997:Lucene
2003:GFS
2004:NDFS\MapReduce\Nutch
2006: (Yahoo! Facebook NewYorkTimes) Hadoop
2008: HBase Zookeeper Mahout
2009: Pig\ Hive Hadoop...
阅读全文
摘要:Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 1. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
2. 当一个线程访问object的一个synchronized(this)同步...
阅读全文
摘要:1. 首先把数据有效性的列表加入到某个表格中。如下图所示:此表格名称为表5 2. 然后定义名称:公式--定义名称 如下填入信息: 3. 然后再数据有效性验证中输入如下信息即可:
阅读全文