自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WriteOnRead

微信公众号:WriteOnRead 。欢迎关注

  • 博客(140)
  • 资源 (14)
  • 问答 (2)
  • 收藏
  • 关注

原创 我是如何阅读JDK源码的?

1. 前言 之前断断续续读过一部分 JDK 常用类的源码,这里想把过程中的一些心得和方法记录下来,如果能帮到需要的小伙伴就再好不过了!本文主要分享一下我的阅读工具和阅读顺序。PS: 由于...

2020-10-07 10:00:00 1047 1

原创 Redis 分布式锁遇到的序列化问题

场景描述最近使用 Redis 遇到了一个类似分布式锁的场景,跟 Redis 实现分布式锁类比一下,就是释放锁失败,也就是缓存删不掉。又踩了一个 Redis 的坑……这是什么个情况、又是怎样...

2021-03-24 08:40:00 268

原创 Spring 如何创建 bean 对象?

前情回顾 前文「Spring 如何从 IoC 容器中获取对象?」从整体上分析了如何从 Spring IoC 容器获取一个 bean 对象。该逻辑由 AbstractBeanFactory#...

2021-03-08 08:40:00 372

原创 Spring 如何从 IoC 容器中获取对象?

前情回顾 前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息。其中,「Spring 中的 IoC 容器」对 Spring 中的容器做了一...

2021-03-01 08:40:00 3581 10

原创 春节假期如流水

时间总是过得很快,假期更是如此。这不,一眨眼功夫就全都没了。以往都是朴实无华且枯燥的技术文,这次先水文一篇吧。主要是想证明我不是一个木得感情的机器人,我也是一个普普通通、真实の人。看了看万...

2021-02-23 08:40:00 1238 14

原创 Spring 是如何解析 <bean> 标签的?

前情回顾 上回「Spring IoC 容器初始化(2)」说到了 Spring 如何解析我们定义的 <bean> 标签,代码跟进了一层又一层,跋山涉水,最终来到了 BeanDef...

2021-02-18 08:40:00 180

原创 Redis遇到的那些坑

前言 Redis 作为当前最流行的 NoSQL 之一,想必很多人都用过。Redis 有五种常见的数据类型:string、list、hash、set、zset。讲真,我以前只用过 Redi...

2021-02-05 09:00:00 289

原创 Spring IoC 容器初始化(2)

前情回顾 前文「Spring IoC 容器初始化」 以 IoC 容器中的 ClassPathXmlApplicationContext 为例进行了深入分析。Spring 从我们的配置文件...

2021-02-01 08:30:00 94

原创 Spring IoC 容器初始化

概述 上篇文章「Spring 中的 IoC 容器」从整体介绍了 Spring IoC 容器的相关概念和大致实现流程,本文要进入源码来一探究竟了。这里仍以前文的代码为例进行分析,测试代码如...

2021-01-25 08:30:00 114

原创 Spring 中的 IoC 容器

概述 对于 Java 后端开发而言,Spring 框架的重要性不言而喻。而 Spring 中最核心的无非就是 IoC 和 AOP。相关的概念不再赘述,网上可以找到很多对它们的介绍。这里想...

2021-01-18 08:30:00 185 4

原创 最近的一些Java面试小结

前言前段时间陆续面试了一些大中小公司,踩了不少坑,挂了很多,同时也有不少感悟和收获。这里想把那段经历记录一下,如果能对亲们有所帮助就再好不过了。面试的过程其实也是一个自我认识和学习的过程...

2021-01-11 08:30:00 444

原创 一个产品需求的研发流程是怎样的?

1. 前言以前在不足百人的小公司待过,产品需求的研发并没有什么正规的流程,通常是产品提了需求之后,技术部门简单评审一下就开始写代码,本地和测试环境没问题就直接发布线上了。后来去了某二线互...

2020-12-28 08:30:00 2899

原创 ThreadLocal到底有没有内存泄漏?从源码角度来剖析一波

1. 前言 ThreadLocal 也是一个使用频率较高的类,在框架中也经常见到,比如 Spring。有关 ThreadLocal 源码分析的文章不少,其中有个问题常被提及:Thread...

2020-07-06 08:30:00 599 2

原创 JVM笔记-性能监控与分析工具

JVM常用性能监控与分析工具,jps、jmap、jinfo等,以及阿里的开源工具Arthas

2020-05-06 08:30:00 475

转载 JVM相关问题汇总

JVM遇到的一些问题汇总,持续更新中……

2020-05-03 19:24:11 533

原创 JVM笔记-后端编译与优化

1. 概述 前面分析了 JVM 的前端编译器 Javac,本文分析后端编译器:即时编译器(JIT 编译器)和提前编译器(AOT 编译器)。其实二者都不是 JVM 必需的组成部分。但是,后...

