西瓜味儿的小志
码龄5年
关注
提问 私信
  • 博客:215,212
    社区:58
    215,270
    总访问量
  • 68
    原创
  • 36,755
    排名
  • 720
    粉丝
  • 15
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2020-01-08
博客简介:

Destiny_shine的博客

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    550
    当月
    8
个人成就
  • 获得320次点赞
  • 内容获得28次评论
  • 获得591次收藏
  • 代码片获得257次分享
创作历程
  • 5篇
    2025年
  • 1篇
    2022年
  • 38篇
    2021年
  • 24篇
    2020年
成就勋章
TA的专栏
  • MySQL
    6篇
  • Redis
    6篇
  • MQ
    3篇
  • 后端
    7篇
  • 随笔记
    1篇
  • 算法
    7篇
  • Golang
    13篇
  • 网络
    10篇
  • 前端
    5篇
  • 面经分享
    4篇
  • 领域驱动
    3篇
  • Python爬虫
    3篇
兴趣领域 设置
  • 大数据
    mysql
  • 服务器
    linux
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Mysql的MVCC机制分析

InnoDB 首先检查当前行的 trx_id(即最后一次修改该行的事务 ID),如果这个 trx_id 符合 Read View 的可见性规则,则直接返回该行版本给事务。如果当前行的 trx_id 不符合 Read View 规则,InnoDB 会使用行中的 roll_ptr 字段(回滚指针)指向 undo 日志中的旧版本记录。每开启一个事务都会从数据库中获得一个事务 id,一般会使用全局的单调递增的计数器来生成全局唯一的id,可通过 id 大小来判断事务的时间顺序。此时,查询结果中不会包含这条记录。
原创
发布博客 2025.01.06 ·
676 阅读 ·
20 点赞 ·
0 评论 ·
13 收藏

Mysql事务的特性和隔离级别

上面讨论的事务特性中的隔离性,理论上某个事务对数据进行访问时,其他事务应该排队,当该事务提交后,其他事务才可以继续访问该数据,不过此时并发事务的执行就变成了串行化执行。一组操作要么全部成功,要么全部失败。为解决事务并发带来的上述问题,MySQL 提出事务隔离级别,不同的事务隔离级别可以解决不同的问题。一个事务被视为一个不可分割的最小单元,这个事务中的操作要么都成功,要么都失败,不能只是执行其中的一部分。并发执行的各事务之间不能互相干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的。
原创
发布博客 2025.01.06 ·
814 阅读 ·
20 点赞 ·
0 评论 ·
20 收藏

Redis的大key和热key问题

结合具体业务场景,将 key:value 这一个热 key 复制写入多份,例如 key1:value, key2:value,访问的时候访问多个 key,但 value 是同一个,以此将 qps 分散到不同实例上,降低负载。大 key:结合具体业务场景,将大 key 进一步拆分为小 key,例如一个 string 大 key 拆分成多个 string 重新写入,但拆分后数据更新需要业务侧控制。:使用限流算法(如令牌桶算法)限制对 hot_key 的请求频率,例如每秒最多允许 1000 次请求。
原创
发布博客 2025.01.03 ·
1138 阅读 ·
21 点赞 ·
0 评论 ·
8 收藏

Kafka为什么快(高性能的原因)

另外还有个关键操作,就是 kafka 在写数据的时候是以磁盘顺序写的方式来进行落盘的,即将数据追加到文件的末尾,而不是在文件的随机位置来修改数据,对于普通机械磁盘,如果是随机写的话,涉及到磁盘寻址的问题,导致性能极低,但是如果只是按照顺序的方式追加文件末尾的话,这种磁盘顺序写的性能基本可以跟写内存的性能相差无几。每个 segment 文件都是一个独立的文件,它包含一定数量的消息。Kafka内部,消息都是以“批”为单位处理的,Kafka的客户端SDK在实现消息发送逻辑的时候,采用了异步批量发送的机制。
原创
发布博客 2025.01.03 ·
1289 阅读 ·
21 点赞 ·
0 评论 ·
10 收藏

Kafka的rebalance机制

例如:同一消费者组中,有 3 个消费者 C0、C1 和 C2,他们共订阅了 3 个主题:t0、t1 和 t2,这 3 个主题分别有 1、2、3 个分区(即:t0有1个分区(p0),t1有 2 个分区(p0、p1),t2 有 3 个分区(p0、p1、p2)),即整个消费者所订阅的所有分区可以标识为 t0p0、t1p0、t1p1、t2p0、t2p1、t2p2。举例,有三个消费者 C0,C1,C2。每个主题各有两个分区, t0p0,t0p1,t1p0,t1p1,t2p0,t2p1,t3p0,t3p1。
原创
发布博客 2025.01.02 ·
1149 阅读 ·
13 点赞 ·
0 评论 ·
11 收藏

