Jiajun's Blog
会当凌绝顶,一览众山小。
-
欢迎订阅Telegram Channel:分享后端相关的精选文章
目录
- 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完成自动化
禁止转载