Categories
- Photos 16
- Python 19
- OpenStack 36
- Algorithm 9
- DevOps 14
- Linux 11
- 编程随想 13
- 踩坑杂记 5
- Architecture 7
- Kubernetes 24
- 算法工程 3
- Quantitative 1
- Trading 1
Photos
- [行摄] 再见甘肃
- [行摄] 泰山
- [行摄] 苏州
- [行摄] 川西
- [行摄] 婺源
- [行摄] 雪后黄山
- [行摄] 上海武康路
- [行摄] 青岛
- [行摄] 北京海坨山
- [行摄] 妙峰秋色
- [行摄] 内蒙古
- [行摄] 梦回杭城
- [行摄] 彩云之南
- [行摄] 平遥和壶口
- [行摄] 青海湖
- [行摄] 河西走廊
Python
- Yield 和 Coroutine
- Iterator, Generator 与 Yield
- 实现一个简单的 SOCK V5 代理服务器 --- 协议
- 微信开发:一个智能陪聊公众号
- Tiny 2048
- Python application 的打包和发布——(下)
- Python application 的打包和发布——(上)
- Wepy--终端天气预报小工具
- Python 的单元测试之 mock
- Python 的单元测试之 tox
- 为什么协程的全局变量无需加锁
- Python 的单元测试之 unittest
- Python 求解数独
- __import__ 与动态加载 python module
- 理解 WSGI 框架
- 理解 Python 关键字 With
- 理解 Python 引用、浅拷贝和深拷贝
- 理解 Python object 的 mutable 和 immutable
- 深入理解 Python 的 == 和 is
OpenStack
- 缩减镜像 virtual size 记
- 关于 CPU mode 选取的一些经验
- Cinder QoS 简介
- 多因子认证之 Keystone TOTP
- Multiple Domain and LDAP
- 从 Helion OpenStack 浅谈 OpenStack 的产品化
- Keystone Google Federation With OpenID
- Keystone Federation Identity With SAML2
- Keystone 集成 LDAP
- 理解 Keystone 的四种 Token
- 理解 RPC 之 oslo.messaging
- 浅谈如何设计一个秒级的 OpenStack 计费系统
- Ceilemeter 的 sample 和 event
- OpenStack 日志搜集分析之 ELK
- Cgroup 与虚拟机的 QoS
- Nova 是如何统计 OpenStack 资源
- 如何设计 Multi-Region
- 理解 USB Passthrough
- Openstack 性能测试之 Rally
- Haproxy 与 OpenStack-API 安全
- 详解 Nova 中的 Region, Cell, AZ 和 Host Aggregates
- Nova-KVM 性能调优
- OpenStack 的 HA 方案
- Nova 中的协程 -- context switch & monkey patch (三)
- Nova 中的协程 -- 同步 (二)
- Nova 中的协程 -- 并发 (一)
- Nova 快照分析
- 私有云镜像制作二三事
- Heat 支持查询 Autoscaling Group 下的虚拟机
- OpenStack 的分页查询
- An Introduction to Heat
- 理解 Role, Policy 以及 Role-Based Access Control
- 理解 Keystone
- CPU Pinning 简介
- 深入理解 nova-api 的 WSGI
- 调试 OpenStack
Algorithm
- 理解 Consistent Hashing
- 大话编程中的 time
- 理解浮点数
- 理解 Copy On Write 技术
- 理解 Time-based One-Time Password Algorithm
- 理解 HMAC-Based One-Time Password Algorithm
- 理解 RSA 算法
- 理解 Deffie-Hellman 密钥交换算法
- 理解 UUID
DevOps
- 稳定性建设 Guide
- 测试的重要性
- 读 Google《SRE》第六章有感 ——— 告警配置的一些原则和经验
- LVM 扩展逻辑卷
- 版本号命名指南
- 如何配置优雅的代理
- 几个常用的 Git 高级命令
- 搭建 pypi 源
- 搭建 yum 源
- 一起来编个 RPM 包
- 搭建 Jenkins
- 搭建 Gerrit
- 搭建 GitLab
- vim 养成记
Linux
- 进程究竟用了多少内存
- 话说 TCP 参数 net.ipv4.tcp_window_scaling
- 我的进程为什么退出了
- SSH 远程执行命令二三事
- 理解 CPU Cache
- 如何优雅地运行一个 Daemon
- Linux Control Group 简介
- 理解 stack --- 函数是如何调用的
- 理解 heap --- 实现一个简单的 malloc
- 从地址空间理解 fork
- Linux 调试三剑客——strace,lsof,tcpdump
编程随想
- 再读《聪明的投资者》—— Review 近 3 年观点
- 坡岛杂记一
- Docker 兴衰记 —— 关于开源的一些思考
- 《聪明的投资者》—— 走出焦虑
- 谈谈校招
- 漫话字符编码
- 漫话云计算 (二) 百舸争流的公有云
- 漫话云计算 (一) 简介与起源
- 《人月神话》贵族专制和民主政治章节读后感
- 赌书消得泼茶香
- 浅谈后端面试指南
- 工作三周年
- 记一次 patch 提交
踩坑杂记
- 容器中的 ntpdate 踩坑杂记
- 同局域网下的 Iptables DNAT
- tcpdump 抓了大于 MTU 的包
- 复合主键 ORM 的 query.all()
- 一次批量重启引发的 Neutron 大面积网络故障
Architecture
- The tail at large scale 阅读笔记
- Borg: the Next Generation 阅读笔记
- Large-scale cluster management at Google with Borg 阅读笔记
- Twine: A Unified Cluster Management System for Shared Infrastructure 阅读笔记
- 如何编写相对标准的后端项目(二)设计 Restful API
- 如何编写相对标准的后端项目 (一)组织与运行
- 理解 REST 风格
Kubernetes
- KubeZoo 的核心理念 —— 协议转换(二)
- Kubernetes 多租户 KubeZoo 简介(一)
- Flink On K8S
- 云上成本优化和架构演进
- K8S 日志搜集演进
- K8S 下容器的登陆、安全等演进
- 聊聊云上弹性的演进
- K8S 监控告警原生演进
- GPU 兼容性的那些事
- PaaS 建设反思 (二) —— 一层包错的 API
- PaaS 建设反思 (一) —— 一言难尽的胖容器
- 理解 K8S 的设计精髓之 list-watch
- 奔跑在 K8S 上的 Tensorflow (三) 一些调优
- 记一次 K8S 自研网络插件的泛洪问题
- 奔跑在 K8S 上的 Tensorflow (二) 冉冉升起的 kubeflow
- K8S 的调度(二) 提升资源利用率
- [首发于 InfoQ]奔跑在 K8S 上的 Tensorflow (一) 起源
- 谈谈业务容器化 (二) 降低接入成本
- 谈谈业务容器化 (一) 选对业务方
- 蘑菇街 K8S 为什么不选择 flannel 网络模型
- K8S 的调度 (一) 抽象优雅的 Affinity
- Redis 和 Jaguar 迁入 K8S 记
- 谈谈 K8S 的 pod eviction
- 谈谈 K8S 资源预留