自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

brickworkers的博客

识人莫小池中水,浅水不妨有卧龙

原创 JDK1.8逐字逐句带你理解ConcurrentHashMap(3)

引言这篇是介绍ConcurrentHashMap的第三篇,第一篇主要介绍了在jdk1.8中所用到的一些关键知识点,第二篇主要学习了ConcurrentHashMap的组织结构与线程安全的实现,同时介绍了几个极其重要的内部类。这一篇主要是我学习领悟到的几个核心方法,包括扩容,添加和查找。笔者目前整理...

2017-03-30 15:39:10 3949 11

原创 JDK1.8逐字逐句带你理解ConcurrentHashMap(2)

在上一篇博文我们介绍了ConcurrentHashMap在jdk1.8中所必要的知识,作为基础入门。因为jdk1.8的ConcurrentHashMap做了太多的变动,所以新知识学习是必要的。今天是ConcurrentHashMap的第二篇,第二篇主要是认识ConcurrentHashMap,我将...

2017-03-30 13:27:00 6757 2

原创 JDK1.8逐字逐句带你理解ConcurrentHashMap

在前几篇博文中我详细介绍了HashMap的底层实现原理,后来我接连写了三天JVM和GC的一些知识,那些知识偏向于理论。今天换点口味,和大家一起研究学习一下ConcurrentHashMap的底层实现,因为jdk1.8在HashMap和concurrentHashMap和以往都发生了变化。我们分三部...

2017-03-28 14:30:42 19067 15

原创 GC-垃圾收集算法与关键收集器

在笔者的上两篇博文中,主要介绍了jvm的结构和对象的“生死”问题。今天主要来说说垃圾收集算法与各种关键的收集器,分析比较各种收集算法的优劣。如果时间和篇幅允许的话对内存动态分配做一些解释,因为垃圾回收和动态分配是java的两大基本特性。笔者目前整理的一些blog针对面试都是超高频出现的。

2017-03-27 14:17:44 1609 0

原创 JVM你必需知道的基础

昨天写了一篇关于java中对象生死的问题,主要目的是想让大家感觉一下我所感受到的东西:其实jvm也非常有意思,甚至对象的创建与消亡都可能触动你的心弦。所以,今天我打算深入学习一下jvm必要基础(上一篇博文也略有涉及),主要介绍一下JVM运行时各个区域的区别和作用,本来想罗列一张表的,但是篇幅会很丑...

2017-03-26 12:37:58 1559 0

原创 GC-谈谈“生死”

今天周六,并不断更技术博客。今天我想和大家聊聊“生死”。有研读过jvm的小伙伴们知道java相比于c++来说,内存动态分配和垃圾回收技术是两大核心。一个对象的出生由我们来创造,但是对象的死亡很多时候并不由我们决定,而是由垃圾回收技术进行管理和操作

2017-03-24 23:41:11 1129 1

原创 JDK1.8源码逐字逐句带你理解HashMap底层(2)

引言:很开心,大家继续来看HashMap底层的第二段。昨天(上一篇博文)我们主要是介绍了HashMap类的一些重要的成员变量并简述了他们的名称作用,附带图文解释了他们之间存在的关系,又深入学习了HashMap存储的发展和结构,以一个简单的demo描述了HashMap的初始化和各个变量的变化情况。今...

2017-03-24 15:16:21 2961 7

原创 JDK1.8源码逐字逐句带你理解HashMap底层(1)

引言:自己在学习这个东西的时候,发现网上很多关于HashMap底层介绍的文章基于的jdk版本比较低。因为我对比之后发现编码风格有了比较大的改变。而且,今天我想尝试一种很通俗的方式来尝试记录这次的学习。在本文中我主要整理了HashMap类的重要成员变量和关键方法的涵义和作用,HashMap初始化方式...

2017-03-23 13:36:16 2961 5

原创 java面试算法题(2)

引言本篇博文中核心是对单链表的数据操作,从不同角度分析问题,寻求不同的结果。分享给大家。

2017-06-29 15:55:59 1550 0

原创 java面试算法题(1)

