04 2014 档案
Zero Copy
摘要:原文出处:http://www.ibm.com/developerworks/library/j-zerocopy/传统的I/O使用传统的I/O程序读取文件内容, 并写入到另一个文件(或Socket), 如下程序:File.read(fileDesc, buf, len);Socket.send(s...
阅读全文
内核态(Kernel Mode)与用户态(User Mode)
摘要:内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取为什么要有用户态和内核态由于需要限制不同的程序之间的访问能力, 防止他...
阅读全文
Netty端口被占用问题
摘要:问题:最近发现Netty项目每次发布的时候Netty在重启时都会报端口被占用的异常, 需要过十几秒左右手动重启一遍, Netty才能恢复正常目前猜测是由于Tomcat_restart的时候Netty执行相关的销毁操作, Channel.close().awaitUninterrupted() 以及 ...
阅读全文
AsyncHttpClient的连接池使用逻辑
摘要:AsyncHttpClient的连接池结构很简单, NettyConnectionsPool内部重要的几个变量如下 // 连接池, 通过 host 区分不同的池 private final ConcurrentHashMap> connectionsPool = new Concurre...
阅读全文
HashMap 与 ConcurrentHashMap
摘要:1. HashMap1) 并发问题HashMap的并发问题源于多线程访问HashMap时, 如果存在修改Map的结构的操作(增删, 不包括修改), 则有可能会发生并发问题, 表现就是get()操作会进入无限循环 public V get(Object key) { if (key...
阅读全文
Java NIO Test Case
摘要:package org.zwl.test.nio;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import jav...
阅读全文
Netty writeAndFlush() 流程与异步
摘要:Netty writeAndFlush()方法分为两步, 先 write 再 flush @Override public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) { DefaultCh...
阅读全文
Java 文件路径相关
摘要:不得不说Java的文件路径弄得很复杂, 有编译目录和resource目录什么的和解释型语言(PHP)的就是不一样搞了好几年java一直没认真去研究这些个破路径怎么回事, 每次都忘记, 梳理一下备忘1. 直接使用绝对路径这是最简单的一种, 例如 new File("/home/alexis/test....
阅读全文