蘑菇蘑菇不会开花~
码龄13年
关注
提问 私信
  • 博客:150,442
    社区:564
    问答:503
    151,509
    总访问量
  • 97
    原创
  • 18,631
    排名
  • 491
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:认真负责的态度做好眼前的事

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2011-10-23
博客简介:

蘑菇蘑菇不会开花的专栏

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    403
    当月
    1
个人成就
  • 获得743次点赞
  • 内容获得13次评论
  • 获得607次收藏
创作历程
  • 35篇
    2024年
  • 13篇
    2023年
  • 5篇
    2021年
  • 1篇
    2020年
  • 14篇
    2019年
  • 13篇
    2018年
  • 7篇
    2017年
  • 2篇
    2016年
  • 3篇
    2015年
  • 4篇
    2014年
  • 4篇
    2013年
成就勋章
TA的专栏
  • 程序设计模式探索之旅
    2篇
  • Dubbo源码分析
  • MySQL 知库集萃
    13篇
  • Redis专栏
    14篇
  • 算法(JAVA)
    9篇
  • Java并发学习专栏
    5篇
  • JVM调优
    10篇
  • 编程语言
    14篇
  • Spring
    2篇
  • 读书心得
    4篇
  • RocketMQ
    7篇
  • Tomcat
    6篇
兴趣领域 设置
  • Python
    python
  • Java
    javaspringkafkaspring bootjvmdubbojava-zookeeperjava-rabbitmqguava
  • 开发工具
    github
  • 数据结构与算法
    算法数据结构链表leetcode
  • 后端
    djangogolang爬虫后端ribbonhystrix
  • 云原生
    容器devopskubernetes云原生微服务服务发现
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

MacOS M1在CentOS8下安装Docker遇到的问题

最近一直在使用MACOS的M1系列电脑开发,发现在Centos8虚拟机环境下安装docker的各种问题,在这里进行总结,以备后期使用和参考。
原创
发布博客 2024.10.26 ·
1033 阅读 ·
17 点赞 ·
0 评论 ·
8 收藏

设计模式 | 一文搞懂工厂模式

工厂模式通过引入一个工厂类来负责对象的创建,解决了这些问题。工厂类封装了对象创建的逻辑,使得客户端代码只需要与工厂类交互,而不需要了解对象的具体创建过程。这样,当对象的创建逻辑发生变化时,只需要在工厂类中进行修改,而不会影响到客户端代码。
原创
发布博客 2024.10.25 ·
1053 阅读 ·
34 点赞 ·
0 评论 ·
11 收藏

设计模式 | 6大设计原则

单一职责原则:一个类应该只有一个引起它变化的原因。也就是说,一个类只负责一项职责。开闭原则:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。里氏替换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。接口隔离原则:客户端不应该被迫依赖于它不使用的接口;一个类对另一个类的依赖应该建立在最小的接口上。迪米特法则:一个对象应该对其他对象有最少的了解。也叫最少知识原则。
原创
发布博客 2024.10.25 ·
1166 阅读 ·
23 点赞 ·
0 评论 ·
12 收藏

RocketMQ | 源码分析 | MappedFile核心存储类

RocketMQ的存储都基于MappedFile实现,如CommitLog、Index索引、ConsumeQueue等,本文则主要介绍的实现机制,包括MappedFileQueue类介绍、MappedFile类介绍、预热、MappedFile预分配服务AllocateMappedFileService、MappedFile刷盘等内容。
原创
发布博客 2024.10.24 ·
1172 阅读 ·
16 点赞 ·
0 评论 ·
11 收藏

RocketMQ | 源码分析 | 消息刷盘

通过上面的分析,我们了解了RocketMQ的两种刷盘策略:一种是类似强一致的,保证消息存储到文件中的同步策略。一种是提交到内存中就算存储成功,在后台异步进行刷盘的异步策略。无论是哪种策略,肯定都有自己的优点和缺点,大家可以根据自己生成环境,选择合适的刷盘策略。
原创
发布博客 2024.10.22 ·
1117 阅读 ·
22 点赞 ·
0 评论 ·
26 收藏

RocketMQ | 源码分析 | Broker控制器的启动

