自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring源码

Spring源码 BeanDefinition BeanDefinition表示Bean定义,Spring根据BeanDefinition来创建Bean对象 属性 BeanClass Bean的类型,创建bean时反射得到实例 Scope Bean的作用域 singleton 单例模式-默认作用域 prototype 原型bean isLazy 懒加载,只针对singleton作用域 懒加载时,第一次getBean时生成Bean 或者Spring启动时直接.

2021-04-15 23:53:21 82

原创 MySQL 索引

MySQL 索引 1.索引本质 定义 索引是帮助MySQL 高效获取数据的排好序的数据结构 数据结构 二叉树 红黑树 Hash表 对索引的key进行一次hash计算就可以定位数据存储的位置 很多时候Hash索引要比B+ tree索引更高效 仅能满足 = 、in,不支持范围查询 hash冲突问题 B-Tree 叶节点具有相同的深度,叶节点的指针为空 所有索引元素不重复 节点中的数据索引从左到由递增排列 B+Tree (B-tree变种) 非叶子节点不

2021-04-12 23:26:57 114

原创 MySQL 之 MVCC

MySQL 之MVCC 定义 MVCC即多版本控制器,其特点就是在同一时间,不同事务可以读取到不同版本的数据,从而解决脏读、不可重复度的问题。 锁分类 锁粒度 行锁 表锁 页锁 使用方式 共享锁(读锁) 排它锁(写锁) 思想 悲观锁 乐观锁 快照读、当前读 当前读 读取的是最新的版本,并且对读取的记录加锁,阻塞其他事务同时改动相同记录 select … lock in share mode (共享读锁) select … for update delete 、update、in.

2021-04-12 15:50:43 86

原创 ByteBuffer

2021-04-09 16:47:49 47

原创 位操作

原码、反码、补码 原码 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。原码是人脑最容易理解和计算的表示方式。 [+1]原= 0000 0001 [-1]原= 1000 0001 取值范围:[1111 1111 , 0111 1111] [-127 , 127] 反码 正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反。可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。 [+1] = [0000 0001]原= [0000

2021-04-09 16:16:20 46

原创 网络编程中的I/O模型

Linux的五种IO模型 什么是阻塞和非阻塞 阻塞通常是指调用方在等待数据返回的过程。如果调用方一直在等待,那么就是阻塞的;反之则是非阻塞的; 什么是同步和异步 同步和异步一般从俩方面来说: 是指数据处理的过程是由调用方处理还是交由它方处理(例如内核),由调用方处理数据那就是同步的,由内核处理数据那就是异步的 同步过程中,调用方是不能处理其他数据(行为操作),异步操作则可以,但异步操作获取数据这个过程,需要数据处理结束后才能获取到;(复杂度在这种处理情况中) 钓鱼案例解析IO模型 钓鱼分为等待鱼上钩、鱼

2020-09-02 22:37:52 105

原创 spring 5-bean的生命周期和依赖注入

1.1 spring bean是如何创建的 spring中bean都是由spring框架来通过反射创建的;设想以下,如果需要自己实现一个bean管理的框架你会怎么设计? BeanFactory :bean的创建工厂 IOC容器:bean创建后实例存储位置 BeanDefinition:bean的定义信息,告诉框架你要创建的类是什么、bean名称是什么、成员变量、初始化方法等等 bean的定义信息需要从配置文件或则java config中进行加载,则需要对应的BeanDefinitionReader 从文件

2020-08-23 20:33:07 210

原创 JAVA AQS中的实现

8.AQS (AbstractQueuedSynchronizer) AQS的作用:AQS 是一个用于构建锁、同步器等线程协作工具类的模板框架 8.1 AQS的实现有哪些? Semaphore CountDownLatch ReentrantLock CyclicBarrier ReentrantReadWriteLock ThreadPoolExcutor Semaphore 利用AQS的实现 acquire 获取permits个许可 tryAcquireShared 调用nonfairTry

2020-08-13 22:32:25 310

原创 JAVA队列体系

5.队列 5.1 阻塞队列 ArrayBlockingQueue:有界队列,内部使用数组实现,使用ReentrantLock实现线程安全 LinkedBlockingQueue:无界队列,最大容量Integer.MAX_VALUE; SynchronousQueue: 容量为0,没有一个地方来暂存元素,每次取数据都要先阻塞,直到有数据被放入;同理,每次放数据的时候也会阻塞,直到有消费者来取。 PriorityBlockingQueue:支持优先级的无界阻塞队列,自定义compareTo()实现队列中元素

2020-08-09 15:23:51 177

原创 线程不安全的HashMap及其结构解读

4.1.线程不安全的HashMap HashMap的底层结构 如何添加元素 如何删除元素 扩容 为什么扩容时是2的倍数,有什么好处? HashMap的几个参数 属性 说明 JDK8 JDK7 DEFAULT_INITIAL_CAPACITY 默认初始容量 1 << 4 = 16 是 是 MAXIMUM_CAPACITY 最大容量 1 << 30 是 是 DEFAULT_LOAD_FACTOR 默认加载因子 0.75f 是 是 TREEIFY_THRES

2020-08-06 23:30:21 140 2

原创 java并发编程之线程

java 并发编程 1.线程 1.1 创建线程的方式 实现Runnable接口 继承Thread类 线程池创建线程 Callable创建线程 public class CreateThreadTest { private static ExecutorService pool = Executors.newFixedThreadPool(10); class MyThread extends Thread{ @Override public

2020-08-03 23:10:50 159

原创 分布式及其事务

分布式 1.基础理论 常见的三个概念: CAP定理 CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性Consistence: 所有节点访问同一份最新的数据副本 可用性Availability: 每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据 容错性Partition tolerance: 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性

2020-07-30 22:11:57 191

空空如也

空空如也

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

TA关注的人

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