- 博客(15)
- 资源 (9)
- 收藏
- 关注
原创 分布式事务
事务的基本结构开启事务执行业务逻辑提交/回滚事务分布式事务是指在多个系统上进行的事务,目的是保证在一个过程中对这些系统操作的数据的一致性。分布式事务实现的思路:要执行事务的各个系统准备好后,再统一提交或回滚。
2024-03-27 09:19:45 365 1
原创 分布式锁的实现方式
开启不自动提交事务select xx for update //上锁手动提交事务 //释放锁一般不使用这种方式,因为如果数据库异常,数据库释放锁的时间会相对较长,且数据库压力会比较大。当然也可以用其他排他锁,如update语句、insert语句等。
2024-03-25 21:38:07 188 1
原创 mysql索引合并
mysql最终会走那种索引合并策略,是根据查询优化器计算估计后决定的,不是满足以上某种情况就一定会走对应的索引合并方式。注意,没有sort-intersection。因为sort-union从索引获取的记录数少,即使排序,成本也不会太高。而intersection是从索引中获取的记录较多,排序成本太高。
2024-02-23 18:20:28 472 1
原创 数据库的锁
共享锁也叫s锁(share),写法上S锁后,其他事务可读,不可改。排他锁也叫x锁(exclusive),写法insert update delete都是排他锁。上X锁后,其他事务不可读和改。在同一个事务中:用了x再用x会阻塞用了x再用s会阻塞用了s再用x会阻塞用了s再用s不会阻塞。
2024-02-20 17:54:10 351 1
原创 数据库字段类型
tinyint、smallint、mediumint、int、bigint,分别占用字节数1、2、3、4、8。整数类型后面跟的括号里的数字,表示显示长度,跟占用字节数没有关系,如int(5)表示显示5位,如28会显示成00028。所以一般int后面是11,因为int是2的32次方,其范围是-2147483648到2147483647,可以看到最长的(加上负号)是11位十进制数。
2024-02-05 12:37:10 330 1
原创 数据库索引
1. 范围查找效率低2. 排序效率低3. 组合索引时,不能部分匹配如一个B+树的组合索引(a,b,c),用a字段或a,b字段去查,是能命中索引的,但哈希索引会把a,b,c三个字段揉成一个哈希值去查,因此单独的a或a,b是用不了索引的。4. 哈希冲突在严重的时候,影响索引效率:单个数据查询很快。
2024-02-05 12:31:46 1532 1
原创 多线程原理
jvm虚拟机里新建一个“线程”,会让操作系统创建一个对应的线程。而go虚拟机里新建一个“线程”,操作系统不一定会对应创建一个线程,一般来说go虚拟机里的多个“线程”对应一个操作系统的真正的线程,go的这种“假线程”叫做协程,它比线程更轻量。一个核同一时刻只能运行一个线程,但有时候线程可能会等待(如等待网络数据、等待用户输入),为了利用等待时间,cpu会做线程调度,将其他线程先拉进来执行。由于alu执行很快,有些cpu的一个核里会给一个alu配几对pc+register,这个核就能一次运行多个线程,这叫。
2024-01-10 08:55:00 549 1
原创 cpu和代码执行
多线程运行时,同一个缓存行可能被加入多个核(线程)中,这个缓存行里的数据被其中一个核修改了,就需要通知其他核同步数据,这会有耗时。现在的cpu一般是多级缓存(一般有二到三级缓存),缓存读取速度很快,cpu从缓存都就可以了,如果没都到(未命中)才从下一级缓存读,如果缓存都没读到,才从内存读,从内存或者下一级缓存读到的数据会存到上一级缓存里。因为大部分情况下执行的命令和数据都是挨着的,如果一次读一个命令或数据到缓存,就会经常去读,所以cpu会批量读,一次读入64个字节,叫一个缓存行(cache line)。
2024-01-05 08:50:11 385 1
原创 微服务设计原则
服务如果粒度太细,服务间的通信就会更多,降低效率。服务如果太粗,就会有冗余,比如每个服务上都搭建一套鉴权功能。如使用rest、消息队列等进行通信,可以适用于不同技术栈开发的服务之间,发挥各技术栈的优势。1. 隔离,或者单一职责。服务之间的职责不要重合,最好职责单一。可以单独发布,不影响其他服务。此外,如果服务或调用链路比较复杂,需要有链路追踪、日志监控等能力。
2024-01-03 09:17:14 389 1
原创 常见的4种限流算法
如周期内限流100,在周期末尾来了99,下个周期开始来了99,那么这个期间就会有超过100的流量。恒定速率生成令牌,放到桶里,有流量来的时候就去取令牌,所以处理不一定是恒定的,但最大不会消耗超过桶大小的令牌数,因此也是能限流的。优点:短时间内有突发的大流量时,只要令牌桶里的令牌数足够,就能处理这些流量。缺点:短时间内有突发的大流量时,漏桶可能接不住,处理不了这么多流量。令牌桶跟漏桶很像,但令牌桶能更好地处理突发流量,因为它可以缓存令牌。请求放在漏桶里,可以积累,处理请求的,以恒定速度去处理。
2024-01-03 09:05:30 343 1
原创 算法快餐——布隆过滤器
问村长“张飞回来了吗?”,村长一看张家的灯笼亮着,就说“回来了。村长就脱口而出“回来了。”村长看了看张家门口亮着的灯笼,答“回来了。白天全村人都出门去打工了,晚上才回来,回来的时候就把自家门口的灯笼打开。这天傍晚,张飞、张三、刘备回到了自己家,顺手把自己家门口的灯笼打开了。从前有个村,村里有很多户人,每户都是同一个姓,不同户的姓都不一样。”村长看孙家的灯笼没亮,就说“没回来。谁家的灯笼亮着,这家的人就“可能”回来了,村长就有可能答错。谁家的灯笼没亮,这家的人就“肯定”没回来,村长就肯定回答对。
2023-05-06 13:29:22 24
原创 BASE理论
Basically Available 基本可用。允许一定的不可用,如时间上的响应慢,功能上的降级。Eventually consistent 最终一致性。所有数据副本经过一定时间后状态都能达到一致。Soft state 软状态。允许存在不影响可用性的中间状态。BASE是对CAP中CP(一致性)和AP(可用性)的折中。
2023-05-06 08:29:21 21 1
linux0.11版内核,学习用
2012-08-14
Code Reading: The Open Source Perspective
2012-07-26
C++语言的设计和演化
2012-07-26
The C++ Standard Library
2012-07-26
C++ Common Knowledge
2012-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人