- 博客(20)
- 收藏
- 关注
转载 Java源码阅读-Integer(基于jdk1.8)
public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该类不能够被继承,同时 Integer 继承了Number类,因此可以将Integer转换成 int 、double、float、long、byte和short类型的数据,另...
2019-06-17 15:51:00 113
转载 不知道Java类文件结构的同学,看这篇文章就够了
一、前言 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。经过多年的发展,目前的计算机仍然只能识别0和1,但是由于近10年内虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了操作系统和机器指令集无关的、平台中立的...
2019-05-31 18:41:00 186
转载 深入理解java虚拟机之垃圾收集器
前言 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同的版本的虚拟机所提供的垃圾收集器都有可能会有很大的区别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。 相关系列博客:深入理解java虚拟机之java内存区域深入理...
2019-05-08 23:20:00 176
转载 Java垃圾收集算法
由于垃圾收集算法的实现涉及大量的程序细节,而且每个平台的虚拟机操作内存的方法又各不相同,因此博客中不过多的讨论算法的实现,只是介绍几种算法的思想以及发展。 相关阅读: 1、深入理解java虚拟机之java内存区域 2、深入理解java虚拟机之对象真的死了吗 1、标记-清除算法 标记清除算法分为“标记”和“清除”两个阶段,首先先标记出那些对象需要被回...
2019-05-07 16:41:00 103
转载 深入理解java虚拟机之判断Java对象存活算法
Java一个重要的优势就是通过垃圾管理器GC (Garbage Collection)自动管理和回收内存,程序员无需通过调用方法来释放内存。也因此很好多的程序员可能会认为Java程序不会出现内存泄漏的问题,这种想法是不对的,当我们对内存使用不当的时候仍然可能会出现内存泄漏,并且问题相对与c++来说更隐秘,问题的根源排查起来也比较困难。不过,当我们了解了Java虚拟机内存区域,Java...
2019-04-29 17:45:00 202
转载 深入理解java虚拟机之java内存区域
java虚拟机在执行java程序的时候会把它所管理的内存分为多个不同的区域,每个区域都有不同的作用,以及由各自的生命周期,有些随着虚拟机进行的启动而存在,有些区域则依赖于用户线程的启动或结束而建立或销毁等。在《java虚拟机规范(Java SE7版)》中规定,java内存分为以下一种,如图所示: 1、程序计数器 程序计数器(Program Counter Regist...
2019-04-26 16:19:00 86
转载 Java基础系列之你真的懂==与equals的区别吗?
对于Java初学者而言,可能会对这两个比较方法比较模糊,有的人可能会觉得两个的方法使用起来结果是一样的等。如果你有这样的想法,我建议你来看看这边博客,让你充分了解这两个比较的异同,以及他们底层是如何比较的等。阅读这篇文章之前,我希望你是对Integer和String这两个类是有所了解的,否则可以参考一下博客以加深你对这两个类的理解: 1、jdk源码阅读笔记-String ...
2019-04-24 17:26:00 132
转载 java基础系列之ConcurrentHashMap源码分析(基于jdk1.8)
1、前提 在阅读这篇博客之前,希望你对HashMap已经是有所理解的,否则可以参考这篇博客:jdk1.8源码分析-hashMap;另外你对java的cas操作也是有一定了解的,因为在这个类中大量使用到了cas相关的操作来保证线程安全的。 2、概述 ConcurrentHashMap这个类在java.lang.current包中,这个包中的类都是线程安全的。Conc...
2019-04-21 23:49:00 185
转载 基于Java实现红黑树的基本操作
首先,在阅读文章之前,我希望读者对二叉树有一定的了解,因为红黑树的本质就是一颗二叉树。所以本篇博客中不在将二叉树的增删查的基本操作了,需要了解的同学可以到我之前写的一篇关于二叉树基本操作的博客:https://www.cnblogs.com/rainple/p/9970760.html; 有随机数节点组成的二叉树的平均高度为logn,所以正常情况下二叉树查找的时间复杂度为O(l...
2018-12-11 14:50:00 78
转载 深入理解Java 栈数据结构
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 从上图是基于数组实现的栈,可以看到,对栈的操作...
2018-11-21 12:39:00 76
转载 使用Java实现二叉树的添加,删除,获取以及遍历
一段来自百度百科的对二叉树的解释: 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都...
2018-11-19 15:56:00 200
转载 jdk源码阅读笔记-LinkedHashMap
Map是Java collection framework 中重要的组成部分,特别是HashMap是在我们在日常的开发的过程中使用的最多的一个集合。但是遗憾的是,存放在HashMap中元素都是无序的,原因是我们在put或get数据的时候都是根据key的hash值来确定元素的位置。在具体的业务场景中,我们更多的希望对于HashMap集合能够进行顺序访问,好在 jdk 中已经给我们提供了...
2018-11-13 17:58:00 109
转载 jdk源码阅读笔记-LinkedList
一、LinkedList概述 LinkedList的底层数据结构为双向链表结构,与ArrayList相同的是LinkedList也可以存储相同或null的元素。相对于ArrayList来说,LinkedList的插入与删除的速度更快,时间复杂度为O(1),查找的速度就相对比较慢了,因为每次遍历的时候都必须从链表的头部或者链表的尾部开始遍历,时间复杂度为O(n/2)。为了实现快速...
2018-11-12 15:25:00 92
转载 jdk源码阅读笔记-ArrayList
一、ArrayList概述 首先我们来说一下ArrayList是什么?它解决了什么问题?ArrayList其实是一个数组,但是有区别于一般的数组,它是一个可以动态改变大小的动态数组。ArrayList的关键特性也是这个动态的特性了,ArrayList的设计初衷就是为了解决Java数组长度不可变的问题。我们都知道在Java中数组一旦被创建出来,那么这个数组的大小就不可以改变了,而...
2018-11-09 16:06:00 81
转载 jdk源码阅读笔记-HashSet
通过阅读源码发现,HashSet底层的实现源码其实就是调用HashMap的方法实现的,所以如果你阅读过HashMap或对HashMap比较熟悉的话,那么阅读HashSet就很轻松,也很容易理解了。我之前也写了一篇关于hashMap源码阅读的文章,可以点击这里查看。 使用过HashSet的都清楚它保存的元素是不可以重复的,其实HashSet的元素都是保存在HashMap的key中...
2018-11-09 10:15:00 110
转载 jdk源码阅读笔记-HashMap
文章出处:【noblogs-it技术博客网站】的博客:jdk1.8源码分析 在Java语言中使用的最多的数据结构大概右两种,第一种是数组,比如Array,ArrayList,第二种链表,比如ArrayLinkedList,基于数组的数据结构特点是查找速度很快,时间复杂度为 O(1),但是删除的速度比较慢,因为每次删除元素的时候需要把后面的所有的元素都要相应的往前移动一位,最坏的情况...
2018-11-08 22:11:00 119
转载 jdk源码阅读笔记-Integer
public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该类不能够被继承,同时 Integer 继承了Number类,因此可以将Integer转换成 int 、double、float、long、byte和short类型的数据,另...
2018-11-02 16:59:00 139
转载 jdk源码阅读笔记-AbstractStringBuilder
AbstractStringBuilder 在java.lang 包中,是一个抽象类,实现 Appendable 接口和CharSequence 接口,这个类的诞生是为了解决 String 类在创建对象的时候总是创建新的对象的问题的。AbstractStringBuilder 有两个子类,分别是 StringBuilder 和 StringBuffer,这两个类的区别将会在下面说到...
2018-10-30 17:43:00 141
转载 解决eclipse svn 转 maven web 项目中遇到找不到maven managed dependencies的问题
我们在使用eclipse从svn上check项目下来,然后转成maven web 项目的时候,经常会遇到一个问题,就是找不到maven依赖(maven managed dependencies),从而会导致整个项目以来的jar包都不能够运行起来。我看了许多网上说的方法,其实都不是很管用。所以就写下这篇文章,希望对大家有所帮助! 首先,打开项目的navigator视图找到 .cl...
2018-10-27 02:04:00 311
转载 jdk源码阅读笔记-String
本人自学java两年,有幸初入这个行业,所以功力尚浅,本着学习与交流的态度写一些学习随笔,什么错误的地方,热烈地希望园友们提出来,我们共同进步!这是我入园写的第一篇文章,写得可能会很乱。一、什么是String String是java中的一个类,位于java.lang包中,也就是我们平常所说的字符串。字符串是我们在编程的过程中用到最多的类,同时在面试中也经常会出现相关的面试题,所...
2018-10-25 16:19:00 104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人