引言本篇博文中核心介绍的是一些java很精辟的运算符操作,包含一些独特的思维。在面试的过程中,也可能会遇到这些问题。笔者在阿里巴巴的电话面试过程中就遇到这样的一个问题。分享给大家。

2017-06-28 15:07:00 2385 6

原创 java I/O系统(9)-对象序列化与还原

万物皆对象,在我们程序运行中,对象只要在引用链上存在引用,那么它就会一直存在。但是当我们程序结束的时候,那么对象就会消亡。那么在jvm不运行的时候我们仍能够保存下来是非常有意义的,在java中可以用序列化来实现。序列化其实也是IO系统中的一部分。在本篇博文中,详细介绍对象序列化的概念,不同序列化的...

2017-05-24 15:39:50 1133 0

原创 java I/O系统(8)-文件压缩

我们对于日志的保存,如果需要存档,那么最好的方式就是对日志文件进行压缩。压缩可以减少资源占用,在需要的时候还能回溯查找。在本篇博文中,详细介绍基于字节流的压缩方式,着重介绍ZipOutputStream、ZipInputStream文件的压缩和解压方式,同时介绍CheckedInputStream...

2017-05-23 19:33:09 704 0

原创 java I/O系统(7)-文件加锁

在通道中我们可以对文件或者部分文件进行上锁。上锁和我们了解的线程锁差不多,都是为了保证数据的一致性。在文件通道FileChannel中可以对文件进行上锁,通过FileLock可以对文件进行锁的释放。在本篇博文中会详细介绍在NIO中对文件锁的操作与配置,同时给出对应demo。

2017-05-22 17:01:01 854 0

原创 java I/O系统(6)-内存映射文件

在前面的博文中关于RandomAccessFile类对超大文件的处理方式进行了学习,随机访问是独立的,支持读写的,而且它最大的特征是可以访问文件中任意一个位置。在本篇博文中,认识一个基于NIO的对于大文件的处理方式:内存映射文件。解释它的运作原理,同时给出对应demo。

2017-05-19 15:50:16 1006 0

原创 java I/O系统(5)-Buffer类

在java的IO系统中,在JDK1.4的时候引入了新的IO系统,也就是我们常说的nio,它的主要功能是提高速度。在本篇博文中,详细介绍关于nio的构造:通道和缓冲器,核心了解ByteBuffer。

2017-05-18 16:41:27 927 0

原创 java I/O系统(4)-RandomAccessFile类

RandomAccessFile类是在java.io中的一个工具类,它独立于字符流与字节流之外,自成一派。它的核心功能就是random功能。他可以随机访问到文件的任意位置的资源,对于超大文件的局部修改有很大的帮助。在本篇博文中详细介绍RandomAccessFile类的组成结构,阐述它所解决的问题...

2017-05-16 17:05:08 819 0

原创 java I/O系统(3)-字节流与字符流

在java的IO系统中,对资源的操作分为两类:字节流与字符流。如果延承inputStream与outputStream就是字节流,如果延承reader与writer就是字符流,那么他们之间到底有什么区别呢?在本篇博文中会列出IO系统的所有操作类的框架,并对字节流与字符流做出详细的解释,最后会用一些...

2017-05-15 16:02:31 476 0

原创 java I/O系统(2)-装饰器模式

IO系统是使用了装饰器模式的典型。所以对装饰器模式的深入研究对IO系统的理解肯定大有裨益。在本文中会详细介绍装饰器模式,会用以demo展示,同时会举出例子在IO系统中是如何呈现了这种模式,最后,我们探讨一下装饰器模式与代理模式之间的异同。

2017-05-12 17:05:46 556 0

原创 java I/O系统(1)-File类

自己对java的IO系统不是非常了解。所以我想进一步一点点去整理好它。在本篇博文中,我们详细介绍一下File类的意义,包括它很大部分的功能。

2017-05-10 17:28:17 595 0

原创 java实现排序(6)-快速排序

快速排序,作为一个编程人员来说,肯定都是接触过的。那么,你还记得怎么去实现么,怎么优化呢?在本篇博文中,会详细介绍快速排序的过程,对于不是唯一的过程(可变或者可选),我们讨论各种优化的方法。

2017-05-09 17:27:55 1251 1