总结一下,RocketMQ 会创建多个MappedFile用来存储文件,每个MappedFile大小固定,有自己的内存缓冲区和对应的系统文件,所有的MappedFile由CommitLog中的MappedFileQueue统一维护。本篇文章主要讲解了消息从接收到存储到内存中的过程,但是事情到这还没结束,因为消息最终是要存放到文件中的,下一篇文章就要来说说RocketMQ的文件刷盘策略。
原创
发布博客 2024.10.22 ·
898 阅读 ·
21 点赞 ·
0 评论 ·
26 收藏

RocketMQ | 源码分析 | 消息存储Broker分析

Broker负责接收生产者发送的消息并存储、同时为消费者消费消息提供支持。为了实现这些功能,Broker包含几个重要的子模块:● 通信模块:负责处理来自客户端(生产者、消费者)的请求。● 客户端管理模块:负责管理客户端(生产者、消费者)和维护消费者的Topic订阅信息。● 存储模块:提供存储消息和查询消息的能力,方便Broker将消息存储到硬盘。
原创
发布博客 2024.10.22 ·
933 阅读 ·
11 点赞 ·
0 评论 ·
17 收藏

RocketMQ | 源码分析 | NameServer篇

Namesrv是RocketMQ最简单的一部分,骨头我们先挑最软的一根啃,本次引用的源码来于4.8.0版本,由于笔者水平有限欢迎大家批评指正。从上面的源码我们可以找到一开始我们抛出的三个问题的答案。①:Namesrv通过定时扫描Broker主动上报心跳信息来判断Broker是否存活。②:通过方法获取类维护的路由信息。
原创
发布博客 2024.10.22 ·
1430 阅读 ·
18 点赞 ·
0 评论 ·
11 收藏

RocketMQ | 消息存储

分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。
原创
发布博客 2024.10.15 ·
816 阅读 ·
18 点赞 ·
0 评论 ·
13 收藏

MySQL | 实战 | 如何解决MySQL主从复制延时问题

所谓 MySQL 主从,就是建立两个完全一样的数据库,一个是主库,一个是从库,主库对外提供读写的操作,从库对外提供读的操作。
原创
发布博客 2024.09.25 ·
699 阅读 ·
7 点赞 ·
0 评论 ·
24 收藏

MySQL | 实战 | 4 种将数据同步到ES方案

在实际项目开发中,我们经常将 MySQL 作为业务数据库,ES 作为查询数据库,用来实现读写分离,缓解 MySQL 数据库的查询压力,应对海量数据的复杂查询。这其中有一个很重要的问题,就是如何实现 MySQL 数据库和 ES 的数据同步,今天和大家聊聊 MySQL 和 ES 数据同步的各种方案。我们先看看下面 4 种常用的数据同步方案。
原创
发布博客 2024.09.24 ·
2562 阅读 ·
27 点赞 ·
0 评论 ·
32 收藏

MySQL | 实战 | 隐式转换的坑

本来是一个平静而美好的下午,其他部门的同事要一份数据报表临时汇报使用,因为系统目前没有这个维度的功能,所以需要写个SQL马上出一下,一个同事接到这个任务,于是开始在测试环境拼装这条 SQL,刚过了几分钟,同事已经自信的写好了这条SQL,于是拿给DBA,到线上跑一下,用客户端工具导出Excel 就好了,毕竟是临时方案嘛。就在SQL执行了之后,意外发生了,先是等了一下,发现还没执行成功,猜测可能是数据量大的原因,但是随着时间滴滴答答流逝,逐渐意识到情况不对了,一看监控,
原创
发布博客 2024.09.23 ·
583 阅读 ·
11 点赞 ·
0 评论 ·
15 收藏

MySQL | 知识 | NULL值是怎么存储的

我们使用mysql时,使用xx!='aa'这种条件为什么无法筛选出值为NULL的字段呢。是的,MySQL 中null 值确实无法通过这种条件筛选出来,因为 null 值的定义就跟普通值不一样。第一条 SQL 表达的意思是:不知道这个人的手机号码,。第二条 SQL 表达的意思是:这个人就是。按照这个角度去看待群里同学的提问,其实不难理解为什么 xx!=‘xx’ 查询不出 null 的数据了。因为 null 值表示未知,它的值可能是任意你能想到的值,目前还不能定义它。
原创
发布博客 2024.09.22 ·
1670 阅读 ·
31 点赞 ·
0 评论 ·
33 收藏

MySQL | 知识 | distinct和group by哪个效率更高

