go
文章平均质量分 86
hg_zhh0427
一个普通人
展开
-
docker-server(moby)源码窥探
docker 服务端的代码,已经被单独划分为一个仓库:moby。此文将分析dockerd在启动过程中的重要步骤。为了节省篇幅,突出显示重要部分,在源码的截图中将以…代替次要的逻辑,仅保留重要的信息。原创 2022-11-16 00:32:30 · 608 阅读 · 0 评论 -
docker-cli源码窥探
以 docker ps -a 为例,解析docker-cli的执行过程原创 2022-11-10 21:21:21 · 791 阅读 · 0 评论 -
高性能本地缓存Ristretto(三)——淘汰策略
之前提到过,缓存即 存储 和 淘汰策略。一个好的淘汰策略,对于提升命中率起着至关重要的作用。而ristretto采用了一种将SampledLFU 与 TinyLFU相结合的策略。原创 2022-09-22 00:21:09 · 390 阅读 · 0 评论 -
高性能本地缓存Ristretto(二)——过期策略
ristretto提供了SetWithTTL()方法,支持创建key的同时,并设置一个过期时间。ristretto 利用嵌套的map结构,并结合巧妙的存储方式,实现了对每一个key的过期时间的管理。并能在时间到期后,尽快的删除过期的key,以节省资源开销。原创 2022-09-21 01:08:44 · 613 阅读 · 0 评论 -
高性能本地缓存Ristretto(一)——存储策略
本文主要结合部分代码分析Ristretto的存储策略及实现方式。Ristretto是Dgraph基于golang实现的一个高性能的本地缓存库。特点是高命中率,高吞吐量,可自定义存储成本,支持一些自定义回调函数,并提供了较多的统计信息。原创 2022-09-20 00:28:59 · 1671 阅读 · 3 评论 -
nsq连接池的实践
最近的项目,需要用到nsq作为消息队列,使用的go-nsq插件,但是该插件并没有提供连接池。因此,需要借助其他工具,实现该需求。一开始想到了使用sync.pool ,但是这玩意并不是适合存储连接资源,经过一番搜索,发现这篇文章:golang通用自定义连接池的实现 ,作者提得到他写的插件也适用于nsq连接池,同时给出了例子,但是他给的例子好像是不完整的。而且他在代码仓库中 给出的例子,并不是nsq相关的。基于以上情况,我借助该工具,结合go-nsq,实现了一个简单的nsq连接池demo(严格地说此实现不算原创 2022-04-04 21:28:46 · 438 阅读 · 0 评论 -
在gin框架中实现csrf防护的解决方案(gin+gorilla/csrf)
背景由于实际需求,需要将原来基于flask框架的web模块,使用gin框架重构,并且并加上CSRF防护。为此我做了一些调研,并最终利用gorilla/csrf 为基于gin框架的web模块添加csrf防护。前期调研gin框架因为其速度快的特点被广泛使用,同时该框架功能也及其简单。gin不像beego提供了各种丰富的组件,因此需要使用者根据实际需要灵活组合。自然,gin也当然不会提供csrf功能。在此之前,我调研了如下几种csrf中间件:https://github.com/gorilla/csrf原创 2022-01-15 19:30:12 · 2881 阅读 · 3 评论