Mysql面试之索引

一、啥是索引一种高效获取数据的数据结构。通俗的说,数据库索引像一本书的目录,能加快数据的查询速度。一般来说索引本身很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。通常所说的索引,包括聚集索引、组合索引、唯一索引等等,默认都是使用 B+ 树结构组织的。 二、索引有啥优点和缺点优点:提高数据检索的效率,降低数据库的 IO 成本。通过索引列对数据进行排序,降低了数据排序成本,降低 CPU 消耗。(1)被
原创
发布博客 2022.01.14 ·
5158 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

Mysql面试之三大log

快,开篇大伙先思考一个问题,MySQL 是怎么保证数据不丢失的呢?其实要保证数据不丢失,说白了要具有下面两种能力:(1)能恢复到任何时间点的状态;(2)能保证 MySQL 在任何时间段突然宕机重启,已提交的数据不会丢失,未提交完整的数据也会自动回滚;这不就引出来今天要聊的主题了么,实现第一点需要用 bin log,实现第二点需要用 redo log 和 undo log。 了解三大log之前,我们先看一下Mysql数据更新的流程:上面这张图包含了 redo log、bin log、
原创
发布博客 2021.12.14 ·
12499 阅读 ·
7 点赞 ·
2 评论 ·
25 收藏

剑指offer栈、队列、位运算题目汇总(面试必备)

剑指 offer 栈、队列题目汇总(C++版) 1、用两个栈实现队列用两个栈实现一个队列。队列的声明如下,实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 返回 -1 )思路:我们知道队列特点是先进先出,而栈的特点是先进后出。因此我们使用栈1来存储数据,栈2来模拟队列弹出数据。栈2如果为空,就需要把栈1的数据全都 push 过来,否则如果栈2不为空,取出栈顶元素即可。
原创
发布博客 2021.11.18 ·
4919 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

剑指offer数组题目汇总(面试必备)

剑指 offer 数组题目汇总(C++版) 1、数组中重复的数字一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。找出数组中任意一个重复的数字。思路1:先排序,在遍历。 时间复杂度:O(nlog(n)) ,空间复杂度:O(1)思路2:遍历数组时查询哈希表是否已有这个数,有就返回,没有就添加。时间复杂度:O(n), 空间复杂度:O(n)思路1和2比较简单,代码就不贴了。主要说一下下面的方
原创
发布博客 2021.11.05 ·
457 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

二分查找算法模板(太强了吧)

