- 博客(52)
- 资源 (1)
- 收藏
- 关注
原创 undolog日志
记录的回滚操作,也称之为`回滚日志`;所以在更新一条记录时,不仅会产生 `redolog`,`binlog`日志,还会产生`undolog`日志;mvcc多版本并发控制
2023-01-26 21:35:56
1551
原创 redolog日志
InnoDB的redolog是固定大小的,比如可以配置为一组4个文件,每个文件的大小是1GB,那么这个文件总共就可以记录4GB的操作。checkpoint:检查点,代表的是当前要擦除的位置,擦除之前要把记录更新到数据文件write pos:代表当前记录的位置;write pos和checkpoint之间的是还空着的部分,可以用来记录新的操作。如果write pos追上checkpoint,表示满了,这时候不能再执行新的更新,得停下来先擦掉一些记录,把checkpoint推进一下。
2023-01-25 22:48:27
629
原创 AQS(AbstractQueuedSynchronizer)
AQS: 是一个用来构建锁和同步器的框架,使用AQS能简单且高效的构造出应用广泛的大量同步器,比如(SemaphoreAQS是一个FIFO的双向队列,内部通过节点head和tail记录队首和队尾元素,队列元素的类型为Node;state:单一的状态信息;对于而言,state表示当前线程获取锁的可重入次数。(当一个线程获取到锁后,在AQS内部首先使用CAS操作把state状态值从0变为1,然后设置当前锁的持有者为当前线程,当该线程再次获取锁时发现它就是锁的持有者,则会改变state的值由1变为2对于而言,
2023-01-10 20:06:29
127
原创 synchronized
1. synchronized2. 对象头3. 锁升级(无锁,偏向锁,轻量级锁,重量级锁)4. monitorEnter,monitorExit
2023-01-05 13:08:33
110
原创 ThreadLocal
1. ThreadLocal源码分析2. JDK1.7、JDK1.8的差异3. ThreadLocalRandom4. InheritableThreadLocal5. ThreadLocal的内存泄漏
2023-01-04 17:39:59
211
原创 Hystrix
Hystrix在微服务架构中,服务与服务之间通过远程调用的方式进行通信,一旦某个被调用的服务发生了故障,其依赖服务也会发生故障,此时就会发生故障的蔓延,最终导致系统瘫痪。Hystrix实现了断路器模式,当某个服务发生故障时,通过断路器的监控,给调用方返回一个错误响应,而不是长时间的等待,这样就不会使得调用方由于长时间得不到响应而占用线程,从而防止故障的蔓延。Hystrix具备服务降级、服务熔断、线程隔离、请求缓存、请求合并及服务监控等强大功能。1. Hystrix的使用1.1 pom坐标的导入 &l
2022-05-05 14:44:20
467
原创 java 面试宝典总结
面试宝典总结:java 基础面向对象的四大特征:继承:继承是从已有类得到继承信息,创建新类的过程。提供继承信息的类叫做父类,得到继承信息的类叫做子类。封装:隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。多态:多态性指允许不同子类型的对象对同一消息做出不同的响应。(同样的对象引用调用同样的方法但是做了不同的事)多态必须满足的两个条件:1. 方法重写,2. 父类引用指向子类抽象:抽象就是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象,抽象只关注对象有哪些属性和行为,不关心具
2022-03-08 17:24:00
3234
原创 数据结构之跳表
数据结构之跳表跳表可以说是B+树的一种拓展1. 什么是跳表在介绍跳表的定义之前,我们先来了解一下链表,对于一个单链表来说,即便链表中存储的数据是有序的,如果我们要想在七种查找某个数据,只能从头到尾遍历链表,查找的效率很低,查找的时间复杂度为 O(n);由于单链表的查找效率太慢,我们想,可以通过什么方式能够提高链表的查找效率呢?我们试着对链表中建立索引,使用索引来标记和记录数据的位置。如下图如上图所示,我们给单链表建立了一个索引层,当我们想查找某个数据(16)时,我们可以先在索引层遍历,当遍历
2022-03-08 10:56:07
803
原创 MySQL 架构
MySQL 架构1. MySQL 中包含的模块服务器初始化模块服务器初始化模块负责在启动时完成服务器初始化。连接管理器连接管理器侦听来自客户端的连接,然后将请求发给线程管理器。线程管理器线程管理器负责跟踪线程,确保分配线程,以处理来自客户端的连接连接线程连接线程是在一个已建立的连接上处理客户端请求的工作核心用户验证模块用户验证模块验证所连接的用户,并对包含该用户层权限信息的结构和变量进行初始化。访问控制模块访问控制模块检验客户端用户是否
2022-03-02 20:29:44
832
原创 Java 中的 transient 关键字
transient:transient 的作用和使用方法:我们知道对象实现了 serilizable 就可以被序列化,我们不必关系具体序列化的过程,只要实现了这个接口,这个类的所有属性和方法都会自动的序列化在实际的开发过程中,为了安全起见,通常我们并不希望所有的属性都被序列化在网络操作中传输,那么此时我们只需要在 不希望序列化的属性前,添加 transient 关键字即可。1. 需要实现 ser
2022-01-25 17:34:43
255
原创 Java 位运算
位运算数据类型字节长度(1 byte =8 bit)byte1short2int4long8char2boolean1float4double8java 中的位运算只针对 byte , short , int , long ,char 。位运算符分为位逻辑运算符和位运算符位逻辑运算符:&(与),|(或),~(非),^ (异或)位运算符:>>(右移运算符) <<
2022-01-25 17:32:42
264
原创 抽象类和接口
抽象类和接口的区别抽象类: 含有abstract修饰的class即为抽象类,abstract 类不能创建实例对象。含有abstract方法的类必须定义为abstract class,抽象类中的方法不一定全部要是抽象的,抽象类中的所有抽象方法必须要在子类中全部实现,如果不能实现全部的抽象方法,那么子类也必须用 abstract 修饰 抽象类中不能有抽象构造方法或抽象静态方法为什么不能有抽象构造方法?抽象类是可以拥有构造方法的。Java中没有抽象构造方法这一说。构造方法是用来初始化变量和通过new来创建对
2022-01-25 16:46:03
156
转载 Antirez 和 Martin 关于 Redlock 的争论
Antirez 和 Martin 关于 Redlock 的争论版权声明:本文为知乎作者「信仰」的文章摘选,原文链接:https://zhuanlan.zhihu.com/p/360310753 Redis分布式锁4.1、分布式专家 Martin 对于 Relock 的质疑在他的文章中,主要阐述了 4 个论点:1) 分布式锁的目的是什么?第一,效率。使用分布式锁的互斥能力,是避免不必要地做同样的两次工作(例如一些昂贵的计算任务)。如果锁失效,并不会带来「恶性」的后果,例如发了 2 次邮件等,无伤
2022-01-24 18:14:04
519
原创 Redis 详解
Redisredis 简介redis 采用的是单线程的 KV 模型,由 C 语言编写,1. Redis 中的事务?2. Redis 中的数据结构3. Redis 中如何保证缓存和数据库双写时的数据一致性?4. 如何使用 Redis 做异步队列和延时队列?5. Redis 中的过期策略6. Redis 中的内存淘汰机制7. Redis 中的缓存击穿,缓存穿透,缓存雪崩8. Redis 中的分布式锁9. Redis和memcache的区别10. Redis 中的持久化机制11. Red
2022-01-19 19:29:01
31970
3
原创 Docker
Docker介绍,docker中常见命令详解,docker安装常用软件,docker部署项目,docker镜像,服务编排,docker compose,docker 私有仓库的搭建
2022-01-11 02:11:19
717
原创 23种设计模式之策略模式
策略模式(Strategy Pattern)在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图: 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决: 在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。何时使用: 一个系统有许多许
2021-11-12 00:03:52
74
原创 23 种设计模式之访问者模式
访问者模式(Visitor Pattern)在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。介绍意图: 主要将数据结构与数据操作分离。主要解决: 稳定的数据结构和易变的操作耦合问题。何时使用: 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这
2021-11-12 00:03:38
110
原创 23种设计模式之工厂模式
设计模式之工厂模式:工厂模式属于创建型模式 ,创建对象时不会通过客户端暴露创建逻辑,并且通过使用一个共同的接口来指向新创建的对象。**意图:**定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。**主要解决:**接口的选择问题优点: - 一个调用者想创建一个对象,只要知道其名称即可 - 扩展性高,如果想增加一个产品,只要拓展一个工厂类即可 - 屏蔽产品的实现,调用者只关心产品的接口缺点: - 每次增加一个产品时,都需要增加一个类和对象实现工厂。
2021-11-12 00:02:15
155
原创 23种设计模式之单例模式
设计模式之单例模式属于创建型模式,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建,该类提供一种访问其唯一对象的方式,可以直接访问,不需要实例化。注意: - 单例只能有一个实例 - 单例类必须自己创建自己的唯一实例 - 单例类必须给所有其他对象提供这一实例...
2021-11-12 00:01:42
76
原创 23种设计模式之桥接模式
桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。属于== 结构型模式 ==,通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。介绍**意图:**将抽象部分与实现部分分离,使它们都可以独立的变化。**主要解决:**在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。**何时使用:**实现系统可能有多个角度分类,每一种角度都可能变化。**如
2021-11-12 00:00:54
85
原创 23种设计模式之建造者模式
设计模式之建造者模式建造者模式(builder pattern)使用多个简单的对象一步一步构建成一个复杂的对象。属于== 创建型模式==一个 builder 类会一步一步构造最终的对象。该 builder 类是独立于其他对象的。介绍**意图:**将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。**主要解决:**主要解决在软件系统中,有时候面临着 “一个复杂对象” 的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,
2021-11-12 00:00:32
84
原创 23种设计模式之原型模式
原型模式原型模式是用于创建== 重复的对象==,同时又能保证性能。这种类型的设计模式属于创建型模式,提供了一种创建对象的最佳方式。这种模式是实现了一个原型的接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采取这种方式创建对象。(当一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,再需要的时候更新数据库,以此来减少数据库调用)介绍意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决: 在运行期建立和删除原型
2021-11-11 23:59:48
77
原创 23种设计模式之代理模式
代理模式结构型模式代理模式中,一个类代表另一个类的功能。我们创建具有先有对象的对象,以便向外界提供功能接口介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题比如说:要访问的对象在远程的机器上,在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者默写操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统带来很多的麻烦,我们可以在访问此对象时加上一个对此对象的访问层。何时使用:想在访问一个类时做一些控制如何解决:增加中间层
2021-11-11 23:58:05
81
原创 23种设计模式之责任链模式
责任链模式(Chain of Reesponsibility Pattern)行为型设计模式责任链模式为请求创建了一个接受者对象的链。这种模式给予请求的类型,对请求的发送者和接受者进行解耦。(在这种模式中,通常每个接收者都包含对另一个接受者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接受者,依此类推)介绍应用实例:红楼梦中的击鼓传花JS 中的事件冒泡JavaWeb 中的 Apache Tomcat 对 Encoding 的处理,Struts2 的拦截器,jsp serv
2021-11-11 23:57:53
110
Java+Spring+Spring容器启动流程方法调用xmind脑图
2022-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人