- 博客(52)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK1.8逐字逐句带你理解ConcurrentHashMap(3)
引言这篇是介绍ConcurrentHashMap的第三篇,第一篇主要介绍了在jdk1.8中所用到的一些关键知识点,第二篇主要学习了ConcurrentHashMap的组织结构与线程安全的实现,同时介绍了几个极其重要的内部类。这一篇主要是我学习领悟到的几个核心方法,包括扩容,添加和查找。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.csdn.net/u0
2017-03-30 15:39:10
5128
11
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK1.8逐字逐句带你理解ConcurrentHashMap(2)
在上一篇博文我们介绍了ConcurrentHashMap在jdk1.8中所必要的知识,作为基础入门。因为jdk1.8的ConcurrentHashMap做了太多的变动,所以新知识学习是必要的。今天是ConcurrentHashMap的第二篇,第二篇主要是认识ConcurrentHashMap,我将会介绍一下它的关键成员变量和一些关键的类。
2017-03-30 13:27:00
8719
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK1.8逐字逐句带你理解ConcurrentHashMap
在前几篇博文中我详细介绍了HashMap的底层实现原理,后来我接连写了三天JVM和GC的一些知识,那些知识偏向于理论。今天换点口味,和大家一起研究学习一下ConcurrentHashMap的底层实现,因为jdk1.8在HashMap和concurrentHashMap和以往都发生了变化。我们分三部分来介绍,第一部分为基础,第二部分为认识,第三部分为熟知
2017-03-28 14:30:42
24611
17
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 GC-垃圾收集算法与关键收集器
在笔者的上两篇博文中,主要介绍了jvm的结构和对象的“生死”问题。今天主要来说说垃圾收集算法与各种关键的收集器,分析比较各种收集算法的优劣。如果时间和篇幅允许的话对内存动态分配做一些解释,因为垃圾回收和动态分配是java的两大基本特性。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-03-27 14:17:44
1811
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM你必需知道的基础
昨天写了一篇关于java中对象生死的问题,主要目的是想让大家感觉一下我所感受到的东西:其实jvm也非常有意思,甚至对象的创建与消亡都可能触动你的心弦。所以,今天我打算深入学习一下jvm必要基础(上一篇博文也略有涉及),主要介绍一下JVM运行时各个区域的区别和作用,本来想罗列一张表的,但是篇幅会很丑,所以我就拆开一部分一部分来说。同样的,我会先在技术点写一些博文涉及到以外的知识点,方便大家理解。
2017-03-26 12:37:58
1785
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 GC-谈谈“生死”
今天周六,并不断更技术博客。今天我想和大家聊聊“生死”。有研读过jvm的小伙伴们知道java相比于c++来说,内存动态分配和垃圾回收技术是两大核心。一个对象的出生由我们来创造,但是对象的死亡很多时候并不由我们决定,而是由垃圾回收技术进行管理和操作
2017-03-24 23:41:11
1305
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK1.8源码逐字逐句带你理解HashMap底层(2)
引言:很开心,大家继续来看HashMap底层的第二段。昨天(上一篇博文)我们主要是介绍了HashMap类的一些重要的成员变量并简述了他们的名称作用,附带图文解释了他们之间存在的关系,又深入学习了HashMap存储的发展和结构,以一个简单的demo描述了HashMap的初始化和各个变量的变化情况。今天主要是从HashMap的源码入手,我会逐字逐句的解释每一种情况中HashMap干了些什么。
2017-03-24 15:16:21
3626
7
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK1.8源码逐字逐句带你理解HashMap底层(1)
引言:自己在学习这个东西的时候,发现网上很多关于HashMap底层介绍的文章基于的jdk版本比较低。因为我对比之后发现编码风格有了比较大的改变。而且,今天我想尝试一种很通俗的方式来尝试记录这次的学习。在本文中我主要整理了HashMap类的重要成员变量和关键方法的涵义和作用,HashMap初始化方式并描述初始化变量。了解HashMap存储结构,根据JDK源码逐字逐句解读核心方法。
2017-03-23 13:36:16
3270
5
原创 java面试算法题(1)
引言本篇博文中核心介绍的是一些java很精辟的运算符操作,包含一些独特的思维。在面试的过程中,也可能会遇到这些问题。笔者在阿里巴巴的电话面试过程中就遇到这样的一个问题。分享给大家。
2017-06-28 15:07:00
3278
6
原创 java I/O系统(9)-对象序列化与还原
万物皆对象,在我们程序运行中,对象只要在引用链上存在引用,那么它就会一直存在。但是当我们程序结束的时候,那么对象就会消亡。那么在jvm不运行的时候我们仍能够保存下来是非常有意义的,在java中可以用序列化来实现。序列化其实也是IO系统中的一部分。在本篇博文中,详细介绍对象序列化的概念,不同序列化的方式和结果,并给出相应的demo。
2017-05-24 15:39:50
1658
原创 java I/O系统(8)-文件压缩
我们对于日志的保存,如果需要存档,那么最好的方式就是对日志文件进行压缩。压缩可以减少资源占用,在需要的时候还能回溯查找。在本篇博文中,详细介绍基于字节流的压缩方式,着重介绍ZipOutputStream、ZipInputStream文件的压缩和解压方式,同时介绍CheckedInputStream、CheckedOutputStream的校验方式,在最后给出相应的demo供大家参考。
2017-05-23 19:33:09
989
原创 java I/O系统(7)-文件加锁
在通道中我们可以对文件或者部分文件进行上锁。上锁和我们了解的线程锁差不多,都是为了保证数据的一致性。在文件通道FileChannel中可以对文件进行上锁,通过FileLock可以对文件进行锁的释放。在本篇博文中会详细介绍在NIO中对文件锁的操作与配置,同时给出对应demo。
2017-05-22 17:01:01
1183
原创 java I/O系统(6)-内存映射文件
在前面的博文中关于RandomAccessFile类对超大文件的处理方式进行了学习,随机访问是独立的,支持读写的,而且它最大的特征是可以访问文件中任意一个位置。在本篇博文中,认识一个基于NIO的对于大文件的处理方式:内存映射文件。解释它的运作原理,同时给出对应demo。
2017-05-19 15:50:16
1270
原创 java I/O系统(5)-Buffer类
在java的IO系统中,在JDK1.4的时候引入了新的IO系统,也就是我们常说的nio,它的主要功能是提高速度。在本篇博文中,详细介绍关于nio的构造:通道和缓冲器,核心了解ByteBuffer。
2017-05-18 16:41:27
1081
原创 java I/O系统(4)-RandomAccessFile类
RandomAccessFile类是在java.io中的一个工具类,它独立于字符流与字节流之外,自成一派。它的核心功能就是random功能。他可以随机访问到文件的任意位置的资源,对于超大文件的局部修改有很大的帮助。在本篇博文中详细介绍RandomAccessFile类的组成结构,阐述它所解决的问题,并给出demo进行测试。
2017-05-16 17:05:08
1037
原创 java I/O系统(3)-字节流与字符流
在java的IO系统中,对资源的操作分为两类:字节流与字符流。如果延承inputStream与outputStream就是字节流,如果延承reader与writer就是字符流,那么他们之间到底有什么区别呢?在本篇博文中会列出IO系统的所有操作类的框架,并对字节流与字符流做出详细的解释,最后会用一些demo来分别实现字节流与字符流的操作。
2017-05-15 16:02:31
600
原创 java I/O系统(2)-装饰器模式
IO系统是使用了装饰器模式的典型。所以对装饰器模式的深入研究对IO系统的理解肯定大有裨益。在本文中会详细介绍装饰器模式,会用以demo展示,同时会举出例子在IO系统中是如何呈现了这种模式,最后,我们探讨一下装饰器模式与代理模式之间的异同。
2017-05-12 17:05:46
726
原创 java I/O系统(1)-File类
自己对java的IO系统不是非常了解。所以我想进一步一点点去整理好它。在本篇博文中,我们详细介绍一下File类的意义,包括它很大部分的功能。
2017-05-10 17:28:17
737
原创 java实现排序(6)-快速排序
快速排序,作为一个编程人员来说,肯定都是接触过的。那么,你还记得怎么去实现么,怎么优化呢?在本篇博文中,会详细介绍快速排序的过程,对于不是唯一的过程(可变或者可选),我们讨论各种优化的方法。
2017-05-09 17:27:55
1527
1
原创 java实现排序(5)-归并排序
归并排序也是一种效率非常高的排序算法,它的时间复杂度是O(NlogN)。在本文中,会详细介绍归并排序的概念和排序的基本原理。最后用代码实现归并排序,供大家参考
2017-05-08 16:24:03
698
原创 java实现排序(4)-堆排序
在上一篇博文中,尝试实现了二叉堆的结构。在本篇博文中,将建立在堆的基础之上,讨论如何用堆实现排序。二叉堆的代码直接引用昨天的实现源码,在代码的基础上做一些修改使其变成堆排序
2017-05-04 15:28:07
492
原创 java实现(3)-堆
引言堆,我们一般作为二叉堆的一种总称,它是建立在二叉树之上的。在本篇博文中,会详细介绍堆的结构和原理,以至于写出堆的实现。在代码实现中我们主要是针对于插入和删除做一些操作,在删除中我们只考虑删除最小的,而不涉及更深一步的操作。
2017-05-03 17:10:11
632
原创 java中不太常见的东西(5) - 注解
在日常的开发过程中,其实每个人都用到了注解,最常见的就是重写@Override。既然这么常见为什么还要放入不常见的模块中呢?在本篇博文中会详细介绍关于注解的概念和各个组成部分,同时会写出一个demo来说明自定义注解使用的一种情况。
2017-05-02 15:43:00
971
原创 java中不太常见的东西(4) - Fork/Join
引言《java中不太常见的东西》这个模块已经好久没写了,今天写一个java中自带的分布式处理方式Fork/Join。Fork/Join在JDK1.7的时候引入,它某种程度上可以实现简单的map-reduce操作。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-28 16:07:26
7448
7
原创 java实现排序(3)-希尔排序
引言希尔排序也是经典的排序算法之一,其实本质上还是插入排序,不过它对插入排序做了进一步的优化。在本篇博文中会详细介绍希尔排序,讨论算法性能,用代码实现希尔排序并解释为什么它相对于插入排序有了进一步的优化。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-27 16:21:05
910
原创 Mysql你必须知道的查询语句
在Mysql数据库的操作中有核心的两种语言,一种是DDL(Data Definition Language),翻译为数据定义语言,它主要是对数据库,表的创建,修改和删除。另外一种叫DML(Data Manipulation Language),翻译为数据操作语言,它主要是对表数据的插入,查询,修改和删除,也称之为CRUD(Create、Read、Update、Delete)操作
2017-04-26 15:28:56
3127
2
原创 java实现排序(2)-冒泡排序
引言也许冒泡排序,一个刚出大学的的程序员可能写的出来,反而工作了几年的老程序员可能会写不出来,你还写的出来么?在本篇博文中,详细介绍了冒泡排序的概念,同时用数组和双向链表来实现,附带一种通俗的优化方法。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.csdn.net/u012403290技术点
2017-04-24 15:12:34
2849
原创 java实现(2)-AVL树
引言在上一篇博文中,介绍了二叉查找树。在二叉查找树的基础上,深入研究一下AVL树,并用代码实现核心模块:插入和删除。在本篇博文中主要详细介绍了AVL树的平衡概念,同时介绍解决平衡问题的旋转问题。在实现代码部分详细介绍在插入的时候保证树的平衡。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-21 16:43:44
654
原创 java实现(1)-二叉查找树
引言在这个模块中,主要是用自己的代码来实现一些底层的源码。不像底层源码那样难理解,会用更加通俗的方式让每个人都能看得懂,比如说不会在if中声明变量和赋值,即使if只有一句话也不会省略花括号,不适用移位等等。在本篇博文中,会用自己的方式来实现二叉查找树,同时把它转变为更加通用的泛型。
2017-04-20 15:17:15
972
2
原创 java实现排序(1)-插入排序
引言排序模块会把所有的排序算法都整理一遍,方便自己以后回身学习。在本篇博文中主要介绍了时间复杂度为O(N^2)的插入排序算法,并用demo进行实现。不过在开始之前需要学习一些基础的数学知识,希望对大家有所帮助。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-19 15:40:40
939
2
原创 深入浅出LinkedList与ArrayList(2)
引言上一篇博文,我们了解了LinkedList与ArrayList的底层构造和效率问题。在这篇博文中,我自己写了两个自己的数据结构来感受效率问题,这些代码的由来源于我在某易的师兄的提问。所以我做了以下整理,希望对大家有所启发,其实我们自己也能写底层的源码。
2017-04-18 14:07:09
889
原创 深入浅出LinkedList与ArrayList
引言本来我写了一篇从源码介绍ArrayList和LinkedList的博文,但是反复考虑之后,觉得并没有多大意义。相信稍微有点基础的都能明白他们基本的原理。所以我又重新写了一篇更高级一些的文章,不再去研究底层的构造。在本篇博文中我会用很多的例子来说明两者的区别,用底层的两者不同实现来讲解,比较关键操作两者的运行时间。
2017-04-17 14:55:53
1248
原创 java中不太常见的东西(3) - Optional
上一篇博文我们主要介绍了关于Lambda表达式相关的知识,所以在今天的博文中我想把一个同样还不普及的类介绍给大家,Optional这个类是在Jdk1.8的时候引入的,它的主要功能是判断一个值是否为空,伴随着对数据相应的处理。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-15 16:50:21
3211
原创 java中不太常见的东西(2) - Lambda表达式
在JDK1.8的新特性中,引入了一个叫Lambda表达式的东西,或许有些小伙伴到现在都没有写过。它的核心理念就是“可以像对象一样传递匿名函数”。在本篇博文中,我会详细介绍Lambda的概念,同时介绍几个JDK1.8中新增加的一些类和关键性的注解,在后面会给出一些简单的Lambda的例子供大家交流。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-14 15:49:36
2129
1
原创 JDK1.8源码逐字逐句带你理解WeakHashMap底层
WeakHashMap其实也是java不常见的东西,但是和linkedHashMap一样,有它自己独特的功能。在本篇博文中我会用例子详细介绍它独有的属性,同时会对照源码来解释为什么它具备这样的功能。在知识点中会扩展关于引用的相关知识,帮助后面的理解。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-13 15:12:31
1637
原创 JDK1.8源码逐字逐句带你理解LinkedHashMap底层
关于java中的不常见模块,让我一下子想我也想不出来,所以我希望以后每次遇到的时候我就加一篇。上次有人建议我写全所有常用的Map,所以我研究了一晚上LinkedHashMap,把自己感悟到的解释给大家。在本篇博文中,我会用一个例子展现LinkedHashMap的运行和初始化情况,展示LinkedHashMap的数据存储情况,同时用JDK1.8中它的源代码解释给大家。
2017-04-12 15:48:29
4830
2
原创 java中不太常见的东西(1) - 枚举enum
之所以我想总结一下java中不太用的东西,是因为我再研究每个版本jdk中,发现有些内容“热火朝天”,但是有些东西却“门可罗雀”。比如说jdk1.5中新增了泛型,强化for循环和枚举等,但是前两者已经被各位熟知了,但是枚举在日常开发中都不太会用的。在本篇博文中,我会详细介绍enum的使用方式,同时比较常量与enum的优劣。
2017-04-11 14:00:47
1355
2
原创 编码灵魂(6)-开闭原则
我觉得编码是有灵魂的,就像每个人都有信仰一样。那么如何去体现信仰,如何凸显灵魂就需要依赖它所固有的原则。最近学习了设计模式的六大原则,有所感悟,特此做总结和记录。本文中主要介绍了关于开闭原则的理解和定义,同时我们总结一下所有前面的五大原则对开闭原则的影响。笔者目前整理的一些blog针对面试都是超高频出现的。
2017-04-10 14:37:08
1372
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人