自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL】常用的MySQL工具

常用的mysql工具,包含mysqlbinlog,mysqlimport/source,mysqldump等

2024-04-24 10:46:55 127 2

原创 【MySQL】InnoDB存储引擎实现事务的原理及MVCC-实现原理

InnoDB存储引擎实现事务的原理和MVCC的实现原理详解。

2024-04-23 21:28:44 908 5

原创 【MySQL】SQL优化

MySQL的优化,例如插入优化,主键优化,order by优化,group by优化,limit优化,count优化等。

2024-04-22 21:15:59 1579 9

原创 【MySQL】InnoDB与MyISAM存储引擎的区别与选择

MySQL中的存储引擎,如InnoDB和MyISAM,以及存储引擎的区别与选择

2024-04-22 13:07:19 363

原创 Java中的反射机制详解

Java中的反射机制详解

2024-04-18 16:31:22 697

原创 cpu中常见的寄存器

常见的包含累加寄存器、标志寄存器、程序计数器、基址寄存器、变址寄存器、通用寄存器、指令寄存器、栈寄存器等

2024-04-16 19:01:27 134

原创 CAP定理和BASE定理

CAP定理,一致性、可用性、分区容错性。BASE定理,基本可用、软状态、最终一致性。

2024-04-12 21:22:29 297

原创 Zookeeper的集群搭建和ZAB协议详解

Zookeeper的集群搭建和ZAB协议详解,包括Zookeeper集群中的Leader节点的选举,崩溃恢复及数据的主从同步。

2024-04-12 19:07:59 1373

原创 Zookeeper实现分布式锁的分析和理解

Zookeeper实现分布式锁,读写锁的获取,羊群效应,和Watch机制的理解。

2024-04-12 13:38:09 628

原创 Zookeeper中的节点类型和实现持久化的两种方式

Zookeeper内部的数据模型,节点类型和实现数据持久化的两种方式

2024-04-12 13:33:11 501

原创 Redis实现持久化和集群的搭建

Redis实现持久化的几种方式及Redis集群的搭建

2024-04-11 20:35:45 475

原创 项目中使用消息队列改进——基于RabbitMQ

项目中使用 RabbitMQ 实现消息队列

2024-04-09 21:28:31 510

原创 RabbitMQ的介绍

RabbitMQ的优势和工作原理的分析

2024-04-09 13:38:43 884 1

原创 Redis分布式锁的实现和分析

Redis实现分布式锁的解决方案和存在的问题分析。

2024-04-08 17:18:09 971

原创 JUC并发编程——对CAS的理解和分析

CAS(CompareAndSet 或 CompareAndSwap)又称 无锁,乐观锁,实现方式是非阻塞同步。CAS指令有三个操作数,分别是内存位置(在Java中可以简单地理解为变量的内存地址,用V表示)、旧的预期值(用A表示)和准备设置的新值(用B表示)。CAS指令执行时,当且仅当V符合A时,处理器才会用B更新V的值,否则它就不执行更新。但是,不管是否更新了V的值,都会返回V的旧值,上述的处理过程是一个操作,执行期间不会被其他线程中断。CAS指令的底层是原子操作,保证了原子性,解决了指令交错问题。

2024-04-02 16:53:03 314

原创 JUC并发编程—— 对volatile的理解及DCL的解决方法

volatile 的底层实现原理是加入 volatile 关键字后,写指令(被 volatile 修饰的变量在对此变量修改时)会加入写屏障,读指令(被 volatile 修饰的变量在对此变量读取时)会加入读屏障。

2024-04-01 19:55:35 278

原创 JUC并发编程——wait / notify原理

Monitor 中有三个部分:Owner,EntrySet 和 WaitSet。Owner 是拥有锁的线程地址,EntrySet 是其他线程想要获取锁的列表,WaitSet 是拥有锁的线程一些条件未满足调用 wait() 方法,进入的WaitSet列表,并且释放锁。在 EntryList 中的线程状态是 BLOCKED,在 WaitSet 中的线程状态是 WAITING。都不占用 CPU 时间片。

2024-03-31 20:42:33 420

原创 JUC并发编程——对于synchronized关键字的理解

两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,最后输出的counter一定为0 吗?

2024-03-30 14:33:36 903

原创 JUC并发编程——常用方法

异常,但是查询t1的打断状态缺失,显示未打断,说明 sleep 时线程被 interrupt 后,清除了 interrupt 的状态。打断 sleep,wait,join 的线程,这几个方法都会让线程进入阻塞状态。注意 interrupt() 和 isInterrupted() 方法的区别。可以看到t1 sleep 一秒后已经被打断了,且抛出了。打断 sleep 的线程, 会清空打断状态。:等待线程运行结束,最多等待 n 毫秒。打断正常运行的线程,不会清除打断状态。未调用 join 方法。

2024-03-28 18:54:13 304

原创 JVM(六)——内存模型与高效并发

