技术文章摘抄
首页
上一级
12步通关求职面试-完
22 讲通关 Go 语言-完
24讲吃透分布式数据库-完
300分钟吃透分布式缓存-完
AI技术内参
CNCF X 阿里巴巴云原生技术公开课
DDD 微服务落地实战
DDD实战课
Dubbo源码解读与实战-完
ElasticSearch知识体系详解
JVM 核心技术 32 讲(完)
Java 业务开发常见错误 100 例
Java 并发编程 78 讲-完
Java 性能优化实战-完
Java 核心技术面试精讲
Java并发编程实战
Java核心技术面试精讲
Kafka核心技术与实战
Kafka核心源码解读
Kubernetes 从上手到实践
Kubernetes 实践入门指南
Kubernetes入门实战课
Linux内核技术实战课
MySQL实战45讲
MySQL实战宝典
Netty 核心原理剖析与 RPC 实践-完
OAuth2.0实战课
OKR组织敏捷目标和绩效管理-完
OpenResty从入门到实战
Redis 核心原理与实战
Redis 核心技术与实战
Redis 源码剖析与实战
RocketMQ 实战与进阶(完)
Serverless 技术公开课(完)
ShardingSphere 核心原理精讲-完
Spring Boot 实战开发
Spring Security 详解与实操
SpringCloud微服务实战(完)
Vim 实用技巧必知必会
ZooKeeper源码分析与实战-完
中间件核心技术与实战
互联网消费金融高并发领域设计
从 0 开始学架构
代码之丑
全解网络协议
分布式中间件实践之路(完)
分布式技术原理与实战45讲-完
分布式链路追踪实战-完
前端工程化精讲-完
即时消息技术剖析与实战
后端技术面试38讲
容器实战高手课
容量保障核心技术与实战
左耳听风
微服务质量保障 20 讲-完
技术与商业案例解读
技术管理实战 36 讲
技术领导力实战笔记
持续交付36讲
李智慧 · 高并发架构实战课
架构设计面试精讲
案例上手 Spring Boot WebFlux(完)
正则表达式入门课
消息队列高手课
深入剖析 MyBatis 核心原理-完
深入拆解Java虚拟机
深入浅出 Docker 技术栈实践课(完)
深入浅出 Java 虚拟机-完
深入浅出云计算
深入浅出可观测性
深入浅出计算机组成原理
深入理解 Sentinel(完)
由浅入深吃透 Docker-完
白话法律42讲
白话设计模式 28 讲(完)
硅谷产品实战36讲
程序员的数学课
计算机基础实战课
说透低代码
说透性能测试
赵成的运维体系管理课
趣谈网络协议
软件工程之美
透视HTTP协议
重学操作系统-完
重学数据结构与算法-完
陈天 · Rust 编程第一课
零基础入门Spark
领域驱动设计实践(完)
高并发系统设计40问
捐赠
目录
12步通关求职面试-完
00 开篇词:了解面试“潜规则”,从海选中脱颖而出.md
01 设计一份吸引面试官的简历.md
02 读懂职位 JD,精准投递简历.md
03 把握投递简历的黄金时间段.md
04 做好充分的准备去面试.md
05 把握面试时的关键点.md
06 捕捉 HR 微表情,做出应对策略.md
07 巧妙推销自己的 3 个技巧.md
08 认清自身实力,明确求职方向.md
09 判断公司背景,做出合理选择.md
10 了解行业薪资,清晰找准定位.md
11 目标明确,阐明沟通.md
12 工作交接流程福利衔接.md
22 讲通关 Go 语言-完
00 开篇词 Go 为开发者的需求设计,带你实现高效工作.md
01 基础入门:编写你的第一个 Go 语言程序.md
02 数据类型:你必须掌握的数据类型有哪些?.md
03 控制结构:if、for、switch 逻辑语句的那些事儿.md
04 集合类型:如何正确使用 array、slice 和 map?.md
05 函数和方法:Go 语言中的函数和方法到底有什么不同?.md
06 struct 和 interface:结构体与接口都实现了哪些功能?.md
07 错误处理:如何通过 error、deferred、panic 等处理错误?.md
08 并发基础:Goroutines 和 Channels 的声明与使用.md
09 同步原语:sync 包让你对并发控制得心应手.md
10 Context:你必须掌握的多线程并发控制神器.md
11 并发模式:Go 语言中即学即用的高效并发模式.md
12 指针详解:在什么情况下应该使用指针?.md
13 参数传递:值、引用及指针之间的区别?.md
14 内存分配:new 还是 make?什么情况下该用谁?.md
15 运行时反射:字符串和结构体之间如何转换?.md
16 非类型安全:让你既爱又恨的 unsafe.md
17 SliceHeader:slice 如何高效处理数据?.md
18 质量保证:Go 语言如何通过测试保证质量?.md
19 性能优化:Go 语言如何进行代码检查和优化?.md
20 协作开发:模块化管理为什么能够提升研发效能?.md
21 网络编程:Go 语言如何玩转 RESTful API 服务?.md
22 网络编程:Go 语言如何通过 RPC 实现跨平台服务?.md
23 结束语 你的 Go 语言成长之路.md
24讲吃透分布式数据库-完
00 开篇词 吃透分布式数据库,提升职场竞争力.md
01 导论:什么是分布式数据库?聊聊它的前世今生.md
02 SQL vs NoSQL:一次搞清楚五花八门的“SQL”.md
03 数据分片:如何存储超大规模的数据?.md
04 数据复制:如何保证数据在分布式场景下的高可用?.md
05 一致性与 CAP 模型:为什么需要分布式一致性?.md
06 实践:设计一个最简单的分布式数据库.md
07 概要:什么是存储引擎,为什么需要了解它?.md
08 分布式索引:如何在集群中快速定位数据?.md
09 日志型存储:为什么选择它作为底层存储?.md
10 事务处理与恢复(上):数据库崩溃后如何保证数据不丢失?.md
11 事务处理与恢复(下):如何控制并发事务?.md
12 引擎拓展:解读当前流行的分布式存储引擎.md
13 概要:分布式系统都要解决哪些问题?.md
14 错误侦测:如何保证分布式系统稳定?.md
15 领导选举:如何在分布式系统内安全地协调操作?.md
16 再谈一致性:除了 CAP 之外的一致性模型还有哪些?.md
17 数据可靠传播:反熵理论如何帮助数据库可靠工作?.md
18 分布式事务(上):除了 XA,还有哪些原子提交算法吗?.md
19 分布式事务(下):Spanner 与 Calvin 的巅峰对决.md
20 共识算法:一次性说清楚 Paxos、Raft 等算法的区别.md
21 知识串讲:如何取得性能和可扩展性的平衡?.md
22 发展与局限:传统数据库在分布式领域的探索.md
23 数据库中间件:传统数据库向分布式数据库的过渡.md
24 现状解读:分布式数据库的最新发展情况.md
加餐1 概念解析:云原生、HTAP、图与内存数据库.md
加餐2 数据库选型:我们该用什么分布式数据库?.md
300分钟吃透分布式缓存-完
00 开篇寄语:缓存,你真的用对了吗?.md
01 业务数据访问性能太低怎么办?.md
02 如何根据业务来选择缓存模式和组件?.md
03 设计缓存架构时需要考量哪些因素?.md
04 缓存失效、穿透和雪崩问题怎么处理?.md
05 缓存数据不一致和并发竞争怎么处理?.md
06 Hot Key和Big Key引发的问题怎么应对?.md
07 MC为何是应用最广泛的缓存组件?.md
08 MC系统架构是如何布局的?.md
09 MC是如何使用多线程和状态机来处理请求命令的?.md
10 MC是怎么定位key的.md
11 MC如何淘汰冷key和失效key.md
12 为何MC能长期维持高性能读写?.md
13 如何完整学习MC协议及优化client访问?.md
14 大数据时代,MC如何应对新的常见问题?.md
15 如何深入理解、应用及扩展 Twemproxy?.md
16 常用的缓存组件Redis是如何运行的?.md
17 如何理解、选择并使用Redis的核心数据类型?.md
18 Redis协议的请求和响应有哪些“套路”可循?.md
19 Redis系统架构中各个处理模块是干什么的?.md
20 Redis如何处理文件事件和时间事件?.md
21 Redis读取请求数据后,如何进行协议解析和处理.md
22 怎么认识和应用Redis内部数据结构?.md
23 Redis是如何淘汰key的?.md
24 Redis崩溃后,如何进行数据恢复的?.md
25 Redis是如何处理容易超时的系统调用的?.md
26 如何大幅成倍提升Redis处理性能?.md
27 Redis是如何进行主从复制的?.md
28 如何构建一个高性能、易扩展的Redis集群?.md
29 从容应对亿级QPS访问,Redis还缺少什么?.md
30 面对海量数据,为什么无法设计出完美的分布式缓存体系?.md
31 如何设计足够可靠的分布式缓存体系,以满足大中型移动互联网系统的需要?.md
32 一个典型的分布式缓存系统是什么样的?.md
33 如何为秒杀系统设计缓存体系?.md
34 如何为海量计数场景设计缓存体系?.md
35 如何为社交feed场景设计缓存体系?.md
AI技术内参
000 开篇词 你的360度人工智能信息助理.md
001 聊聊2017年KDD大会的时间检验奖.md
002 精读2017年KDD最佳研究论文.md
003 精读2017年KDD最佳应用数据科学论文.md
004 精读2017年EMNLP最佳长论文之一.md
005 精读2017年EMNLP最佳长论文之二.md
006 精读2017年EMNLP最佳短论文.md
007 精读2017年ICCV最佳研究论文.md
008 精读2017年ICCV最佳学生论文.md
009 如何将深度强化学习应用到视觉问答系统?.md
010 精读2017年NIPS最佳研究论文之一:如何解决非凸优化问题?.md
011 精读2017年NIPS最佳研究论文之二:KSD测试如何检验两个分布的异同?.md
012 精读2017年NIPS最佳研究论文之三:如何解决非完美信息博弈问题?.md
013 WSDM 2018论文精读:看谷歌团队如何做位置偏差估计.md
014 WSDM 2018论文精读:看京东团队如何挖掘商品的替代信息和互补信息.md
015 WSDM 2018论文精读:深度学习模型中如何使用上下文信息?.md
016 The Web 2018论文精读:如何对商品的图片美感进行建模?.md
017 The Web 2018论文精读:如何改进经典的推荐算法BPR?.md
018 The Web 2018论文精读:如何从文本中提取高元关系?.md
019 SIGIR 2018论文精读:偏差和流行度之间的关系.md
020 SIGIR 2018论文精读:如何利用对抗学习来增强排序模型的普适性?.md
021 SIGIR 2018论文精读:如何对搜索页面上的点击行为进行序列建模?.md
022 CVPR 2018论文精读:如何研究计算机视觉任务之间的关系?.md
023 CVPR 2018论文精读:如何从整体上对人体进行三维建模?.md
024 CVPR 2018论文精读:如何解决排序学习计算复杂度高这个问题?.md
025 ICML 2018论文精读:模型经得起对抗样本的攻击?这或许只是个错觉.md
026 ICML 2018论文精读:聊一聊机器学习算法的公平性问题.md
027 ICML 2018论文精读:优化目标函数的时候,有可能放大了不公平?.md
028 ACL 2018论文精读:问答系统场景下,如何提出好问题?.md
029 ACL 2018论文精读:什么是对话中的前提触发?如何检测?.md
030 ACL 2018论文精读:什么是端到端的语义哈希?.md
030 复盘 7 一起来读人工智能国际顶级会议论文.md
031 经典搜索核心算法:TF-IDF及其变种.md
032 经典搜索核心算法:BM25及其变种(内附全年目录).md
033 经典搜索核心算法:语言模型及其变种.md
034 机器学习排序算法:单点法排序学习.md
035 机器学习排序算法:配对法排序学习.md
036 机器学习排序算法:列表法排序学习.md
037 查询关键字理解三部曲之分类.md
038 查询关键字理解三部曲之解析.md
039 查询关键字理解三部曲之扩展.md
040 搜索系统评测,有哪些基础指标?.md
041 搜索系统评测,有哪些高级指标?.md
042 如何评测搜索系统的在线表现?.md
043 文档理解第一步:文档分类.md
044 文档理解的关键步骤:文档聚类.md
045 文档理解的重要特例:多模文档建模.md
046 大型搜索框架宏观视角:发展、特点及趋势.md
047 多轮打分系统概述.md
048 搜索索引及其相关技术概述.md
049 PageRank算法的核心思想是什么?.md
050 经典图算法之HITS.md
051 社区检测算法之模块最大化
052 机器学习排序算法经典模型:RankSVM.md
053 机器学习排序算法经典模型:GBDT.md
054 机器学习排序算法经典模型:LambdaMART.md
055 基于深度学习的搜索算法:深度结构化语义模型.md
056 基于深度学习的搜索算法:卷积结构下的隐含语义模型.md
057 基于深度学习的搜索算法:局部和分布表征下的搜索模型.md
057 复盘 1 搜索核心技术模块.md
058 简单推荐模型之一:基于流行度的推荐模型.md
059 简单推荐模型之二:基于相似信息的推荐模型.md
060 简单推荐模型之三:基于内容信息的推荐模型.md
061 基于隐变量的模型之一:矩阵分解.md
062 基于隐变量的模型之二:基于回归的矩阵分解.md
063 基于隐变量的模型之三:分解机.md
064 高级推荐模型之一:张量分解模型.md
065 高级推荐模型之二:协同矩阵分解.md
066 高级推荐模型之三:优化复杂目标函数.md
067 推荐的Exploit和Explore算法之一:EE算法综述.md
068 推荐的Exploit和Explore算法之二:UCB算法.md
069 推荐的Exploit和Explore算法之三:汤普森采样算法.md
070 推荐系统评测之一:传统线下评测.md
071 推荐系统评测之二:线上评测.md
072 推荐系统评测之三:无偏差估计.md
073 现代推荐架构剖析之一:基于线下离线计算的推荐架构.md
074 现代推荐架构剖析之二:基于多层搜索架构的推荐系统.md
075 现代推荐架构剖析之三:复杂现代推荐架构漫谈.md
076 基于深度学习的推荐模型之一:受限波兹曼机.md
077 基于深度学习的推荐模型之二:基于RNN的推荐系统.md
078 基于深度学习的推荐模型之三:利用深度学习来扩展推荐系统.md
078 复盘 2 推荐系统核心技术模块.md
079 广告系统概述.md
080 广告系统架构.md
081 广告回馈预估综述.md
082 Google的点击率系统模型.md
083 Facebook的广告点击率预估模型.md
084 雅虎的广告点击率预估模型.md
085 LinkedIn的广告点击率预估模型.md
086 Twitter的广告点击率预估模型.md
087 阿里巴巴的广告点击率预估模型.md
088 什么是基于第二价位的广告竞拍?.md
089 广告的竞价策略是怎样的?.md
090 如何优化广告的竞价策略?.md
091 如何控制广告预算?.md
092 如何设置广告竞价的底价?.md
093 聊一聊程序化直接购买和广告期货.md
094 归因模型:如何来衡量广告的有效性.md
095 广告投放如何选择受众?如何扩展受众群?.md
096 复盘 4 广告系统核心技术模块.md
096 如何利用机器学习技术来检测广告欺诈?.md
097 LDA模型的前世今生.md
098 LDA变种模型知多少.md
099 针对大规模数据,如何优化LDA算法?.md
100 基础文本分析模型之一:隐语义分析.md
101 基础文本分析模型之二:概率隐语义分析.md
102 基础文本分析模型之三:EM算法.md
103 为什么需要Word2Vec算法?.md
104 Word2Vec算法有哪些扩展模型?.md
105 Word2Vec算法有哪些应用?.md
106 序列建模的深度学习利器:RNN基础架构.md
107 基于门机制的RNN架构:LSTM与GRU.md
108 RNN在自然语言处理中有哪些应用场景?.md
109 对话系统之经典的对话模型.md
110 任务型对话系统有哪些技术要点?.md
111 聊天机器人有哪些核心技术要点?.md
112 什么是文档情感分类?.md
113 如何来提取情感实体和方面呢?.md
114 复盘 3 自然语言处理及文本处理核心技术模块.md
114 文本情感分析中如何做意见总结和搜索?.md
115 什么是计算机视觉?.md
116 掌握计算机视觉任务的基础模型和操作.md
117 计算机视觉中的特征提取难在哪里?.md
118 基于深度学习的计算机视觉技术(一):深度神经网络入门.md
119 基于深度学习的计算机视觉技术(二):基本的深度学习模型.md
120 基于深度学习的计算机视觉技术(三):深度学习模型的优化.md
121 计算机视觉领域的深度学习模型(一):AlexNet.md
122 计算机视觉领域的深度学习模型(二):VGG & GoogleNet.md
123 计算机视觉领域的深度学习模型(三):ResNet.md
124 计算机视觉高级话题(一):图像物体识别和分割.md
125 计算机视觉高级话题(二):视觉问答.md
126 计算机视觉高级话题(三):产生式模型.md
126复盘 5 计算机视觉核心技术模块.md
127 数据科学家基础能力之概率统计.md
128 数据科学家基础能力之机器学习.md
129 数据科学家基础能力之系统.md
130 数据科学家高阶能力之分析产品.md
131 数据科学家高阶能力之评估产品.md
132 数据科学家高阶能力之如何系统提升产品性能.md
133 职场话题:当数据科学家遇见产品团队.md
134 职场话题:数据科学家应聘要具备哪些能力?.md
135 职场话题:聊聊数据科学家的职场规划.md
136 如何组建一个数据科学团队?.md
137 数据科学团队养成:电话面试指南.md
138 数据科学团队养成:Onsite面试面面观.md
139 成为香饽饽的数据科学家,如何衡量他们的工作呢?.md
140 人工智能领域知识体系更新周期只有5~6年,数据科学家如何培养?.md
141 数据科学家团队组织架构:水平还是垂直,这是个问题.md
142 数据科学家必备套路之一:搜索套路.md
143 数据科学家必备套路之二:推荐套路.md
144 数据科学家必备套路之三:广告套路.md
145 如何做好人工智能项目的管理?.md
146 数据科学团队必备的工程流程三部曲.md
147 数据科学团队怎么选择产品和项目?.md
148 曾经辉煌的雅虎研究院.md
149 微软研究院:工业界研究机构的楷模.md
150 复盘 6 数据科学家与数据科学团队是怎么养成的?.md
150 聊一聊谷歌特立独行的混合型研究.md
151 精读AlphaGo Zero论文.md
152 2017人工智能技术发展盘点.md
153 如何快速学习国际顶级学术会议的内容?.md
154 在人工智能领域,如何快速找到学习的切入点?.md
155 人工智能技术选择,该从哪里获得灵感?.md
156 内参特刊 和你聊聊每个人都关心的人工智能热点话题.md
156 近在咫尺,走进人工智能研究.md
结束语 雄关漫道真如铁,而今迈步从头越.md
CNCF X 阿里巴巴云原生技术公开课
01 第一堂“云原生”课.md
02 容器基本概念.md
03 Kubernetes 核心概念.md
04 理解 Pod 和容器设计模式.md
05 应用编排与管理:核心原理.md
06 应用编排与管理.md
07 应用编排与管理:Job & DaemonSet.md
08 应用配置管理.md
09 应用存储和持久化数据卷:核心知识.md
10 应用存储和持久化数据卷:存储快照与拓扑调度(至天).md
11 可观测性:你的应用健康吗?(莫源).md
12 可观测性-监控与日志(莫源).md
13 Kubernetes 网络概念及策略控制(叶磊).md
14 Kubernetes Service(溪恒).md
15 从 0 开始创作云原生应用(殷达).md
16 深入解析 Linux 容器(华敏).md
DDD 微服务落地实战
00 开篇词 让我们把 DDD 的思想真正落地.md
01 DDD :杜绝软件退化的利器.md
02 以电商支付功能为例演练 DDD.md
03 DDD 是如何落地到数据库设计的?.md
04 领域模型是如何指导程序设计的?.md
05 聚合、仓库与工厂:傻傻分不清楚.md
06 限界上下文:冲破微服务设计困局的利器.md
07 在线订餐场景中是如何开事件风暴会议的?.md
08 DDD 是如何解决微服务拆分难题的?.md
09 DDD 是如何落地微服务设计实现的?.md
10 微服务落地的技术实践.md
11 解决技术改造困局的钥匙:整洁架构.md
12 如何设计支持快速交付的技术中台战略?.md
13 如何实现支持快速交付的技术中台设计?.md
14 如何设计支持 DDD 的技术中台?.md
15 如何设计支持微服务的技术中台?.md
16 基于 DDD 的代码设计演示(含 DDD 的技术中台设计).md
17 基于 DDD 的微服务设计演示(含支持微服务的 DDD 技术中台设计).md
18 基于事件溯源的设计开发.md
DDD实战课
00 开篇词 学好了DDD,你能做什么?.md
01 领域驱动设计:微服务设计为什么要选择DDD.md
02 领域、子域、核心域、通用域和支撑域:傻傻分不清?.md
03 限界上下文:定义领域边界的利器
04 实体和值对象:从领域模型的基础单元看系统设计.md
05 聚合和聚合根:怎样设计聚合?.md
06 领域事件:解耦微服务的关键.md
07 DDD分层架构:有效降低层与层之间的依赖.md
08 微服务架构模型:几种常见模型的对比和分析.md
09 中台:数字转型后到底应该共享什么?.md
10 DDD、中台和微服务:它们是如何协作的?.md
11 DDD实践:如何用DDD重构中台业务模型?.md
12 领域建模:如何用事件风暴构建领域模型?.md
13 代码模型(上):如何使用DDD设计微服务代码模型?.md
14 代码模型(下):如何保证领域模型与代码模型的一致性?.md
15 边界:微服务的各种边界在架构演进中的作用?.md
16 视图:如何实现服务和数据在微服务各层的协作?.md
17 从后端到前端:微服务后,前端如何设计?.md
18 知识点串讲:基于DDD的微服务设计实例.md
19 总结(一):微服务设计和拆分要坚持哪些原则?.md
20 总结(二):分布式架构关键设计10问.md
答疑:有关3个典型问题的讲解.md
结束语 所谓高手,就是跨过坑和大海.md
Dubbo源码解读与实战-完
00 开篇词 深入掌握 Dubbo 原理与实现,提升你的职场竞争力.md
01 Dubbo 源码环境搭建:千里之行,始于足下.md
02 Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo.md
03 Dubbo SPI 精析,接口实现两极反转(上).md
04 Dubbo SPI 精析,接口实现两极反转(下).md
05 海量定时任务,一个时间轮搞定.md
06 ZooKeeper 与 Curator,求你别用 ZkClient 了(上).md
07 ZooKeeper 与 Curator,求你别用 ZkClient 了(下).md
08 代理模式与常见实现.md
09 Netty 入门,用它做网络编程都说好(上).md
10 Netty 入门,用它做网络编程都说好(下).md
11 简易版 RPC 框架实现(上).md
12 简易版 RPC 框架实现(下).md
13 本地缓存:降低 ZooKeeper 压力的一个常用手段.md
14 重试机制是网络操作的基本保证.md
15 ZooKeeper 注册中心实现,官方推荐注册中心实践.md
16 Dubbo Serialize 层:多种序列化算法,总有一款适合你.md
17 Dubbo Remoting 层核心接口分析:这居然是一套兼容所有 NIO 框架的设计?.md
18 Buffer 缓冲区:我们不生产数据,我们只是数据的搬运工.md
19 Transporter 层核心实现:编解码与线程模型一文打尽(上).md
20 Transporter 层核心实现:编解码与线程模型一文打尽(下).md
21 Exchange 层剖析:彻底搞懂 Request-Response 模型(上).md
22 Exchange 层剖析:彻底搞懂 Request-Response 模型(下).md
23 核心接口介绍,RPC 层骨架梳理.md
24 从 Protocol 起手,看服务暴露和服务引用的全流程(上).md
25 从 Protocol 起手,看服务暴露和服务引用的全流程(下).md
26 加餐:直击 Dubbo “心脏”,带你一起探秘 Invoker(上).md
27 加餐:直击 Dubbo “心脏”,带你一起探秘 Invoker(下).md
28 复杂问题简单化,代理帮你隐藏了多少底层细节?.md
29 加餐:HTTP 协议 + JSON-RPC,Dubbo 跨语言就是如此简单.md
30 Filter 接口,扩展 Dubbo 框架的常用手段指北.md
31 加餐:深潜 Directory 实现,探秘服务目录玄机.md
32 路由机制:请求到底怎么走,它说了算(上).md
33 路由机制:请求到底怎么走,它说了算(下).md
34 加餐:初探 Dubbo 动态配置的那些事儿.md
35 负载均衡:公平公正物尽其用的负载均衡策略,这里都有(上).md
36 负载均衡:公平公正物尽其用的负载均衡策略,这里都有(下).md
37 集群容错:一个好汉三个帮(上).md
38 集群容错:一个好汉三个帮(下).md
39 加餐:多个返回值不用怕,Merger 合并器来帮忙.md
40 加餐:模拟远程调用,Mock 机制帮你搞定.md
41 加餐:一键通关服务发布全流程.md
42 加餐:服务引用流程全解析.md
43 服务自省设计方案:新版本新方案.md
44 元数据方案深度剖析,如何避免注册中心数据量膨胀?.md
45 加餐:深入服务自省方案中的服务发布订阅(上).md
46 加餐:深入服务自省方案中的服务发布订阅(下).md
47 配置中心设计与实现:集中化配置 and 本地化配置,我都要(上).md
48 配置中心设计与实现:集中化配置 and 本地化配置,我都要(下).md
49 结束语 认真学习,缩小差距.md
ElasticSearch知识体系详解
01 认知:ElasticSearch基础概念.md
02 认知:Elastic Stack生态和场景方案.md
03 安装:ElasticSearch和Kibana安装.md
04 入门:查询和聚合的基础使用.md
05 索引:索引管理详解.md
06 索引:索引模板(Index Template)详解.md
07 查询:DSL查询之复合查询详解.md
08 查询:DSL查询之全文搜索详解.md
09 查询:DSL查询之Term详解.md
10 聚合:聚合查询之Bucket聚合详解.md
11 聚合:聚合查询之Metric聚合详解.md
12 聚合:聚合查询之Pipline聚合详解.md
13 原理:从图解构筑对ES原理的初步认知.md
14 原理:ES原理知识点补充和整体结构.md
15 原理:ES原理之索引文档流程详解.md
16 原理:ES原理之读取文档流程详解.md
17 优化:ElasticSearch性能优化详解.md
18 大厂实践:腾讯万亿级 Elasticsearch 技术实践.md
19 资料:Awesome Elasticsearch.md
20 WrapperQuery.md
21 备份和迁移.md
JVM 核心技术 32 讲(完)
01 阅读此专栏的正确姿势.md
02 环境准备:千里之行,始于足下.md
03 常用性能指标:没有量化,就没有改进.md
04 JVM 基础知识:不积跬步,无以至千里.md
05 Java 字节码技术:不积细流,无以成江河.md
06 Java 类加载器:山不辞土,故能成其高.md
07 Java 内存模型:海不辞水,故能成其深.md
08 JVM 启动参数详解:博观而约取、厚积而薄发.md
09 JDK 内置命令行工具:工欲善其事,必先利其器.md
10 JDK 内置图形界面工具:海阔凭鱼跃,天高任鸟飞.md
11 JDWP 简介:十步杀一人,千里不留行.md
12 JMX 与相关工具:山高月小,水落石出.md
13 常见的 GC 算法(GC 的背景与原理).md
14 常见的 GC 算法(ParallelCMSG1).md
15 Java11 ZGC 和 Java12 Shenandoah 介绍:苟日新、日日新、又日新.md
16 Oracle GraalVM 介绍:会当凌绝顶、一览众山小.md
17 GC 日志解读与分析(基础配置).md
18 GC 日志解读与分析(实例分析上篇).md
19 GC 日志解读与分析(实例分析中篇).md
20 GC 日志解读与分析(实例分析下篇).md
21 GC 日志解读与分析(番外篇可视化工具).md
22 JVM 的线程堆栈等数据分析:操千曲而后晓声、观千剑而后识器.md
23 内存分析与相关工具上篇(内存布局与分析工具).md
24 内存分析与相关工具下篇(常见问题分析).md
25 FastThread 相关的工具介绍:欲穷千里目,更上一层楼.md
26 面临复杂问题时的几个高级工具:它山之石,可以攻玉.md
27 JVM 问题排查分析上篇(调优经验).md
28 JVM 问题排查分析下篇(案例实战).md
29 GC 疑难情况问题排查与分析(上篇).md
30 GC 疑难情况问题排查与分析(下篇).md
31 JVM 相关的常见面试问题汇总:运筹策帷帐之中,决胜于千里之外.md
32 应对容器时代面临的挑战:长风破浪会有时、直挂云帆济沧海.md
Java 业务开发常见错误 100 例
00 开篇词 业务代码真的会有这么多坑?.md
01 使用了并发工具类库,线程安全就高枕无忧了吗?.md
02 代码加锁:不要让“锁”事成为烦心事.md
03 线程池:业务代码最常用也最容易犯错的组件.md
04 连接池:别让连接池帮了倒忙.md
05 HTTP调用:你考虑到超时、重试、并发了吗?.md
06 2成的业务代码的Spring声明式事务,可能都没处理正确.md
07 数据库索引:索引并不是万能药.md
08 判等问题:程序里如何确定你就是你?.md
09 数值计算:注意精度、舍入和溢出问题.md
10 集合类:坑满地的List列表操作.md
11 空值处理:分不清楚的null和恼人的空指针.md
12 异常处理:别让自己在出问题的时候变为瞎子.md
13 日志:日志记录真没你想象的那么简单.md
14 文件IO:实现高效正确的文件读写并非易事.md
15 序列化:一来一回你还是原来的你吗?.md
16 用好Java 8的日期时间类,少踩一些“老三样”的坑.md
17 别以为“自动挡”就不可能出现OOM.md
18 当反射、注解和泛型遇到OOP时,会有哪些坑?.md
19 Spring框架:IoC和AOP是扩展的核心.md
20 Spring框架:框架帮我们做了很多工作也带来了复杂度.md
21 代码重复:搞定代码重复的三个绝招.md
22 接口设计:系统间对话的语言,一定要统一.md
23 缓存设计:缓存可以锦上添花也可以落井下石.md
24 业务代码写完,就意味着生产就绪了?.md
25 异步处理好用,但非常容易用错.md
26 数据存储:NoSQL与RDBMS如何取长补短、相辅相成?.md
27 数据源头:任何客户端的东西都不可信任.md
28 安全兜底:涉及钱时,必须考虑防刷、限量和防重.md
29 数据和代码:数据就是数据,代码就是代码.md
30 如何正确保存和传输敏感数据?.md
31 加餐1:带你吃透课程中Java 8的那些重要知识点(一).md
32 加餐2:带你吃透课程中Java 8的那些重要知识点(二).md
33 加餐3:定位应用问题,排错套路很重要.md
34 加餐4:分析定位Java问题,一定要用好这些工具(一).md
35 加餐5:分析定位Java问题,一定要用好这些工具(二).md
36 加餐6:这15年来,我是如何在工作中学习技术和英语的?.md
37 加餐7:程序员成长28计.md
38 加餐8:Java程序从虚拟机迁移到Kubernetes的一些坑.md
答疑篇:代码篇思考题集锦(一).md
答疑篇:代码篇思考题集锦(三).md
答疑篇:代码篇思考题集锦(二).md
答疑篇:加餐篇思考题答案合集.md
答疑篇:安全篇思考题答案合集.md
答疑篇:设计篇思考题答案合集.md
结束语 写代码时,如何才能尽量避免踩坑?.md
Java 并发编程 78 讲-完
00 由点及面,搭建你的 Java 并发知识网.md
01 为何说只有 1 种实现线程的方法?.md
02 如何正确停止线程?为什么 volatile 标记位的停止方法是错误的?.md
03 线程是如何在 6 种状态之间转换的?.md
04 waitnotifynotifyAll 方法的使用注意事项?.md
05 有哪几种实现生产者消费者模式的方法?.md
06 一共有哪 3 类线程安全问题?.md
07 哪些场景需要额外注意线程安全问题?.md
08 为什么多线程会带来性能问题?.md
09 使用线程池比手动创建线程好在哪里?.md
10 线程池的各个参数的含义?.md
11 线程池有哪 4 种拒绝策略?.md
12 有哪 6 种常见的线程池?什么是 Java8 的 ForkJoinPool?.md
13 线程池常用的阻塞队列有哪些?.md
14 为什么不应该自动创建线程池?.md
15 合适的线程数量是多少?CPU 核心数和线程数的关系?.md
16 如何根据实际需要,定制自己的线程池?.md
17 如何正确关闭线程池?shutdown 和 shutdownNow 的区别?.md
18 线程池实现“线程复用”的原理?.md
19 你知道哪几种锁?分别有什么特点?.md
20 悲观锁和乐观锁的本质是什么?.md
21 如何看到 synchronized 背后的“monitor 锁”?.md
22 synchronized 和 Lock 孰优孰劣,如何选择?.md
23 Lock 有哪几个常用方法?分别有什么用?.md
24 讲一讲公平锁和非公平锁,为什么要“非公平”?.md
25 读写锁 ReadWriteLock 获取锁有哪些规则?.md
26 读锁应该插队吗?什么是读写锁的升降级?.md
27 什么是自旋锁?自旋的好处和后果是什么呢?.md
28 JVM 对锁进行了哪些优化?.md
29 HashMap 为什么是线程不安全的?.md
30 ConcurrentHashMap 在 Java7 和 8 有何不同?.md
31 为什么 Map 桶中超过 8 个才转为红黑树?.md
32 同样是线程安全,ConcurrentHashMap 和 Hashtable 的区别.md
33 CopyOnWriteArrayList 有什么特点?.md
34 什么是阻塞队列?.md
35 阻塞队列包含哪些常用的方法?add、offer、put 等方法的区别?.md
36 有哪几种常见的阻塞队列?.md
37 阻塞和非阻塞队列的并发安全原理是什么?.md
38 如何选择适合自己的阻塞队列?.md
39 原子类是如何利用 CAS 保证线程安全的?.md
40 AtomicInteger 在高并发下性能不好,如何解决?为什么?.md
41 原子类和 volatile 有什么异同?.md
42 AtomicInteger 和 synchronized 的异同点?.md
43 Java 8 中 Adder 和 Accumulator 有什么区别?.md
44 ThreadLocal 适合用在哪些实际生产的场景中?.md
45 ThreadLocal 是用来解决共享资源的多线程访问的问题吗?.md
46 多个 ThreadLocal 在 Thread 中的 threadlocals 里是怎么存储的?.md
47 内存泄漏——为何每次用完 ThreadLocal 都要调用 remove()?.md
48 Callable 和 Runnable 的不同?.md
49 Future 的主要功能是什么?.md
50 使用 Future 有哪些注意点?Future 产生新的线程了吗?.md
51 如何利用 CompletableFuture 实现“旅游平台”问题?.md
52 信号量能被 FixedThreadPool 替代吗?.md
53 CountDownLatch 是如何安排线程执行顺序的?.md
54 CyclicBarrier 和 CountdownLatch 有什么异同?.md
55 Condition、object.wait() 和 notify() 的关系?.md
56 讲一讲什么是 Java 内存模型?.md
57 什么是指令重排序?为什么要重排序?.md
58 Java 中的原子操作有哪些注意事项?.md
59 什么是“内存可见性”问题?.md
60 主内存和工作内存的关系?.md
61 什么是 happens-before 规则?.md
62 volatile 的作用是什么?与 synchronized 有什么异同?.md
63 单例模式的双重检查锁模式为什么必须加 volatile?.md
64 你知道什么是 CAS 吗?.md
65 CAS 和乐观锁的关系,什么时候会用到 CAS?.md
66 CAS 有什么缺点?.md
67 如何写一个必然死锁的例子?.md
68 发生死锁必须满足哪 4 个条件?.md
69 如何用命令行和代码定位死锁?.md
70 有哪些解决死锁问题的策略?.md
71 讲一讲经典的哲学家就餐问题.md
72 final 的三种用法是什么?.md
73 为什么加了 final 却依然无法拥有“不变性”?.md
74 为什么 String 被设计为是不可变的?.md
75 为什么需要 AQS?AQS 的作用和重要性是什么?.md
76 AQS 的内部原理是什么样的?.md
77 AQS 在 CountDownLatch 等类中的应用原理是什么?.md
78 一份独家的 Java 并发工具图谱.md
Java 性能优化实战-完
00 Java 性能优化,是进阶高级架构师的炼金石.md
01 理论分析:性能优化,有哪些衡量指标?需要注意什么?.md
02 理论分析:性能优化有章可循,谈谈常用的切入点.md
03 深入剖析:哪些资源,容易成为瓶颈?.md
04 工具实践:如何获取代码性能数据?.md
05 工具实践:基准测试 JMH,精确测量方法性能.md
06 案例分析:缓冲区如何让代码加速.md
07 案例分析:无处不在的缓存,高并发系统的法宝.md
08 案例分析:Redis 如何助力秒杀业务.md
09 案例分析:池化对象的应用场景.md
10 案例分析:大对象复用的目标和注意点.md
11 案例分析:如何用设计模式优化性能.md
12 案例分析:并行计算让代码“飞”起来.md
13 案例分析:多线程锁的优化.md
14 案例分析:乐观锁和无锁.md
15 案例分析:从 BIO 到 NIO,再到 AIO.md
16 案例分析:常见 Java 代码优化法则.md
17 高级进阶:JVM 如何完成垃圾回收?.md
18 高级进阶:JIT 如何影响 JVM 的性能?.md
19 高级进阶:JVM 常见优化参数.md
20 SpringBoot 服务性能优化.md
21 性能优化的过程方法与求职面经总结.md
22 结束语 实践出真知.md
Java 核心技术面试精讲
00 开篇词 以面试题为切入点,有效提升你的Java内功-极客时间.md
01 谈谈你对Java平台的理解?.md
02 Exception和Error有什么区别?-极客时间.md
03 谈谈final、finally、 finalize有什么不同?-极客时间.md
04 强引用、软引用、弱引用、幻象引用有什么区别?-极客时间.md
05 String、StringBuffer、StringBuilder有什么区别?-极客时间.md
06 动态代理是基于什么原理?-极客时间.md
07 int和Integer有什么区别?-极客时间.md
08 对比Vector、ArrayList、LinkedList有何区别?-极客时间.md
09 对比Hashtable、HashMap、TreeMap有什么不同?-极客时间.md
10 如何保证集合是线程安全的 ConcurrentHashMap如何实现高效地线程安全?-极客时间.md
11 Java提供了哪些IO方式? NIO如何实现多路复用?-极客时间.md
12 Java有几种文件拷贝方式?哪一种最高效?-极客时间.md
13 谈谈接口和抽象类有什么区别?-极客时间.md
14 谈谈你知道的设计模式?-极客时间.md
15 synchronized和ReentrantLock有什么区别呢?-极客时间.md
16 synchronized底层如何实现?什么是锁的升级、降级?-极客时间.md
17 一个线程两次调用start()方法会出现什么情况?-极客时间.md
18 什么情况下Java程序会产生死锁?如何定位、修复?-极客时间.md
19 Java并发包提供了哪些并发工具类?-极客时间.md
20 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?-极客时间.md
21 Java并发类库提供的线程池有哪几种? 分别有什么特点?-极客时间.md
22 AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?-极客时间.md
23 请介绍类加载过程,什么是双亲委派模型?-极客时间.md
24 有哪些方法可以在运行时动态生成一个Java类?-极客时间.md
25 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError-极客时间.md
26 如何监控和诊断JVM堆内和堆外内存使用?-极客时间.md
27 Java常见的垃圾收集器有哪些?-极客时间.md
28 谈谈你的GC调优思路-极客时间.md
29 Java内存模型中的happen-before是什么?-极客时间.md
30 Java程序运行在Docker等容器环境有哪些新问题?-极客时间.md
31 你了解Java应用开发中的注入攻击吗?-极客时间.md
32 如何写出安全的Java代码?-极客时间.md
33 后台服务出现明显“变慢”,谈谈你的诊断思路?-极客时间.md
34 有人说“Lambda能让Java程序慢30倍”,你怎么看?-极客时间.md
35 JVM优化Java代码时都做了什么?-极客时间.md
36 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?-极客时间.md
37 谈谈Spring Bean的生命周期和作用域?-极客时间.md
38 对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?-极客时间.md
39 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?-极客时间.md
周末福利 一份Java工程师必读书单-极客时间.md
周末福利 谈谈我对Java学习和面试的看法-极客时间.md
结束语 技术没有终点-极客时间.md
Java并发编程实战
00 开篇词你为什么需要学习并发编程?.md
01 如何制定性能调优标准?.md
02 如何制定性能调优策略?.md
03 字符串性能优化不容小觑,百M内存轻松存储几十G数据.md
04 慎重使用正则表达式.md
05 ArrayList还是LinkedList?使用不当性能差千倍.md
06 Stream如何提高遍历集合效率?.md
07 深入浅出HashMap的设计与优化.md
08 网络通信优化之IO模型:如何解决高并发下IO瓶颈?.md
09 网络通信优化之序列化:避免使用Java序列化.md
10 网络通信优化之通信协议:如何优化RPC网络通信?.md
11 答疑课堂:深入了解NIO的优化实现原理.md
12 多线程之锁优化(上):深入了解Synchronized同步锁的优化方法.md
13 多线程之锁优化(中):深入了解Lock同步锁的优化方法.md
14 多线程之锁优化(下):使用乐观锁优化并行操作.md
15 多线程调优(上):哪些操作导致了上下文切换?.md
16 多线程调优(下):如何优化多线程上下文切换?.md
17 并发容器的使用:识别不同场景下最优容器.md
18 如何设置线程池大小?.md
19 如何用协程来优化多线程业务?.md
20 磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型.md
21 深入JVM即时编译器JIT,优化Java编译.md
22 如何优化垃圾回收机制?.md
23 如何优化JVM内存分配?.md
24 内存持续上升,我该如何排查问题?.md
25 答疑课堂:模块四热点问题解答.md
26 单例模式:如何创建单一对象优化系统性能?.md
27 原型模式与享元模式:提升系统性能的利器.md
28 如何使用设计模式优化并发编程?.md
29 生产者消费者模式:电商库存设计优化.md
30 装饰器模式:如何优化电商系统中复杂的商品价格策略?.md
31 答疑课堂:模块五思考题集锦.md
32 MySQL调优之SQL语句:如何写出高性能SQL语句?.md
33 MySQL调优之事务:高并发场景下的数据库事务调优.md
34 MySQL调优之索引:索引的失效与优化.md
35 记一次线上SQL死锁事故:如何避免死锁?.md
36 什么时候需要分表分库?.md
37 电商系统表设计优化案例分析.md
38 数据库参数设置优化,失之毫厘差之千里.md
39 答疑课堂:MySQL中InnoDB的知识点串讲.md
41 如何设计更优的分布式锁?.md
42 电商系统的分布式事务调优.md
43 如何使用缓存优化系统性能?.md
44 记一次双十一抢购性能瓶颈调优.md
加餐 什么是数据的强、弱一致性?.md
加餐 推荐几款常用的性能测试工具.md
答疑课堂:模块三热点问题解答.md
结束语 栉风沐雨,砥砺前行!.md
Java核心技术面试精讲
00 开篇词 以面试题为切入点,有效提升你的Java内功.md
01 谈谈你对Java平台的理解?.md
02 Exception和Error有什么区别?.md
03 谈谈final、finally、 finalize有什么不同?.md
04 强引用、软引用、弱引用、幻象引用有什么区别?.md
05 String、StringBuffer、StringBuilder有什么区别?.md
06 动态代理是基于什么原理?.md
07 int和Integer有什么区别?.md
08 对比Vector、ArrayList、LinkedList有何区别?.md
09 对比Hashtable、HashMap、TreeMap有什么不同?.md
10 如何保证集合是线程安全的_ ConcurrentHashMap如何实现高效地线程安全?.md
11 Java提供了哪些IO方式? NIO如何实现多路复用?.md
12 Java有几种文件拷贝方式?哪一种最高效?.md
13 谈谈接口和抽象类有什么区别?.md
14 谈谈你知道的设计模式?.md
15 synchronized和ReentrantLock有什么区别呢?.md
16 synchronized底层如何实现?什么是锁的升级、降级?.md
17 一个线程两次调用start()方法会出现什么情况?.md
18 什么情况下Java程序会产生死锁?如何定位、修复?.md
19 Java并发包提供了哪些并发工具类?.md
20 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?.md
21 Java并发类库提供的线程池有哪几种? 分别有什么特点?.md
22 AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?.md
23 请介绍类加载过程,什么是双亲委派模型?.md
24 有哪些方法可以在运行时动态生成一个Java类?.md
25 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError_.md
26 如何监控和诊断JVM堆内和堆外内存使用?.md
27 Java常见的垃圾收集器有哪些?.md
28 谈谈你的GC调优思路_.md
29 Java内存模型中的happen-before是什么?.md
30 Java程序运行在Docker等容器环境有哪些新问题?.md
31 你了解Java应用开发中的注入攻击吗?.md
32 如何写出安全的Java代码?.md
33 后台服务出现明显“变慢”,谈谈你的诊断思路?.md
34 有人说“Lambda能让Java程序慢30倍”,你怎么看?.md
35 JVM优化Java代码时都做了什么?.md
36 谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?.md
37 谈谈Spring Bean的生命周期和作用域?.md
38 对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?.md
39 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?.md
周末福利 谈谈我对Java学习和面试的看法.md
结束语 技术没有终点.md
Kafka核心技术与实战
00 开篇词 为什么要学习Kafka?.md
01 消息引擎系统ABC.md
02 一篇文章带你快速搞定Kafka术语.md
03 Kafka只是消息引擎系统吗?.md
04 我应该选择哪种Kafka?.md
05 聊聊Kafka的版本号.md
06 Kafka线上集群部署方案怎么做?.md
07 最最最重要的集群参数配置(上).md
08 最最最重要的集群参数配置(下).md
09 生产者消息分区机制原理剖析.md
10 生产者压缩算法面面观.md
11 无消息丢失配置怎么实现?.md
12 客户端都有哪些不常见但是很高级的功能?.md
13 Java生产者是如何管理TCP连接的?.md
14 幂等生产者和事务生产者是一回事吗?.md
15 消费者组到底是什么?.md
16 揭开神秘的“位移主题”面纱.md
17 消费者组重平衡能避免吗?.md
18 Kafka中位移提交那些事儿.md
19 CommitFailedException异常怎么处理?.md
20 多线程开发消费者实例.md
21 Java 消费者是如何管理TCP连接的_.md
22 消费者组消费进度监控都怎么实现?.md
23 Kafka副本机制详解.md
24 请求是怎么被处理的?.md
25 消费者组重平衡全流程解析.md
26 你一定不能错过的Kafka控制器.md
27 关于高水位和Leader Epoch的讨论.md
28 主题管理知多少_.md
29 Kafka动态配置了解下?.md
30 怎么重设消费者组位移?.md
31 常见工具脚本大汇总.md
32 KafkaAdminClient:Kafka的运维利器.md
33 Kafka认证机制用哪家?.md
34 云环境下的授权该怎么做?.md
35 跨集群备份解决方案MirrorMaker.md
36 你应该怎么监控Kafka?.md
37 主流的Kafka监控框架.md
38 调优Kafka,你做到了吗?.md
39 从0搭建基于Kafka的企业级实时日志流处理平台.md
40 Kafka Streams与其他流处理平台的差异在哪里?.md
41 Kafka Streams DSL开发实例.md
42 Kafka Streams在金融领域的应用.md
加餐 搭建开发环境、阅读源码方法、经典学习资料大揭秘.md
用户故事 黄云:行百里者半九十.md
结束语 以梦为马,莫负韶华!.md
Kafka核心源码解读
00 导读 构建Kafka工程和源码阅读环境、Scala语言热身.md
00 开篇词 阅读源码,逐渐成了职业进阶道路上的“必选项”.md
00 重磅加餐 带你快速入门Scala语言.md
01 日志段:保存消息文件的对象是怎么实现的?.md
02 日志(上):日志究竟是如何加载日志段的?.md
03 日志(下):彻底搞懂Log对象的常见操作.md
04 索引(上):改进的二分查找算法在Kafka索引的应用.md
05 索引(下):位移索引和时间戳索引的区别是什么?.md
06 请求通道:如何实现Kafka请求队列?.md
07 SocketServer(上):Kafka到底是怎么应用NIO实现网络通信的?.md
08 SocketServer(中):请求还要区分优先级?.md
09 SocketServer(下):请求处理全流程源码分析.md
10 KafkaApis:Kafka最重要的源码入口,没有之一.md
11 Controller元数据:Controller都保存有哪些东西?有几种状态?.md
12 ControllerChannelManager:Controller如何管理请求发送?.md
13 ControllerEventManager:变身单线程后的Controller如何处理事件?.md
14 Controller选举是怎么实现的?.md
15 如何理解Controller在Kafka集群中的作用?.md
16 TopicDeletionManager: Topic是怎么被删除的?.md
17 ReplicaStateMachine:揭秘副本状态机实现原理.md
18 PartitionStateMachine:分区状态转换如何实现?.md
19 TimingWheel:探究Kafka定时器背后的高效时间轮算法.md
20 DelayedOperation:Broker是怎么延时处理请求的?.md
21 AbstractFetcherThread:拉取消息分几步?.md
22 ReplicaFetcherThread:Follower如何拉取Leader消息?.md
23 ReplicaManager(上):必须要掌握的副本管理类定义和核心字段.md
24 ReplicaManager(中):副本管理器是如何读写副本的?.md
25 ReplicaManager(下):副本管理器是如何管理副本的?.md
26 MetadataCache:Broker是怎么异步更新元数据缓存的?.md
27 消费者组元数据(上):消费者组都有哪些元数据?.md
28 消费者组元数据(下):Kafka如何管理这些元数据?.md
29 GroupMetadataManager:组元数据管理器是个什么东西?.md
30 GroupMetadataManager:位移主题保存的只是位移吗?.md
31 GroupMetadataManager:查询位移时,不用读取位移主题?.md
32 GroupCoordinator:在Rebalance中,Coordinator如何处理成员入组?.md
33 GroupCoordinator:在Rebalance中,如何进行组同步?.md
特别放送(一)经典的Kafka学习资料有哪些?.md
特别放送(三)我是怎么度过日常一天的?.md
特别放送(二)一篇文章带你了解参与开源社区的全部流程.md
特别放送(五) Kafka 社区的重磅功能:移除 ZooKeeper 依赖.md
特别放送(四)20道经典的Kafka面试题详解.md
结束语 源码学习,我们才刚上路呢.md
Kubernetes 从上手到实践
01 开篇: Kubernetes 是什么以及为什么需要它.md
02 初步认识:Kubernetes 基础概念.md
03 宏观认识:整体架构.md
04 搭建 Kubernetes 集群 - 本地快速搭建.md
05 动手实践:搭建一个 Kubernetes 集群 - 生产可用.md
06 集群管理:初识 kubectl.md
07 集群管理:以 Redis 为例-部署及访问.md
08 安全重点 认证和授权.md
09 应用发布:部署实际项目.md
10 应用管理:初识 Helm.md
11 部署实践:以 Helm 部署项目.md
12 庖丁解牛:kube-apiserver.md
13 庖丁解牛:etcd.md
14 庖丁解牛:controller-manager.md
15 庖丁解牛:kube-scheduler.md
16 庖丁解牛:kubelet.md
17 庖丁解牛:kube-proxy.md
18 庖丁解牛:Container Runtime (Docker).md
19 Troubleshoot.md
20 扩展增强:Dashboard.md
21 扩展增强:CoreDNS.md
22 服务增强:Ingress.md
23 监控实践:对 K8S 集群进行监控.md
24 总结.md
Kubernetes 实践入门指南
00 为什么我们要学习 Kubernetes 技术.md
01 重新认识 Kubernetes 的核心组件.md
02 深入理解 Kubernets 的编排对象.md
03 DevOps 场景下落地 K8s 的困难分析.md
04 微服务应用场景下落地 K8s 的困难分析.md
05 解决 K8s 落地难题的方法论提炼.md
06 练习篇:K8s 核心实践知识掌握.md
07 容器引擎 containerd 落地实践.md
08 K8s 集群安装工具 kubeadm 的落地实践.md
09 南北向流量组件 IPVS 的落地实践.md
10 东西向流量组件 Calico 的落地实践.md
11 服务发现 DNS 的落地实践.md
12 练习篇:K8s 集群配置测验.md
13 理解对方暴露服务的对象 Ingress 和 Service.md
14 应用网关 OpenResty 对接 K8s 实践.md
15 Service 层引流技术实践.md
16 Cilium 容器网络的落地实践.md
17 应用流量的优雅无损切换实践.md
18 练习篇:应用流量无损切换技术测验.md
19 使用 Rook 构建生产可用存储环境实践.md
20 有状态应用的默认特性落地分析.md
21 案例:分布式 MySQL 集群工具 Vitess 实践分析.md
22 存储对象 PV、PVC、Storage Classes 的管理落地实践.md
23 K8s 集群中存储对象灾备的落地实践.md
24 练习篇:K8s 集群配置测验.md
Kubernetes入门实战课
00 开篇词 迎难而上,做云原生时代的弄潮儿.md
00 课前准备 动手实践才是最好的学习方式.md
01 初识容器:万事开头难.md
02 被隔离的进程:一起来看看容器的本质.md
03 容器化的应用:会了这些你就是Docker高手.md
04 创建容器镜像:如何编写正确、高效的Dockerfile.md
05 镜像仓库:该怎样用好Docker Hub这个宝藏.md
06 打破次元壁:容器该如何与外界互联互通.md
07 实战演练:玩转Docker.md
08 视频:入门篇实操总结.md
09 走近云原生:如何在本机搭建小巧完备的Kubernetes环境.md
10 自动化的运维管理:探究Kubernetes工作机制的奥秘.md
11 YAML:Kubernetes世界里的通用语.md
12 Pod:如何理解这个Kubernetes里最核心的概念?.md
13 Job_CronJob:为什么不直接用Pod来处理业务?.md
14 ConfigMap_Secret:怎样配置、定制我的应用.md
15 实战演练:玩转Kubernetes(1).md
16 视频:初级篇实操总结.md
17 更真实的云原生:实际搭建多节点的Kubernetes集群.md
18 Deployment:让应用永不宕机.md
19 Daemonset:忠实可靠的看门狗.md
20 Service:微服务架构的应对之道.md
21 Ingress:集群进出流量的总管.md
22 实战演练:玩转Kubernetes(2).md
23 视频:中级篇实操总结.md
24 PersistentVolume:怎么解决数据持久化的难题?.md
25 PersistentVolume + NFS:怎么使用网络共享存储?.md
26 StatefulSet:怎么管理有状态的应用?.md
27 滚动更新:如何做到平滑的应用升级降级?.md
28 应用保障:如何让Pod运行得更健康?.md
29 集群管理:如何用名字空间分隔系统资源?.md
30 系统监控:如何使用Metrics Server和Prometheus?.md
31 网络通信:CNI是怎么回事?又是怎么工作的?.md
32 实战演练:玩转Kubernetes(3).md
33 视频:高级篇实操总结.md
加餐 docker-compose:单机环境下的容器编排工具.md
加餐 谈谈Kong Ingress Controller.md
结束语 是终点,更是起点.md
Linux内核技术实战课
00 开篇词 如何让Linux内核更好地服务应用程序?.md
01 基础篇 如何用数据观测Page Cache?.md
02 基础篇 Page Cache是怎样产生和释放的?.md
03 案例篇 如何处理Page Cache难以回收产生的load飙高问题?.md
04 案例篇 如何处理Page Cache容易回收引起的业务性能问题?.md
05 分析篇 如何判断问题是否由Page Cache产生的?.md
06 基础篇 进程的哪些内存类型容易引起内存泄漏?.md
07 案例篇 如何预防内存泄漏导致的系统假死?.md
08 案例篇 Shmem:进程没有消耗内存,内存哪去了?.md
09 分析篇 如何对内核内存泄漏做些基础的分析?.md
10 分析篇 内存泄漏时,我们该如何一步步找到根因?.md
11 基础篇 TCP连接的建立和断开受哪些系统配置影响?.md
12 基础篇 TCP收发包过程会受哪些配置项影响?.md
13 案例篇 TCP拥塞控制是如何导致业务性能抖动的?.md
14 案例篇 TCP端到端时延变大,怎样判断是哪里出现了问题?.md
15 分析篇 如何高效地分析TCP重传问题?.md
16 套路篇 如何分析常见的TCP问题?.md
17 基础篇 CPU是如何执行任务的?.md
18 案例篇 业务是否需要使用透明大页:水可载舟,亦可覆舟?.md
19 案例篇 网络吞吐高的业务是否需要开启网卡特性呢?.md
20 分析篇 如何分析CPU利用率飙高问题 ?.md
加餐 我是如何使用tracepoint来分析内核Bug的?.md
结束语 第一次看内核代码,我也很懵逼.md
MySQL实战45讲
00 开篇词 这一次,让我们一起来搞懂MySQL.md
01 基础架构:一条SQL查询语句是如何执行的?.md
02 日志系统:一条SQL更新语句是如何执行的?.md
03 事务隔离:为什么你改了我还看不见?.md
04 深入浅出索引(上).md
05 深入浅出索引(下).md
06 全局锁和表锁 :给表加个字段怎么有这么多阻碍?.md
07 行锁功过:怎么减少行锁对性能的影响?.md
08 事务到底是隔离的还是不隔离的?.md
09 普通索引和唯一索引,应该怎么选择?.md
10 MySQL为什么有时候会选错索引?.md
11 怎么给字符串字段加索引?.md
12 为什么我的MySQL会“抖”一下?.md
13 为什么表数据删掉一半,表文件大小不变?.md
14 count()这么慢,我该怎么办?.md
15 答疑文章(一):日志和索引相关问题.md
16 “order by”是怎么工作的?.md
17 如何正确地显示随机消息?.md
18 为什么这些SQL语句逻辑相同,性能却差异巨大?.md
19 为什么我只查一行的语句,也执行这么慢?.md
20 幻读是什么,幻读有什么问题?.md
21 为什么我只改一行的语句,锁这么多?.md
22 MySQL有哪些“饮鸩止渴”提高性能的方法?.md
23 MySQL是怎么保证数据不丢的?.md
24 MySQL是怎么保证主备一致的?.md
25 MySQL是怎么保证高可用的?.md
26 备库为什么会延迟好几个小时?.md
27 主库出问题了,从库怎么办?.md
28 读写分离有哪些坑?.md
29 如何判断一个数据库是不是出问题了?.md
30 答疑文章(二):用动态的观点看加锁.md
31 误删数据后除了跑路,还能怎么办?.md
32 为什么还有kill不掉的语句?.md
33 我查这么多数据,会不会把数据库内存打爆?.md
34 到底可不可以使用join?.md
35 join语句怎么优化?.md
36 为什么临时表可以重名?.md
37 什么时候会使用内部临时表?.md
38 都说InnoDB好,那还要不要使用Memory引擎?.md
39 自增主键为什么不是连续的?.md
40 insert语句的锁为什么这么多?.md
41 怎么最快地复制一张表?.md
42 grant之后要跟着flush privileges吗?.md
43 要不要使用分区表?.md
44 答疑文章(三):说一说这些好问题.md
45 自增id用完怎么办?.md
我的MySQL心路历程.md
结束语 点线网面,一起构建MySQL知识网络.md
MySQL实战宝典
00 开篇词 从业务出发,开启海量 MySQL 架构设计.md
01 数字类型:避免自增踩坑.md
02 字符串类型:不能忽略的 COLLATION.md
03 日期类型:TIMESTAMP 可能是巨坑.md
04 非结构存储:用好 JSON 这张牌.md
05 表结构设计:忘记范式准则.md
06 表压缩:不仅仅是空间压缩.md
07 表的访问设计:你该选择 SQL 还是 NoSQL?.md
08 索引:排序的艺术.md
09 索引组织表:万物皆索引.md
10 组合索引:用好,性能提升 10 倍!.md
11 索引出错:请理解 CBO 的工作原理.md
12 JOIN 连接:到底能不能写 JOIN?.md
13 子查询:放心地使用子查询功能吧!.md
14 分区表:哪些场景我不建议用分区表?.md
15 MySQL 复制:最简单也最容易配置出错.md
16 读写分离设计:复制延迟?其实是你用错了.md
17 高可用设计:你怎么活用三大架构方案?.md
18 金融级高可用架构:必不可少的数据核对.md
19 高可用套件:选择这么多,你该如何选?.md
20 InnoDB Cluster:改变历史的新产品.md
21 数据库备份:备份文件也要检查!.md
22 分布式数据库架构:彻底理解什么叫分布式数据库.md
23 分布式数据库表结构设计:如何正确地将数据分片?.md
24 分布式数据库索引设计:二级索引、全局索引的最佳设计实践.md
25 分布式数据库架构选型:分库分表 or 中间件 ?.md
26 分布式设计之禅:全链路的条带化设计.md
27 分布式事务:我们到底要不要使用 2PC?.md
Netty 核心原理剖析与 RPC 实践-完
00 学好 Netty,是你修炼 Java 内功的必经之路.md
01 初识 Netty:为什么 Netty 这么流行?.md
02 纵览全局:把握 Netty 整体架构脉络.md
03 引导器作用:客户端和服务端启动都要做些什么?.md
04 事件调度层:为什么 EventLoop 是 Netty 的精髓?.md
05 服务编排层:Pipeline 如何协调各类 Handler ?.md
06 粘包拆包问题:如何获取一个完整的网络包?.md
07 接头暗语:如何利用 Netty 实现自定义协议通信?.md
08 开箱即用:Netty 支持哪些常用的解码器?.md
09 数据传输:writeAndFlush 处理流程剖析.md
10 双刃剑:合理管理 Netty 堆外内存.md
11 另起炉灶:Netty 数据传输载体 ByteBuf 详解.md
12 他山之石:高性能内存分配器 jemalloc 基本原理.md
13 举一反三:Netty 高性能内存管理设计(上).md
14 举一反三:Netty 高性能内存管理设计(下).md
15 轻量级对象回收站:Recycler 对象池技术解析.md
16 IO 加速:与众不同的 Netty 零拷贝技术.md
17 源码篇:从 Linux 出发深入剖析服务端启动流程.md
18 源码篇:解密 Netty Reactor 线程模型.md
19 源码篇:一个网络请求在 Netty 中的旅程.md
20 技巧篇:Netty 的 FastThreadLocal 究竟比 ThreadLocal 快在哪儿?.md
21 技巧篇:延迟任务处理神器之时间轮 HashedWheelTimer.md
22 技巧篇:高性能无锁队列 Mpsc Queue.md
23 架构设计:如何实现一个高性能分布式 RPC 框架.md
24 服务发布与订阅:搭建生产者和消费者的基础框架.md
25 远程通信:通信协议设计以及编解码的实现.md
26 服务治理:服务发现与负载均衡机制的实现.md
27 动态代理:为用户屏蔽 RPC 调用的底层细节.md
28 实战总结:RPC 实战总结与进阶延伸.md
29 编程思想:Netty 中应用了哪些设计模式?.md
30 实践总结:Netty 在项目开发中的一些最佳实践.md
31 结束语 技术成长之路:如何打造自己的技术体系.md
OAuth2.0实战课
00 开篇词 为什么要学OAuth 2.0?.md
01 OAuth 2.0是要通过什么方式解决什么问题?.md
02 授权码许可类型中,为什么一定要有授权码?.md
03 授权服务:授权码和访问令牌的颁发流程是怎样的?.md
04 在OAuth 2.0中,如何使用JWT结构化令牌?.md
05 如何安全、快速地接入OAuth 2.0?.md
06 除了授权码许可类型,OAuth 2.0还支持什么授权流程?.md
07 如何在移动App中使用OAuth 2.0?.md
08 实践OAuth 2.0时,使用不当可能会导致哪些安全漏洞?.md
09 实战:利用OAuth 2.0实现一个OpenID Connect用户身份认证协议..md
10 串讲:OAuth 2.0的工作流程与安全问题.md
11 实战案例:使用Spring Security搭建一套基于JWT的OAuth 2.0架构.md
12 架构案例:基于OAuth 2.0_JWT的微服务参考架构.md
13 各大开放平台是如何使用OAuth 2.0的?.md
14 查漏补缺:OAuth 2.0 常见问题答疑.md
结束语 把学习当成一种习惯.md
OKR组织敏捷目标和绩效管理-完
00 OKR 工作法:组织目标管理的神器.md
01 目标管理发展:OKR 之前,大家都在用什么管理组织目标?.md
02 OKR 价值:为什么互联网公司都在用 OKR?.md
03 OKR 与战略:OKR 如何解决组织增长问题?.md
04 OKR 生成:各层级的 OKR 要遵循什么规律?.md
05 O:什么样的 O 得领导赏识?.md
06 KR :写好 KR 的万能公式.md
07 案例实战:教你写出高质量的 OKR.md
08 流程:你应该这样制定、管理 OKR!.md
09 OKR 与 KPI 的区别和联系.md
10 激励:如何用 OKR 激活你的团队?.md
11 文化:OKR 文化的塑造和沉淀.md
12 变革:OKR 转型难点及解决方案.md
13 加餐 OKR 填写模板及案例.md
结束语 OKR 工作法:制胜互联网下半场.md
OpenResty从入门到实战
00 开篇词 OpenResty,为你打开高性能开发的大门.md
01 初探OpenResty的三大特性.md
02 如何写出你的“hello world”?.md
03 揪出隐藏在背后的那些子项目.md
04 如何管理第三方包?从包管理工具luarocks和opm说起.md
05 [视频]opm项目导读.md
06 OpenResty 中用到的 NGINX 知识.md
07 带你快速上手 Lua.md
08 LuaJIT分支和标准Lua有什么不同?.md
09 为什么 lua-resty-core 性能更高一些?.md
10 JIT编译器的死穴:为什么要避免使用 NYI ?.md
11 剖析Lua唯一的数据结构table和metatable特性.md
12 高手秘诀:识别Lua的独有概念和坑.md
13 [视频]实战:基于FFI实现的lua-resty-lrucache.md
14 答疑(一):Lua 规则和 NGINX 配置文件产生冲突怎么办?.md
15 OpenResty 和别的开发平台有什么不同?.md
16 秒杀大多数开发问题的两个利器:文档和测试案例.md
17 为什么能成为更好的Web服务器?动态处理请求和响应是关键.md
18 worker间的通信法宝:最重要的数据结构之shared dict.md
19 OpenResty 的核心和精髓:cosocket.md
20 超越 Web 服务器:特权进程和定时任务.md
21 带你玩转时间、正则表达式等常用API.md
22 [视频]从一个安全漏洞说起,探寻API性能和安全的平衡.md
23 [视频]导读lua-resty-requests:优秀的lua-resty-_是如何编写的?.md
24 实战:处理四层流量,实现Memcached Server.md
25 答疑(二):特权进程的权限到底是什么?.md
26 代码贡献者的拦路虎:test__nginx 简介.md
27 test__nginx 包罗万象的测试方法.md
28 test__nginx 还可以这样用?.md
29 最容易失准的性能测试?你需要压测工具界的“悍马”wrk.md
30 答疑(三)如何搭建测试的网络结构?.md
31 性能下降10倍的真凶:阻塞函数.md
32 让人又恨又爱的字符串操作.md
33 性能提升10倍的秘诀:必须用好 table.md
34 特别放送:OpenResty编码指南.md
35 [视频]实际项目中的性能优化:ingress-nginx中的几个PR解读.md
36 盘点OpenResty的各种调试手段.md
37 systemtap-toolkit和stapxx:如何用数据搞定“疑难杂症”?.md
38 [视频]巧用wrk和火焰图,科学定位性能瓶颈.md
39 高性能的关键:shared dict 缓存和 lru 缓存.md
40 缓存与风暴并存,谁说缓存风暴不可避免?.md
41 lua-resty-_ 封装,让你远离多级缓存之痛.md
42 如何应对突发流量:漏桶和令牌桶的概念.md
43 灵活实现动态限流限速,其实没有那么难.md
44 OpenResty 的杀手锏:动态.md
45 不得不提的能力外延:OpenResty常用的第三方库.md
46 答疑(四):共享字典的缓存是必须的吗?.md
47 微服务API网关搭建三步曲(一).md
48 微服务API网关搭建三步曲(二).md
49 微服务API网关搭建三步曲(三).md
50 答疑(五):如何在工作中引入 OpenResty?.md
结束语 行百里者半九十.md
Redis 核心原理与实战
01 Redis 是如何执行的.md
02 Redis 快速搭建与使用.md
03 Redis 持久化——RDB.md
04 Redis 持久化——AOF.md
05 Redis 持久化——混合持久化.md
06 字符串使用与内部实现原理.md
07 附录:更多字符串操作命令.md
08 字典使用与内部实现原理.md
09 附录:更多字典操作命令.md
10 列表使用与内部实现原理.md
11 附录:更多列表操作命令.md
12 集合使用与内部实现原理.md
13 附录:更多集合操作命令.md
14 有序集合使用与内部实现原理.md
15 附录:更多有序集合操作命令.md
16 Redis 事务深入解析.md
17 Redis 键值过期操作.md
18 Redis 过期策略与源码分析.md
19 Redis 管道技术——Pipeline.md
20 查询附近的人——GEO.md
21 游标迭代器(过滤器)——Scan.md
22 优秀的基数统计算法——HyperLogLog.md
23 内存淘汰机制与算法.md
24 消息队列——发布订阅模式.md
25 消息队列的其他实现方式.md
26 消息队列终极解决方案——Stream(上).md
27 消息队列终极解决方案——Stream(下).md
28 实战:分布式锁详解与代码.md
29 实战:布隆过滤器安装与使用及原理分析.md
30 完整案例:实现延迟队列的两种方法.md
31 实战:定时任务案例.md
32 实战:RediSearch 高性能的全文搜索引擎.md
33 实战:Redis 性能测试.md
34 实战:Redis 慢查询.md
35 实战:Redis 性能优化方案.md
36 实战:Redis 主从同步.md
37 实战:Redis哨兵模式(上).md
38 实战:Redis 哨兵模式(下).md
39 实战:Redis 集群模式(上).md
40 实战:Redis 集群模式(下).md
41 案例:Redis 问题汇总和相关解决方案.md
42 技能学习指南.md
43 加餐:Redis 的可视化管理工具.md
Redis 核心技术与实战
00 开篇词 这样学Redis,才能技高一筹.md
01 基本架构:一个键值数据库包含什么?.md
02 数据结构:快速的Redis有哪些慢操作?.md
03 高性能IO模型:为什么单线程Redis能那么快?.md
04 AOF日志:宕机了,Redis如何避免数据丢失?.md
05 内存快照:宕机后,Redis如何实现快速恢复?.md
06 数据同步:主从库如何实现数据一致?.md
07 哨兵机制:主库挂了,如何不间断服务?.md
08 哨兵集群:哨兵挂了,主从库还能切换吗?.md
09 切片集群:数据增多了,是该加内存还是加实例?.md
10 第1~9讲课后思考题答案及常见问题答疑.md
11 “万金油”的String,为什么不好用了?.md
12 有一亿个keys要统计,应该用哪种集合?.md
13 GEO是什么?还可以定义新的数据类型吗?.md
14 如何在Redis中保存时间序列数据?.md
15 消息队列的考验:Redis有哪些解决方案?.md
16 异步机制:如何避免单线程模型的阻塞?.md
17 为什么CPU结构也会影响Redis的性能?.md
18 波动的响应延迟:如何应对变慢的Redis?(上).md
19 波动的响应延迟:如何应对变慢的Redis?(下).md
20 删除数据后,为什么内存占用率还是很高?.md
21 缓冲区:一个可能引发“惨案”的地方.md
22 第11~21讲课后思考题答案及常见问题答疑.md
23 旁路缓存:Redis是如何工作的?.md
24 替换策略:缓存满了怎么办?.md
25 缓存异常(上):如何解决缓存和数据库的数据不一致问题?.md
26 缓存异常(下):如何解决缓存雪崩、击穿、穿透难题?.md
27 缓存被污染了,该怎么办?.md
28 Pika:如何基于SSD实现大容量Redis?.md
29 无锁的原子操作:Redis如何应对并发访问?.md
30 如何使用Redis实现分布式锁?.md
31 事务机制:Redis能实现ACID属性吗?.md
32 Redis主从同步与故障切换,有哪些坑?.md
33 脑裂:一次奇怪的数据丢失.md
34 第23~33讲课后思考题答案及常见问题答疑.md
35 Codis VS Redis Cluster:我该选择哪一个集群方案?.md
36 Redis支撑秒杀场景的关键技术和实践都有哪些?.md
37 数据分布优化:如何应对数据倾斜?.md
38 通信开销:限制Redis Cluster规模的关键因素.md
39 Redis 6.0的新特性:多线程、客户端缓存与安全.md
40 Redis的下一步:基于NVM内存的实践.md
41 第35~40讲课后思考题答案及常见问题答疑.md
加餐 01 经典的Redis学习资料有哪些?.md
加餐 02 用户Kaito:我是如何学习Redis的?.md
加餐 03 用户Kaito:我希望成为在压力中成长的人.md
加餐 04 Redis客户端如何与服务器端交换命令和数据?.md
加餐 05 Redis有哪些好用的运维工具?.md
加餐 06 Redis的使用规范小建议.md
加餐 07 从微博的Redis实践中,我们可以学到哪些经验?.md
结束语 从学习Redis到向Redis学习.md
Redis 源码剖析与实战
00 开篇词 阅读Redis源码能给你带来什么?.md
01 带你快速攻略Redis源码的整体架构.md
02 键值对中字符串的实现,用char还是结构体?.md
03 如何实现一个性能优异的Hash表?.md
04 内存友好的数据结构该如何细化设计?.md
05 有序集合为何能同时支持点查询和范围查询?.md
06 从ziplist到quicklist,再到listpack的启发.md
07 为什么Stream使用了Radix Tree?.md
08 Redis server启动后会做哪些操作?.md
09 Redis事件驱动框架(上):何时使用select、poll、epoll?.md
10 Redis事件驱动框架(中):Redis实现了Reactor模型吗?.md
11 Redis事件驱动框架(下):Redis有哪些事件?.md
12 Redis真的是单线程吗?.md
13 Redis 6.0多IO线程的效率提高了吗?.md
14 从代码实现看分布式锁的原子性保证.md
15 为什么LRU算法原理和代码实现不一样?.md
16 LFU算法和其他算法相比有优势吗?.md
17 Lazy Free会影响缓存替换吗?.md
18 如何生成和解读RDB文件?.md
19 AOF重写(上):触发时机与重写的影响.md
20 AOF重写(下):重写时的新写操作记录在哪里?.md
21 主从复制:基于状态机的设计与实现.md
22 哨兵也和Redis实例一样初始化吗?.md
23 从哨兵Leader选举学习Raft协议实现(上).md
24 从哨兵Leader选举学习Raft协议实现(下).md
25 PubSub在主从故障切换时是如何发挥作用的?.md
26 从Ping-Pong消息学习Gossip协议的实现.md
27 从MOVED、ASK看集群节点如何处理命令?.md
28 Redis Cluster数据迁移会阻塞吗?.md
29 如何正确实现循环缓冲区?.md
30 如何在系统中实现延迟监控?.md
31 从Module的实现学习动态扩展功能.md
32 如何在一个系统中实现单元测试?.md
结束语 Redis源码阅读,让我们从新开始.md
RocketMQ 实战与进阶(完)
01 搭建学习环境准备篇.md
02 RocketMQ 核心概念扫盲篇.md
03 消息发送 API 详解与版本变迁说明.md
04 结合实际应用场景谈消息发送.md
05 消息发送核心参数与工作原理详解.md
06 消息发送常见错误与解决方案.md
07 事务消息使用及方案选型思考.md
08 消息消费 API 与版本变迁说明.md
09 DefaultMQPushConsumer 核心参数与工作原理.md
10 DefaultMQPushConsumer 使用示例与注意事项.md
11 DefaultLitePullConsumer 核心参数与实战.md
12 结合实际场景再聊 DefaultLitePullConsumer 的使用.md
13 结合实际场景顺序消费、消息过滤实战.md
14 消息消费积压问题排查实战.md
15 RocketMQ 常用命令实战.md
16 RocketMQ 集群性能摸高.md
17 RocketMQ 集群性能调优.md
18 RocketMQ 集群平滑运维.md
19 RocketMQ 集群监控(一).md
20 RocketMQ 集群监控(二).md
21 RocketMQ 集群告警.md
22 RocketMQ 集群踩坑记.md
23 消息轨迹、ACL 与多副本搭建.md
24 RocketMQ-Console 常用页面指标获取逻辑.md
25 RocketMQ Nameserver 背后的设计理念.md
26 Java 并发编程实战.md
27 从 RocketMQ 学基于文件的编程模式(一).md
28 从 RocketMQ 学基于文件的编程模式(二).md
29 从 RocketMQ 学 Netty 网络编程技巧.md
30 RocketMQ 学习方法之我见.md
Serverless 技术公开课(完)
01 架构的演进.md
02 Serverless 的价值.md
03 常见 Serverless 架构模式.md
04 Serverless 技术选型.md
05 函数计算简介.md
06 函数计算是如何工作的?.md
07 函数粘合云服务提供端到端解决方案.md
08 函数计算的开发与配置.md
09 函数的调试与部署.md
10 自动化 CI&CD 与灰度发布.md
11 函数计算的可观测性.md
12 典型案例 1:函数计算在音视频场景实践.md
13 典型案例 3:十分钟搭建弹性可扩展的 Web API.md
14 Serverless Kubernetes 容器服务介绍.md
15 Serverless Kubernetes 应用部署及扩缩容.md
16 使用 Spot 低成本运行 Job 任务.md
17 低成本运行 Spark 数据计算.md
18 GPU 机器学习开箱即用.md
19 基于 Knative 低成本部署在线应用,灵活自动伸缩.md
20 快速构建 JenkinsGitlab 持续集成环境.md
21 在线应用的 Serverless 实践.md
22 通过 IDEMaven 部署 Serverless 应用实践.md
23 企业级 CICD 工具部署 Serverless 应用的落地实践.md
24 Serverless 应用如何管理日志&持久化数据.md
25 Serverless 应用引擎产品的流量负载均衡和路由策略配置实践.md
26 Spring CloudDubbo 应用无缝迁移到 Serverless 架构.md
27 SAE 应用分批发布与无损下线的最佳实践.md
28 如何通过压测工具+ SAE 弹性能力轻松应对大促.md
29 SAE 极致应用部署效率.md
ShardingSphere 核心原理精讲-完
00 如何正确学习一款分库分表开源框架?.md
01 从理论到实践:如何让分库分表真正落地?.md
02 顶级项目:ShardingSphere 是一款什么样的 Apache 开源软件?.md
03 规范兼容:JDBC 规范与 ShardingSphere 是什么关系?.md
04 应用集成:在业务系统中使用 ShardingSphere 的方式有哪些?.md
05 配置驱动:ShardingSphere 中的配置体系是如何设计的?.md
06 数据分片:如何实现分库、分表、分库+分表以及强制路由?(上).md
07 数据分片:如何实现分库、分表、分库+分表以及强制路由?(下).md
08 读写分离:如何集成分库分表+数据库主从架构?.md
09 分布式事务:如何使用强一致性事务与柔性事务?.md
10 数据脱敏:如何确保敏感数据的安全访问?.md
11 编排治理:如何实现分布式环境下的动态配置管理?.md
12 从应用到原理:如何高效阅读 ShardingSphere 源码?.md
13 微内核架构:ShardingSphere 如何实现系统的扩展性?.md
14 分布式主键:ShardingSphere 中有哪些分布式主键实现方式?.md
15 解析引擎:SQL 解析流程应该包括哪些核心阶段?(上).md
16 解析引擎:SQL 解析流程应该包括哪些核心阶段?(下).md
17 路由引擎:如何理解分片路由核心类 ShardingRouter 的运作机制?.md
18 路由引擎:如何实现数据访问的分片路由和广播路由?.md
19 路由引擎:如何在路由过程中集成多种路由策略和路由算法?.md
20 改写引擎:如何理解装饰器模式下的 SQL 改写实现机制?.md
21 执行引擎:分片环境下 SQL 执行的整体流程应该如何进行抽象?.md
22 执行引擎:如何把握 ShardingSphere 中的 Executor 执行模型?(上).md
23 执行引擎:如何把握 ShardingSphere 中的 Executor 执行模型?(下).md
24 归并引擎:如何理解数据归并的类型以及简单归并策略的实现过程?.md
25 归并引擎:如何理解流式归并和内存归并在复杂归并场景下的应用方式?.md
26 读写分离:普通主从架构和分片主从架构分别是如何实现的?.md
27 分布式事务:如何理解 ShardingSphere 中对分布式事务的抽象过程?.md
28 分布式事务:ShardingSphere 中如何集成强一致性事务和柔性事务支持?(上).md
29 分布式事务:ShardingSphere 中如何集成强一致性事务和柔性事务支持?(下).md
30 数据脱敏:如何基于改写引擎实现低侵入性数据脱敏方案?.md
31 配置中心:如何基于配置中心实现配置信息的动态化管理?.md
32 注册中心:如何基于注册中心实现数据库访问熔断机制?.md
33 链路跟踪:如何基于 Hook 机制以及 OpenTracing 协议实现数据访问链路跟踪?.md
34 系统集成:如何完成 ShardingSphere 内核与 Spring+SpringBoot 的无缝整合?.md
35 结语:ShardingSphere 总结及展望.md
Spring Boot 实战开发
00 开篇词 从零开始:为什么要学习 Spring Boot?.md
01 家族生态:如何正确理解 Spring 家族的技术体系?.md
02 案例驱动:如何剖析一个 Spring Web 应用程序?.md
03 多维配置:如何使用 Spring Boot 中的配置体系?.md
04 定制配置:如何创建和管理自定义的配置信息?.md
05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?.md
06 基础规范:如何理解 JDBC 关系型数据库访问规范?.md
07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.md
08 数据访问:如何剖析 JdbcTemplate 数据访问实现原理?.md
09 数据抽象:Spring Data 如何对数据访问过程进行统一抽象?.md
10 ORM 集成:如何使用 Spring Data JPA 访问关系型数据库?.md
11 服务发布:如何构建一个 RESTful 风格的 Web 服务?.md
12 服务调用:如何使用 RestTemplate 消费 RESTful 服务?.md
13 服务调用:如何正确理解 RestTemplate 远程调用实现原理?.md
14 消息驱动:如何使用 KafkaTemplate 集成 Kafka?.md
15 消息驱动:如何使用 JmsTemplate 集成 ActiveMQ?.md
16 消息驱动:如何使用 RabbitTemplate 集成 RabbitMQ?.md
17 安全架构:如何理解 Spring 安全体系的整体架构?.md
18 用户认证:如何基于 Spring Security 构建用户认证体系?.md
19 服务授权:如何基于 Spring Security 确保请求安全访问?.md
20 服务监控:如何使用 Actuator 组件实现系统监控?.md
21 指标定制:如何实现自定义度量指标和 Actuator 端点?.md
22 运行管理:如何使用 Admin Server 管理 Spring 应用程序?.md
23 数据测试:如何使用 Spring 测试数据访问层组件?.md
24 服务测试:如何使用 Spring 测试 Web 服务层组件?.md
结束语 以终为始:Spring Boot 总结和展望.md
Spring Security 详解与实操
00 开篇词 Spring Security,为你的应用安全与职业之路保驾护航.md
01 顶级框架:Spring Security 是一款什么样的安全性框架?.md
02 用户认证:如何使用 Spring Security 构建用户认证体系?.md
03 认证体系:如何深入理解 Spring Security 用户认证机制?.md
04 密码安全:Spring Security 中包含哪些加解密技术?.md
05 访问授权:如何对请求的安全访问过程进行有效配置?.md
06 权限管理:如何剖析 Spring Security 的授权原理?.md
07 案例实战:使用 Spring Security 基础功能保护 Web 应用.md
08 管道过滤:如何基于 Spring Security 过滤器扩展安全性?.md
09 攻击应对:如何实现 CSRF 保护和跨域 CORS?.md
10 全局方法:如何确保方法级别的安全访问?.md
11 案例实战:使用 Spring Security 高级主题保护 Web 应用.md
12 开放协议:OAuth2 协议解决的是什么问题?.md
13 授权体系:如何构建 OAuth2 授权服务器?.md
14 资源保护:如何基于 OAuth2 协议配置授权过程?.md
15 令牌扩展:如何使用 JWT 实现定制化 Token?.md
16 案例实战:基于 Spring Security 和 Spring Cloud 构建微服务安全架构.md
17 案例实战:基于 Spring Security 和 OAuth2 实现单点登录.md
18 技术趋势:如何为 Spring Security 添加响应式编程特性?.md
19 测试驱动:如何基于 Spring Security 测试系统安全性?.md
20 结束语 以终为始,Spring Security 的学习总结.md
SpringCloud微服务实战(完)
00 开篇导读.md
01 以真实“商场停车”业务切入——需求分析.md
02 具象业务需求再抽象分解——系统设计.md
03 第一个 Spring Boot 子服务——会员服务.md
04 如何维护接口文档供外部调用——在线接口文档管理.md
05 认识 Spring Cloud 与 Spring Cloud Alibaba 项目.md
06 服务多不易管理如何破——服务注册与发现.md
07 如何调用本业务模块外的服务——服务调用.md
08 服务响应慢或服务不可用怎么办——快速失败与服务降级.md
09 热更新一样更新服务的参数配置——分布式配置中心.md
10 如何高效读取计费规则等热数据——分布式缓存.md
11 多实例下的定时任务如何避免重复执行——分布式定时任务.md
12 同一套服务如何应对不同终端的需求——服务适配.md
13 采用消息驱动方式处理扣费通知——集成消息中间件.md
14 Spring Cloud 与 Dubbo 冲突吗——强强联合.md
15 破解服务中共性问题的繁琐处理方式——接入 API 网关.md
16 服务压力大系统响应慢如何破——网关流量控制.md
17 集成网关后怎么做安全验证——统一鉴权.md
18 多模块下的接口 API 如何统一管理——聚合 API.md
19 数据分库后如何确保数据完整性——分布式事务.md
20 优惠券如何避免超兑——引入分布式锁.md
21 如何查看各服务的健康状况——系统应用监控.md
22 如何确定一次完整的请求过程——服务链路跟踪.md
23 结束语.md
Vim 实用技巧必知必会
00 导读 池建强:Vim 就是四个字“唯快不破”.md
00 开篇词 我们为什么要学 Vim?.md
01 各平台下的 Vim 安装方法:上路前准备好你的宝马.md
02 基本概念和基础命令:应对简单的编辑任务.md
03 更多常用命令:应对稍复杂的编辑任务.md
04 初步定制:让你的 Vim 更顺手.md
05 多文件打开与缓冲区:复制粘贴的正确姿势.md
06 窗口和标签页:修改、对比多个文件的正确姿势.md
07 正则表达式:实现文件内容的搜索和替换.md
08 基本编程支持:规避、解决编程时的常见问题.md
09 七大常用技巧:让编辑效率再上一个台阶.md
10 代码重构实验:在实战中提高编辑熟练度.md
11 文本的细节:关于字符、编码、行你所需要知道的一切.md
12 语法加亮和配色方案:颜即正义.md
13 YouCompleteMe:Vim 里的自动完成.md
14 Vim 脚本简介:开始你的深度定制.md
15 插件荟萃:不可或缺的插件.md
16 终端和 GDB 支持:不离开 Vim 完成开发任务.md
拓展1 纯文本编辑:使用 Vim 书写中英文文档.md
拓展2 C 程序员的 Vim 工作环境:C 代码的搜索、提示和自动完成.md
拓展3 Python 程序员的 Vim 工作环境:完整的 Python 开发环境.md
拓展4 插件样例分析:自己动手改进插件.md
拓展5 其他插件和技巧:吴咏炜的箱底私藏.md
结束语 Vim 森林探秘,一切才刚刚开始.md
ZooKeeper源码分析与实战-完
00 开篇词:选择 ZooKeeper,一步到位掌握分布式开发.md
01 ZooKeeper 数据模型:节点的特性与应用.md
02 发布订阅模式:如何使用 Watch 机制实现分布式通知.md
03 ACL 权限控制:如何避免未经授权的访问?.md
04 ZooKeeper 如何进行序列化?.md
05 深入分析 Jute 的底层实现原理.md
06 ZooKeeper 的网络通信协议详解.md
07 单机模式:服务器如何从初始化到对外提供服务?.md
08 集群模式:服务器如何从初始化到对外提供服务?.md
09 创建会话:避开日常开发的那些“坑”.md
10 ClientCnxn:客户端核心工作类工作原理解析.md
11 分桶策略:如何实现高效的会话管理?.md
12 服务端是如何处理一次会话请求的?.md
13 Curator:如何降低 ZooKeeper 使用的复杂性?.md
14 Leader 选举:如何保证分布式数据的一致性?.md
15 ZooKeeper 究竟是怎么选中 Leader 的?.md
16 ZooKeeper 集群中 Leader 与 Follower 的数据同步策略.md
17 集群中 Leader 的作用:事务的请求处理与调度分析.md
18 集群中 Follow 的作用:非事务请求的处理与 Leader 的选举分析.md
19 Observer 的作用与 Follow 有哪些不同?.md
20 一个运行中的 ZooKeeper 服务会产生哪些数据和文件?.md
21 ZooKeeper 分布式锁:实现和原理解析.md
22 基于 ZooKeeper 命名服务的应用:分布式 ID 生成器.md
23 使用 ZooKeeper 实现负载均衡服务器功能.md
24 ZooKeeper 在 Kafka 和 Dubbo 中的工业级实现案例分析.md
25 如何搭建一个高可用的 ZooKeeper 生产环境?.md
26 JConsole 与四字母命令:如何监控服务器上 ZooKeeper 的运行状态?.md
27 crontab 与 PurgeTxnLog:线上系统日志清理的最佳时间和方式.md
28 彻底掌握二阶段提交三阶段提交算法原理.md
29 ZAB 协议算法:崩溃恢复和消息广播.md
30 ZAB 与 Paxos 算法的联系与区别.md
31 ZooKeeper 中二阶段提交算法的实现分析.md
32 ZooKeeper 数据存储底层实现解析.md
33 结束语 分布技术发展与 ZooKeeper 应用前景.md
中间件核心技术与实战
00 开篇词 为什么中间件对分布式架构体系来说这么重要?.md
01 中间件生态(上):有哪些类型的中间件?.md
02 中间件生态(下):同类型的中间件如何进行选型?.md
03 数组与链表:存储设计的基石有哪些?.md
04 红黑树:图解红黑树的构造过程与应用场景.md
05 多线程:多线程编程有哪些常见的设计模式?.md
06 锁:如何理解锁的同步阻塞队列与条件队列?.md
07 NIO:手撸一个简易的主从多Reactor线程模型.md
08 Netty:如何优雅地处理网络读写,制定网络通信协议?.md
08 加餐 中间件底层的通用设计理念.md
09 技术选型:如何选择微服务框架和注册中心?.md
10 设计原理:Dubbo核心设计原理剖析.md
11 案例:如何基于Dubbo进行网关设计?.md
12 案例:如何实现蓝绿发布?.md
13 技术选型:如何根据应用场景选择合适的消息中间件?.md
14 性能之道:RocketMQ与Kafka高性能设计对比.md
15 案例:消息中间件如何实现蓝绿?.md
16 案例:如何提升RocketMQ顺序消费性能?.md
17 运维:如何运维日均亿级的消息集群?.md
18 案例:如何排查RocketMQ消息发送超时故障?.md
19 案例:如何排查RocketMQ消息消费积压问题?.md
20 技术选型:分布式定时调度框架的功能和未来.md
21 设计理念:如何基于ZooKeeper设计准实时架构?.md
22 案例:使用分布式调度框架该考虑哪些问题?.md
23 案例:如何在生产环境进行全链路压测?.md
大咖助阵 高楼:我们应该如何学习中间件?.md
用户故事 学而时习之,不亦乐乎.md
用户故事 愿做技术的追梦人.md
用户故事 浪费时间也是为了珍惜时间.md
结束语 坚持不懈,越努力越幸运.md
互联网消费金融高并发领域设计
01 互联网消费金融高并发架构设计体系的设计原则.md
02 打造互联网消金高并发架构八大中间件运用.md
03 互联网金融高并发架构微服务治理方案实践.md
04 构建高并发互联网消费金融体系的领域规划设计.md
05 互联网消费金融高并发场景下监控体系建设.md
从 0 开始学架构
00 开篇词 照着做,你也能成为架构师!.md
01 架构到底是指什么?.md
02 架构设计的历史背景.md
03 架构设计的目的.md
04 复杂度来源:高性能.md
05 复杂度来源:高可用.md
06 复杂度来源:可扩展性.md
07 复杂度来源:低成本、安全、规模.md
08 架构设计三原则.md
09 架构设计原则案例.md
10 架构设计流程:识别复杂度.md
11 架构设计流程:设计备选方案.md
12 架构设计流程:评估和选择备选方案.md
13 架构设计流程:详细方案设计.md
14 高性能数据库集群:读写分离.md
15 高性能数据库集群:分库分表.md
16 高性能NoSQL.md
17 高性能缓存架构.md
18 单服务器高性能模式:PPC与TPC.md
19 单服务器高性能模式:Reactor与Proactor.md
20 高性能负载均衡:分类及架构.md
21 高性能负载均衡:算法.md
22 想成为架构师,你必须知道CAP理论.md
23 想成为架构师,你必须掌握的CAP细节.md
24 FMEA方法,排除架构可用性隐患的利器.md
25 高可用存储架构:双机架构.md
26 高可用存储架构:集群和分区.md
27 如何设计计算高可用架构?.md
28 业务高可用的保障:异地多活架构.md
29 异地多活设计4大技巧.md
30 异地多活设计4步走.md
31 如何应对接口级的故障?.md
32 可扩展架构的基本思想和模式.md
33 传统的可扩展架构模式:分层架构和SOA.md
34 深入理解微服务架构:银弹 or 焦油坑?.md
35 微服务架构最佳实践 - 方法篇.md
36 微服务架构最佳实践 - 基础设施篇.md
37 微内核架构详解.md
38 架构师应该如何判断技术演进的方向?.md
39 互联网技术演进的模式.md
40 互联网架构模板:存储层技术.md
41 互联网架构模板:开发层和服务层技术.md
42 互联网架构模板:网络层技术.md
43 互联网架构模板:用户层和业务层技术.md
44 互联网架构模板:平台技术.md
45 架构重构内功心法第一式:有的放矢.md
46 架构重构内功心法第二式:合纵连横.md
47 架构重构内功心法第三式:运筹帷幄.md
48 再谈开源项目:如何选择、使用以及二次开发?.md
49 谈谈App架构的演进.md
50 架构实战:架构设计文档模板.md
51 如何画出优秀的软件系统架构图?.md
加餐|业务架构实战营开营了.md
加餐|单服务器高性能模式性能对比.md
加餐|扒一扒中台皇帝的外衣.md
如何高效地学习开源项目 华仔,放学别走! 第3期.md
新书首发 《从零开始学架构》.md
架构专栏特别放送 华仔,放学别走! 第2期.md
架构专栏特别放送 华仔,放学别走!第1期.md
架构师必读书单 华仔,放学别走! 第5期.md
架构师成长之路 华仔,放学别走! 第4期.md
结束语 坚持,成就你的技术梦想.md
代码之丑
00 开篇词 这一次,我们从“丑”代码出发.md
01 缺乏业务含义的命名:如何精准命名?.md
02 乱用英语:站在中国人的视角来看英文命名.md
03 重复代码:简单需求到处修改,怎么办?.md
04 长函数:为什么你总是不可避免地写出长函数?.md
05 大类:如何避免写出难以理解的大类?.md
06 长参数列表:如何处理不同类型的长参数?.md
07 滥用控制语句:出现控制结构,多半是错误的提示.md
08 缺乏封装:如何应对火车代码和基本类型偏执问题?.md
09 可变的数据:不要让你的代码“失控”.md
10 变量声明与赋值分离:普通的变量声明,怎么也有坏味道?.md
11 依赖混乱:你可能还没发现问题,代码就已经无法挽救了.md
12 不一致的代码:为什么你的代码总被吐槽难懂?.md
13 落后的代码风格:使用“新”的语言特性和程序库升级你的代码.md
14 多久进行一次代码评审最合适?.md
15 新需求破坏了代码,怎么办?.md
16 熊节:什么代码应该被重构?.md
17 课前作业点评:发现“你”代码里的坏味道.md
结束语 写代码是一件可以一生精进的事.md
全解网络协议
01 我应该站在谁的肩膀上 - OSI vs TCPIP模型.md
02 万丈高楼平地起- 物理层 + 数据链路层.md
03 OSI的灵魂就是我 - 网络层.md
04 要快还是要稳你说好了 - 传输层.md
05 是时候展现真正的技术了 - 应用层.md
06 重回小学课堂 - 二进制101.md
07 1+1 = 2吗? - 二进制的计算.md
08 16进制又是个什么鬼? - 16进制的讲解.md
09 我想有个家 - 什么是IP地址.md
10 我可是住二环的人 - IP地址的组成和分类.md
11 我已经没地方住了吗 - IPv6.md
12 向左还是向右 - IP路由.md
13 我能给你安全感 - TCP(一).md
14 我那不为人知的秘密是什么 - TCP(二).md
15 不问收没收到,就问快不快 - UDP.md
16 我为什么与众不同 - TCP高级篇(拥塞模型).md
17 来,先看看我的家谱 - HTTP的身世.md
18 我都这么成功了,你却说我不行 - HTTP 的特点和缺点.md
19 我老了,让我儿子来吧 - HTTP2.md
20 稳重的大外甥 - HTTPS.md
21 HTTP的高级篇 - HTTPClient(Java).md
22 想来我家,你自己查呀 - DNS.md
23 来的早,不如来得巧 - NAT.md
24 辛苦的邮政 - SMTP.md
25 你就是看不见我 - VPN.md
26 黑客的好帮手 - SSH.md
27 你可以得到我的心,却得不到我的人 - 物理安全设备.md
28 你怎么证明你就是你 - 身份验证和访问控制.md
29 我要怎么藏好我的考研资料 - 网络攻击(一).md
30 我要怎么藏好我的考研资料 - 网络攻击(二).md
31 如何保护我的考研资料 - 网络攻击防范.md
32 Linux网络安全 - 安全实战.md
33 结语.md
分布式中间件实践之路(完)
01 开篇词:从中间件开始学习分布式.md
02 走进分布式中间件(课前必读).md
03 主流分布式缓存方案的解读及比较.md
04 分布式一致性协议 Gossip 和 Redis 集群原理解析.md
05 基于 Redis 的分布式缓存实现及加固策略.md
06 Redis 实际应用中的异常场景及其根因分析和解决方案.md
07 Redis-Cluster 故障倒换调优原理分析.md
08 基于 Redis 的分布式锁实现及其踩坑案例.md
09 分布式一致性算法 Raft 和 Etcd 原理解析.md
10 基于 Etcd 的分布式锁实现原理及方案.md
11 主流的分布式消息队列方案解读及比较.md
12 搭建基于 Kafka 和 ZooKeeper 的分布式消息队列.md
13 深入解读基于 Kafka 和 ZooKeeper 的分布式消息队列原理.md
14 深入浅出解读 Kafka 的可靠性机制.md
分布式技术原理与实战45讲-完
00 开篇词:搭建分布式知识体系,挑战高薪 Offer.md
01 如何证明分布式系统的 CAP 理论?.md
02 不同数据一致性模型有哪些应用?.md
03 如何透彻理解 Paxos 算法?.md
04 ZooKeeper 如何保证数据一致性?.md
05 共识问题:区块链如何确认记账权?.md
06 如何准备一线互联网公司面试?.md
07 分布式事务有哪些解决方案?.md
08 对比两阶段提交,三阶段协议有哪些改进?.md
09 MySQL 数据库如何实现 XA 规范?.md
10 如何在业务中体现 TCC 事务模型?.md
11 分布式锁有哪些应用场景和实现?.md
12 如何使用 Redis 快速实现分布式锁?.md
13 分布式事务考点梳理 + 高频面试题.md
14 如何理解 RPC 远程服务调用?.md
15 为什么微服务需要 API 网关?.md
16 如何实现服务注册与发现?.md
17 如何实现分布式调用跟踪?.md
18 分布式下如何实现配置管理?.md
19 容器化升级对服务有哪些影响?.md
20 ServiceMesh:服务网格有哪些应用?.md
21 Dubbo vs Spring Cloud:两大技术栈如何选型?.md
22 分布式服务考点梳理 + 高频面试题.md
23 读写分离如何在业务中落地?.md
24 为什么需要分库分表,如何实现?.md
25 存储拆分后,如何解决唯一主键问题?.md
26 分库分表以后,如何实现扩容?.md
27 NoSQL 数据库有哪些典型应用?.md
28 ElasticSearch 是如何建立索引的?.md
29 分布式存储考点梳理 + 高频面试题.md
30 消息队列有哪些应用场景?.md
31 集群消费和广播消费有什么区别?.md
32 业务上需要顺序消费,怎么保证时序性?.md
33 消息幂等:如何保证消息不被重复消费?.md
34 高可用:如何实现消息队列的 HA?.md
35 消息队列选型:Kafka 如何实现高性能?.md
36 消息队列选型:RocketMQ 适用哪些场景?.md
37 消息队列考点梳理 + 高频面试题.md
38 不止业务缓存,分布式系统中还有哪些缓存?.md
39 如何避免缓存穿透、缓存击穿、缓存雪崩?.md
40 经典问题:先更新数据库,还是先更新缓存?.md
41 失效策略:缓存过期都有哪些策略?.md
42 负载均衡:一致性哈希解决了哪些问题?.md
43 缓存高可用:缓存如何保证高可用?.md
44 分布式缓存考点梳理 + 高频面试题.md
45 从双十一看高可用的保障方式.md
46 高并发场景下如何实现系统限流?.md
47 降级和熔断:如何增强服务稳定性?.md
48 如何选择适合业务的负载均衡策略?.md
49 线上服务有哪些稳定性指标?.md
50 分布式下有哪些好用的监控组件?.md
51 分布式下如何实现统一日志系统?.md
52 分布式路漫漫,厚积薄发才是王道.md
分布式链路追踪实战-完
00 分布式链路追踪实战.md
01 数据观测:数据追踪的基石从哪里来?.md
02 系统日志:何以成为保障稳定性的关键?.md
03 日志编写:怎样才能编写“可观测”的系统日志?.md
04 统计指标:“五个九”对系统稳定的真正意义.md
05 监控指标:如何通过分析数据快速定位系统隐患?(上).md
06 监控指标:如何通过分析数据快速定位系统隐患?(下).md
07 指标编写:如何编写出更加了解系统的指标?.md
08 链路监控:为什么对于系统而言必不可少?.md
09 性能剖析:如何补足分布式追踪短板?.md
10 链路分析:除了观测链路,还能做什么?.md
11 黑白盒监控:系统功能与结构稳定的根基.md
12 系统告警:快速感知业务隐藏问题.md
13 告警质量:如何更好地创建告警规则和质量?.md
14 告警处理:怎样才能更好地解决问题?.md
15 日志收集:ELK 如何更高效地收集日志?.md
16 指标体系:Prometheus 如何更完美地显示指标体系?.md
17 链路追踪:Zipkin 如何进行分布式追踪?.md
18 观测分析:SkyWalking 如何把观测和分析结合起来?.md
19 云端观测:ARMS 如何进行云观测?.md
20 运维集成:内部的 OSS 系统如何与观测相结合?.md
21 结束语 未来的监控是什么样子?.md
前端工程化精讲-完
00 开篇词 建立上帝视角,全面系统掌握前端效率工程化.md
01 项目基石:前端脚手架工具探秘.md
02 界面调试:热更新技术如何开着飞机修引擎?.md
03 构建提速:如何正确使用 SourceMap?.md
04 接口调试:Mock 工具如何快速进行接口调试?.md
05 编码效率:如何提高编写代码的效率?.md
06 团队工具:如何利用云开发提升团队开发效率?.md
07 低代码工具:如何用更少的代码实现更灵活的需求.md
08 无代码工具:如何做到不写代码就能高效交付?.md
09 构建总览:前端构建工具的演进.md
10 流程分解:Webpack 的完整构建流程.md
11 编译提效:如何为 Webpack 编译阶段提速?.md
12 打包提效:如何为 Webpack 打包阶段提速?.md
13 缓存优化:那些基于缓存的优化方案.md
14 增量构建:Webpack 中的增量构建.md
15 版本特性:Webpack 5 中的优化细节.md
16 无包构建:盘点那些 No-bundle 的构建方案.md
17 部署初探:为什么一般不在开发环境下部署代码?.md
18 工具盘点:掌握那些流行的代码部署工具.md
19 安装提效:部署流程中的依赖安装效率优化.md
20 流程优化:部署流程中的构建流程策略优化.md
21 容器方案:从构建到部署,容器化方案的优势有哪些?.md
22 案例分析:搭建基本的前端高效部署系统.md
23 结束语 前端效率工程化的未来展望.md
即时消息技术剖析与实战
00 开篇词 搞懂“实时交互”的IM技术,将会有什么新机遇?.md
01 架构与特性:一个完整的IM系统是怎样的?.md
02 消息收发架构:为你的App,加上实时通信功能.md
03 轮询与长连接:如何解决消息的实时到达问题?.md
04 ACK机制:如何保证消息的可靠投递?.md
05 消息序号生成器:如何保证你的消息不会乱序?.md
06 HttpDNS和TLS:你的消息聊天真的安全吗?.md
07 分布式锁和原子性:你看到的未读消息提醒是真的吗?.md
08 智能心跳机制:解决网络的不确定性.md
09 分布式一致性:让你的消息支持多终端漫游.md
10 自动智能扩缩容:直播互动场景中峰值流量的应对.md
11 期中实战:动手写一个简易版的IM系统.md
12 服务高可用:保证核心链路稳定性的流控和熔断机制.md
13 HTTP Tunnel:复杂网络下消息通道高可用设计的思考.md
14 分片上传:如何让你的图片、音视频消息发送得更快?.md
15 CDN加速:如何让你的图片、视频、语音消息浏览播放不卡?.md
16 APNs:聊一聊第三方系统级消息通道的事.md
17 Cache:多级缓存架构在消息系统中的应用.md
18 Docker容器化:说一说IM系统中模块水平扩展的实现.md
19 端到端Trace:消息收发链路的监控体系搭建.md
20 存储和并发:万人群聊系统设计中的几个难点.md
21 期末实战:为你的简约版IM系统,加上功能.md
22 答疑解惑:不同即时消息场景下架构实现上的异同.md
结束语 真正的高贵,不是优于别人,而是优于过去的自己.md
后端技术面试38讲
00 开篇词 掌握软件开发技术的第一性原理.md
01 程序运行原理:程序是如何运行又是如何崩溃的?.md
02 数据结构原理:Hash表的时间复杂度为什么是O(1)?.md
03 Java虚拟机原理:JVM为什么被称为机器(machine)?.md
04 网络编程原理:一个字符的互联网之旅.md
05 文件系统原理:如何用1分钟遍历一个100TB的文件?.md
06 数据库原理:为什么PrepareStatement性能更好更安全?.md
07 答疑 Java Web程序的运行时环境到底是怎样的?.md
07 编程语言原理:面向对象编程是编程的终极形态吗?.md
08 软件设计的方法论:软件为什么要建模?.md
09 软件设计实践:如何使用UML完成一个设计文档?.md
10 软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?.md
11 软件设计的开闭原则:如何不修改代码却能实现需求变更?.md
12 软件设计的依赖倒置原则:如何不依赖代码却可以复用它的功能?.md
13 软件设计的里氏替换原则:正方形可以继承长方形吗?.md
14 软件设计的单一职责原则:为什么说一个类文件打开最好不要超过一屏?.md
15 软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?.md
16 设计模式基础:不会灵活应用设计模式,你就没有掌握面向对象编程.md
17 设计模式应用:编程框架中的设计模式.md
18 反应式编程框架设计:如何使程序调用不阻塞等待,立即响应?.md
19 组件设计原则:组件的边界在哪里?.md
20 答疑 对于设计模式而言,场景到底有多重要?.md
20 领域驱动设计:35岁的程序员应该写什么样的代码?.md
21 分布式架构:如何应对高并发的用户请求.md
22 缓存架构:如何减少不必要的计算?.md
23 异步架构:如何避免互相依赖的系统间耦合?.md
24 负载均衡架构:如何用10行代码实现一个负载均衡服务?.md
25 数据存储架构:如何改善系统的数据存储能力?.md
26 搜索引擎架构:如何瞬间完成海量数据检索?.md
27 微服务架构:微服务究竟是灵丹还是毒药?.md
28 高性能架构:除了代码,你还可以在哪些地方优化性能?.md
29 高可用架构:我们为什么感觉不到淘宝应用升级时的停机?.md
30 安全性架构:为什么说用户密码泄漏是程序员的锅?.md
31 大数据架构:大数据技术架构的思想和原理是什么?.md
32 AI与物联网架构:从智能引擎到物联网平台.md
33 区块链技术架构:区块链到底能做什么?.md
33 答疑 互联网需要解决的技术问题是什么?.md
34 技术修炼之道:同样工作十几年,为什么有的人成为大厂架构师,有的人失业?.md
35 技术进阶之道:你和这个星球最顶级的程序员差几个等级?.md
36 技术落地之道:你真的知道自己要解决的问题是什么吗?.md
37 技术沟通之道:如何解决问题?.md
38 技术管理之道:你真的要转管理吗?.md
38 答疑 工作中的交往和沟通,都有哪些小技巧呢?.md
加餐 软件设计文档示例模板.md
结束语 期待未来的你,成为优秀的软件架构师.md
容器实战高手课
00 开篇词 一个态度两个步骤,成为容器实战高手.md
01 认识容器:容器的基本操作和实现原理.md
02 理解进程(1):为什么我在容器中不能kill 1号进程?.md
03 理解进程(2):为什么我的容器里有这么多僵尸进程?.md
04 理解进程(3):为什么我在容器中的进程被强制杀死了?.md
05 容器CPU(1):怎么限制容器的CPU使用?.md
06 容器CPU(2):如何正确地拿到容器CPU的开销?.md
07 Load Average:加了CPU Cgroup限制,为什么我的容器还是很慢?.md
08 容器内存:我的容器为什么被杀了?.md
09 Page Cache:为什么我的容器内存使用量总是在临界点.md
10 Swap:容器可以使用Swap空间吗?.md
11 容器文件系统:我在容器中读写文件怎么变慢了?.md
12 容器文件Quota:容器为什么把宿主机的磁盘写满了?.md
13 容器磁盘限速:我的容器里磁盘读写为什么不稳定_.md
14 容器中的内存与IO:容器写文件的延时为什么波动很大?.md
15 容器网络:我修改了_proc_sys_net下的参数,为什么在容器中不起效?.md
16 容器网络配置(1):容器网络不通了要怎么调试.md
17 容器网络配置(2):容器网络延时要比宿主机上的高吗.md
18 容器网络配置(3):容器中的网络乱序包怎么这么高?.md
19 容器安全(1):我的容器真的需要privileged权限吗.md
20 容器安全(2):在容器中,我不以root用户来运行程序可以吗?.md
加餐01 案例分析:怎么解决海量IPVS规则带来的网络延时抖动问题?.md
加餐02 理解perf:怎么用perf聚焦热点函数?.md
加餐03 理解ftrace(1):怎么应用ftrace查看长延时内核函数?.md
加餐04 理解ftrace(2):怎么理解ftrace背后的技术tracepoint和kprobe?.md
加餐05 eBPF:怎么更加深入地查看内核中的函数?.md
加餐06 BCC:入门eBPF的前端工具.md
结束语 跳出舒适区,突破思考的惰性.md
容量保障核心技术与实战
00 开篇词 互联网时代,人人肩负容量保障的职责.md
01 容量保障的目标:容量保障的目标是什么?该如何度量?.md
02 容量测试与验证:怎样科学实施容量测试?.md
03 容量指标分析经典5问:响应时间真的是越短越好吗?.md
04 容量治理的三板斧:扩容、限流与降级.md
05 全链路压测:系统整体容量保障的“核武器”(上).md
06 全链路压测:系统整体容量保障的“核武器”(下).md
07 工具进化:如何实现一个分布式压测平台.md
08 容量预测(上):第三只眼,通过AI预测服务容量瓶颈.md
09 容量预测(下):为不同服务“画像”,提升容量预测准确性.md
10 浅谈排队论:数学之美,通过建模计算容量.md
11 与时俱进:云原生下的容量保障新趋势.md
12 大促容量保障体系建设:怎样做好大促活动的容量保障工作(上).md
13 大促容量保障体系建设:怎样做好大促活动的容量保障工作(下).md
14 容量保障组织建设:容量保障需要什么样的团队?.md
15 小公司也能做好容量保障:建设经济实用型的容量保障体系.md
加餐 学习容量保障的那些经典资料.md
结束语 做时间的朋友,成功是持续累积而成的.md
左耳听风
000 开篇词 洞悉技术的本质,享受科技的乐趣.md
001 程序员如何用技术变现(上).md
002 程序员如何用技术变现(下).md
003 Equifax信息泄露始末.md
004 从Equifax信息泄露看数据安全.md
005 何为技术领导力.md
006 如何拥有技术领导力.md
007 推荐阅读:每个程序员都该知道的事.md
008 Go语言,Docker和新技术.md
009 答疑解惑:渴望、热情和选择.md
010 如何成为一个大家愿意追随的Leader?.md
011 程序中的错误处理:错误返回码和异常捕捉.md
012 程序中的错误处理:异步编程和最佳实践.md
013 魔数 0x5f3759df.md
014 推荐阅读:机器学习101.md
015 时间管理:同扭曲时间的事儿抗争.md
016 时间管理:投资赚取时间.md
017 故障处理最佳实践:应对故障.md
018 故障处理最佳实践:故障改进.md
019 答疑解惑:我们应该能够识别的表象和本质.md
020 分布式系统架构的冰与火.md
021 从亚马逊的实践,谈分布式系统的难点.md
022 分布式系统的技术栈.md
023 分布式系统关键技术:全栈监控.md
024 分布式系统关键技术:服务调度.md
025 分布式系统关键技术:流量与数据调度.md
026 洞悉PaaS平台的本质.md
027 推荐阅读:分布式系统架构经典资料.md
028 编程范式游记(1)- 起源.md
029 编程范式游记(2)- 泛型编程.md
030 编程范式游记(3) - 类型系统和泛型的本质.md
031 Git协同工作流,你该怎样选.md
032 推荐阅读:分布式数据调度相关论文.md
033 编程范式游记(4)- 函数式编程.md
034 编程范式游记(5)- 修饰器模式.md
035 编程范式游记(6)- 面向对象编程.md
036 编程范式游记(7)- 基于原型的编程范式.md
037 编程范式游记(8)- Go 语言的委托模式.md
038 编程范式游记(9)- 编程的本质.md
039 编程范式游记(10)- 逻辑编程范式.md
040 编程范式游记(11)- 程序世界里的编程范式.md
041 弹力设计篇之“认识故障和弹力设计”.md
042 弹力设计篇之“隔离设计”.md
043 弹力设计篇之“异步通讯设计”.md
044 弹力设计篇之“幂等性设计”.md
045 弹力设计篇之“服务的状态”.md
046 弹力设计篇之“补偿事务”.md
047 弹力设计篇之“重试设计”.md
048 弹力设计篇之“熔断设计”.md
049 弹力设计篇之“限流设计”.md
050 弹力设计篇之“降级设计”.md
051 弹力设计篇之“弹力设计总结”.md
052 区块链技术 - 区块链的革命性及技术概要.md
053 区块链技术 - 区块链技术细节 - 哈希算法.md
054 区块链技术 - 区块链技术细节 - 加密和挖矿.md
055 区块链技术 - 去中心化的共识机制.md
056 区块链技术 - 智能合约.md
057 区块链技术 - 传统金融和虚拟货币.md
058 管理设计篇之分布式锁.md
059 管理设计篇之配置中心.md
060 管理设计篇之边车模式.md
061 管理设计篇之服务网格.md
062 管理设计篇之网关模式.md
063 管理设计篇之部署升级策略.md
064 性能设计篇之缓存.md
065 性能设计篇之异步处理.md
066 性能设计篇之数据库扩展.md
067 性能设计篇之秒杀.md
068 性能设计篇之边缘计算.md
069 程序员练级攻略(2018):开篇词.md
070 程序员练级攻略(2018):零基础启蒙.md
071 程序员练级攻略(2018):正式入门.md
072 程序员练级攻略(2018):程序员修养.md
073 程序员练级攻略(2018):编程语言.md
074 程序员练级攻略:理论学科.md
075 程序员练级攻略(2018):系统知识.md
076 程序员练级攻略(2018):软件设计.md
077 程序员练级攻略(2018):Linux系统、内存和网络.md
078 程序员练级攻略(2018):异步IO模型和Lock-Free编程.md
079 程序员练级攻略(2018):Java底层知识.md
080 程序员练级攻略(2018):数据库.md
081 程序员练级攻略(2018):分布式架构入门.md
082 程序员练级攻略(2018):分布式架构经典图书和论文.md
083 程序员练级攻略(2018):分布式架构工程设计.md
084 程序员练级攻略(2018):微服务.md
085 程序员练级攻略(2018):容器化和自动化运维.md
086 程序员练级攻略(2018):机器学习和人工智能.md
087 程序员练级攻略(2018):前端基础和底层原理.md
088 程序员练级攻略(2018):前端性能优化和框架.md
089 程序员练级攻略(2018):UIUX设计.md
090 程序员练级攻略(2018):技术资源集散地.md
091 程序员面试攻略:面试前的准备.md
092 程序员面试攻略:面试中的技巧.md
093 程序员面试攻略:面试风格.md
094 程序员面试攻略:实力才是王中王.md
095 高效学习:端正学习态度.md
096 高效学习:源头、原理和知识地图.md
097 高效学习:深度,归纳和坚持实践.md
098 高效学习:如何学习和阅读代码.md
099 高效学习:面对枯燥和量大的知识.md
100 高效沟通:Talk和Code同等重要.md
101 高效沟通:沟通阻碍和应对方法.md
102 高效沟通:沟通方式及技巧.md
103 高效沟通:沟通技术.md
104 高效沟通:好老板要善于提问.md
105 高效沟通:好好说话的艺术.md
106 加餐 谈谈我的“三观”.md
107 结束语 业精于勤,行成于思.md
微服务质量保障 20 讲-完
00 开篇词 既往不恋,当下不杂,未来不迎.md
01 微服务架构有哪些特点?.md
02 微服务架构下的质量挑战.md
03 微服务架构下的测试策略.md
04 单元测试:怎样提升最小可测试单元的质量?.md
05 集成测试:如何进行微服务的集成测试?.md
06 组件测试:如何保证单服务的质量?.md
07 契约测试:如何进行消费者驱动的契约测试?.md
08 端到端测试:站在用户视角验证整个系统.md
09 微服务架构下的质量保障体系全景概览.md
10 流程规范篇:高速迭代的研发过程需要怎样的规范?.md
11 测试技术篇:测试技术这么多,我该如何选型?.md
12 测试技术篇:如何提升测试效率?.md
13 测试技术篇:专项测试技术解决了哪些专项问题?.md
14 CICD 篇:如何更好地利用多个“测试”环境?.md
15 CICD 篇:如何构建持续交付工具链?.md
16 度量与运营篇:如何做好质量和效率的度量与运营?.md
17 度量与运营篇:如何度量与运营效率和价值?.md
18 组织保障篇:质量是设计出来的.md
19 软件测试新趋势探讨.md
20 结束语 QA 如何打造自身的核心竞争力?.md
技术与商业案例解读
000 开篇词 突破技术思维,站在商业的角度看问题.md
001 西雅图IT公司之RealNetworks:一个帝国的兴衰(上).md
002 西雅图IT公司之RealNetworks:一个帝国的兴衰(下).md
003 以RealNetworks为例,谈谈初创公司如何应对巨头碾压.md
004 可视化分析鼻祖Tableau.md
005 从Tableau上市,看学术界和工业界人士创业.md
006 在线旅游帝国Expedia崛起的背后.md
007 房产经纪的颠覆者Redfin:在“传统”与“现代”间徘徊.md
008 房产经纪的“协作者”Zillow:一个地产数据平台.md
009 颠覆还是协作,房地产市场上Redfin和Zillow的抉择.md
010 应用交付网络大厂F5:“一招鲜”之殇.md
011 在线差旅报销鼻祖Concur:在转型中获得发展.md
012 漫谈企业转型:在市场变迁中寻找生机.md
013 克雷公司沉浮录:行走在超级计算机市场.md
014 “单一化”的隐忧:从克雷公司看“一条腿走路”.md
015 Halo的开发者Bungie:与微软的聚散.md
016 “卖身”须谨慎:创业公司面临的抉择.md
017 亚马逊领导力准则之要有硬骨头.md
018 亚马逊领导力准则之决策正确.md
019 亚马逊领导力准则之客户至尚.md
020 亚马逊领导力准则之勤俭节约.md
021 亚马逊领导力准则之主人翁精神.md
022 亚马逊领导力准则之选贤育能.md
023 亚马逊领导力准则之最高标准.md
024 亚马逊领导力准则之创新简化.md
025 亚马逊领导力准则之崇尚行动.md
026 亚马逊领导力准则之远见卓识.md
027 亚马逊领导力准则之好奇求知与赢得信任.md
028 亚马逊领导力准则之刨根问底与达成业绩.md
029 智能音箱的战斗:亚马逊的硬件路.md
030 智能音箱的战斗:Echo攻城略地.md
031 智能音箱的战斗:语音助手Alexa.md
032 智能音箱的战斗:谷歌的杀入.md
033 智能音箱的战斗:亚马逊的战略布局.md
034 智能音箱的战斗:巨头纷纷入场.md
035 智能音箱的战斗:白马非马.md
036 如何透过一个领域去联合分析多家企业?.md
037 管中窥豹之从面试看企业文化:微软.md
038 管中窥豹之从面试看企业文化:亚马逊.md
039 管中窥豹之从面试看企业文化:谷歌.md
040 管中窥豹之从面试看企业文化:甲骨文.md
041 管中窥豹之从面试看企业文化:Facebook.md
042 透过企业用人之道看企业发展.md
043 办公软件的战斗:开篇.md
044 VisiCalc:第一个电子表格软件的诞生.md
045 WordStar:第一个字处理软件的故事.md
046 微软:办公软件战场的螳螂.md
047 WordPerfect:字处理软件的新秀.md
048 Lotus 1-2-3:莲花公司的电子表格帝国.md
049 红狮会战:微软的反击.md
050 大杀器Lotus Notes 和被收购的莲花公司.md
051 无敌寂寞的微软之为创新而创新.md
052 办公软件的新时代:微软和谷歌的战斗.md
053 异军突起的Slack.md
054 办公软件战斗的启示:内忧总是强于外患.md
055 办公软件战斗的启示:敌人的出现常常出其不意.md
056 半条命的Dota帝国Valve:半条命.md
057 半条命的Dota帝国Valve:Steam平台.md
058 半条命的Dota帝国Valve:Dota 2.md
059 半条命的Dota帝国Valve:无领导管理.md
060 半条命的Dota帝国Valve:虚拟现实.md
061 Gabe Newell:Valve帝国制度的利弊.md
062 文档数据库的缔造者MongoDB(上).md
063 文档数据库的缔造者MongoDB(下).md
064 以MongoDB为例,看基础架构类产品创业.md
065 直面MongoDB,谈微软的NoSQL战略.md
066 Hadoop三国之魏国Cloudera.md
067 Hadoop三国之吴国MapR.md
068 Hadoop三国之蜀国Hortonworks.md
069 Hadoop及其发行商的未来.md
070 谷歌的大数据路:从“三驾马车”到一无所有.md
071 谷歌的大数据路:一场影响深远的论战.md
072 谷歌的大数据路:谷歌的“黑科技”.md
073 如何读懂类似谷歌“三驾马车”这样的技术论文?.md
074 雅虎:大数据领域的“活雷锋”.md
075 IBM的大数据路之起早贪黑赶了晚集.md
076 社交公司们的大数据贡献.md
077 微软的大数据发展史:微软硅谷研究院.md
078 微软的大数据发展史:必应的Cosmos.md
079 微软的大数据发展史:Azure的大数据发展.md
080 亚马逊的大数据故事:从先驱者到插管吸血开源.md
081 亚马逊的大数据故事:创新和拿来并存的云服务.md
082 阿里巴巴的大数据故事:数据分析平台发展史.md
083 阿里巴巴的大数据故事:流计算引擎发展史.md
084 大公司的大数据战略得失:自建轮子成本高.md
085 大公司的大数据战略得失:抱团取暖难敌插管吸血者.md
086 Palantir:神秘的大数据独角兽.md
087Splunk:机器大数据的分析帝国.md
088 Confluent:在Kafka上飞驰的数据交换者.md
089 Powerset:HBase的老东家.md
090 Cassandra和DataStax的故事.md
091 Databricks之Spark的数据金砖王国.md
092 Data Artisans:浴火重生的新一代大数据计算引擎Flink.md
093 Dremio_在Drill和Arrow上的大数据公司.md
094 Imply:基于Druid的大数据分析公司.md
095 Kyligence:阿帕奇麒麟背后的大数据公司.md
096 Snowflake_云端的弹性数据仓库.md
097 TiDB:一个国产新数据库的创业故事.md
098 大数据创业公司的前景:红海创业多艰辛.md
099 如何通过企业技术积累去分析一家企业?.md
100 仁科:被迫再创业的David Duffield.md
101 仁科:飞跃发展的企业级软件帝国.md
102 仁科:收购和被收购.md
103 仁科的成与败.md
104 WorkDay:杜菲尔德复仇记.md
105 David Duffield的眼界和成败.md
106 分析企业的两要素:远见和执行力.md
107 Zenefits:一个卖保险的创业公司.md
108 Glassdoor:让公司信息对个人透明.md
109 从巴顿的创业史看巴顿.md
110 免费还是收费?WinRAR的生意经.md
111 周鸿祎和BAT的沉浮录(上).md
112 周鸿祎和BAT的沉浮录(中).md
113 周鸿祎和BAT的沉浮录(下).md
114 周鸿祎和BAT的沉浮录(后记).md
115 互联网第一股雅虎的兴衰:霸主的诞生.md
116 互联网第一股雅虎的兴衰:运气不敌技术.md
117 互联网第一股雅虎的兴衰:没有救世主.md
118 成也杨致远,败也杨致远.md
119 企业因人成事,领导人很重要.md
120 彼得 · 蒂尔的投资人生.md
121 商业之外的彼得 · 蒂尔.md
122 创业的智慧:从彼得·蒂尔的创投哲学说起.md
123 谷歌的创新精神:好的、坏的和丑陋的(上).md
124 谷歌的创新精神:好的、坏的和丑陋的(下).md
125 Facebook的黑客精神.md
126 Twitter:蓝色小鸟还能飞多久(上).md
127 Twitter:蓝色小鸟还能飞多久(下).md
128 赚钱是根本,换CEO也没救.md
129 Square:手机POS机和比特币交易.md
130 创意很重要,但不是一切.md
131 杰克·多西:分身有术之兼任两家上市公司CEO.md
132 Groupon:团购鼻祖的兴衰.md
133 卖掉自己是不是更好.md
134 企业在线存储Box.md
135 个人在线存储 Dropbox.md
136 做产品先做消费者市场,还是先做企业市场.md
137 今天我们都来Pin图片之Pinterest的图片社交路.md
138 企业不上市为哪般.md
139 微软的综合工程师改革.md
140 SaaS先驱Salesforce.md
141 太超前好不好.md
142 Sun:太阳的升起.md
143 Sun:太阳的陨落.md
144 看错敌人多可怕.md
145 SAP的HANA战略(上).md
146 SAP的HANA战略(下).md
147 成功的忽悠 加 成功的执行 等于 成功的产品.md
148 SQL Server发展史.md
149 眼光决定一切.md
150 Ashton-Tate:桌面数据库王者的兴衰.md
151 无敌不可以肆意妄为.md
152 Reddit:天涯论坛美国版.md
153 Hacker News:创业社交两不误.md
154 Y Combinator:孵化器还是培训班?.md
155 创业公司进孵化器真的值得吗?.md
156 Paul Graham:硅谷创业教父.md
157 Zynga:发家从农场开始.md
158 论Zynga的倒台.md
159 企业分析要求综合素质.md
结束语 积跬步,而终至千里.md
技术管理实战 36 讲
00 开篇词 你为什么需要学管理?.md
01 多年前的那些工程师都去哪了?.md
02 我要不要做管理呢?内心好纠结!.md
03 哪些人比较容易走上管理岗位?.md
04 我要不要转回去做技术呢?.md
05 作为技术管理者,我如何保持技术判断力?.md
06 我这样的风格能做管理吗?.md
07 我能做好管理吗,大家服我吗?.md
08 管理到底都做哪些事儿?.md
09 从工程师到管理者,角色都发生了哪些变化?.md
10 新经理常踩的坑儿有哪些?.md
11 我刚开始带团队,从哪里着手呢?.md
12 如何界定我团队是干什么的呢?.md
13 如何为团队设定合理的目标呢?.md
14 如何来规划团队的组织结构呢?.md
15 我都要申请哪些资源呢?.md
16 团队建设该从哪里入手?.md
17 如何提升员工的个人能力?.md
18 如何提升员工的工作意愿和积极性?.md
19 如何兼顾团队分工的稳定性和灵活性?.md
20 有什么方法可以有效提升团队凝聚力吗?.md
21 如何物色和培养核心人才?.md
22 如何建设团队文化,营造团队氛围?.md
23 如何和低绩效员工谈绩效?.md
24 如何让团建活动不再“收效甚微”?.md
25 多任务并行该如何应对?.md
26 如何确保项目的有效执行?.md
27 如何让流程机制得到有效的执行?.md
28 管理沟通那些事儿.md
29 沟通经常鸡同鸭讲,说不到一块怎么办?.md
30 如何掌控自己的情绪,以及如何管理情绪化的员工?.md
31 我各方面做得都很好,就是做不好向上沟通.md
32 横向沟通和非职权影响力.md
33 向下沟通的常见实例解析.md
34 管理沟通上有哪些常见的坑儿呢?.md
35 从空降谈管理方法论的积累.md
36 走出自己的管理之路.md
技术领导力实战笔记
000 开篇词 卓越的团队,必然有一个卓越的领导者.md
001 你的能力模型决定你的职位.md
002 七位CTO纵论技术领导者核心能力.md
003 CEO实话实说:我需要这样的CTO.md
004 技术领导者不等于技术管理者.md
005 CTO的三重境界.md
006 像CEO一样思考.md
007 要制定技术战略,先看清局面.md
008 技术领导力就是成事的能力.md
009 CTO是商业思维和技术思维交汇的那个点.md
010 创业公司CTO的认知升级.md
011 最合适的技术才是最有价值的技术.md
012 谈谈CTO在商业战略中的定位.md
013 把脉高效执行的关键要素.md
014 从零开始搭建轻量级研发团队.md
015 定制高效研发流程.md
016 培养中层团队的管理认知.md
017 团队成长要靠技巧和体系.md
018 做到这四点,团队必定飞速成长.md
019 将企业打造成一所终身大学.md
020 论团队管理与共同升级.md
021 绩效管理的目标不仅仅是绩效考核.md
022 验证研发团队价值的绩效考核机制.md
023 产品技术团队OKR使用法则.md
024 996、987,程序员加班文化你怎么看?.md
025 建立有效的员工淘汰机制.md
026 让细节的病毒感染你的团队.md
027 如何在不同组织文化下推行技术管理.md
028 业务高速增长期的团队管理:知轻重、重绸缪、调缓急.md
029 被8成的人误解的工程师文化.md
030 关于工程师文化的六个问题.md
031 五位技术领导者的文化构建实战.md
032 文化是管理的那只无形之手.md
033 选对的人,做正确的事情.md
034 打好技术团队搭建的基础.md
035 做个合格的技术岗位面试官.md
036 高潜力人才的内部培养.md
037 技术创业该如何选择赛道.md
038 CTO要掌握的产品哲学:理性与人性的权衡.md
039 从客户价值谈技术创新.md
040 技术人投身创业公司之前,应当考虑些什么?.md
041 技术人创业前要问自己的六个问题.md
042 团队激励之分配好你的奖金.md
043 通过积分考核提升技术团队的绩效.md
044 空降技术高管的择业七计.md
045 选好人生下一站--CTO空降上篇.md
046 走出至暗时刻--CTO空降下篇.md
047 空降领导者平稳落地要做的四道题(上).md
048 空降领导者平稳落地要做的四道题(下).md
049 打造高效的研发组织架构:高效研发流程那些事(一).md
050 你的研发流程符合你的组织架构吗?谈高效研发流程那些事(二).md
051 聊聊研发流程管理中的那些坑:高效研发流程那些事(三).md
052 数据如何驱动研发高效运转?谈高效研发流程那些事(四).md
053 如何打造高效且敏捷的组织文化?谈高效研发流程那些亊(五).md
054 打造高速运转的迭代机器:现代研发流程体系打造(一).md
055 用机器打造迭代机器:现代研发流程体系打造(二).md
056 有了敏捷开发,那交付期限去哪儿了?.md
057 敏捷中的期限之殇,软件业该怎么做?.md
058 如何打造个人技术品牌?.md
059 技术演,有章可循.md
060 正确对待技术演中的失误.md
061 刘俊强:技术最高决策者应该关注技术细节吗 .md
062 张溪梦:技术领袖需要具备的商业价值思维.md
063 未来组织形态带来的领导力挑战.md
064 如何判断业务价值的高低.md
065 如何打造高效的分布式团队?.md
066 如何打造有活力、持续创新的研发团队?.md
067 如何打造独属自己的工程师文化?.md
068 如何打造一个自组织团队?.md
069 茹炳晟:QE团队向工程效能团队转型的实践之路.md
070 技术、产品、管理的不同视角.md
071 什么样的人适合考虑管理角色.md
072 创业公司如何招到合适的人才.md
073 用数据来分析管理员工.md
074 为什么给了高工资,依然留不住核心员工?.md
075 刘俊强:一本正经教你如何毁掉一场技术演.md
076 内部技术会议的价值.md
079 程军:从0到1打造高效技术团队的方法论.md
080 技术Leader的持续成长.md
081 游舒帆:一流团队必备的商业思维能力.md
082 游舒帆:数据力,透过数据掌握公司经营大小事.md
083 游舒帆:运营力,让用户出现你期待的行为.md
084 游舒帆:策略力,让目标与行动具备高度一致性.md
085 游舒帆:敏捷力,拥抱不确定性,与VUCA共舞.md
086 刘俊强:管理者必备的高效会议指南(上).md
087 刘俊强:管理者必备的高效会议指南(下).md
088 刘俊强:做好一对一沟通的关键要素(上).md
089 刘俊强:做好一对一沟通的关键要素(下).md
090 程军:打造高效技术团队之招人.md
091 程军:打造高效技术团队之做事.md
092 成敏:技术负责人如何做优先级决策.md
093 兰军:团队研发效率低下的要因分析.md
094 兰军:提升产品团队研发效率的实践(上).md
095 兰军:提升产品团队研发效率的实践(下).md
096 阿禅:工程师转型产品经理可能踩到的坑.md
097 阿禅:工程师转型产品经理的必备思维.md
098 徐裕键:业务高速增长过程中的团队迭代.md
099 徐裕键:业务高速增长过程中的技术演进.md
100 徐裕键:团队文化建设,保持创业公司的战斗力.md
101 刘俊强:领导力提升指南之培养积极的态度.md
102 姚从磊:巧用AARRR模型,吸引优秀技术人才(一).md
103 姚从磊:巧用AARRR模型,吸引优秀技术人才(二).md
104 姚从磊:巧用 AARRR 模型,吸引优秀技术人才(三).md
105 姚从磊:巧用 AARRR 模型,吸引优秀技术人才(四).md
106 程军:技术人的「知行合一」(一).md
107 刘俊强:消除压力的七种方法.md
108 谢呈:技术高手转身创业的坑和坡.md
109 谢呈:关于垂直互联网创业的一些经验之谈.md
110 成敏:创业公司为什么会技术文化产品缺失.md
111 蔡锐涛:从0到1再到100,创业不同阶段的技术管理思考.md
112 刘俊强:必知绩效管理知识之绩效管理循环.md
113 程军:技术人的「知行合一」(二).md
114 成敏:谈谈不同阶段技术公司的特点.md
115 成敏:打造优秀团队与文化的三个推手.md
116 刘俊强:必知绩效管理知识之绩效目标的制定.md
117 程军:技术人的「知行合一」(三).md
118 吴铭:成本评估是技术leader的关键素质.md
119 汤力嘉:CTO如何进行产品决策(一).md
120 刘俊强:必知绩效管理知识之绩效数据收集(上).md
121 刘俊强:必知绩效管理知识之绩效数据收集(下).md
122 黄伟坚:创业中那些永远回避不了的问题.md
123 黄伟坚:用系统性思维看待创业.md
124 刘俊强:必知绩效管理知识之评定绩效.md
125 洪强宁:从程序员到架构师,从架构师到CTO(一).md
126 洪强宁:从程序员到架构师,从架构师到CTO(二).md
127 刘俊强:必知绩效管理知识之绩效沟通(一).md
128 王坚:年轻人永远是创新的主体.md
129 刘俊强:必知绩效管理知识之绩效沟通(二).md
130 刘俊强:必知绩效管理知识之绩效沟通(三).md
131 汤力嘉:CTO如何在产品方面进行决策(二).md
132 徐函秋:转型技术管理者初期的三大挑战(一).md
133 徐函秋:转型技术管理者初期的三大挑战(二).md
134 刘建国:我各方面做得都很好,就是做不好向上沟通.md
135 钮博彦:软件研发度量体系建设(一).md
136 钮博彦:软件研发度量体系建设(二).md
137 成敏:创业者不要成为自己公司产品技术文化的破坏者.md
138 于艺:以生存为核心,B端产品的定位心法.md
139 成敏:创业者应该具备的认知与思维方式.md
140 袁店明:创业产品必须迈过的鸿沟.md
141 徐毅:五星级软件工程师的高效秘诀(一).md
142 徐毅:五星级软件工程师的高效秘诀(二).md
143 徐毅:技术Leader应该具备的能力或素质.md
144 于艺:如何提升自己的能力与动力.md
145 李列为:技术人员的商业思维.md
146 刘天胜:打造高效团队,关键在于平衡人、事和时间(一).md
147 刘天胜:打造高效团队,关键在于平衡人、事和时间(二).md
148 肖德时:创业团队技术领导者必备的十个领导力技能(上).md
149 肖德时:创业团队技术领导者必备的十个领导力技能(下).md
150 暨家愉:技术人如何快乐的自我成长(上).md
151 暨家愉:技术人如何快乐的自我成长(下).md
152 施翔:如何打造7 24高效交付通道(上).md
153 施翔:如何打造7 24高效交付通道(下).md
154 谢东升:说说技术管理者从外企到民企的挑战.md
155 王可光:如何搭建初创团队之人才关.md
156 成敏:技术人转型管理的两大秘诀.md
157 成敏:技术人才的管理公式.md
158 胡峰:人到中年:失业与恐惧.md
159 黄云:技术管理者如何科学的做好向上管理.md
160 胡键:创业公司需要高凝聚力高绩效的技术团队.md
161 卢亿雷:企业发展的不同阶段,该如何打造高效的研发流程体系.md
162 王海亮:提升技术团队效率的5个提示(上).md
163 王海亮:提升技术团队效率的5个提示(下).md
164 陈崇磐:心理成熟度 - 创业公司识人利器.md
165 陈崇磐:管事与管人 - 如何避开创业公司组队陷阱.md
166 俞圆圆:合格CTO应该做好的5件事(上).md
167 俞圆圆:合格CTO应该做好的5件事(下).md
168 余加林:从技术人到创业合伙人必备的三个维度的改变.md
169 高琦:如何给研发打绩效不头疼而又公正?(上).md
170 高琦:如何给研发打绩效不头疼而又公正?(下).md
171 邱良军:如何有效地找到你心仪的人才.md
172 于人:研发团队人均产能3年提升3.6倍的秘诀(上).md
173 于人:研发团队人均产能3年提升3.6倍的秘诀(下).md
174 邱良军:打造高效技术团队,你准备好了吗!.md
175 邱良军:打造高效技术团队的人才招聘攻略.md
176 胡键:创业公司如何打造高凝聚力高绩效的技术团队:组织篇.md
177 胡键:创业公司如何打造高凝聚力高绩效的技术团队:工具篇.md
178 马连浩:用人的关键在于用人所长,而非改人之短.md
179 张矗:技术管理者必经的几个思维转变.md
180 钟忻:成为温格-聊聊如何当好CTO.md
181 姚威:技术团队管理中关于公平的五个核心准则.md
182 谢文杰:区块链的下一个十年.md
183 薛文植:技术管理的本质-要做尊重人性的管理.md
184 狼叔:2019年前端和Node的未来-大前端篇(上).md
185 狼叔:2019年前端和Node的未来-大前端篇(下).md
186 赵晓光:如何培养团队竞争力(上).md
187 赵晓光:如何培养团队竞争力(下).md
188 张嵩:从心理学角度看待小中型团队的管理.md
189 狼叔:2019年前端和Node的未来-Node.js篇(上).md
190 狼叔:2019年前端和Node的未来-Node.js篇(下).md
191 肖冰:如何建立高信任度的团队.md
192 崔俊涛:如何做好技术团队的激励(上).md
193 崔俊涛:如何做好技术团队的激励(下).md
194 刘俊强:2019年云计算趋势对技术人员的影响.md
195 吴晖:企业B2B服务打磨的秘诀-ESI.md
196 邱良军:关于做好技术团队管理的几点思考.md
197 邱良军:做好研发管理的3个关键.md
198 徐林:通过快速反馈建立充满信任的技术团队.md
199 宝玉:怎样平衡软件质量与时间成本范围的关系?.md
200 邱良军:沟通,沟通,还是沟通(上).md
201 邱良军:沟通,沟通,还是沟通(下).md
202 陈嘉佳:奈飞文化宣言(上).md
203 陈嘉佳:奈飞文化宣言(下).md
204 邱良军:从小处着眼,修炼文化价值观.md
205 邵浩:人工智能新技术如何快速发现及落地(上).md
206 邵浩:人工智能新技术如何快速发现及落地(下).md
207 许良:科创板来了,我该怎么办?.md
208 陈阳:科创板投资,未来哪些行业受益最大?.md
大咖对话 万玉权:如何招到并培养核心人才.md
大咖对话 万玉权:高效团队的关键,以目标为导向,用数据来说话.md
大咖对话 不可替代的Java:生态与程序员是两道护城河.md
大咖对话 从几个工程师到2000多个工程师的技术团队成长秘诀.md
大咖对话 以产生价值判断工程师贡献--读者留言精选.md
大咖对话 余沛:打造以最佳交付实践为目标的技术导向.md
大咖对话 余沛:进阶CTO必备的素质与能力.md
大咖对话 刘俊强:云计算时代技术管理者的应对之道.md
大咖对话 刘俊强:谈谈我对2019年云计算趋势的看法.md
大咖对话 创业就是把自己过去的经验快速的产品化.md
大咖对话 如何打造自我驱动型的技术团队?.md
大咖对话 如何高效管理8000多规模的技术团队.md
大咖对话 季昕华:以不变的目的应对多变的技术浪潮.md
大咖对话 对人才的长期投资是人才体系打造的根本.md
大咖对话 张建锋:创业可以快而大,也可以小而美.md
大咖对话 彭跃辉:保持高效迭代的团队是如何炼成的.md
大咖对话 彭跃辉:解决用户痛点就是立足于市场的秘诀.md
大咖对话 徐毅:如何提升员工的活力与动力?.md
大咖对话 徐毅:打造高效研发团队的五个维度及相关实践.md
大咖对话 技术人创业前衡量自我的3P3C模型.md
大咖对话 技术人真正需要的是升维思考.md
大咖对话 技术管理者应该向优秀的体育教练学习.md
大咖对话 未来技术负责人与首席增长官将如何协作?.md
大咖对话 李昊:创业公司如何做好技术团队绩效考核?.md
大咖对话 李智慧:技术人如何应对互联网寒冬.md
大咖对话 杨育斌:技术领导者要打造技术团队的最大化价值.md
大咖对话 池建强:做产品不要执着于打造爆款.md
大咖对话 焦烈焱:从四个维度更好的激发团队创造力.md
大咖对话 玉攻:四个维度看小程序与App的区别.md
大咖对话 王坚:我从不吃后悔药.md
大咖对话 王平:从人、事、价值观、文化等维度看技术团队转型.md
大咖对话 王平:如何快速搭建核心技术团队.md
大咖对话 王鹏云:技术人创业该如何选择合伙人?.md
大咖对话 王鹏云:管理方式的差异是为了更好地实现企业商业价值.md
大咖对话 王龙:利用 C 端连接 B 端实现产业互联网是下半场的重中之重.md
大咖对话 童剑:用合伙人管理结构打造完美团队.md
大咖对话 管理者是首席铲屎官?.md
大咖对话 胡哲人:技术人创业要跨过的思维坎.md
大咖对话 袁店明:如何将打造自组织团队落诸实践.md
大咖对话 袁店明:打造高效研发团队的五个要点.md
大咖对话 让团队成员持续的enjoy.md
大咖对话 谢孟军:技术人如何建立自己的个人品牌.md
大咖对话 谭待:架构的本质是折中.md
大咖对话 陈天石:AI 芯片需要技术和资本的双重密集支撑.md
大咖对话 陈斌:如何打造高创造力、高动力的技术团队.md
大咖对话 陶真:技术人要爱上问问题,而不是自己的解决方案.md
大咖对话 韩军:CTO转型CEO如何转变思路.md
大咖对话 项目成功的秘诀--技术产品双头负责制.md
大咖对话 顾旻曼:投资时我们更多地是在找优秀的团队.md
大咖对话 高斌:过分渲染会过度拉高大众对人工智能的期望.md
大咖问答 发现下一个小米,不是只能靠运气.md
大咖问答 打造自己的个人品牌,你也可以.md
新春特辑1 卓越CTO必备的能力与素质.md
新春特辑2 如何成长为优秀的技术管理者?.md
新春特辑3 如何打造高质效的技术团队?.md
新春特辑4 如何打造高效的研发流程与文化?.md
新春特辑5 如何做好人才的选育用留?.md
温故而知新 一键直达,六大文章主题索引.md
结束篇 即使远隔千山万水,也要乘风与你同往.md
持续交付36讲
00 开篇词 量身定制你的持续交付体系.md
01 持续交付到底有什么价值?.md
02 影响持续交付的因素有哪些?.md
03 持续交付和DevOps是一对好基友.md
04 一切的源头,代码分支策略的选择.md
05 手把手教你依赖管理.md
06 代码回滚,你真的理解吗?.md
07 “两个披萨”团队的代码管理实际案例.md
08 测试环境要多少?从现实需求说起.md
09 测试环境要多少?从成本与效率说起.md
10 让环境自己说话,论环境自描述的重要性.md
11 “配置”是把双刃剑,带你了解各种配置方法.md
12 极限挑战,如何做到分钟级搭建环境?.md
13 容器技术真的是环境管理的救星吗?.md
14 如何做到构建的提速,再提速!.md
15 构建检测,无规矩不成方圆.md
16 构建资源的弹性伸缩.md
17 容器镜像构建的那些事儿.md
18 如何做好容器镜像的个性化及合规检查?.md
19 发布是持续交付的最后一公里.md
20 Immutable!任何变更都需要发布.md
21 发布系统一定要注意用户体验.md
22 发布系统的核心架构和功能设计.md
23 业务及系统架构对发布的影响.md
24 如何利用监控保障发布质量?.md
25 代码静态检查实践.md
26 越来越重要的破坏性测试.md
27 利用Mock与回放技术助力自动化回归.md
28 持续交付为什么要平台化设计?.md
29 计算资源也是交付的内容.md
30 持续交付中有哪些宝贵数据?.md
31 了解移动App的持续交付生命周期.md
32 细谈移动APP的交付流水线(pipeline).md
33 进阶,如何进一步提升移动APP的交付效率?.md
34 快速构建持续交付系统(一):需求分析.md
35 快速构建持续交付系统(二):GitLab 解决代码管理问题.md
36 快速构建持续交付系统(三):Jenkins 解决集成打包问题.md
37 快速构建持续交付系统(四):Ansible 解决自动部署问题.md
持续交付专栏特别放送 答疑解惑.md
持续交付专栏特别放送 高效学习指南.md
结束语 越痛苦的事,越要经常做.md
李智慧 · 高并发架构实战课
00 开篇词 “附身”大厂架构师,身临其境设计高并发系统.md
01 软件建模与文档:架构师怎样绘制系统架构蓝图?.md
02 高并发架构设计方法:面对高并发,怎么对症下药?.md
03 短 URL 生成器设计:百亿短 URL 怎样做到无冲突?.md
04 网页爬虫设计:如何下载千亿级网页?.md
05 网盘系统设计:万亿 GB 网盘如何实现秒传与限速?.md
06 短视频系统设计:如何支持三千万用户同时在线看视频?.md
07 海量数据处理技术回顾:为什么分布式会遇到 CAP 难题?.md
08 秒杀系统设计:你的系统可以应对万人抢购盛况吗?.md
09 交友系统设计:哪种地理空间邻近算法更快?.md
10 搜索引擎设计:信息搜索怎么避免大海捞针?.md
11 反应式编程框架设计:如何使方法调用无阻塞等待?.md
12 高性能架构的三板斧:分析系统性能问题从哪里入手?.md
13 微博系统设计:怎么应对热点事件的突发访问压力?.md
14 百科应用系统设计:机房被火烧了系统还能访问吗?.md
15 限流器设计:如何避免超预期的高并发压力压垮系统?.md
16 高可用架构的十种武器:怎么度量系统的可用性?.md
17 Web 应用防火墙:怎样拦截恶意用户的非法请求?.md
18 加解密服务平台:如何让敏感数据存储与传输更安全?.md
19 许可型区块链重构:无中心的区块链怎么做到可信任?.md
20 网约车系统设计:怎样设计一个日赚 5 亿的网约车系统?.md
21 网约车系统重构:如何用 DDD 重构网约车系统设计?.md
22 大数据平台设计:如何用数据为用户创造价值?.md
结束语 一个架构师的一天.md
架构设计面试精讲
00 开篇词 中高级研发面试,逃不开架构设计这一环.md
01 研发工程师想提升面试竞争力,该具备这三个技术认知.md
02 研发工程师如何用架构师视角回答架构设计方案?.md
03 面试官如何考察与 CAP 有关的分布式理论?.md
04 亿级商品存储下,如何深度回答分布式系统的原理性问题?.md
05 海量并发场景下,如何回答分布式事务一致性问题?.md
06 分布式系统中,如何回答锁的实现原理?.md
07 RPC:如何在面试中展现出“造轮子”的能力?.md
08 MQ:如何回答消息队列的丢失、重复与积压问题.md
08 案例串联 如何让系统抗住双十一的预约抢购活动?.md
09 如何回答 MySQL 的索引原理与优化问题?.md
10 如何回答 MySQL 的事务隔离级别和锁的机制?.md
11 读多写少:MySQL 如何优化数据查询方案?.md
12 写多读少:MySQL 如何优化数据存储方案?.md
13 缓存原理:应对面试你要掌握 Redis 哪些原理?.md
14 缓存策略:面试中如何回答缓存穿透、雪崩等问题?.md
15 如何向面试官证明你做的系统是高可用的?.md
16 如何从架构师角度回答系统容错、降级等高可用问题?.md
17 如何向面试官证明你做的系统是高性能的?.md
18 如何从架构师角度回答怎么应对千万级流量的问题?.md
19 彩蛋 互联网架构设计面试,你需要掌握的知识体系.md
结束语 程序员的道、术、势.md
案例上手 Spring Boot WebFlux(完)
01 导读:课程概要.md
02 WebFlux 快速入门实践.md
03 WebFlux Web CRUD 实践.md
04 WebFlux 整合 MongoDB.md
05 WebFlux 整合 Thymeleaf.md
06 WebFlux 中 Thymeleaf 和 MongoDB 实践.md
07 WebFlux 整合 Redis.md
08 WebFlux 中 Redis 实现缓存.md
09 WebFlux 中 WebSocket 实现通信.md
10 WebFlux 集成测试及部署.md
11 WebFlux 实战图书管理系统.md
正则表达式入门课
00 导读 余晟:我是怎么学习和使用正则的?.md
00 开篇词丨学习正则,我们到底要学什么?.md
01 元字符:如何巧妙记忆正则表达式的基本元件?.md
02丨量词与贪婪:小小的正则,也可能把CPU拖垮!.md
03 分组与引用:如何用正则实现更复杂的查找和替换操作?.md
04 匹配模式:一次性掌握正则中常见的4种匹配模式.md
05 断言:如何用断言更好地实现替换重复出现的单词?.md
06 转义:正则中转义需要注意哪些问题?.md
07 正则有哪些常见的流派及其特性?.md
08 应用1:正则如何处理 Unicode 编码的文本?.md
09 应用2:如何在编辑器中使用正则完成工作?.md
10 应用3:如何在语言中用正则让文本处理能力上一个台阶?.md
11 如何理解正则的匹配原理以及优化原则?.md
12 问题集锦:详解正则常见问题及解决方案.md
加餐 从编程语言的角度来理解正则表达式.md
结束语 使用正则提高你的人生效率.md
消息队列高手课
00 开篇词 优秀的程序员,你的技术栈中不能只有“增删改查”.md
00 预习 怎样更好地学习这门课?.md
01 为什么需要消息队列?.md
02 该如何选择消息队列?.md
03 消息模型:主题和队列有什么区别?.md
04 如何利用事务消息实现分布式事务?.md
05 如何确保消息不会丢失.md
06 如何处理消费过程中的重复消息?.md
07 消息积压了该如何处理?.md
08 答疑解惑(一) 网关如何接收服务端的秒杀结果?.md
09 学习开源代码该如何入手?.md
10 如何使用异步设计提升系统性能?.md
11 如何实现高性能的异步网络传输?.md
12 序列化与反序列化:如何通过网络传输结构化的数据?.md
13 传输协议:应用程序之间对话的语言.md
14 内存管理:如何避免内存溢出和频繁的垃圾回收?.md
15 Kafka如何实现高性能IO?.md
16 缓存策略:如何使用缓存来减少磁盘IO?.md
17 如何正确使用锁保护共享数据,协调异步线程?.md
18 如何用硬件同步原语(CAS)替代锁?.md
19 数据压缩:时间换空间的游戏.md
20 RocketMQ Producer源码分析:消息生产的实现过程.md
21 Kafka Consumer源码分析:消息消费的实现过程.md
22 Kafka和RocketMQ的消息复制实现的差异点在哪?.md
23 RocketMQ客户端如何在集群中找到正确的节点?.md
24 Kafka的协调服务ZooKeeper:实现分布式系统的“瑞士军刀”.md
25 RocketMQ与Kafka中如何实现事务?.md
26 MQTT协议:如何支持海量的在线IoT设备.md
27 Pulsar的存储计算分离设计:全新的消息队列设计思路.md
28 答疑解惑(二):我的100元哪儿去了?.md
29 流计算与消息(一):通过Flink理解流计算的原理.md
30 流计算与消息(二):在流计算中使用Kafka链接计算任务.md
31 动手实现一个简单的RPC框架(一):原理和程序的结构.md
32 动手实现一个简单的RPC框架(二):通信与序列化.md
33 动手实现一个简单的RPC框架(三):客户端.md
34 动手实现一个简单的RPC框架(四):服务端.md
35 答疑解惑(三):主流消息队列都是如何存储消息的?.md
加餐 JMQ的Broker是如何异步处理消息的?.md
结束语 程序员如何构建知识体系?.md
深入剖析 MyBatis 核心原理-完
00 开篇词 领略 MyBatis 设计思维,突破持久化技术瓶颈.md
01 常见持久层框架赏析,到底是什么让你选择 MyBatis?.md
02 订单系统持久层示例分析,20 分钟带你快速上手 MyBatis.md
03 MyBatis 源码环境搭建及整体架构解析.md
04 MyBatis 反射工具箱:带你领略不一样的反射设计思路.md
05 数据库类型体系与 Java 类型体系之间的“爱恨情仇”.md
06 日志框架千千万,MyBatis 都能兼容的秘密是什么?.md
07 深入数据源和事务,把握持久化框架的两个关键命脉.md
08 Mapper 文件与 Java 接口的优雅映射之道.md
09 基于 MyBatis 缓存分析装饰器模式的最佳实践.md
10 鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(上).md
11 鸟瞰 MyBatis 初始化,把握 MyBatis 启动流程脉络(下).md
12 深入分析动态 SQL 语句解析全流程(上).md
13 深入分析动态 SQL 语句解析全流程(下).md
14 探究 MyBatis 结果集映射机制背后的秘密(上).md
15 探究 MyBatis 结果集映射机制背后的秘密(下).md
16 StatementHandler:参数绑定、SQL 执行和结果映射的奠基者.md
17 Executor 才是执行 SQL 语句的幕后推手(上).md
18 Executor 才是执行 SQL 语句的幕后推手(下).md
19 深入 MyBatis 内核与业务逻辑的桥梁——接口层.md
20 插件体系让 MyBatis 世界更加精彩.md
21 深挖 MyBatis 与 Spring 集成底层原理.md
22 基于 MyBatis 的衍生框架一览.md
23 结束语 会使用只能默默“搬砖”,懂原理才能快速晋升.md
深入拆解Java虚拟机
00 开篇词 为什么我们要学习Java虚拟机?.md
01 Java代码是怎么运行的?.md
02 Java的基本类型.md
03 Java虚拟机是如何加载Java类的.md
04 JVM是如何执行方法调用的?(上).md
05 JVM是如何执行方法调用的?(下).md
06 JVM是如何处理异常的?.md
07 JVM是如何实现反射的?.md
08 JVM是怎么实现invokedynamic的?(上).md
09 JVM是怎么实现invokedynamic的?(下).md
10 Java对象的内存布局.md
11 垃圾回收(上).md
12 垃圾回收(下).md
13 Java内存模型.md
14 Java虚拟机是怎么实现synchronized的?.md
15 Java语法糖与Java编译器.md
16 即时编译(上).md
17 即时编译(下).md
18 即时编译器的中间表达形式.md
19 Java字节码(基础篇).md
20 方法内联(上).md
21 方法内联(下).md
22 HotSpot虚拟机的intrinsic.md
23 逃逸分析.md
24 字段访问相关优化.md
25 循环优化.md
26 向量化.md
27 注解处理器.md
28 基准测试框架JMH(上).md
29 基准测试框架JMH(下).md
30 Java虚拟机的监控及诊断工具(命令行篇).md
31 Java虚拟机的监控及诊断工具(GUI篇).md
32 JNI的运行机制.md
33 Java Agent与字节码注入.md
34 Graal:用Java编译Java.md
35 Truffle:语言实现框架.md
36 SubstrateVM:AOT编译框架.md
尾声丨道阻且长,努力加餐.html.md
工具篇 常用工具介绍.md
深入浅出 Docker 技术栈实践课(完)
01 导读:Docker 核心技术预览.md
02 Docker 命令行实践.md
03 基于 Docker 的 DevOps 实践.md
04 容器云平台的构建实践.md
05 容器网络机制和多主机网络实践.md
06 Docker 日志机制与监控实践.md
07 自动化部署分布式容器云平台实践.md
深入浅出 Java 虚拟机-完
00 开篇词:JVM,一块难啃的骨头.md
01 一探究竟:为什么需要 JVM?它处在什么位置?.md
02 大厂面试题:你不得不掌握的 JVM 内存管理.md
03 大厂面试题:从覆盖 JDK 的类开始掌握类的加载机制.md
04 动手实践:从栈帧看字节码是如何在 JVM 中进行流转的.md
05 大厂面试题:得心应手应对 OOM 的疑难杂症.md
06 深入剖析:垃圾回收你真的了解吗?(上).md
07 深入剖析:垃圾回收你真的了解吗?(下).md
08 大厂面试题:有了 G1 还需要其他垃圾回收器吗?.md
09 案例实战:亿级流量高并发下如何进行估算和调优.md
10 第09讲:案例实战:面对突如其来的 GC 问题如何下手解决.md
11 第10讲:动手实践:自己模拟 JVM 内存溢出场景.md
12 第11讲:动手实践:遇到问题不要慌,轻松搞定内存泄漏.md
13 工具进阶:如何利用 MAT 找到问题发生的根本原因.md
14 动手实践:让面试官刮目相看的堆外内存排查.md
15 预警与解决:深入浅出 GC 监控与调优.md
16 案例分析:一个高死亡率的报表系统的优化之路.md
17 案例分析:分库分表后,我的应用崩溃了.md
18 动手实践:从字节码看方法调用的底层实现.md
19 大厂面试题:不要搞混 JMM 与 JVM.md
20 动手实践:从字节码看并发编程的底层实现.md
21 动手实践:不为人熟知的字节码指令.md
22 深入剖析:如何使用 Java Agent 技术对字节码进行修改.md
23 动手实践:JIT 参数配置如何影响程序运行?.md
24 案例分析:大型项目如何进行性能瓶颈调优?.md
25 未来:JVM 的历史与展望.md
26 福利:常见 JVM 面试题补充.md
深入浅出云计算
00 开篇词 云计算,这是开发者最好的时代.md
01 区域和可用区:欢迎来到云端数据中心.md
02 云虚拟机(一):云端“攒机”,有哪些容易忽视的要点?.md
03 云虚拟机(二):眼花缭乱的虚拟机型号,我该如何选择?.md
04 云虚拟机(三):老板要求省省省,有哪些妙招?.md
05 云硬盘:云上IO到底给不给力?.md
06 云上虚拟网络:开合有度,编织无形之网.md
07 云端架构最佳实践:与故障同舞,与伸缩共生.md
08 云上运维:云端究竟需不需要运维?需要怎样的运维?.md
09 什么是PaaS?怎样深入理解和评估PaaS?.md
10 对象存储:看似简单的存储服务都有哪些玄机?.md
11 应用托管服务:Web应用怎样在云上安家?.md
12 云数据库:高歌猛进的数据库“新贵”.md
13 云上大数据:云计算遇上大数据,为什么堪称天作之合?.md
14 云上容器服务:从Docker到Kubernetes,迎接云原生浪潮.md
15 无服务器计算:追求极致效率的多面手.md
16 云上AI服务:云AI能从哪些方面帮助构建智能应用?.md
结束语 与云计算一起,迈向未来.md
深入浅出可观测性
00 开篇词 可观测性,让开发和维护系统的你每晚都能睡个好觉!.md
01 以史鉴今:监控是如何一步步发展而来的?.md
02 基本概念:指标+日志+链路追踪=可观测性?.md
03 相互对比:可观测性和传统监控有什么区别?.md
04 OpenTelemetry:如何利用OpenTelemetry采集可观测数据?.md
05 构建可观测平台:应该购买商业产品还是自己搭建?.md
06 团队合作:不同团队如何高效共建可观测性?.md
07 软件开发:如何利用可观测性进行驱动?.md
08 建立 SLO:如何为系统可靠性的量化提供依据?.md
09 跟踪 SLO:如何基于错误预算采取行动?.md
10 实战 1:从 0 到 1 建立系统应用的可观测性.md
11 实战 2:基于可观测性数据进行问题分析和根因定位.md
12 实战 3:构建基于 Kubernetes 的系统可观测性.md
13 实战 4:建立软件持续集成和发布的可观测性.md
14 文化建设:如何构建可观测性的文化和框架_.md
15 展望未来:可观测性在未来的发展趋势是什么?.md
结束语 在实践中,用科学的方法分析和解决问题.md
深入浅出计算机组成原理
00 开篇词 为什么你需要学习计算机组成原理?.md
01 冯·诺依曼体系结构:计算机组成的金字塔.md
02 给你一张知识地图,计算机组成原理应该这么学.md
03 通过你的CPU主频,我们来谈谈“性能”究竟是什么?.md
04 穿越功耗墙,我们该从哪些方面提升“性能”?.md
05 计算机指令:让我们试试用纸带编程.md
06 指令跳转:原来if...else就是goto.md
07 函数调用:为什么会发生stack overflow?.md
08 ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?.md
09 程序装载:“640K内存”真的不够用么?.md
10 动态链接:程序内部的“共享单车”.md
11 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?.md
12 理解电路:从电报机到门电路,我们如何做到“千里传信”?.md
13 加法器:如何像搭乐高一样搭电路(上)?.md
14 乘法器:如何像搭乐高一样搭电路(下)?.md
15 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?.md
16 浮点数和定点数(下):深入理解浮点数到底有什么用?.md
17 建立数据通路(上):指令加运算=CPU.md
18 建立数据通路(中):指令加运算=CPU.md
19 建立数据通路(下):指令加运算=CPU.md
20 面向流水线的指令设计(上):一心多用的现代CPU.md
21 面向流水线的指令设计(下):奔腾4是怎么失败的?.md
22 冒险和预测(一):hazard是“危”也是“机”.md
23 冒险和预测(二):流水线里的接力赛.md
24 冒险和预测(三):CPU里的“线程池”.md
25 冒险和预测(四):今天下雨了,明天还会下雨么?.md
26 Superscalar和VLIW:如何让CPU的吞吐率超过1?.md
27 SIMD:如何加速矩阵乘法?.md
28 异常和中断:程序出错了怎么办?.md
29 CISC和RISC:为什么手机芯片都是ARM?.md
30 GPU(上):为什么玩游戏需要使用GPU?.md
31 GPU(下):为什么深度学习需要使用GPU?.md
32 FPGA、ASIC和TPU(上):计算机体系结构的黄金时代.md
33 解读TPU:设计和拆解一块ASIC芯片.md
34 理解虚拟机:你在云上拿到的计算机是什么样的?.md
35 存储器层次结构全景:数据存储的大金字塔长什么样?.md
36 局部性原理:数据库性能跟不上,加个缓存就好了?.md
37 理解CPU Cache(上):“4毫秒”究竟值多少钱?.md
38 高速缓存(下):你确定你的数据更新了么?.md
39 MESI协议:如何让多核CPU的高速缓存保持一致?.md
40 理解内存(上):虚拟内存和内存保护是什么?.md
41 理解内存(下):解析TLB和内存保护.md
42 总线:计算机内部的高速公路.md
43 输入输出设备:我们并不是只能用灯泡显示“0”和“1”.md
44 理解IO_WAIT:IO性能到底是怎么回事儿?.md
45 机械硬盘:Google早期用过的“黑科技”.md
46 SSD硬盘(上):如何完成性能优化的KPI?.md
47 SSD硬盘(下):如何完成性能优化的KPI?.md
48 DMA:为什么Kafka这么快?.md
49 数据完整性(上):硬件坏了怎么办?.md
50 数据完整性(下):如何还原犯罪现场?.md
51 分布式计算:如果所有人的大脑都联网会怎样?.md
52 设计大型DMP系统(上):MongoDB并不是什么灵丹妙药.md
53 设计大型DMP系统(下):SSD拯救了所有的DBA.md
54 理解Disruptor(上):带你体会CPU高速缓存的风驰电掣.md
55 理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?.md
结束语 知也无涯,愿你也享受发现的乐趣.md
深入理解 Sentinel(完)
01 开篇词:一次服务雪崩问题排查经历.md
02 为什么需要服务降级以及常见的几种降级方式.md
03 为什么选择 Sentinel,Sentinel 与 Hystrix 的对比.md
04 Sentinel 基于滑动窗口的实时指标数据统计.md
05 Sentinel 的一些概念与核心类介绍.md
06 Sentinel 中的责任链模式与 Sentinel 的整体工作流程.md
07 Java SPI 及 SPI 在 Sentinel 中的应用.md
08 资源指标数据统计的实现全解析(上).md
09 资源指标数据统计的实现全解析(下).md
10 限流降级与流量效果控制器(上).md
11 限流降级与流量效果控制器(中).md
12 限流降级与流量效果控制器(下).md
13 熔断降级与系统自适应限流.md
14 黑白名单限流与热点参数限流.md
15 自定义 ProcessorSlot 实现开关降级.md
16 Sentinel 动态数据源:规则动态配置.md
17 Sentinel 主流框架适配.md
18 Sentinel 集群限流的实现(上).md
19 Sentinel 集群限流的实现(下).md
20 结束语:Sentinel 对应用的性能影响如何?.md
21 番外篇:Sentinel 1.8.0 熔断降级新特性解读.md
由浅入深吃透 Docker-完
00 溯本求源,吃透 Docker!.md
01 Docker 安装:入门案例带你了解容器技术原理.md
02 核心概念:镜像、容器、仓库,彻底掌握 Docker 架构核心设计理念.md
03 镜像使用:Docker 环境下如何配置你的镜像?.md
04 容器操作:得心应手掌握 Docker 容器基本操作.md
05 仓库访问:怎样搭建属于你的私有仓库?.md
06 最佳实践:如何在生产中编写最优 Dockerfile?.md
07 Docker 安全:基于内核的弱隔离系统如何保障安全性?.md
08 容器监控:容器监控原理及 cAdvisor 的安装与使用.md
09 资源隔离:为什么构建容器需要 Namespace ?.md
10 资源限制:如何通过 Cgroups 机制实现资源限制?.md
11 组件组成:剖析 Docker 组件作用及其底层工作原理.md
12 网络模型:剖析 Docker 网络实现及 Libnetwork 底层原理.md
13 数据存储:剖析 Docker 卷与持久化数据存储的底层原理.md
14 文件存储驱动:AUFS 文件系统原理及生产环境的最佳配置.md
15 文件存储驱动:Devicemapper 文件系统原理及生产环境的最佳配置.md
16 文件存储驱动:OverlayFS 文件系统原理及生产环境的最佳配置.md
17 原理实践:自己动手使用 Golang 开发 Docker(上).md
18 原理实践:自己动手使用 Golang 开发 Docker(下).md
19 如何使用 Docker Compose 解决开发环境的依赖?.md
20 如何在生产环境中使用 Docker Swarm 调度容器?.md
21 如何使 Docker 和 Kubernetes 结合发挥容器的最大价值?.md
22 多阶级构建:Docker 下如何实现镜像多阶级构建?.md
23 DevOps:容器化后如何通过 DevOps 提高协作效能?.md
24 CICD:容器化后如何实现持续集成与交付?(上).md
25 CICD:容器化后如何实现持续集成与交付?(下).md
26 结束语 展望未来:Docker 的称霸之路.md
白话法律42讲
00 开篇词 这年头,你真应该懂点法律常识.md
01 “老周,我想知道” 常见法律认知盲区(一).md
02 “老周,我想知道” 律师就在你身边(二).md
03 “老周,我想知道” 律师就在你身边(三).md
04 “老周,我想知道” 律师就在你身边(四).md
05 创业未捷老板跑,社保工资哪里讨?.md
06 保密还是“卖身”,霸王条款怎么看?.md
07 编造流言蹭热度?看守所里降温度!.md
08 合同在手欠款难收,报警有用吗?.md
09 致创业:谁动了我的股权?.md
10 又见猝死!工“殇”究竟是不是工伤?.md
11 期权的“前世今生”.md
12 裁员面前,你能做的还有什么?.md
13 抄袭、盗图为什么做不得?.md
14 加班、工资、休假,你知道多少?.md
15 受贿原来这么“容易”.md
16 今天你用“VPN”了吗?.md
17 漏洞在眼前,可以悄悄破解吗?.md
18 “爬虫”真的合法吗?.md
19 非法集资到底是个啥?.md
20 黄色网站?不仅仅是“黄色”罪名.md
21 谁修改了我的积分资产?.md
22 外挂真能大吉大利吗?.md
23 如何看待“从删库到跑路”?.md
24 “伪基站”是你的避风港吗?.md
25 “网络诈骗”真的离你很远吗?.md
26 智斗中介:“北上广”租房图鉴.md
27 买买买!买房的“避坑”指南.md
28 闪婚又闪离,彩礼怎么理?.md
29 离婚还想和平?你要这么做.md
30 遗产继承的爱恨情仇.md
31 骗术升级?假结婚、假离婚的那些事儿.md
32 孩子学校受伤,谁之过?.md
33 如何让欠债还钱真正“天经地义”?.md
34 从透支到盗刷:人人须知的银行卡纠纷.md
35 远离“套路贷”的套路大全.md
36 危险!酒驾为什么被罚那么重?.md
37 老人倒地,“扶”“不服”?.md
38 “能动手就别吵吵”,代价你真的知道吗?.md
39 发生交通事故,如何处理?.md
40 交通事故综合法宝.md
41 婚姻家庭综合法宝.md
42 买卖房屋综合法宝.md
一键直达 法律专栏“食用”指南.md
加餐 “新冠肺炎”影响下,17个常见法律问题解答.md
结束语 法律,不会终止的篇章.md
白话设计模式 28 讲(完)
00 生活中的设计模式:启程之前,请不要错过我.md
01 监听模式:坑爹的热水器.md
02 适配模式:身高不够鞋来凑.md
03 状态模式:人与水的三态.md
04 单例模式:你是我生命的唯一.md
05 职责模式:我的假条去哪了.md
06 中介模式:找房子问中介.md
07 代理模式:帮我拿一下快递.md
08 装饰模式:你想怎么穿就怎么穿.md
09 工厂模式:你要拿铁还是摩卡.md
10 迭代模式:下一个就是你了.md
11 组合模式:自己组装电脑.md
12 构建模式:想要车还是庄园.md
13 克隆模式:给你一个分身术.md
14 策略模式:怎么来不重要,人到就行.md
15 命令模式:大闸蟹,走起!.md
16 备忘模式:好记性不如烂笔头.md
17 享元模式:颜料很贵必须充分利用.md
18 外观模式:学妹别慌,学长帮你.md
19 访问模式:一千个读者一千个哈姆雷特.md
20 生活中的设计模式:与经典设计模式的不解渊源.md
21 生活中的设计模式:那些未完待续的设计模式.md
22 深入解读过滤器模式:制作一杯鲜纯细腻的豆浆.md
23 深入解读对象池技术:共享让生活更便捷.md
24 深入解读回调机制:把你技能亮出来.md
25 谈谈我对设计模式的理解.md
26 谈谈我对设计原则的思考.md
27 谈谈我对项目重构的看法.md
硅谷产品实战36讲
00 开篇词 打造千万用户的世界级产品.md
01 什么是优秀的产品经理?.md
02 硅谷的产品经理是什么样子的?.md
03 科技巨头和初创公司的产品经理有什么不同?.md
04 产品经理和项目经理有什么区别?.md
05 硅谷产品经理每天在做什么?.md
06 硅谷产品经理们都来自什么背景?.md
07 如何寻找用户需求?.md
08 目标客户和用户画像.md
09 手把手教你写用例: 优化微信加好友的功能.md
10 什么是最小化可行产品(MVP)?.md
11 案例:产品发布之前出了乱子,如何权衡取舍?.md
12 制定产品成功指标.md
13 如何撰写产品需求文档?.md
14 如何用数据做出产品决定?.md
15 如何组织有效的会议?.md
16 如何和工程师有效沟通?.md
17 如何与设计师有效沟通?.md
18 如何搞定A_B测试?.md
19 增长黑客的核心公式.md
20 想要增长,你的团队需要高效的工作流.md
22 硅谷高管的UIE(Understand, Identify, Execute)增长论.md
23 增长的核心在于减少用户阻力.md
24 产品增长的代价,如何权衡取舍?.md
25 三分靠策略 七分靠执行.md
26 为什么加班很久但是没成果?产品开发流程有问题.md
27 如何激励和管理比你资深的工程师、设计师?.md
28 产品经理的晋升秘密.md
29 你需要一个产品路线图.md
30 如何制定产品优先级 ?.md
31 好的产品经理和卓越的产品经理.md
32 产品经理面试考察的是什么?.md
33 如何提升产品感(product sense)?.md
34 如何提升产品经理的综合素质?.md
35 非计算机专业也能做产品经理?.md
36 模拟一场硅谷的产品经理面试.md
尾声 每个世界级的产品都有其使命.md
新书首发 《硅谷产品:36讲直通世界级产品经理》.md
程序员的数学课
00 开篇词 数学,编程能力的营养根基.md
01 从计数开始,程序员必知必会的数制转换法.md
02 逻辑与沟通,怎样才能讲出有逻辑的话?.md
03 用数学决策,如何规划好投入、转化和产出?.md
04 万物可数学,经典公式是如何在生活中应用的?.md
05 求极值:如何找到复杂业务的最优解?.md
06 向量及其导数:计算机如何完成对海量高维度数据计算?.md
07 线性回归:如何在离散点中寻找数据规律?.md
08 加乘法则:如何计算复杂事件发生的概率?.md
09 似然估计:如何利用 MLE 对参数进行估计?.md
10 信息熵:事件的不确定性如何计算?.md
11 灰度实验:如何设计灰度实验并计算实验的收益?.md
12 统计学方法:如何证明灰度实验效果不是偶然得到的?.md
13 复杂度:如何利用数学推导对程序进行优化?.md
14 程序的循环:如何利用数学归纳法进行程序开发?.md
15 递归:如何计算汉诺塔问题的移动步数?.md
16 二分法:如何利用指数爆炸优化程序?.md
17 动态规划:如何利用最优子结构解决问题?.md
18 AI 入门:利用 3 个公式搭建最简 AI 框架.md
19 逻辑回归:如何让计算机做出二值化决策?.md
20 决策树:如何对 NP 难复杂问题进行启发式求解?.md
21 神经网络与深度学习:计算机是如何理解图像、文本和语音的?.md
22 面试中那些坑了无数人的算法题.md
23 站在生活的十字路口,如何用数学抉择?.md
24 结束语 数学底子好,学啥都快.md
计算机基础实战课
00 开篇词 练好基本功,优秀工程师成长第一步.md
01 CISC & RISC:从何而来,何至于此.md
02 RISC特性与发展:RISC-V凭什么成为“半导体行业的Linux”?.md
03 硬件语言筑基(一):从硬件语言开启手写CPU之旅.md
04 硬件语言筑基(二)_ 代码是怎么生成具体电路的?.md
05 指令架构:RISC-V在CPU设计上到底有哪些优势?.md
06 手写CPU(一):迷你CPU架构设计与取指令实现.md
07 手写CPU(二):如何实现指令译码模块?.md
08 手写CPU(三):如何实现指令执行模块?.md
09 手写CPU(四):如何实现CPU流水线的访存阶段?.md
10 手写CPU(五):CPU流水线的写回模块如何实现?.md
11 手写CPU(六):如何让我们的CPU跑起来?.md
12 QEMU:支持RISC-V的QEMU如何构建?.md
13 小试牛刀:跑通RISC-V平台的Hello World程序.md
14 走进C语言:高级语言怎样抽象执行逻辑?.md
15 C与汇编:揭秘C语言编译器的“搬砖”日常.md
16 RISC-V指令精讲(一):算术指令实现与调试.md
17 RISC-V指令精讲(二):算术指令实现与调试.md
18 RISC-V指令精讲(三):跳转指令实现与调试.md
19 RISC-V指令精讲(四):跳转指令实现与调试.md
20 RISC-V指令精讲(五):原子指令实现与调试.md
21 RISC-V指令精讲(六):加载指令实现与调试.md
22 RISC-V指令精讲(七):访存指令实现与调试.md
23 内存地址空间:程序中地址的三种产生方式.md
24 虚实结合:虚拟内存和物理内存.md
25 堆&栈:堆与栈的区别和应用.md
26 延迟分配:提高内存利用率的三种机制.md
27 应用内存管理:Linux的应用与内存管理.md
28 进程调度:应用为什么能并行执行?.md
29 应用间通信(一):详解Linux进程IPC.md
30 应用间通信(二):详解Linux进程IPC.md
31 外设通信:IO Cache与IO调度.md
32 IO管理:Linux如何管理多个外设?.md
33 lotop与lostat命令:聊聊命令背后的故事与工作原理.md
34 文件仓库:初识文件与文件系统.md
35 Linux文件系统(一):Linux如何存放文件?.md
36 Linux文件系统(二):Linux如何存放文件?.md
37 浏览器原理(一):浏览器为什么要用多进程模型?.md
38 浏览器原理(二):浏览器进程通信与网络渲染详解.md
39 源码解读:V8 执行 JS 代码的全过程.md
40 内功心法(一):内核和后端通用的设计思想有哪些?.md
41 内功心法(二):内核和后端通用的设计思想有哪些?.md
42 性能调优:性能调优工具eBPF和调优方法.md
先睹为快:迷你CPU项目效果演示.md
加餐01 云计算基础:自己动手搭建一款IAAS虚拟化平台.md
加餐02 学习攻略(一):大数据&云计算,究竟怎么学?.md
加餐03 学习攻略(二):大数据&云计算,究竟怎么学?.md
加餐04 谈谈容器云与和CaaS平台.md
加餐05 分布式微服务与智能SaaS.md
国庆策划01 知识挑战赛:检验一下学习成果吧!.md
国庆策划02 来自课代表的学习锦囊.md
国庆策划03 揭秘代码优化操作和栈保护机制.md
温故知新 思考题参考答案(一).md
用户故事 我是怎样学习Verilog的?.md
结束语 心若有所向往,何惧道阻且长.md
说透低代码
00 开篇词|抛开争论,先来看看真正的低代码.md
01|低代码平台到底是什么样的?.md
02|低代码到底是银弹,还是行业毒瘤?.md
03|低代码的天花板:一个完备的低代码平台应该具备哪些条件?.md
04|演进策略:先发展通用能力还是先满足业务需求?.md
05|基础设施 :启动低代码平台研发之前,你需要有什么家底?.md
06|踏出新手村便遭遇大Boss:如何架构低代码的引擎?.md
07|结构化代码生成法:代码如何生成代码?.md
08|布局编辑器:如何做到鱼和熊掌兼得?.md
09|属性编辑器:如何解除Web组件属性与编辑器的耦合?.md
10 可视化编程:如何有效降低App前后端逻辑开发的技能门槛?.md
11|亦敌亦友:Low Code与Pro Code混合使用怎样实现?.md
12 业务数据:再好的App,没有数据也是白搭.md
13|多人协同编辑:野百合的春天为啥来得这么晚?.md
14|编辑历史:是对Git做改造,还是另辟蹊径?.md
15|低代码平台应该优先覆盖应用研发生命周期中的哪些功能?.md
16|扩展与定制:如何实现插件系统并形成生态圈?.md
17|兼容性问题:如何有效发现兼容性问题?.md
18|兼容性问题:如何有效解决兼容性问题?.md
总结与展望|低代码之路,我们才刚刚开始.md
说透性能测试
00 开篇词 为什么每个测试人都要学好性能测试?.md
01 JMeter 的核心概念.md
02 JMeter 参数化策略.md
03 构建并执行 JMeter 脚本的正确姿势.md
04 JMeter 二次开发其实并不难.md
05 如何基于 JMeter API 开发性能测试平台?.md
06 Nginx 在系统架构中的作用.md
07 你真的知道如何制定性能测试的目标吗?.md
08 性能测试场景的分类和意义.md
09 如何制定一份有效的性能测试方案?.md
10 命令行监控 Linux 服务器的要点.md
11 分布式服务链路监控以及报警方案.md
12 如何把可视化监控也做得酷炫?.md
13 Docker 的制作、运行以及监控.md
14 如何从 CPU 飙升定位到热点方法?.md
15 如何基于 JVM 分析内存使用对象?.md
16 如何通过 Arthas 定位代码链路问题?.md
17 如何应对 Redis 缓存穿透、击穿和雪崩?.md
18 如何才能优化 MySQL 性能?.md
19 如何根治慢 SQL?.md
20 结束语 线上全链路性能测试实践总结.md
赵成的运维体系管理课
00 开篇词 带给你不一样的运维思考.md
01 为什么Netflix没有运维岗位?.md
02 微服务架构时代,运维体系建设为什么要以应用为核心?.md
03 标准化体系建设(上):如何建立应用标准化体系和模型?.md
04 标准化体系建设(下):如何建立基础架构标准化及服务化体系?.md
05 如何从生命周期的视角看待应用运维体系建设?.md
06 聊聊CMDB的前世今生.md
07 有了CMDB,为什么还需要应用配置管理?.md
08 如何在CMDB中落地应用的概念?.md
09 如何打造运维组织架构?.md
10 谷歌SRE运维模式解读.md
11 从谷歌CRE谈起,运维如何培养服务意识?.md
12 持续交付知易行难,想做成这事你要理解这几个关键点.md
13 持续交付的第一关键点:配置管理.md
14 如何做好持续交付中的多环境配置管理?.md
15 开发和测试争抢环境?是时候进行多环境建设了.md
16 线上环境建设,要扛得住真刀真枪的考验.md
17 人多力量大vs.两个披萨原则,聊聊持续交付中的流水线模式.md
18 持续交付流水线软件构建难吗?有哪些关键问题?.md
19 持续交付中流水线构建完成后就大功告成了吗?别忘了质量保障.md
20 做持续交付概念重要还是场景重要?看笨办法如何找到最佳方案.md
21 极端业务场景下,我们应该如何做好稳定性保障?.md
22 稳定性实践:容量规划之业务场景分析.md
23 稳定性实践:容量规划之压测系统建设.md
24 稳定性实践:限流降级.md
25 稳定性实践:开关和预案.md
26 稳定性实践:全链路跟踪系统,技术运营能力的体现.md
27 故障管理:谈谈我对故障的理解.md
28 故障管理:故障定级和定责.md
29 故障管理:鼓励做事,而不是处罚错误.md
30 故障管理:故障应急和故障复盘.md
31 唇亡齿寒,运维与安全.md
32 为什么蘑菇街会选择上云?是被动选择还是主动出击?.md
33 为什么混合云是未来云计算的主流形态?.md
35 以绝对优势立足:从CDN和云存储来聊聊云生态的崛起.md
36 量体裁衣方得最优解:聊聊页面静态化架构和二级CDN建设.md
37 云计算时代,我们所说的弹性伸缩,弹的到底是什么?.md
38 我是如何走上运维岗位的?.md
39 云计算和AI时代,运维应该如何做好转型?.md
40 运维需要懂产品和运营吗?.md
41 冷静下来想想,员工离职这事真能防得住吗?.md
42 树立个人品牌意识:从背景调查谈谈职业口碑的重要性.md
划重点:赵成的运维体系管理课精华(一).md
划重点:赵成的运维体系管理课精华(三).md
划重点:赵成的运维体系管理课精华(二).md
新书 《进化:运维技术变革与实践探索》.md
特别放送 我的2019:收获,静静等待.md
结束语 学习的过程,多些耐心和脚踏实地.md
趣谈网络协议
00 开篇词 想成为技术牛人?先搞定网络协议!.md
01 为什么要学习网络协议?.md
02 网络分层的真实含义是什么?.md
03 ifconfig:最熟悉又陌生的命令行.md
04 DHCP与PXE:IP是怎么来的,又是怎么没的?.md
05 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?.md
06 交换机与VLAN:办公室太复杂,我要回学校.md
07 ICMP与ping:投石问路的侦察兵.md
08 世界这么大,我想出网关:欧洲十国游与玄奘西行.md
09 路由协议:西出网关无故人,敢问路在何方.md
10 UDP协议:因性善而简单,难免碰到“城会玩”.md
11 TCP协议(上):因性恶而复杂,先恶后善反轻松.md
12 TCP协议(下):西行必定多妖孽,恒心智慧消磨难.md
13 套接字Socket:Talk is cheap, show me the code.md
14 HTTP协议:看个新闻原来这么麻烦.md
15 HTTPS协议:点外卖的过程原来这么复杂.md
16 流媒体协议:如何在直播里看到美女帅哥?.md
17 P2P协议:我下小电影,99%急死你.md
18 DNS协议:网络世界的地址簿.md
19 HttpDNS:网络世界的地址簿也会指错路.md
20 CDN:你去小卖部取过快递么?.md
21 数据中心:我是开发商,自己拿地盖别墅.md
22 VPN:朝中有人好做官.md
23 移动网络:去巴塞罗那,手机也上不了脸书.md
24 云中网络:自己拿地成本高,购买公寓更灵活.md
25 软件定义网络:共享基础设施的小区物业管理办法.md
26 云中的网络安全:虽然不是土豪,也需要基本安全和保障.md
27 云中的网络QoS:邻居疯狂下电影,我该怎么办?.md
28 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私.md
29 容器网络:来去自由的日子,不买公寓去合租.md
30 容器网络之Flannel:每人一亩三分地.md
31 容器网络之Calico:为高效说出善意的谎言.md
32 RPC协议综述:远在天边,近在眼前.md
33 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛.md
34 基于JSON的RESTful接口协议:我不关心过程,请给我结果.md
35 二进制类RPC协议:还是叫NBA吧,总说全称多费劲.md
36 跨语言类RPC协议:交流之前,双方先来个专业术语表.md
37 知识串:用双十一的故事串起碎片的网络协议(上).md
38 知识串:用双十一的故事串起碎片的网络协议(中).md
39 知识串:用双十一的故事串起碎片的网络协议(下).md
40 搭建一个网络实验环境:授人以鱼不如授人以渔.md
加餐1 创作故事:我是如何创作“趣谈网络协议”专栏的?.md
协议专栏特别福利 答疑解惑1期.md
协议专栏特别福利 答疑解惑2期.md
协议专栏特别福利 答疑解惑3期.md
协议专栏特别福利 答疑解惑4期.md
协议专栏特别福利 答疑解惑5期.md
结束语 放弃完美主义,执行力就是限时限量认真完成.md
软件工程之美
00 开篇词 你为什么应该学好软件工程?.md
01 到底应该怎样理解软件工程?.md
02 工程思维:把每件事都当作一个项目来推进.md
03 瀑布模型:像工厂流水线一样把软件开发分层化.md
04 瀑布模型之外,还有哪些开发模型?.md
05 敏捷开发到底是想解决什么问题?.md
06 大厂都在用哪些敏捷方法?(上).md
07 大厂都在用哪些敏捷方法?(下).md
08 怎样平衡软件质量与时间成本范围的关系?.md
09 为什么软件工程项目普遍不重视可行性分析?.md
10 如果你想技术转管理,先来试试管好一个项目.md
11 项目计划:代码未动,计划先行.md
12 流程和规范:红绿灯不是约束,而是用来提高效率.md
13 白天开会,加班写代码的节奏怎么破?.md
14 项目管理工具:一切管理问题,都应思考能否通过工具解决.md
15 风险管理:不能盲目乐观,凡事都应该有B计划.md
16 怎样才能写好项目文档?.md
17 需求分析到底要分析什么?怎么分析?.md
18 原型设计:如何用最小的代价完成产品特性?.md
19 作为程序员,你应该有产品意识.md
20 如何应对让人头疼的需求变更问题?.md
21 架构设计:普通程序员也能实现复杂系统?.md
22 如何为项目做好技术选型?.md
23 架构师:不想当架构师的程序员不是好程序员.md
24 技术债务:是继续修修补补凑合着用,还是推翻重来?.md
25 有哪些方法可以提高开发效率?.md
26 持续交付:如何做到随时发布新版本到生产环境?.md
27 软件工程师的核心竞争力是什么?(上).md
28 软件工程师的核心竞争力是什么?(下).md
29 自动化测试:如何把Bug杀死在摇篮里?.md
30 用好源代码管理工具,让你的协作更高效.md
31 软件测试要为产品质量负责吗?.md
32 软件测试:什么样的公司需要专职测试?.md
33 测试工具:为什么不应该通过QQ微信邮件报Bug?.md
34 账号密码泄露成灾,应该怎样预防?.md
35 版本发布:软件上线只是新的开始.md
36 DevOps工程师到底要做什么事情?.md
37 遇到线上故障,你和高手的差距在哪里?.md
38 日志管理:如何借助工具快速发现和定位产品问题 ?.md
39 项目总结:做好项目复盘,把经验变成能力.md
40 最佳实践:小团队如何应用软件工程?.md
41 为什么程序员的业余项目大多都死了?.md
42 反面案例:盘点那些失败的软件项目.md
43 以VS Code为例,看大型开源项目是如何应用软件工程的?.md
44 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?.md
45 从软件工程的角度看微服务、云计算、人工智能这些新技术.md
一问一答第1期 30个软件开发常见问题解决策略.md
一问一答第2期 30个软件开发常见问题解决策略.md
一问一答第3期 18个软件开发常见问题解决策略.md
一问一答第4期 14个软件开发常见问题解决策略.md
一问一答第5期 22个软件开发常见问题解决策略.md
学习攻略 怎样学好软件工程?.md
特别放送 从软件工程的角度解读任正非的新年公开信.md
结束语 万事皆项目,软件工程无处不在.md
透视HTTP协议
00 开篇词|To Be a HTTP Hero.md
01 时势与英雄:HTTP的前世今生.md
02 HTTP是什么?HTTP又不是什么?.md
03 HTTP世界全览(上):与HTTP相关的各种概念.md
04 HTTP世界全览(下):与HTTP相关的各种协议.md
05 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?.md
06 域名里有哪些门道?.md
07 自己动手,搭建HTTP实验环境.md
08 键入网址再按下回车,后面究竟发生了什么?.md
09 HTTP报文是什么样子的?.md
10 应该如何理解请求方法?.md
11 你能写出正确的网址吗?.md
12 响应状态码该怎么用?.md
13 HTTP有哪些特点?.md
14 HTTP有哪些优点?又有哪些缺点?.md
15 海纳百川:HTTP的实体数据.md
16 把大象装进冰箱:HTTP传输大文件的方法.md
17 排队也要讲效率:HTTP的连接管理.md
18 四通八达:HTTP的重定向和跳转.md
19 让我知道你是谁:HTTP的Cookie机制.md
20 生鲜速递:HTTP的缓存控制.md
21 良心中间商:HTTP的代理服务.md
22 冷链周转:HTTP的缓存代理.md
23 HTTPS是什么?SSLTLS又是什么?.md
24 固若金汤的根本(上):对称加密与非对称加密.md
25 固若金汤的根本(下):数字签名与证书.md
26 信任始于握手:TLS1.2连接过程解析.md
27 更好更快的握手:TLS1.3特性解析.md
28 连接太慢该怎么办:HTTPS的优化.md
29 我应该迁移到HTTPS吗?.md
30 时代之风(上):HTTP2特性概览.md
31 时代之风(下):HTTP2内核剖析.md
32 未来之路:HTTP3展望.md
33 我应该迁移到HTTP2吗?.md
34 Nginx:高性能的Web服务器.md
35 OpenResty:更灵活的Web服务器.md
36 WAF:保护我们的网络服务.md
37 CDN:加速我们的网络服务.md
38 WebSocket:沙盒里的TCP.md
39 HTTP性能优化面面观(上).md
40 HTTP性能优化面面观(下).md
结束语 做兴趣使然的Hero.md
重学操作系统-完
00 开篇词 为什么大厂面试必考操作系统?.md
00 课前必读 构建知识体系,可以这样做!.md
01 计算机是什么:“如何把程序写好”这个问题是可计算的吗?.md
02 程序的执行:相比 32 位,64 位的优势是什么?(上).md
03 程序的执行:相比 32 位,64 位的优势是什么?(下).md
04 构造复杂的程序:将一个递归函数转成非递归函数的通用方法.md
05 存储器分级:L1 Cache 比内存和 SSD 快多少倍?.md
05 (1) 加餐 练习题详解(一).md
06 目录结构和文件管理指令:rm -rf 指令的作用是?.md
07 进程、重定向和管道指令:xargs 指令的作用是?.md
08 用户和权限管理指令: 请简述 Linux 权限划分的原则?.md
09 Linux 中的网络指令:如何查看一个域名有哪些 NS 记录?.md
10 软件的安装: 编译安装和包管理器安装有什么优势和劣势?.md
11 高级技巧之日志分析:利用 Linux 指令分析 Web 日志.md
12 高级技巧之集群部署:利用 Linux 指令同时在多台机器部署程序.md
12 (1)加餐 练习题详解(二).md
13 操作系统内核:Linux 内核和 Windows 内核有什么区别?.md
14 用户态和内核态:用户态线程和内核态线程有什么区别?.md
15 中断和中断向量:Javajs 等语言为什么可以捕获到键盘输入?.md
16 WinMacUnixLinux 的区别和联系:为什么 Debian 漏洞排名第一还这么多人用?.md
16 (1)加餐 练习题详解(三).md
17 进程和线程:进程的开销比线程大在了哪里?.md
18 锁、信号量和分布式锁:如何控制同一时间只有 2 个线程运行?.md
19 乐观锁、区块链:除了上锁还有哪些并发控制方法?.md
20 线程的调度:线程调度都有哪些方法?.md
21 哲学家就餐问题:什么情况下会触发饥饿和死锁?.md
22 进程间通信: 进程间通信都有哪些方法?.md
23 分析服务的特性:我的服务应该开多少个进程、多少个线程?.md
23 (1)加餐 练习题详解(四).md
24 虚拟内存 :一个程序最多能使用多少内存?.md
25 内存管理单元: 什么情况下使用大内存分页?.md
26 缓存置换算法: LRU 用什么数据结构实现更合理?.md
27 内存回收上篇:如何解决内存的循环引用问题?.md
28 内存回收下篇:三色标记-清除算法是怎么回事?.md
28 (1)加餐 练习题详解(五).md
29 Linux 下的各个目录有什么作用?.md
30 文件系统的底层实现:FAT、NTFS 和 Ext3 有什么区别?.md
31 数据库文件系统实例:MySQL 中 B 树和 B+ 树有什么区别?.md
32 HDFS 介绍:分布式文件系统是怎么回事?.md
32 (1)加餐 练习题详解(六).md
33 互联网协议群(TCPIP):多路复用是怎么回事?.md
34 UDP 协议:UDP 和 TCP 相比快在哪里?.md
35 Linux 的 IO 模式:selectpollepoll 有什么区别?.md
36 公私钥体系和网络安全:什么是中间人攻击?.md
36 (1)加餐 练习题详解(七).md
37 虚拟化技术介绍:VMware 和 Docker 的区别?.md
38 容器编排技术:如何利用 K8s 和 Docker Swarm 管理微服务?.md
39 Linux 架构优秀在哪里.md
40 商业操作系统:电商操作系统是不是一个噱头?.md
40 (1)加餐 练习题详解(八).md
41 结束语 论程序员的发展——信仰、选择和博弈.md
重学数据结构与算法-完
00 数据结构与算法,应该这样学!.md
01 复杂度:如何衡量程序运行的效率?.md
02 数据结构:将“昂贵”的时间复杂度转换成“廉价”的空间复杂度.md
03 增删查:掌握数据处理的基本操作,以不变应万变.md
04 如何完成线性表结构下的增删查?.md
05 栈:后进先出的线性表,如何实现增删查?.md
06 队列:先进先出的线性表,如何实现增删查?.md
07 数组:如何实现基于索引的查找?.md
08 字符串:如何正确回答面试中高频考察的字符串匹配算法?.md
09 树和二叉树:分支关系与层次结构下,如何有效实现增删查?.md
10 哈希表:如何利用好高效率查找的“利器”?.md
11 递归:如何利用递归求解汉诺塔问题?.md
12 分治:如何利用分治法完成数据查找?.md
13 排序:经典排序算法原理解析与优劣对比.md
14 动态规划:如何通过最优子结构,完成复杂问题求解?.md
15 定位问题才能更好地解决问题:开发前的复杂度分析与技术选型.md
16 真题案例(一):算法思维训练.md
17 真题案例(二):数据结构训练.md
18 真题案例(三):力扣真题训练.md
19 真题案例(四):大厂真题实战演练.md
20 代码之外,技术面试中你应该具备哪些软素质?.md
21 面试中如何建立全局观,快速完成优质的手写代码?.md
加餐 课后练习题详解.md
陈天 · Rust 编程第一课
00 开篇词 让Rust成为你的下一门主力语言.md
01 内存:值放堆上还是放栈上,这是一个问题.md
02 串讲:编程开发中,那些你需要掌握的基本概念.md
03 初窥门径:从你的第一个Rust程序开始!.md
04 get hands dirty:来写个实用的CLI小工具.md
05 get hands dirty:做一个图片服务器有多难?.md
06 get hands dirty:SQL查询工具怎么一鱼多吃?.md
07 所有权:值的生杀大权到底在谁手上?.md
08 所有权:值的借用是如何工作的?.md
09 所有权:一个值可以有多个所有者么?.md
10 生命周期:你创建的值究竟能活多久?.md
11 内存管理:从创建到消亡,值都经历了什么?.md
12 类型系统:Rust的类型系统有什么特点?.md
13 类型系统:如何使用trait来定义接口?.md
14 类型系统:有哪些必须掌握的trait?.md
15 数据结构:这些浓眉大眼的结构竟然都是智能指针?.md
16 数据结构:Vec_T_、&[T]、Box_[T]_ ,你真的了解集合容器么?.md
17 数据结构:软件系统核心部件哈希表,内存如何布局?.md
18 错误处理:为什么Rust的错误处理与众不同?.md
19 闭包:FnOnce、FnMut和Fn,为什么有这么多类型?.md
20 4 Steps :如何更好地阅读Rust源码?.md
21 阶段实操(1):构建一个简单的KV server-基本流程.md
22 阶段实操(2):构建一个简单的KV server-基本流程.md
23 类型系统:如何在实战中使用泛型编程?.md
24 类型系统:如何在实战中使用trait object?.md
25 类型系统:如何围绕trait来设计和架构系统?.md
26 阶段实操(3):构建一个简单的KV server-高级trait技巧.md
27 生态系统:有哪些常有的Rust库可以为我所用?.md
28 网络开发(上):如何使用Rust处理网络请求?.md
29 网络开发(下):如何使用Rust处理网络请求?.md
30 Unsafe Rust:如何用C++的方式打开Rust?.md
31 FFI:Rust如何和你的语言架起沟通桥梁?.md
32 实操项目:使用PyO3开发Python3模块.md
33 并发处理(上):从atomics到Channel,Rust都提供了什么工具?.md
34 并发处理(下):从atomics到Channel,Rust都提供了什么工具?.md
35 实操项目:如何实现一个基本的MPSC channel?.md
36 阶段实操(4):构建一个简单的KV server-网络处理.md
37 阶段实操(5):构建一个简单的KV server-网络安全.md
38 异步处理:Future是什么?它和async_await是什么关系?.md
39 异步处理:async_await内部是怎么实现的?.md
40 异步处理:如何处理异步IO?.md
41 阶段实操(6):构建一个简单的KV server-异步处理.md
42 阶段实操(7):构建一个简单的KV server-如何做大的重构?.md
43 生产环境:真实世界下的一个Rust项目包含哪些要素?.md
44 数据处理:应用程序和数据如何打交道?.md
45 阶段实操(8):构建一个简单的KV server-配置_测试_监控_CI_CD.md
46 软件架构:如何用Rust架构复杂系统?.md
加餐 Rust2021版次问世了!.md
加餐 代码即数据:为什么我们需要宏编程能力?.md
加餐 宏编程(上):用最“笨”的方式撰写宏.md
加餐 宏编程(下):用 syn_quote 优雅地构建宏.md
加餐 愚昧之巅:你的Rust学习常见问题汇总.md
加餐 期中测试:参考实现讲解.md
加餐 期中测试:来写一个简单的grep命令行.md
加餐 这个专栏你可以怎么学,以及Rust是否值得学?.md
大咖助场 开悟之坡(上):Rust的现状、机遇与挑战.md
大咖助场 开悟之坡(下):Rust的现状、机遇与挑战.md
特别策划 学习锦囊(一):听听课代表们怎么说.md
特别策划 学习锦囊(三):听听课代表们怎么说.md
特别策划 学习锦囊(二):听听课代表们怎么说.md
用户故事 绝望之谷:改变从学习开始.md
用户故事 语言不仅是工具,还是思维方式.md
结束语 永续之原:Rust学习,如何持续精进?.md
零基础入门Spark
00 开篇词 入门Spark,你需要学会“三步走”.md
01 Spark:从“大数据的Hello World”开始.md
02 RDD与编程模型:延迟计算是怎么回事?.md
03 RDD常用算子(一):RDD内部的数据转换.md
04 进程模型与分布式部署:分布式计算是怎么回事?.md
05 调度系统:如何把握分布式计算的精髓?.md
06 Shuffle管理:为什么Shuffle是性能瓶颈?.md
07 RDD常用算子(二):Spark如何实现数据聚合?.md
08 内存管理:Spark如何使用内存?.md
09 RDD常用算子(三):数据的准备、重分布与持久化.md
10 广播变量 & 累加器:共享变量是用来做什么的?.md
11 存储系统:数据到底都存哪儿了?.md
12 基础配置详解:哪些参数会影响应用程序稳定性?.md
13 Spark SQL:让我们从“小汽车摇号分析”开始.md
14 台前幕后:DataFrame与Spark SQL的由来.md
15 数据源与数据格式:DataFrame从何而来?.md
16 数据转换:如何在DataFrame之上做数据处理?.md
17 数据关联:不同的关联形式与实现机制该怎么选?.md
18 数据关联优化:都有哪些Join策略,开发者该如何取舍?.md
19 配置项详解:哪些参数会影响应用程序执行性能?.md
20 Hive + Spark强强联合:分布式数仓的不二之选.md
21 Spark UI(上):如何高效地定位性能问题?.md
22 Spark UI(下):如何高效地定位性能问题?.md
23 Spark MLlib:从“房价预测”开始.md
24 特征工程(上):有哪些常用的特征处理函数?.md
25 特征工程(下):有哪些常用的特征处理函数?.md
26 模型训练(上):决策树系列算法详解.md
27 模型训练(中):回归、分类和聚类算法详解.md
28 模型训练(下):协同过滤与频繁项集算法详解.md
29 Spark MLlib Pipeline:高效开发机器学习应用.md
30 Structured Streaming:从“流动的Word Count”开始.md
31 新一代流处理框架:Batch mode和Continuous mode哪家强?.md
32 Window操作&Watermark:流处理引擎提供了哪些优秀机制?.md
33 流计算中的数据关联:流与流、流与批.md
34 Spark + Kafka:流计算中的“万金油”.md
用户故事 小王:保持空杯心态,不做井底之蛙.md
结束语 进入时间裂缝,持续学习.md
领域驱动设计实践(完)
001 「战略篇」访谈 DDD 和微服务是什么关系?.md
002 「战略篇」开篇词:领域驱动设计,重焕青春的设计经典.md
003 领域驱动设计概览.md
004 深入分析软件的复杂度.md
005 控制软件复杂度的原则.md
006 领域驱动设计对软件复杂度的应对(上).md
007 领域驱动设计对软件复杂度的应对(下).md
008 软件开发团队的沟通与协作.md
009 运用领域场景分析提炼领域知识(上).md
010 运用领域场景分析提炼领域知识(下).md
011 建立统一语言.md
012 理解限界上下文.md
013 限界上下文的控制力(上).md
014 限界上下文的控制力(下).md
015 识别限界上下文(上).md
016 识别限界上下文(下).md
017 理解上下文映射.md
018 上下文映射的团队协作模式.md
019 上下文映射的通信集成模式.md
020 辨别限界上下文的协作关系(上).md
021 辨别限界上下文的协作关系(下).md
022 认识分层架构.md
023 分层架构的演化.md
024 领域驱动架构的演进.md
025 案例 层次的职责与协作关系(图文篇).md
026 限界上下文与架构.md
027 限界上下文对架构的影响.md
028 领域驱动设计的代码模型.md
029 代码模型的架构决策.md
030 实践 先启阶段的需求分析.md
031 实践 先启阶段的领域场景分析(上).md
032 实践 先启阶段的领域场景分析(下).md
033 实践 识别限界上下文.md
034 实践 确定限界上下文的协作关系.md
035 实践 EAS 的整体架构.md
036 「战术篇」访谈:DDD 能帮开发团队提高设计水平吗?.md
037 「战术篇」开篇词:领域驱动设计的不确定性.md
038 什么是模型.md
039 数据分析模型.md
040 数据设计模型.md
041 数据模型与对象模型.md
042 数据实现模型.md
043 案例 培训管理系统.md
044 服务资源模型.md
045 服务行为模型.md
046 服务设计模型.md
047 领域模型驱动设计.md
048 领域实现模型.md
049 理解领域模型.md
050 领域模型与结构范式.md
051 领域模型与对象范式(上).md
052 领域模型与对象范式(中).md
053 领域模型与对象范式(下).md
054 领域模型与函数范式.md
055 领域驱动分层架构与对象模型.md
056 统一语言与领域分析模型.md
057 精炼领域分析模型.md
058 彩色 UML 与彩色建模.md
059 四色建模法.md
060 案例 订单核心流程的四色建模.md
061 事件风暴与业务全景探索.md
062 事件风暴与领域分析建模.md
063 案例 订单核心流程的事件风暴.md
064 表达领域设计模型.md
065 实体.md
066 值对象.md
067 对象图与聚合.md
068 聚合设计原则.md
069 聚合之间的关系.md
070 聚合的设计过程.md
071 案例 培训领域模型的聚合设计.md
072 领域模型对象的生命周期-工厂.md
073 领域模型对象的生命周期-资源库.md
074 领域服务.md
075 案例 领域设计模型的价值.md
076 应用服务.md
077 场景的设计驱动力.md
078 案例 薪资管理系统的场景驱动设计.md
079 场景驱动设计与 DCI 模式.md
080 领域事件.md
081 发布者—订阅者模式.md
082 事件溯源模式.md
083 测试优先的领域实现建模.md
084 深入理解简单设计.md
085 案例 薪资管理系统的测试驱动开发(上).md
086 案例 薪资管理系统的测试驱动开发(下).md
087 对象关系映射(上).md
088 对象关系映射(下).md
089 领域模型与数据模型.md
090 领域驱动设计对持久化的影响.md
091 领域驱动设计体系.md
092 子领域与限界上下文.md
093 限界上下文的边界与协作.md
094 限界上下文之间的分布式通信.md
095 命令查询职责分离.md
096 分布式柔性事务.md
097 设计概念的统一语言.md
098 模型对象.md
099 领域驱动设计参考过程模型.md
100 领域驱动设计的精髓.md
101 实践 员工上下文的领域建模.md
102 实践 考勤上下文的领域建模.md
103 实践 项目上下文的领域建模.md
104 实践 培训上下文的业务需求.md
105 实践 培训上下文的领域分析建模.md
106 实践 培训上下文的领域设计建模.md
107 实践 培训上下文的领域实现建模.md
108 实践 EAS 系统的代码模型.md
109 后记:如何学习领域驱动设计.md
高并发系统设计40问
00 开篇词 为什么你要学习高并发系统设计?.md
01 高并发系统:它的通用设计方法是什么?.md
02 架构分层:我们为什么一定要这么做?.md
03 系统设计目标(一):如何提升系统性能?.md
04 系统设计目标(二):系统怎样做到高可用?.md
05 系统设计目标(三):如何让系统易于扩展?.md
06 面试现场第一期:当问到组件实现原理时,面试官是在刁难你吗?.md
07 池化技术:如何减少频繁创建数据库连接的性能损耗?.md
08 数据库优化方案(一):查询请求增加时,如何做主从分离?.md
09 数据库优化方案(二):写入数据量增加时,如何实现分库分表?.md
10 发号器:如何保证分库分表后ID的全局唯一性?.md
11 NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?.md
12 缓存:数据库成为瓶颈后,动态数据的查询要如何加速?.md
13 缓存的使用姿势(一):如何选择缓存的读写策略?.md
14 缓存的使用姿势(二):缓存如何做到高可用?.md
15 缓存的使用姿势(三):缓存穿透了怎么办?.md
16 CDN:静态资源如何加速?.md
17 消息队列:秒杀时如何处理每秒上万次的下单请求?.md
18 消息投递:如何保证消息仅仅被消费一次?.md
19 消息队列:如何降低消息队列系统中消息的延迟?.md
20 面试现场第二期:当问到项目经历时,面试官究竟想要了解什么?.md
21 系统架构:每秒1万次请求的系统要做服务化拆分吗?.md
22 微服务架构:微服务化后,系统架构要如何改造?.md
23 RPC框架:10万QPS下如何实现毫秒级的服务调用?.md
24 注册中心:分布式系统如何寻址?.md
25 分布式Trace:横跨几十个分布式组件的慢请求要如何排查?.md
26 负载均衡:怎样提升系统的横向扩展能力?.md
27 API网关:系统的门面要如何做呢?.md
28 多机房部署:跨地域的分布式系统如何做?.md
29 Service Mesh:如何屏蔽服务化系统的服务治理细节?.md
30 给系统加上眼睛:服务端监控要怎么做?.md
31 应用性能管理:用户的使用体验应该如何监控?.md
32 压力测试:怎样设计全链路压力测试平台?.md
33 配置管理:成千上万的配置项要如何管理?.md
34 降级熔断:如何屏蔽非核心系统故障的影响?.md
35 流量控制:高并发系统中我们如何操纵流量?.md
36 面试现场第三期:你要如何准备一场技术面试呢?.md
37 计数系统设计(一):面对海量数据的计数器要如何做?.md
38 计数系统设计(二):50万QPS下如何设计未读数系统?.md
39 信息流设计(一):通用信息流系统的推模式要如何做?.md
40 信息流设计(二):通用信息流系统的拉模式要如何做?.md
加餐 数据的迁移应该如何做?.md
期中测试 10道高并发系统设计题目自测.md
用户故事 从“心”出发,我还有无数个可能.md
结束语 学不可以已.md
© 2019 - 2023
Liangliang Lee
. Powered by
Vert.x
and
hexo-theme-book
.