原创 java实现排序(5)-归并排序

归并排序也是一种效率非常高的排序算法,它的时间复杂度是O(NlogN)。在本文中,会详细介绍归并排序的概念和排序的基本原理。最后用代码实现归并排序,供大家参考

2017-05-08 16:24:03 488 0

原创 java实现排序(4)-堆排序

在上一篇博文中,尝试实现了二叉堆的结构。在本篇博文中,将建立在堆的基础之上,讨论如何用堆实现排序。二叉堆的代码直接引用昨天的实现源码,在代码的基础上做一些修改使其变成堆排序

2017-05-04 15:28:07 372 0

原创 java实现(3)-堆

引言堆,我们一般作为二叉堆的一种总称,它是建立在二叉树之上的。在本篇博文中,会详细介绍堆的结构和原理,以至于写出堆的实现。在代码实现中我们主要是针对于插入和删除做一些操作,在删除中我们只考虑删除最小的,而不涉及更深一步的操作。

2017-05-03 17:10:11 500 0

原创 java中不太常见的东西(5) - 注解

在日常的开发过程中,其实每个人都用到了注解,最常见的就是重写@Override。既然这么常见为什么还要放入不常见的模块中呢?在本篇博文中会详细介绍关于注解的概念和各个组成部分,同时会写出一个demo来说明自定义注解使用的一种情况。

2017-05-02 15:43:00 813 0

原创 java中不太常见的东西(4) - Fork/Join

引言《java中不太常见的东西》这个模块已经好久没写了,今天写一个java中自带的分布式处理方式Fork/Join。Fork/Join在JDK1.7的时候引入,它某种程度上可以实现简单的map-reduce操作。笔者目前整理的一些blog针对面试都是超高频出现的。

2017-04-28 16:07:26 6920 8

原创 java实现排序(3)-希尔排序

引言希尔排序也是经典的排序算法之一,其实本质上还是插入排序,不过它对插入排序做了进一步的优化。在本篇博文中会详细介绍希尔排序,讨论算法性能,用代码实现希尔排序并解释为什么它相对于插入排序有了进一步的优化。笔者目前整理的一些blog针对面试都是超高频出现的。

2017-04-27 16:21:05 702 0

原创 Mysql你必须知道的查询语句

在Mysql数据库的操作中有核心的两种语言,一种是DDL(Data Definition Language),翻译为数据定义语言,它主要是对数据库,表的创建,修改和删除。另外一种叫DML(Data Manipulation Language),翻译为数据操作语言,它主要是对表数据的插入,查询,修改...

2017-04-26 15:28:56 2665 2

原创 Mysql你必须知道的命令和函数

引言在本文中总结一些Mysql的常用命令和函数,也许常见,也许不常见,但是重要

2017-04-25 15:03:00 2177 0

原创 java实现排序(2)-冒泡排序

引言也许冒泡排序,一个刚出大学的的程序员可能写的出来,反而工作了几年的老程序员可能会写不出来,你还写的出来么?在本篇博文中,详细介绍了冒泡排序的概念,同时用数组和双向链表来实现,附带一种通俗的优化方法。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.c...

2017-04-24 15:12:34 2341 0

原创 java实现(2)-AVL树

引言在上一篇博文中,介绍了二叉查找树。在二叉查找树的基础上,深入研究一下AVL树,并用代码实现核心模块:插入和删除。在本篇博文中主要详细介绍了AVL树的平衡概念,同时介绍解决平衡问题的旋转问题。在实现代码部分详细介绍在插入的时候保证树的平衡。笔者目前整理的一些blog针对面试都是超高频出现的。

2017-04-21 16:43:44 566 0

原创 java实现(1)-二叉查找树

引言在这个模块中,主要是用自己的代码来实现一些底层的源码。不像底层源码那样难理解,会用更加通俗的方式让每个人都能看得懂,比如说不会在if中声明变量和赋值,即使if只有一句话也不会省略花括号,不适用移位等等。在本篇博文中,会用自己的方式来实现二叉查找树,同时把它转变为更加通用的泛型。

2017-04-20 15:17:15 823 2

原创 java实现排序(1)-插入排序

