Java
zhouhl_cn
这个作者很懒,什么都没留下…
展开
-
Java中唯一数的生成
唯一数的生成很简单,基本上以时间为基础进行生成。在JDK里面已经有java.util.UUID类可以生成唯一的随机数。如果希望生成的唯一数为特定的格式,那么就需要自己来生成唯一数了。生成唯一数时有两个因素是必须在考虑的:必须保证唯一,这个一般以时间为基础进行变化。高效,当然越高效越好。有时我们希望在生成的唯一数中包含特定的内容,如把当前时间,如20110609132641,作为原创 2011-06-09 13:39:00 · 26073 阅读 · 6 评论 -
线程池ThreadPoolExecutor参数设置
JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果,甚至仅相当于或低于单线程的效率。ThreadPoolExecutor类可设置的参数主要有:corePoolSize核心线程数,核心线程会一直存活,即使没有任务需原创 2012-03-25 21:48:05 · 91105 阅读 · 14 评论 -
NIO就绪处理之OP_CONNECT
连接就绪是所有就绪选择中最简单的,对它的处理也很简单。当客户端调用connect()并注册OP_CONNECT事件后,连接操作就会就绪。SocketChannel channel = SocketChannel.open();channel.configureBlocking(false);channel.connect(addr);channel.register(selector, Se原创 2011-07-03 22:26:20 · 8186 阅读 · 0 评论 -
NIO就绪处理之OP_WRITE
写就绪相对有一点特殊,一般来说,你不应该注册写事件。写操作的就绪条件为底层缓冲区有空闲空间,而写缓冲区绝大部分时间都是有空闲空间的,所以当你注册写事件后,写操作一直是就绪的,选择处理线程全占用整个CPU资源。所以,只有当你确实在写时再注册写操作,并在写完以后马原创 2011-07-03 23:02:08 · 10068 阅读 · 1 评论 -
NIO就绪处理之OP_ACCEPT
OP_ACCEPT的处理与OP_CONNECT基本一样,服务端监听,并注册OP_ACCEPT事件后,就已准备好接受客户端的连接了ServerSocketChannel ssc = ServerSocketChannel.open();ssc.configur原创 2011-07-03 22:41:34 · 6336 阅读 · 0 评论 -
DirectBuffer及内存泄漏
创建Buffer对象时,可以选择从JVM堆中分配内存,也可以OS本地内存中分配,由于本地缓冲区避免了缓冲区复制,在性能上相对堆缓冲区有一定优势,但同时也存在一些弊端。两种缓冲区对应的API如下:JVM堆缓冲区:ByteBuffer.allocate(size)本地缓冲区:ByteBuffer.allocateDirect(size)从堆中分配的缓冲区为普通的Java对象,生原创 2011-06-28 17:34:00 · 17275 阅读 · 0 评论 -
NIO的长连接及NIO的内存泄漏
使用NIO进行socket编程时,需要SelectionKey key将chanel和selector关联,selector负责注册到其上的channel的就绪选择。下面的两行代码经常用到:key.attach(attachment);key.attachment();因为从channel读到的数据并不是完整的数据包,当读取到数据时一般先将它保存在附件中,下次就绪时再继续读取以组成完整原创 2011-06-24 11:47:00 · 6209 阅读 · 1 评论 -
NIO操作类型与就绪条件
使用NIO编程时,对NIO就绪选择的理解,是NIO编程的关键。NIO与传统IO的区别是提供了就绪选择的能力,为原来的阻塞的IO提供了非阻塞的能力,从而为我们提供了用少量的线程数量同时为大量的连接通信的可能。 1、操作类型 NIO的就绪选择共涉及4个操作:OP_READ, OP_WRITE, OP_ACCEPT, OP_CONNECT。客户端对应的通道是SocketChannel原创 2011-06-25 21:54:00 · 3984 阅读 · 2 评论 -
NIO与传统IO的区别
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。 小原创 2011-06-26 02:19:00 · 54438 阅读 · 26 评论 -
XSLT与代码生成
Java开发由于分层,比较繁琐一些,一处小的需求变更,可能就涉及Database, JavaBean, DAO, Service等多处改动。为了减少工作量,使用代码生成是个比较高效的方式。XSLT是一种非常方便有效的代码生成技术。 由于Database Schema, JavaBean, DAO三者之间相互关联,且所占的工作量比较大,完全可以先定义出数据模型,然原创 2012-05-03 13:42:52 · 1293 阅读 · 1 评论