自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dylaniou的博客

想写一首关于世界的诗,以编程的方式~

  • 博客(116)
  • 资源 (9)
  • 收藏
  • 关注

原创 【每日一练及解题思路V2】给定一个字符串,找出其中不含重复字符的最长子串的长度

从左到右遍历字符串的每个字符,找到每个字符所能组成的不包含重复字符的子串,然后比较这些子串的长度,取其中最大的那一个即是所要找的不含重复字符的最长子串。

2022-04-09 12:56:10 1049

原创 Oracle Java官网关于生产者消费者的示例解析

通过模拟现实生活中一边生产一遍消费的场景,来说明:通过给方法加锁、轮询条件是否满足、以及适时地协调线程间通信(wait/nofity)的方式,可以确保多线程间能够以一种正确且高效的方式访问共享资源

2022-04-07 12:22:26 2403 2

原创 synchronized与lock在原理、用法、是否阻塞、是否可响应中断、是否有超时机制、是否公平、是否支持并发读、可重入等方面的对比分析

synchronized与lock在原理、用法、是否阻塞、是否可响应中断、是否有超时机制、是否公平、是否支持并发取、可重入等方面的对比分析

2022-04-04 11:49:12 1491 1

原创 不加锁交替执行线程的两种思路(递加取余判断、环形链表步进)

不加锁交替执行线程的两种思路(递加取余判断、环形链表步进)

2022-04-02 17:37:27 991

原创 线程交替执行的几种方法(递加求余判断/环形链表步进/LockSupport/synchronized/ReentrantLock/CountDownLatch/循环屏障/信号量)

线程交替执行的几种方法(累加求余判断/环形链表步进/LockSupport/synchronized关键字/ReentrantLock可重入锁/CountDownLatch倒计时门闩/CyclicBarrier循环屏障/Semaphore信号量)

2021-04-11 22:58:29 803 1

原创 使用完全注解的方式进行AOP功能实现(@Aspect+@Configuration+@EnableAspectJAutoProxy+@ComponentScan)

1、简单介绍如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP,如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换.2、注解说明@Configuration//用于定义配置类,可替换xml配置文件@EnableAspectJAutoProxy(proxyTargetClass=true) //开启AspectJ 自动代理模式,如果不填proxyTargetClass=true,默认为false(代表即便你配置了@EnableAsp

2021-04-05 13:04:32 1145 6

原创 让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值

首先,了解一些Unsafe这个类,这个类可以直接进行内存级别的相关操作(如分配释放内存、修改指定内存地址的值等),这里主要介绍的是用它的theUnsafe私有成员属性来修改指定内存位置的值。流程如下:一、 获取Unsafe theUnsafe属性1、 通过反射获取Unsafe.class的theUnsafe属性(可以用它来进行内存操作,这里主要是用它来修改指定内存位置的值)2、 将属性访问权限放开因为该属性是私有属性,本来外部是无法直接访问的,如果不把属性访问权限放开,则无法获取属性,在执行f.g

2021-04-04 19:01:46 390 2

原创 让星星⭐月亮告诉你,当我们在说CPU一级缓存二级缓存三级缓存的时候,我们到底在说什么?

到底什么是cpu缓存(cache)?1、要弄清cpu cache,要先搞懂内存,内存的分类现在,计算机具有两种不同类型的内存:⭐一种类型是在RAM模块中使用的类型,它是DRAM或动态RAM,DRAM是一种使用电容器存储数据的存储器,这些电容器必须经常用电,不断地动态更新,以存储数据。⭐但是,计算机使用的另外一种类型的内存,不必经常刷新。这种存储器被称为SRAM或静态RAM,SRAM是cpu缓存中使用的。而且由于不必不断刷新SRAM,因此它比DRAM快很多,而且价格也很昂贵。 2、cpu缓存的作用到

2021-04-03 18:39:24 474

原创 (加深理解)类初始化及实例对象初始化顺序

