2020年回顾

2020年是我人生中最不寻常的一年,经历了疫情、换工作两件大事。 疫情 这个大家都经历过,不说了。 换工作 马云有句话说的好,“员工的离职原因很多,...

January 3, 2021

使用haproxy,nginx与aria2搭建下载服务

最近搞了一台vps,用它搭建了一个远程下载服务(网盘),包括aria2做下载工具,nginx做静态文件服务,haproxy根据hostnam...

December 26, 2020

AWS SQS如何实现指数退避

SQS 全称 Simple queue service,是 AWS 推出一款消息队列服务。按照 AWS 官方文档的说法,SQS 居有高吞吐、高可用的特性。从我个人的开发体验来看,SQS 是一...

August 8, 2020

AsyncLocalStorage与日志追踪

最近在思考node.js如何做服务间与服务内部的日志追踪,一个很简单的实现就是在HTTP request header里添加一个字段x-trace-id来标...

June 25, 2020

2019年回顾

2019年,虽然有很多不满意,但总的基调是好的。 学习了诸多技术,包括TypeScript、Cocos、Haskell、OS、Akka和Vue...

January 3, 2020

mini-parser小轮子

代码链接 demo如下,定义好rule后进行parse。 const rule = AndRule.of( [ TextRule.of("hello", "HELLO_RULE"), OrRule.of( [TextRule.of(", "), TimesRule.of(3, TextRule.of(" ", "SPACE"), "TIMES")], "NO_NAME" ), TextRule.of("world", "WORLD"), OneOrMoreRule.of(TextRule.of("!"), "SAMPLE") ], "HELLO_WORLD" ); console.log(JSON.stringify(rule.accept("hello world!!!"))); 结果为: { "contain": true, "group": { "groups": [ { "text": "hello", "name": "HELLO_RULE" },...

November 6, 2019

JVM if<cond>指令笔记

format: if<cond> branchByte1 branchByte2 从栈中弹出一个值,和0进行比较,根据指令的不同,有不同的比较方法得出一个值,如果为假,则顺序执行后面的指令。那为真的呢?: branchByte1 branchByte2 都是 0x00...

September 13, 2019

配置vim进行Haskell开发

第一步当初是安装vim,推荐使用比较新的8.1+版本。 写haskell需要安装相应的插件,vim没有原生的插件管理系统,所以得先搞定这个。 这...

September 8, 2019

slisp:一门简单的JVM上的Lisp方言

之前经常变更学习方向,没有收到很好的学习效果,浪费了不少时间。最近痛定思痛,把方向定为JVM和编译原理,这次真的不改了。本文是学习该方向的阶...

January 1, 2019

2018年回顾

过年前拿到了offer,详见知乎。 舍友们一起出去旅游,去了华哥他老家还有重庆。 毕业前的几个月,一直一个人窝在北郊的屋子里,长胖了很多。 工作培...

January 1, 2019