自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 ArrayList源码--序列化反序列化

先看声明transient Object[] elementData;elementData被声明为transient ,也就是说如果采用默认的序列化方式,elementData不会被序列化。这样设计的原因是,对于初始化为空ArrayList,在添加第一个元素时其长度会被设置成10,对于ArrayList中添加元素小于10个的场景,默认的序列化方式会序列化10个对象(包括null),通过writ...

2020-01-30 16:09:30 212

原创 HashMap源码笔记

https://segmentfault.com/a/1190000012926722HashMap的结构:数组+(链表/红黑树)数组特点:查询效率高,插入、删除效率低链表特点:查询效率低,插入、删除效率高这种结构解决了数组链表的问题,使得查询,插入,删除效率都很高1.初始化public HashMap(int initialCapacity, float loadFactor)...

2020-01-30 16:08:35 139

原创

https://blog.csdn.net/qq_35008624/article/details/81947773仅仅从查找效率来考虑,下面的结论是明显的:树越矮,查找次数越少,但在每一层所做的工作越多;树越高,查找次数越多,但在每一层所做的工作越少。二叉查找树每个结点的值不重复,且左子树<根<右子树遍历:中序遍历能保证按序输出。查找:类似二分查找插入:O(lo...

2020-01-30 16:07:16 439

原创 MYSQL锁机制

目录MyISAM表锁如何加表锁查询表级锁争用情况并发插入(Concurrent Inserts)MyISAM的锁调度InnoDB锁获取InonoD行锁争用情况InnoDB的行锁模式及加锁方法InnoDB行锁实现方式间隙锁(Next-Key锁)小结在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。...

2020-01-30 16:07:04 196

原创 Mysql索引

目录InnoDB数据页结构页介绍InnoDB数据页组成部分File HeaderPage HeaderInfimum + SupremumUser Records 和 Free SpacePage Directory索引的实现原理索引结构 聚簇索引与非聚簇索引索引的管理索引的优化B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查...

2020-01-30 16:06:48 361

原创 ReentrantLock.FairSync的unlock方法源码笔记