1、类初始化过程①一个类要创建实例需要先加载并初始化该类 ✦main方法所在类需要先加载和初始化②一个子类要初始化需要先初始化父类③一个类初始化就是执行<cinit>()方法 ✦<cinit>()方法由静态类变量显示赋值代码和静态代码组成 ✦静态类变量显示赋值代码和静态代码从上到下顺序执行 ✦<cinit>()方法只执行一次 ✦静态代码块只有在被第一次调用的时候才执行,且只执行一次2、实例初始化过程①实例初始化就是执行&l...

2021-03-25 22:14:41 339

原创 用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)

用批处理批量替换文件中的某个字符串(亲测可用,部分功能有待优化,欢迎指正)

2017-08-02 19:50:34 36098 11

原创 【二叉树前/先序DLR中序LDR后序LRD遍历及镜像翻转,so esay~】

二叉树的遍历方式,根据遍历根节点的顺序不同,分为三种:前序(先序)遍历(DLR)、中序遍历(LDR)、后序遍历(LRD);镜像反转【将二叉树的每个左右子树互换】

2022-04-17 21:42:16 1464

原创 逆序打印字符串的三种思路(StringBuilder.reverse()方法/从后往前倒序访问字符数组/前后交换字符数组元素)

逆序打印字符串的三种思路(StringBuilder.reverse()方法/从后往前倒序访问字符数组/前后交换字符数组元素)

2022-04-12 12:38:11 1297

原创 想写一首关于世界的诗,以编程的方式~

很多很多时候,会有种热泪盈眶的错觉,比如清晨午后黄昏不经意间洒落的阳光,挥手间流转的微风,摇曳的叶子,动听的音乐,温暖的文字,可爱的人儿,可口的饭菜,健康的身体,脚踏实地的日子~从小就爱哼听过的好听的调儿,那时候还只有从录音机或电视剧里才能听到,但大都只能听一次就过了,没法存起来一直听,所以就只能一直反复哼唱才能多记住一会。所以,就幻想以后把好听的都收藏下来。到后来有mp3/4,有了随身听,有了手机,小时候的愿望实现啦,随时想听就听(除了电量不够给力,所以还是偏爱mp4)很幸运能做自己喜欢的事情,所以贪

2022-04-11 08:04:46 203

原创 【每日一练及解题思路V1】给定一个字符串,找出其中不含重复字符的最长子串的长度

给定一个字符串,找出其中不含重复字符的最长子串的长度

2022-04-08 16:27:43 1076

原创 Oracle java官网关于可重入读写锁ReentrantReadWriteLock的解析

Oracle java官网关于可重入读写锁ReentrantReadWriteLock的解析1.[原文链接](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html)2.与ReadWriteLock的关系3.这个类有以下特性:1).Acquisition order(获取顺序)2).Reentrancy(可重入性)3).Lock downgrading(锁降级)4).In

2022-04-08 12:22:30 1094

原创 Oracle Java官网关于不可变对象的解析

Oracle Java官网关于不可变对象的解析一、Immutable Objects(不可变对象)1. 原文url2. 原文翻译二、A Synchronized Class Example(一个同步类的例子)1. 原文url2.原文代码3. 原文翻译三、A Strategy for Defining Immutable Objects(定义不可变对象的策略)1.原文url2.原文翻译3.原文代码一、Immutable Objects(不可变对象)1. 原文url https://docs.oracle

2022-04-07 22:17:35 691

原创 13行代码实现两个线程交替打印1-100内的整数(不加锁、递加取余判断),欢迎来挑战~

