摘要: JVM 内存划分 栈 虚拟机栈 本地方法栈 堆 方法计数器 方法区 对象的分配 指针碰撞 空闲列表 (√) 分配内存 线程安全问题: 分配动作处同步 实际上采用CAS保证分配的原子性 TLAB 本地线程分配缓存 对象内存中的信息布局 对象头 Mark word (根据对象状态复用此部分空间) has 阅读全文
posted @ 2018-08-05 23:08 风中小蘑菇 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 集合框架结构分析02 在学习之前最好有 泛型、泛型协变性 方面的知识 Map接口: 这里需要的是这里的 Map 接口中定义了一个Entry 接口 (接口中内定义接口 是允许的) Map接口一个抽象类实现 AbstractMap: 这个抽象类中 添加了一些新的方法同时提供了两个 Entry 接口的实现 阅读全文
posted @ 2017-07-02 22:10 风中小蘑菇 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 集合框架结构分析 一 首先源码分析之前,得先了解一下 有关 泛型、泛型擦除、内部类、嵌套类 等知识 首先看一下ArrayList类的继承、实现结构 (JDK1.7) 集合类最高的层次的接口 Collection 接口 Collection接口 继承自 Iterable接口,Iterable提供所有集 阅读全文
posted @ 2017-06-25 13:49 风中小蘑菇 阅读(190) 评论(0) 推荐(0) 编辑
摘要: JAVA基础 首先第一点对象的引用是存在堆栈之中的,何为对象的引用呢? Person p=new Person("张三"); 这里的p其实只是一个对象的引用指向真正的对象的 Person张三 ;p就存在堆栈之中 引用可以改变的 它可以指向别的引用 这里可以引出java传参数问题的思考,很多面试题也会 阅读全文
posted @ 2017-05-24 15:10 风中小蘑菇 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Selector Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只需要更少 阅读全文
posted @ 2017-05-22 21:00 风中小蘑菇 阅读(197) 评论(0) 推荐(0) 编辑
摘要: Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。 分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Chan 阅读全文
posted @ 2017-05-22 18:23 风中小蘑菇 阅读(184) 评论(0) 推荐(0) 编辑
摘要: Buffer Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: 1. 写入数据到Buffer 2. 调用flip()方法 3. 从Buffer中读取数据 4. 调用clear()方法或者compact()方法 当向buffer写入数据时,buffer会记录下写了多少数据。一旦要 阅读全文
posted @ 2017-05-22 17:32 风中小蘑菇 阅读(105) 评论(0) 推荐(0) 编辑
摘要: Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使 阅读全文
posted @ 2017-05-22 16:42 风中小蘑菇 阅读(130) 评论(0) 推荐(0) 编辑
摘要: FileWriter 处理文件都会碰到的一个问题是,当前写入的数据是覆盖原文件内容还是追加到文件末尾。当你创建一个FileWriter之后,你可以通过使用不同构造函数实现你的不同目的。 以下的构造函数取文件名作为参数,将会新写入的内容将会覆盖该文件: 查看源代码打印帮助 以下的构造函数取文件名和一个 阅读全文
posted @ 2017-05-22 13:30 风中小蘑菇 阅读(153) 评论(0) 推荐(0) 编辑
摘要: File java 中的file 类提供以下能力: 检测文件是否存在 读取文件长度 重命名或移动文件 删除文件 检测某个路径是文件还是目录 读取目录中的文件列表 重命名或移动文件 通过调用File类中的renameTo()方法可以重命名(或者移动)文件,代码如下: 当你获得一个File对象之后,可以 阅读全文
posted @ 2017-05-20 21:17 风中小蘑菇 阅读(232) 评论(0) 推荐(0) 编辑