话题精选
读书
旅行
好物
极客
个人总结
所有博客
Jiajun 的编程随想
享受技术带来的快乐。
访问博客
读《格鲁夫给经理人的第一课》
读《打开心智》
为什么要把复杂的联表操作拆成多个单表查询?
红包系统的设计
2022年终总结
MySQL Index Condition Pushdown Optimization
Go mod 简明教程
OpenWRT 使用 Android/iOS USB 网络
搭建旁路由
Golang gRPC 错误处理
编写可维护的单元测试代码
OAuth 2 详解(六):Authorization Code Flow with PKCE
OAuth 2 详解(五):Device Authorization Flow
OAuth 2 详解(三):Resource Owner Password Credentials Grant
OAuth 2 详解(四):Client Credentials Flow
OAuth 2 详解(二):Implict Grant Flow
OAuth 2 详解(一):简介及 Authorization Code 模式
ElasticSearch 学习笔记
三种git流程以及发版模型
错误处理实践
权限模型(RBAC/ABAC)
OIDC(OpenID Connect) 简介
任务队列简介
使用Drone CI构建CI/CD系统
PostgreSQL 操作笔记
Golang migrate 做数据库变更管理
使用PostgreSQL做搜索引擎
Nginx 源码阅读(三): 连接池、内存池
Nginx 源码阅读(二): 请求处理
Nginx 源码阅读(一)
Go 泛型简明教程
KVM 显卡穿透给 Windows
使用 HTTP Router 处理 Telegram Bot 按钮回调
使用反射(reflect)对结构体赋值
GIN 是如何绑定参数的
你好 2022(2021 年终总结)
用Go导入大型CSV到PostgreSQL
使用 OpenWRT 搭建软路由
使用软KVM切换器 barrier 共享键鼠
SQL 防注入及原理
使用 gomock 测试 Go 代码
gevent不是黑魔法(二): gevent 实现
gevent不是黑魔法(一): greenlet 实现
用 entgo 替代 gorm
应用内使用crontab不是那么方便
单测时要不要 mock 数据库?
Sentry 自建指南
用selenium完成自动化任务
用闲置的安卓手机做垃圾电话短信过滤
推荐三个时间管理工具
一次事故反思
当JS遇到uint64:JS整数溢出问题
SQLite3 存储以及ACID原理
Redis源码阅读:pub/sub实现
Redis源码阅读:zset实现
Redis源码阅读:bitmap 位图的运算
Redis源码阅读:set是怎么做交并集运算的?
Redis源码阅读:list实现(ziplist, quicklist)
Redis源码阅读:RDB是怎么实现的
Redis源码阅读:AOF重写
Redis源码阅读:AOF持久化
Redis源码阅读:字典是怎么实现的
Redis源码阅读:key是怎么过期的
Redis源码阅读:执行命令
Redis源码阅读:启动过程
WAL(Write-ahead logging)的套路
搞定CORS问题
如何定位程序问题所在
设计一个IM归档系统
logrotate read only filesystem问题
Golang GIN写单测时,愉快的使用返回值
Python Queue源码分析
Go里优雅的使用全局配置
Golang sync.Map源码分析
Android滑动时隐藏FAB
Python中用tuple作为key
一些常用的算法思维
编写可维护的函数
为什么要把配置保存在仓库里?
Android自动展示和关闭进度条
Kotlin/Java 列表Protobuf序列化
deeplink结合路由处理扩展App的能力
怎么使用ViewModel 和 RecyclerView
Android手动挡MVVM
你好,2021!
来电拦截方案
你好,2021!
gRPC鉴权方案
Golang里,数据库migration方案
Android SwipeRefreshLayout左右滑动冲突的解决
Android调用gRPC的两个小工具函数
Android上结合kotlin使用coroutine
gRPC错误处理
Java collection的结构
为啥Redis使用pipelining会更快?
通过阳台种菜实现蔬菜自由
从GORM里学习到的panic处理方式
Go使用闭包简化数据库操作代码
TCMalloc设计文档学习
Flask和requests做一个简单的请求代理
查看更多