随笔分类 - Java开发
摘要:Hashtable、ConcurrentHashMap源码分析 为什么把这两个数据结构对比分析呢,相信大家都明白。首先二者都是线程安全的,但是二者保证线程安全的方式却是不同的。废话不多说了,从源码的角度分析一下两者的异同,首先给出二者的继承关系图。 Hashtable类属性和方法源码分析 我们还是先
阅读全文
摘要:Java NIO 以前写过一篇Java Socket的用法,不过觉得介绍的不够细致也不够全面,因此今天想在细谈一下Java NIO,也算是对上一篇博客的补充吧。在以前的博客中提到Java NIO的三个核心部分Buffers、Channels、Selectors,这里不再赘述三者之间的关系,接下来我们
阅读全文
摘要:内存分配与回收策略 Java技术体系中的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存和回收分配给对象的内存。关于内存回收这一点,我们在Java垃圾收集机制中详细介绍了各种回收算法以及JVM中常见的收集器。接下来我们主要看看JVM是如何给对象分配内存的。 对象的内存分配,往大的方向上
阅读全文
摘要:Java垃圾收集机制 博客起名为Java垃圾收集机制,给人的感觉就像是垃圾收集是Java语言特有的。事实上,垃圾收集(Garbage Collection)远比Java久远。垃圾收集需要考虑3件事情:哪些内存需要回收、什么时候回收、如何回收。带着这三个问题,我们去看看Java是如何实现垃圾回收的。
阅读全文
摘要:首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件,然后JRE加载Java字节码文件,载入系统分配给JVM的内存区,然后执行
阅读全文
摘要:Java中的Socket分为普通的Socket和NioSocket。 Java中的网络通信时通过Socket实现的,Socket分为ServerSocket和Socket两大类,ServerSocket用于服务器端,可以通过accept方法监听请求,监听请求后返回Socket,Socket用于完成具
阅读全文
摘要:约瑟夫环问题 问题描述: 问题描述: Josephus问题可以描述为如下的一个游戏:N个人编号从1到N,围坐成一个圆圈,从1号开始传递一个热土豆,经过M次传递后拿着土豆的人离开圈子,由坐在离开的人的后面的人拿起热土豆继续进行游戏,直到圈子只剩下最后一个人。例如:M=0,N=5,则游戏人依次被清除,5
阅读全文
摘要:Java序列化与反序列化 Java提供了两种对象持久化的方式,分别为序列化和外部序列化 序列化 序列化 序列化 在分布式环境下,当进行远程通信时,无论是何种类型的数据,都会以二进制序列的形式在网络上传输。序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操作时所引发的问题。序列化
阅读全文
摘要:Java反射机制 反射机制定义 反射机制定义 反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许其对内部成员进行操作。由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反射机制,也会严重影响系统的性能。具体而言,反射机制的主要功能
阅读全文
摘要:InputStream & Reader InputStream(字节流),如下是InputStream的层次结构: InputStream(字节流),如下是InputStream的层次结构: AudioInputStream:音频输入流类,该方法可以: 从外部音频文件、流或 URL 获得音频输入流
阅读全文
摘要:OutputStream 和 Writer OutputStream类(直接操作byte数组) OutputStream类(直接操作byte数组) 该类是字节输出流的抽象类,定义了输出流的各种操作方法。如下图是OutputStream的层次结构: ByteArrayOutputStream:字节数组
阅读全文
摘要:Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于 char、short、byte、int、long、float、double等基本数据类型的变量来说会默认初始化为0(boolean变量默认会被初始化为false)
阅读全文
摘要:ConcurrentModificationException异常处理 ConcurrentModificationException异常是Iterator遍历ArrayList或者HashMap数组时,通过代码修改了数组的大小,而Iterator(Object ele=it.next())会检查数
阅读全文