二分查找算法模板 模板1当将区间 [l, r] 划分成 [l, mid] 和 [mid + 1, r] 时,其更新操作是 r = mid 或 l = mid + 1,计算 mid 时不需要加1,即 mid = (l + r)/2。C++代码模板:int bsearch_1(int l, int r){ while (l < r) { int mid = (l + r) / 2; if (check(mid)) r = mid;
原创
发布博客 2021.10.19 ·
287 阅读 ·
3 点赞 ·
0 评论 ·
2 收藏

剑指offer二叉树题目汇总(面试必备)

1、二叉树的镜像输入一个二叉树,该函数输出它的镜像。举例:思路1:递归对于样例来说,先改变根结点8的左指针指向的值,左边指向的值换到右边,右边指向的值换到左边。接下来,递归处理,将左子树的根结点作为新的 root,进行上面相同的操作。右子树同理。时间复杂度:O(n) 空间复杂度:O(n)TreeNode* Mirror(TreeNode* pRoot) { if(!pRoot) return pRoot; //特判:如果pRoot为空,返回空 swap(pRoot
原创
发布博客 2021.10.18 ·
271 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

正向代理、反向代理和负载均衡

要理解正向和反向代理,简单说就是要整明白到底代理服务器代理了谁后者说代理服务器为谁服务?别急,一点点往下看。 一、正向代理1、啥是正向代理就是一个在客户端和目标服务器之间的服务器(称为代理服务器),帮助客户端从目标服务器获取内容。此时目标服务器是不知道访问自己的是真实的客户端还是客户端找的代理。比如要访问国外网站,直接访问不通,那么就可以找一个代理服务器为我们服务,客户端发请求到代理服务器,代理服务器把请求转发到目标服务器让后把结果拿回来返回给客户端。我靠,原来正向代理说白了就是
原创
发布博客 2021.10.08 ·
4270 阅读 ·
43 点赞 ·
4 评论 ·
76 收藏

Mysql面试之体系结构简介

一图降十会,先上结构图瞅瞅 下面从上到下依次介绍:自顶向下一共有四层,分别是网络连接层,服务层(核心层),存储引擎层,系统文件层。1、网络连接层:主要负责连接管理、授权认证、安全等等。每个客户端连接都对应着服务器上的一个线程。服务器上维护了一个线程池,避免为每个连接都对线程进行创建和销毁。当客户端连接到 MySQL 服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过 SSL 证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。这一层并不是 MyS
原创
发布博客 2021.09.30 ·
239 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Mysql面试之主从复制(同步)

一、为什么需要 Mysql 主从复制1、在业务复杂的系统中,有这样一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就会影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样即使主库出现了锁表,通过读从库也可以保证业务的正常运作。2、做数据的热备冷备:读写操作均不可进行温备:读操作可执行;但写操作不可执行热备:读写操作均可执行3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。 
原创
发布博客 2021.09.30 ·
665 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Redis面试之过期策略及内存淘汰机制

Redis过期策略主要有两个:定期删除+惰性删除1、定期删除Redis 将每个设置了过期时间的 key 放到独立的字典中,默认每 100ms 扫描一次,大致流程为:随机选择 20 个 key删除 20 个 key 中过期的 key判断过期的 key 比例,如果超过总过期 key 数量的 1/4,再从步骤 1开始执行继续删除知道满足条件那么问题来了,定期删除策略中为什么只随机扫描一些 key 而不是扫描所有的 key?Redis 是单线程啊,设想一下,如果 key 都有过期时间,全部扫一遍
原创
发布博客 2021.09.29 ·
193 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis面试之单机、主从、哨兵、集群模式

一、单机模式就是安装一个 redis 供业务方调用,没什么好说的,适用于对高可用要求低的场景。优点:部署简单,成本低,不需要同步数据缺点:1、可靠性差,宕机数据可能丢失2、性能受限于CPU的处理能力,容量不能水平扩展 二、主从同步(复制)不是单机了,至少得有两个redis服务器,将一台 redis 服务器当做主节点(master),其他 redis 服务器作为主节点的从节点(slave),可以将 master 的数据复制到其他 slave 节点(数据的复制是单向的,只能由主节点到
原创
发布博客 2021.09.29 ·
346 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

Redis面试之持久化机制(RDB、AOF)

所谓知其然知其所以然,开篇咱们先考虑一个问题,那就是Redis为什么需要将数据持久化呢,快,先思考一分钟!好了,大家都知道 redis 将数据存储在内存里,但是不怕一万就怕万一,万一哪天机器咔嚓一下宕机了,那么后果可能很操蛋,数据可能会全部丢失,为了避免这种糟糕的情况就需要持久化机制来保证数据不会因为某些故障而丢失。下面进入正题Redis 的持久化机制主要有两种:一是RDB快照,二是AOF日志。一、RDB快照这种机制是将内存中数据以快照的方式写入到二进制文件里,默认的文件是 dump.rdb。
原创
发布博客 2021.09.23 ·
419 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Redis面试之杂七杂八

1、redis五种数据类型String(字符串)介绍:redis 最基本的类型,可以包含任何数据,比如jpg图片或者序列化的对象,规定字符串的长度不得超过512MB,此类型和memcache相似,作为常规的key-value缓存应用。。Redis的字符串有两种存储方式,在长度特别短时,使用embstr形势存储,而长度超过44字节时候,使用raw形势存储。场景:访问量统计:例如微博数、粉丝数等Hash(哈希)介绍:hash 是一个键值(key=>value)对集合,是一个 string 类
原创
发布博客 2021.09.22 ·
240 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

缓存穿透、缓存击穿和缓存雪崩

1、缓存穿透缓存和数据库中都没有的数据,但是用户不断发起请求,如发起为 id 为“-1”的数据或id为特别大不存在的数据。此时所有的请求都会打到数据库上,导致数据库压力过大。解决方案:(1)接口层增加校验,如用户鉴权校验,id做基础校验,id<=0 的直接拦截(2)如果从缓存和数据库中都没有取到数据,也可以将 key-value 对写为 key-null,然后将缓存有效时间设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个 id 暴力攻击(3)布隆过滤器
原创
发布博客 2021.09.16 ·
339 阅读 ·
3 点赞 ·
0 评论 ·
10 收藏

剑指offer链表题目汇总(面试必备)

1、反转链表输入一个链表,反转链表后,输出新链表的表头。比较简单,直接上代码。时间复杂度:O(n) 空间复杂度:O(1)ListNode* ReverseList(ListNode* pHead) { if(!pHead) return pHead; ListNode* pre = nullptr; while(pHead) { ListNode* temp = pHead->next;
原创
发布博客 2021.09.13 ·
370 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多