01 2023 档案
摘要:设计模式分二十三种,三大类,分别是: 对象创建型 抽象工厂、生成器、工厂方法、原型、单例 结构型 适配器、桥接、组合、装饰器、外观、享元、代理 行为型 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者
阅读全文
摘要:一、总览 Redis是键值型数据库,键是String,值可以是多种数据类型,具体包括:String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合) 键值采用哈希算法,称为全局哈希表。 而每种数据类型对应着都有底层实现的数据结构,具体如图: 二、数据结
阅读全文
摘要:一、基本的分析命令 1、explain+SQL语句:查看执行计划 2、show create table table1:查看table1的创建SQL 3、show indexes from table1:查看table1所有的索引 4、show table status like 'table1'
阅读全文
摘要:一个好的消息队列需满足以下几点: 1、首先,必须是开源的产品,这个非常重要。 开源意味着,如果有一天你使用的消息队列遇到了一个影响你系统业务的 Bug,你至少还有机会通过修改源代码来迅速修复或规避这个 Bug,解决你的系统火烧眉毛的问题,而不是束手无策地等待开发者不一定什么时候发布的下一个版本来解决
阅读全文
摘要:1、关于消息重复 消息重复的情况必然存在在 MQTT 协议中,给出了三种传递消息时能够提供的服务质量标准,这三种服务质量从低到高依次是: At most once: 至多一次。消息在传递时,最多会被送达一次。换一个说法就是,没什么消息可靠性保证,允许丢消息。一般都是一些对消息可靠性要求不太高的监控场
阅读全文
摘要:一条消息从生产到消费完成这个过程,可以划分三个阶段,为了方便描述,我给每个阶段分别起了个名字。 生产阶段: 在这个阶段,从消息在 Producer 创建出来,经过网络传输发送到 Broker 端。存储阶段: 在这个阶段,消息在 Broker 端存储,如果是集群,消息会在这个阶段被复制到其他的副本上。
阅读全文
摘要:站在 java 开发语言的角度,虽然可供选择的客户端非常多,但是官方主要推荐使用以下三种客户端,原因大概是它们对 redis 提供的支持更加全面、api 操作更佳丰富。 1、Jedis Jedis 是一款老牌 Redis 的 Java 客户端,提供了比较全面的 Redis 命令的操作支持,也是目前使
阅读全文
摘要:jmap是JDK自带的监控工具,在JDK的根目录中可以找到。主要用来查看Java进程对内存的使用情况 1、查看类列表,包含实例数、占用内存大小 # pid 是进程ID jmap -histo:live pid 按照占用空间的大小打印程序中类的列表,可以分析哪些类占用了比较多的内存,再结合代码找到问题
阅读全文
摘要:1、全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建
阅读全文
摘要:1、网络模型:IO多路复用 Linux 中的 IO 多路复用机制是指一个线程处理多个 IO 流,就是我们经常听到的 select/epoll 机制。简单来说,在 Redis 只运行单线程的情况下,该机制允许内核中,同时存在多个监听套接字和已连接套接字。内核会一直监听这些套接字上的连接请求或数据请求。
阅读全文
摘要:1、原理 索引其实就像一本书的目录,便于我们快速找到想要看的内容。就像我们的《新华字典》,可以按部首查,可以按拼音查,可以快速查到想要查的字。 2、类型 B-Tree 使用B-Tree数据结构来存储数据(实际使用B+Tree更多),所有的值都是按顺序存储的,可以加快查找速度,把查找复杂度从O(n)
阅读全文
摘要:1、隔离级别 SQL 标准的事务隔离级别包括:读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(serializable )。 读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 读提交是指,一个事
阅读全文
摘要:1、redo log (引擎层) 如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高。为了解决这个问题,MySQL 的设计者就用了类似酒店掌柜粉板的思路来提升更新效率。而粉板和账本配合的整个过程,其实就是 MySQL 里经常说到的 W
阅读全文
摘要:1、MySQL逻辑架构图 2、整体解析 大体上MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,
阅读全文