一.前景提要 Object类中定义有public String toString()方法,其返回值是 String 类型. 二.默认返回组成 类名+@+16进制的hashcode,当使用打印方法打印的toString()默认就是返回整个格式 三.场景 很多时候默认的返回,无法让人直观的看到对象的数据和结构类型,所以,一般重写其toString()方法,打印或输出需要的信息 四.实例重写 重写代码 @Override public String toString() { return "User{…
一.前言 1. 该关系图是本人根据JDK1.8 源码整理所得,只整理了常用的.常见的集合,并非全部. 2. 整理逻辑: Collection接口下有两个子接口:List 和 Set 接口. Map是独立的一个接口. 有关各类集合的特点,图中只是给出了总结,并未从底层数据结构去分析,后面有时间我会再写一篇常用集合底层数据结构分析的博文. 3.对关系图的解释说明: ①从左往右各个接口/实现类之间的关系:左边的节点被右边的节点所实现/继承: ②虚线:虚线起点的类实现了虚线箭头指向的接口. ③集合的三大…
本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSession使之与CLR的Session关联 IAbpSession:定义如下图中的四个属性. NullAbpSession:IAbpSession的一个缺省实现,给每个属性都给予null值,无实际作用 ClaimsAbpSession:实现了从ClaimsPrincipal/ClaimsIdentity…
Aomic数据类型有四种类型:AomicBoolean, AomicInteger, AomicLong, 和AomicReferrence(针对Object的)以及它们的数组类型, 还有一个特殊的AomicStampedReferrence,它不是AomicReferrence的子类,而是利用AomicReferrence实现的一个储存引用和Integer组的扩展类   首先,所有原子操作都是依赖于sun.misc.Unsafe这个类,这个类底层是由C++实现的,利用指针来实现数据操作   关…
Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章,从ArrayList开始第一篇. ---@pdai JDK版本 JDK 1.8.0_110 概述总结 ArrayList底层是通过数组实现的:其中capacity表示底层数组的长度,而ArrayList长度由size表示: ArrayList允许存放null元素,也可以查找null所在的index, 比如indexOf(), lastIndexOf()方法: A…
Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章,本文是第三篇ArrayDeque. ---@pdai JDK版本 JDK 1.8.0_110 概述总结 ArrayDeque是可变长Array, 实现了Deque接口:Deque是"double ended queue", 表示双向的队列,英文读作"deck": Deque 继承自 Queue接口,除了支持Queue的方法之外,还支…
一.前言 这次我们来看一下常见的List中的第二个--LinkedList,在前面分析ArrayList的时候,我们提到,LinkedList是链表的结构,其实它跟我们在分析map的时候讲到的LinkedHashMap的结构有一定的相似,但是相对简单很多,今天再详细的看一下它的具体结构,以及使用的场景等. 二.LinkedList结构概览 在看具体的结构之前我们先来看一下它的继承关系: 与ArrayList不同的是,LinkedList继承了AbstractSequentialList,从Seq…
Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章; 本文是第二篇LinkedList. ---@pdai JDK版本 JDK 1.8.0_110 概述总结 LinkedList底层是通过双向链表实现的,具体是first和last两个node元素: 链表的特性决定了LinkedList按照index查找元素的效率没有ArrayList高,但是add和remove操作效率会高很多: 根据index查找node, 因…
title: 源码阅读系列:EventBus date: 2016-12-22 16:16:47 tags: 源码阅读 --- EventBus 是人们在日常开发中经常会用到的开源库,即使是不直接用的人,也多少借鉴过事件总线的用法.而且EventBus的代码其实是非常简单的,可以试着阅读一下. 源码阅读系列不采用对功能进行归类的方法进行阅读,而是采用一个刚开始阅读源码的视角,从我们平时的API调用,一步步的去理解设计意图和实现原理. 从这里开始 从这里开始吧,我们最常用的地方就是给一个函数添加上…
系列目录 [详解]ThreadPoolExecutor源码阅读(一) [详解]ThreadPoolExecutor源码阅读(二) [详解]ThreadPoolExecutor源码阅读(三) AQS在Worker中的应用——标识空闲or非空闲工作线程 我对这个上锁一直搞不懂,虽然有注释说是允许中断啥的,但是还是一头雾水,就打算直接看代码分析.第一眼看到这个lock的时候,我就吓到了. 产生了第一个问题:"啥,一上锁,多个线程不是就要同步排队了嘛? 而且也没这必要啊! " 看清楚了才知道,…