这个博客几乎无保留地发布了我的写作、翻译、技术笔记。我在工作时间之外做的事情基本都是处于自己的兴趣,比如这个博客。这些技术博客很多是我在探索和学习的时候记下来的,必定存在错误,请不要盲目地接受。有关个人想法的文章,有些只是过眼烟云,也记了下来,没有经过谨慎的思考,不成系统。这些想法很可能是错误的,甚至前后矛盾。我从高中的时候就开始记博客,本人现在的想法跟那个时候可能已经发生了较大的变化,阅读这些陈年旧事的时候请读者将这一点牢记在心。欢迎大家怀着批判的眼光阅读,和我进行讨论。
另,我是一个痛恨错别字的人,但可能有些文章可能没有经过检查就发布了,难免存在错别字,如有发现,欢迎指正,多谢。
- 2023年6月 (1)
- 09: 部署和维护开源软件的经验 (0)
- 2023年5月 (3)
- 31: 去印尼爬火山 (Mt.Rinjani) (16)
- 22: 一个十万行的 trackback (1)
- 15: 缅怀陈皓 (1)
- 2023年4月 (2)
- 19: 去南半球的海岛 (12)
- 01: 有关 MTU 和 MSS 的一切 (11)
- 2023年3月 (1)
- 20: 由一个子网掩码配置错误所想到的 (4)
- 2023年2月 (2)
- 25: 针对进程设置路由规则 (9)
- 20: Tcpdump 从 TCP_option_address 中根据真实 IP 过滤 (5)
- 2023年1月 (2)
- 15: 用 BPF 动态追踪 Python 程序 (3)
- 12: 2022 年的总结 (3)
- 2022年12月 (2)
- 23: 记录一次问题排查的故事 (6)
- 23: pngpaste – | tesseract stdin stdout (3)
- 2022年11月 (2)
- 27: PromCon 2022 演讲:Alerting with Confidence (0)
- 18: 没来的请举手 (0)
- 2022年10月 (1)
- 09: 婚礼回顾和一些经验分享 (24)
- 2022年8月 (8)
- 31: 沉浸式工作 (8)
- 20: 用 PromQL 计算 SLI 和 SLO (2)
- 17: 用 Wireshark 分析 TCP 吞吐瓶颈 (0)
- 10: 开源的世界如此之小?! (0)
- 09: Golang 的 Channel 是一种免费的无锁实现吗? (1)
- 09: Prometheus alert rules 拆分成多个查询表达式 (0)
- 07: Prometheus HTTP SD 框架 (0)
- 03: 程序 Hot reload config 的实现方式 (3)
- 2022年7月 (3)
- 17: Coredns 源码解析:启动流程 (3)
- 10: Side Project 成本最小化运行 (7)
- 08: 长连接负载均衡的问题 (2)
- 2022年6月 (4)
- 25: 无法 Patch (4)
- 19: 像设计 UI 一样去设计配置项 (5)
- 19: 心动网络宣传片的翻译 (1)
- 05: 我的删库经历 (8)
- 2022年5月 (2)
- 29: 系统的过载(Overload)以及处理思路 (4)
- 08: Docker 镜像构建的一些技巧 (3)
- 2022年3月 (2)
- 19: 分享一下“稍后阅读”的 random 功能 (3)
- 16: 用 Nginx 在公网上搭建加密数据通道 (3)
- 2022年2月 (1)
- 26: 2021 年年鉴 (9)
- 2021年11月 (3)
- 26: 寻找丢失的信号 (4)
- 14: Coredns 源码阅读(导读) (1)
- 06: SRE 的工作介绍 (18)
- 2021年10月 (4)
- 30: 多租户环境中的 TCP 限速(基于 iptables) (0)
- 27: 介绍 Lobbyboy 项目 (1)
- 22: Debug 一个在 uWSGI 下使用 subprocess 卡住的问题 (9)
- 20: TTY 到底是什么? (9)
- 2021年8月 (4)
- 26: Golang 的一个动态链接依赖问题 (6)
- 20: Django 优化数据库查询的一些经验 (0)
- 09: PromQL 使用多个 label 组合过滤 (0)
- 02: 《Prometheus Up & Running》阅读 (2)
- 2021年7月 (5)
- 24: PromQL 简明教程 (14)
- 20: Build 一个最小的 Redis Docker Image (9)
- 08: 警惕复用的陷阱 (7)
- 03: 开源软件源码编译指南 (5)
- 01: 为什么 Cloudflare 提供免费的服务? (1)
- 2021年6月 (5)
- 27: 博客迁移到 Cloudflare (22)
- 24: 最近的工作感悟 (27)
- 18: P99 是如何计算的 (11)
- 12: 使用 mtr 检查网络问题,以及注意事项 (1)
- 12: 在终端快速选中上一个命令的输出内容 (2)
- 2021年4月 (2)
- 22: 在你家公司使用 Django Migrate (2)
- 09: Docker (容器) 的原理 (24)
- 2021年3月 (3)
- 16: 瞎扯:软件的分层 (10)
- 08: 我在新加坡一个月的生活费明细 (8)
- 05: 写油猴脚本的传统艺能(Tampermonkey)- 教程 (2)
- 2021年2月 (1)
- 22: 如何杀死一个进程? (3)
- 2021年1月 (3)
- 27: 接手一个新的项目,我会关注的3个问题 (3)
- 24: React Hooks 基础教程 (0)
- 01: 2020年的总结 (28)
- 2020年12月 (2)
- 23: Devops 中的 Overfitting (3)
- 10: 程序员如何挑选钻戒 (18)
- 2020年10月 (1)
- 2020年9月 (2)
- 30: 对中台的一些想法 (1)
- 20: 实时上传数据备份文件到S3 (0)
- 2020年8月 (1)
- 27: 近况更新 (10)
- 2020年7月 (2)
- 21: Reaper 使用 ReaFir 插件对音频降噪教程 (0)
- 09: Google BBR 拥塞控制算法简单介绍 (5)
- 2020年6月 (2)
- 23: JavaBean, POJO, DTO, VO, 傻傻分不清楚? (2)
- 17: 幻读 (0)
- 2020年5月 (1)
- 10: Redis 的命令设计 (3)
- 2020年4月 (3)
- 07: Use the Index, Luke! 笔记6:增删改的索引 (0)
- 07: Use the Index, Luke! 笔记5:查询部分结果 (0)
- 06: 近况更新 (14)
- 2020年3月 (8)
- 31: Zoom 直播分享 Awesome Commandline 录像和资料下载 (3)
- 30: Use the Index, Luke! 笔记4:sorting 和 grouping (0)
- 27: 天堂的另一面 (2)
- 22: Use the Index, Luke! 笔记3:避免回表 (6)
- 18: Java 泛型初涉 (1)
- 15: Redis RESP3 的一些想法 (4)
- 05: 请不要再使用 __file__ 啦! (2)
- 03: 每行80个字符在今天(2020年)依然合理! (5)
- 2020年2月 (4)
- 29: Use the Index, Luke! 笔记2 性能、Join操作 (1)
- 25: 集合里的元素怎么“不见了”? (10)
- 23: IRedis 1.0 发布 (13)
- 09: Use the Index, Luke! 笔记1 (0)
- 2020年1月 (2)
- 12: IRedis开发记3:编译正则的难题 (12)
- 01: 2019年年鉴 (9)
- 2019年12月 (4)
- 16: Daemon Process (1)
- 07: 程序员如何高效和同行交流 (5)
- 05: Firefox Setup (10)
- 01: 硬盘分区介绍 (4)
- 2019年11月 (4)
- 20: 编译LFS的一些经验 (6)
- 17: /bin /usr/bin 和 /usr/local/bin 的故事 (5)
- 07: 你的Linux上有一个超酷的 TCP 代理! (2)
- 04: Vim LSP 配置 (8)
- 2019年10月 (2)
- 28: 单页应用的登陆验证方式 (6)
- 19: 杭州PyCon 2019 Slide: 《做Side Project的几个建议》 (2)
- 2019年9月 (4)
- 21: PyCon China 2019演讲Slide: Django Migration Under the Hood (2)
- 17: 坑爹的部署脚本 (7)
- 03: Java8 Stream API 介绍 (0)
- 02: IRedis 开发记2:CircleCI workflow 自动发布到 pypi (0)
- 2019年8月 (6)
- 27: 认识Hibernate (0)
- 20: 欧格玛教会与言论自由 (11)
- 18: IRedis 开发记录:Redis 命令语法的处理 (2)
- 11: 上海PyCon见! (4)
- 03: Django migration 原理 (5)
- 03: Linux 进程的生命周期 (4)
- 2019年7月 (3)
- 28: 如何正确实现分布式锁 (4)
- 13: Django 项目使用 CircleCI (6)
- 08: Redis客户端缓存设计(In-Process caching) (7)
- 2019年6月 (3)
- 27: Linux 文件系统 inode 介绍 (4)
- 18: Gitops 的一些实践经验 (0)
- 14: virtualenv的原理 (9)
- 2019年5月 (3)
- 28: Kernel space, user space, and syscall (0)
- 26: 谈谈预防故障的性价比 (1)
- 04: 厦门游记 (9)
- 2019年4月 (3)
- 27: Python 为什么这么慢? (13)
- 25: 连接池中的连接失效的几种处理方案 (0)
- 18: 程序员应该知道的时间概念 (5)
- 2019年3月 (2)
- 29: 用 ssh 传输文件 (5)
- 25: DNS 解析的原理 (0)
- 2019年2月 (3)
- 28: 我的线程池怎么没了? (5)
- 19: 证书换至 Let’s Encrypt(手动模式) (2)
- 02: 推荐 Vim 进阶书籍:《Vim 实用技巧》 (13)
- 2019年1月 (4)
- 22: 记一个 Python logging 多进程 rotate 问题 (1)
- 14: 时区问题“最佳实践” (6)
- 04: React 事件绑定的正确姿势 (3)
- 04: 2018年年鉴 (17)
- 2018年12月 (6)
- 20: SRE&Devops 每周分享 Issue #6 Closing (0)
- 14: SRE&Devops 每周分享 Issue #5 (1)
- 13: Nginx(ngx_lua) 过滤 10w 个 User ID (2)
- 11: 使用 ngx_lua (openresty)正确读取 HTTP 请求 body (2)
- 09: HTTP 长连接 (1)
- 07: SRE&Devops 每周分享 Issue #4 AWS Layer (0)
- 2018年11月 (6)
- 30: SRE&Devops 每周分享 Issue #3 (0)
- 23: SRE&Devops 每周分享 Issue #2 (0)
- 18: Nginx if 指令工作原理 (2)
- 17: SRE&Devops 每周分享 Issue #1 Opening (2)
- 10: 用 whitenoise 提供静态文件服务(Python) (1)
- 03: 5年博客路 (16)
- 2018年10月 (4)
- 26: 开始用 Ansible 管理机器了 (7)
- 21: Python 文化中的接口和协议 Slides (6)
- 12: 评价 GC 算法好坏的几个标准 (0)
- 08: uWSGI socket 队列被占满的问题 (0)
- 2018年9月 (7)
- 25: 推荐一个小众民谣乐队 Small Sur (0)
- 23: 介绍一下 graphviz/dot 的一些学习资料 (1)
- 17: 婚姻的决定:Everything Forever or Nothing Ever Again (4)
- 15: 索尼 Digital Paper Dpt-rp1 阅读器使用体验 (24)
- 09: 打开Wolfram之门 (4)
- 04: 使用uWSGI的spooler做异步任务 (8)
- 01: 一些命令行工具的增强版 (6)
- 2018年8月 (5)
- 26: LBYL与EAFP漫谈 (2)
- 23: Lua 的 pairs 和 ipairs 的区别 (0)
- 17: MIME types 详解 (2)
- 10: 构建大型Cron系统的思考 (0)
- 02: Django2.1版本不再支持Mysql5.5 (0)
- 2018年7月 (4)
- 30: 黄金年代的辉煌和焦虑 (1)
- 19: 程序员如何写PPT (3)
- 18: Python 提高对比效率的一个技巧(位运算&) (2)
- 10: PyCon2018 Review (Part 2) (4)
- 2018年6月 (7)
- 28: Python3.7 dataclass 介绍 (2)
- 24: 推荐一本计算机基础的科普书:《穿越计算机的迷雾》 (8)
- 21: 部署 Django 项目背后的原理:为什么需要 Nginx 和 Gunicron这些东西? (5)
- 14: 辅助Django开发的一些隐藏资源(文档) (1)
- 12: 《罪与罚》摘录 (2)
- 06: Gitlab自动部署方案(Systemd+nc) (1)
- 01: PyCon2018 Review (Part 1) (1)
- 2018年5月 (4)
- 24: 分布式定时任务的重复执行问题 (3)
- 18: 健康茁壮成长的Python项目需要什么? (2)
- 07: Git 在不同的项目使用不同的author (5)
- 03: OS X 多个 Python 优雅共存 (0)
- 2018年4月 (6)
- 18: 奇葩网站吐槽第四弹 (5)
- 18: 使用brew升级Python之后修复virtualenv和pipsi (0)
- 11: 搭建自己的静态 Wiki 站点(Vimwiki+Pages) (2)
- 10: Vim文件编码处理和重新打开乱码文件 (0)
- 06: 无价的价值 (5)
- 06: 爬虫如何判断一个页面更新了? (2)
- 2018年3月 (7)
- 29: Vim缩进有关的设置总结 (0)
- 29: Shell单引号、双引号和反引号的区别 (1)
- 21: 副作用还是Feature? (2)
- 15: 无处不在的同化 (4)
- 09: Python对象序列化与反序列(Pickle) (0)
- 09: 一次Mongodb的admin数据库导致的事故 (0)
- 02: 理解Python的Iterable和Iterator (3)
- 2018年2月 (6)
- 28: Python3 str混入bytes的解码问题 (0)
- 25: Python的命令行界面库 (0)
- 24: 看牙医 (0)
- 09: HTTP连接池(基于Python的requests和urllib3) (8)
- 06: TCP可以使用两次握手建立连接吗? (1)
- 04: 有关爬虫框架的设计的一些备忘 (8)
- 2018年1月 (5)
- 31: Vim:快速复制和替换 (1)
- 24: pytest插件开发笔记 (0)
- 22: Vim补全代码块神器Ultisnips (0)
- 04: Twitter机器人:今年还要工作多少天? (7)
- 03: 谈谈Python for循环的作用域 (4)
- 2017年12月 (10)
- 31: 2017年鉴 (5)
- 30: 闭包初探 (4)
- 28: 象棋与围棋 (1)
- 19: 上海越来越冷了…… (0)
- 18: Hash碰撞和解决策略 (1)
- 14: Tmux内部分享slides (3)
- 10: Linux的用户与管理 (4)
- 04: Vagrant入门 (2)
- 03: 阈值,阙值和阀值 (0)
- 03: 家庭和梦想——看《寻梦环游记》 (0)
- 2017年11月 (6)
- 24: tmux外貌篇:让你的tmux更好看 (3)
- 18: Python老鸟想告诉新手的事情 (4)
- 15: Vim使用相对行号进行一切操作 (0)
- 14: HHKB开箱 (3)
- 09: 终端使用技巧 (2)
- 01: Python 实现class_property (0)
- 2017年10月 (10)
- 30: Python脚本的编码声明 (2)
- 26: 推荐一个快速在Github打开当前代码行的Vim插件 (0)
- 25: 为什么要“包含头不包含尾”? (7)
- 24: 奇葩网站吐槽第三弹 (2)
- 23: 参加中国pycon2017 (0)
- 21: 爬虫常用的工具 (0)
- 18: 介绍Python2和Python3的兼容库six (1)
- 14: 我的WordPress全站HTTPS啦 (2)
- 13: 理解Python的import (7)
- 04: 推荐《Hymn to life》 (2)
- 2017年9月 (7)
- 30: 两个美食家 (2)
- 25: 解决在readthedocs编译PDF含中文的问题 (0)
- 17: 《猩球崛起3》:套路式的电影 (2)
- 11: 《Effective Python》小记 (0)
- 09: 个人抗风险基金的想法 (2)
- 06: 认识Python的MetaClass (0)
- 05: 理解Python对象的属性和描述器 (10)
- 2017年8月 (8)
- 25: 推荐音乐专辑《Labor》 (0)
- 20: 如何成为一名爬虫工程师 (16)
- 10: 西红柿鸡蛋面加狮子头 (0)
- 10: 调教Mac外接显示器(开启HiDPI) (18)
- 08: 奇葩网站吐槽第二弹 (3)
- 08: 理解Python的UnboundLocalError(Python的作用域) (5)
- 08: 使命召唤全系列游戏汇总 (0)
- 02: 对去中心化网络的信仰 (0)
- 2017年7月 (8)
- 30: 路由器折腾记(1):刷小米青春版路由器 (0)
- 28: Python正则表达式解惑 (2)
- 25: git-ext:在命令行提交PullRequests的小工具 (0)
- 21: Vim:移动窗口和tab (0)
- 20: tmux、vim和系统剪切板公用问题 (0)
- 15: 最近写程序的心得 (1)
- 06: 大学与腐朽 (3)
- 04: Vim使用正则表达式搜索和替换 (0)
- 2017年6月 (10)
- 29: 自定义git命令 (1)
- 27: 500部电影推荐 (0)
- 27: 编译安装proxychains4 (5)
- 24: 散伙 (8)
- 21: Linux文件打包和压缩命令总结 (2)
- 20: 博客维护:速度优化,嵌入instagram (2)
- 16: Python数据处理笔记(1) (0)
- 10: 千岛湖之行 (4)
- 01: Python lxml教程 (3)
- 01: VimScript学习笔记(12):快速开关(Toggle) (2)
- 2017年5月 (8)
- 28: 突如其来的一千块 (0)
- 20: 自行更换卡西欧电子表电池 (0)
- 19: 微信和telegram (7)
- 13: 部署Sentry (0)
- 11: 吐槽一些神奇的政府网站 (9)
- 04: 理解Python的with语句和上下文管理器 (0)
- 03: 关闭Ubuntu每次启动都会显示的错误弹窗 (2)
- 03: 分享Elasticsearch的故事 (2)
- 2017年4月 (6)
- 25: Django的信号机制 (2)
- 21: Python装饰器兼容加括号与不加括号的写法 (0)
- 21: 推荐一个Mac上管理Service的工具:LanuchRocket (0)
- 19: VimScript学习笔记(11):List和Dictionaries (0)
- 15: 极力推荐《巨人的陨落》和《世界的凛冬》 (3)
- 14: 记录一个pip安装错误 (2)
- 2017年3月 (6)
- 21: 《重来2》:远程工作不再遥远? (9)
- 19: 在担路网的实习经历 (2)
- 13: SLIC算法分割超像素原理及Python实现 (48)
- 09: 博客反垃圾评论之路 (5)
- 08: VimScript学习笔记(10):正则表达式 (0)
- 07: VimScript学习笔记(9):Excute和Normal (0)
- 2017年2月 (15)
- 23: VimScript学习笔记(8):函数 (0)
- 22: VimScript学习笔记(7):条件判断、比较和循环 (0)
- 18: WordPress通过SMTP发送邮件通知 (4)
- 17: 近况 (7)
- 17: Python文件的标准顺序 (0)
- 17: Python的字符串编码 (0)
- 14: Ubuntu终端和Vim使用Solarized配色 (4)
- 13: 滑雪记 (0)
- 10: Django的日志配置 (1)
- 09: VimScript学习笔记(6):变量 (0)
- 07: VimScript学习笔记(5):组织VimScript代码 (1)
- 06: 认识Django的Class-Based-View (1)
- 05: VimScript学习笔记(4):状态条 (0)
- 04: VimScript学习笔记(3):补位映射(Operator-Pending Mappings) (1)
- 02: Django的数据迁移(Data migration) (1)
- 2017年1月 (10)
- 21: 配置lisp开发环境 (5)
- 21: VimScript学习笔记(2):自动命令 (1)
- 21: 搬砖感悟 (4)
- 20: VimScript学习笔记(1):基本映射及常用功能 (12)
- 19: 编译安装Vim (4)
- 17: 维护博客:手动升级wordpress,全站HTTPS (0)
- 14: 对PyObject的一点理解 (0)
- 12: Python 为什么list不能作为字典的key? (14)
- 07: Django中null和blank的区别 (0)
- 05: 2016年总结 (0)
- 2016年12月 (2)
- 19: AngularJs与Django标签冲突的解决方案 (0)
- 14: 记一次Django数据迁移Bug (4)
- 2016年11月 (5)
- 30: 网络攻防课程科创小组报告 (0)
- 26: Git免除每次都输入密码 (1)
- 18: Git的几个技巧 (0)
- 18: 小公司不等于小作坊 (6)
- 07: Java单例设计模式(Singleton) (5)
- 2016年10月 (5)
- 19: Git的pull和fetch (7)
- 18: 使用iPhone一个月的感受 (3)
- 14: 维护了一下博客 (0)
- 08: Java优先队列(PriorityQueue)介绍 (0)
- 06: 详解 Python 的 “==” 和 “is” (0)
- 2016年9月 (1)
- 06: 去德国留学的访学小结 (0)
- 2016年8月 (5)
- 18: Apache2 “AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this message”警告 (0)
- 15: Mac pyenv安装失败的解决办法 (3)
- 13: Python对Json的解析 (0)
- 12: JavaScript异步执行的坑 (0)
- 07: Linus Torvalds谈代码品位:重写代码,排除特例 (2)
- 2016年7月 (1)
- 26: django数据库migrate失败的解决方法 (0)
- 2016年3月 (1)
- 26: 在德国生活的感受 (6)
- 2016年2月 (1)
- 24: 盗版之危害 (0)
- 2016年1月 (1)
- 31: 将编程视作艺术 (1)
- 2015年12月 (3)
- 2015年11月 (6)
- 25: 人人都应该懂点TCP (0)
- 23: 饥饿游戏 完结感想 (0)
- 21: 一个美国人的英文写作建议 (0)
- 13: 诈骗电话 (2)
- 12: 树莓派制作报警器 (0)
- 03: 外语学院《永远的莎士比》 讲座感想 (0)
- 2015年10月 (7)
- 25: 提高阅读速度的两点技巧 (0)
- 22: 理想与现实——《月亮和六便士》札记 (1)
- 17: 六朝古都游记 (2)
- 17: 树莓派控制3641BS数码管显示数字 (1)
- 15: 树莓派通过邮件上报实时IP,随时随地远程登录树莓派 (50)
- 12: WordPress网站迁移方案 (0)
- 01: 动听的代码:音乐编程语言Alda (1)
- 2015年9月 (4)
- 24: Python的哲学 (0)
- 23: Python 3.5的新特性 (0)
- 23: 学校不教的计算机课 (0)
- 20: 垃圾回收(GC)的三种基本方式 (2)
- 2015年8月 (4)
- 30: 在编程中体验纯粹的快乐 (0)
- 27: 从《美丽新世界》谈自由 (1)
- 24: 在快钱实习 (0)
- 22: 迷人的嗓音和迷人的故事——《Sleepyhead》 (2)
- 2015年7月 (1)
- 05: Python 的十个自然语言处理工具 (0)
- 2015年6月 (1)
- 11: 记一个愚蠢的bug (0)
- 2015年5月 (2)
- 16: 一年炉石传说的游戏体验 (0)
- 12: 《以撒的结合:重生》网页版图鉴 (0)
- 2015年4月 (6)
- 24: 分清 C++的指针、引用和数组 (4)
- 22: 笑话三则 (0)
- 16: 自由比皇帝更伟大——《悲惨世界》笔记 (3)
- 08: Git 10 周年访谈:Linus 讲述背后故事 (0)
- 02: 用 0x3f3f3f3f 设定最大int值的优点 (0)
- 02: Joel给计算机系学生的建议 (0)
- 2015年3月 (4)
- 31: 一个词法分析器的简单实现 (0)
- 29: 怎样才算健康的生活方式 (0)
- 23: MacVim 配置攻略 (2)
- 22: 学习培训课程的视频效果好吗? (0)
- 2015年2月 (1)
- 08: 语言的控制 (0)
- 2015年1月 (3)
- 2014年12月 (2)
- 09: 奥巴马成为首位写程序的美国总统 (0)
- 09: 青岛老城区的下水道好在哪里? (0)
- 2014年11月 (4)
- 27: 做优秀 UI 的七个建议(第二部分) (0)
- 27: 选择爱情的骑士 (0)
- 24: Git简明教程 (0)
- 18: Java集合总览 (1)
- 2014年10月 (1)
- 16: 1984,勇敢地活着 (0)
- 2014年9月 (3)
- 26: java问答:终极父类(六)——等待/唤醒和接口 (0)
- 25: Java 问答:终极父类(五)——toString() (0)
- 13: Hyperlapse快速视频背后的技术细节 (2)
- 2014年8月 (1)
- 01: 平庸之恶 (0)
- 2014年7月 (3)
- 18: Java程序员须知的七个日志管理工具 (0)
- 18: 苏州印象 (3)
- 03: 给孩子留一个书摊 (5)
- 2014年6月 (6)
- 26: 关于考试作弊 (3)
- 19: 你的工作不仅仅是编程 (2)
- 12: 推荐在线学习Java的英文资源 (0)
- 12: 关注女性命运——《千禧年三部曲》 (0)
- 07: 用好你的幻灯片——《演说之禅》 (2)
- 02: 使用ReentrantLock和Lambda表达式让同步更纯净 (0)
- 2014年5月 (12)
- 30: 新手学编程,从哪里开始? (6)
- 26: 程序员都是工程师吗? (4)
- 24: 不要学习代码,要学会思考 (14)
- 19: Java 问答:终极父类(四)——hashCode() (2)
- 19: Java 问答:终极父类(三)——finalize()和 getClass() (0)
- 17: 程序员职业之路的选择 (1)
- 16: 我是一名摄影家 (0)
- 15: 写给何小树的城市指南 (0)
- 13: 为什么一些语言会比别的快? (1)
- 11: Java的常见误区与细节 (6)
- 10: 跟朋友在一起玩游戏 (0)
- 06: 死神永生——读《三体》 (2)
- 2014年4月 (7)
- 26: 五种类型的程序员 (2)
- 22: 创业圣经——读《黑客与画家》 (2)
- 20: 纪念加西亚·马尔克斯 (2)
- 19: Junit中处理异常的另一种方式:catch-exception (0)
- 18: Java8采用Martin Fowler的方法创建内部DSL (0)
- 16: Linux HotSopt虚拟机GC线程的CPU占用率 (0)
- 07: J2EE概念介绍 (2)
- 2014年3月 (7)
- 31: 如何成为一名黑客 (0)
- 27: Java 问答:终极父类(二)——equals()方法 (1)
- 26: 为什么我喜欢Java (2)
- 20: Java 问答:终极父类(一)——clone()方法 (2)
- 11: 七个改变世界的Java项目 (0)
- 06: java中默认类型转换的小问题 (3)
- 01: 传统与创新 (0)
- 2014年2月 (2)
- 23: 欢迎来到互联网 (0)
- 02: 莫言和马尔克斯——读《生死疲劳》 (0)
- 2014年1月 (9)
- 28: 位运算的妙用 (3)
- 23: 读《人为什么活着》 (0)
- 20: 写博客教会我的事情 (3)
- 17: 中国特色操作系统 (5)
- 16: 博客从新浪博客迁移到godaddy (3)
- 15: 2013年总结 (2)
- 15: 《永不妥协》影评 (0)
- 15: 恨不相逢未嫁时——《廊桥遗梦》影评 (0)
- 15: 如何优雅地使用PPT (3)
- 2013年12月 (1)
- 15: 给明年依然年轻的我们 (1)
- 2013年11月 (2)
- 2013年7月 (1)
- 15: Looking for Freedom——《被解救的姜戈》 (0)
- 2013年5月 (1)
- 15: 简洁之道 (0)