源码分析—先看主干,再看分支 看源码,先看主干,把握主干,然后再看你自己关心的分支。 切记不要沿着源码一直一直点下来,这样很自己容易看蒙。 小技巧: 在源码中设置断点,然后按 F5 (进入方法中) 和 F6(向下执行)执行程序 在开源框架中,名字一般都是见名知意的,通过名字,可以大概知道方法的作用,从而选择是否跟进读 Servlet 源码分析 小技巧:使用 Maven 技术可以轻松查看...

HashMap内部实现原理

源码分析

  

2019-11-12 00:17:18

HashMap内部实现原理 在存储数据的时候,我们一般用数组或者链表来实现,不说数组和链表的效率问题,数组和链表都有其局限性,数组取值的时候是根据Index来找到对应数据,这个时候我们猜测一下,HashMap内部存储是数组加链表的方式来实现的。 查找HashMap的源码(先分析JDK 1.7) 先从get(key)方法中查找 如果传过来的key是空,则单独处理,如果不是空则取到对应的Entry,然...

虽然现在大家使用ListView的机会相对RecyclerView的机会较少,但官方并没有标注 ListView 类过期,哈哈,就说明它一定还是有他的特殊之处,这篇文章就来分析下,ListView的内部机制以及几个重要的点。 将从下面几个方面开始着手分析ListView,将会分两篇文章进行解析 类的继承关系 ListView 的构造方法 RecycleBin主要方法讲解 ListView 的绘制原...

目录 序列化、反序列化对单例的破坏 原因分析 解决方案及解析 序列化、反序列化对单例的破坏 单例模式是工作中高频使用的设计模式之一。单例模式可以确保内存中单例类只有一个实例,有效的减少了内存的开销,避免了类的重复创建和销毁。 序列化意义是将实现序列化的Java对象转换成字节序列 ,这些字节序列可以被保存在磁盘上,或者通过网络传输。以备以后重新恢复成原来的对象。 对于单例类使用序列化、反序列化操作时...

1 LinkedList 数据结构原理 LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。 LinkedList 是基于 链表 实现的(通过名字也能区分开来),所以它的 插入 和 删除 操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以 随机访问 的效率要比 ArrayList 差。 LinkedList 底层的数据结构...

关于ARouter如何使用我们这里不做解释,主要针对两个问题1、初始化做了什么事;2、如何启动Activity或者Fragment的 1、初始化做了什么事 ARouter.init(this) 在使用ARouter时这句话是必须调用的。 LogisticsCenter.init(mContext, executor) 具体做了些什么? 注释1 代码调用了ClassUtils.getFileName...

一.插件开发原理 插件是用来改变或者扩展mybatis的原有功能,mybatis的插件就是通过继承Interceptor拦截器实现的,在没有完全理解插件之前禁止使用插件对mybatis进行扩展,否则可能会导致严重问题。 mybatis中能使用插件进行拦截的接口和方法如下: Executor(update query flushStatement commit rollback getTransac...

@ConfigurationProperties 当ioc完成对象初始化后,扫描含有该注解的类,然后找到对应属性值,并通过set方法注入到对象内部。可以匹配注入。 以 server.port=8080 为例 @Value 仅仅能注入一些基本类型的数据,对于list,array,set,map就无能为力了。 @Validated 一般用于约束实体类上属性的注入。 @PropertySource 由于...

Okio源码注释

源码分析

  

2020-03-26 04:37:20

参考文档 最简实例说明wait、notify、notifyAll的使用方法 拆轮子系列:拆 Okio 大概是最完全的Okio源码解析文章 Okio源码分析(超详细) 类图 说明 okio通过修饰模式对io/nio流进行的层次封装,以方便对io/nio进行操作,可以直接读写String,int等基本变量。从测试用例开始,我们对socket的写的整个流程做个分析: 以上是写socket的大致过程,下面...

之前为了开发需求,学习了NestedScrolling机制,并使用CoordinatorLayout、AppBarLayout、RecyclerView配合实现了相关的效果,还写了一篇关于分析原理的文章关于CoordinatorLayout AppBarLayout原理的一些分析,当时做完需求以后,内心其实是一只有种遗憾的,因为在使用RecyclerView时,对于向上滑动的fling效果其实是有...

这几天学了一些CoordinatorLayout、AppBarLayout配合使用的一些方法,之前还写了一篇CoordinatorLayout Behavior一些笔记,通过这几天对源码的阅读,现在对CoordinatorLayout、AppBarLayout这部分的内容有了更深一层的理解,接下来我就把我所理解的源码简单的分析一下。 一、 NestedScrolling机制 Coordinator...

集合框架介绍 说明:对于以上的框架图有如下几点说明 所有集合类都位于 java.util 包下。Java 的集合类主要由两个接口派生而出:Collection 和 Map,Collection 和 Map 是 Java 集合框架的根接口,这两个接口又包含了一些子接口或实现类。 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分...

  本文采用的是jdk1.8,分析ArrayList常用的方法源码   一,ArrayList的关系图 在我们日常开发阶段,ArrayList是我们用的非常非常多的一个集合,带来了很大的便利,下面开始分析ArrayList的源码   二,源码分析 2.1属性分析 从ArrayList的属性,我们可以很清楚的看出:ArrayList的底层就是一个数组的形式,ArrayL...

【 HashMap 】

🌟🌟🌟源码分析

  

2020-04-14 00:46:42

1 底层结构 JDK 1.7 HashMap 的底层结构是由 数组+链表 构成的 JDK 1.8 HashMap 的底层结构是由 数组+红黑树 构成的 数组(紫色):hash 数组(桶),数组元素是每个链表的头节点 链表(绿色):解决 hash 冲突,不同的 key 映射到了数组的同一索引处,则形成链表。 2 put 和 get 方法 put() 方法大概过程如下: 如果添加的 key值为 nul...