自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 mysql问题

RR级别下先快照读,更新数据,再快照读,就可能会出现幻读的问题(我觉得这不一定算幻读)RR通过MVCC解决快照读的不可重复读和幻读问题,(中间没有更新过其他数据情况下)RR级别通过间隙锁解决当前读的幻读问题(rr级别一直用当前读不会存在幻读问题)不可重复读,针对是更新和删除,可以基于行加锁.幻读是新增,RR级别需要。4)尽量控制事务的大小,减少一次事务锁定的资源数量,缩短锁定资源的时间。3)尽量减少查询条件的范围,尽量避免间隙锁或缩小间隙锁的范围。行锁主要加在索引上,如果对非索引的字段设置条件进行更新,

2023-03-31 13:57:45 46

转载 RSYNC 的核心算法

这样,最终,在同步源这端,我们的rsync算法可能会得到下面这个样子的一个数据数组,图中,红色块表示在目标端已匹配上,不用传输(注:我专门在其中显示了两块chunk #5,相信你会懂的),而白色的地方就是需要传输的内容(注意:这些白色的块是不定长的),这样,同步源这端把这个数组(白色的就是实际内容,红色的就放一个标号)压缩传到目的端,在目的端的rsync会根据这个表重新生成文件,这样,同步完成。我们可以看到,其中,我们把12345最左边第一位去掉,然后,再加上最右边的一位。这就出现了rsync的算法。

2023-03-30 15:09:16 163

原创 限流算法的使用场景

令牌桶应用到业务处理的场景,就要求即使有突发流量来了,系统自己或者下游系统要真的能够处理的过来.令牌桶的保护主要是丢弃请求更适合“突发流量”,是指秒杀、抢购、整点打卡签到、微博热点事件这种业务高并发场景。漏桶限制的是常量流出速率(即流出速率是一个固定常量值,比如都是1的速率流出,而不能一次是1,下次又是2),从而平滑突发流入速率;令牌桶限制的是平均流入速率(允许突发请求,只要有令牌就可以处理,支持一次拿3个令牌,4个令牌),并允许一定程度突发流量;令牌桶允许一定程度的突发,而漏桶主要目的是平滑流入速率;

2023-03-24 15:25:35 112

原创 分布式事务

jta+atomikos实现事物:原子性、一致性、隔离性、持续性。

2023-03-15 13:58:37 47 1

原创 Map原理

(1)newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。corePoolSize:核心线程池的大小,如果核心线程池有空闲位置,这是新的任务就会被核心线程池新建一个线程执行,执行完毕后不会销毁线程,线程会进入缓存队列等待再次被运行。统计size的时候使用乐观锁,先统计每个Segment之和,如果统计结束Segment的修改次数累加起来有修改,则重新统计,达到一定次数,全部Segment锁住。不然循环修改,使用的乐观锁机制。

2023-03-15 13:56:21 57

转载 MySQL InnoDB MVCC 机制的原理及实现

当事务 A 未提交时,事务 B 进行查询,假设事务 B 的事务 ID 为 300,此时生成 ReadView 的 m_ids 为 [200,300],而最新版本的 trx_id 为 200,处于 m_ids 中,则该版本记录不可被访问,查询版本链得到上一条记录的 trx_id 为 100,小于 m_ids 的最小值 200,因此可以被访问,此时事务 B 就查询到值 10 而非 20。但是注意,如果事务 A 的第一条 SELECT 语句查询时,事务 B 还未提交,那么事务 A 也查不到事务 B 的修改。

2023-03-15 11:01:22 81

原创 mysql锁以及死锁分析

RC与RR的区别就是RR加锁时加间隙锁,不会出现幻读,以及RC没有快照读,所有读都是读取的最新提交数据。不可重复读 事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。针对当前读,RR隔离级别保证对读取到的记录加锁 (记录锁),同时保证对读取的范围加锁,新的满足查询条件的记录不能够插入 (间隙锁),不存在幻读现象。不区别快照读与当前读,所有的读操作均为当前读,读加读锁 (S锁),写加写锁 (X锁)。此隔离级别,不会使用,忽略。

2023-03-15 10:56:02 104

原创 redis分布式锁实现

redis 加锁String result = jedis.set(key, requestId, "NX", "PX", secondsToLock);if ("OK".equals(result)) {return true;}解锁String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";Object result = jedis.

2023-03-15 10:55:05 66

转载 HotRing: A Hotspot-Aware In-Memory Key-Value Store

HotRing: A Hotspot-Aware In-Memory Key-Value Store

2022-11-24 14:40:33 195

原创 操作系统零拷贝

以右侧为浏览器,左侧为httpd服务器为例。当httpd服务收到浏览器发送的文件的请求时,通过DMA(直接内存访问,不需要cpu)技术从存储设备把文件中加载到内核缓冲区中,然后负责处理请求的进程从内核缓存区复制到进程自己的缓冲区,当数据修改完成后,将数据复制到TCP协议栈的内核缓冲区sendbuffer中,最后将sendbuffer缓冲区的数据交给网卡并通过网卡传输出去。当httpd服务收到浏览器发送的index.html文件的请求时,负责处理请求的httpd子进程/线程总是会先发起系统...

2021-05-23 21:19:17 108 2

转载 Java多线程系列--“基础篇”05之 线程等待与唤醒

本章,会对线程等待/唤醒方法进行介绍。涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long timeout)和notify()4. wait() 和 notifyAll()5. 为什么notify(), wait()等函数定义在Object中,而不是Thread中转载请注明出处:http://w...

2019-03-20 11:21:06 98

转载 排行榜

有人的地方就有对比,游戏中自然也少不了排行榜。当前项目设计目标是,每个服务器玩家数量为百万左右。每个玩家都有战力、经验等属性,战力最大值在50万以内。现在期望能有战力排行榜,有以下几点需求:全部角色参与排行,能实时知道某个角色的排名 排行榜显示前100名玩家详情排名规则是战力越高排名越前,战力相同则比较经验,经验再相同则比较创建时间。排行榜算法并不少见,这篇文章介绍的就不错。根...

2019-01-18 15:27:44 237

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除