![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
2009gis
自己的人生自己负责......
展开
-
Java 学习:HashMap
HashMap 底层是基于散列算法实现,散列算法分为散列再探测和拉链式。HashMap 则使用了拉链式的散列算法,并在 JDK 1.8 中引入了红黑树优化过长的链表。HashMap 的红黑树满足下面条件: 每个结点非黑即红; 根结点是黑的; 每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的; 如果一个结点是红的,那么它的两个儿子都是黑的; 该树是完美黑色平...原创 2018-09-10 22:51:05 · 197 阅读 · 0 评论 -
Java 学习:ConcurrentHashMap
HashMap 不是线程安全的,多个线程同时操作会抛出 ConcurrentModificationException 异常。ConcurrentHashMap 是 HashMap 线程安全的一个实现版本。1.8中放弃了 Segment 臃肿的设计,取而代之的是采用 Node + CAS + Synchronized 来保证并发安全进行实现,结构如下:成员变量:private tr...原创 2018-09-15 09:48:45 · 659 阅读 · 0 评论 -
java学习:Object 类 equals 和 hashCode 方法
在开始编写文章前,有几个问题需要思考一下:equals 和 hashCode 方法是什么? equals 方法具有哪些特性? equals 和 hashCode 间的通用约定1. equals 和 hashCode 方法是什么?equal 方法用于检测一个对象是否等于另一个对象。在 Object 类中,这个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相...原创 2018-08-27 14:38:52 · 1429 阅读 · 0 评论 -
Java基础:访问权限控制
前言正题Java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问权限控制的等级,从最大权限到最小权限依次为:public、protectd、包访问权限(没有关键字)和private。根据前述内容,读者可能会认为:作为一名类库设计者,你会尽可能将一切方法都定位private,而仅向客户端程序员公开你愿意让他们使用的方法。这样做是完全正确的,尽管对于那原创 2017-10-02 14:13:20 · 423 阅读 · 0 评论 -
Java基础:内部类
前言在开发过程中不想创建类文件或者想把逻辑相关的类放在一起,就在类中创建类,这就是本节要讨论——内部类。正题在开始编写文章前,有几个问题需要思考一下:什么是内部类? 内部类的作用 如何创建内部类对象 内部类的其他特性1. 什么是内部类?将一个类的定义放在另一个类的定义内部,这就是内部类。2. 内部类的作用内部类方法可以访问该类定义所在的外围类作用域中的数据,包括...原创 2017-09-24 16:00:50 · 248 阅读 · 0 评论 -
Java基础:注解
前言正题注解的语法比较简单,除了@符号的使用之外,它基本与Java固有的语法一致。Java SE5内置了三种,定义在Java.lang中的注解:1、@Override,表示当前的方法定义将覆盖超类中的方法。2、@Deprecated,如果程序员使用了注解为它的元素,那么编译器会发出警告信息。3、@SuppressWarnings,关闭不当的编译器警告信息。在Java SE5之前原创 2017-10-25 14:28:42 · 245 阅读 · 0 评论 -
Java基础:容器
前言通常,程序总是根据运行时才知道的某些条件去创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。为了解决这个普遍的编程问题,需要在任意时刻和任意位置创建任意数量的对象。正题Java 使用类库提供了一套相当完善的容器类,其中基本的类型是 List、Set、Queue 和 Map。这些对象类型也称为集合类,但由于 Java 的类库使用了 Collection 这个名字来指定该类库的一...原创 2017-10-06 20:45:06 · 194 阅读 · 0 评论 -
Java基础:JDK动态代理源码分析
前言在《设计模式之:代理模式》一文中介绍了代理的设计架构,其中提到了代理模式的两种分类:普通代理和动态代理。动态代理的实现流程:创建一个被代理对象、创建一个基础InvocationHandler的接口类对象、创建一个代理对象。这一个过程是如何实现的?接下来这一节介绍动态代理在源码层面上实现原理。正题Subject接口public interface Subject { //业务操作 ...原创 2017-12-04 14:18:36 · 260 阅读 · 0 评论 -
Java基础:异常处理程序
前言假设在一个Java程序运行期间出现一个错误。这个错误可能是由于文件包含了错误信息或者网络连接出现问题造成的,也有可能是因为使用无效的数组下标,或者试图使用一个没有被赋值的对象引用造成的。用户希望在出现错误时,程序能够采用一些理智的行为。如果由于出现错误而使得某些操作没有完成,程序应该:返回到一种安全状态,并能够让用户执行一些其他的命令。 允许用户保存所有操作的结果,并以适当的方式终止...原创 2018-03-24 21:49:25 · 2694 阅读 · 0 评论 -
Java 学习:ReentrantLock
前言正题公平锁static final class FairSync extends Sync { private static final long serialVersionUID = -3000897897090466540L; final void lock() { acquire(1); } .....原创 2018-05-13 11:04:46 · 124 阅读 · 0 评论 -
Java基础:继承
前言继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承。正题继承涉及到基类和导出类这两个类,而不是只有一个类,但从外部看来,它就像是一个和基类具有相同接口的新类,或许还会有额外的方法和域。但继承并不只是复制基类的接口。当创建了一个导出类的一个对象时,这个子对象和原创 2018-06-14 14:11:38 · 17641 阅读 · 0 评论 -
Java基础:字符串
String str = "ABC";创建一个对象,在常量池里创建字面量为"ABC"对象,然后str指向这个内存地址。String str = new String("ABC");创建多少个实例?两个。一个在heap堆上创建值为ABC的实例,另一个在常量池上创建字面量为ABC的实例。String#intern执行该方法时,如果该字符串不在常量池就添加到常量池。看看字符串+运原创 2017-08-11 10:32:48 · 209 阅读 · 0 评论