13行代码实现两个线程交替打印1-100内的整数,核心代码如下: private static int step = 0; public static void task(int max,int remainder){ while(step<=max) { if(step%2==remainder) System.out.println(Thread.currentThread().getName() + step++);

2022-01-14 21:03:22 224

原创 解决https网站通过nginx+openssl自签名证书访问,在谷歌浏览器报不安全告警的问题

1.使用指定-subj “/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization”,生成根证书私钥和根证书 -keyout CA-private.key -out CA-certificate.crtopenssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj “/C=CN/ST=MyProvince/L=MyCity/O=MyOrganization” -keyout CA-private.key -out CA

2021-10-14 00:37:55 7201 18

原创 让星星⭐月亮告诉你,windows实用快捷按键

1.打开cmd窗口: win+R 输入 cmd2.打开注册表:win+R 输入 regedit3.打开卸载或更改程序:win+R 输入 appwiz.cpl4.打开开机启动项配置:win+R 输入 msconfig5.打开计算器:win+R 输入 calc6.打开画图:win+R 输入 mspaint7.打开文件管理器:win+E8.在某文件夹下创建新文件夹:ctrl+shift+N9.切换窗口:alt+tab10.切换到桌面:win+D11.彻底永久删除某文件(慎用):shift+de

2021-08-27 23:53:57 104

原创 因未重写hashCode和equals方法导致的HashMap的内存泄漏问题

一、⭐⭐⭐何为内存泄漏????????????内存泄漏,指的是该对象在Java应用程序中的使命已经完结,该做的事情都已经做完了,对Java应用程序来说,已经没有继续存在的价值和意义了,可以被GC回收了。可偏偏GC无法对这个对象做回收处理。因为,该对象被错误的禁锢在了某个不知名不易被察觉的地方。随着时间的流逝,这种因各种原因导致的内存泄漏而存在的无效对象会越来愈多,占用的内存就越大,就有可能会导致Java应用程序申请不到足够的内存空间,引发内存溢出。二、⭐⭐⭐Object中的hashCode和equal

2021-04-26 00:12:20 2388

原创 如何玩转序列化 反序列化 Serializable transient serialVersionUID

一、⭐⭐⭐什么是序列化和反序列化????????????序列化:通过IO字节流的方式,将jvm内存中的Java对象转换为另外一种格式持久存储下来(记录到文件里、存储到数据库里、上传到网络,本文采用的是记录到文件里);反序列化:通过IO字节流的方式,将被持久化的特定格式的Java对象反序列化还原出来。二、⭐⭐⭐序列化和反序列化的使用要点????????????1. 序列哈反序列化要先实现 Serializable 接口;2. transient不参与序列化 ;3. static修饰的属性不参与序列

2021-04-24 18:29:45 1914

原创 mysql常用命令锦集(持续更新ing)

#连接数据库mysql -uroot -ppassword#MYSQL支持的引擎(InnoDB)show engines;#查看当前数据库select database();#查看MYSQL支持的引擎(InnoDB)show engines;#切换数据库use spring;#如何查看mysql的安装目录show variables like "%char%";#如何查看mysql数据库物理文件存放位置show variables like "%data%";#查看版本号sel

2021-04-18 09:23:54 83

原创 让星星⭐月亮告诉你,从Redis配置文件里一探Redis缓存清理策略的究竟

一、⭐⭐⭐Redis配置文件路径????????????类似这样:D:\lib\redis\Redisx645010master\redis.windows.conf二、⭐⭐⭐Redis缓存清理相关的注释及配置参数????????????Don't use more memory than the specified amount of bytes.When the memory limit is reached Redis will try to remove keysaccording to

2021-04-17 22:03:39 101

原创 让星星⭐月亮告诉你,Thread.join底层源码到底是如何实现插队功能的?(synchronized+while(isAlive)+wait(0))

⭐⭐⭐解析Thread.join底层源码,分析如何保证调用它的线程实现插队功能????????????1、Thread.join方法加了synchronized关键字,为了和后面的wait(0)搭配使用;2、使用while循环检测调用join方法的插队线程是否还在运行,若还在运行,就调用wait(0)方法,假装释放锁后去排队了,其实时间参数传入的是0,也就是没去排队,还会继续循环执行这套逻辑;3、直到调用join的插队线程执行完毕die了,才会从循环中跳出,这时才算插队结束,才会回到被插队的线程中继续

2021-04-11 23:18:57 173

原创 让星星⭐月亮告诉你,为啥就只加了一个static就让程序连最简单的+1操作都不会了?究竟实例变量和静态变量之间藏着什么秘密?

零、前情提要????????????实例变量(也称成员变量),在类的实例对象被创建时,会先按照实例变量的先后顺序被赋初始默认值,然后再按照实例赋值语句先后的顺序进行实例变量的赋值操作,最后执行构造方法。静态变量(也称类变量),在类初始化的时候,会先按照静态变量的先后顺序被赋初始默认值,然后再按照静态赋值语句先后的顺序进行静态变量的赋值操作。这里还搞不大清楚没关系,让我们来演示推敲一番:一、⭐⭐⭐实例变量版本演示代码????????????class InstanceObj{ public st

2021-04-07 18:08:42 96

原创 如何配置eclipse的JVM运行参数-Xms10m -Xmx10m

一、⭐⭐⭐使用场景????????????当想测试一些需要触发垃圾回收的场景时,可以通过配置eclipse的jvm运行参数的方式,限定内存的大小,从而达到效果二、⭐⭐⭐配置步骤????????????1、右键你的项目工程2、点击Run AS3、点击Run Configurations…4、点击Java Application5、选择要调试运行的类6、点击Arguments这个tab页7、在VM arguments里添加要配置的jvm参数8、点击Apply9、点击Run三、⭐⭐⭐步骤截

2021-04-06 19:24:52 2961

原创 让星星⭐月亮告诉你,强软弱虚引用类型对象在内存足够和内存不足的情况下,面对System.gc()时,被回收情况如何?

一、⭐⭐⭐工具????????????Eclipse+JDK1.8注:测试前需配置eclipse的JVM运行参数:-Xmx10m -Xms10m(如何配置eclipse的JVM运行参数),只分配10M的内存。因为会使用创建指定大小字节数组的方式,来触发内存临界值(10M),进而观察内存足够和不足两种场景下不同引用类型的具体表现。二、⭐⭐⭐概念????????????1 强引用类型强引用类型的对象无特定类型,硬气!宁折不弯,即便在内存不足报OutOfMemmoryError(OOM)的情况下,也不肯

2021-04-06 19:06:28 404 2

原创 让星星⭐月亮告诉你,eclipse java连接mysql8.0遇到的JDK版本驱动时间相关报错及解决方法

驱动相关报错:Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.解决方法:应该用com.mysql.cj.jdb

2021-03-25 22:48:52 227 2

原创 让星星⭐月亮告诉你,(饿汉式3种【直接实例化\枚举\静态代码块】+懒汉式5种【从普通到DCL演进4种、静态内部类】)单例模式详解

一、概述:单例模式:某个类在整个系统种只能有一个实例对象可被获取和使用的代码模式,提供一个全局唯一的类的实例对象给外部调用,例如:代表jvm运行环境的Runtime类。要点如下:1、保证类只有唯一一个实例对象:则要求存储该实例对象的是一个静态变量;2、保证只能在该类的内部创建实例对象,其他地方不允许创建:则要求该类的构造器私有化;3、保证外部能访问获取到这个唯一的实例对象:1)直接暴露public2)提供静态变量的get方法。4、根据创建对象时机的不同,分饿汉式和懒汉式:1)饿汉式:还没等

