首页
学习
活动
专区
工具
TVP
发布

皮皮之路

专栏作者
33
文章
26943
阅读量
31
订阅数
【JDK1.8】JDK1.8集合源码阅读——总章
  今天开始阅读jdk1.8的集合部分,平时在写项目的时候,用到的最多的部分可能就是Java的集合框架,通过阅读集合框架源码,了解其内部的数据结构实现,能够深入理解各个集合的性能特性,并且能够帮助自己在今后的开发中避免犯一些使用错误。另外笔者自己也是摸着石头过河,如果有描述不当的地方,希望园友们能够不吝指出,希望能够和大家共同进步!
joemsu
2019-05-25
4070
【JDK1.8】JUC——ReentrantLock
在之前的几篇中,我们回顾了锁框架中比较重要的几个类,他们为实现同步提供了基础支持,从现在开始到后面,就开始利用之前的几个类来进行各种锁的具体实现。今天来一起看下ReentrantLock,首先来看一下Java doc 上对ReentrantLock的解释:
joemsu
2018-08-21
3990
【JVM】浅谈双亲委派和破坏双亲委派
笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实践才能加深理解,正应对了那句话——“Talk is cheap, show me the code”。前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。
joemsu
2018-08-03
1.4K0
【JDK1.8】Java 8源码阅读汇总
一、前言 ​    万丈高楼平地起,相信要想学好java,仅仅掌握基础的语法是远远不够的,从今天起,笔者将和园友们一起阅读jdk1.8的源码,并将阅读重点放在常见的诸如collection集合以及concurrent并发两块,另外笔者自己也是摸着石头过河,如果有描述不当的地方,希望园友们能够不吝指出,希望能够和大家共同进步! 二、jdk1.8新特性简述 ​    相较于之前的jdk版本,jdk1.8加入了很多新特性,诸如Lambda表达式,函数式接口,时间的处理类等新特性,值得一提的是可以在Interfac
joemsu
2018-06-21
4710
【Spring】浅谈spring为什么推荐使用构造器注入
一、前言 ​ Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spring的IOC容器管理,将对象的依赖关系由Spring控制,避免硬编码所造成的过度程序耦合。前几天的时候,笔者的同事问我为什么要使用构造器的注入方式,我回答说因为Spring文档推荐这种,而说不出为什么 T^T,后面抽时间了解了一下,下面就是笔者要讨论的就是其注入方式。 二、常见的三种注入方式 ​ 笔
joemsu
2018-06-21
1.3K0
【JDK1.8】JDK1.8集合源码阅读——HashMap
一、前言 笔者之前看过一篇关于jdk1.8的HashMap源码分析,作者对里面的解读很到位,将代码里关键的地方都说了一遍,值得推荐。笔者也会顺着他的顺序来阅读一遍,除了基础的方法外,还添加了很多其他补
joemsu
2018-06-21
6390
【JDK1.8】JDK1.8集合源码阅读——LinkedHashMap
一、前言 在上一篇随笔中,我们分析了HashMap的源码,里面涉及到了3个钩子函数,用来预设给子类——LinkedHashMap的调用,所以趁热打铁,今天我们来一起看一下它的源码吧。 二、Linked
joemsu
2018-06-21
5210
【JDK1.8】JDK1.8集合源码阅读——TreeMap(一)
一、前言 在前面两篇随笔中,我们提到过,当HashMap的桶过大的时候,会自动将链表转化成红黑树结构,当时一笔带过,因为我们将留在本章中,针对TreeMap进行详细的了解。 二、TreeMap的继承关
joemsu
2018-06-21
4700
【JDK1.8】JDK1.8集合源码阅读——TreeMap(二)
一、前言 在前一篇博客中,我们对TreeMap的继承关系进行了分析,在这一篇里,我们将分析TreeMap的数据结构,深入理解它的排序能力是如何实现的。这一节要有一定的数据结构基础,在阅读下面的之前,推
joemsu
2018-06-21
5480
【Spring】Spring boot多数据源历险记
一、问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务。至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务器。T^T 当笔者添加完数据源,写完业务逻辑之后,跑起来却发现报了个错。 Caused by: nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.spring
joemsu
2018-06-21
1.3K0
【JDK1.8】JDK1.8集合源码阅读——IdentityHashMap
一、前言 今天我们来看一下本次集合源码阅读里的最后一个Map——IdentityHashMap。这个Map之所以放在最后是因为它用到的情况最少,也相较于其他的map来说比较特殊。就笔者来说,到目前为止还没有用到过它 ┐(゚~゚)┌。它的罕见与它的用途有关,当时的Map设计者是这么说的: This class is designed for use only in the rare cases wherein reference-equality semantics are required. 这个类仅用
joemsu
2018-06-21
4140
【JDK1.8】JDK1.8集合源码阅读——ArrayList
一、前言 在前面几篇,我们已经学习了常见了Map,下面开始阅读实现Collection接口的常见的实现类。在有了之前源码的铺垫之后,我们后面的阅读之路将会变得简单很多,因为很多Collection的结
joemsu
2018-06-21
4070
【JDK1.8】JDK1.8集合源码阅读——LinkedList
一、前言 这次我们来看一下常见的List中的第二个——LinkedList,在前面分析ArrayList的时候,我们提到,LinkedList是链表的结构,其实它跟我们在分析map的时候讲到的Link
joemsu
2018-06-21
4370
【JDK1.8】JDK1.8集合源码阅读——Set汇总
一、前言 这一篇里,我将对HashSet、LinkedHashSet、TreeSet进行汇总分析,并不打算一一进行详细介绍,因为JDK对Set的实现进行了取巧。我们都知道Set不允许出现相同的对象,而
joemsu
2018-06-21
3770
【JDK1.8】JUC.Lock综述
一、前言 前段时间结束了jdk1.8集合框架的源码阅读,在过年的这段时间里,一直在准备JUC(java.util.concurrent)的源码阅读。平时接触的并发场景开发并不很多,但是有网络的地方,就存在并发,所以想找几本书阅读深入一下,看到网上推荐较多的两本书《Java并发编程实战》和《Java多线程编程核心技术》。看了两书的优缺点后,笔者选择了先看后者,据说代码例子较多,书到手后,看完后的印象就是对并发的关键字、几个常见类的api进行了介绍,内容挺早以前,讲的也是不是很深,对Java SE5新加的类介绍
joemsu
2018-06-21
5930
【MySQL】通过Binary Log简单实现数据回滚(一)
一、前言 对,没错,我又水了好一阵子,深刻反思寄几。前段时间,工作项目上出于对excel等批量操作可能出现误操作的问题,要求提供一个能够根据操作批次进行数据回滚的能力。在开发的过程中接触到了MySQL的Binary Log,感觉有些收获,记录一下。 二、Binary Log的概念 首先我们要了解一下什么是Binary Log(详情点进去看): Binary Log(二进制文件),包含了描述数据库更改的“事件”,例如创建表的操作或者改变表的数据。如果采用基于行的日志,它还能包含已经发生更改的语句事件(
joemsu
2018-06-21
1.6K0
【JDK1.8】JUC——LockSupport
一、前言 Basic thread blocking primitives for creating locks and other synchronization classes. 用于创建锁定和其他同步类的基本线程阻塞原语(基础?)。 上面这段话是Java Doc对LockSupport的描述,表明了该类在实现锁当中的重要意义。因此我们先来查看一下其中的源码,看看它是如何实现的。 二、LockSupport成员变量分析 public class LockSupport { private
joemsu
2018-06-21
4810
【JDK1.8】JUC——AbstractQueuedSynchronizer
一、前言 在上一篇中,我们对LockSupport进行了阅读,因为它是实现我们今天要分析的AbstractQueuedSynchronizer(简称AQS)的基础,重新用一下最开始的图: 可以看到,在
joemsu
2018-06-21
5350
【JDK1.8】JUC——AbstractQueuedSynchronizer
一、前言 在上一篇中,我们对LockSupport进行了阅读,因为它是实现我们今天要分析的AbstractQueuedSynchronizer(简称AQS)的基础,重新用一下最开始的图: 可以看到,在
joemsu
2018-05-17
6020
【JDK1.8】JUC——LockSupport
一、前言 Basic thread blocking primitives for creating locks and other synchronization classes. 用于创建锁定和其他同步类的基本线程阻塞原语(基础?)。 上面这段话是Java Doc对LockSupport的描述,表明了该类在实现锁当中的重要意义。因此我们先来查看一下其中的源码,看看它是如何实现的。 二、LockSupport成员变量分析 public class LockSupport { private
joemsu
2018-05-17
7300
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档