自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql索引B树和B+树

B树 B 树,平衡多路查找树。B 树是为磁盘等存储设备设计的一种平衡查找树。B 树结构的数据可以让系统高效的找到数据所在的磁盘块。 上图就是一个 B 树,紫色为 Key,黄色为 data,蓝色为指针。 相比于之前的 BST 多了在每一个磁盘页的索引比较,但是因为磁盘页已经被磁盘 IO 操作读取到了内存中。因为内存 IO 操作比磁盘 IO 操作省时很多根本不在一个数量级所以可以忽略不计,所以磁盘 IO 操作仍然是最重要的性能指标。 B 树相比于二叉搜索树压缩了深度,所以磁盘 IO 会比二叉搜索树少,能有效地

2021-07-11 18:36:59 224

原创 zookeeper笔记

Zookeeper 1.概述 0、一句话,zookeeper=文件系统+通知机制。 1、ZooKeeper是中间件,是一种分布式协调服务,用于管理大型主机。 2、在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题↑↑↑↑↑↑↑ 3、ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 2.Zookeepr能做的事情 1、选举算法 - 容灾 最重要的,master节点选举,主节点挂了之后,从节点就会接手工作,并且保证这个

2021-07-11 18:21:37 512

原创 TCP/IP笔记

TCP/IP 1.TCP连接管理 1.重置报文段 在TCP的头部有其有一个RST位字段。一个将该字段置位的报文段被称作“重置报文段”或简称为“重置”** 一般来说,当发现一个到达的报文段对于相关连接而言是不正确的时,TCP就会发送一个重置报文段。 2.针对不存在的端口连接 通常情况下,当一个连接请求到达本地却没有相关进程在目的端口侦听时就会产生一个重置报文段。之前在“连接被拒绝”的错误消息中已经介绍过这种情况。这些均与TCP协议相关 与UDP的不同: UDP协议规定,当一个数据报到达一个不能使用的目的端

2021-07-03 19:50:39 360 1

原创 I/O总结

I/O 1.定义 I/O 描述了计算机系统与外部设备之间通信的过程。 从应用程序的视角来看的话,我们的应用程序对操作系统的内核发起 IO 调用(系统调用),操作系统负责的内核执行具体的 IO 操作。也就是说,我们的应用程序实际上只是发起了 IO 操作的调用而已,具体 IO 的执行是由操作系统的内核来完成的。 当应用程序发起 I/O 调用后,会经历两个步骤: 内核等待 I/O 设备准备好数据 内核将数据从内核空间拷贝到用户空间。 2.Linux I/O 读写方式 1. I/O中断 在 DMA 技术出现前,

2021-06-29 16:16:36 258

原创 java中的锁

一.锁分类 1.1 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。 对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现类都是悲观锁。 而乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没

2021-06-28 23:16:45 143

原创 java多线程的创建方式

一. 创建线程方式 1.无返回值 1.实现Runnable接口,重新run() 例如: class FirstThread implements Runnable { @Override public void run() { for (int i = 0; i < 50; i++) { System.out.println("First- Thread:" + i); } } } 最后:Thread ft = new

2021-06-14 23:15:10 1159 1

原创 JVM调优实战

一.命令篇 JDK提供以下命令排查JVM问题: 都是针对进程而言: jps:JVM Process Status Tool,显示系统内所有的JVM进程; jstat:JVM Statistics Monitoring Tool,可以收集JVM相关的运行数据; jmap:Memory Map for Java,用于生成JVM的内存快照; jstack:Stack Trace for Java,显示JVM的线程快照。 jhat:JVM Heap Dump Browser,用于分析heapdu

2021-06-13 23:02:43 1237 2

原创 ReentrantReadWriteLock源码分析

一.ReentrantReadWriteLock基本原理分析 像ReentrantLock实现的是一个排他锁,即若有一个线程获取锁,其他线程都不能再次获取。而ReentrantReadWriteLock提供了一种共享锁策略,即如果有线程获取的是共享锁,则其他线程可以继续获取共享锁,但不能获取排他锁;而如果当前线程获取了排他锁,则其他线程共享锁和排他锁都不能获取。 基于ReentrantReadWriteLock内部实现了一对读写锁,一般情况下,读写锁的性能都会比排它锁好,因为大多数场景读是多于写的。在读多于

2021-06-11 23:57:17 138

原创 Condition相关源码分析

Condition接口定义 Condition将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。可以通过await(),signal()来休眠/唤醒线程。 Object的监视器方法和Condition接口的特性对比如下 publi

2021-06-08 23:51:26 138

原创 ReentrantLock源码分析

ReentrantLock源码实现分析整理 重入锁ReentrantLock实现了Lock接口,即实现了加解锁操作的基本API,在此基础上,ReentrantLock提供以下特性: 1.支持同一线程对资源的重复加锁,即同一线程重复调用lock方法不会堵塞,但后续解锁次数需要和加锁次数同步,才能真正意义地释放锁。 2.支持获取锁时的公平和非公平性选择, 类的内部结构: 在ReentrantLock,有3个非常核心的内部类:Sync,FairSync,NonfairSync,其中Sync继承自Abstract

2021-06-07 23:13:25 127

原创 AQS源码解析

AQS源码解析 AQS(AbstractQueuedSynchronizer)队列同步器是用来构建锁和其他同步组件的基础框架,基于cas无锁实现高效的同步机制,它底层维护了一个volatile整型变量和一个先进先出的线程等待队列。它提供独占和共享(多线程进入临界区)的两种资源共享方式,支持中断,超时和适应性自旋。 AQS实现原理 实现锁有Lock接口及其实现和AQS两大核心部分: 1.Lock接口定义了使用者和锁交互的细节,隐藏了实现细节 2.AQS则简化了锁的实现方式,封装屏蔽了同步状态管理,线程排队、等

2021-06-07 00:05:49 186 1

原创 ConcurrentHashMap源码解析

一.ConcurrentHashMap数据结构 1.JDK1.7数据结构 JDK1.7中的HashMap的结构,ConcurrentHashMap将数组每个元素作为一个segment–片段。 结构:ReentrantLock+Segment+HashEntry 1.get操作,没有使用锁,而是通过Unsafe对象的getObjectVolatile()方法提供的原子读语义,来获得Segment以及对应的链表,然后对链表遍历判断是否存在key相同的节点以及获得该节点的value。但由于遍历过程中其他线程可能

2021-06-05 23:35:20 186 2

原创 JDK1.8 hashmap源码解析

一.HashMap的数据结构 jdk1.8版本是数组+ 链表/红黑树 二.元素属性 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // 序列号 private static final long serialVersionUID = 362498820763181265L; // 默认的初始容量是16 static

2021-06-04 23:08:27 181

空空如也

空空如也

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

TA关注的人

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