2021-03-25 22:37:34 156

原创 让星星⭐月亮告诉你,(示例实战)当我们在说递归和迭代时,到底在说什么? 算法编程题:有n步台阶,一次只能上1步或2步,共有多少种走法?

编程题:有n步台阶,一次只能上1步或2步,共有多少种走法?1.递归 recursion 自己调自己,注意方法出口,频繁入栈出栈比较耗时,可能会导致栈溢出2.迭代 iteration 比较高效推导过程:n=1 [1] f(1)=1n=2 [1,1] [2] f(2)=2n=3 [1,1,1] [1,2] [2,1] f(3)=3n=4 [1,1,1,1] [1,1,2] [1,2,1] [2,1,1] [2,2] f(4)=5n=5 [1,1,1,1,1] [1,1,1,2] [1,1,2,1

2021-03-25 22:28:29 79

原创 让星星⭐月亮告诉你,(示例实战)enum枚举类九大特性详解

枚举类:1、Java枚举是一个特殊的类,一般表示一组常量,比如一年的四个季节,一年的12个月份,一星期的7天,方向有东西南北等;2、Java枚举类用enum关键字来定义,各个常量使用逗号,来分割;3、每个枚举都是通过Class在内部实现的,且所有的枚举值都是public static final的。比如:enum Color{RED,GREEN,BLUE}以上枚举转化为在类内部实现:class Color{public static final Color RED = new Color(

2021-03-25 22:25:14 102

原创 让星星⭐月亮告诉你,(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性

1、方法参数的传递机制①形参是基本数据类型:传递数据值②形参是引用数据类型:✦传递地址值;✦特殊类型:String、包装类对象的不可变性。2、String、包装类的对象的不可变性示例代码如下,执行结果应该是:jvm.Person@15db974200hjysetNameclass Person{ String name; Person(){ System.out.println(this); } public void setName(){ this.name = "

2021-03-25 22:22:53 98

原创 让星星⭐月亮告诉你,(示例实战)成员变量和局部变量的区别

1、就近原则:变量的作用域在离它最近的{}范围内2、变量的分类:✦成员变量:类变量(作用域在整个类)、实例变量(作用域仅限该实例对象),✦局部变量:作用域仅限方法内3、非静态代码块的执行:每次创建实例对象都会执行4、方法的调用规则:调用一次执行一次示例代码如下:执行结果应该是:i=2,j=1,s=5i=1,j=1,s=5public class MemberAndLocalVariables { static int s; int i,j; { int i = 1; i++;

2021-03-25 22:18:09 71

原创 让星星⭐月亮告诉你,(局部变量表、操作数栈)当我们在执行i=i++及i++时,底层到底在执行什么?

遇到一个比较有意思的题目,看上去很简单,实际运行起来却不是那么回事了。会发现i=i++和i++两者运行结果居然不一样!主要是没理解清楚java方法执行时,局部变量和操作数栈的分配运行机制,这就分享给大家分析过程:public class AutoIncrement { public static void main(String[] args) { int i = 0; i++;//相当于i=i+1; /* 步骤说明: 1、将局部变量i的值0 load到操作数栈 局部变量 i

2021-03-25 22:10:52 140

原创 让星星⭐月亮告诉你,美团技术文章合集获取方式(2017-2020)及百度云盘汇总下载链接分享

每逢年末,美团技术团队都会推出年度技术文章合集,涵盖前端、后台、算法、数据、运维、安全等多个领域,可谓是年货满满!故在此将获取方式分享给大家,希望对大家的工作和学习有所帮助。先截个图让大家感受下年货的味道:1.关注美团技术团队微信号:meituantech2.然后在公众号内回复2017年货、2018年货、2019年货、2020年货即可获取对应年度技术文档的下载连接。3.【2017-2020】合集百度云下载链接如果大家不想一个一个的去下载,这里整理了【2017-2020】合集,下载链接如

2021-02-06 21:16:57 559 2

原创 让星星⭐月亮告诉你,本地验证webservice接口demo项目(包含客户端服务端,支持请求参数为字符串返回结果为xml、请求参数为xml、请求被服务端屏蔽的接口三种场景)

1.背景:有些第三方客户可能对外提供的是webservice接口,而非Restful风格http接口。在无法连到第三方客户的环境里进行实地验证的情况下,为了尽可能地减少上线部署时的风险,最好能先在本地对接口进行充分的验证。故编写了这个可以在本地验证webservice接口的demo项目,以便在对接webservice接口时进行本地验证调试。此demo里包含***请求参数为字符串返回结果为xml***、请求参数为xml、***请求被服务端屏蔽的接口***三个案例演示。此demo包含服务端、客户端及公共工

2021-02-05 22:03:17 243 4

原创 让星星⭐月亮告诉你,openjdk8源码下载链接分享 百度网盘永久分享 可以配置到eclipse中查看源码 如sun.misc.Unsafe源码

openjdk8源码下载链接分享 百度网盘永久分享 可以配置到eclipse中查看源码 如Unsafe源码1.下载地址:百度网盘地址:https://pan.baidu.com/s/1si1lC43WqxCMKaZL66Tr9g提取码:ctp12.eclipse配置:下载后,eclipse查看openjdk源码的配置步骤如下001.选中项目后点击右键>点击Build Path>点击Configure Build Path:002.下载后,eclipse查看openjdk源码的配置

2021-01-29 00:26:10 1104

原创 让星星⭐月亮告诉你,设计模式入门

2020-11-16 17:21:51 70

原创 让星星⭐月亮告诉你,JSP知识点梳理

JSP知识点梳理JSP全程Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。JSP部署在网络服务器上,可以响应客户端发过来的请求,并根据请求内容动态生成HTML/XML/其他格式文档的Web网页,然后返回给请求者。JSP与PHP、ASP、ASP.NET等语言类似,运行在服务端的语言,是以Java语言作为脚本语言。1.<%@ page language=“java” import=“java.util.*” contentType=“te

2020-11-03 21:24:45 158

原创 让星星⭐月亮告诉你,Postman入门使用教程(概述、下载、使用)

Postman使用入门教程What is Postman?How to use Postman?download Postmaninstall Postmanuse Postman for exampleOther about Postman(欢迎小伙伴补充~)What is Postman?Postman【邮递员的英文单词,负责将信件送到目的地】是一个完成类似消息投递的工具:将拼装的请求报文发送到指定的路径(即URL,也即对应的后台服务器),对调试接口十分有帮助。大体分三步:①选择请求类型及填充URL

2020-10-15 23:10:34 1244

(003)HashMap中红黑树TreeNode的split方法源码解读.docx

HashMap中红黑树TreeNode的split方法源码解读,对split方法源码的上下文/变量定义,及所调用的关键方法都给出了详细解释说明,欢迎指正

2020-06-20

(002)HashMap$TreeNode之往红黑树添加元素-putTreeVal方法.docx

HashMap之往红黑树添加元素-putTreeVal方法源码解读:当要put的元素所在数组索引位置已存在元素,且是红黑树类型时,就会调用putTreeVal方法添加元素到红黑树上,具体操作步骤如下: 1. 从根节点开始,到左右子树,层层递进,遍历红黑树,找到用于存放元素的合适位置;2.将元素放入指定位置,并修改链表/红黑树相关节点的前prev后next父parent子(left/right)指向;3.平衡红黑树;4.保证红黑树根节点是链表头节点

2020-06-18

从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低.docx

从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低。以前只直到数据结构会影响两者的查询效率,偶然间得知cpu缓存(硬件级别)也会有影响

2020-06-17

HashMap之put方法源码解读.docx

对HashMap的put方法的源码进行详细解读,分析put方法源码中的内在逻辑关系,欣赏源码独特之美,从中学习更为精致的编程思维

2020-06-17

HashMap在put数据时是如何找到要存放的位置的?.docx

分析HashMap在put数据时是如何找到要存放的位置的,对决定位置的hashCode计算方法进行详细解释,分析为啥要用高低16位异或运算,以及数组长度是如何影响元素存放位置的

2020-06-17

HashMap之resize()方法源码解读.docx

HashMap之resize()方法源码解读,分两部分概述扩容方法涉及到的处理:创建新数组,将旧数组元素转移到新数组上

2020-06-17

(006)HashMap$TreeNode确保根节点为头节点的moveRootToFront方法源码解读.docx

HashMap$TreeNode确保根节点为头节点的moveRootToFront方法源码解读,分析其各个步骤,并配有示意图

2020-06-17

HashMap扩容时的rehash方法中(e.hash & oldCap) == 0算法推导.docx

对HashMap扩容时重新计算旧数组元素在新数组地址的rehash方法中的(e.hash&oldCap)==0算法推导

2020-06-17

(001)HashMap之链表转红黑树-treefyBin方法.docx

详细解读了HashMap中链表转红黑树的treefyBin方法,该方法中涉及到的诸如:replacementTreeNode方法、treeify方法、comparableClassFor方法、compareComparables方法、tieBreakOrder方法、balanceInsertion方法、moveRootToFront 方法、rotateLeft方法、rotateRight方法、checkInvariants 方法均有详细解读

2020-06-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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