LightOf_社区达人页

个人头像照片
LightOf
已加入开发者社区1355
勋章 更多
个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
江湖侠士
江湖侠士
成就
已发布507篇文章
36条评论
已回答0个问题
0条评论
已发布0个视频
github地址
我关注的人 更多
技术能力
兴趣领域
  • Go
  • C++
  • 开发框架
  • 设计模式
  • 微服务
  • 中间件
擅长领域
技术认证

暂时未有相关云产品技术能力~

暂无个人介绍
暂无精选文章
暂无更多信息

2024年04月

  • 04.24 20:47:36
    发表了文章 2024-04-24 20:47:36

    淘汰算法

    【4月更文挑战第21天】这篇内容介绍了两种主流的淘汰算法:LRU(Least Recently Used)和LFU(Least Frequently Used)。LRU基于最近最少使用原则,当缓存满时,淘汰最近最久未使用的键。实现上通常使用链表和Java的LinkedHashMap。而LFU根据访问次数淘汰最不常使用的对象,可以按访问频率排序并选择淘汰。LFU的变种可能关注一定时间窗口内的访问次数,实现上更复杂。
  • 04.23 21:26:05
    发表了文章 2024-04-23 21:26:05

    缓存命中率和过期机制的一般思路

    【4月更文挑战第20天】缓存命中率是评估缓存效果的关键,目标是达到90%以上,但某些频繁的小请求场景可能无法实现。过期机制可采用定时删除(精确但开销大)、延迟队列(精确但有队列开销)、懒惰删除(简单但时间不精确)或定期删除(简单但性能损耗不可控)。
  • 04.22 21:01:12
    发表了文章 2024-04-22 21:01:12

    【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-02 死锁和死锁检测

    【4月更文挑战第19天】在高并发环境下,死锁发生在多个线程间循环等待资源时,导致无限期等待。MySQL中,死锁可通过`innodb_lock_wait_timeout`参数设置超时或`innodb_deadlock_detect`开启死锁检测来解决。默认的50s超时可能不适用于在线服务,而频繁检测会消耗大量CPU。应对热点行更新引发的性能问题,可以暂时关闭死锁检测(风险是产生大量超时),控制并发度,或通过分散记录减少锁冲突,例如将数据分拆到多行以降低死锁概率。
  • 04.21 10:20:44
    发表了文章 2024-04-21 10:20:44

    【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-01

    【4月更文挑战第18天】MySQL的InnoDB引擎支持行锁,而MyISAM只支持表锁。行锁在事务开始时添加,事务结束时释放,遵循两阶段锁协议。为减少锁冲突影响并发,应将可能导致最大冲突的锁操作放在事务最后。例如,在电影票交易中,应将更新影院账户余额的操作安排在事务末尾,以缩短锁住关键行的时间,提高系统并发性能。
  • 04.20 21:27:44
    发表了文章 2024-04-20 21:27:44

    【MySQL实战笔记】 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?-01

    【4月更文挑战第17天】MySQL的锁分为全局锁、表级锁和行锁。全局锁用于全库备份,可能导致业务暂停或主从延迟。不加锁备份会导致逻辑不一致。推荐使用`FTWRL`而非`readonly=true`因后者可能影响其他逻辑且异常处理不同。表级锁如`lock tables`限制读写并限定操作对象,常用于并发控制。元数据锁(MDL)在访问表时自动加锁,确保读写正确性。
  • 04.19 21:35:39
    发表了文章 2024-04-19 21:35:39

    【MySQL实战笔记】 05 | 深入浅出索引(下)-02

    【4月更文挑战第16天】B+树索引利用最左前缀原则加速检索,即使只是部分字段匹配也能生效。联合索引[name-age]可按最左字段"张"找到记录,并遍历获取结果。优化索引顺序能减少维护成本,通常先考虑复用性。若需独立查询部分字段,则需权衡空间占用,如(name,age)与(age)。索引下推自MySQL5.6起,允许在索引遍历时预过滤条件,减少回表次数,提高效率。
  • 04.18 22:40:09
    发表了文章 2024-04-18 22:40:09

    【后端面经】【数据库与MySQL】12|数据库锁:明明有行锁,怎么突然就加了表锁?

    【4月更文挑战第15天】在MySQL的InnoDB引擎中,锁通过索引实现,主要锁定叶子节点。查询使用哪个索引,就锁哪个;无索引时锁全表。若查询值不存在,InnoDB会构造临键锁阻止插入。锁在事务结束(Rollback或Commit)时释放。乐观锁在尝试更新时检查数据变化,适合读多写少场景,悲观锁一开始就加锁,适用于写多读少。InnoDB支持行锁和表锁,行锁依赖索引。共享锁允许多个线程加同类型锁,排它锁则独占。
  • 04.17 21:43:49
    发表了文章 2024-04-17 21:43:49

    【MySQL实战笔记】 05 | 深入浅出索引(下)-01

    【4月更文挑战第14天】创建表T的SQL和其索引结构被展示,分析了查询`select * from T where k between 3 and 5`的执行流程,涉及两次回表操作。介绍覆盖索引的概念,指出当查询列包含在索引中时,可以避免回表,提高性能。在市民信息表`tuser`上,是否需要创建身份证号和名字的联合索引取决于查询需求,若高频查询涉及身份证号和姓名,该联合索引是有益的。
  • 04.16 23:24:00
    发表了文章 2024-04-16 23:24:00

    【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?-02

    【4月更文挑战第13天】该文介绍了几个数据库查询优化技巧。首先,创建覆盖索引如<A,B,C>能加速`select A,B,C from student where A=? and B=? and C=?`的执行。其次,为常用于排序的列建立索引,如在`id,update_time`上建索引,可避免数据排序,显著提高查询速度。优化`count(*)`可通过预估值或使用Redis记录总数,但需注意数据一致性问题。使用索引提示如FORCE INDEX可强制使用特定索引,但应谨慎。将`having`的非聚合条件移到`where`里可提升效率。最后,处理深度分页时
  • 04.15 08:32:43
    发表了文章 2024-04-15 08:32:43

    【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?

    【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
  • 04.14 09:31:54
    发表了文章 2024-04-14 09:31:54

    【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02

    【4月更文挑战第11天】数据库索引使用规则:`AND`用`OR`不用,正用反不用,范围中断。索引带来空间和内存代价,包括额外磁盘空间、内存占用和数据修改时的维护成本。面试中可能涉及B+树、聚簇索引、覆盖索引等知识点。MySQL采用B+树,因其利于范围查询和内存效率。数据库不使用索引可能因`!=`、`LIKE`、字段区分度低、特殊表达式或全表扫描更快。索引与NULL值处理在不同数据库中有差异,MySQL允许NULL在索引中的使用。
  • 04.13 20:17:21
    发表了文章 2024-04-13 20:17:21

    【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-01

    【4月更文挑战第10天】B+树是一种多叉树,用于数据库索引,其特征包括叶子节点存储数据并用链表串联,非叶子节点仅存关键字。由于较低的高度和链表结构,B+树提供高效查询和范围查询。索引分类有聚簇(叶子节点存储数据)和非聚簇,以及覆盖、唯一、前缀、联合、全文和哈希索引。聚簇索引如主键索引,非聚簇索引叶子节点存储主键。覆盖索引可避免回表,提高性能。查询遵循最左匹配原则,优化SQL应选取所需列并考虑常见查询。
  • 04.12 22:13:55
    发表了文章 2024-04-12 22:13:55

    【MySQL实战笔记】 04 | 深入浅出索引(上)-02

    【4月更文挑战第9天】InnoDB数据库使用B+树作为索引模型,其中主键索引的叶子节点存储完整行数据,非主键索引则存储主键值。主键查询只需搜索一棵树,而非主键查询需两次搜索,因此推荐使用主键查询以提高效率。在插入新值时,B+树需要维护有序性,可能导致数据页分裂影响性能。自增主键在插入时可避免数据挪动和页分裂,且占用存储空间小,通常更为理想。然而,如果场景仅需唯一索引,可直接设为主键以减少查询步骤。
  • 04.11 22:40:25
    发表了文章 2024-04-11 22:40:25

    【MySQL实战笔记】 04 | 深入浅出索引(上)-01

    【4月更文挑战第8天】这篇文章除了介绍索引的作用和提高查询效率的原理,还探讨了三种常见的数据结构:哈希表、有序数组和搜索树。哈希表适合等值查询,但不支持范围查询;有序数组利用二分查找实现快速等值查询,但更新成本高;二叉搜索树保持平衡时查询高效,但磁盘存储时效率低。文章指出,由于磁盘读取延迟,实际数据库索引设计需考虑减少磁盘访问次数。
  • 04.10 22:29:10
    发表了文章 2024-04-10 22:29:10

    【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-02

    【4月更文挑战第7天】数据库通过视图实现事务隔离,不同隔离级别如读未提交、读已提交、可重复读和串行化采用不同策略。以可重复读为例,MySQL使用多版本并发控制(MVCC),每个事务有其独立的视图。回滚日志在无更早视图时被删除。长事务可能导致大量存储占用,应避免。事务启动可显式用`begin`或设置`autocommit=0`,但后者可能意外开启长事务。建议使用`autocommit=1`并显式管理事务,若需减少交互,可使用`commit work and chain`。
  • 04.09 22:33:24
    发表了文章 2024-04-09 22:33:24

    【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-01

    【4月更文挑战第6天】MySQL事务的隔离性确保数据操作的完整性和一致性,ACID原则包括原子性、一致性、隔离性和持久性。事务隔离级别有四种:读未提交、读提交、可重复读和串行化,分别解决并发问题如脏读、不可重复读和幻读。不同隔离级别在效率和安全性间权衡,例如读未提交允许未提交变更可见,而串行化通过锁保证安全但可能降低效率。在不同隔离级别下,事务看到的数据状态会有所变化,例如在可重复读级别,事务始终看到初始数据,而在串行化级别,事务会等待其他事务完成再继续,避免数据冲突。
  • 04.08 20:55:09
    发表了文章 2024-04-08 20:55:09

    【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2

    【4月更文挑战第5天】两阶段提交是为确保`redo log`和`binlog`逻辑一致,避免数据不一致。若先写`redo log`, crash后数据可能丢失,导致恢复后状态错误;若先写`binlog`,crash则可能导致重复事务,影响数据库一致性。一天一备相较于一周一备,能缩短“最长恢复时间”,但需权衡额外的存储成本。
  • 04.07 21:45:09
    发表了文章 2024-04-07 21:45:09

    【MySQL实战笔记】02.一条SQL更新语句是如何执行的-1

    【4月更文挑战第4天】SQL更新语句执行涉及查询和日志模块,主要为`redo log`和`binlog`。`redo log`先写日志再写磁盘,保证`crash-safe`;`binlog`记录逻辑日志,支持所有引擎,且追加写入。执行过程分为执行器查找数据、更新内存和`redo log`(prepare状态)、写入`binlog`、提交事务(`redo log`转commit)。两阶段提交确保日志逻辑一致,支持数据库恢复至任意时间点。
  • 04.06 20:48:11
    发表了文章 2024-04-06 20:48:11

    【MySQL实战笔记】01.一条SQL查询语句是如何执行的?

    【4月更文挑战第3天】MySQL执行SQL的流程包括连接器、查询缓存、分析器、优化器和执行器。连接器负责建立连接、权限验证,查询缓存(MySQL 8.0已移除)存储查询结果,分析器解析SQL确保语法正确,优化器选择最佳索引和查询路径,执行器执行查询并管理权限。连接器使用长连接可能导致内存问题,可定期断开或使用`mysql_reset_connection`。注意,更新操作会导致查询缓存失效。
  • 04.05 21:11:31
    发表了文章 2024-04-05 21:11:31

    评论功能里数据库的设计

    【4月更文挑战第2天】本文探讨了评论系统的树形结构设计,提出了四种方法:邻接表、分段式path、Nested Set和Closure Table。针对评论业务功能,如加载评论页和查看回复,优先考虑邻接表和分段式path。采用邻接表思路,设计了评论表结构,包括Uid、Biz、BizID、RootID、PID、Content、索引和级联删除规则。同时提到了索引设计,如Uid、Biz+BizID、PID和Ctime/Utime,以优化查询性能。
  • 04.04 22:39:52
    发表了文章 2024-04-04 22:39:52

    第 284 场周赛(C++ | 枚举 | 分类讨论 | 最短路 | 建反图)

    【4月更文挑战第1天】- [LeetCode 6031](https://leetcode-cn.com/problems/find-all-k-distant-indices-in-an-array/):给定数组 `nums`、键值 `key` 和距离 `k`,找到所有与键值相等且与任意下标距离不超过 `k` 的下标,返回升序排序的列表。找到最小权重。

2024年03月

2024年02月

  • 02.29 22:13:19
    发表了文章 2024-02-29 22:13:19

    Golang拼接字符串性能对比

    【2月更文挑战第8天】Golang拼接字符串性能对比
  • 02.28 21:26:20
    发表了文章 2024-02-28 21:26:20

    ElasticSearch 入门

    【2月更文挑战第7天】ElasticSearch 入门 简介 ElasticSearch 的基本概念 ElasticSearch 的查询流程 ElasticSearch 的更新流程
  • 02.27 21:30:59
    发表了文章 2024-02-27 21:30:59

    高效Go编程之格式化+代码注释+命名+分号+控制结构

    【2月更文挑战第6天】高效Go编程之格式化+代码注释+命名+分号+控制结构
  • 02.26 21:11:33
    发表了文章 2024-02-26 21:11:33

    Go语言面试题1

    【2月更文挑战第5天】Go语言面试题15个问题
  • 02.25 22:44:55
    发表了文章 2024-02-25 22:44:55

    Golang高性能内存缓存库BigCache设计与分析

    【2月更文挑战第4天】分析Golang高性能内存缓存库BigCache设计
  • 02.24 20:14:31
    发表了文章 2024-02-24 20:14:31

    【设计模式】创建型模式之单例模式(Golang实现)

    【2月更文挑战第3天】一个类只允许创建一个对象或实例,而且自行实例化并向整个系统提供该实例,这个类就是一个单例类,它提供全局访问的方法。这种设计模式叫单例设计模式,简称单例模式。
  • 02.23 22:54:48
    发表了文章 2024-02-23 22:54:48

    分布式任务调度的几种实现

    【2月更文挑战第2天】本文主要介绍了分布式任务调度的几种实现,使用Redis实现分布式锁方案,使用MySQL实现任务调度,开源框架 XXL-JOB等方案,最后需要考虑到负载均衡的问题。
  • 02.22 22:22:27
    发表了文章 2024-02-22 22:22:27

    【小小思考】Redis实现去重任务队列

    【2月更文挑战第1天】思考一下如何用Redis实现去重的任务队列,主要有List 、List + Set/Hash/Bloom Filter、ZSet、Lua和开源库等方式。

2022年12月

  • 发表了文章 2024-04-24

    淘汰算法

  • 发表了文章 2024-04-23

    缓存命中率和过期机制的一般思路

  • 发表了文章 2024-04-22

    【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-02 死锁和死锁检测

  • 发表了文章 2024-04-21

    【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-01

  • 发表了文章 2024-04-20

    【MySQL实战笔记】 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?-01

  • 发表了文章 2024-04-19

    【MySQL实战笔记】 05 | 深入浅出索引(下)-02

  • 发表了文章 2024-04-18

    【后端面经】【数据库与MySQL】12|数据库锁:明明有行锁,怎么突然就加了表锁?

  • 发表了文章 2024-04-17

    【MySQL实战笔记】 05 | 深入浅出索引(下)-01

  • 发表了文章 2024-04-16

    【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?-02

  • 发表了文章 2024-04-15

    【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?

  • 发表了文章 2024-04-14

    【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02

  • 发表了文章 2024-04-13

    【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-01

  • 发表了文章 2024-04-12

    【MySQL实战笔记】 04 | 深入浅出索引(上)-02

  • 发表了文章 2024-04-11

    【MySQL实战笔记】 04 | 深入浅出索引(上)-01

  • 发表了文章 2024-04-10

    【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-02

  • 发表了文章 2024-04-09

    【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-01

  • 发表了文章 2024-04-08

    【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2

  • 发表了文章 2024-04-07

    【MySQL实战笔记】02.一条SQL更新语句是如何执行的-1

  • 发表了文章 2024-04-06

    【MySQL实战笔记】01.一条SQL查询语句是如何执行的?

  • 发表了文章 2024-04-05

    评论功能里数据库的设计

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息