Jiefang's Blog

过去心不可得,现在心不可得, 未来心不可得

MySQL-29丨缓冲池与写缓冲

缓冲池与写缓冲池 缓冲池 应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。 操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。 MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。 今天,和大家聊一聊InnoDB的缓冲池。 Inn...

网络编程-05丨详解TCP连接的三次握手与四次挥手

详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西; 由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上...

Netty-05丨详解TCP连接的三次握手与四次挥手

详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西; 由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上...

RocketMQ-03丨RocketMQ的存储模型

RocketMQ的存储模型 Topic、MessageQueue以及Broker关系 RocketMQ引入了MessageQueue的概念,本质上就是一个数据分片的机制,通过MessageQueue将一个Topic的数据拆分为了很多个数据分片,然后在每个Broker机器上都存储一些MessageQueue。 RocketMQ的存储模型 RocketMQ采用的是混合型的存储结构,即...

RocketMQ-02丨基于DLedger技术的Broker主从同步原理

基于DLedger技术的Broker主从同步原理 一条数据就会在三个Broker上有三份副本,如果Leader Broker宕机,那么就直接让其他的Follower Broker自动切换为新的Leader Broker。 DLedger基于Raft协议选举 这需要发起一轮一轮的投票,通过三台机器互相投票选出来一个人作为Leader。 简单来说,三台Broker机器启动的时候,他们...

RocketMQ-01丨RocketMQ参数调优

RocketMQ参数调优 OS内核参数调整 vm.overcommit_memory “vm.overcommit_memory”这个参数有三个值可以选择,0、1、2。 如果值是0的话,在你的中间件系统申请内存的时候,os内核会检查可用内存是否足够,如果足够的话就分配内存给你,如果感觉剩余内存不是太够了,干脆就拒绝你的申请,导致你申请内存失败,进而导致中间件系统异常出错。 因此一般...

LeetCode-02丨2.两数相加

2.两数相加 问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 //给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按...

LeetCode-01丨1.两数之和

1.两数之和 问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 //给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 ...

面试题-26丨互联网Java进阶面试训练营

02丨互联网Java进阶面试训练营 第一季-分布式 01、互联网大厂面试要求:技术广度、技术深度、系统设计以及项目经验 02、Java工程师面试突击第一季总结:你离一次成功的面试还差多少? 03、《21天互联网Java进阶面试训练营》的课程说明 04、作业:系统分析一下,自己距离大厂offer差在哪里? 05、感受一下BAT面试官对分布式技术的十几个面试连环炮! 0...

RocketMQ-00丨Apache RocketMQ开发者指南_05

Apache RocketMQ开发者指南_运维管理 1 集群搭建 1.1 单Master模式 这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。 1)启动 NameServer 1 2 3 4 5 6 ### 首先启动Name Server $ nohup sh mqnamesrv & ### 验证Name...

RocketMQ-00丨Apache RocketMQ开发者指南_04

Apache RocketMQ开发者指南 消息轨迹 1. 消息轨迹数据关键属性 | Producer端 | Consumer端 | Broker端 | | —————- | —————– | ———— | | 生产实例信息 | 消费实例信息 | 消息的Topic | | 发送消息时间 | 投递时间,投递轮次 | 消息存储位置 |...

RocketMQ-00丨Apache RocketMQ开发者指南_03

Apache RocketMQ开发者指南_最佳实践 1 生产者 1.1 发送消息注意事项 1 Tags的使用 一个应用尽可能用一个Topic,而消息子类型则可以用tags来标识。tags可以由应用自由设置,只有生产者在发送消息设置了tags,消费方在订阅消息时才可以利用tags通过broker做消息过滤:message.setTags(“TagA”)。 2 Keys的使用 ...

RocketMQ-00丨Apache RocketMQ开发者指南_02

Apache RocketMQ开发者指南 1 基本样例 在基本样例中我们提供如下的功能场景: 使用RocketMQ发送三种类型的消息:同步消息、异步消息和单向消息。其中前两种消息是可靠的,因为会有发送是否成功的应答。 使用RocketMQ来消费接收到的消息。 1.1 加入依赖: maven: 1 2 3 4 5 <dependency> <gr...

RocketMQ-00丨Apache RocketMQ开发者指南_01

Apache RocketMQ开发者指南 基本概念 1 消息模型(Message Model) RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic...

Java多线程--34丨MESI硬件级原理

MESI硬件级原理 高速缓存 处理器高速缓存的底层数据结构实际是一个拉链散列表的结构,就是有很多个bucket,每个bucket挂了很多的cache entry,每个cache entry由三个部分组成:tag、cache line和flag,其中的cache line就是缓存的数据,tag指向了这个缓存数据在主内存中的数据的地址,flag标识了缓存行的状态,另外要注意的一点是,ca...

Java多线程-33丨edits log日志并发写原理

edits log日志并发写原理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63...

Java多线程-32丨Volatile可见性原理

Volatile可见性原理 volatile关键字的作用是保证变量在多线程之间的可见性,volatile的可见性实现基于lock前缀指令和MESI缓存一致性协议。 lock前缀指令 volatile修饰的变量,执行写操作前会使用lock前缀指令。 1 volatile Singleton instance = new Singleton(); 汇编代码: 1 2 3 0x01a...

Redisson-07丨Redisson倒计时门闩分析

Redisson倒计时门闩分析 用法 1 2 3 4 5 6 7 RCountDownLatch latch = redisson.getCountDownLatch("anyCountDownLatch"); latch.trySetCount(1); latch.await(); // 在其他线程或其他JVM里 RCountDownLatch latch = redisson.ge...

Redisson-06丨Redisson信号量分析

Redisson信号量分析 基于Redis的Redisson的分布式信号量(Semaphore)Java对象RSemaphore采用了与java.util.concurrent.Semaphore相似的接口和用法。 信号量(Semaphore) 用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 RSemaphore semaphore = redis...

Redisson-05丨Redisson读写锁分析

Redisson读写锁分析 基于Redis的Redisson分布式可重入读写锁RReadWriteLock Java对象实现了java.util.concurrent.locks.ReadWriteLock接口。其中读锁和写锁都继承了RLock接口。分布式可重入读写锁允许同时有多个读锁和一个写锁处于加锁状态。 用法 1 2 3 4 5 RReadWriteLock rwlock = r...