2020-04-16 08:30:00 445

原创 JVM笔记-前端编译与优化

1. 概述 所谓”编译“,通俗来讲就是把我们写的代码“翻译“成机器可以读懂的机器码。而编译器就是做这个翻译工作的。Java 技术中的编译器可以分为如下三类:前端编译器:把 *.java...

2020-04-08 08:30:00 386

原创 JVM笔记-类加载机制

JVM 不和包括 Java 在内的任何语言绑定,它只与 "Class文件" 这种特定的二进制文件格式所关联。而 Class 文件也并非只...

2020-03-20 08:30:00 284 1

原创 JVM笔记-内存分配策略

1. 概述 1.1 简述Java 技术体系的自动内存管理,最根本的目标就是解决两个问题:「自动化」地给对象分配、回收内存空间。内存回收策略主要就是前面介绍的各种垃圾回收机制;而对象内存分...

2020-03-09 08:30:00 146

原创 JVM笔记-HotSpot的算法细节实现

1. 根节点枚举 1.1 暂停用户线程迄今为止,所有收集器在根节点枚举这一步骤都是必须暂停用户线程的。即便是号称停顿时间可控、或者(几乎)不会发生停顿的 CMS、G1、ZGC 等收集器,...

2020-02-24 08:30:00 401

原创 JVM笔记-垃圾收集算法与垃圾收集器

1. 一些概念 1.1 垃圾&垃圾收集垃圾:在 JVM 语境下,“垃圾”指的是死亡的对象所占据的堆空间。垃圾收集:所谓“垃圾收集”,就是将已分配出去、但不再使用的内存回收回来,以...

2020-01-22 08:00:00 825 4

原创 JVM笔记-运行时内存区域划分

1. 概述 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分为若干个不同的数据区域。它们各有用途,有些随着虚拟机进程的启动一直存在(堆、方法区),有些则随着用户线程的启...

2020-01-14 08:00:00 278

原创 JVM笔记-Java技术体系与JVM概述

1. 简述 Java 不仅仅是一门编程语言,还是一个由一系列计算机软件和规范组成的技术体系。Java 的广告词为 "一次编写,到处运行",之所以能够做到"跨平台&...

2020-01-08 08:00:00 256

原创 JDK源码分析初步整理

1. 啰嗦一下不知不觉一年又到了尾声,从年初开始写 「JDK 源码分析」这个系列,而今已经过了大半年,文章也写了几十篇,虽说不多但也不算太少(好像还是有点少????),为便于查看,这里简...

2019-12-19 08:00:00 182

原创 Java反射机制与动态代理

1. 概述Java 反射机制与动态代理我们平时写代码可能用得比较少,但在各种常见的框架(Spring、MyBatis 等)中却屡见不鲜。有句话叫“无反射,不框架;无代理,不框架”。由于以...

2019-12-16 08:00:00 403

原创 JDK源码分析-CopyOnWriteArrayList

1. 概述CopyOnWriteArrayList,从名字可以看出它跟 ArrayList 有点关系,可以理解为线程安全的 ArrayList。它的类签名和继承结构如下:public c...

2019-12-05 08:00:00 168

原创 JDK源码分析-ReentrantReadWriteLock

概述前面分析过 ReentrantLock「JDK源码分析-ReentrantLock」,它是一种互斥的可重入锁,可用于处理并发场景下的线程安全问题。而很多时候会出现“读多写少”的情况,若用 ReentrantLock 会降低并发量,此时就比较适合 ReentrantReadWriteLock 出场了。ReentrantReadWriteLock 是读写锁,它维护了一对锁:一...

2019-11-19 08:00:00 1884 8

原创 JDK源码分析-ScheduledThreadPoolExecutor

概述ScheduledThreadPoolExecutor 也是一个线程池类,是线程池类ThreadPoolExecutor 的子类。除了ThreadPoolExec...

2019-10-28 08:00:00 177

原创 JDK源码分析-DelayQueue

概述DelayQueue 也是一种队列,它内部的元素有“延迟”,也就是当从队列中获取元素时,如果它的延迟时间未到,则无法取出。DelayQueue 的类签名和继承结构如下...

2019-10-16 08:00:00 190

原创 JDK源码分析-ScheduledExecutorService

概述接口的继承结构如下:下面分析这几个接口的定义。Executor从名字来看,Executor 可译为“执行器”,它的作用就是执行任务。该接口只有一个 execute 方...

2019-09-25 08:00:00 397

原创 MySQL笔记-索引

