Java 源码解析之局部变量检查】的更多相关文章

package com.tang; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; public class ParseSo…
简介 线程本质上也是进程.线程机制提供了在同一程序内共享内存地址空间运行的一组线程.对于内核来讲,它就是进程,只是该进程和其他一下进程共享某些资源,比如地址空间.在Java语言里,Thread类封装了线程相关的特性,使用其进行多线程编程. 源码解析 线程状态 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } 认识3个队列 threadScheduleQueue,线程调度队列,操作系统…
Vector源码解析 首先说一下Vector和ArrayList的区别: (1) Vector的所有方法都是有synchronized关键字的,即每一个方法都是同步的,所以在使用起来效率会非常低,但是保证了线程安全:而ArrayList的全部方法都是非同步的,所以相对Vector的效率会更高,所以它是线程不安全的. (2) ArrayList在每次扩容时都是增加当前容量的1.5倍,而Vector在扩容时都是增加当前容量的两倍. 不需要考虑线程安全时,Java官方推荐我们使用ArrayList,…
ArrayBlockingQueue源码解析 ArrayBlockingQueue是一个阻塞式的队列,继承自AbstractBlockingQueue,间接的实现了Queue接口和Collection接口.底层以数组的形式保存数据(实际上可看作一个循环数组).常用的操作包括 add ,offer,put,remove,poll,take,peek. 一.类声明 public class ArrayBlockingQueue<E> extends AbstractQueue<E> i…
String类下的compareTo(String otherString)方法的源码解析 一. 前言 近日研究了一下String类的一些方法, 通过查看源码, 对一些常用的方法也有了更透彻的认识, 也让我更加理解了设计者的算法思想. 我也推荐大家多读读源码, 我相信大家也会有意想不到的收获. 二. 实战 今天我分析的是String类的compareTo(String otherString)方法, 以下是我个人的分析观点, 如有哪里分析不到位的地方, 欢迎大家指出, 相互学习, 共同进步 !…
上文我们讲了HashMap那骚骚的逻辑结构,这一篇我们来吹吹它的实现思想,也就是算法层面.有兴趣看下或者回顾上一篇HashMap逻辑层面的,可以看下HashMap源码解析(一).使用了哈希表得“拉链法”. 我打算按这个顺序来讲HashMap:几个关键属性 -> 构造方法-> 存取元素方法 ->解决hash冲突方法->HashMap扩容问题. 4个关键属性: /** *HashMap的存储大小 */ transient int size; /** * HashMap的大小临界值,如果…
HashMap源码分析 HashMap的底层实现是面试中问到最多的,其原理也更加复杂,涉及的知识也越多,在项目中的使用也最多.因此清晰分析出其底层源码对于深刻理解其实现有重要的意义,jdk1.8之后其设计与实现也有所改变. 在Java集合类中最常用的除了ArrayList外,就是HashMap了.Java最基本的数据结构有数组和链表.数组的特点是空间连续(大小固定).寻址迅速,但是插入和删除时需要移动元素,所以查询快,增加删除慢.链表恰好相反,可动态增加或减少空间以适应新增和删除元素,但查找时只…
ArrayList源码分析 ArrayList就是动态数组,是Array的复杂版本,它提供了动态的增加和减少元素.灵活的设置数组的大小. 一.类声明 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable 1)AbstractList提供了List接口的默认实现. 2)List接口定义了列表必须实…
一.基础知识: 1. Java IO一般包含两个部分:1)java.io包中阻塞型IO:2)java.nio包中的非阻塞型IO,通常称为New IO.这里只考虑到java.io包中堵塞型IO: 2. Java.io包简单地分类. 2.1 Java的IO主要包含三个部分: 1)流式部分――IO的主体部分: 2)非流式部分――主要包含一些辅助流式部分的类,如:File类.RandomAccessFile类和FileDescriptor等类: 3)文件读取部分的与安全相关的类,如:Serializab…
String是我们接触最多的类,无论是学习中还是工作中,基本每天都会和字符串打交道,从字符串本身的各种拼接.切片.变形,再到和其他基本数据类型的转换,几乎无时无刻都在使用它,今天就让我们揭开String神秘的面纱,这一小节主要讲解String的源代码是怎么构建的,下一节是String的一些疑点难点,通常在面试中会被问到. 在学习String之前,让我们先简单的看一下JVM的内存模型,附图一张,来自百度百科: 在java的每一个通过编译生成字节码文件后,运行期JVM将字节码文件(也就是class文…