202109-16 详解MySQL多版本并发控制机制(MVCC)源码 目录一、前言二、MVCC(多版本并发控制机制)2.1、RepeatableRead2.2、ReadCommit2.3、MVCC的优势三、MVCC(实现机制)3.1、select运行栈3.2、read_view的创建过程3.3、行版本可见性3.4、undolog搜索可见版本的过程3.5、read_view创建时机再讨论四、MVCC和锁的同时作用导致的一些现象五、总结一、前言作为一个数据库爱好者,自己动手写过简单的SQL解析器以及存储引擎,但感觉还是不够过瘾。<<事务处理-概念与技术>>诚然讲的非常透彻... 继续阅读 >
202107-08 JavaScript 中如何实现并发控制 目录一、并发控制简介1.1阶段一1.2阶段二1.3阶段三二、并发控制的实现2.1asyncPool的使用2.2asyncPoolES7实现2.3asyncPoolES6实现三、阿宝哥有话说3.1手写Promise.all3.2手写Promise.race四、参考资源一、并发控制简介假设有6个待办任务要执行,而我们希望限制同时执行的任务个数,即最多只有2个任务能同时执行。当正在执行任务列表中的任何1个任务完成后,程序会自动从待办任务列表中获取新的待办任务并... 继续阅读 >
202101-17 JavaScript/TypeScript 实现并发请求控制的示例代码 场景假设有10个请求,但是最大的并发数目是5个,并且要求拿到请求结果,这样就是一个简单的并发请求控制模拟利用setTimeout实行简单模仿一个请求letstartTime=Date.now();consttimeout=(timeout:number,ret:number)=>{return(idx?:any)=>newPromise((resolve)=>{setTimeout(()=>{constcompare=Date.now()-startTime;console.log(`At${Math.floor(compare/100)}00return`,ret);re... 继续阅读 >
202101-03 利用 JavaScript 实现并发控制的示例代码 一、前言 在开发过程中,有时会遇到需要控制任务并发执行数量的需求。 例如一个爬虫程序,可以通过限制其并发任务数量来降低请求频率,从而避免由于请求过于频繁被封禁问题的发生。 接下来,本文介绍如何实现一个并发控制器。二、示例consttask=timeout=>newPromise((resolve)=>setTimeout(()=>{resolve(timeout);},timeout))consttaskList=[1000,3000,200,1300,800... 继续阅读 >
202012-18 Golang 实现分片读取http超大文件流和并发控制 分片读取http超大文件流Golang中的HTTP发送get请求,在获取内容有两种情况。Golang发送httpget请求方式resp,err:=http.Get(sendUrl)iferr!=nil{fmt.Println("出错",err)return}第一种方式是直接全部读取出来,这种方式在小数据量的时候很方便。body变量直接全部接收resp响应内容body,err2:=ioutil.ReadAll(resp.Body)第二种方式,分片获取。首先顶一个切片buf:=make([]byte,4096)容量和大小都是4096个char字符(... 继续阅读 >