两者的语法区别在于,group by可以进行单列去重,group by的原理是先对结果进行分组排序,然后返回每组中的第一条数据。且是根据group by的后接字段进行去重的。如果列具有NULL值,并且对该列使用DISTINCT子句,MySQL将保留一个NULL值,并删除其它的NULL值,因为DISTINCT子句将所有NULL值视为相同的值。distinct多列的去重,则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。的内容),我们对这两条sql进行分析,可以看到,在。
原创
发布博客 2024.09.21 ·
925 阅读 ·
5 点赞 ·
0 评论 ·
20 收藏

MySQL | 知识 | count(*) 和 count(1) 有什么区别?哪个性能最好

当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如count(1)count(*)count(字段)等。到底哪种效率是最好的呢?是不是count(*)效率最差?我曾经以为count(*)是效率最差的,因为认知上会读取所有表中的字段,所以凡事带有字符的就觉得会读取表中所有的字段,当时网上有很多博客也这么说。但是,当我深入 count 函数的原理后,被啪啪啪的打脸了!
原创
发布博客 2024.09.20 ·
1052 阅读 ·
17 点赞 ·
0 评论 ·
21 收藏

分布式Redis(14)哈希槽

Redis 是一款广泛使用的高性能键 - 值存储数据库。在数据分片方面,Redis 采用了哈希槽(Hash Slot)的方式,而非一致性哈希(Consistent Hashing),这是基于多方面的考量。Redis 集群预先分配了 16384 个哈希槽。这种固定数量的哈希槽使得数据分布的管理更加容易。每个节点负责一定数量的哈希槽,例如,在一个有 N 个节点的集群中,每个节点大致负责 16384/N 个哈希槽。相比之下,一致性哈希的数据分布相对更 “自由”,可能导致在节点数量变化时数据迁移的不可预测性增加。
原创
发布博客 2024.09.19 ·
1420 阅读 ·
14 点赞 ·
0 评论 ·
23 收藏

MySQL | 知识 | 揭开 Buffer Pool 的面纱

先来说说 MySQL 的预读机制。程序是有空间局部性的,靠近当前被访问数据的数据,在未来很大概率会被访问到。所以,MySQL 在加载数据页时,会提前把它相邻的数据页一并加载进来,目的是为了减少磁盘 IO。但是可能这些被提前加载进来的数据页,并没有被访问,相当于这个预读是白做了,这个就是预读失效。如果使用简单的 LRU 算法,就会把预读页放到 LRU 链表头部,而当 Buffer Pool空间不够的时候,还需要把末尾的页淘汰掉。
原创
发布博客 2024.09.19 ·
591 阅读 ·
13 点赞 ·
0 评论 ·
13 收藏

MySQL | 知识 | 从底层看清 InnoDB 数据结构

大家都知道 mysql 中数据是存储在物理磁盘上的,而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢,如果每次操作都对磁盘进行频繁读写的话,那么性能一定非常差。为了上述问题,InnoDB 将数据划分为若干页,以页作为磁盘与内存交互的基本单位,一般页的大小为 16KB。这样的话,一次性至少读取 1 页数据到内存中或者将 1 页数据写入磁盘。通过减少内存与磁盘的交互次数,从而提升性能。时间维度:如果一条数据正在在被使用,那么在接下来一段时间内大概率还会再被使用。
原创
发布博客 2024.09.18 ·
1061 阅读 ·
17 点赞 ·
0 评论 ·
27 收藏

Mysql | 知识 | 执行一条查询语句期间发生了什么

执行一条 SQL 查询语句,期间发生了什么?连接器:建立连接,管理连接、校验用户身份;查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;执行 SQL:执行 SQL 共有三个阶段:预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。
原创
发布博客 2024.09.17 ·
1431 阅读 ·
27 点赞 ·
0 评论 ·
17 收藏

Mysql | 知识 | 幻读是如何解决的

在 MySQL 中,虽然 MVCC 是一个非常强大的并发控制机制,但它不能完全解决幻读问题。幻读问题在不同的事务隔离级别下有不同的表现,而在可重复读隔离级别下,Next - Key 锁通过对记录和间隙的锁定,弥补了 MVCC 在防止幻读方面的不足。对于开发人员和数据库管理员来说,深入理解 MVCC 和 Next - Key 锁的工作原理,有助于在设计和管理数据库应用时,正确处理并发事务,确保数据的一致性和准确性。
原创
发布博客 2024.09.17 ·
1497 阅读 ·
33 点赞 ·
0 评论 ·
16 收藏
加载更多