2023年4月27日

【raft协议-01】 从raft源码看选举

摘要: Raft 一致性协议 go 阅读全文

posted @ 2023-04-27 15:09 留校察看 阅读(33) 评论(0) 推荐(0) 编辑

2023年3月4日

【译】clang ThreadSafetyAnalysis 线程安全分析

摘要: 每天晚上临睡前一到两小时,前后花了一两周来试着翻译。过程是痛苦的,却是一个检视自己的好办法。 放在git上,正在考虑以后把随笔迁到gitio上。 https://releases.llvm.org/3.5.0/tools/clang/docs/ThreadSafetyAnalysis.html cl 阅读全文

posted @ 2023-03-04 16:44 留校察看 阅读(330) 评论(0) 推荐(0) 编辑

2022年5月27日

【译】go内存模型

摘要: go内存模型 原文: https://go.dev/ref/mem 源文:https://github.com/cool-firer/docs/blob/main/go/go%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%E7%BF%BB%E8%AF%91.md 介绍 Go 阅读全文

posted @ 2022-05-27 19:09 留校察看 阅读(32) 评论(0) 推荐(0) 编辑

2022年5月25日

关于log glog logrus beego/logs

摘要: 关于log 标准库中自带的log包 默认打印到标准错误输出(os.Stderr) package main import "log" func main() { log.Println("Content from log package!") } 打印流程: 1、加锁; 2、buf从0开始(l.bu 阅读全文

posted @ 2022-05-25 18:37 留校察看 阅读(130) 评论(0) 推荐(0) 编辑

2022年4月11日

go gin最左路由前缀树

摘要: gin也用了一段时间了,写个文总结一下路由部分吧,以免忘记。 关键名称:最左最短前缀树。 假设,最开始的路由route.GET("/R1R2R3R4R5..........Rn", func(c *gin.Context) {} ),这个时候树还是空的,直接调用n.insertChild(path, 阅读全文

posted @ 2022-04-11 18:25 留校察看 阅读(117) 评论(0) 推荐(0) 编辑

2022年2月16日

go json.Marshal报错 unsupported type: map[interface {}]interface {}

摘要: 在用beego写服务时,用hprose-golang调用某个异构rpc服务,再返回json到调用方时,报错了:json: unsupported type: map[interface {}]interface {} controller示例代码: 查看代码 package controllers 阅读全文

posted @ 2022-02-16 20:51 留校察看 阅读(2567) 评论(0) 推荐(0) 编辑

2022年1月27日

Node.js socket end、finish、close事件与stream

摘要: Node.js Stream Socket finish end close 阅读全文

posted @ 2022-01-27 13:01 留校察看 阅读(1740) 评论(0) 推荐(0) 编辑

2021年12月24日

typora toc生成大纲目录后传到github不显示问题

摘要: 平时用typora编辑文档后,用[toc]生成大纲目录,传到github上并不显示大纲目录。记录一下,免得下次又忘记。 解决: 1、安装vscode插件:Markdown All in One; 2、点中要转换的文件,再vscode里 view --> Command Palette --> 选中M 阅读全文

posted @ 2021-12-24 17:00 留校察看 阅读(426) 评论(0) 推荐(0) 编辑

2021年9月14日

nodejs mongodb3.6.2 insertOne callback问题

摘要: npm mongodb包版本:3.6.2 mongodb服务版本:4.0.1 想要模拟一下mongodb服务进程挂掉时,起用备用文件日志。 模拟流程:启动应用时,正常连接mongo,开个10s定时器,写入mongo数据,在10s内手动停掉mongo服务。 示例代码:const db = mongod 阅读全文

posted @ 2021-09-14 12:26 留校察看 阅读(143) 评论(0) 推荐(0) 编辑

2021年4月22日

kqueue使用

摘要: 网上搜了下关于kqueue的使用,感觉都不如意,自己翻译了一下,放在git上。 英文手册: https://www.freebsd.org/cgi/man.cgi?query=kqueue&apropos=0&sektion=0&manpath=FreeBSD+12.2-RELEASE+and+Po 阅读全文

posted @ 2021-04-22 15:54 留校察看 阅读(585) 评论(0) 推荐(0) 编辑

2021年4月2日

mac cmake编译libuv

摘要: mac版本:macOS High Sierra 10.13.6 准备工作 一、安装cmake 下载dmg文件安装: https://cmake.org/download/ 安装完成后,点开cmake tools -> How to Install For Command Line Use, 在~/. 阅读全文

posted @ 2021-04-02 17:35 留校察看 阅读(853) 评论(0) 推荐(0) 编辑

2021年3月17日

heapdump占用30M左右内存

摘要: 记: 项目中用了heapdump库,发现在调用 heapdump.writeSnapshot('/var/local/' + Date.now() + '.heapsnapshot'); 后,pm2看进程内存会多30M左右,单纯的require不会增加。 nvm使用node v6.9.4, 配套使用 阅读全文

posted @ 2021-03-17 15:06 留校察看 阅读(102) 评论(0) 推荐(0) 编辑

2021年3月9日

egg的生命周期是怎样触发的?

摘要: 以前在对egg进行换壳tcp时,看到加载了各种配置,到触发生命周期方法。然而改完过了几个月就忘记了,还是记录一下吧,以免下次忘记的时候翻翻。 egg在load了plugin、config、extend后,最后会有一个loadCustomAgent(loadCustomApp)方法,很关键的一个方法, 阅读全文

posted @ 2021-03-09 14:29 留校察看 阅读(557) 评论(0) 推荐(0) 编辑

2020年3月10日

egg定时任务原理

摘要: 在egg定时任务里增加多一种类型, 用在多pod集群下, 定时任务只跑一遍。 虽然我觉得这个功能完全可以放在项目业务自己实现, 不用集成进内部框架, 但还是去看了一下, 正好想了解一下egg的定时任务是怎么做的。 egg-schedule 这是egg用到的定时任务插件, 源码看起来不难, 花了点时间 阅读全文

posted @ 2020-03-10 13:22 留校察看 阅读(1821) 评论(0) 推荐(0) 编辑

2020年3月5日

一种stringify symbol key的方法

摘要: JS里的JSON.stringify方法一般情况下都可以用。 但如果对象里有symbol的key, 会被忽略,如下例子: const s = Symbol('wefwef'); const options = { a: 1, b: [1,2,], [s]: 'wath', where: { [Sym 阅读全文

posted @ 2020-03-05 14:12 留校察看 阅读(279) 评论(0) 推荐(0) 编辑

2019年9月22日

Nodejs源码系列

摘要: 一直想着看Nodej源码,断断续续的折腾了一下,但总串不起来,太久不看又忘记。决心每天看一点,特地记录在这里,作为逼迫自己的动力。 2019/09/22 一、源码编译 之前在电脑上了下源码,源码目录截图: 编译通过了,编译命令:make -j4 尝试修改下源码文件:lib/http.js,加入一行打 阅读全文

posted @ 2019-09-22 23:48 留校察看 阅读(1821) 评论(0) 推荐(0) 编辑

2019年6月12日

egg源码浅析一npm init egg --type=simple

摘要: 要egg文档最开始的时候,有这样的几条命令: 其中的 npm init egg --type=simple 命令为什么能够生成egg项目的基本构架呢? 一、npm init命令 根据 https://www.npmjs.cn/cli/init/ 官网的解释: npm init <initialize 阅读全文

posted @ 2019-06-12 00:59 留校察看 阅读(1913) 评论(0) 推荐(0) 编辑

2018年12月11日

koa1.x获取原始body内容

摘要: Node版本比较老,koa1.x配合koa-body-parser,默认koa-body-parser会把请求数据转成json对象, 然而有的时候需要获取原始的内容,不要转换,看波koa-body-parser源码,找到办法。 办法一:设置请求头Content-type值为:text/plain 这 阅读全文

posted @ 2018-12-11 00:42 留校察看 阅读(1464) 评论(0) 推荐(0) 编辑

2018年10月17日

mongodb的认证(authentication)与授权(authorization)

摘要: 一小白瞎整mongodb,认证部分被折磨的惨不忍睹,看厮可怜,特查了一下文档,浅显地总结一下mongodb认证(authentication)与授权(authorization)的联系。 创建的所有用户都在admin.库下的system.users集合下,有如下字段: 其中的db字段是用于authe 阅读全文

posted @ 2018-10-17 23:03 留校察看 阅读(14746) 评论(0) 推荐(2) 编辑

2018年8月17日

kombu源码Producer收获一

摘要: celery内置了kombu库,看了一下kombu的源码,从官网最简单的一个例子来分析 消息发布,源码如下: 运行之前开启redis服务。这真是简单到不能到简单的例子-.- 一步步分析画出如下类图: 大概十七八个类。流程省略几百万个字。 记一下关键步骤: 1、创建生产者 messaging.Prod 阅读全文

posted @ 2018-08-17 18:15 留校察看 阅读(460) 评论(0) 推荐(0) 编辑

导航