概述简单来说,索引的出现是为了提高查询效率,就像书的目录一样。MySQL 的索引是在「存储引擎」层实现的,因此没有统一的标准,同一种类型的索引,在不同存储引擎之间实现可能也不同。本文主要分析 InnoDB 存储引擎的索引结构。索引模型索引模型就是索引的实现形式(也可以理解为索引的数据结构),常见的索引模型有下面三种:1. 哈希表(散列表)键值对形式(类似...

2019-09-18 08:00:00 3100 1

原创 JDK源码分析-FutureTask

概述FutureTask 是一个可取消的、异步执行任务的类,它的继承结构如下:它实现了 RunnableFuture 接口,而该接口又继承了 Runnable 接口和 Future 接口,因此 FutureTask 也具有这两个接口所定义的特征。FutureTask 的主要功能:1. 异步执行任务,并且任务只执行一次;2. 监控任务是否完成、取消任务;3. 获取...

2019-09-12 08:00:00 332

原创 MySQL笔记-基本架构

说明本文以及接下来的几篇 MySQL 笔记是本人在「极客时间」的专栏『MySQL实战45讲』和掘金小册「MySQL 是怎样运行的:从根儿上理解 MySQL」的学习笔记整理...

2019-09-05 08:00:00 222

原创 JDK源码分析-ThreadPoolExecutor

概述ThreadPoolExecutor 是 JDK 中线程池的实现类,它的继承结构如下:本文主要分析ThreadPoolExecutor类的主要方法和实现原理(部分...

2019-08-28 08:00:00 178

原创 JDK源码分析-PriorityBlockingQueue

概述前文「JDK源码分析-PriorityQueue」分析了优先队列 PriorityQueue,它既不是阻塞队列,而且线程不安全。本文分析线程安全的阻塞优先队列 Pri...

2019-08-14 08:30:00 229

原创 JDK源码分析-PriorityQueue

概述PriorityQueue 意为优先队列,表示队列中的元素是有优先级的,也就是说元素之间是可比较的。因此,插入队列的元素要实现 Comparable 接口或者 Com...

2019-08-09 08:00:00 231

原创 JDK源码分析-LinkedBlockingQueue

概述前文「JDK源码分析-ArrayBlockingQueue」分析了 ArrayBlockingQueue 的代码实现,LinkedBlockingQueue 也是阻塞...

2019-08-02 08:00:00 423

原创 JDK源码分析-ArrayBlockingQueue

概述前文「JDK源码分析-BlockingQueue」简要分析了 BlockingQueue 接口的主要方法,ArrayBlockingQueue 就是该接口的一个主要实...

2019-07-24 08:00:00 377

原创 JDK源码分析-BlockingQueue

概述BlockingQueue 意为“阻塞队列”,它在 JDK 中是一个接口。所谓阻塞,简单来说就是当某些条件不满足时,让线程处于等待状态。例如经典的“生产者-消费者”模...

2019-07-17 08:00:00 194

原创 JDK源码分析-Semaphore

概述Semaphore 是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。打个通俗的比方,可以把 ...

2019-07-10 08:00:00 120

SourceTree

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。(此处包含Windows和Mac两个版本)

2016-01-08

NetSpeedMonitor

在任务栏显示网速的一款小软件(Windows系统),亲测!非常不错!拿来分享!

2015-09-26

iOS 第三方分享源码

iOS 第三方分享的源码,需要的可以了解下。

2015-09-05

iOS QQ第三方登录源码

iOS QQ第三方登录源码,需要的可以了解下。

2015-09-04

iOS 微信第三方登录 Demo

iOS 微信第三方登录小Demo,有兴趣可以学习下。

2015-08-30

Beginning iOS 7 Development: Exploring the iOS SDK 源码

经典书《Beginning iOS 7 Development: Exploring the iOS SDK》的官网源码。

2015-08-29

Navicat For MySQL

MySQL的图形化管理工具,类似MySQLWorkbench

2015-07-15

Android XML和JSON解析代码

Android XML和JSON解析的代码,学习笔记。

2015-06-30

GSON 2.2.4

gson 2.2.4.jar, google提供的GSON开源库,用于解析JSON

2015-06-30

Android 拼图游戏源码

Android 拼图游戏的源码,有兴趣的可以看一下。

2015-06-19

Android 计算器源码

计算器小应用的源码,有兴趣的可以看一下。欢迎共同学习进步!

2015-06-18

Visual Studio Code

VS Code是一个跨平台、支持30多种语言的开箱代码编辑器。不管你是.Net、Java、PHP、Python、TypeScript、Objective-C…还是前端开发者,都值得拥有。官网地址:https://www.visualstudio.com/

2015-06-15

Android图片处理源码

Android图片处理源码,

2015-06-07

我是一只IT小小鸟

我是一只IT小小鸟,不错的书。一群IT大学生实习工作的那些事

2015-04-08

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

TA关注的人

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