05 2019 档案
go中的线程的实现模型-P G M的调度
摘要:线程实现模型 go中线程的实现是依靠 P G M M machine的缩写。一个M代表一个内核线程,或称“工作线程” P processor的缩写。一个P代表执行一个Go代码片段所需要的资源(或称“上下文环境”) G goroutine的缩写。一个G代表一段Go代码片段。前者是对后者的一种封装。 可 阅读全文
posted @ 2019-05-31 08:26 ZhanLi 阅读(899) 评论(0) 推荐(0) 编辑
Golang中的Gosched、Goexit、GOMAXPROCS
摘要:Golang进程权限调度包runtime三大函数Gosched,Goexit,GOMaXPROCS runtime.Gosched(),用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其它等待的任务运行,并在下次某个时候从该位置恢复执行。这就像跑接力赛,A跑了一会碰到代码run 阅读全文
posted @ 2019-05-14 21:47 ZhanLi 阅读(532) 评论(0) 推荐(0) 编辑
微服务-分布式事务解决方案
摘要:微服务的搭建 微服务中我们把业务的能力进行了抽象,实际的业务中我们需要用到不同的服务的能力,并且我们处理的业务需要事务的一致性,避免出现数据的紊乱,那么我们就需要对分布式的微服务进行一致性事务的处理。下面是我自己总结的几种方案。 分布式事务解决的方案 一、(XA)两阶段方案 1、先提交每一个(这个是 阅读全文
posted @ 2019-05-11 23:25 ZhanLi 阅读(756) 评论(0) 推荐(0) 编辑
http的请求头都有那些信息
摘要:每个HTTP请求和响应都会带有相应的头部信息。默认情况下,在发送XHR请求的同时,还会发送下列头部信息: Accept:浏览器能够处理的内容类型 Accept-Charset:浏览器能够显示的字符集 Accept-Encoding:浏览器能够处理的压缩编码 Accept-Language:浏览器当前 阅读全文
posted @ 2019-05-10 08:43 ZhanLi 阅读(7315) 评论(0) 推荐(1) 编辑
redis中的分布式锁
摘要:分布式锁的实现场景 在平时的开发中,对于高并发的开发场景,我们不可避免要加锁进行处理,当然redis中也是不可避免的,下面是我总结出来的几种锁的场景 Redis分布式锁方案一 使用Redis实现分布式锁最简单的方案是在获取锁之前先查询一下以该锁为key对应的value存不存在,如果存在,则说明该锁被 阅读全文
posted @ 2019-05-04 22:01 ZhanLi 阅读(762) 评论(0) 推荐(0) 编辑
redis中的缓存-缓存雪崩和缓存穿透
摘要:缓存雪崩 缓存雪崩是由于原有缓存失效(过期),新缓存未到期间。所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。 1. 碰到这种情况,一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。 2. 加锁排队只是为了减轻数据 阅读全文
posted @ 2019-05-01 17:53 ZhanLi 阅读(587) 评论(0) 推荐(0) 编辑