modulepackage
0.0.0-20241022092430-545ee37b5ad9
Repository: https://github.com/jiajunhuang/blog.git
Documentation: pkg.go.dev
# README
Jiajun's Blog
会当凌绝顶,一览众山小。
-
欢迎订阅Telegram Channel:分享后端相关的精选文章
目录
- 2024/09/07 - 再读《程序员修炼之道-从小工到专家》
- 2024/09/06 - 再读《软件随想录》/《黑客与画家》/《软技能》
- 2024/09/06 - 让浏览器下载文件
- 2024/08/30 - HTTP 压力测试中的 Coordinated Omission
- 2024/07/24 - 2的补码
- 2024/07/21 - 编程语言中的 context 是什么?
- 2024/03/20 - flutter macOS 构建出错
- 2024/03/19 - Flatpak 使用小记
- 2024/03/10 - Golang CAS 操作是怎么实现的
- 2024/03/09 - PostgreSQL 当MQ来使用
- 2024/03/08 - Clash 结合 工作VPN 的网络设计
- 2024/03/07 - 使用 PostgreSQL 搭建 JuiceFS
- 2024/03/05 - PostgreSQL 配置优化和日志分析
- 2024/03/03 - 有GitHub Copilot?那就可以搭建你的ChatGPT4服务
- 2024/03/01 - 窗口函数的使用(以PG为例)
- 2024/01/16 - 读《为什么学生不喜欢上学》
- 2024/01/07 - OpenAI Prompt Engineering 摘录和总结
- 2023/12/30 - 读《打造真正的新产品》
- 2023/12/26 - 2023年终总结
- 2023/12/17 - VueJS 总结
- 2023/11/29 - Linux 自动挂载 alist 提供的webdav
- 2023/11/17 - FreeBSD 使用 vm-bhyve 安装Debian虚拟机
- 2023/11/16 - FreeBSD 和 Linux 网卡聚合实现提速
- 2023/11/15 - GPT 帮我搞定了时区转换问题
- 2023/11/12 - 长任务系统如何处理?
- 2023/11/11 - macOS/Linux 编译 InputLeap
- 2023/11/10 - 使用开源软KVM - synergy-core
- 2023/11/06 - 解决 macOS 终端hostname一直变化问题
- 2023/11/05 - KVM 共享 Intel 集成显卡
- 2023/10/17 - PromQL 备忘
- 2023/07/09 - 读《格鲁夫给经理人的第一课》
- 2023/07/06 - 读《打开心智》
- 2023/02/03 - 为什么要把复杂的联表操作拆成多个单表查询?
- 2023/01/31 - 红包系统的设计
- 2022/12/31 - 2022年终总结
- 2022/12/28 - MySQL Index Condition Pushdown Optimization
- 2022/12/16 - Go mod 简明教程
- 2022/12/04 - OpenWRT 使用 Android/iOS USB 网络
- 2022/11/20 - 搭建旁路由
- 2022/11/04 - Golang gRPC 错误处理
- 2022/10/31 - 编写可维护的单元测试代码
- 2022/10/12 - OAuth 2 详解(六):Authorization Code Flow with PKCE
- 2022/10/11 - OAuth 2 详解(五):Device Authorization Flow
- 2022/10/10 - OAuth 2 详解(三):Resource Owner Password Credentials Grant
- 2022/10/10 - OAuth 2 详解(四):Client Credentials Flow
- 2022/10/09 - OAuth 2 详解(二):Implict Grant Flow
- 2022/10/08 - OAuth 2 详解(一):简介及 Authorization Code 模式
- 2022/10/06 - ElasticSearch 学习笔记
- 2022/07/28 - 三种git流程以及发版模型
- 2022/07/27 - 错误处理实践
- 2022/07/15 - 权限模型(RBAC/ABAC)
- 2022/07/06 - OIDC(OpenID Connect) 简介
- 2022/07/05 - 任务队列简介
- 2022/04/29 - PostgreSQL 操作笔记
- 2022/04/29 - 使用Drone CI构建CI/CD系统
- 2022/04/28 - Golang migrate 做数据库变更管理
- 2022/04/12 - 使用PostgreSQL做搜索引擎
- 2022/03/23 - Nginx 源码阅读(三): 连接池、内存池
- 2022/03/22 - Nginx 源码阅读(二): 请求处理
- 2022/03/21 - Nginx 源码阅读(一): 启动流程
- 2022/03/17 - Go 泛型简明教程
- 2022/03/15 - KVM 显卡穿透给 Windows
- 2022/03/12 - 使用 HTTP Router 处理 Telegram Bot 按钮回调
- 2022/01/10 - 使用反射(reflect)对结构体赋值
- 2022/01/09 - GIN 是如何绑定参数的
- 2021/12/30 - 你好 2022(2021 年终总结)
- 2021/12/11 - 用Go导入大型CSV到PostgreSQL
- 2021/12/01 - 使用 OpenWRT 搭建软路由
- 2021/11/26 - 使用软KVM切换器 barrier 共享键鼠
- 2021/11/04 - SQL 防注入及原理
- 2021/10/12 - 使用 gomock 测试 Go 代码
- 2021/10/11 - gevent不是黑魔法(二): gevent 实现
- 2021/09/29 - gevent不是黑魔法(一): greenlet 实现
- 2021/09/06 - 用 entgo 替代 gorm
- 2021/09/01 - 应用内使用crontab不是那么方便
- 2021/08/27 - 单测时要不要 mock 数据库?
- 2021/08/25 - Sentry 自建指南
- 2021/08/19 - 用selenium完成自动化任务
- 2021/07/09 - 用闲置的安卓手机做垃圾电话短信过滤
- 2021/07/06 - 推荐三个时间管理工具
- 2021/07/02 - 一次事故反思
- 2021/06/22 - 当JS遇到uint64:JS整数溢出问题
- 2021/06/19 - SQLite3 存储以及ACID原理
- 2021/06/07 - Redis源码阅读:pub/sub实现
- 2021/06/06 - Redis源码阅读:zset实现
- 2021/05/30 - Redis源码阅读:bitmap 位图的运算
- 2021/05/29 - Redis源码阅读:set是怎么做交并集运算的?
- 2021/05/28 - Redis源码阅读:list实现(ziplist, quicklist)
- 2021/05/27 - Redis源码阅读:RDB是怎么实现的
- 2021/05/26 - Redis源码阅读:AOF重写
- 2021/05/25 - Redis源码阅读:AOF持久化
- 2021/05/24 - Redis源码阅读:key是怎么过期的
- 2021/05/24 - Redis源码阅读:字典是怎么实现的
- 2021/05/23 - Redis源码阅读:执行命令
- 2021/05/22 - Redis源码阅读:启动过程
- 2021/05/15 - WAL(Write-ahead logging)的套路
- 2021/04/29 - 搞定CORS问题
- 2021/04/15 - 如何定位程序问题所在
- 2021/04/14 - 设计一个IM归档系统
- 2021/04/11 - logrotate read only filesystem问题
- 2021/03/23 - Golang GIN写单测时,愉快的使用返回值
- 2021/03/20 - Python Queue源码分析
- 2021/03/18 - Go里优雅的使用全局配置
- 2021/03/15 - Golang sync.Map源码分析
- 2021/03/11 - Android滑动时隐藏FAB
- 2021/02/25 - Python中用tuple作为key
- 2021/02/24 - 一些常用的算法思维
- 2021/02/21 - 编写可维护的函数
- 2021/02/04 - 为什么要把配置保存在仓库里?
- 2021/01/27 - Android自动展示和关闭进度条
- 2021/01/13 - Kotlin/Java 列表Protobuf序列化
- 2021/01/03 - 怎么使用ViewModel 和 RecyclerView
- 2021/01/03 - deeplink结合路由处理扩展App的能力
- 2021/01/02 - Android手动挡MVVM
- 2020/12/23 - 来电拦截方案
- 2020/12/22 - 你好,2021!
- 2020/12/19 - gRPC鉴权方案
- 2020/12/16 - Golang里数据库migration方案
- 2020/12/12 - Android SwipeRefreshLayout左右滑动冲突的解决
- 2020/12/07 - Android调用gRPC的两个小工具函数
- 2020/12/01 - Android上结合kotlin使用coroutine
- 2020/11/26 - gRPC错误处理
- 2020/11/13 - Java collection的结构
- 2020/11/02 - 为啥Redis使用pipelining会更快?
- 2020/10/24 - 通过阳台种菜实现蔬菜自由
- 2020/10/19 - 从GORM里学习到的panic处理方式
- 2020/10/17 - Go使用闭包简化数据库操作代码
- 2020/10/10 - TCMalloc设计文档学习
- 2020/09/27 - Flask和requests做一个简单的请求代理
- 2020/09/21 - Linux常用命令(四):xargs
- 2020/09/20 - Linux常用命令(三):watch
- 2020/09/20 - Linux常用命令(二):htop
- 2020/09/19 - Linux常用命令(一):netcat
- 2020/09/16 - 结合Flask 与 marshmallow快速进行参数校验
- 2020/09/10 - 规整数据的重要性
- 2020/09/05 - apt安装特定包以及忽略升级某个包
- 2020/08/26 - StackGuard的作用
- 2020/08/26 - Goroutine是如何处理栈的?
- 2020/08/22 - Go DiskQueue源码阅读
- 2020/08/16 - NSQ源码分析
- 2020/08/15 - NSQ简明教程
- 2020/08/11 - 结合Redis与MySQL实现又快又好的数据方案
- 2020/07/28 - 程序员的MySQL手册(五):索引优化
- 2020/07/27 - 程序员的MySQL手册(四):索引设计
- 2020/07/26 - 程序员的MySQL手册(三):数据库设计
- 2020/07/25 - Linux窗口管理器下的截图
- 2020/07/23 - 程序员的MySQL手册(二): 监控与benchmark
- 2020/07/23 - Go设计模式:facade模式和观察者模式
- 2020/07/21 - Go设计模式: 责任链模式
- 2020/07/15 - 我们真的需要这么复杂的技术栈吗?
- 2020/07/14 - Go设计模式:装饰器模式
- 2020/07/05 - 程序员的MySQL手册(一): 安装,基本配置
- 2020/07/04 - ElasticSearch学习笔记
- 2020/07/02 - Go设计模式:composite模式
- 2020/06/25 - 拯救删除ZFS之后的分区表
- 2020/06/23 - Linux使用redshift自动调整屏幕色温
- 2020/06/21 - Go设计模式:桥接模式和策略模式
- 2020/06/20 - Go设计模式:单例模式、原型模式和Builder模式
- 2020/06/15 - 操作系统也是CRUD
- 2020/06/13 - 把USB设备穿透给虚拟机里的系统
- 2020/06/13 - Go设计模式:简单工厂模式
- 2020/06/12 - debug故事之:事务让生活更美好
- 2020/06/11 - Go设计模式:模板模式
- 2020/06/09 - Go设计模式:适配器模式
- 2020/06/07 - Go设计模式:Iterator
- 2020/05/30 - glusterfs 笔记
- 2020/05/29 - 用peewee代替SQLAlchemy
- 2020/05/23 - Go的slice工作机制
- 2020/05/22 - Linux系统迁移记录(从HDD到SSD)
- 2020/05/21 - Redis是如何工作的?
- 2020/05/18 - virsh自动关闭windows虚拟机
- 2020/05/16 - Golang sort源码阅读
- 2020/05/15 - 分治的思维方式
- 2020/05/13 - Debian 使用NetworkManager之后networking.service崩溃
- 2020/05/09 - httprouter源码阅读与分析
- 2020/05/08 - 《程序员的自我修养-装载、链接与库》笔记
- 2020/05/05 - Golang sync.Pool源码阅读与分析
- 2020/05/01 - MySQL操作笔记
- 2020/04/30 - Go语言解析GBK编码的xml
- 2020/04/28 - Golang log 源码阅读
- 2020/04/24 - 使用Go语言实现一个异步任务框架
- 2020/04/23 - Go使用gdb调试
- 2020/04/23 - Golang flag源码阅读及自己实现
- 2020/04/22 - Golang context源码阅读与分析
- 2020/04/22 - Golang ASM简明教程
- 2020/04/21 - 善用闭包(closure)让Go代码更优雅
- 2020/04/21 - Golang中的并发控制
- 2020/04/20 - Golang的可选参数实践
- 2020/04/13 - FreeBSD ipfw使用教程
- 2020/04/12 - Golang expvar库源码阅读
- 2020/04/11 - Golang SQL生成库 Squirrel 教程及源码阅读
- 2020/04/10 - Golang validator使用教程
- 2020/04/09 - 价值编程与职业发展
- 2020/04/09 - 使用Redis的Stream模块实现群聊功能
- 2020/04/08 - 解决k8s cron无法读取环境变量的问题
- 2020/03/27 - 应用内购的坑
- 2020/03/26 - 两种常见的访问控制模型
- 2020/03/25 - gunicorn max-requests 选项的作用
- 2020/03/23 - Redis使用中的几点注意事项
- 2020/03/12 - 给你的代码跑个分?pylint使用教程
- 2020/03/11 - 一个Gunicorn worker数量引发的血案
- 2020/03/06 - MySQL Boolean类型的坑
- 2020/03/04 - pip freeze是魔鬼
- 2020/03/02 - 一个feed流系统的演进
- 2020/03/01 - Android 使用view binding
- 2020/02/27 - 系统调用的过程
- 2020/02/26 - MySQL charset不同导致无法使用索引的坑
- 2020/02/19 - 微服务的缺点
- 2020/02/14 - 远程工作一周有感
- 2020/02/12 - Python中的并发控制
- 2020/02/08 - KVM spice协议在高分屏上的分辨率问题
- 2020/01/11 - 计算机中的权衡(trade-off)
- 2020/01/10 - [声明]本站所有文章禁止转载
- 2020/01/07 - Golang不那么蛋疼的sort
- 2020/01/06 - Flutter给Android应用签名
- 2020/01/01 - 使用Gitea+Drone打造自己的CI/CD系统
- 2019/12/31 - 2019年就要结束啦!
- 2019/12/27 - 为什么要使用gRPC?
- 2019/12/24 - Matebook X Pro 2019安装Debian 10
- 2019/12/22 - ArchLinux忽略某个包的升级
- 2019/12/21 - SQLAlchemy使用主从与数据库autocommit
- 2019/12/19 - Blackbox禁用IPv6
- 2019/12/18 - Go 1.13的errors挺香
- 2019/12/18 - 预防缓存击穿
- 2019/12/16 - flutter开发体验汇报
- 2019/12/13 - 自己封装一个好用的Dart HTTP库
- 2019/12/11 - Flutter应用启动后检查更新
- 2019/12/10 - Grafana Gravatar头像显示bug修复
- 2019/12/09 - flutter中使用RESTful接口
- 2019/12/04 - Vim YouCompleteMe使用LSP(以dart为例)
- 2019/12/03 - flutter webview加载时显示进度
- 2019/12/02 - SQLAlchemy快速更新或插入对象
- 2019/11/26 - 修复Linux下curl等无法使用letsencrypt证书
- 2019/11/24 - 欣赏一下K&R两位大神的代码
- 2019/11/19 - MySQL的ON DUPLICATE KEY UPDATE语句
- 2019/11/17 - 使用microk8s快速搭建k8s
- 2019/11/15 - Python中优雅的处理文件路径
- 2019/11/14 - Go语言MySQL时区问题
- 2019/11/13 - 我的技术栈选型
- 2019/11/11 - 为什么我要用Linux作为桌面?
- 2019/11/08 - disqus获取评论时忽略query string
- 2019/11/06 - MySQL性能优化指南
- 2019/11/01 - 网络编程所需要熟悉的那些函数
- 2019/10/31 - DNSCrypt简明教程
- 2019/10/30 - SQLAlchemy简明教程
- 2019/10/25 - 这些年,我们错过的n个亿
- 2019/10/19 - 给Linux用户的FreeBSD快速指南
- 2019/10/18 - 旧电脑也不能闲着:家用备份方案
- 2019/10/15 - 将SQLite的数据迁移到MySQL
- 2019/10/08 - Linux托管Windows虚拟机最佳实践
- 2019/09/29 - 为什么gRPC难以推广
- 2019/09/26 - 关于ORM的思考
- 2019/09/25 - MySQL指定使用索引(使用索引提示)
- 2019/09/23 - 搭建samba服务器
- 2019/09/23 - QT5使用GTK主题
- 2019/09/18 - ssh时自动运行tmux
- 2019/09/14 - ufw简明教程
- 2019/09/11 - zerotier简明教程
- 2019/09/04 - 提取kindle笔记
- 2019/09/02 - 一个Golang gRPC握手错误的坑
- 2019/08/31 - Golang(Go语言)爬虫框架colly简明教程及源码阅读与分析
- 2019/08/30 - 选择合适的技术栈
- 2019/08/23 - Golang的template(模板引擎)简明教程
- 2019/08/21 - 毕业三年,一路走来
- 2019/08/18 - 代码的坏味道
- 2019/08/05 - 消息分帧(字符串设计或协议设计)的两种形式
- 2019/08/01 - C, Go, Python的错误处理和异常机制杂谈
- 2019/07/29 - 好的命名是最好的文档
- 2019/07/24 - 读《系统之美:决策者的系统思考》
- 2019/07/20 - Linux高分屏支持
- 2019/07/16 - GCC默认的头文件搜索路径
- 2019/07/15 - 读《远见-如何规划职业生涯3大阶段》
- 2019/07/13 - 后端工程师学前端(五): SASS
- 2019/07/10 - 后端工程师学前端(四): CSS进阶(盒子模型)
- 2019/07/06 - 读《投资中最简单的事》
- 2019/07/04 - 后端工程师学前端(三): CSS进阶(特指度、单位和字体族)
- 2019/07/02 - 后端工程师学前端(二): CSS基础知识(规则与选择器)
- 2019/06/25 - Swift语法笔记
- 2019/06/23 - 读《管理的实践》
- 2019/06/23 - 后端工程师学前端(一): HTML
- 2019/06/19 - frp 源码阅读与分析(二):TCP内网穿透的实现
- 2019/06/15 - 五天不用微信 - 爽得很
- 2019/06/11 - frp 源码阅读与分析(一):流程和概念
- 2019/06/10 - 学习frp源码之简洁的在两个connection之间转发流量
- 2019/06/09 - 自己动手写一个反向代理
- 2019/06/08 - 从XMonad迁移到i3
- 2019/06/08 - 读《债务危机》
- 2019/06/06 - socks5 协议详解
- 2019/06/06 - 服务器IP被ban学到的经验
- 2019/06/04 - 开启HSTS(HTTP Strict Transport Security)
- 2019/06/01 - 从Chrome切换到Firefox
- 2019/06/01 - 网络乞讨之合并支付宝和微信的收款二维码
- 2019/05/31 - Linux下当笔记本合上盖子之后只使用扩展显示器
- 2019/05/31 - nomad简明教程
- 2019/05/30 - Ubuntu 18.04 dhcp更换新IP
- 2019/05/29 - Python中的新式类(new style class)和老式类(old style class)
- 2019/05/18 - Python Requests 简明教程
- 2019/05/15 - 密码技术简明教程(三):证书和TLS
- 2019/05/14 - SEO学习笔记
- 2019/05/14 - 密码技术简明教程(二):散列、消息认证码和数字签名
- 2019/05/12 - 密码技术简明教程(一):对称加密和非对称加密
- 2019/05/10 - Kubernetes 笔记
- 2019/05/09 - go mod 和 logrus 路径大小写的问题
- 2019/05/08 - Flask自动加载Blueprint
- 2019/05/07 - 在KVM里安装Minikube
- 2019/04/29 - 搞定面试中的系统设计题
- 2019/04/25 - Crontab + Sendmail实现定时任务并且通知
- 2019/04/23 - Nginx设置Referer来防止盗图
- 2019/04/20 - Graphviz dot简明教程
- 2019/04/19 - jQuery简明教程
- 2019/04/18 - Python RQ(Redis Queue)添加gevent支持
- 2019/04/17 - 技术人,光有技术是不行的
- 2019/04/17 - 读《超级运营术》- 如何做社区?
- 2019/04/06 - 使用shairport-sync搭建airplay音频服务器
- 2019/04/06 - 搭建aria2服务器
- 2019/04/05 - VirtManager Windows自适应屏幕
- 2019/04/03 - 使用btrfs组建RAID1
- 2019/04/01 - Swagger? 不好用
- 2019/03/29 - Golang/Python最佳实践
- 2019/03/24 - 读《毛泽东选集》
- 2019/03/19 - GORM源码阅读与分析
- 2019/03/16 - 随想
- 2019/03/15 - Golang中的错误处理
- 2019/03/14 - Golang 的槽点
- 2019/03/12 - 一个想当然的bug
- 2019/03/06 - 读《稀缺》
- 2019/03/03 - 读《影响力》
- 2019/03/01 - 读《自控力》
- 2019/02/27 - Containerd简明教程
- 2019/02/26 - 软件设计套路之推拉模式
- 2019/01/30 - 记一次Golang TLS编程踩坑
- 2019/01/13 - 杂谈
- 2019/01/12 - 使用autossh实现内网穿透
- 2019/01/07 - Linux线程内存模型
- 2019/01/03 - 关闭手机通知,修复碎片化的生活
- 2019/01/01 - Linux下系统调用的过程
- 2018/12/27 - Redis 5.0 Stream简明教程
- 2018/12/27 - 耍耍OverlayFS
- 2018/12/26 - 删除分区表
- 2018/12/24 - YouCompleteMe ycmd server SHUTDOWN 和 pyenv的问题
- 2018/12/24 - Docker组件介绍(二):shim, docker-init和docker-proxy
- 2018/12/22 - Docker组件介绍(一):runc和containerd
- 2018/12/16 - Prometheus MySQL Exporter源码阅读与分析
- 2018/12/13 - MySQL性能指标
- 2018/12/12 - 使用Dropbox来备份服务器文件
- 2018/12/10 - 《计算机网络-系统方法》读书笔记
- 2018/12/08 - Y Combinator《如何创业》笔记
- 2018/12/01 - Go类型嵌套
- 2018/11/28 - etcd源码阅读与分析(五):mvcc
- 2018/11/27 - etcd源码阅读与分析(四):lease
- 2018/11/26 - 干了这碗叔本华牌毒鸡汤 --- 《人生的智慧》
- 2018/11/24 - Memory leak in net/http
- 2018/11/24 - etcd源码阅读与分析(三):wal
- 2018/11/22 - etcd源码阅读与分析(二):raft
- 2018/11/20 - etcd源码阅读与分析(一):raftexample
- 2018/11/18 - 虚拟机里的Ubuntu sudo时卡住
- 2018/11/16 - Raft论文阅读笔记
- 2018/11/16 - Go访问私有变量
- 2018/11/15 - 避免全局变量
- 2018/11/13 - Go的unsafe包
- 2018/11/12 - Golang中实现禁止拷贝
- 2018/11/11 - 人生如戏,全靠演技 -- 《日常生活中的自我呈现》读后感
- 2018/11/10 - 数据库事务
- 2018/11/10 - Golang的反射
- 2018/11/09 - 把网站去掉CSS之后
- 2018/11/07 - 处理并发的方式
- 2018/11/02 - 常见的索引方式
- 2018/11/01 - Golang 实践经验
- 2018/10/23 - 高性能MySQL笔记第一章
- 2018/10/21 - 面试的一些技巧
- 2018/10/13 - HTTP/2 简介
- 2018/09/24 - 独立运营博客一年的一些数据分享
- 2018/09/22 - To B(usiness) 和 To C(ustomer)
- 2018/09/16 - Cookie 中的secure和httponly属性
- 2018/09/16 - 常见的软件架构套路
- 2018/09/10 - Google Ads使用体验
- 2018/09/07 - Go的custom import path
- 2018/09/06 - 如何挖掘二级子域名?
- 2018/09/03 - Go Module 简明教程
- 2018/09/02 - 写了一个Telegram Bot:自动化分享高质量内容
- 2018/09/01 - 为什么我选择放弃运营微信公众号?
- 2018/09/01 - Vim打开很慢,怎么找出最慢的插件?怎么解决?
- 2018/09/01 - ArchLinux 怎么降级 package ?
- 2018/08/29 - Web后端工程师进阶指南(2018)
- 2018/08/28 - macOS ansible 遇到 rsync: --chown=www-data: unknown option
- 2018/08/28 - How to implement fork syscall in Golang?
- 2018/08/26 - 关于运营的思考-运营要怎么做?
- 2018/08/24 - Python中实现单例模式的n种方式和原理
- 2018/08/23 - Golang defer中修改返回值
- 2018/08/12 - Python dataclass 源码阅读与分析
- 2018/08/08 - gRPC-gateway 源码阅读与分析
- 2018/08/04 - 如何阅读源代码
- 2018/07/22 - 我心目中的配置中心应该怎么做?
- 2018/07/18 - 设计一个HTTP网关
- 2018/07/08 - 设计一个分布式块存储
- 2018/06/24 - Linux低电量自动关机
- 2018/06/15 - CGO简明教程
- 2018/05/22 - 求值策略:Applicative Order vs Normal Order
- 2018/05/17 - High Performance MySQL阅读笔记
- 2018/05/15 - MySQL EXPLAIN中的filesort是什么?
- 2018/05/13 - 数据库索引设计与优化
- 2018/05/08 - 如何调试?
- 2018/04/14 - Docker CE 18.03源码阅读与分析
- 2018/04/12 - 容器时代的日志处理
- 2018/04/10 - Golang和Thrift
- 2018/04/05 - 折腾Kubernetes
- 2018/04/03 - 协程(coroutine)简介 - 什么是协程?
- 2018/03/29 - goroutine 切换的时候发生了什么?
- 2018/03/19 - Prometheus 数据类型
- 2018/03/16 - Gin源码阅读与分析
- 2018/03/10 - 如何面试-作为面试官得到的经验
- 2018/03/09 - 自己写一个容器
- 2018/03/08 - Golang(Go语言)中实现典型的fork调用
- 2018/02/26 - 软件开发之禅---大事化小,各个击破
- 2018/02/25 - 程序员的自我修养:链接,装载与库 阅读笔记
- 2018/02/24 - Redis源码阅读与分析一:sds
- 2018/02/24 - Redis源码阅读与分析三:哈希表
- 2018/02/24 - Redis源码阅读与分析二:双链表
- 2018/02/02 - Golang runtime 源码阅读与分析
- 2018/01/31 - Golang的一些坑
- 2018/01/30 - GC 垃圾回收
- 2018/01/28 - 设计一个路由
- 2018/01/22 - Go语言性能优化实战
- 2018/01/14 - 那些年开发的时候踩过的坑
- 2018/01/08 - (关系型)数据库优化总结
- 2018/01/04 - 动态规划民科教程
- 2017/12/30 - Golang 分布式异步任务队列 Machinery 教程
- 2017/12/27 - 使用geohash完成地理距离计算
- 2017/12/20 - 2018年就要到了,这一年都做了什么呢?
- 2017/12/02 - 算法导论阅读笔记 --- 排序算法
- 2017/11/29 - 短链系统的实现
- 2017/11/29 - Git HTTPS 如何保存密码
- 2017/11/13 - 程序员修炼之道 阅读笔记
- 2017/11/04 - Python开发实践经验
- 2017/10/25 - Golang实现平滑重启(优雅重启)
- 2017/10/24 - traefik 教程
- 2017/10/19 - Web开发简介系列
- 2017/10/19 - Web开发系列(九):消息队列,异步任务
- 2017/10/19 - Web开发系列(十一):数据库扩展
- 2017/10/19 - Web开发系列(十):事务和锁
- 2017/10/19 - Nginx作为TCP/UDP的负载均衡
- 2017/10/18 - Web开发系列(八):单点故障,负载均衡
- 2017/10/18 - Web开发系列(七):缓存,CDN
- 2017/10/18 - Web开发系列(六):关系型数据库,ORM
- 2017/10/18 - Nginx 请求匹配规则
- 2017/10/17 - Web开发系列(五):form, json, xml
- 2017/10/16 - Web开发系列(四):Flask, Tornado和WSGI
- 2017/10/15 - Web开发系列(三):什么是HTML,CSS,JS?
- 2017/10/14 - Web开发系列(二):HTTP协议
- 2017/10/13 - Web开发系列(一):从输入网址到最后,这个过程经历了什么?
- 2017/10/11 - SNI: 让Nginx在一个IP上使用多个证书
- 2017/09/27 - Haskell: infixl, infixr, infix
- 2017/09/26 - Haskell简明教程(五):处理JSON
- 2017/09/25 - Haskell简明教程(四):Monoid, Applicative, Monad
- 2017/09/22 - HTTPS 的详细流程
- 2017/09/21 - OAuth2 为什么需要 Authorization Code?
- 2017/09/20 - 任务队列怎么写?python rq源码阅读与分析
- 2017/09/19 - XMonad 配置教程
- 2017/09/18 - Haskell简明教程(三):Haskell语法
- 2017/09/17 - Haskell简明教程(二):从命令式语言进行抽象
- 2017/09/11 - Haskell简明教程(一):从递归说起
- 2017/09/03 - 2017年必装的VIM插件推荐
- 2017/09/02 - TCP/IP简明教程 - 从零构建TCP/IP协议(二)连接,断开与拥塞控制
- 2017/08/12 - TCP/IP简明教程 - 从零构建TCP/IP协议(这次叫PCT协议)
- 2017/08/09 - Lua Manual 阅读笔记
- 2017/07/27 - Golang Map 源码阅读与分析
- 2017/07/26 - MySQL 零碎知识 - MySQL必知必会
- 2017/07/18 - Golang slice 源码阅读与分析
- 2017/07/15 - 经典好书推荐(2017)
- 2017/07/11 - Golang log库 源码阅读与分析
- 2017/07/02 - 毕业后一年
- 2017/06/22 - ansible 简明教程
- 2017/06/02 - 自己写个搜索引擎
- 2017/05/24 - HTTP 路由的两种常见设计形式
- 2017/05/12 - Golang的short variable declaration
- 2017/04/26 - Greenlet和Stackless Python
- 2017/04/25 - 写一个简单的ORM
- 2017/04/19 - 从源码看Python的descriptor
- 2017/04/16 - Python字符串格式化
- 2017/04/08 - Gunicorn 简明教程
- 2017/03/29 - Raft 论文阅读笔记
- 2017/03/06 - 什么是 Golang Comparable Types
- 2017/03/02 - MapReduce 论文阅读
- 2017/03/02 - GFS 论文阅读
- 2017/02/24 - 一起来做贼:Goroutine原理和Work stealing
- 2017/02/15 - Go语言的defer, panic和recover
- 2017/01/24 - 再读vim help:vim小技巧
- 2017/01/24 - 再读 Python Language Reference
- 2017/01/22 - 设计模式(2)- 深入浅出设计模式 阅读笔记
- 2017/01/21 - 设计模式(1)- 深入浅出设计模式 阅读笔记
- 2017/01/15 - Cython! Python和C两个世界的交叉点
- 2017/01/09 - socketserver 源码阅读与分析
- 2017/01/08 - functools 源码阅读与分析
- 2017/01/07 - contextlib代码阅读
- 2017/01/06 - Redis通信协议阅读
- 2017/01/06 - Collections 源码阅读与分析
- 2016/12/31 - 2016年就要结束了,2017年就要开始啦!
- 2016/12/29 - unittest 源代码阅读
- 2016/12/26 - APUEv3 - 重读笔记
- 2016/12/22 - Mock源码阅读与分析
- 2016/12/16 - Thinking in Python
- 2016/12/15 - 我的代码进CPython标准库啦
- 2016/12/09 - Python零碎小知识
- 2016/12/07 - 工作一年的总结
- 2016/12/07 - Python和单元测试
- 2016/12/06 - Python 的继承
- 2016/12/06 - MongoDB 的一些坑
- 2016/11/29 - Python的yield关键字有什么作用?
- 2016/11/27 - 借助coroutine用同步的语法写异步
- 2016/11/21 - Python3函数参数中的星号
- 2016/11/08 - 使用Git Hooks
- 2016/11/05 - Token Bucket 算法
- 2016/11/03 - nginx配置笔记
- 2016/09/15 - 阅读Flask源码
- 2016/08/25 - 尤克里里
- 2016/06/20 - 学习使用Bootstrap4的栅格系统
- 2016/06/19 - 利用Github的WebHook完成自动部署
- 2016/06/18 - 使用Tornado和rst来写博客
- 2016/06/05 - Haskell do notation
- 2016/05/22 - foldl 和 foldr 的变换
- 2016/05/05 - Haskell TypeClass 笔记
- 2016/04/03 - 重新捡起你那吃灰的树莓派
- 2016/03/14 - Tornado 源码阅读
- 2016/03/06 - JavaScript权威指南笔记
- 2016/03/05 - Python零碎知识汇总
- 2016/02/06 - C语言的位操作
- 2016/01/25 - 分治
- 2015/12/05 - 关于python的decorator和descriptor
- 2015/10/09 - 程序设计实践笔记
- 2015/09/05 - Thinking Recursively
- 2015/06/22 - Block I/O
- 2015/03/17 - 如何解读c的声明
- 2015/01/11 - 关于输入法的猜想
- 2014/12/12 - C语言与抽象思维
- 2014/11/04 - C注意事项
- 2014/09/09 - C语言中点操作符(.)和箭头操作符(->)的不同之处
- 2014/09/07 - 征服C指针笔记 - 数组和指针的微妙关系
- 2014/08/22 - 关于文件权限的摘记
- 2014/06/17 - 用crontab完成自动化
禁止转载
# Functions
AboutMeHandler 关于我.
AllSharingHandler 所有分享.
AppHandler App页面.
ArchiveHandler 全部文章.
ArticleHandler 具体文章.
ArticlesAPIHandler 首页文章API.
FriendsHandler 友链.
IndexHandler 首页.
InitializeDB 初始化数据库连接.
InitializeRedis 初始化Redis.
InitSentry 初始化sentry.
LoadArticle 把文章的元信息读出来.
LoadMDs 读取给定目录中的所有markdown文章.
NotesAPIHandler 获取随想.
NotesHandler 随想.
NotFoundHandler 404.
PingPongHandler ping pong.
ReadDesc 把简介读出来.
ReadTitle 把标题读出来.
RewardHandler 扫码赞赏.
RSSHandler RSS.
SearchHandler 搜索.
SharingAPIHandler 获取分享.
SharingHandler 分享.
SharingRSSHandler RSS for sharing channel.
SiteMapHandler sitemap.
TopArticlesAPIHandler 热门文章API.
TutorialHandler 教程.
TutorialPageHandler 教程index.
# Variables
ErrFailedToLoad failed to load article.
ErrNotFound means article not found.
# Structs
Article 就是文章.
Dao 数据库转化层.
Note 随想.
Sharing 分享.
VisitedArticle is for remember which article had been visited.
# Type aliases
Articles 文章列表.