- 服务器
- 操作系统
- Linux
- 启动
- 进程
- 日志
- 内核
- Linux资源管理
- 网络
- 内核中日志模块和参数
- cpu
- CPU型号和分类
- cpuinfo无法显示部分core
- cpu_affinity
- 中断和smp_affinity
- 内核线程"migration"和CPU使用
- 软中断
- IRQ进程
- 微代码Microcode
- Linux 时钟管理
- Intel Turbo Boost技术和intel_pstate
- intel_pstate驱动详解
- acpi-cpufreq主频设置
- 修改ACPI事件:更改电源键默认操作
- 笔记本suspended后数秒无故wake up问题排查("ACPI: Waking up from system sleep state S3")
- 系统负载Load Averages的含义
- 分析Intel CPU Machine Check Exception(MCE)
- "NOHZ: local_softirq_pending 100"
- "NETDEV WATCHDOG: slave0 (bnx2): transmit queue 5 timed out"内核Panic排查
- Intel Skylake/Kaby Lake处理器系列简介
- Intel Skylake/Kaby Lake处理器超线程bug及处理
- dmidecode分析
- "unchecked MSR access error"
- AMD处理器ZEN一代之国产化海光
- 内核调度
- 内核模块
- 内存
- 存储
- 内核跟踪排查
- 为什么会发生segfault
- 内核bug排查方法
- 调试系统错误(Debugging System Faults)
- 获取内核core dump
- "Uhhuh. NMI received for unknown reason NN on CPU X"
- kdump over nfs
- kdump之后挂起启动而不重启
- 获取XEN内核core dump
- Core dump分析
- 在core文件生成过程中压缩生成的core文件
- 高Sys CPU的排查
- debug呆滞的进程
- 排查XEN服务器hang机core dump
- vmcore分析案例:"kernel BUG at fs/buffer.c:1270"
- 获取MySQL core
- 在CentOS 5.11中编译crash
- "Kernel panic - not syncing: stack-protector: Kernel stack is corrupted"
- "hrtimer: interrupt took xxxx ns"和"NOHZ: local_softirq_pending 100"
- "AER: Multiple Corrected error received"
- top始终显示load 1
- gdb和debuginfo
- Kernel Panic案例
- 性能
- 补丁
- 设备管理
- 存储
- 网络
- 备份
- 安全
- Red Hat
- Fedora
- 在MacBook Pro上实现Fedora和macOS双启动
- 使用dnf对Fedora进行系统大版本升级
- 升级到Fedora 27之后内核安装后不更新grub问题处理
- Fedora x86_64操作系统兼容运行32位程序
- 使用dnf安装源代码rpm
- 在Fedora中使用BCM4360无线网卡
- Fedora设置fcitx中文输入
- GoldenDict和英中字典设置
- 在Fedora中使用LXQt桌面
- 定制LXQt桌面菜单(添加新应用启动)
- 使用ImageMagick截屏
- 在LXQt桌面平铺窗口
- 在Fedora中切换桌面环境
- 在Xfce桌面禁用alt+鼠标左键移动窗口功能
- nVidia GT 750M显卡
- 在Fedora中播放mp4视频
- 在Fedora的chromium中播放flash
- CentOS
- 系统管理
- CentOS/RHEL周期性自动清理/tmp目录
- Linux操作系统登录超时设置
- Grub 2 boot loader
- OpenMLI
- Systemd
- 创建systemd服务单元
- systemd修改主机名
- systemd清理journal日志
- systemd管理cpupower
- systemd管理rc.local启动
- 使用journalctl检查和维护systemd日志文件
- 通过systemd设置禁止合上笔记本屏幕suspend
- 合上笔记本屏幕时关闭屏幕
- 通过systemd设置fedora系统hibernate休眠
- systemd-logind高负载和内存泄漏问题排查
- syslog-ng和systemd-journal远程日志存储
- systemd-journal日志转发syslog
- 在远程NFS存储上保存Linux系统日志
- systemd-resolvd本地网络域名解析服务
- 排查systemd-networkd配置问题
- Network
- rpm软件包管理
- "无法获得metalink"错误
- rpm使用tips
- 检查和解压缩rpm包内容
- 定时yum更新系统
- 最小化安装后的yum安装
- yum使用tips
- 使用源代码RPMs
- 使用dnf管理软件包
- 转换AliOS到CentOS
- 绝对不要删除keyutils-libs软件包
- 无需安装的解压缩rpm文件
- CentOS 5平台通过yum安装git
- 跨OS平台构建rpm包
- 升级CentOS 5系统的autoconf和automake工具
- 通过yum-builddep安装所有从SRPM编译RPM包所依赖软件包
- 执行"dnf upgrade"时报错"Error unpacking rpm package"处理
- 执行"rpm -Uvh --force xxx.rpm --nodeps"返回错误码135
- rpm命令报错"error: Failed to initialize NSS library"
- 清理系统不使用的旧内核
- RHEL/CentOS启动服务Tips
- Fedora
- Debian
- Ubuntu
- Ubuntu安装部署
- 使用tar方式备份和恢复系统
- 使用tar包手工安装多重启动的ubuntu
- Ubuntu的Hardware Enablement(HWE)内核
- "admin"账号已被Ubuntu保留无法使用
- 在U盘上安装Ubuntu
- Ubuntu 18.10安装NVIDIA驱动
- 创建具有持久化存储的Live Ubuntu U盘
- 安装XUbuntu
- 在MacBook Pro上安装Ubuntu Server
- 在MacBook Air上运行Ubuntu
- 在MacBook Pro上运行ubuntu设置WIFI
- apt upgrade之后提示"you may need to re-run your boot loader[grub]"
- 设置apt通过代理安装软件
- 选择最快的apt镜像网站
- 升级Ubuntu系统到18.04 LTS Bionic Beaver
- 避免Ubuntu内核升级
- 使用.iso镜像或U盘作为APT软件仓库
- 升级提示"packages have been kept back"
- Ubuntu系统管理
- Ubuntu安装部署
- Arch
- Kali
- Gentoo
- SuSE
- Linux From Scratch(LFS)
- X window
- FreeBSD
- Windows
- Linux
- 数据库
- 网络
- 存储
- 服务技术
- 消息队列
- 安全
- 虚拟化
- Captive portal认证
- Intel
- kvm
- kvm虚拟化架构
- kvm嵌套虚拟化
- qemu
- virtio
- kvm快速起步
- kvm虚拟化部署和管理
- Ubuntu环境KVM
- kvm虚拟化存储
- kvm性能
- kvm热迁移
- kvm DEBUG
- kvm测试
- libvirt
- 虚拟网络
- 性能
- docker
- Docker for Mac
- Docker Engine
- Docker Debugging
- Docker开发指南(学习和实践)
- 容器技术简介
- 安装Docker
- Docker快速起步
- Docker启动容器报错"error response from daemon: secret store is not initialized"
- 使用Docker快速部署不同版本CentOS容器
- Docker容器启动时启动服务
- 操作系统重启时自动启动Docker容器
- 在Docker容器中部署Python virtualenv环境
- 映射Docker容器内服务端口提供外部服务
- Docker卷
- Docker架构
- 在开发中应用Docker
- Docker编排(compose)
- 运行docker ce
- 导入和到处Docker容器(跨主机迁移)
- 从主机视角找出Docker容器的进程
- 检查Docker日志
- 在Docker容器中执行命令
- CoreOS
- Kata Containers
- xen
- VMware
- PowerVM
- Anbox
- Atomic
- LXD
- VirtualBox
- bhyve
- xhyve
- Vagrant
- 杂项
- IaaS
- 监控
- 性能
- 开发
- C
- Swift
- Java
- java的胡思乱想(白日梦)
- [Java简单案例]](develop/java/java_daydream/java_simple_example.md)
- Java输入输出
- Java循环
- Java数组
- Java面向对象编程
- 快速起步的一个例子:猜数字
- jshell
- groovy
- Java Trouble Shoot
- java的胡思乱想(白日梦)
- Go
- iOS
- Android
- 学习Android开发
- Android起步
- Android One和Android Go
- Nexus 5系统升级
- Root Android(Nexus 5)
- Android文件传输
- Android文件管理和apk安装
- Android文件系统读写挂载
- Android截屏和录屏
- 在Google Play购买软件
- Android开发环境准备
- Jetbrains Idea快捷键
- Gentoo Linux安装idea Jetbrains开发环境
- 在Nexus上安装Android 7 Nougat
- 在Nexus 6P上安装LineageOS 15.1
- Nexus 6P工厂镜像恢复
- Nexus 6P通过Full OTA镜像恢复
- 修复Nexus 6P无限循环重启
- 安装Elemental X内核
- 使用MultiROM在Nexus 5上安装多操作系统
- LineageOS
- 我的Android设备
- Android和Linux合体
- BlueTooth
- NFC近场通讯
- Raspberry Pi
- Ubuntu Touch
- BlackBerry
- Meego和Sailfish
- WebOS
- Python
- Python开发风格
- Python快速起步
- pip包管理
- 在古老的CentOS 5上安装Python 2.7以及virtualenv环境
- 在CentOS 6上安装Python 2.7以及virtualenv环境
- 在CentOS 7上安装Python 2.7以及virtualenv环境
- Ubuntu环境安装virualenv和virtualenvwrapper
- 在CentOS上安装Python3和virtualenv环境
- 在macOS上安装Python3和virtualenv环境
- 重建Python的virtualenv环境
- pip升级Python软件包
- 激活python解释器的自动完成功能
- init.py文件
- python编程风格
- python中文本编码
- 检查python对象类型
- python处理文本
- python中main函数作用
- python日志
- python日期
- python变量写文件
- python同时读取2个文件
- python列表
- python数组
- python字典
- Python的map函数
lambda
语法糖:无需定义函数名的简便方法- python过滤字符
- python百分比
- python三元运算
- python创建其他用户可写文件
- python清空文件内容
- python删除文件中某行
- python列表字符串转浮点数
- python多层嵌套字典KeyError
- "PEP 8(E731): do not assign a lambda expression, use a def"
- python的模块和包
- python获取系统cpu数量
- python nohup后台运行进程
- 使用Graphviz模块绘制图形
- python字典内容添加到列表
- python site-packages简介
- python去除字符串换行
- Python程序Daemon化
- Python函数返回多个值
- Python执行外部命令subprocess
- Python实现case/switch
- Python使用环境变量
- 将JSON字符串转换成Python字典
- 本地变量分配前被引用报错"local variable 'XXX' referenced before assignment"
- Python中对应于'null'的是什么?
- 在Python分割字符串
- 在Python中检查字符串是否被包含在另一个字符串中
- 在Python中执行命令的利器"subprocess"
- Python日志功能
- Python处理XML
- 安装阿里云对象存储OSS Python SDK和osscmd
- 阿里云日志服务SLS python SDK和CLI
- Python网络编程
- Python日志处理
- Python文件系统
- Python网络开发模块Twisted
- Flask开发Web
- DJongo开发Web
- Python学习案例
- Ruby
- JavaScript
- Node.js
- 浏览器
- PHP
- Mac
- 在mac上从iso镜像创建启动U盘
- 从macOS Recovery中重新安装macOS
- 从Time Machine备份中恢复Mac数据
- 检测Time Machine备份的Mac OS X版本
- 降级macOS
- 在VMware虚拟机中运行Mavericks
- 中文输入法
- macOS内建的文本朗读(英语)
- Mac平台使用VLC播放器的中文字幕显示
- Mac平台最佳视频播放器iina
- TextMate 2使用Tips
- Sublime 3使用Tips
- 在Mac OS X上安装Java多个版本
- 使用MacBook键盘在移动设备输入
- Mac网络
- macOS上使用ftp
- 从safari中导出打开的tab
- bird进程
- 在Mac上双启动方式安装Linux
- 创建macOS启动安装U盘
- 在Mac上使用Boot Camp Assistant安装Windows 10
- rEFInd工具详解
- 加速Time Machine备份速度
- 在mac上输入特殊字符
- Mac锁屏
- Mac吸入式光驱强制弹出光盘
- 为旧主机选择最快的Mac OS X版本
- 通过Reset NVRAM来恢复触控板
- Apple文件系统apfs
- 苹果充电器指示灯闪烁无法充电
- 通过SSHFS在Mac上远程开发Linux服务器程序
- 在macOS上安装配置vsftpd
- 清理macOS上的Purgeable磁盘空间
- 调整macOS的apfs容器空间
- 调整APFS文件系统出现"APFS Container Resize error code is 49153"
- Mac OS X挂载NFS共享
- MacOS快捷键
- 从Time Machine中恢复隐藏文件
- iTerm2中文显示问题处理
- iTerm2黑暗模式
- 安装使用GNU sed
- 具有BouchBar的新款MacBook和Linux
- 在Mac OS X中通过CLI命令行获取CPU信息
- 不能运行"not from a verified developer"程序
- Mac OS X Mavericks和iOS 6组合(体验最后的拟物化苹果生态)
- 将iPad作为Mac的第二块屏幕(sidecar)
- MacBook Pro 2018使用外接显示器
- macOS安装冻结问题处理
- macOS的磁盘工具First Aid功能
- 查找macOS的IP地址
- 升级macOS之后运行程序报错"missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcru"
- 在Mac上使用checksum校验文件
- shell
- bash
- bash快捷键
- shell的特殊变量
- 判断shell变量是否空字符串
- 字符串比较错误提示"unary operator expected"
- shell脚本中使用source和使用./cmd.sh区别
- here document用法(cat << EOF)
- 根据命令返回结果做if判断
- 使用sudo在文件中添加内容
- shell中的环境变量
- shell函数tips
- 生成随机数和随机字符串
- shell中使用数组
- shell中读取文件到bash数组
- 列出所有cron定时任务
- 在shell中计算
- 在bash计算
- shell中的break和continue指令
- 读取文件逐行处理元素
- 两个文件相减
- 在shell中使用while循环
- 在while循环中执行ssh中断循环的解决方法
- shell中调用函数返回值的方法
- shift的用法
- 移除换行
- 删除字符串最后n个字符
- 删除一个文件的最后一行
- 替换多个空格成为一个空格
- ``符号和脚本进程
- 同时赋值给多个变量
- 在shell中比较小数的大小
- sudo执行bash脚本报错"sudo: unable to execute"
- 获取字符串最后几个字母
- 对比目录文件异同
- 文件对比
- 判断字符串包含关系的方法
- 检查字符串长度
- "exec"指令的含义
- 从函数返回
- 检查变量是否是一个数值
- shell中判断字符串null值
- 删除文件名中包含"--"的文件
- 使用nohup执行while循环
- 修改nohup命令默认输出文件名"nohup.out"
- 通过SSH远程写入文件
- ping测试记录时间戳
- 软链接和文件名
- shell中字符串大写和小写转换
- shell中处理json数据工具jq
- shell检查主机是否alive
- shell中检查服务器进程使用cpu
- 获取网卡IP地址
- 高效清理文件系统大量文件的方法
- 找出系统端口监听服务进程
- 判断文件是否为空
- 执行rm,cp,mv命令出现"Argument list too long"报错的解决方法
- 切分字符串赋值给多个变量
- 计算字符串长度(字符数量)
- 删除字符串的最后字符
- 补全字符串
- 检查数字是偶数还是奇数
- 转换Linux uptime时间到易于理解的格式
- zsh
- sed和awk
- 实用工具
- sudo切换账号运行程序
- 修改用户帐号名/uid/gid的工具usermod和groupmod
- 脚本作为daemon运行
- cut使用举例
- sort排序
- 对cpu施加负载
- 多路复用终端管理器screen
- 多路复用终端管理器"增强版"byobu
- 随机输出文本文件中的行:shuf
- 使用usermod禁用帐号
- 使用tree展示目录结构树
- 根据进程名pgrep和pkill
- wget下载文件tips
- HTTP协议利器curl
- 命令执行超时检查工具timeout
- 脚本使用ssh的密码认证工具sshpass
- 并行执行ssh命令工具pssh
- 命令输出处理工具xargs
- 文件查找工具find
- parallel利用多核CPU加速Linux命令
- 命令速查表cheat
- 语音合成工具espeak
- 网络万能工具nc
- 限制命令的io调度和权重
- 配置修改工具augeas
- 高效压缩工具xz
- tar命令再认识
- echo命令再认识
- bash
- vim
- 文档
- 编程架构
- 机械键盘
- DevOps
- 基础架构工程师视角的DevOps
- 持续集成/交付/部署
- Git
- git代理配置
- git分支的新建与合并
- git的tag和branch
- git pull覆盖本地文件(完全舍弃本地文件)
- git合并时冲突放弃本地修改方法
- git远程操作
- git和dropbox冲突
- 针对不同域名git push时使用指定SSH key
- git忽略文件mode修改
- git重新基于master开发分支
- 合并多个commit
- git色彩显示
- 在不同git仓库代码使用不同用户名
- [git合并冲突解决](devops/git/git _merge_fix_conflicts.md)
- git checkout指定tag
- 从git仓库中清理敏感信息(如密码))
- git通过SSH Tunnel代理访问
- git文件的执行属性
- 修改git commit消息
- Gerrit
- Gitlab
- Gogs
- Jenkins
- Ansible
- Puppet
- 大数据
- 机器学习
- 学习
- 附录:个人工作室构建
- Who am I?