引言排序模块会把所有的排序算法都整理一遍,方便自己以后回身学习。在本篇博文中主要介绍了时间复杂度为O(N^2)的插入排序算法,并用demo进行实现。不过在开始之前需要学习一些基础的数学知识,希望对大家有所帮助。笔者目前整理的一些blog针对面试都是超高频出现的。

2017-04-19 15:40:40 745 2

原创 深入浅出LinkedList与ArrayList(2)

引言上一篇博文,我们了解了LinkedList与ArrayList的底层构造和效率问题。在这篇博文中,我自己写了两个自己的数据结构来感受效率问题,这些代码的由来源于我在某易的师兄的提问。所以我做了以下整理,希望对大家有所启发,其实我们自己也能写底层的源码。

2017-04-18 14:07:09 775 0

原创 深入浅出LinkedList与ArrayList

引言本来我写了一篇从源码介绍ArrayList和LinkedList的博文,但是反复考虑之后,觉得并没有多大意义。相信稍微有点基础的都能明白他们基本的原理。所以我又重新写了一篇更高级一些的文章,不再去研究底层的构造。在本篇博文中我会用很多的例子来说明两者的区别,用底层的两者不同实现来讲解,比较关键...

2017-04-17 14:55:53 1004 0

原创 java中不太常见的东西(3) - Optional

上一篇博文我们主要介绍了关于Lambda表达式相关的知识,所以在今天的博文中我想把一个同样还不普及的类介绍给大家,Optional这个类是在Jdk1.8的时候引入的,它的主要功能是判断一个值是否为空,伴随着对数据相应的处理。笔者目前整理的一些blog针对面试都是超高频出现的。

2017-04-15 16:50:21 2950 0

原创 java中不太常见的东西(2) - Lambda表达式

在JDK1.8的新特性中,引入了一个叫Lambda表达式的东西,或许有些小伙伴到现在都没有写过。它的核心理念就是“可以像对象一样传递匿名函数”。在本篇博文中,我会详细介绍Lambda的概念,同时介绍几个JDK1.8中新增加的一些类和关键性的注解,在后面会给出一些简单的Lambda的例子供大家交流。...

2017-04-14 15:49:36 1773 0

原创 JDK1.8源码逐字逐句带你理解WeakHashMap底层

WeakHashMap其实也是java不常见的东西,但是和linkedHashMap一样,有它自己独特的功能。在本篇博文中我会用例子详细介绍它独有的属性,同时会对照源码来解释为什么它具备这样的功能。在知识点中会扩展关于引用的相关知识,帮助后面的理解。笔者目前整理的一些blog针对面试都是超高频出现...

2017-04-13 15:12:31 1355 0

原创 JDK1.8源码逐字逐句带你理解LinkedHashMap底层

关于java中的不常见模块,让我一下子想我也想不出来,所以我希望以后每次遇到的时候我就加一篇。上次有人建议我写全所有常用的Map,所以我研究了一晚上LinkedHashMap,把自己感悟到的解释给大家。在本篇博文中,我会用一个例子展现LinkedHashMap的运行和初始化情况,展示LinkedH...

2017-04-12 15:48:29 4446 2

原创 java中不太常见的东西(1) - 枚举enum

之所以我想总结一下java中不太用的东西,是因为我再研究每个版本jdk中,发现有些内容“热火朝天”,但是有些东西却“门可罗雀”。比如说jdk1.5中新增了泛型,强化for循环和枚举等,但是前两者已经被各位熟知了,但是枚举在日常开发中都不太会用的。在本篇博文中,我会详细介绍enum的使用方式,同时比...

2017-04-11 14:00:47 1129 2

原创 编码灵魂(6)-开闭原则

我觉得编码是有灵魂的,就像每个人都有信仰一样。那么如何去体现信仰,如何凸显灵魂就需要依赖它所固有的原则。最近学习了设计模式的六大原则,有所感悟,特此做总结和记录。本文中主要介绍了关于开闭原则的理解和定义,同时我们总结一下所有前面的五大原则对开闭原则的影响。笔者目前整理的一些blog针对面试都是超高...

2017-04-10 14:37:08 1107 0

提示
确定要删除当前文章?
取消 删除