- 博客(88)
- 资源 (1)
- 收藏
- 关注
原创 单库单表到分库分表的平滑迁移
自此就完成了数据库架构的升级,在整个迁移过程中,秉承着对业务影响最小的策略理念执行,最终实现数据和功能平滑迁移到新的数据库架构。大幅度提高了系统扩展性和吞吐量,可以有效支撑业务快速发展。
2024-08-22 10:46:36 375
原创 为什么vim是程序员最喜欢的文本编辑器之一
Vim是一个功能强大、高度可定制的文本编辑器,它以其高效的操作、广泛的适用性和强大的社区支持而受到程序员的喜爱。虽然Vim的学习曲线较陡,但投入时间学习Vim无疑是值得的。对于追求效率和灵活性的程序员来说,Vim是一个不可或缺的工具。通过上述使用案例,我们可以看到Vim在实际编程工作中的强大能力和灵活性。
2024-07-05 17:07:10 398
原创 一篇文章讲明白double、float丢失精度的问题
该方法是不可预测的,以0.1为例,你以为你传了一个double类型的0.1,最后会返回一个值为0.1的BigDecimal吗?不会的,原因在于,0.1无法用有限长度的二进制数表示,无法精确地表示为双精度数,最后的结果会是0.100000xxx。该方法是完全可预测的,也就是说你传入一个字符串"0.1",他就会给你返回一个值完全为0,1的BigDecimal,官方也表示,能用这个构造函数就用这个构造函数叭。计算机是通过二进制计算的,如果我们在二进制的视角来看待上面问题,就很容易发现问题了。
2023-10-18 21:28:03 3366
原创 MySQL实战之普通索引和唯一索引,应该怎么选择?
在之前的文章中,我们讲解了索引的基本概念,相信你已经了解了唯一索引和普通索引的区别。今天我们就来讨论一下,在不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。所以,你一定会考虑在id_card字段上建索引。由于身份证号字段比较大,不建议直接把身份证号当做主键,那么现在你有两个选择,要么给id_card字段创建唯一索引,要么创建一个普通索引。
2023-03-09 23:39:22 470 1
原创 MySQL实战之事务到底是隔离的还是不隔离的
我们在MySQL实战之事务隔离:为什么你改了我还看不见讲过事务隔离级别的时候提到过,如果是可重复读隔离级别,事务T启动的时候会创建一个视图read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的仍然跟在启动时看到一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。但是我们在MySQL实战之行锁功过:怎么减少行锁对性能的影响?分享行锁的时候又提到,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。
2023-03-08 01:00:07 310
原创 MySQL实战之行锁功过:怎么减少行锁对性能的影响?
在上一篇博客中,已经介绍了MySQL的全局锁和表级锁,今天我们就讲一下MySQL的行锁MySQL的行锁是在引擎层实现的。并不是所有的引擎都支持行锁,比如MyISAM引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这很影响业务的并发度。InnoDB是支持行锁的,这也是MyISAM被InnoDB代替的重要原因之一。今天就来聊聊InnoDB的行锁,以及如何通过减少锁冲突来提高业务的并发度。行锁是针对数据表中行记录的锁。
2023-03-06 23:32:17 493
原创 MySQL实战之全局锁和表锁:给表加个字段怎么有这么多阻碍
讲完索引,接下来聊一聊MySQL的锁。数据库锁设计的初衷是解决并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理的控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。全局锁、表锁和行锁,今天主要介绍全局锁和表锁,行锁会单独一章介绍。由于锁的设计比较复杂,我们不会讲解锁的具体实现细节,只会介绍碰到锁时的现象和背后的原理。
2023-03-01 23:31:48 354
原创 MySQL实战之深入浅出索引(下)
在上一篇文章中,我们介绍了InnoDB索引的数据结构模型,今天我们再继续聊一下跟MySQL索引有关的概念。在介绍之前,我们先看一个问题:表初始化语句如果我们执行select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是该表的索引数据结构1.在k索引树上找到k=3的记录,取得ID=3002.在到ID索引树查到ID=300对应的行记录3.在k索引树去下一个值k=5,取得ID=500。
2023-02-28 23:45:07 145
原创 MySQL实战之深入浅出索引(上)
提到数据库,大家肯定会想到数据库的索引,很多人都知道索引是为了提高查询效率的,那么今天我就给大家讲一下,什么是索引,索引的数据结构是什么,索引是如何工作的。因为索引的内容比较多,会分为上下两篇进行讲解。
2023-02-24 00:10:34 157
原创 MySQL实战之事务隔离:为什么你改了我还看不见
在我们使用数据库的过程中,不可避免的要和事务打交道,而讲解事务最经典的案例就是转账,例如:你要给朋友小刘转账100元,而且你只有100元。转账要经过一系列的操作,比如查询余额,发起转账,扣除余额,这些操作都必须保持是原子的,要不然可能还没有在扣除余额的时候,完全可以利用这个时间,在给其他人转账,这样输入和输出的金额就对不上了,银行就会混乱了,这时候就可以利用事务来解决该问题。
2023-02-22 23:41:55 244
原创 Mysql实战之日志系统:一条SQL更新语句是如何执行的
上一篇咱们了解了MySQL 的执行过程,其中设计连接器、分析器、优化器、执行器和存储引擎,接下来我将给大家讲解一下在MySQL中一条更新语句是如何执行。我相信大家可能听公司的DBA提起过,可以将数据恢复到半个月内任意时间的状态,是不是感觉很高大上,很厉害呢,下面我就将这个谜底一步一步解开。
2023-02-22 00:25:00 204
原创 Mysql实战之一条SQL查询语句是如何执行的
作为一位开发人员,必然要和mysql打交道,平常肯定也写各种各样的sql语句,下面咱们先来看一个非常简单的sql语句我们看到这个sql,都会说,很简单的一个查询语句,执行结果是查询order表中id=10的所有数据,但是大家知道这个sql在Mysql内部是如何执行的吗?接下来,我就把一一给大家进行讲解,mysql的执行过程。
2023-02-20 23:42:06 256
原创 代码整洁之道-读书笔记之类
将大函数拆分成小函数,就会出现更多的类,而且在拆分函数的过程中,我们又会提前局部变量为实体变量以便于减少函数的入参,慢慢的类的内聚性就会下降,这个时候我们又需要将类拆分成内聚性更高的类,最终我们拆分成很多的短小内聚的类。经过重新组织后,每一个类中的代码都变的简单,大大降低了阅读成本和维护成本,满足了开闭原则,隔离了修改,支持了扩展,再想增加update语句,我们只需创建UpdateSql的类,实现update的功能即可。但是在整洁的系统中,我们对类加以组织,最大程度降低了修改的风险。类的第一原则就是短小。
2022-11-17 11:17:18 295
原创 Effective-java-读书笔记之对于所有对象都通用的方法
本文讲何时以及如何覆盖`Object`的非final的方法. `Comparable.compareTo`方法具有类似特征, 所以也放在本文讨论.
2022-10-10 14:30:02 198
API 一体化协作平台 更先进的 API 设计/开发/测试工具
2023-04-06
百度-牛万鹏-ToB浪潮下的交付新形态.pdf
2022-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人