java
文章平均质量分 82
miliermili
这个作者很懒,什么都没留下…
展开
-
深入分析 java IO的工作机制
通过阅读java IO 源码可以发现 IO 的基本架构 * 基于字节操作的IO接口: InputStream, OutputStream * * 基于字符操作的接口:Reader,Writer原创 2013-03-27 16:37:25 · 1718 阅读 · 0 评论 -
三种排序方法的比较
/*** 对于三种排序方法的比较:冒泡排序,选择排序,插入排序* 首先对于这三种排序都要进行这样的过程* 两两比较,然后复制或者交换位置(在程序中交换位置因为涉及到在内存中的移动,所以更消耗性能一点)**对于一个容量为N的数组来说:** 冒泡排序:* 首先需要比较的次数为N-1,N-2,N-3,N-4,.......1,总共是N*(N-1)/2* 如果在随机的情原创 2013-03-20 15:37:40 · 1178 阅读 · 0 评论 -
深入java NIO系列之缓冲区分析与源码解读(一)
数据从磁盘移动到进程的内存区域整个过程:进程发起read()系统调用,要求其缓冲区被填满,内核随即要求磁盘控制硬件发送命令,磁盘控制器直接将数据写入内核的内存缓冲区中,该过程通过DMA来完成,无需主CPU协助,当磁盘控制器将内核缓冲区填满,内核随即将数据复制到进程对应缓冲区中。内核空间:内核空间是操作系统所在的区域,可以直接与磁盘硬件设备通讯,控制用户区域的运行状态,所有的IO操作都直接或者间接的通过内核空间。当用户空间所需要的数据在内核空间中已经存在,那么内核无需再次向磁盘控制硬件发起系统调用,直接对内核原创 2014-03-12 22:48:03 · 4658 阅读 · 1 评论 -
深入java NIO系列之通道分析与源码解读(二)
通道可以是单向的也可以是双向的,一个通道类可以实现ReadableByteChannel接口的read()方法,也可以实现WriteableByteChannel接口的write()方法,只要实现其中任一方法,通道就是单向的,实现两个接口为双向。一个文件可以通过不同的权限打开,从FileInputStream对象的getChannel()方法获取的FileChannel对象是只读的,尽管FileChannel实现了ByteChannel接口,但是在该通道上调用write()方法时,仍会报出NonWritea原创 2014-03-14 12:34:05 · 3647 阅读 · 1 评论 -
深入java字符串原理及其效率分析
通过任何方式创建的字符串都会在字符串池中查找该字符串是否存在,如果不存在则向字符串池中添加该字符串通过new关键字创建的字符串,会在堆栈中创建一个新的对象通过String str = "aa"+"bb"; 方式创建创建字符串,java只会维护其在字符串池中是否存在如果通过字符串拼接所创建的字符串中存在变量,那么java会在堆栈区中创建一个对象原创 2014-03-15 10:03:44 · 2118 阅读 · 2 评论