ReentrantLock通过unlock方法调用公平锁的unlock方法 public final boolean release(int arg) { //尝试释放锁,如果释放成功,则status置为了0,exclusiveOwnerThread置为了null if (tryRelease(arg)) { Node h = hea...

2020-01-30 16:05:36 129

原创 ReentrantLock.FairSync的lock方法源码笔记

ReentrantLock通过lock方法调用公平锁的lock方法final void lock() { //调用AQS的acquire方法 acquire(1);}public final void acquire(int arg) { //尝试获取锁 if (!tryAcquire(arg) && //如果获取锁失败...

2020-01-30 16:05:20 91

原创 HashMap--comparableClassFor方法及Type体系

https://www.jianshu.com/p/7649f86614d3https://www.jianshu.com/p/e8eeff12c306HashMap在存储树化过程中,通过比较key的hash值来决定作为左子树还是右子树。hash值大于当前节点的hash值时作为当前节点的右节点;小于时作为左节点;相等时看key是否实现了Comparable接口,决定能够基于compareTo...

2020-01-30 16:05:02 417

原创 序列化反序列化

https://www.cnblogs.com/Kidezyq/p/8025176.htmlhttps://www.iteye.com/blog/moon-walker-2376857https://www.iteye.com/blog/moon-walker-2376922https://www.iteye.com/blog/moon-walker-2377021https://...

2020-01-30 16:04:32 153

原创 ConcurrentHashMap源码

构造方法:提供了五种构造方法// 创建一个带有默认初始容量 (16)、加载因子 (0.75) 和 concurrencyLevel (16) 的新的空映射。public ConcurrentHashMap()// 创建一个带有指定初始容量、默认加载因子 (0.75) 和 concurrencyLevel (16) 的新的空映射。public ConcurrentHashMap(in...

2020-01-30 16:04:25 118

转载 synchronized:wait/notify

https://www.jianshu.com/p/f4454164c017https://blog.csdn.net/boling_cavalry/article/details/77793224synchronized代码块通过javap生成的字节码中包含 ** monitorenter ** 和 ** monitorexit **指令。执行monitorenter指令可以获取对象...

2020-01-30 16:03:47 230

原创 ThreadPoolExecutor

https://blog.csdn.net/djzhao/article/details/82192918ThreadPoolExecutor是线程池类。对于线程池,可以通俗的将它理解为"存放一定数量线程的一个线程集合。线程池允许若个线程同时运行,允许同时运行的线程数量就是线程池的容量;当添加的到线程池中的线程超过它的容量时,会有一部分线程阻塞等待。线程池会通过相应的调度策略和拒绝策略,对添加...

2020-01-30 16:03:25 174

原创 JAVA中断机制

https://blog.csdn.net/weixin_42092278/article/details/81989449https://blog.csdn.net/axman/article/details/562249中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再...

2020-01-30 16:03:02 580

原创 synchronized--对象头

在Hotspot源码的 sharedRuntime.cpp 中有synchronized的主要逻辑加锁改变的是对象头的状态。对象在内存中由对象头、实例数据、填充字节组成。其中对象头是必不可少的,如果对象没有字段,则实例数据是空,填充字节是为了满足一个对象在内存中占用的空间是8字节的倍数,如果不满足,就进行填充,满足的话,填充字节也是空。对象头https://blog.csdn.net/...

2020-01-30 16:02:20 1164

原创 Spring--IOC

https://blog.csdn.net/dkbnull/article/details/87219562控制反转,简单点说,就是创建对象的控制权,被反转到了Spring框架上。通常,我们实例化一个对象时,都是使用类的构造方法来new一个对象,这个过程是由我们自己来控制的,而控制反转就把new对象的工交给了Spring容器。IoC的主要实现方式有两种:依赖查找、依赖注入。依赖注入...

2020-01-26 14:55:34 266

原创 SpringMVC概述

https://www.cnblogs.com/tengyunhao/p/7518481.htmlweb.xml首先简单讲一下,web.xml的加载过程。当启动一个WEB项目时,容器包括(JBoss、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。1. 启动WEB项目的时候,容器首先会去它的配置文件web.xml读...

2020-01-26 14:54:41 177

原创 Spring专题--AOP--ProxyFactory

https://www.iteye.com/blog/elim-2397388ProxyFactory 源码分析https://www.iteye.com/blog/wangxinchun-2079024https://blog.csdn.net/m0_38043362/article/details/80388698https://www.iteye.com/blog/wangxi...

2020-01-26 14:54:19 779

原创 Spring专题--AOP

https://www.cnblogs.com/zhangxufeng/p/9160869.htmlAOP的主要角色Aspect:切面,pointcut+advice; Join point:连接点,增强的目标方法,目标对象上切入的具体位置 Pointcut:切点,用于定义切入哪些位置,定义了连接点集合 Advice:通知,也即切面逻辑,指定了当前用于切面的业务模块。locatio...

2020-01-26 14:54:01 271

原创 Redis IO模型

Redis 的IO模型Blocking I/O先来看一下传统的阻塞 I/O 模型到底是如何工作的:当使用 read 或者 write 对某一个文件描述符(File Descriptor 以下简称 FD)进行读写时,如果当前 FD 不可读或不可写,整个 Redis 服务就不会对其它的操作作出响应,导致整个服务不可用。I/O 多路复用虽然还有很多其它的 I/O 模型,但是在...

2020-01-26 14:51:44 1284

原创 redis笔记

redis的持久化机制说白了,就是在指定的时间间隔内,将内存当中的数据集快照写入磁盘,它恢复时是将快照文件直接读到内存什么意思呢?我们都知道,内存当中的数据,如果我们一断电,那么数据必然会丢失,但是玩过redis的同学应该都知道,我们一关机之后再启动的时候数据是还在的,所以它必然是在redis启动的时候重新去加载了持久化的文件redis提供两种方式进行持久化,RDB默认持久化...

2020-01-26 14:48:47 255

原创 Redis专题--数据库

《redis设计与实现》--第九章redisServerredis服务器将所有数据库都保存在redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb代表一个数据库。Redis使用一个类型为“redisServer”的数据结构来保存整个Redis服务器的状态.https://www.cnblogs.com/wu...

2020-01-26 14:46:53 223

原创 Redis专题--字典

《redis设计与实现》--第四章字典,是一种用于保存键值对的抽象数据结构。字典中的每个键都是独一无二的,redis的数据库就是使用字典来作为底层实现的,字典还是哈希键的底层实现之一。redis的字典由dict.h/dict结构表示:参数说明:type:是一个指向dictType结构的指针,每个dictType结构保存了一簇用于操作特定类型键值对的函数,Redis会为用途不同的字...

2020-01-26 14:46:02 112

原创 Redis专题--RDB持久化

《redis设计与实现》--第十章RDB持久化功能可以将某个时间点内存中的Redis数据库状态保存到一个RDB文件中,这个文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行。一、RDB文件的创建与载入1. RDB文件的创建  有两个redis命令可以用于生成RDB文件,一个是SAVE ,另一个是...

2020-01-26 14:45:43 133

原创 Redis专题--简单动态字符串(SDS)

Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将SDS用作Redis的默认字符串表示。在Redis中,C字符串只会作为字符串字面量,用在一些无需对字符串值进行修改的地方,例如打印日志。当Redis需要一个可以被修改的字符串值时,就会使用SDS来表示字符串值。除了用来...

2020-01-26 14:44:32 274

空空如也

空空如也

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

TA关注的人

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