【java 内存模型】是 Java Memory Model(JMM)简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障。

2024-03-27 22:26:16 1122

原创 JVM(五)——类加载阶段

在自定义类加载器时,使用不同的类加载器对象获取的类不是相同的。Class<?Class<?// 都是 classLoader1 对象// trueClass<?// 创建了 classLoader2// false。

2024-03-27 15:28:13 700

原创 JVM(四)——编译期的处理

如果匿名内部类中引用了外部的变量,那么在通过匿名内部类创建额外的类时,会把引用的变量当作本类的成员变量,且在原类中(使用了匿名内部类),向匿名内部类中传递的变量必须是 final 的。擦除的是字节码上的泛型信息,可以看到 LocalVariableTypeTable 仍然保留了方法参数泛型的信息。和转换的一些代码,主要是为了减轻程序员的负担。创建一个类后,如果没有构造器,编译器会自动为我们添加无参的构造器,且调用父类的无参构造方法。枚举类中的成员,实际上是 枚举类中的实例对象且个数是一定的。

2024-03-26 21:03:12 840

原创 JVM(三)——字节码技术

一个简单的 HelloWorld.java执行根据 JVM 规范,类文件结构如下。

2024-03-26 18:58:30 799

原创 JVM(二)——垃圾回收

在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。但是存在循环引用的问题。

2024-03-25 21:32:59 1106

原创 JVM(一)——内存结构

Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境)

2024-03-25 08:33:13 1349

原创 Redis中的缓存雪崩

是指在同一时段大量的缓存key同时失效或者缓存服务(Redis等)宕机,导致大量请求到达数据库,带来巨大压力。

2024-03-22 22:33:27 417

原创 Redis中的缓存击穿

也叫热点key问题,就是一个被并且的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大压力。

2024-03-22 22:17:40 639

原创 Redis中的缓存穿透

是指,导致这些请求直接到了数据库上,对数据库造成了巨大的压力,可能造成数据库宕机。

2024-03-22 21:10:52 317

原创 elasticsearch和mysql数据库的数据同步问题(一)

elasticsearch中的数据来自mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这就是elasticsearch与mysql之间的数据同步。

2024-03-20 22:14:46 479

原创 elasticsearch和mysql数据库的数据同步问题(二)

对 insert, update, delete 请求发送消息。使用 RabbitMq 异步通知的方式,解决数据同步问题。

2024-03-20 22:12:52 537

原创 docker常用指令

在没有指定 tag 时,默认是 latest,代表最新版本的镜像。

2024-03-17 21:36:31 407

原创 负载均衡的策略

Ribbon的负载均衡规则是一个叫做IRule。

2024-03-16 10:19:35 485

原创 负载均衡的原理

前情 : 启动了两个 UserService 客户端和一个 OrderService 客户端,且都已经注册到 Eureka 中。服务消费者OrderService,使用注册中心的名字代替 ip 和端口,设置。

2024-03-16 09:53:45 677

原创 git常用指令

如果想要更改远程仓库的地址,先删除当前旧的地址,再添加新的地址。Git 工作区中文件的状态。

2024-03-09 18:02:58 314

原创 【Linux】学习指令前的必要知识

TAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R- 正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等。系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上。ps 命令 是用来查看目前系统中,有哪些正在执行,以及他们执行的状况。这是另一个给主机额外安装软件所安装的目录。VSZ:进程占用的虚拟机内存大小(单位:KB)RSS:进程占用的物理内存大小(单位:KB。:显示后台进程运行的参数。

2024-03-09 17:57:02 828

原创 连接假死和心跳监测

例如: 客户端连接正常,用户只是停顿了一会儿,但是服务器没有接收到客户端的数据,认为是连接假死。客户端向服务器发送数据的时间间隔,小于服务器定义的空闲检测的时间间隔,就能防止服务器的误判。服务器端定时向客户端发送数据,如果客户端没有发送数据,就可以判定为连接假死。为了避免服务器的误判,在客户端中需要定时向服务器发送数据。方法触发特殊事件,以此进行监测。添加 Netty 中的。可以监测读或写事件。

2024-03-05 13:29:43 454

原创 RedisTemplate的默认序列化方式及改进【二】

RedisTemplate的默认序列化方式及改进【二】

2024-01-24 14:10:52 330

原创 RedisTemplate的默认序列化方式及改进【一】

RedisTemplate的默认序列化方式及改进

2024-01-22 00:22:25 406

原创 通过Selector组件监控多个Channel事件

在非阻塞模式下,单个线程一直运行,一直占用CPU资源。通过创建selector,管理多个 channel。

2024-01-06 21:08:19 307

原创 通过NIO实现非阻塞模式

非阻塞模式的缺点:即使没有连接建立,和可读数据,线程仍然在不断运行,一直占用 cpu资源。

2024-01-06 20:00:57 511

空空如也

空空如也

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

TA关注的人

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