1668640697 1630400887 9a66a112cf77027

课程介绍(A001078):

极课时间专栏全部课程!!!为你打造随身图书馆,音视频齐全!!!,各类大厂技术大神(阿里P10、腾讯专家),CEO讲解成长路程!!!强烈推荐程序员学习的充电站,站在巨人的肩膀,早日成功!!

2022年12月已 更新!!

2022年九月已 更新!!

2022年八月已 更新!!

2022年七月已 更新!!

2022年六月已 更新!!

2022年五月已 更新!!

2022年四月已 更新!!

2022年三月已 更新!!

2022年1月已 更新!!

(专栏+视频课262门课)

打包现有262个课程 + 后续新出课程

1672365249 mxcp 1672336439028 1670846758 38fd8cdcd521066
极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新 3

文件目录:

极客时间-专栏+视频svip会员持续更新重磅首发2022年12月已更新
│   ├─1、专栏
│   │   ├─001-技术与商业案例解读
│   │   │   ├─001-技术与商业案例解读
│   │   │   ├─001-西雅图IT公司之RealNetworks:一个帝国的兴衰(上)
│   │   │   ├─002-西雅图IT公司之RealNetworks:一个帝国的兴衰(下)
│   │   │   ├─003-以RealNetworks为例,谈谈初创公司如何应对巨头碾压
│   │   │   ├─004-可视化分析鼻祖Tableau
│   │   │   ├─005-从Tableau上市,看学术界和工业界人士创业
│   │   │   ├─006-在线旅游帝国Expedia崛起的背后
│   │   │   ├─007-房产经纪的颠覆者Redfin:在“传统”与“现代”间徘徊
│   │   │   ├─008-房产经纪的“协作者”Zillow:一个地产数据平台
│   │   │   ├─008-房产经纪的“协作者”Zillow:一个地产数据平台
│   │   │   ├─009-颠覆还是协作,房地产市场上Redfin和Zillow的抉择
│   │   │   ├─010-应用交付网络大厂F5:“一招鲜”之殇
│   │   │   ├─011-在线差旅报销鼻祖Concur:在转型中获得发展
│   │   │   ├─012-漫谈企业转型:在市场变迁中寻找生机
│   │   │   ├─013-克雷公司沉浮录:行走在超级计算机市场
│   │   │   ├─013-克雷公司沉浮录:行走在超级计算机市场
│   │   │   ├─014-“单一化”的隐忧:从克雷公司看“一条腿走路”
│   │   │   ├─015-Halo的开发者Bungie:与微软的聚散
│   │   │   ├─016-“卖身”须谨慎:创业公司面临的抉择
│   │   │   ├─017-亚马逊领导力准则之要有硬骨头
│   │   │   ├─018-亚马逊领导力准则之决策正确
│   │   │   ├─019-亚马逊领导力准则之客户至尚
│   │   │   ├─020-亚马逊领导力准则之勤俭节约
│   │   │   ├─021-亚马逊领导力准则之主人翁精神
│   │   │   ├─022-亚马逊领导力准则之选贤育能
│   │   │   ├─023-亚马逊领导力准则之最高标准
│   │   │   ├─024-亚马逊领导力准则之创新简化
│   │   │   ├─025-亚马逊领导力准则之崇尚行动
│   │   │   ├─026-亚马逊领导力准则之远见卓识
│   │   │   ├─027-亚马逊领导力准则之好奇求知与赢得信任
│   │   │   ├─028-亚马逊领导力准则之刨根问底与达成业绩
│   │   │   ├─029-智能音箱的战斗:亚马逊的硬件路
│   │   │   ├─030-智能音箱的战斗:Echo攻城略地
│   │   │   ├─031-智能音箱的战斗:语音助手Alexa
│   │   │   ├─032-智能音箱的战斗:谷歌的杀入
│   │   │   ├─033-智能音箱的战斗:亚马逊的战略布局
│   │   │   ├─034-智能音箱的战斗:巨头纷纷入场
│   │   │   ├─035-智能音箱的战斗:白马非马
│   │   │   ├─036-如何透过一个领域去联合分析多家企业?
│   │   │   ├─037-管中窥豹之从面试看企业文化:微软
│   │   │   ├─038-管中窥豹之从面试看企业文化:亚马逊
│   │   │   ├─039-管中窥豹之从面试看企业文化:谷歌
│   │   │   ├─040-管中窥豹之从面试看企业文化:甲骨文
│   │   │   ├─041-管中窥豹之从面试看企业文化:Facebook
│   │   │   ├─041-管中窥豹之从面试看企业文化:Facebook
│   │   │   ├─042-透过企业用人之道看企业发展
│   │   │   ├─043-办公软件的战斗:开篇
│   │   │   ├─044-VisiCalc:第一个电子表格软件的诞生
│   │   │   ├─045-WordStar:第一个字处理软件的故事
│   │   │   ├─046-微软:办公软件战场的螳螂
│   │   │   ├─047-WordPerfect:字处理软件的新秀
│   │   │   ├─048-Lotus1-2-3:莲花公司的电子表格帝国
│   │   │   ├─049-红狮会战:微软的反击
│   │   │   ├─050-大杀器LotusNotes和被收购的莲花公司
│   │   │   ├─051-无敌寂寞的微软之为创新而创新
│   │   │   ├─052-办公软件的新时代:微软和谷歌的战斗
│   │   │   ├─053-异军突起的Slack
│   │   │   ├─054-办公软件战斗的启示:内忧总是强于外患
│   │   │   ├─055-办公软件战斗的启示:敌人的出现常常出其不意
│   │   │   ├─056-半条命的Dota帝国Valve:半条命
│   │   │   ├─057-半条命的Dota帝国Valve:Steam平台
│   │   │   ├─058-半条命的Dota帝国Valve:Dota2
│   │   │   ├─059-半条命的Dota帝国Valve:无领导管理
│   │   │   ├─060-半条命的Dota帝国Valve:虚拟现实
│   │   │   ├─061-GabeNewell:Valve帝国制度的利弊
│   │   │   ├─062-文档数据库的缔造者MongoDB(上)
│   │   │   ├─063-文档数据库的缔造者MongoDB(下)
│   │   │   ├─064-以MongoDB为例,看基础架构类产品创业
│   │   │   ├─065-直面MongoDB,谈微软的NoSQL战略
│   │   │   ├─065-直面MongoDB,谈微软的NoSQL战略
│   │   │   ├─066-Hadoop三国之魏国Cloudera
│   │   │   ├─067-Hadoop三国之吴国MapR
│   │   │   ├─068-Hadoop三国之蜀国Hortonworks
│   │   │   ├─069-Hadoop及其发行商的未来
│   │   │   ├─070-谷歌的大数据路:从“三驾马车”到一无所有
│   │   │   ├─071-谷歌的大数据路:一场影响深远的论战
│   │   │   ├─072-谷歌的大数据路:谷歌的“黑科技”
│   │   │   ├─073-如何读懂类似谷歌“三驾马车”这样的技术论文?
│   │   │   ├─074-雅虎:大数据领域的“活雷锋”
│   │   │   ├─075-IBM的大数据路之起早贪黑赶了晚集
│   │   │   ├─076-社交公司们的大数据贡献
│   │   │   ├─077-微软的大数据发展史:微软硅谷研究院
│   │   │   ├─078-微软的大数据发展史:必应的Cosmos
│   │   │   ├─079-微软的大数据发展史:Azure的大数据发展
│   │   │   ├─080-亚马逊的大数据故事:从先驱者到插管吸血开源
│   │   │   ├─081-亚马逊的大数据故事:创新和拿来并存的云服务
│   │   │   ├─082-阿里巴巴的大数据故事:数据分析平台发展史
│   │   │   ├─083-阿里巴巴的大数据故事:流计算引擎发展史
│   │   │   ├─084-大公司的大数据战略得失:自建轮子成本高
│   │   │   ├─085-大公司的大数据战略得失:抱团取暖难敌插管吸血者
│   │   │   ├─086-Palantir:神秘的大数据独角兽
│   │   │   ├─087-Splunk:机器大数据的分析帝国
│   │   │   ├─088-Confluent:在Kafka上飞驰的数据交换者
│   │   │   ├─089-Powerset:HBase的老东家
│   │   │   ├─090-Cassandra和DataStax的故事
│   │   │   ├─091-Databricks之Spark的数据金砖王国
│   │   │   ├─092-DataArtisans:浴火重生的新一代大数据计算引擎Flink
│   │   │   ├─093-Dremio-在Drill和Arrow上的大数据公司
│   │   │   ├─094-Imply:基于Druid的大数据分析公司
│   │   │   ├─095-Kyligence:阿帕奇麒麟背后的大数据公司
│   │   │   ├─095-Kyligence:阿帕奇麒麟背后的大数据公司
│   │   │   ├─096-Snowflake-云端的弹性数据仓库
│   │   │   ├─097-TiDB:一个国产新数据库的创业故事
│   │   │   ├─098-大数据创业公司的前景:红海创业多艰辛
│   │   │   ├─099-如何通过企业技术积累去分析一家企业?
│   │   │   ├─100-仁科:被迫再创业的DavidDuffield
│   │   │   ├─101-仁科:飞跃发展的企业级软件帝国
│   │   │   ├─102-仁科:收购和被收购
│   │   │   ├─103-仁科的成与败
│   │   │   ├─104-WorkDay:杜菲尔德复仇记
│   │   │   ├─105-DavidDuffield的眼界和成败
│   │   │   ├─106-分析企业的两要素:远见和执行力
│   │   │   ├─107-Zenefits:一个卖保险的创业公司
│   │   │   ├─108-Glassdoor:让公司信息对个人透明
│   │   │   ├─109-从巴顿的创业史看巴顿
│   │   │   ├─110-免费还是收费?WinRAR的生意经
│   │   │   ├─110-免费还是收费?WinRAR的生意经
│   │   │   ├─111-周鸿祎和BAT的沉浮录(上)
│   │   │   ├─112-周鸿祎和BAT的沉浮录(中)
│   │   │   ├─113-周鸿祎和BAT的沉浮录(下)
│   │   │   ├─114-周鸿祎和BAT的沉浮录(后记)
│   │   │   ├─115-互联网第一股雅虎的兴衰:霸主的诞生
│   │   │   ├─116-互联网第一股雅虎的兴衰:运气不敌技术
│   │   │   ├─117-互联网第一股雅虎的兴衰:没有救世主
│   │   │   ├─118-成也杨致远,败也杨致远
│   │   │   ├─118-成也杨致远,败也杨致远
│   │   │   ├─119-企业因人成事,领导人很重要
│   │   │   ├─120-彼得·蒂尔的投资人生
│   │   │   ├─121-商业之外的彼得·蒂尔
│   │   │   ├─122-创业的智慧:从彼得·蒂尔的创投哲学说起
│   │   │   ├─123-谷歌的创新精神:好的、坏的和丑陋的(上)
│   │   │   ├─124-谷歌的创新精神:好的、坏的和丑陋的(下)
│   │   │   ├─125-Facebook的黑客精神
│   │   │   ├─126-Twitter:蓝色小鸟还能飞多久(上)
│   │   │   ├─127-Twitter:蓝色小鸟还能飞多久(下)
│   │   │   ├─128-赚钱是根本,换CEO也没救
│   │   │   ├─129-Square:手机POS机和比特币交易
│   │   │   ├─130-创意很重要,但不是一切
│   │   │   ├─131-杰克·多西:分身有术之兼任两家上市公司CEO
│   │   │   ├─132-Groupon:团购鼻祖的兴衰
│   │   │   ├─133-卖掉自己是不是更好
│   │   │   ├─134-企业在线存储Box
│   │   │   ├─135-个人在线存储Dropbox
│   │   │   ├─136-做产品先做消费者市场,还是先做企业市场
│   │   │   ├─136-做产品先做消费者市场,还是先做企业市场
│   │   │   ├─137-今天我们都来Pin图片之Pinterest的图片社交路
│   │   │   ├─138-企业不上市为哪般
│   │   │   ├─139-微软的综合工程师改革
│   │   │   ├─140-SaaS先驱Salesforce
│   │   │   ├─141-太超前好不好
│   │   │   ├─142-Sun:太阳的升起
│   │   │   ├─143-Sun:太阳的陨落
│   │   │   ├─144-看错敌人多可怕
│   │   │   ├─145-SAP的HANA战略(上)
│   │   │   ├─146-SAP的HANA战略(下)
│   │   │   ├─147-成功的忽悠+成功的执行=成功的产品
│   │   │   ├─148-SQLServer发展史
│   │   │   ├─149-眼光决定一切
│   │   │   ├─150-Ashton-Tate:桌面数据库王者的兴衰
│   │   │   ├─151-无敌不可以肆意妄为
│   │   │   ├─152-Reddit:天涯论坛美国版
│   │   │   ├─153-HackerNews:创业社交两不误
│   │   │   ├─154-YCombinator:孵化器还是培训班?
│   │   │   ├─155-创业公司进孵化器真的值得吗?
│   │   │   ├─156-PaulGraham:硅谷创业教父
│   │   │   ├─157-Zynga:发家从农场开始
│   │   │   ├─158-论Zynga的倒台
│   │   │   ├─159-企业分析要求综合素质
│   │   │   ├─一键直达-系列解读文章回顾
│   │   │   ├─开篇词-突破技术思维,站在商业的角度看问题
│   │   │   ├─新书首发丨《大数据浪潮之巅》
│   │   │   ├─结束语-积跬步,而终至千里
│   │   │   └─结课测试-这些技术与商业的知识你都掌握了吗?
│   │   ├─002-AI技术内参
│   │   │   ├─001-聊聊2017年KDD大会的时间检验奖
│   │   │   ├─002-AI技术内参
│   │   │   ├─002-精读2017年KDD最佳研究论文
│   │   │   ├─003-精读2017年KDD最佳应用数据科学论文
│   │   │   ├─004-精读2017年EMNLP最佳长论文之一
│   │   │   ├─005-精读2017年EMNLP最佳长论文之二
│   │   │   ├─006-精读2017年EMNLP最佳短论文
│   │   │   ├─007-精读2017年ICCV最佳研究论文
│   │   │   ├─008-精读2017年ICCV最佳学生论文
│   │   │   ├─009-如何将“深度强化学习”应用到视觉问答系统?
│   │   │   ├─010-精读2017年NIPS最佳研究论文之一:如何解决非凸优化问题?
│   │   │   ├─011-精读2017年NIPS最佳研究论文之二:KSD测试如何检验两个分布的异同?
│   │   │   ├─012-精读2017年NIPS最佳研究论文之三:如何解决非完美信息博弈问题?
│   │   │   ├─013-WSDM2018论文精读:看谷歌团队如何做位置偏差估计
│   │   │   ├─014-WSDM2018论文精读:看京东团队如何挖掘商品的替代信息和互补信息
│   │   │   ├─015-WSDM2018论文精读:深度学习模型中如何使用上下文信息?
│   │   │   ├─016-TheWeb2018论文精读:如何对商品的图片美感进行建模?
│   │   │   ├─017-TheWeb2018论文精读:如何改进经典的推荐算法BPR?
│   │   │   ├─017-TheWeb2018论文精读:如何改进经典的推荐算法BPR?
│   │   │   ├─018-TheWeb2018论文精读:如何从文本中提取高元关系?
│   │   │   ├─019-SIGIR2018论文精读:偏差和“流行度”之间的关系
│   │   │   ├─019-SIGIR2018论文精读:偏差和“流行度”之间的关系
│   │   │   ├─020-SIGIR2018论文精读:如何利用对抗学习来增强排序模型的普适性?
│   │   │   ├─021-SIGIR2018论文精读:如何对搜索页面上的点击行为进行序列建模?
│   │   │   ├─022-CVPR2018论文精读:如何研究计算机视觉任务之间的关系?
│   │   │   ├─023-CVPR2018论文精读:如何从整体上对人体进行三维建模?
│   │   │   ├─024-CVPR2018论文精读:如何解决排序学习计算复杂度高这个问题?
│   │   │   ├─025-ICML2018论文精读:模型经得起对抗样本的攻击?这或许只是个错觉
│   │   │   ├─026-ICML2018论文精读:聊一聊机器学习算法的“公平性”问题
│   │   │   ├─027-ICML2018论文精读:优化目标函数的时候,有可能放大了“不公平”?
│   │   │   ├─028-ACL2018论文精读:问答系统场景下,如何提出好问题?
│   │   │   ├─029-ACL2018论文精读:什么是对话中的前提触发?如何检测?
│   │   │   ├─030-ACL2018论文精读:什么是“端到端”的语义哈希?
│   │   │   ├─031-经典搜索核心算法:TF-IDF及其变种
│   │   │   ├─032-经典搜索核心算法:BM25及其变种(内附全年目录)
│   │   │   ├─033-经典搜索核心算法:语言模型及其变种
│   │   │   ├─034-机器学习排序算法:单点法排序学习
│   │   │   ├─035-机器学习排序算法:配对法排序学习
│   │   │   ├─036-机器学习排序算法:列表法排序学习
│   │   │   ├─037-“查询关键字理解”三部曲之分类
│   │   │   ├─038-“查询关键字理解”三部曲之解析
│   │   │   ├─039-“查询关键字理解”三部曲之扩展
│   │   │   ├─040-搜索系统评测,有哪些基础指标?
│   │   │   ├─041-搜索系统评测,有哪些高级指标?
│   │   │   ├─042-如何评测搜索系统的在线表现?
│   │   │   ├─043-文档理解第一步:文档分类
│   │   │   ├─044-文档理解的关键步骤:文档聚类
│   │   │   ├─045-文档理解的重要特例:多模文档建模
│   │   │   ├─046-大型搜索框架宏观视角:发展、特点及趋势
│   │   │   ├─047-多轮打分系统概述
│   │   │   ├─048-搜索索引及其相关技术概述
│   │   │   ├─049-PageRank算法的核心思想是什么?
│   │   │   ├─050-经典图算法之HITS
│   │   │   ├─051-社区检测算法之“模块最大化”
│   │   │   ├─051-社区检测算法之“模块最大化”
│   │   │   ├─052-机器学习排序算法经典模型:RankSVM
│   │   │   ├─053-机器学习排序算法经典模型:GBDT
│   │   │   ├─054-机器学习排序算法经典模型:LambdaMART
│   │   │   ├─055-基于深度学习的搜索算法:深度结构化语义模型
│   │   │   ├─056-基于深度学习的搜索算法:卷积结构下的隐含语义模型
│   │   │   ├─057-基于深度学习的搜索算法:局部和分布表征下的搜索模型
│   │   │   ├─058-简单推荐模型之一:基于流行度的推荐模型
│   │   │   ├─059-简单推荐模型之二:基于相似信息的推荐模型
│   │   │   ├─060-简单推荐模型之三:基于内容信息的推荐模型
│   │   │   ├─061-基于隐变量的模型之一:矩阵分解
│   │   │   ├─062-基于隐变量的模型之二:基于回归的矩阵分解
│   │   │   ├─063-基于隐变量的模型之三:分解机
│   │   │   ├─064-高级推荐模型之一:张量分解模型
│   │   │   ├─065-高级推荐模型之二:协同矩阵分解
│   │   │   ├─066-高级推荐模型之三:优化复杂目标函数
│   │   │   ├─067-推荐的Exploit和Explore算法之一:EE算法综述
│   │   │   ├─068-推荐的Exploit和Explore算法之二:UCB算法
│   │   │   ├─069-推荐的Exploit和Explore算法之三:汤普森采样算法
│   │   │   ├─070-推荐系统评测之一:传统线下评测
│   │   │   ├─071-推荐系统评测之二:线上评测
│   │   │   ├─072-推荐系统评测之三:无偏差估计
│   │   │   ├─073-现代推荐架构剖析之一:基于线下离线计算的推荐架构
│   │   │   ├─074-现代推荐架构剖析之二:基于多层搜索架构的推荐系统
│   │   │   ├─075-现代推荐架构剖析之三:复杂现代推荐架构漫谈
│   │   │   ├─076-基于深度学习的推荐模型之一:受限波兹曼机
│   │   │   ├─077-基于深度学习的推荐模型之二:基于RNN的推荐系统
│   │   │   ├─078-基于深度学习的推荐模型之三:利用深度学习来扩展推荐系统
│   │   │   ├─079-广告系统概述
│   │   │   ├─080-广告系统架构
│   │   │   ├─081-广告回馈预估综述
│   │   │   ├─082-Google的点击率系统模型
│   │   │   ├─083-Facebook的广告点击率预估模型
│   │   │   ├─084-雅虎的广告点击率预估模型
│   │   │   ├─085-LinkedIn的广告点击率预估模型
│   │   │   ├─086-Twitter的广告点击率预估模型
│   │   │   ├─087-阿里巴巴的广告点击率预估模型
│   │   │   ├─088-什么是“基于第二价位的广告竞拍”?
│   │   │   ├─089-广告的竞价策略是怎样的?
│   │   │   ├─090-如何优化广告的竞价策略?
│   │   │   ├─091-如何控制广告预算?
│   │   │   ├─092-如何设置广告竞价的底价?
│   │   │   ├─093-聊一聊“程序化直接购买”和“广告期货”
│   │   │   ├─094-归因模型:如何来衡量广告的有效性
│   │   │   ├─095-广告投放如何选择受众?如何扩展受众群?
│   │   │   ├─096-如何利用机器学习技术来检测广告欺诈?
│   │   │   ├─097-LDA模型的前世今生
│   │   │   ├─098-LDA变种模型知多少
│   │   │   ├─099-针对大规模数据,如何优化LDA算法?
│   │   │   ├─100-基础文本分析模型之一:隐语义分析
│   │   │   ├─100-基础文本分析模型之一:隐语义分析
│   │   │   ├─101-基础文本分析模型之二:概率隐语义分析
│   │   │   ├─102-基础文本分析模型之三:EM算法
│   │   │   ├─103-为什么需要Word2Vec算法?
│   │   │   ├─104-Word2Vec算法有哪些扩展模型?
│   │   │   ├─105-Word2Vec算法有哪些应用?
│   │   │   ├─106-序列建模的深度学习利器:RNN基础架构
│   │   │   ├─107-基于门机制的RNN架构:LSTM与GRU
│   │   │   ├─108-RNN在自然语言处理中有哪些应用场景?
│   │   │   ├─109-对话系统之经典的对话模型
│   │   │   ├─110-任务型对话系统有哪些技术要点?
│   │   │   ├─111-聊天机器人有哪些核心技术要点?
│   │   │   ├─112-什么是文档情感分类?
│   │   │   ├─113-如何来提取情感“实体”和“方面”呢?
│   │   │   ├─114-文本情感分析中如何做意见总结和搜索?
│   │   │   ├─115-什么是计算机视觉?
│   │   │   ├─116-掌握计算机视觉任务的基础模型和操作
│   │   │   ├─117-计算机视觉中的特征提取难在哪里?
│   │   │   ├─118-基于深度学习的计算机视觉技术(一):深度神经网络入门
│   │   │   ├─119-基于深度学习的计算机视觉技术(二):基本的深度学习模型
│   │   │   ├─120-基于深度学习的计算机视觉技术(三):深度学习模型的优化
│   │   │   ├─121-计算机视觉领域的深度学习模型(一):AlexNet
│   │   │   ├─122-计算机视觉领域的深度学习模型(二):VGG&GoogleNet
│   │   │   ├─123-计算机视觉领域的深度学习模型(三):ResNet
│   │   │   ├─124-计算机视觉高级话题(一):图像物体识别和分割
│   │   │   ├─125-计算机视觉高级话题(二):视觉问答
│   │   │   ├─126-计算机视觉高级话题(三):产生式模型
│   │   │   ├─127-数据科学家基础能力之概率统计
│   │   │   ├─128-数据科学家基础能力之机器学习
│   │   │   ├─129-数据科学家基础能力之系统
│   │   │   ├─130-数据科学家高阶能力之分析产品
│   │   │   ├─131-数据科学家高阶能力之评估产品
│   │   │   ├─132-数据科学家高阶能力之如何系统提升产品性能
│   │   │   ├─133-职场话题:当数据科学家遇见产品团队
│   │   │   ├─134-职场话题:数据科学家应聘要具备哪些能力?
│   │   │   ├─135-职场话题:聊聊数据科学家的职场规划
│   │   │   ├─136-如何组建一个数据科学团队?
│   │   │   ├─137-数据科学团队养成:电话面试指南
│   │   │   ├─138-数据科学团队养成:Onsite面试面面观
│   │   │   ├─139-成为“香饽饽”的数据科学家,如何衡量他们的工作呢?
│   │   │   ├─140-人工智能领域知识体系更新周期只有5~6年,数据科学家如何培养?
│   │   │   ├─141-数据科学家团队组织架构:水平还是垂直,这是个问题
│   │   │   ├─142-数据科学家必备套路之一:搜索套路
│   │   │   ├─143-数据科学家必备套路之二:推荐套路
│   │   │   ├─143-数据科学家必备套路之二:推荐套路
│   │   │   ├─144-数据科学家必备套路之三:广告套路
│   │   │   ├─145-如何做好人工智能项目的管理?
│   │   │   ├─146-数据科学团队必备的工程流程三部曲
│   │   │   ├─147-数据科学团队怎么选择产品和项目?
│   │   │   ├─148-曾经辉煌的雅虎研究院
│   │   │   ├─149-微软研究院:工业界研究机构的楷模
│   │   │   ├─150-聊一聊谷歌特立独行的混合型研究
│   │   │   ├─151-精读AlphaGoZero论文
│   │   │   ├─152-2017人工智能技术发展盘点
│   │   │   ├─153-如何快速学习国际顶级学术会议的内容?
│   │   │   ├─154-在人工智能领域,如何快速找到学习的切入点?
│   │   │   ├─155-人工智能技术选择,该从哪里获得灵感?
│   │   │   ├─156-近在咫尺,走进人工智能研究
│   │   │   ├─内参特刊-和你聊聊每个人都关心的人工智能热点话题
│   │   │   ├─复盘1-搜索核心技术模块
│   │   │   ├─复盘2-推荐系统核心技术模块
│   │   │   ├─复盘3-自然语言处理及文本处理核心技术模块
│   │   │   ├─复盘4-广告系统核心技术模块
│   │   │   ├─复盘5-计算机视觉核心技术模块
│   │   │   ├─复盘6-数据科学家与数据科学团队是怎么养成的?
│   │   │   ├─复盘7-一起来读人工智能国际顶级会议论文
│   │   │   ├─开篇词-你的360度人工智能信息助理
│   │   │   ├─结束语-雄关漫道真如铁,而今迈步从头越
│   │   │   └─结束语-雄关漫道真如铁,而今迈步从头越
│   │   ├─003-左耳听风
│   │   │   ├─003-左耳听风
│   │   │   ├─01-程序员如何用技术变现(上)
│   │   │   ├─02-程序员如何用技术变现(下)
│   │   │   ├─03-Equifax信息泄露始末
│   │   │   ├─04-从Equifax信息泄露看数据安全
│   │   │   ├─05-何为技术领导力?
│   │   │   ├─06-如何才能拥有技术领导力?
│   │   │   ├─07-推荐阅读:每个程序员都该知道的知识
│   │   │   ├─08-Go语言,Docker和新技术
│   │   │   ├─09-答疑解惑:渴望、热情和选择
│   │   │   ├─10-如何成为一个大家愿意追随的Leader?
│   │   │   ├─100-高效学习:面对枯燥和量大的知识
│   │   │   ├─101-高效沟通:Talk和Code同等重要
│   │   │   ├─102-高效沟通:沟通阻碍和应对方法
│   │   │   ├─103-高效沟通:沟通方式及技巧
│   │   │   ├─104-高效沟通:沟通技术
│   │   │   ├─105-高效沟通:好老板要善于提问
│   │   │   ├─106-高效沟通:好好说话的艺术
│   │   │   ├─107-Go编程模式:切片、接口、时间和性能
│   │   │   ├─108-Go编程模式:错误处理
│   │   │   ├─109-Go编程模式:FunctionalOptions
│   │   │   ├─11-程序中的错误处理:错误返回码和异常捕捉
│   │   │   ├─110-Go编程模式:委托和反转控制
│   │   │   ├─111-Go编程模式:Map-Reduce
│   │   │   ├─112-Go编程模式:GoGeneration
│   │   │   ├─113-Go编程模式:修饰器
│   │   │   ├─114-Go编程模式:Pipeline
│   │   │   ├─115-Go编程模式:KubernetesVisitor模式
│   │   │   ├─12-程序中的错误处理:异步编程以及我的最佳实践
│   │   │   ├─13-魔数0x5f3759df
│   │   │   ├─13-魔数0x5f3759df
│   │   │   ├─14-推荐阅读:机器学习101
│   │   │   ├─15-时间管理:同扭曲时间的事儿抗争
│   │   │   ├─16-时间管理:如何利用好自己的时间?
│   │   │   ├─17-故障处理最佳实践:应对故障
│   │   │   ├─18-故障处理最佳实践:故障改进
│   │   │   ├─19-答疑解惑:我们应该能够识别的表象和本质
│   │   │   ├─20-Git协同工作流,你该怎么选?
│   │   │   ├─21-分布式系统架构的冰与火
│   │   │   ├─22-从亚马逊的实践,谈分布式系统的难点
│   │   │   ├─23-分布式系统的技术栈
│   │   │   ├─24-分布式系统关键技术:全栈监控
│   │   │   ├─25-分布式系统关键技术:服务调度
│   │   │   ├─26-分布式系统关键技术:流量与数据调度
│   │   │   ├─27-洞悉PaaS平台的本质
│   │   │   ├─28-推荐阅读:分布式系统架构经典资料
│   │   │   ├─29-推荐阅读:分布式数据调度相关论文
│   │   │   ├─29-推荐阅读:分布式数据调度相关论文
│   │   │   ├─30-编程范式游记(1)-起源
│   │   │   ├─31-编程范式游记(2)-泛型编程
│   │   │   ├─32-编程范式游记(3)-类型系统和泛型的本质
│   │   │   ├─33-编程范式游记(4)-函数式编程
│   │   │   ├─34-编程范式游记(5)-修饰器模式
│   │   │   ├─35-编程范式游记(6)-面向对象编程
│   │   │   ├─36-编程范式游记(7)-基于原型的编程范式
│   │   │   ├─37-编程范式游记(8)-Go语言的委托模式
│   │   │   ├─38-编程范式游记(9)-编程的本质
│   │   │   ├─39-编程范式游记(10)-逻辑编程范式
│   │   │   ├─40-编程范式游记(11)-程序世界里的编程范式
│   │   │   ├─41-弹力设计篇之“认识故障和弹力设计”
│   │   │   ├─41-弹力设计篇之“认识故障和弹力设计”
│   │   │   ├─42-弹力设计篇之“隔离设计”
│   │   │   ├─43-弹力设计篇之“异步通讯设计”
│   │   │   ├─44-弹力设计篇之“幂等性设计”
│   │   │   ├─45-弹力设计篇之“服务的状态”
│   │   │   ├─46-弹力设计篇之“补偿事务”
│   │   │   ├─47-弹力设计篇之“重试设计”
│   │   │   ├─48-弹力设计篇之“熔断设计”
│   │   │   ├─49-弹力设计篇之“限流设计”
│   │   │   ├─50-弹力设计篇之“降级设计”
│   │   │   ├─51-弹力设计篇之“弹力设计总结”
│   │   │   ├─52-管理设计篇之“分布式锁”
│   │   │   ├─53-管理设计篇之“配置中心”
│   │   │   ├─54-管理设计篇之“边车模式”
│   │   │   ├─55-管理设计篇之“服务网格”
│   │   │   ├─56-管理设计篇之“网关模式”
│   │   │   ├─57-管理设计篇之“部署升级策略”
│   │   │   ├─58-性能设计篇之“缓存”
│   │   │   ├─59-性能设计篇之“异步处理”
│   │   │   ├─60-性能设计篇之“数据库扩展”
│   │   │   ├─61-性能设计篇之“秒杀”
│   │   │   ├─62-性能设计篇之“边缘计算”
│   │   │   ├─63-区块链技术的本质
│   │   │   ├─63-区块链技术的本质
│   │   │   ├─64-区块链技术细节:哈希算法(1)
│   │   │   ├─64-区块链技术细节:哈希算法
│   │   │   ├─65-区块链技术细节:加密和挖矿
│   │   │   ├─66-区块链技术细节:去中心化的共识机制
│   │   │   ├─67-区块链技术细节:智能合约
│   │   │   ├─68-区块链技术-传统金融和虚拟货币
│   │   │   ├─69-程序员练级攻略:开篇词
│   │   │   ├─70-程序员练级攻略:零基础启蒙
│   │   │   ├─71-程序员练级攻略:正式入门
│   │   │   ├─72-程序员练级攻略:程序员修养
│   │   │   ├─73-程序员练级攻略:编程语言
│   │   │   ├─74-程序员练级攻略:理论学科
│   │   │   ├─75-程序员练级攻略:系统知识
│   │   │   ├─76-程序员练级攻略:软件设计
│   │   │   ├─77-程序员练级攻略:Linux系统、内存和网络
│   │   │   ├─78-程序员练级攻略:异步I-O模型和Lock-Free编程
│   │   │   ├─79-程序员练级攻略:Java底层知识
│   │   │   ├─80-程序员练级攻略:数据库
│   │   │   ├─81-程序员练级攻略:分布式架构入门
│   │   │   ├─82-程序员练级攻略:分布式架构经典图书和论文
│   │   │   ├─83-程序员练级攻略:分布式架构工程设计
│   │   │   ├─84-程序员练级攻略:微服务
│   │   │   ├─85-程序员练级攻略:容器化和自动化运维
│   │   │   ├─86-程序员练级攻略:机器学习和人工智能
│   │   │   ├─87-程序员练级攻略:前端基础和底层原理
│   │   │   ├─88-程序员练级攻略:前端性能优化和框架
│   │   │   ├─89-程序员练级攻略:UI-UX设计
│   │   │   ├─90-程序员练级攻略:技术资源集散地
│   │   │   ├─91-程序员练级攻略的正确打开方式
│   │   │   ├─92-程序员面试攻略:面试前的准备
│   │   │   ├─93-程序员面试攻略:面试中的技巧
│   │   │   ├─94-程序员面试攻略:面试风格
│   │   │   ├─95-程序员面试攻略:实力才是王中王
│   │   │   ├─96-高效学习:端正学习态度
│   │   │   ├─97-高效学习:源头、原理和知识地图
│   │   │   ├─98-高效学习:深度,归纳和坚持实践
│   │   │   ├─99-高效学习:如何学习和阅读代码
│   │   │   ├─加餐-谈谈我的“三观”
│   │   │   ├─开篇词-洞悉技术的本质,享受科技的乐趣
│   │   │   ├─结束语-业精于勤,行成于思
│   │   │   ├─课程迭代|全新交付117讲音频
│   │   │   └─课程迭代|全新交付117讲音频
│   │   ├─004-朱赟的技术管理课
│   │   │   ├─004-朱赟的技术管理课
│   │   │   ├─01-职场分身术:从给答案到做引导
│   │   │   ├─01-职场分身术:从给答案到做引导
│   │   │   ├─02-Bug引发事故,该不该追究责任?
│   │   │   ├─03-每个工程师都应该了解的:A-B测试
│   │   │   ├─04-如何帮助团队成员成长
│   │   │   ├─05-当我们给别人提意见时,要注意些什么?
│   │   │   ├─06-每个工程师都应该了解的:聊聊幂等
│   │   │   ├─07-当别人给我们提意见时,该如何应对?
│   │   │   ├─08-说说硅谷公司中的一对一沟通
│   │   │   ├─09-每个工程师都应该了解的:大数据时代的算法
│   │   │   ├─10-项目延期了,作为负责人该怎么办?
│   │   │   ├─11-管理和被管理:期望值差异
│   │   │   ├─12-每个工程师都应该了解的:数据库知识
│   │   │   ├─13-管理者在进行工作分配时,会考虑哪些问题?
│   │   │   ├─14-硅谷人到底忙不忙?
│   │   │   ├─15-每个工程师都应该了解的:系统拆分
│   │   │   ├─16-技术人如何建立个人影响力
│   │   │   ├─17-管理者不用亲力亲为:关键是什么?
│   │   │   ├─18-每个工程师都应该了解的:API的设计和实现
│   │   │   ├─19-硅谷面试:那些你应该知道的事儿
│   │   │   ├─20-项目管理中的三个技巧
│   │   │   ├─21-每个工程师都应该了解的:中美在支付技术和大环境下的差异
│   │   │   ├─22-不要做微观的管理者
│   │   │   ├─23-如何处理工作中的人际关系?
│   │   │   ├─24-编程语言漫谈
│   │   │   ├─25-兼容并包的领导方式
│   │   │   ├─26-如何做自己的职场规划?
│   │   │   ├─27-小议Java语言
│   │   │   ├─28-如何激发团队人员的责任心
│   │   │   ├─29-说说硅谷互联网公司的开发流程
│   │   │   ├─30-编程马拉松
│   │   │   ├─31-工程师、产品经理、数据工程师是如何一起工作的?
│   │   │   ├─31-工程师、产品经理、数据工程师是如何一起工作的?
│   │   │   ├─32-硅谷人如何做CodeReview
│   │   │   ├─33-技术人的犯错成本
│   │   │   ├─33-技术人的犯错成本
│   │   │   ├─34-如何从错误中成长?
│   │   │   ├─35-理解并建立自己的工作弹性
│   │   │   ├─36-如何对更多的工作说“不”
│   │   │   ├─尾声:成长不是顿悟,而是练习
│   │   │   ├─开篇词-从工程师到管理者,我的思考与实践
│   │   │   ├─新书-《跃迁:从技术到管理的硅谷路径》
│   │   │   └─新书-《跃迁:从技术到管理的硅谷路径》
│   │   ├─005-邱岳的产品手记
│   │   │   ├─005-邱岳的产品手记
│   │   │   ├─01-验证码是个好设计吗?
│   │   │   ├─02-产品经理工具指南
│   │   │   ├─03-产品案例分析·Trigraphy的设计哲学
│   │   │   ├─04-如何当好AI时代的产品经理?(学习篇)
│   │   │   ├─05-如何当好AI时代的产品经理?(实践篇)
│   │   │   ├─06-产品案例分析·TheGuardian的文本之美
│   │   │   ├─07-关于需求变更(上):需求背后的需求
│   │   │   ├─08-关于需求变更(下)-化变更于无形
│   │   │   ├─09-产品案例分析:Hopper的“人工智能”
│   │   │   ├─10-产品被抄袭了,怎么办?
│   │   │   ├─11-如何借鉴灵感?
│   │   │   ├─12-产品案例分析:LabRdr的设计实验
│   │   │   ├─13-无用却必要:产品规划(上)
│   │   │   ├─14-留白与节奏:产品规划(下)
│   │   │   ├─15-产品案例分析:Mimo与LearnPython的导学之趣
│   │   │   ├─16-在内部产品中找到产品经理的价值
│   │   │   ├─17-产品经理如何获得非权力性的影响力?
│   │   │   ├─18-产品案例分析:WWFTogether的情怀设计
│   │   │   ├─19-产品经理如何与开发打交道(上):打破思维的边界
│   │   │   ├─20-产品经理如何与开发打交道(下):合作与共赢
│   │   │   ├─21-产品案例分析:Fabulous的精致养成
│   │   │   ├─22-产品经理的图文基本功(上):产品文档
│   │   │   ├─23-产品经理的图文基本功(下):产品图例
│   │   │   ├─24-产品案例分析:PathSource的混乱与直观
│   │   │   ├─25-产品世界的暗黑模式:操纵的诱惑
│   │   │   ├─26-写好产品文档的诀窍
│   │   │   ├─27-产品案例分析:Quartz&Hooked的对话式交互
│   │   │   ├─28-产品分析的套路(上):谁是利益相关者?
│   │   │   ├─29-产品分析的套路(中):解决什么问题?
│   │   │   ├─30-产品案例分析:Primer的扑克牌交互
│   │   │   ├─31-产品分析的套路(下):如何出解决方案?
│   │   │   ├─32-从受众规模、需求频率和强度出发:排定需求优先级的方法(上)
│   │   │   ├─33-产品案例分析:Arts&Culture的架构之美
│   │   │   ├─34-价值曲线分析:排定需求优先级的方法(下)
│   │   │   ├─35-答疑时间:关于产品经理的12个问题
│   │   │   ├─35-答疑时间:关于产品经理的12个问题
│   │   │   ├─36-产品案例分析:解读知识星球
│   │   │   ├─37-如何做好需求评审(上):需求评审不只是一次会议
│   │   │   ├─38-如何做好需求评审(下):在评审中控住全场
│   │   │   ├─39-产品案例分析:SeatGeek的订票设计
│   │   │   ├─40-新年给产品经理的几碗鸡汤
│   │   │   ├─41-产品经理的项目管理心得
│   │   │   ├─42-产品案例分析:Unread的阅读体验
│   │   │   ├─43-“玩”的力量:从游戏设计中学习产品设计(上)
│   │   │   ├─44-“玩”的启示:从游戏设计中学习产品设计(下)
│   │   │   ├─45-产品案例分析:Chartistic的“复杂”图表
│   │   │   ├─【第二季回归】二爷归来,再次扬帆起航
│   │   │   ├─尾声:你的快乐是哪一种
│   │   │   ├─开篇词-产品经理的世界没有对错
│   │   │   └─结课测试-关于产品的这些知识,你都掌握了吗?
│   │   ├─006-人工智能基础课
│   │   │   ├─006-人工智能基础课
│   │   │   ├─01数学基础-九层之台,起于累土:线性代数
│   │   │   ├─02数学基础-月有阴晴圆缺,此事古难全:概率论
│   │   │   ├─03数学基础-窥一斑而知全豹:数理统计
│   │   │   ├─04数学基础-不畏浮云遮望眼:最优化方法
│   │   │   ├─05数学基础-万物皆数,信息亦然:信息论
│   │   │   ├─06数学基础-明日黄花迹难寻:形式逻辑
│   │   │   ├─07机器学习-数山有路,学海无涯:机器学习概论
│   │   │   ├─08机器学习-简约而不简单:线性回归
│   │   │   ├─09机器学习-大道至简:朴素贝叶斯方法
│   │   │   ├─10机器学习-衍化至繁:逻辑回归
│   │   │   ├─11机器学习-步步为营,有章可循:决策树
│   │   │   ├─12机器学习-穷则变,变则通:支持向量机
│   │   │   ├─13机器学习-三个臭皮匠,赛过诸葛亮:集成学习
│   │   │   ├─13机器学习-三个臭皮匠,赛过诸葛亮:集成学习
│   │   │   ├─14机器学习-物以类聚,人以群分:聚类分析
│   │   │   ├─15机器学习-好钢用在刀刃上:降维学习
│   │   │   ├─16人工神经网络-道法自然,久藏玄冥:神经网络的生理学背景
│   │   │   ├─17人工神经网络-一个青年才俊的意外死亡:神经元与感知器
│   │   │   ├─18人工神经网络-左手信号,右手误差:多层感知器
│   │   │   ├─19人工神经网络-各人自扫门前雪:径向基函数神经网络
│   │   │   ├─20人工神经网络-看不见的手:自组织特征映射
│   │   │   ├─21人工神经网络-水无至清,人莫至察:模糊神经网络
│   │   │   ├─22深度学习-空山鸣响,静水流深:深度学习概述
│   │   │   ├─23深度学习-前方有路,未来可期:深度前馈网络
│   │   │   ├─24深度学习-小树不修不直溜:深度学习中的正则化
│   │   │   ├─25深度学习-玉不琢不成器:深度学习中的优化
│   │   │   ├─26深度学习-空竹里的秘密:自编码器
│   │   │   ├─27深度学习-困知勉行者勇:深度强化学习
│   │   │   ├─28深度学习框架下的神经网络-枯木逢春:深度信念网络
│   │   │   ├─29深度学习框架下的神经网络-见微知著:卷积神经网络
│   │   │   ├─30深度学习框架下的神经网络-昨日重现:循环神经网络
│   │   │   ├─31深度学习框架下的神经网络-左右互搏:生成式对抗网络
│   │   │   ├─32深度学习框架下的神经网络-三重门:长短期记忆网络
│   │   │   ├─33深度学习之外的人工智能-一图胜千言:概率图模型
│   │   │   ├─34深度学习之外的人工智能-乌合之众的逆袭:集群智能
│   │   │   ├─34深度学习之外的人工智能-乌合之众的逆袭:集群智能
│   │   │   ├─35深度学习之外的人工智能-授人以鱼不如授人以渔:迁移学习
│   │   │   ├─36深度学习之外的人工智能-滴水藏海:知识图谱
│   │   │   ├─37应用场景-你是我的眼:计算机视觉
│   │   │   ├─38应用场景-嘿,Siri:语音处理
│   │   │   ├─39应用场景-心有灵犀一点通:对话系统
│   │   │   ├─40应用场景-数字巴别塔:机器翻译
│   │   │   ├─一键到达-人工神经网络复习课
│   │   │   ├─一键到达-应用场景复习课
│   │   │   ├─一键到达-数学基础复习课
│   │   │   ├─一键到达-机器学习复习课
│   │   │   ├─一键到达-深度学习之外的人工智能复习课
│   │   │   ├─一键到达-深度学习复习课
│   │   │   ├─一键到达-深度学习框架下的神经网络复习课
│   │   │   ├─开篇词-人工智能:新时代的必修课
│   │   │   ├─推荐阅读-我与人工智能的故事
│   │   │   ├─新书-《裂变:秒懂人工智能的基础课》
│   │   │   ├─直播回顾-机器学习必备的数学基础
│   │   │   ├─第2季回归-这次我们来聊聊机器学习
│   │   │   ├─结课-溯洄从之,道阻且长
│   │   │   ├─结课测试-这些人工智能的知识你都掌握了吗?
│   │   │   ├─课外谈-“人工智能基础课”之二三闲话
│   │   │   ├─(课外辅导)人工神经网络-拓展阅读参考书
│   │   │   ├─(课外辅导)数学基础-拓展阅读参考书
│   │   │   ├─(课外辅导)机器学习-拓展阅读参考书
│   │   │   └─(课外辅导)深度学习-拓展阅读参考书
│   │   ├─007-赵成的运维体系管理课
│   │   │   ├─007-赵成的运维体系管理课
│   │   │   ├─01-为什么Netflix没有运维岗位?
│   │   │   ├─01-为什么Netflix没有运维岗位?
│   │   │   ├─02-微服务架构时代,运维体系建设为什么要以“应用”为核心?
│   │   │   ├─03-标准化体系建设(上):如何建立应用标准化体系和模型?
│   │   │   ├─04-标准化体系建设(下):如何建立基础架构标准化及服务化体系?
│   │   │   ├─05-如何从生命周期的视角看待应用运维体系建设?
│   │   │   ├─06-聊聊CMDB的前世今生
│   │   │   ├─07-有了CMDB,为什么还需要应用配置管理?
│   │   │   ├─08-如何在CMDB中落地应用的概念?
│   │   │   ├─09-如何打造运维组织架构?
│   │   │   ├─10-谷歌SRE运维模式解读
│   │   │   ├─11-从谷歌CRE谈起,运维如何培养服务意识?
│   │   │   ├─12-持续交付知易行难,想做成这事你要理解这几个关键点
│   │   │   ├─13-持续交付的第一关键点:配置管理
│   │   │   ├─14-如何做好持续交付中的多环境配置管理?
│   │   │   ├─15-开发和测试争抢环境?是时候进行多环境建设了
│   │   │   ├─16-线上环境建设,要扛得住真刀真枪的考验
│   │   │   ├─17-人多力量大vs
│   │   │   ├─18-持续交付流水线软件构建难吗?有哪些关键问题?
│   │   │   ├─19-持续交付中流水线构建完成后就大功告成了吗?别忘了质量保障
│   │   │   ├─20-做持续交付概念重要还是场景重要?看“笨办法”如何找到最佳方案
│   │   │   ├─20-做持续交付概念重要还是场景重要?看“笨办法”如何找到最佳方案
│   │   │   ├─21-极端业务场景下,我们应该如何做好稳定性保障?
│   │   │   ├─22-稳定性实践:容量规划之业务场景分析
│   │   │   ├─23-稳定性实践:容量规划之压测系统建设
│   │   │   ├─24-稳定性实践:限流降级
│   │   │   ├─25-稳定性实践:开关和预案
│   │   │   ├─26-稳定性实践:全链路跟踪系统,技术运营能力的体现
│   │   │   ├─27-故障管理:谈谈我对故障的理解
│   │   │   ├─28-故障管理:故障定级和定责
│   │   │   ├─29-故障管理:鼓励做事,而不是处罚错误
│   │   │   ├─30-故障管理:故障应急和故障复盘
│   │   │   ├─31-唇亡齿寒,运维与安全
│   │   │   ├─32-为什么蘑菇街会选择上云?是被动选择还是主动出击?
│   │   │   ├─33-为什么混合云是未来云计算的主流形态?
│   │   │   ├─34-SpringCloud:面向应用层的云架构解决方案
│   │   │   ├─35-以绝对优势立足:从CDN和云存储来聊聊云生态的崛起
│   │   │   ├─36-量体裁衣方得最优解:聊聊页面静态化架构和二级CDN建设
│   │   │   ├─37-云计算时代,我们所说的弹性伸缩,弹的到底是什么?
│   │   │   ├─37-云计算时代,我们所说的弹性伸缩,弹的到底是什么?
│   │   │   ├─38-我是如何走上运维岗位的?
│   │   │   ├─39-云计算和AI时代,运维应该如何做好转型?
│   │   │   ├─40-运维需要懂产品和运营吗?
│   │   │   ├─41-冷静下来想想,员工离职这事真能“防得住”吗?
│   │   │   ├─42-树立个人品牌意识:从背景调查谈谈职业口碑的重要性
│   │   │   ├─划重点:赵成的运维体系管理课精华(一)
│   │   │   ├─划重点:赵成的运维体系管理课精华(三)
│   │   │   ├─划重点:赵成的运维体系管理课精华(二)
│   │   │   ├─开篇词-带给你不一样的运维思考
│   │   │   ├─新书-《进化:运维技术变革与实践探索》
│   │   │   ├─特别放送|我的2019:收获,静静等待
│   │   │   ├─结束语-学习的过程,多些耐心和脚踏实地
│   │   │   └─结束语-学习的过程,多些耐心和脚踏实地
│   │   ├─008-推荐系统三十六式
│   │   │   ├─008-推荐系统三十六式
│   │   │   ├─01-你真的需要个性化推荐系统吗
│   │   │   ├─02-个性化推荐系统有哪些绕不开的经典问题?
│   │   │   ├─03-这些你必须应该具备的思维模式
│   │   │   ├─04-画鬼容易画人难:用户画像的“能”和“不能”
│   │   │   ├─05-从文本到用户画像有多远
│   │   │   ├─06-超越标签的内容推荐系统
│   │   │   ├─07-人以群分,你是什么人就看到什么世界
│   │   │   ├─08-解密“看了又看”和“买了又买”
│   │   │   ├─09-协同过滤中的相似度计算方法有哪些
│   │   │   ├─10-那些在NetflixPrize中大放异彩的推荐算法
│   │   │   ├─11-Facebook是怎么为十亿人互相推荐好友的
│   │   │   ├─12-如果关注排序效果,那么这个模型可以帮到你
│   │   │   ├─13-经典模型融合办法:线性模型和树模型的组合拳
│   │   │   ├─14-一网打尽协同过滤、矩阵分解和线性模型
│   │   │   ├─15-深度和宽度兼具的融合模型WideandDeep
│   │   │   ├─16-简单却有效的Bandit算法
│   │   │   ├─17-结合上下文信息的Bandit算法
│   │   │   ├─18-如何将Bandit算法与协同过滤结合使用
│   │   │   ├─19-深度学习在推荐系统中的应用有哪些
│   │   │   ├─20-用RNN构建个性化音乐播单
│   │   │   ├─21-构建一个科学的排行榜体系
│   │   │   ├─22-实用的加权采样算法
│   │   │   ├─23-推荐候选池的去重策略
│   │   │   ├─24-典型的信息流架构是什么样的
│   │   │   ├─25-Netflix个性化推荐架构
│   │   │   ├─26-总览推荐架构和搜索、广告的关系
│   │   │   ├─27-巧妇难为无米之炊:数据采集关键要素
│   │   │   ├─28-让你的推荐系统反应更快:实时推荐
│   │   │   ├─29-让数据驱动落地,你需要一个实验平台
│   │   │   ├─30-推荐系统服务化、存储选型及API设计
│   │   │   ├─31-推荐系统的测试方法及常用指标介绍
│   │   │   ├─32-道高一尺魔高一丈:推荐系统的攻防
│   │   │   ├─33-和推荐系统有关的开源工具及框架介绍
│   │   │   ├─33-和推荐系统有关的开源工具及框架介绍
│   │   │   ├─34-推荐系统在互联网产品商业链条中的地位
│   │   │   ├─35-说说信息流的前世今生
│   │   │   ├─36-组建推荐团队及工程师的学习路径
│   │   │   ├─加餐-推荐系统的参考阅读
│   │   │   ├─开篇词-用知识去对抗技术不平等
│   │   │   ├─结束语-遇“荐”之后,江湖再见
│   │   │   └─结课测试-推荐系统的这些知识,你都掌握了吗?
│   │   ├─009-深入浅出区块链
│   │   │   ├─009-深入浅出区块链
│   │   │   ├─尾声篇-授人以鱼,不如授人以渔
│   │   │   ├─开篇词-帮你从0到1深入学习区块链技术
│   │   │   ├─新书首发-《区块链第一课:深入浅出技术与应用》
│   │   │   ├─第10讲-深入区块链技术(二):P2P网络
│   │   │   ├─第11讲-深入区块链技术(三):共识算法与分布式一致性算法
│   │   │   ├─第12讲-深入区块链技术(四):PoW共识
│   │   │   ├─第13讲-深入区块链技术(五):PoS共识机制
│   │   │   ├─第14讲-深入区块链技术(六):DPoS共识机制
│   │   │   ├─第15讲-深入区块链技术(七):哈希与加密算法
│   │   │   ├─第16讲-深入区块链技术(八):UTXO与普通账户模型
│   │   │   ├─第17讲-去中心化与区块链交易性能
│   │   │   ├─第18讲-智能合约与以太坊
│   │   │   ├─第19讲-上手搭建一条自己的智能合约
│   │   │   ├─第1讲-到底什么才是区块链?
│   │   │   ├─第20讲-区块链项目详解:比特股BTS
│   │   │   ├─第21讲-引人瞩目的区块链项目:EOS、IOTA、Cardano
│   │   │   ├─第22讲-国内区块链项目技术一览
│   │   │   ├─第23讲-联盟链和它的困境
│   │   │   ├─第24讲-比特币专题(一)历史与货币
│   │   │   ├─第25讲-比特币专题(二):扩容之争、IFO与链上治理
│   │   │   ├─第26讲-数字货币和数字资产
│   │   │   ├─第27讲-弄懂数字货币交易平台(一)
│   │   │   ├─第28讲-弄懂数字货币交易平台(二)
│   │   │   ├─第29讲-互联网身份与区块链数字身份
│   │   │   ├─第2讲-区块链到底是怎么运行的?
│   │   │   ├─第30讲-区块链即服务BaaS
│   │   │   ├─第31讲-数字货币钱包服务
│   │   │   ├─第32讲-区块链与供应链(一)
│   │   │   ├─第33讲-区块链与供应链(二)
│   │   │   ├─第33讲-区块链与供应链(二)
│   │   │   ├─第34讲-从业区块链需要了解什么?
│   │   │   ├─第35讲-搭建你的迷你区块链(设计篇)
│   │   │   ├─第36讲-搭建你的迷你区块链(实践篇)
│   │   │   ├─第3讲-浅说区块链共识机制
│   │   │   ├─第4讲-区块链的应用类型
│   │   │   ├─第5讲-如何理解数字货币?它与区块链又是什么样的关系?
│   │   │   ├─第5讲-如何理解数字货币?它与区块链又是什么样的关系?
│   │   │   ├─第6讲-理解区块链之前,先上手体验一把数字货币
│   │   │   ├─第7讲-区块链的常见误区
│   │   │   ├─第8讲-最主流区块链项目有哪些?
│   │   │   ├─第9讲-深入区块链技术(一):技术基础
│   │   │   └─结课测试-“深入浅出区块链”100分试卷等你来挑战!
│   │   ├─010-技术领导力实战笔记
│   │   │   ├─010-技术领导力实战笔记
│   │   │   ├─大咖对话-万玉权:如何招到并培养核心人才
│   │   │   ├─大咖对话-万玉权:高效团队的关键,以目标为导向,用数据来说话
│   │   │   ├─大咖对话-不可替代的Java:生态与程序员是两道护城河
│   │   │   ├─大咖对话-从几个工程师到2000+个工程师的技术团队成长秘诀
│   │   │   ├─大咖对话-以产生价值判断工程师贡献——读者留言精选
│   │   │   ├─大咖对话-余沛:打造以最佳交付实践为目标的技术导向
│   │   │   ├─大咖对话-余沛:进阶CTO必备的素质与能力
│   │   │   ├─大咖对话-刘俊强:云计算时代技术管理者的应对之道
│   │   │   ├─大咖对话-刘俊强:谈谈我对2019年云计算趋势的看法
│   │   │   ├─大咖对话-创业就是把自己过去的经验快速的产品化
│   │   │   ├─大咖对话-如何打造自我驱动型的技术团队?
│   │   │   ├─大咖对话-如何高效管理8000+规模的技术团队
│   │   │   ├─大咖对话-季昕华:以不变的目的应对多变的技术浪潮
│   │   │   ├─大咖对话-对人才的长期投资是人才体系打造的根本
│   │   │   ├─大咖对话-张建锋:创业可以快而大,也可以小而美
│   │   │   ├─大咖对话-彭跃辉:保持高效迭代的团队是如何炼成的
│   │   │   ├─大咖对话-彭跃辉:解决用户痛点就是立足于市场的秘诀
│   │   │   ├─大咖对话-徐毅:如何提升员工的活力与动力?
│   │   │   ├─大咖对话-徐毅:打造高效研发团队的五个维度及相关实践
│   │   │   ├─大咖对话-技术人创业前衡量自我的3P3C模型
│   │   │   ├─大咖对话-技术人真正需要的是升维思考
│   │   │   ├─大咖对话-技术管理者应该向优秀的体育教练学习
│   │   │   ├─大咖对话-未来技术负责人与首席增长官将如何协作?
│   │   │   ├─大咖对话-李昊:创业公司如何做好技术团队绩效考核?
│   │   │   ├─大咖对话-李智慧:技术人如何应对“互联网寒冬”
│   │   │   ├─大咖对话-杨育斌:技术领导者要打造技术团队的最大化价值
│   │   │   ├─大咖对话-池建强:做产品不要执着于打造爆款
│   │   │   ├─大咖对话-焦烈焱:从四个维度更好的激发团队创造力
│   │   │   ├─大咖对话-玉攻:四个维度看小程序与App的区别
│   │   │   ├─大咖对话-王坚:我从不吃后悔药
│   │   │   ├─大咖对话-王平:从人、事、价值观、文化等维度看技术团队转型
│   │   │   ├─大咖对话-王平:如何快速搭建核心技术团队
│   │   │   ├─大咖对话-王鹏云:技术人创业该如何选择合伙人?
│   │   │   ├─大咖对话-王鹏云:管理方式的差异是为了更好地实现企业商业价值
│   │   │   ├─大咖对话-王龙:利用C端连接B端实现产业互联网是下半场的重中之重
│   │   │   ├─大咖对话-童剑:用合伙人管理结构打造完美团队
│   │   │   ├─大咖对话-管理者是首席铲屎官?
│   │   │   ├─大咖对话-胡哲人:技术人创业要跨过的思维坎
│   │   │   ├─大咖对话-袁店明:如何将打造自组织团队落诸实践
│   │   │   ├─大咖对话-袁店明:打造高效研发团队的五个要点
│   │   │   ├─大咖对话-让团队成员持续的enjoy
│   │   │   ├─大咖对话-谢孟军:技术人如何建立自己的个人品牌
│   │   │   ├─大咖对话-谭待:架构的本质是折中
│   │   │   ├─大咖对话-陈天石:AI芯片需要技术和资本的双重密集支撑
│   │   │   ├─大咖对话-陈斌:如何打造高创造力、高动力的技术团队
│   │   │   ├─大咖对话-陶真:技术人要爱上问问题,而不是自己的解决方案
│   │   │   ├─大咖对话-韩军:CTO转型CEO如何转变思路
│   │   │   ├─大咖对话-项目成功的秘诀——技术产品双头负责制
│   │   │   ├─大咖对话-顾旻曼:投资时我们更多地是在找优秀的团队
│   │   │   ├─大咖对话-高斌:过分渲染会过度拉高大众对人工智能的期望
│   │   │   ├─大咖问答-发现下一个小米,不是只能靠运气
│   │   │   ├─大咖问答-发现下一个小米,不是只能靠运气
│   │   │   ├─大咖问答-打造自己的个人品牌,你也可以
│   │   │   ├─开篇词-卓越的团队,必然有一个卓越的领导者
│   │   │   ├─新春特辑1-卓越CTO必备的能力与素质
│   │   │   ├─新春特辑2-如何成长为优秀的技术管理者?
│   │   │   ├─新春特辑3-如何打造高质效的技术团队?
│   │   │   ├─新春特辑4-如何打造高效的研发流程与文化?
│   │   │   ├─新春特辑5-如何做好人才的选育用留?
│   │   │   ├─温故而知新-一键直达,六大文章主题索引
│   │   │   ├─第100讲-徐裕键:团队文化建设,保持创业公司的战斗力
│   │   │   ├─第101讲-刘俊强:领导力提升指南之培养积极的态度
│   │   │   ├─第102讲-姚从磊:巧用AARRR模型,吸引优秀技术人才(一)
│   │   │   ├─第103讲-姚从磊:巧用AARRR模型,吸引优秀技术人才(二)
│   │   │   ├─第104讲-姚从磊:巧用AARRR模型,吸引优秀技术人才(三)
│   │   │   ├─第105讲-姚从磊:巧用AARRR模型,吸引优秀技术人才(四)
│   │   │   ├─第106讲-程军:技术人的「知行合一」(一)
│   │   │   ├─第106讲-程军:技术人的「知行合一」(一)
│   │   │   ├─第107讲-刘俊强:消除压力的七种方法
│   │   │   ├─第108讲-谢呈:技术高手转身创业的坑和坡
│   │   │   ├─第108讲-谢呈:技术高手转身创业的坑和坡
│   │   │   ├─第109讲-谢呈:关于垂直互联网创业的一些经验之谈
│   │   │   ├─第10讲-创业公司CTO的认知升级
│   │   │   ├─第110讲-成敏:创业公司为什么会技术文化产品缺失
│   │   │   ├─第111讲-蔡锐涛:从0到1再到100,创业不同阶段的技术管理思考
│   │   │   ├─第112讲-刘俊强:必知绩效管理知识之绩效管理循环
│   │   │   ├─第113讲-程军:技术人的「知行合一」(二)
│   │   │   ├─第114讲-成敏:谈谈不同阶段技术公司的特点
│   │   │   ├─第115讲-成敏:打造优秀团队与文化的三个推手
│   │   │   ├─第116讲-刘俊强:必知绩效管理知识之绩效目标的制定
│   │   │   ├─第117讲-程军:技术人的「知行合一」(三)
│   │   │   ├─第118讲-吴铭:成本评估是技术leader的关键素质
│   │   │   ├─第119讲-汤力嘉:CTO如何进行产品决策(一)
│   │   │   ├─第11讲-最合适的技术才是最有价值的技术
│   │   │   ├─第120讲-刘俊强:必知绩效管理知识之绩效数据收集(上)
│   │   │   ├─第121讲-刘俊强:必知绩效管理知识之绩效数据收集(下)
│   │   │   ├─第122讲-黄伟坚:创业中那些永远回避不了的问题
│   │   │   ├─第123讲-黄伟坚:用系统性思维看待创业
│   │   │   ├─第124讲-刘俊强:必知绩效管理知识之评定绩效
│   │   │   ├─第125讲-洪强宁:从程序员到架构师,从架构师到CTO(一)
│   │   │   ├─第126讲-洪强宁:从程序员到架构师,从架构师到CTO(二)
│   │   │   ├─第127讲-刘俊强:必知绩效管理知识之绩效沟通(一)
│   │   │   ├─第128讲-王坚:年轻人永远是创新的主体
│   │   │   ├─第129讲-刘俊强:必知绩效管理知识之绩效沟通(二)
│   │   │   ├─第12讲-谈谈CTO在商业战略中的定位
│   │   │   ├─第130讲-刘俊强:必知绩效管理知识之绩效沟通(三)
│   │   │   ├─第131讲-汤力嘉:CTO如何在产品方面进行决策(二)
│   │   │   ├─第132讲-徐函秋:转型技术管理者初期的三大挑战(一)
│   │   │   ├─第133讲-徐函秋:转型技术管理者初期的三大挑战(二)
│   │   │   ├─第134讲-刘建国:我各方面做得都很好,就是做不好向上沟通
│   │   │   ├─第135讲-钮博彦:软件研发度量体系建设(一)
│   │   │   ├─第136讲-钮博彦:软件研发度量体系建设(二)
│   │   │   ├─第137讲-成敏:创业者不要成为自己公司产品技术文化的破坏者
│   │   │   ├─第138讲-于艺:以生存为核心,B端产品的定位心法
│   │   │   ├─第139讲-成敏:创业者应该具备的认知与思维方式
│   │   │   ├─第13讲-把脉高效执行的关键要素
│   │   │   ├─第140讲-袁店明:创业产品必须迈过的鸿沟
│   │   │   ├─第141讲-徐毅:五星级软件工程师的高效秘诀(一)
│   │   │   ├─第142讲-徐毅:五星级软件工程师的高效秘诀(二)
│   │   │   ├─第143讲-徐毅:技术Leader应该具备的能力或素质
│   │   │   ├─第144讲-于艺:如何提升自己的能力与动力
│   │   │   ├─第145讲-李列为:技术人员的商业思维
│   │   │   ├─第146讲-刘天胜:打造高效团队,关键在于平衡人、事和时间(一)
│   │   │   ├─第147讲-刘天胜:打造高效团队,关键在于平衡人、事和时间(二)
│   │   │   ├─第148讲-肖德时:创业团队技术领导者必备的十个领导力技能(上)
│   │   │   ├─第149讲-肖德时:创业团队技术领导者必备的十个领导力技能(下)
│   │   │   ├─第14讲-从零开始搭建轻量级研发团队
│   │   │   ├─第150讲-暨家愉:技术人如何快乐的自我成长(上)
│   │   │   ├─第151讲-暨家愉:技术人如何快乐的自我成长(下)
│   │   │   ├─第151讲-暨家愉:技术人如何快乐的自我成长(下)
│   │   │   ├─第152讲-施翔:如何打造7-24高效交付通道(上)
│   │   │   ├─第153讲-施翔:如何打造7-24高效交付通道(下)
│   │   │   ├─第154讲-谢东升:说说技术管理者从外企到民企的挑战
│   │   │   ├─第155讲-王可光:如何搭建初创团队之人才关
│   │   │   ├─第156讲-成敏:技术人转型管理的两大秘诀
│   │   │   ├─第157讲-成敏:技术人才的管理公式
│   │   │   ├─第158讲-胡峰:人到中年:失业与恐惧
│   │   │   ├─第159讲-黄云:技术管理者如何科学的做好向上管理
│   │   │   ├─第15讲-定制高效研发流程
│   │   │   ├─第160讲-胡键:创业公司需要高凝聚力高绩效的技术团队
│   │   │   ├─第161讲-卢亿雷:企业发展的不同阶段,该如何打造高效的研发流程体系
│   │   │   ├─第162讲-王海亮:提升技术团队效率的5个提示(上)
│   │   │   ├─第163讲-王海亮:提升技术团队效率的5个提示(下)
│   │   │   ├─第164讲-陈崇磐:心理成熟度-创业公司识人利器
│   │   │   ├─第165讲-陈崇磐:管事与管人-如何避开创业公司组队陷阱
│   │   │   ├─第166讲-俞圆圆:合格CTO应该做好的5件事(上)
│   │   │   ├─第167讲-俞圆圆:合格CTO应该做好的5件事(下)
│   │   │   ├─第168讲-余加林:从技术人到创业合伙人必备的三个维度的改变
│   │   │   ├─第169讲-高琦:如何给研发打绩效不头疼而又公正?(上)
│   │   │   ├─第16讲-培养中层团队的管理认知
│   │   │   ├─第170讲-高琦:如何给研发打绩效不头疼而又公正?(下)
│   │   │   ├─第171讲-邱良军:如何有效地找到你心仪的人才
│   │   │   ├─第172讲-于人:研发团队人均产能3年提升3
│   │   │   ├─第173讲-于人:研发团队人均产能3年提升3
│   │   │   ├─第174讲-邱良军:打造高效技术团队,你准备好了吗!
│   │   │   ├─第175讲-邱良军:打造高效技术团队的人才招聘攻略
│   │   │   ├─第176讲-胡键:创业公司如何打造高凝聚力高绩效的技术团队:组织篇
│   │   │   ├─第177讲-胡键:创业公司如何打造高凝聚力高绩效的技术团队:工具篇
│   │   │   ├─第178讲-马连浩:用人的关键在于用人所长,而非改人之短
│   │   │   ├─第179讲-张矗:技术管理者必经的几个思维转变
│   │   │   ├─第17讲-团队成长要靠技巧和体系
│   │   │   ├─第180讲-钟忻:成为“温格”—聊聊如何当好CTO
│   │   │   ├─第181讲-姚威:技术团队管理中关于公平的五个核心准则
│   │   │   ├─第182讲-谢文杰:区块链的下一个十年
│   │   │   ├─第183讲-薛文植:技术管理的本质—要做尊重人性的管理
│   │   │   ├─第184讲-狼叔:2019年前端和Node的未来—大前端篇(上)
│   │   │   ├─第185讲-狼叔:2019年前端和Node的未来—大前端篇(下)
│   │   │   ├─第186讲-赵晓光:如何培养团队竞争力(上)
│   │   │   ├─第187讲-赵晓光:如何培养团队竞争力(下)
│   │   │   ├─第188讲-张嵩:从心理学角度看待小中型团队的管理
│   │   │   ├─第189讲-狼叔:2019年前端和Node的未来—Node
│   │   │   ├─第18讲-做到这四点,团队必定飞速成长
│   │   │   ├─第190讲-狼叔:2019年前端和Node的未来—Node
│   │   │   ├─第191讲-肖冰:如何建立高信任度的团队
│   │   │   ├─第192讲-崔俊涛:如何做好技术团队的激励(上)
│   │   │   ├─第193讲-崔俊涛:如何做好技术团队的激励(下)
│   │   │   ├─第194讲-刘俊强:2019年云计算趋势对技术人员的影响
│   │   │   ├─第195讲-吴晖:企业B2B服务打磨的秘诀—ESI
│   │   │   ├─第196讲-邱良军:关于做好技术团队管理的几点思考
│   │   │   ├─第197讲-邱良军:做好研发管理的3个关键
│   │   │   ├─第198讲-徐林:通过快速反馈建立充满信任的技术团队
│   │   │   ├─第199讲-宝玉:怎样平衡软件质量与时间成本范围的关系?
│   │   │   ├─第19讲-将企业打造成一所终身大学
│   │   │   ├─第1讲-你的能力模型决定你的职位
│   │   │   ├─第200讲-邱良军:沟通,沟通,还是沟通(上)
│   │   │   ├─第201讲-邱良军:沟通,沟通,还是沟通(下)
│   │   │   ├─第202讲-陈嘉佳:奈飞文化宣言(上)
│   │   │   ├─第203讲-陈嘉佳:奈飞文化宣言(下)
│   │   │   ├─第204讲-邱良军:从小处着眼,修炼文化价值观
│   │   │   ├─第205讲-邵浩:人工智能新技术如何快速发现及落地(上)
│   │   │   ├─第206讲-邵浩:人工智能新技术如何快速发现及落地(下)
│   │   │   ├─第207讲-许良:科创板来了,我该怎么办?
│   │   │   ├─第208讲-陈阳:科创板投资,未来哪些行业受益最大?
│   │   │   ├─第20讲-论团队管理与共同升级
│   │   │   ├─第20讲-论团队管理与共同升级
│   │   │   ├─第21讲-绩效管理的目标不仅仅是绩效考核
│   │   │   ├─第22讲-验证研发团队价值的绩效考核机制
│   │   │   ├─第23讲-产品技术团队OKR使用法则
│   │   │   ├─第24讲-996、987,程序员加班文化你怎么看?
│   │   │   ├─第25讲-建立有效的员工淘汰机制
│   │   │   ├─第26讲-让细节的“病毒”感染你的团队
│   │   │   ├─第27讲-如何在不同组织文化下推行技术管理
│   │   │   ├─第28讲-业务高速增长期的团队管理:“知轻重、重绸缪、调缓急”
│   │   │   ├─第29讲-被80%的人误解的工程师文化
│   │   │   ├─第2讲-七位CTO纵论技术领导者核心能力
│   │   │   ├─第30讲-关于工程师文化的六个问题
│   │   │   ├─第31讲-五位技术领导者的文化构建实战
│   │   │   ├─第32讲-文化是管理的那只无形之手
│   │   │   ├─第33讲-选对的人,做正确的事情
│   │   │   ├─第34讲-打好技术团队搭建的基础
│   │   │   ├─第35讲-做个合格的技术岗位面试官
│   │   │   ├─第36讲-“高潜力人才”的内部培养
│   │   │   ├─第37讲-技术创业该如何选择赛道
│   │   │   ├─第38讲-CTO要掌握的产品哲学:理性与人性的权衡
│   │   │   ├─第39讲-从客户价值谈技术创新
│   │   │   ├─第3讲-CEO实话实说:我需要这样的CTO
│   │   │   ├─第3讲-CEO实话实说:我需要这样的CTO
│   │   │   ├─第40讲-技术人投身创业公司之前,应当考虑些什么?
│   │   │   ├─第41讲-技术人创业前要问自己的六个问题
│   │   │   ├─第42讲-团队激励之分配好你的奖金
│   │   │   ├─第43讲-通过积分考核提升技术团队的绩效
│   │   │   ├─第44讲-空降技术高管的“择业七计”
│   │   │   ├─第45讲-选好人生下一站——CTO空降上篇
│   │   │   ├─第46讲-走出“至暗时刻”——CTO空降下篇
│   │   │   ├─第46讲-走出“至暗时刻”——CTO空降下篇
│   │   │   ├─第47讲-空降领导者平稳落地要做的四道题(上)
│   │   │   ├─第48讲-空降领导者平稳落地要做的四道题(下)
│   │   │   ├─第49讲-打造高效的研发组织架构:高效研发流程那些事(一)
│   │   │   ├─第4讲-技术领导者不等于技术管理者
│   │   │   ├─第50讲-你的研发流程符合你的组织架构吗?谈高效研发流程那些事(二)
│   │   │   ├─第51讲-聊聊研发流程管理中的那些坑:高效研发流程那些事(三)
│   │   │   ├─第52讲-数据如何驱动研发高效运转?谈高效研发流程那些事(四)
│   │   │   ├─第53讲-如何打造高效且敏捷的组织文化?谈高效研发流程那些亊(五)
│   │   │   ├─第54讲-打造高速运转的迭代机器:现代研发流程体系打造(一)
│   │   │   ├─第55讲-用机器打造迭代机器:现代研发流程体系打造(二)
│   │   │   ├─第56讲-有了敏捷开发,那交付期限去哪儿了?
│   │   │   ├─第56讲-有了敏捷开发,那交付期限去哪儿了?
│   │   │   ├─第57讲-敏捷中的期限之殇,软件业该怎么做?
│   │   │   ├─第58讲-如何打造个人技术品牌?
│   │   │   ├─第59讲-技术演讲,有章可循
│   │   │   ├─第5讲-CTO的三重境界
│   │   │   ├─第60讲-正确对待技术演讲中的失误
│   │   │   ├─第61讲-刘俊强:技术最高决策者应该关注技术细节吗
│   │   │   ├─第62讲-张溪梦:技术领袖需要具备的商业价值思维
│   │   │   ├─第63讲-未来组织形态带来的领导力挑战
│   │   │   ├─第64讲-如何判断业务价值的高低
│   │   │   ├─第65讲-如何打造高效的分布式团队?
│   │   │   ├─第66讲-如何打造有活力、持续创新的研发团队?
│   │   │   ├─第67讲-如何打造独属自己的工程师文化?
│   │   │   ├─第68讲-如何打造一个自组织团队?
│   │   │   ├─第69讲-茹炳晟:QE团队向工程效能团队转型的实践之路
│   │   │   ├─第6讲-像CEO一样思考
│   │   │   ├─第70讲-技术、产品、管理的不同视角
│   │   │   ├─第71讲-什么样的人适合考虑管理角色
│   │   │   ├─第72讲-创业公司如何招到合适的人才
│   │   │   ├─第73讲-用数据来分析管理员工
│   │   │   ├─第74讲-为什么给了高工资,依然留不住核心员工?
│   │   │   ├─第75讲-刘俊强:一本正经教你如何毁掉一场技术演讲
│   │   │   ├─第76讲-内部技术会议的价值
│   │   │   ├─第79讲-程军:从0到1打造高效技术团队的方法论
│   │   │   ├─第7讲-要制定技术战略,先看清局面
│   │   │   ├─第80讲-技术Leader的持续成长
│   │   │   ├─第81讲-游舒帆:一流团队必备的商业思维能力
│   │   │   ├─第82讲-游舒帆:数据力,透过数据掌握公司经营大小事
│   │   │   ├─第83讲-游舒帆:运营力,让用户出现你期待的行为
│   │   │   ├─第84讲-游舒帆:策略力,让目标与行动具备高度一致性
│   │   │   ├─第85讲-游舒帆:敏捷力,拥抱不确定性,与VUCA共舞
│   │   │   ├─第86讲-刘俊强:管理者必备的高效会议指南(上)
│   │   │   ├─第87讲-刘俊强:管理者必备的高效会议指南(下)
│   │   │   ├─第88讲-刘俊强:做好一对一沟通的关键要素(上)
│   │   │   ├─第89讲-刘俊强:做好一对一沟通的关键要素(下)
│   │   │   ├─第8讲-技术领导力就是“成事”的能力
│   │   │   ├─第90讲-程军:打造高效技术团队之招人
│   │   │   ├─第91讲-程军:打造高效技术团队之做事
│   │   │   ├─第92讲-成敏:技术负责人如何做优先级决策
│   │   │   ├─第93讲-兰军:团队研发效率低下的要因分析
│   │   │   ├─第94讲-兰军:提升产品团队研发效率的实践(上)
│   │   │   ├─第95讲-兰军:提升产品团队研发效率的实践(下)
│   │   │   ├─第96讲-阿禅:工程师转型产品经理可能踩到的“坑”
│   │   │   ├─第97讲-阿禅:工程师转型产品经理的必备思维
│   │   │   ├─第98讲-徐裕键:业务高速增长过程中的团队迭代
│   │   │   ├─第99讲-徐裕键:业务高速增长过程中的技术演进
│   │   │   ├─第9讲-CTO是商业思维和技术思维交汇的那个点
│   │   │   ├─结束篇-即使远隔千山万水,也要乘风与你同往
│   │   │   └─结束篇-即使远隔千山万水,也要乘风与你同往
│   │   ├─011-硅谷产品实战36讲
│   │   │   ├─01-什么是优秀的产品经理?
│   │   │   ├─011-硅谷产品实战36讲
│   │   │   ├─02-硅谷的产品经理是什么样子的?
│   │   │   ├─02-硅谷的产品经理是什么样子的?
│   │   │   ├─03-科技巨头和初创公司的产品经理有什么不同?
│   │   │   ├─04-产品经理和项目经理有什么区别?
│   │   │   ├─05-硅谷产品经理每天在做什么?
│   │   │   ├─06-硅谷产品经理们都来自什么背景?
│   │   │   ├─07-如何寻找用户需求?
│   │   │   ├─08-目标客户和用户画像
│   │   │   ├─09-手把手教你写用例:优化微信加好友的功能
│   │   │   ├─10-什么是最小化可行产品(MVP)?
│   │   │   ├─10-什么是最小化可行产品(MVP)?
│   │   │   ├─11-案例:产品发布之前出了乱子,如何权衡取舍?
│   │   │   ├─12-制定产品成功指标
│   │   │   ├─13-如何撰写产品需求文档?
│   │   │   ├─14-如何用数据做出产品决定?
│   │   │   ├─15-如何组织有效的会议?
│   │   │   ├─16-如何和工程师有效沟通?
│   │   │   ├─17-如何与设计师有效沟通?
│   │   │   ├─18-如何搞定A-B测试?
│   │   │   ├─19-增长黑客的核心公式
│   │   │   ├─20-想要增长,你的团队需要高效的工作流
│   │   │   ├─21-换个按钮颜色,就能增长百万用户?
│   │   │   ├─22-硅谷高管的UIE(Understand,Identify,Execute)增长论
│   │   │   ├─23-增长的核心在于减少用户阻力
│   │   │   ├─24-产品增长的代价,如何权衡取舍?
│   │   │   ├─25-三分靠策略七分靠执行
│   │   │   ├─26-为什么加班很久但是没成果?产品开发流程有问题
│   │   │   ├─27-如何激励和管理比你资深的工程师、设计师?
│   │   │   ├─28-产品经理的晋升秘密
│   │   │   ├─29-你需要一个产品路线图
│   │   │   ├─29-你需要一个产品路线图
│   │   │   ├─30-如何制定产品优先级?
│   │   │   ├─31-好的产品经理和卓越的产品经理
│   │   │   ├─32-产品经理面试考察的是什么?
│   │   │   ├─33-如何提升产品感(productsense)?
│   │   │   ├─34-如何提升产品经理的综合素质?
│   │   │   ├─35-非计算机专业也能做产品经理?
│   │   │   ├─36-模拟一场硅谷的产品经理面试
│   │   │   ├─尾声-每个世界级的产品都有其使命
│   │   │   ├─开篇词-打造千万用户的世界级产品
│   │   │   ├─新书首发-《硅谷产品:36讲直通世界级产品经理》
│   │   │   └─结课测试-关于产品经理的这些知识点,你真的都掌握了吗?
│   │   ├─012-从0开始学架构
│   │   │   ├─01-架构到底是指什么?
│   │   │   ├─012-从0开始学架构
│   │   │   ├─02-架构设计的历史背景
│   │   │   ├─03-架构设计的目的
│   │   │   ├─04-复杂度来源:高性能
│   │   │   ├─05-复杂度来源:高可用
│   │   │   ├─06-复杂度来源:可扩展性
│   │   │   ├─07-复杂度来源:低成本、安全、规模
│   │   │   ├─08-架构设计三原则
│   │   │   ├─08-架构设计三原则
│   │   │   ├─09-架构设计原则案例
│   │   │   ├─10-架构设计流程:识别复杂度
│   │   │   ├─11-架构设计流程:设计备选方案
│   │   │   ├─11-架构设计流程:设计备选方案
│   │   │   ├─12-架构设计流程:评估和选择备选方案
│   │   │   ├─13-架构设计流程:详细方案设计
│   │   │   ├─14-高性能数据库集群:读写分离
│   │   │   ├─15-高性能数据库集群:分库分表
│   │   │   ├─16-高性能NoSQL
│   │   │   ├─17-高性能缓存架构
│   │   │   ├─18-单服务器高性能模式:PPC与TPC
│   │   │   ├─19-单服务器高性能模式:Reactor与Proactor
│   │   │   ├─20-高性能负载均衡:分类及架构
│   │   │   ├─21-高性能负载均衡:算法
│   │   │   ├─22-想成为架构师,你必须知道CAP理论
│   │   │   ├─23-想成为架构师,你必须掌握的CAP细节
│   │   │   ├─24-FMEA方法,排除架构可用性隐患的利器
│   │   │   ├─25-高可用存储架构:双机架构
│   │   │   ├─26-高可用存储架构:集群和分区
│   │   │   ├─27-如何设计计算高可用架构?
│   │   │   ├─28-业务高可用的保障:异地多活架构
│   │   │   ├─29-异地多活设计4大技巧
│   │   │   ├─30-异地多活设计4步走
│   │   │   ├─31-如何应对接口级的故障?
│   │   │   ├─32-可扩展架构的基本思想和模式
│   │   │   ├─33-传统的可扩展架构模式:分层架构和SOA
│   │   │   ├─33-传统的可扩展架构模式:分层架构和SOA
│   │   │   ├─34-深入理解微服务架构:银弹or焦油坑?
│   │   │   ├─35-微服务架构最佳实践-方法篇
│   │   │   ├─35-微服务架构最佳实践-方法篇
│   │   │   ├─36-微服务架构最佳实践-基础设施篇
│   │   │   ├─37-微内核架构详解
│   │   │   ├─38-架构师应该如何判断技术演进的方向?
│   │   │   ├─39-互联网技术演进的模式
│   │   │   ├─40-互联网架构模板:“存储层”技术
│   │   │   ├─41-互联网架构模板:“开发层”和“服务层”技术
│   │   │   ├─42-互联网架构模板:“网络层”技术
│   │   │   ├─43-互联网架构模板:“用户层”和“业务层”技术
│   │   │   ├─44-互联网架构模板:“平台”技术
│   │   │   ├─45-架构重构内功心法第一式:有的放矢
│   │   │   ├─46-架构重构内功心法第二式:合纵连横
│   │   │   ├─46-架构重构内功心法第二式:合纵连横
│   │   │   ├─47-架构重构内功心法第三式:运筹帷幄
│   │   │   ├─48-再谈开源项目:如何选择、使用以及二次开发?
│   │   │   ├─49-谈谈App架构的演进
│   │   │   ├─50-架构实战:架构设计文档模板
│   │   │   ├─51-如何画出优秀的软件系统架构图?
│   │   │   ├─加餐|业务架构实战营开营了
│   │   │   ├─加餐|单服务器高性能模式性能对比
│   │   │   ├─加餐|扒一扒中台皇帝的外衣
│   │   │   ├─如何高效地学习开源项目-“华仔,放学别走!”第3期
│   │   │   ├─开篇词-照着做,你也能成为架构师!
│   │   │   ├─新书首发-《从零开始学架构》
│   │   │   ├─架构专栏特别放送-“华仔,放学别走!”第1期
│   │   │   ├─架构专栏特别放送-“华仔,放学别走!”第2期
│   │   │   ├─架构师必读书单-“华仔,放学别走!”第5期
│   │   │   ├─架构师成长之路-“华仔,放学别走!”第4期
│   │   │   ├─架构师成长之路-“华仔,放学别走!”第4期
│   │   │   ├─第二季回归-照着做,你也能顺利晋升!
│   │   │   ├─结束语-坚持,成就你的技术梦想
│   │   │   ├─结课测试|这些架构技能你都掌握了吗?
│   │   │   ├─致「从0开始学架构」专栏订阅用户
│   │   │   └─致「从0开始学架构」专栏订阅用户
│   │   ├─013-Java核心技术面试精讲
│   │   │   ├─013-Java核心技术面试精讲
│   │   │   ├─周末福利-一份Java工程师必读书单
│   │   │   ├─周末福利-谈谈我对Java学习和面试的看法
│   │   │   ├─周末福利-谈谈我对Java学习和面试的看法
│   │   │   ├─开篇词-以面试题为切入点,有效提升你的Java内功
│   │   │   ├─第10讲-如何保证集合是线程安全的-ConcurrentHashMap如何实现高效地线程安全?
│   │   │   ├─第11讲-Java提供了哪些IO方式?NIO如何实现多路复用?(1)
│   │   │   ├─第11讲-Java提供了哪些IO方式?NIO如何实现多路复用?
│   │   │   ├─第12讲-Java有几种文件拷贝方式?哪一种最高效?
│   │   │   ├─第12讲-Java有几种文件拷贝方式?哪一种最高效?
│   │   │   ├─第13讲-谈谈接口和抽象类有什么区别?
│   │   │   ├─第14讲-谈谈你知道的设计模式?
│   │   │   ├─第15讲-synchronized和ReentrantLock有什么区别呢?
│   │   │   ├─第16讲-synchronized底层如何实现?什么是锁的升级、降级?
│   │   │   ├─第16讲-synchronized底层如何实现?什么是锁的升级、降级?
│   │   │   ├─第17讲-一个线程两次调用start()方法会出现什么情况?
│   │   │   ├─第18讲-什么情况下Java程序会产生死锁?如何定位、修复?
│   │   │   ├─第19讲-Java并发包提供了哪些并发工具类?
│   │   │   ├─第1讲-谈谈你对Java平台的理解?
│   │   │   ├─第20讲-并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
│   │   │   ├─第20讲-并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
│   │   │   ├─第21讲-Java并发类库提供的线程池有哪几种?分别有什么特点?
│   │   │   ├─第22讲-AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
│   │   │   ├─第23讲-请介绍类加载过程,什么是双亲委派模型?
│   │   │   ├─第24讲-有哪些方法可以在运行时动态生成一个Java类?
│   │   │   ├─第25讲-谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError
│   │   │   ├─第26讲-如何监控和诊断JVM堆内和堆外内存使用?
│   │   │   ├─第27讲-Java常见的垃圾收集器有哪些?
│   │   │   ├─第28讲-谈谈你的GC调优思路
│   │   │   ├─第29讲-Java内存模型中的happen-before是什么?
│   │   │   ├─第2讲-Exception和Error有什么区别?
│   │   │   ├─第30讲-Java程序运行在Docker等容器环境有哪些新问题?
│   │   │   ├─第31讲-你了解Java应用开发中的注入攻击吗?
│   │   │   ├─第32讲-如何写出安全的Java代码?
│   │   │   ├─第33讲-后台服务出现明显“变慢”,谈谈你的诊断思路?
│   │   │   ├─第34讲-有人说“Lambda能让Java程序慢30倍”,你怎么看?
│   │   │   ├─第35讲-JVM优化Java代码时都做了什么?
│   │   │   ├─第36讲-谈谈MySQL支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?
│   │   │   ├─第37讲-谈谈SpringBean的生命周期和作用域?
│   │   │   ├─第38讲-对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?
│   │   │   ├─第39讲-谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
│   │   │   ├─第3讲-谈谈final、finally、finalize有什么不同?
│   │   │   ├─第4讲-强引用、软引用、弱引用、幻象引用有什么区别?
│   │   │   ├─第5讲-String、StringBuffer、StringBuilder有什么区别?
│   │   │   ├─第6讲-动态代理是基于什么原理?
│   │   │   ├─第7讲-int和Integer有什么区别?
│   │   │   ├─第8讲-对比Vector、ArrayList、LinkedList有何区别?
│   │   │   ├─第9讲-对比Hashtable、HashMap、TreeMap有什么不同?
│   │   │   ├─第9讲-对比Hashtable、HashMap、TreeMap有什么不同?
│   │   │   ├─结束语-技术没有终点
│   │   │   └─结课测试-Java核心技术的这些知识,你真的掌握了吗?
│   │   ├─014-趣谈网络协议
│   │   │   ├─014-趣谈网络协议
│   │   │   ├─加餐1-创作故事:我是如何创作“趣谈网络协议”专栏的?
│   │   │   ├─加餐2-“趣谈网络协议”专栏食用指南
│   │   │   ├─协议专栏特别福利-答疑解惑第一期
│   │   │   ├─协议专栏特别福利-答疑解惑第三期
│   │   │   ├─协议专栏特别福利-答疑解惑第二期
│   │   │   ├─协议专栏特别福利-答疑解惑第五期
│   │   │   ├─协议专栏特别福利-答疑解惑第四期
│   │   │   ├─开篇词-想成为技术牛人?先搞定网络协议!
│   │   │   ├─第10讲-UDP协议:因性善而简单,难免碰到“城会玩”
│   │   │   ├─第11讲-TCP协议(上):因性恶而复杂,先恶后善反轻松
│   │   │   ├─第12讲-TCP协议(下):西行必定多妖孽,恒心智慧消磨难
│   │   │   ├─第13讲-套接字Socket:Talkischeap,showmethecode
│   │   │   ├─第14讲-HTTP协议:看个新闻原来这么麻烦
│   │   │   ├─第15讲-HTTPS协议:点外卖的过程原来这么复杂
│   │   │   ├─第16讲-流媒体协议:如何在直播里看到美女帅哥?
│   │   │   ├─第16讲-流媒体协议:如何在直播里看到美女帅哥?
│   │   │   ├─第17讲-P2P协议:我下小电影,99%急死你
│   │   │   ├─第18讲-DNS协议:网络世界的地址簿
│   │   │   ├─第19讲-HttpDNS:网络世界的地址簿也会指错路
│   │   │   ├─第1讲-为什么要学习网络协议?
│   │   │   ├─第20讲-CDN:你去小卖部取过快递么?
│   │   │   ├─第20讲-CDN:你去小卖部取过快递么?
│   │   │   ├─第21讲-数据中心:我是开发商,自己拿地盖别墅
│   │   │   ├─第22讲-VPN:朝中有人好做官
│   │   │   ├─第23讲-移动网络:去巴塞罗那,手机也上不了脸书
│   │   │   ├─第23讲-移动网络:去巴塞罗那,手机也上不了脸书
│   │   │   ├─第24讲-云中网络:自己拿地成本高,购买公寓更灵活
│   │   │   ├─第25讲-软件定义网络:共享基础设施的小区物业管理办法
│   │   │   ├─第26讲-云中的网络安全:虽然不是土豪,也需要基本安全和保障
│   │   │   ├─第27讲-云中的网络QoS:邻居疯狂下电影,我该怎么办?
│   │   │   ├─第28讲-云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
│   │   │   ├─第29讲-容器网络:来去自由的日子,不买公寓去合租
│   │   │   ├─第2季回归-这次我们来“趣谈Linux操作系统”
│   │   │   ├─第2讲-网络分层的真实含义是什么?
│   │   │   ├─第30讲-容器网络之Flannel:每人一亩三分地
│   │   │   ├─第31讲-容器网络之Calico:为高效说出善意的谎言
│   │   │   ├─第32讲-RPC协议综述:远在天边,近在眼前
│   │   │   ├─第33讲-基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
│   │   │   ├─第34讲-基于JSON的RESTful接口协议:我不关心过程,请给我结果
│   │   │   ├─第35讲-二进制类RPC协议:还是叫NBA吧,总说全称多费劲
│   │   │   ├─第36讲-跨语言类RPC协议:交流之前,双方先来个专业术语表
│   │   │   ├─第37讲-知识串讲:用双十一的故事串起碎片的网络协议(上)
│   │   │   ├─第38讲-知识串讲:用双十一的故事串起碎片的网络协议(中)
│   │   │   ├─第39讲-知识串讲:用双十一的故事串起碎片的网络协议(下)
│   │   │   ├─第3讲-ifconfig:最熟悉又陌生的命令行
│   │   │   ├─第40讲-搭建一个网络实验环境:授人以鱼不如授人以渔
│   │   │   ├─第4讲-DHCP与PXE:IP是怎么来的,又是怎么没的?
│   │   │   ├─第5讲-从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
│   │   │   ├─第6讲-交换机与VLAN:办公室太复杂,我要回学校
│   │   │   ├─第7讲-ICMP与ping:投石问路的侦察兵
│   │   │   ├─第7讲-ICMP与ping:投石问路的侦察兵
│   │   │   ├─第8讲-世界这么大,我想出网关:欧洲十国游与玄奘西行
│   │   │   ├─第9讲-路由协议:西出网关无故人,敢问路在何方
│   │   │   ├─结束语-放弃完美主义,执行力就是限时限量认真完成
│   │   │   └─结课测试-这些网络协议你都掌握了吗?
│   │   ├─015-从0开始学游戏开发
│   │   │   ├─015-从0开始学游戏开发
│   │   │   ├─复习课-带你梳理客户端开发的三个重点
│   │   │   ├─开篇词-跟我学,你也可以开发一款游戏!
│   │   │   ├─第10讲-如何载入“飞机”和“敌人”?
│   │   │   ├─第11讲-如何设置图像的前后遮挡?
│   │   │   ├─第12讲-如何设置精灵的变形、放大和缩小?
│   │   │   ├─第13讲-如何设置淡入淡出和碰撞检测?
│   │   │   ├─第14讲-如何制作游戏资源包和保存机制?
│   │   │   ├─第15讲-如何载入背景音乐和音效?
│   │   │   ├─第16讲-如何在游戏中载入UI和菜单?
│   │   │   ├─第17讲-如何用鼠标和键盘来操作游戏?
│   │   │   ├─第18讲-如何判断客户端的网络连接?
│   │   │   ├─第19讲-如何嵌入脚本语言?
│   │   │   ├─第1讲-游戏开发需要了解哪些背景知识?
│   │   │   ├─第20讲-脚本语言在游戏开发中有哪些应用?
│   │   │   ├─第20讲-脚本语言在游戏开发中有哪些应用?
│   │   │   ├─第21讲-如何使用脚本语言编写周边工具?
│   │   │   ├─第22讲-如何选择合适的开发语言?
│   │   │   ├─第23讲-如何定制合适的开发协议?
│   │   │   ├─第24讲-不可忽视的多线程及并发问题
│   │   │   ├─第25讲-如何判断心跳包是否离线?
│   │   │   ├─第26讲-如何用网关服务器进行负载均衡?
│   │   │   ├─第27讲-如何制作游戏内容保存和缓存处理?
│   │   │   ├─第28讲-热点剖析(一):HTML5技术是如何取代Flash的?
│   │   │   ├─第29讲-热点剖析(二):如何选择一款HTML5引擎?
│   │   │   ├─第2讲-2D游戏和3D游戏有什么区别?
│   │   │   ├─第30讲-热点剖析(三):试试看,你也可以编写一款HTML5小游戏!
│   │   │   ├─第31讲-热点剖析(四):安卓端和苹果端游戏开发有什么区别?
│   │   │   ├─第32讲-热点剖析(五):如何选择移动端的游戏引擎?
│   │   │   ├─第33讲-热点剖析(六):AR和人工智能在游戏领域有哪些应用?
│   │   │   ├─第34讲-热点剖析(七):谈谈微信小游戏的成功点
│   │   │   ├─第35讲-热点剖析(八):谈谈移动游戏的未来发展
│   │   │   ├─第36讲-热点剖析(九):谈谈独立开发者的未来发展
│   │   │   ├─第3讲-游戏的发动机:游戏引擎
│   │   │   ├─第4讲-底层绘图接口的妙用
│   │   │   ├─第4讲-底层绘图接口的妙用
│   │   │   ├─第5讲-构建游戏场景的武器:地图编辑器
│   │   │   ├─第6讲-从0开始整理开发流程
│   │   │   ├─第7讲-如何建立一个Windows窗体?
│   │   │   ├─第8讲-如何区分图形和图像?
│   │   │   ├─第9讲-如何绘制游戏背景?
│   │   │   ├─第9讲-如何绘制游戏背景?
│   │   │   ├─结束语-做游戏的过程就像是在雕琢一件艺术品
│   │   │   ├─结课测试|“从0开始学游戏开发”100分试卷等你来挑战?
│   │   │   ├─课后阅读-游戏开发工程师学习路径(上)
│   │   │   ├─课后阅读-游戏开发工程师学习路径(上)
│   │   │   ├─课后阅读-游戏开发工程师学习路径(下)
│   │   │   └─课后阅读-游戏开发工程师学习路径(下)
│   │   ├─016-机器学习40讲
│   │   │   ├─01-频率视角下的机器学习
│   │   │   ├─016-机器学习40讲
│   │   │   ├─02-贝叶斯视角下的机器学习
│   │   │   ├─03-学什么与怎么学
│   │   │   ├─04-计算学习理论
│   │   │   ├─05-模型的分类方式
│   │   │   ├─06-模型的设计准则
│   │   │   ├─07-模型的验证方法
│   │   │   ├─08-模型的评估指标
│   │   │   ├─09-实验设计
│   │   │   ├─10-特征预处理
│   │   │   ├─11-基础线性回归:一元与多元
│   │   │   ├─12-正则化处理:收缩方法与边际化
│   │   │   ├─13-线性降维:主成分的使用
│   │   │   ├─14-非线性降维:流形学习
│   │   │   ├─15-从回归到分类:联系函数与降维
│   │   │   ├─16-建模非正态分布:广义线性模型
│   │   │   ├─17-几何角度看分类:支持向量机
│   │   │   ├─18-从全局到局部:核技巧
│   │   │   ├─19-非参数化的局部模型:K近邻
│   │   │   ├─20-基于距离的学习:聚类与度量学习
│   │   │   ├─21-基函数扩展:属性的非线性化
│   │   │   ├─22-自适应的基函数:神经网络
│   │   │   ├─23-层次化的神经网络:深度学习
│   │   │   ├─24-深度编解码:表示学习
│   │   │   ├─25-基于特征的区域划分:树模型
│   │   │   ├─26-集成化处理:Boosting与Bagging
│   │   │   ├─27-万能模型:梯度提升与随机森林
│   │   │   ├─28-最简单的概率图:朴素贝叶斯
│   │   │   ├─29-有向图模型:贝叶斯网络
│   │   │   ├─30-无向图模型:马尔可夫随机场
│   │   │   ├─30-无向图模型:马尔可夫随机场
│   │   │   ├─31-建模连续分布:高斯网络
│   │   │   ├─32-从有限到无限:高斯过程
│   │   │   ├─33-序列化建模:隐马尔可夫模型
│   │   │   ├─34-连续序列化模型:线性动态系统
│   │   │   ├─35-精确推断:变量消除及其拓展
│   │   │   ├─35-精确推断:变量消除及其拓展
│   │   │   ├─36-确定近似推断:变分贝叶斯
│   │   │   ├─37-随机近似推断:MCMC
│   │   │   ├─38-完备数据下的参数学习:有向图与无向图
│   │   │   ├─39-隐变量下的参数学习:EM方法与混合模型
│   │   │   ├─40-结构学习:基于约束与基于评分
│   │   │   ├─如何成为机器学习工程师?
│   │   │   ├─开篇词-打通修炼机器学习的任督二脉
│   │   │   ├─总结课-机器学习的模型体系
│   │   │   ├─总结课-贝叶斯学习的模型体系
│   │   │   ├─结课-终有一天,你将为今天的付出骄傲
│   │   │   └─结课测试-这些机器学习知识你都掌握了吗?
│   │   ├─017-软件测试52讲
│   │   │   ├─01-你真的懂测试吗?从“用户登录”测试谈起
│   │   │   ├─017-软件测试52讲
│   │   │   ├─02-如何设计一个“好的”测试用例?
│   │   │   ├─03-什么是单元测试?如何做好单元测试?
│   │   │   ├─04-为什么要做自动化测试?什么样的项目适合做自动化测试?
│   │   │   ├─05-你知道软件开发各阶段都有哪些自动化测试技术吗?
│   │   │   ├─06-你真的懂测试覆盖率吗?
│   │   │   ├─07-如何高效填写软件缺陷报告?
│   │   │   ├─08-以终为始,如何才能做好测试计划?
│   │   │   ├─09-软件测试工程师的核心竞争力是什么?
│   │   │   ├─10-软件测试工程师需要掌握的非测试知识有哪些?
│   │   │   ├─11-互联网产品的测试策略应该如何设计?
│   │   │   ├─12-从0到1:你的第一个GUI自动化测试
│   │   │   ├─13-效率为王:脚本与数据的解耦+PageObject模型
│   │   │   ├─14-更接近业务的抽象:让自动化测试脚本更好地描述业务
│   │   │   ├─15-过不了的坎:聊聊GUI自动化过程中的测试数据
│   │   │   ├─16-脑洞大开:GUI测试还能这么玩(PageCodeGen+DataGen+Headless)?
│   │   │   ├─17-精益求精:聊聊提高GUI测试稳定性的关键技术
│   │   │   ├─18-眼前一亮:带你玩转GUI自动化的测试报告
│   │   │   ├─19-真实的战场:如何在大型项目中设计GUI自动化测试策略
│   │   │   ├─20-与时俱进:浅谈移动应用测试方法与思路
│   │   │   ├─21-移动测试神器:带你玩转Appium
│   │   │   ├─22-从0到1:API测试怎么做?常用API测试工具简介
│   │   │   ├─23-知其然知其所以然:聊聊API自动化测试框架的前世今生
│   │   │   ├─24-紧跟时代步伐:微服务模式下API测试要怎么做?
│   │   │   ├─25-不破不立:掌握代码级测试的基本理念与方法
│   │   │   ├─26-深入浅出之静态测试方法
│   │   │   ├─27-深入浅出之动态测试方法
│   │   │   ├─28-带你一起解读不同视角的软件性能与性能指标
│   │   │   ├─29-聊聊性能测试的基本方法与应用领域
│   │   │   ├─30-工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介
│   │   │   ├─31-工欲善其事必先利其器:前端性能测试工具原理与行业常用工具简介
│   │   │   ├─32-无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(上)
│   │   │   ├─33-无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(下)
│   │   │   ├─34-站在巨人的肩膀:企业级实际性能测试案例与经验分享
│   │   │   ├─35-如何准备测试数据?
│   │   │   ├─36-浅谈测试数据的痛点
│   │   │   ├─37-测试数据的“银弹”-统一测试数据平台(上)
│   │   │   ├─38-测试数据的“银弹”-统一测试数据平台(下)
│   │   │   ├─39-从小作坊到工厂:什么是SeleniumGrid?如何搭建SeleniumGrid?
│   │   │   ├─40-从小工到专家:聊聊测试执行环境的架构设计(上)
│   │   │   ├─41-从小工到专家:聊聊测试执行环境的架构设计(下)
│   │   │   ├─42-实战:大型全球化电商的测试基础架构设计
│   │   │   ├─43-发挥人的潜能:探索式测试
│   │   │   ├─44-测试先行:测试驱动开发(TDD)
│   │   │   ├─45-打蛇打七寸:精准测试
│   │   │   ├─46-安全第一:渗透测试
│   │   │   ├─47-用机器设计测试用例:基于模型的测试
│   │   │   ├─47-用机器设计测试用例:基于模型的测试
│   │   │   ├─48-优秀的测试工程师为什么要懂大型网站的架构设计?
│   │   │   ├─49-深入浅出网站高性能架构设计
│   │   │   ├─50-深入浅出网站高可用架构设计
│   │   │   ├─51-深入浅出网站伸缩性架构设计
│   │   │   ├─52-深入浅出网站可扩展性架构设计
│   │   │   ├─开篇词-从“小工”到“专家”,我的软件测试修炼之道
│   │   │   ├─测一测-这些软件测试题目,你都掌握了吗?
│   │   │   ├─测试专栏特别放送-浅谈全链路压测
│   │   │   ├─测试专栏特别放送-答疑解惑第一期
│   │   │   ├─测试专栏特别放送-答疑解惑第七期
│   │   │   ├─测试专栏特别放送-答疑解惑第三期
│   │   │   ├─测试专栏特别放送-答疑解惑第二期
│   │   │   ├─测试专栏特别放送-答疑解惑第五期
│   │   │   ├─测试专栏特别放送-答疑解惑第六期
│   │   │   ├─测试专栏特别放送-答疑解惑第四期
│   │   │   ├─结束语-不是结束,而是开始
│   │   │   └─结束语-不是结束,而是开始
│   │   ├─018-持续交付36讲
│   │   │   ├─01-持续交付到底有什么价值?
│   │   │   ├─018-持续交付36讲
│   │   │   ├─02-影响持续交付的因素有哪些?
│   │   │   ├─03-持续交付和DevOps是一对好基友
│   │   │   ├─04-一切的源头,代码分支策略的选择
│   │   │   ├─05-手把手教你依赖管理
│   │   │   ├─06-代码回滚,你真的理解吗?
│   │   │   ├─06-代码回滚,你真的理解吗?
│   │   │   ├─07-“两个披萨”团队的代码管理实际案例
│   │   │   ├─08-测试环境要多少?从现实需求说起
│   │   │   ├─09-测试环境要多少?从成本与效率说起
│   │   │   ├─10-让环境自己说话,论环境自描述的重要性
│   │   │   ├─11-“配置”是把双刃剑,带你了解各种配置方法
│   │   │   ├─12-极限挑战,如何做到分钟级搭建环境?
│   │   │   ├─13-容器技术真的是环境管理的救星吗?
│   │   │   ├─14-如何做到构建的提速,再提速!
│   │   │   ├─15-构建检测,无规矩不成方圆
│   │   │   ├─16-构建资源的弹性伸缩
│   │   │   ├─17-容器镜像构建的那些事儿
│   │   │   ├─18-如何做好容器镜像的个性化及合规检查?
│   │   │   ├─19-发布是持续交付的最后一公里
│   │   │   ├─20-Immutable!任何变更都需要发布
│   │   │   ├─21-发布系统一定要注意用户体验
│   │   │   ├─22-发布系统的核心架构和功能设计
│   │   │   ├─23-业务及系统架构对发布的影响
│   │   │   ├─24-如何利用监控保障发布质量?
│   │   │   ├─25-代码静态检查实践
│   │   │   ├─26-越来越重要的破坏性测试
│   │   │   ├─27-利用Mock与回放技术助力自动化回归
│   │   │   ├─28-持续交付为什么要平台化设计?
│   │   │   ├─29-计算资源也是交付的内容
│   │   │   ├─30-持续交付中有哪些宝贵数据?
│   │   │   ├─31-了解移动App的持续交付生命周期
│   │   │   ├─32-细谈移动APP的交付流水线(pipeline)
│   │   │   ├─33-进阶,如何进一步提升移动APP的交付效率?
│   │   │   ├─34-快速构建持续交付系统(一):需求分析
│   │   │   ├─35-快速构建持续交付系统(二):GitLab解决代码管理问题
│   │   │   ├─36-快速构建持续交付系统(三):Jenkins解决集成打包问题
│   │   │   ├─37-快速构建持续交付系统(四):Ansible解决自动部署问题
│   │   │   ├─开篇词-量身定制你的持续交付体系
│   │   │   ├─持续交付专栏特别放送-答疑解惑
│   │   │   ├─持续交付专栏特别放送-高效学习指南
│   │   │   ├─结束语-越痛苦的事,越要经常做
│   │   │   └─结课测试|这些持续交付的相关知识,你都掌握了吗?
│   │   ├─019-深入拆解Java虚拟机
│   │   │   ├─01-Java代码是怎么运行的?
│   │   │   ├─019-深入拆解Java虚拟机
│   │   │   ├─02-Java的基本类型
│   │   │   ├─03-Java虚拟机是如何加载Java类的
│   │   │   ├─04-JVM是如何执行方法调用的?(上)
│   │   │   ├─05-JVM是如何执行方法调用的?(下)
│   │   │   ├─06-JVM是如何处理异常的?
│   │   │   ├─07-JVM是如何实现反射的?
│   │   │   ├─08-JVM是怎么实现invokedynamic的?(上)
│   │   │   ├─09-JVM是怎么实现invokedynamic的?(下)
│   │   │   ├─10-Java对象的内存布局
│   │   │   ├─11-垃圾回收(上)
│   │   │   ├─12-垃圾回收(下)
│   │   │   ├─13-Java内存模型
│   │   │   ├─14-Java虚拟机是怎么实现synchronized的?
│   │   │   ├─15-Java语法糖与Java编译器
│   │   │   ├─16-即时编译(上)
│   │   │   ├─17-即时编译(下)
│   │   │   ├─18-即时编译器的中间表达形式
│   │   │   ├─19-Java字节码(基础篇)
│   │   │   ├─20-方法内联(上)
│   │   │   ├─21-方法内联(下)
│   │   │   ├─22-HotSpot虚拟机的intrinsic
│   │   │   ├─23-逃逸分析
│   │   │   ├─24-字段访问相关优化
│   │   │   ├─25-循环优化
│   │   │   ├─26-向量化
│   │   │   ├─27-注解处理器
│   │   │   ├─28-基准测试框架JMH(上)
│   │   │   ├─29-基准测试框架JMH(下)
│   │   │   ├─30-Java虚拟机的监控及诊断工具(命令行篇)
│   │   │   ├─31-Java虚拟机的监控及诊断工具(GUI篇)
│   │   │   ├─32-JNI的运行机制
│   │   │   ├─33-JavaAgent与字节码注入
│   │   │   ├─34-Graal:用Java编译Java
│   │   │   ├─35-Truffle:语言实现框架
│   │   │   ├─36-SubstrateVM:AOT编译框架
│   │   │   ├─【工具篇】常用工具介绍
│   │   │   ├─尾声-道阻且长,努力加餐
│   │   │   ├─开篇词-为什么我们要学习Java虚拟机?
│   │   │   └─结课测试-这些Java虚拟机的知识你都掌握了吗?
│   │   ├─020-邱岳的产品实战
│   │   │   ├─01-如何验证你的产品创意?
│   │   │   ├─02-如何锤炼你的产品创意
│   │   │   ├─020-邱岳的产品实战
│   │   │   ├─03-要不要相信你的调查问卷
│   │   │   ├─04-用最少的资源给你的产品试试水
│   │   │   ├─05-如何快速利用MVP思想
│   │   │   ├─06-如何做好产品立项
│   │   │   ├─07-产品发布的那些坑儿
│   │   │   ├─08-产品增长越来越难,到底应该怎么办?
│   │   │   ├─09-产品增长的核心,究竟是什么?
│   │   │   ├─10-你需要组建增长团队吗,应该如何组建呢?
│   │   │   ├─11-产品增长有哪些业务公式与关键指标?(上)
│   │   │   ├─12-产品增长有哪些业务公式与关键指标?(下)
│   │   │   ├─13-产品做增长的过程中,有哪些关键套路?
│   │   │   ├─14-实战增长,我们要知道哪些事儿?
│   │   │   ├─15-增长执行时,需要哪些关键的能力
│   │   │   ├─16-当钩子靠不住时,如何提高用户留存?(上)
│   │   │   ├─17-当钩子靠不住时,如何提高用户留存?(下)
│   │   │   ├─18-如何把你的新用户转化为忠实的长期用户?
│   │   │   ├─19-满眼尽是“病毒”“裂变”,到底什么是传播和获客的正确姿势?(上)
│   │   │   ├─20-满眼尽是“病毒”“裂变”,到底什么是传播和获客的正确姿势?(下)
│   │   │   ├─21-增长黑客的阴暗面
│   │   │   ├─22-产品经理需要具备哪些基本的数据能力和意识?
│   │   │   ├─23-突发式流量数据暴跌,产品经理应该如何应对?【分析篇】
│   │   │   ├─24-突发式流量数据暴跌,产品经理应该如何应对?【拆解篇】
│   │   │   ├─25-突发式流量数据暴跌,产品经理应该如何应对?【处理篇】
│   │   │   ├─26-当收集数据的前后,我们应该做什么?
│   │   │   ├─27-从具体业务出发,如何利用数据辅助你的决策?
│   │   │   ├─28-那些数据不能告诉你的事儿:尽信“数”不如无“数”
│   │   │   ├─29-每个产品经理都要掌握的基本商业概念是什么?
│   │   │   ├─30-如何提高你的商业产品收入?(上)
│   │   │   ├─31-如何提高你的商业产品收入(下)
│   │   │   ├─32-“烧钱获客”中有哪些值得学习的商业逻辑?
│   │   │   ├─33-“烧钱获客”的正确姿势有哪些?
│   │   │   ├─34-如何具备赚钱的意识与能力?
│   │   │   ├─35-对产品经理来说,做小程序有什么价值?
│   │   │   ├─36-如何利用小程序去做传播?
│   │   │   ├─37-关于小程序,一些你应该知道的事儿
│   │   │   ├─产品会客厅-一次简洁并有效的产品分析需要怎么做?
│   │   │   ├─产品会客厅-专栏销量过万是一种什么样的感受?
│   │   │   ├─产品会客厅-产品经理如何上手体验一个App(下)
│   │   │   ├─产品会客厅-产品经理如何上手体验一个App?(上)
│   │   │   ├─产品会客厅-产品经理的职业发展,你在哪个阶段?
│   │   │   ├─产品会客厅-产品经理面试究竟考什么?
│   │   │   ├─产品会客厅-从“分享有赏”案例讲起,如何做关键决策?
│   │   │   ├─产品会客厅-从“极客时间”App的信息架构上,我们能学到什么?
│   │   │   ├─产品会客厅-从案例出发,如何利用数据分析来验证新功能的效果?
│   │   │   ├─产品会客厅-从流量型平台转到资源匮乏平台,如何应对业务变化?
│   │   │   ├─产品会客厅-千万级用户的产品是如何打造的?
│   │   │   ├─产品会客厅-在产品的获客与传播上,“极客时间”做了些什么?
│   │   │   ├─产品会客厅-未来的产品会有怎样的发展趋势?
│   │   │   ├─产品会客厅-极客时间产品规划大揭秘
│   │   │   ├─产品会客厅-没有项目管理经验,如何推动团队一起完成任务?
│   │   │   ├─产品会客厅-需求评审怎么做,如何区分什么是真的用户需求?
│   │   │   ├─产品会客厅-面向大众的通用型产品VS受众面少的垂直领域,二者如何博弈?(上)
│   │   │   ├─产品会客厅-面向大众的通用型产品VS受众面少的垂直领域,二者如何博弈?(下)
│   │   │   ├─尾声-祝你胸怀远大,心狠手辣
│   │   │   ├─开篇词-和自己较劲,一个产品经理的实战历程
│   │   ├─021-程序员进阶攻略
│   │   │   ├─01-初心:为什么成为一名程序员?
│   │   │   ├─02-初惑:技术方向的选择
│   │   │   ├─021-程序员进阶攻略
│   │   │   ├─03-初程:带上一份技能地图
│   │   │   ├─04-初感:别了校园,入了江湖
│   │   │   ├─05-架构与实现:它们的连接与分界?
│   │   │   ├─06-模式与框架:它们的关系与误区?
│   │   │   ├─07-多维与视图:系统设计的思考维度与展现视图
│   │   │   ├─08-代码与分类:工业级编程的代码分类与特征
│   │   │   ├─09-粗放与精益:编程的两种思路与方式
│   │   │   ├─10-炫技与克制:代码的两种味道与态度
│   │   │   ├─11-三阶段进化:调试,编写与运行代码
│   │   │   ├─12-Bug的空间属性:环境依赖与过敏反应
│   │   │   ├─13-Bug的时间属性:周期特点与非规律性
│   │   │   ├─14-Bug的反复出现:重蹈覆辙与吸取教训
│   │   │   ├─15-根源:计划的愿景——仰望星空
│   │   │   ├─16-方式:计划的方法——脚踏实地
│   │   │   ├─17-检视:计划的可行——时间与承诺
│   │   │   ├─18-评估:计划的收获——成本与收益
│   │   │   ├─19-障碍:从计划到坚持,再到坚持不下去的时候
│   │   │   ├─20-执行:从坚持到持续,再到形成自己的节奏
│   │   │   ├─21-信息:过载与有效
│   │   │   ├─22-领域:知识与体系
│   │   │   ├─23-转化:能力与输出
│   │   │   ├─24-并行:工作与学习
│   │   │   ├─25-时间:塑造基石习惯(上)——感知与测量
│   │   │   ├─26-时间:塑造基石习惯(下)——切割与构建
│   │   │   ├─27-试试:一种“坏”习惯
│   │   │   ├─28-提问:从技术到人生的习惯
│   │   │   ├─29-偏好:个人习惯的局限与反思
│   │   │   ├─30-写作:写字如编码
│   │   │   ├─31-画图:一图胜千言
│   │   │   ├─32-演讲:表达的技术
│   │   │   ├─33-定义:阶梯与级别
│   │   │   ├─34-晋升:评定与博弈
│   │   │   ├─35-关系:学徒与导师
│   │   │   ├─36-核心:安全与效率——工程技术的两个核心维度
│   │   │   ├─37-过程:规模与协作——规模化的过程方法
│   │   │   ├─38-思维:科学与系统——两类问题的两种思维解法
│   │   │   ├─39-职业倦怠:如何面对?
│   │   │   ├─40-局部最优:如何逃离?
│   │   │   ├─40-局部最优:如何逃离?
│   │   │   ├─41-沟通之痛:如何改变?
│   │   │   ├─42-技术停滞:如何更新?
│   │   │   ├─43-无法实现:困扰与反思
│   │   │   ├─44-完成作品:理想与现实
│   │   │   ├─45-代码评审:寄望与哀伤
│   │   │   ├─46-人到中年:失业与恐惧
│   │   │   ├─47-该不该去创业公司?
│   │   │   ├─48-该不该接外包?
│   │   │   ├─49-技术干货那么多,如何选?
│   │   │   ├─50-技术分歧,如何决策?
│   │   │   ├─51-技术债务,有意或无意的选择?
│   │   │   ├─52-选择从众,还是唯一?
│   │   │   ├─53-选择工作,还是生活?
│   │   │   ├─54-侠客行:一技压身,天下行走
│   │   │   ├─55-江湖路:刀剑相接,战场升级
│   │   │   ├─55-江湖路:刀剑相接,战场升级
│   │   │   ├─56-御剑流:一击必杀,万剑归心
│   │   │   ├─57-三维度:专业、展现与连接
│   │   │   ├─58-三人行:前辈、平辈与后辈
│   │   │   ├─59-三角色:程序员、技术主管与架构师
│   │   │   ├─60-三视角:定位、自省与多维
│   │   │   ├─61-工作之余,专业之外
│   │   │   ├─62-跨越断层,突破边界
│   │   │   ├─63-成长蓝图,进化跃迁
│   │   │   ├─尾声-始于知,终于行
│   │   │   ├─开篇词-程序行知:走在同样的路上,遇见自己的风景
│   │   │   └─开篇词-程序行知:走在同样的路上,遇见自己的风景
│   │   ├─022-Go语言核心36讲
│   │   │   ├─01-工作区和GOPATH
│   │   │   ├─02-命令源码文件
│   │   │   ├─022-Go语言核心36讲
│   │   │   ├─03-库源码文件
│   │   │   ├─04-程序实体的那些事儿(上)
│   │   │   ├─05-程序实体的那些事儿(中)
│   │   │   ├─06-程序实体的那些事儿(下)
│   │   │   ├─07-数组和切片
│   │   │   ├─08-container包中的那些容器
│   │   │   ├─09-字典的操作和约束
│   │   │   ├─10-通道的基本操作
│   │   │   ├─11-通道的高级玩法
│   │   │   ├─12-使用函数的正确姿势
│   │   │   ├─13-结构体及其方法的使用法门
│   │   │   ├─14-接口类型的合理运用
│   │   │   ├─15-关于指针的有限操作
│   │   │   ├─16-go语句及其执行规则(上)
│   │   │   ├─17-go语句及其执行规则(下)
│   │   │   ├─18-if语句、for语句和switch语句
│   │   │   ├─19-错误处理(上)
│   │   │   ├─20-错误处理(下)
│   │   │   ├─21-panic函数、recover函数以及defer语句(上)
│   │   │   ├─22-panic函数、recover函数以及defer语句(下)
│   │   │   ├─23-测试的基本规则和流程(上)
│   │   │   ├─24-测试的基本规则和流程(下)
│   │   │   ├─25-更多的测试手法
│   │   │   ├─26-sync
│   │   │   ├─27-条件变量sync
│   │   │   ├─28-条件变量sync
│   │   │   ├─28-条件变量sync
│   │   │   ├─29-原子操作(上)
│   │   │   ├─30-原子操作(下)
│   │   │   ├─31-sync
│   │   │   ├─32-context
│   │   │   ├─33-临时对象池sync
│   │   │   ├─34-并发安全字典sync
│   │   │   ├─35-并发安全字典sync
│   │   │   ├─36-unicode与字符编码
│   │   │   ├─37-strings包与字符串操作
│   │   │   ├─38-bytes包与字节串操作(上)
│   │   │   ├─39-bytes包与字节串操作(下)
│   │   │   ├─40-io包中的接口和工具(上)
│   │   │   ├─41-io包中的接口和工具(下)
│   │   │   ├─42-bufio包中的数据类型(上)
│   │   │   ├─43-bufio包中的数据类型(下)
│   │   │   ├─44-使用os包中的API(上)
│   │   │   ├─45-使用os包中的API(下)
│   │   │   ├─46-访问网络服务
│   │   │   ├─47-基于HTTP协议的网络服务
│   │   │   ├─48-程序性能分析基础(上)
│   │   │   ├─49-程序性能分析基础(下)
│   │   │   ├─导读-写给0基础入门的Go语言学习者
│   │   │   ├─导读-学习专栏的正确姿势
│   │   │   ├─尾声-愿你披荆斩棘,所向无敌
│   │   │   ├─开篇词-跟着学,你也能成为Go语言高手
│   │   │   ├─新年彩蛋-完整版思考题答案
│   │   │   └─结课测试-这些Go语言的知识你都掌握了吗?
│   │   ├─023-技术管理实战36讲
│   │   │   ├─01-多年前的那些工程师都去哪了?
│   │   │   ├─02-我要不要做管理呢?内心好纠结!
│   │   │   ├─023-技术管理实战36讲
│   │   │   ├─03-哪些人比较容易走上管理岗位?
│   │   │   ├─04-我要不要转回去做技术呢?
│   │   │   ├─05-作为技术管理者,我如何保持技术判断力?
│   │   │   ├─06-我这样的风格能做管理吗?
│   │   │   ├─07-我能做好管理吗,大家服我吗?
│   │   │   ├─08-管理到底都做哪些事儿?
│   │   │   ├─09-从工程师到管理者,角色都发生了哪些变化?
│   │   │   ├─10-新经理常踩的坑儿有哪些?
│   │   │   ├─11-我刚开始带团队,从哪里着手呢?
│   │   │   ├─12-如何界定我团队是干什么的呢?
│   │   │   ├─13-如何为团队设定合理的目标呢?
│   │   │   ├─14-如何来规划团队的组织结构呢?
│   │   │   ├─15-我都要申请哪些资源呢?
│   │   │   ├─16-团队建设该从哪里入手?
│   │   │   ├─17-如何提升员工的个人能力?
│   │   │   ├─18-如何提升员工的工作意愿和积极性?
│   │   │   ├─19-如何兼顾团队分工的稳定性和灵活性?
│   │   │   ├─19-如何兼顾团队分工的稳定性和灵活性?
│   │   │   ├─20-有什么方法可以有效提升团队凝聚力吗?
│   │   │   ├─21-如何物色和培养核心人才?
│   │   │   ├─21-如何物色和培养核心人才?
│   │   │   ├─22-如何建设团队文化,营造团队氛围?
│   │   │   ├─23-如何和低绩效员工谈绩效?
│   │   │   ├─24-如何让团建活动不再“收效甚微”?
│   │   │   ├─25-多任务并行该如何应对?
│   │   │   ├─26-如何确保项目的有效执行?
│   │   │   ├─27-如何让流程机制得到有效的执行?
│   │   │   ├─28-管理沟通那些事儿
│   │   │   ├─29-沟通经常鸡同鸭讲,说不到一块怎么办?
│   │   │   ├─30-如何掌控自己的情绪,以及如何管理情绪化的员工?
│   │   │   ├─31-我各方面做得都很好,就是做不好向上沟通
│   │   │   ├─32-横向沟通和非职权影响力
│   │   │   ├─32-横向沟通和非职权影响力
│   │   │   ├─33-向下沟通的常见实例解析
│   │   │   ├─34-管理沟通上有哪些常见的坑儿呢?
│   │   │   ├─35-从空降谈管理方法论的积累
│   │   │   ├─36-走出自己的管理之路
│   │   │   ├─复习课(一)-管理方法论和角色认知
│   │   │   ├─复习课(三)-团队建设
│   │   │   ├─复习课(二)-管理规划
│   │   │   ├─复习课(五)-管理沟通
│   │   │   ├─复习课(四)-任务管理
│   │   │   ├─开篇词-你为什么需要学管理?
│   │   │   ├─新书首发-《知行:技术人的管理之路》
│   │   │   └─结课测试-这些管理知识你都掌握了吗?
│   │   ├─024-从0开始学微服务
│   │   │   ├─01-到底什么是微服务?
│   │   │   ├─02-从单体应用走向服务化
│   │   │   ├─024-从0开始学微服务
│   │   │   ├─03-初探微服务架构
│   │   │   ├─04-如何发布和引用服务?
│   │   │   ├─05-如何注册和发现服务?
│   │   │   ├─06-如何实现RPC远程服务调用?
│   │   │   ├─07-如何监控微服务调用?
│   │   │   ├─08-如何追踪微服务调用?
│   │   │   ├─09-微服务治理的手段有哪些?
│   │   │   ├─10-Dubbo框架里的微服务组件
│   │   │   ├─11-服务发布和引用的实践
│   │   │   ├─12-如何将注册中心落地?
│   │   │   ├─13-开源服务注册中心如何选型?
│   │   │   ├─14-开源RPC框架如何选型?
│   │   │   ├─15-如何搭建一个可靠的监控系统?
│   │   │   ├─16-如何搭建一套适合你的服务追踪系统?
│   │   │   ├─17-如何识别服务节点是否存活?
│   │   │   ├─18-如何使用负载均衡算法?
│   │   │   ├─19-如何使用服务路由?
│   │   │   ├─20-服务端出现故障时该如何应对?
│   │   │   ├─21-服务调用失败时有哪些处理手段?
│   │   │   ├─22-如何管理服务配置?
│   │   │   ├─23-如何搭建微服务治理平台?
│   │   │   ├─24-微服务架构该如何落地?
│   │   │   ├─25-微服务为什么要容器化?
│   │   │   ├─26-微服务容器化运维:镜像仓库和资源调度
│   │   │   ├─27-微服务容器化运维:容器调度和服务编排
│   │   │   ├─28-微服务容器化运维:微博容器运维平台DCP
│   │   │   ├─29-微服务如何实现DevOps?
│   │   │   ├─30-如何做好微服务容量规划?
│   │   │   ├─31-微服务多机房部署实践
│   │   │   ├─32-微服务混合云部署实践
│   │   │   ├─33-下一代微服务架构ServiceMesh
│   │   │   ├─34-Istio:ServiceMesh的代表产品
│   │   │   ├─35-微博ServiceMesh实践之路(上)
│   │   │   ├─36-微博ServiceMesh实践之路(下)
│   │   │   ├─开篇词-微服务,从放弃到入门
│   │   │   ├─微博技术解密(上)-微博信息流是如何实现的?
│   │   │   ├─微博技术解密(下)-微博存储的那些事儿
│   │   │   ├─结束语-微服务,从入门到精通
│   │   │   ├─结课测试|这些微服务知识你都掌握了吗?
│   │   │   ├─阿忠伯的特别放送-答疑解惑01
│   │   │   ├─阿忠伯的特别放送-答疑解惑02
│   │   │   └─阿忠伯的特别放送-答疑解惑02
│   │   ├─025-深入剖析Kubernetes
│   │   │   ├─01-预习篇·小鲸鱼大事记(一):初出茅庐
│   │   │   ├─02-预习篇·小鲸鱼大事记(二):崭露头角
│   │   │   ├─025-深入剖析Kubernetes
│   │   │   ├─03-预习篇·小鲸鱼大事记(三):群雄并起
│   │   │   ├─04-预习篇·小鲸鱼大事记(四):尘埃落定
│   │   │   ├─05-白话容器基础(一):从进程说开去
│   │   │   ├─06-白话容器基础(二):隔离与限制
│   │   │   ├─07-白话容器基础(三):深入理解容器镜像
│   │   │   ├─08-白话容器基础(四):重新认识Docker容器
│   │   │   ├─09-从容器到容器云:谈谈Kubernetes的本质
│   │   │   ├─10-Kubernetes一键部署利器:kubeadm
│   │   │   ├─11-从0到1:搭建一个完整的Kubernetes集群
│   │   │   ├─12-牛刀小试:我的第一个容器化应用
│   │   │   ├─13-为什么我们需要Pod?
│   │   │   ├─14-深入解析Pod对象(一):基本概念
│   │   │   ├─15-深入解析Pod对象(二):使用进阶
│   │   │   ├─16-编排其实很简单:谈谈“控制器”模型
│   │   │   ├─17-经典PaaS的记忆:作业副本与水平扩展
│   │   │   ├─18-深入理解StatefulSet(一):拓扑状态
│   │   │   ├─19-深入理解StatefulSet(二):存储状态
│   │   │   ├─20-深入理解StatefulSet(三):有状态应用实践
│   │   │   ├─21-容器化守护进程的意义:DaemonSet
│   │   │   ├─21-容器化守护进程的意义:DaemonSet
│   │   │   ├─22-撬动离线业务:Job与CronJob
│   │   │   ├─23-声明式API与Kubernetes编程范式
│   │   │   ├─24-深入解析声明式API(一):API对象的奥秘
│   │   │   ├─25-深入解析声明式API(二):编写自定义控制器
│   │   │   ├─26-基于角色的权限控制:RBAC
│   │   │   ├─27-聪明的微创新:Operator工作原理解读
│   │   │   ├─28-PV、PVC、StorageClass,这些到底在说啥?
│   │   │   ├─29-PV、PVC体系是不是多此一举?从本地持久化卷谈起
│   │   │   ├─30-编写自己的存储插件:FlexVolume与CSI
│   │   │   ├─31-容器存储实践:CSI插件编写指南
│   │   │   ├─32-浅谈容器网络
│   │   │   ├─33-深入解析容器跨主机网络
│   │   │   ├─34-Kubernetes网络模型与CNI网络插件
│   │   │   ├─35-解读Kubernetes三层网络方案
│   │   │   ├─36-为什么说Kubernetes只有softmulti-tenancy?
│   │   │   ├─37-找到容器不容易:Service、DNS与服务发现
│   │   │   ├─38-从外界连通Service与Service调试“三板斧”
│   │   │   ├─38-从外界连通Service与Service调试“三板斧”
│   │   │   ├─39-谈谈Service与Ingress
│   │   │   ├─40-Kubernetes的资源模型与资源管理
│   │   │   ├─41-十字路口上的Kubernetes默认调度器
│   │   │   ├─42-Kubernetes默认调度器调度策略解析
│   │   │   ├─43-Kubernetes默认调度器的优先级与抢占机制
│   │   │   ├─44-KubernetesGPU管理与DevicePlugin机制
│   │   │   ├─45-幕后英雄:SIG-Node与CRI
│   │   │   ├─46-解读CRI与容器运行时
│   │   │   ├─47-绝不仅仅是安全:KataContainers与gVisor
│   │   │   ├─48-Prometheus、MetricsServer与Kubernetes监控体系
│   │   │   ├─49-CustomMetrics-让AutoScaling不再“食之无味”
│   │   │   ├─50-让日志无处可逃:容器日志收集与管理
│   │   │   ├─51-谈谈Kubernetes开源社区和未来走向
│   │   │   ├─52-答疑:在问题中解决问题,在思考中产生思考
│   │   │   ├─开篇词-打通“容器技术”的任督二脉
│   │   │   ├─特别放送-2019年,容器技术生态会发生些什么?
│   │   │   ├─特别放送-基于Kubernetes的云原生应用管理,到底应该怎么做?
│   │   │   ├─结束语-Kubernetes:赢开发者赢天下
│   │   │   └─结课测试|这些Kubernetes的相关知识,你都掌握了吗?
│   │   ├─026-数据结构与算法之美
│   │   │   ├─01-为什么要学习数据结构和算法?
│   │   │   ├─02-如何抓住重点,系统高效地学习数据结构与算法?
│   │   │   ├─026-数据结构与算法之美
│   │   │   ├─03-复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
│   │   │   ├─04-复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度
│   │   │   ├─05-数组:为什么很多编程语言中数组都从0开始编号?
│   │   │   ├─06-链表(上):如何实现LRU缓存淘汰算法
│   │   │   ├─07-链表(下):如何轻松写出正确的链表代码?
│   │   │   ├─08-栈:如何实现浏览器的前进和后退功能?
│   │   │   ├─09-队列:队列在线程池等有限资源池中的应用
│   │   │   ├─10-递归:如何用三行代码找到“最终推荐人”?
│   │   │   ├─11-排序(上):为什么插入排序比冒泡排序更受欢迎?
│   │   │   ├─12-排序(下):如何用快排思想在O(n)内查找第K大元素?
│   │   │   ├─13-线性排序:如何根据年龄给100万用户数据排序?
│   │   │   ├─14-排序优化:如何实现一个通用的、高性能的排序函数?
│   │   │   ├─15-二分查找(上):如何用最省内存的方式实现快速查找功能?
│   │   │   ├─16-二分查找(下):如何快速定位IP对应的省份地址?
│   │   │   ├─17-跳表:为什么Redis一定要用跳表来实现有序集合?
│   │   │   ├─18-散列表(上):Word文档中的单词拼写检查功能是如何实现的?
│   │   │   ├─19-散列表(中):如何打造一个工业级水平的散列表?
│   │   │   ├─20-散列表(下):为什么散列表和链表经常会一起使用?
│   │   │   ├─21-哈希算法(上):如何防止数据库中的用户信息被脱库?
│   │   │   ├─22-哈希算法(下):哈希算法在分布式系统中有哪些应用?
│   │   │   ├─23-二叉树基础(上):什么样的二叉树适合用数组来存储?
│   │   │   ├─24-二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?
│   │   │   ├─25-红黑树(上):为什么工程中都用红黑树这种二叉树?
│   │   │   ├─26-红黑树(下):掌握这些技巧,你也可以实现一个红黑树
│   │   │   ├─27-递归树:如何借助树来求解递归算法的时间复杂度?
│   │   │   ├─28-堆和堆排序:为什么说堆排序没有快速排序快?
│   │   │   ├─29-堆的应用:如何快速获取到Top10最热门的搜索关键词?
│   │   │   ├─30-图的表示:如何存储微博、微信等社交网络中的好友关系?
│   │   │   ├─31-深度和广度优先搜索:如何找出社交网络中的三度好友关系?
│   │   │   ├─32-字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?
│   │   │   ├─33-字符串匹配基础(中):如何实现文本编辑器中的查找功能?
│   │   │   ├─34-字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?
│   │   │   ├─34-字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?
│   │   │   ├─35-Trie树:如何实现搜索引擎的搜索关键词提示功能?
│   │   │   ├─36-AC自动机:如何用多模式串匹配实现敏感词过滤功能?
│   │   │   ├─37-贪心算法:如何用贪心算法实现Huffman压缩编码?
│   │   │   ├─38-分治算法:谈一谈大规模计算框架MapReduce中的分治思想
│   │   │   ├─39-回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
│   │   │   ├─40-初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?
│   │   │   ├─41-动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题
│   │   │   ├─42-动态规划实战:如何实现搜索引擎中的拼写纠错功能?
│   │   │   ├─43-拓扑排序:如何确定代码源文件的编译依赖关系?
│   │   │   ├─44-最短路径:地图软件是如何计算出最优出行路径的?
│   │   │   ├─45-位图:如何实现网页爬虫中的URL去重功能?
│   │   │   ├─46-概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?
│   │   │   ├─47-向量空间:如何实现一个简单的音乐推荐系统?
│   │   │   ├─48-B+树:MySQL数据库索引是如何实现的?
│   │   │   ├─49-搜索:如何用A-搜索算法实现游戏中的寻路功能?
│   │   │   ├─50-索引:如何在海量数据中快速查找某个数据?
│   │   │   ├─51-并行算法:如何利用并行处理提高算法的执行效率?
│   │   │   ├─52-算法实战(一):剖析Redis常用数据类型对应的数据结构
│   │   │   ├─53-算法实战(二):剖析搜索引擎背后的经典数据结构和算法
│   │   │   ├─53-算法实战(二):剖析搜索引擎背后的经典数据结构和算法
│   │   │   ├─54-算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法
│   │   │   ├─55-算法实战(四):剖析微服务接口鉴权限流背后的数据结构和算法
│   │   │   ├─56-算法实战(五):如何用学过的数据结构和算法实现一个短网址系统?
│   │   │   ├─《数据结构与算法之美》学习指导手册
│   │   │   ├─不定期福利第一期-数据结构与算法学习书单
│   │   │   ├─不定期福利第三期-测一测你的算法阶段学习成果
│   │   │   ├─不定期福利第二期-王争:羁绊前行的,不是肆虐的狂风,而是内心的迷茫
│   │   │   ├─不定期福利第四期-刘超:我是怎么学习《数据结构与算法之美》的?
│   │   │   ├─开篇词-从今天起,跨过“数据结构与算法”这道坎
│   │   │   ├─总结课-在实际开发中,如何权衡选择使用哪种数据结构和算法?
│   │   │   ├─打卡召集令-60天攻克数据结构与算法
│   │   │   ├─打卡召集令-第一阶段知识总结
│   │   │   ├─打卡召集令-第三阶段知识总结
│   │   │   ├─打卡召集令-第二阶段知识总结
│   │   │   ├─打卡召集令-第四阶段知识总结
│   │   │   ├─春节7天练-Day1:数组和链表
│   │   │   ├─春节7天练-Day2:栈、队列和递归
│   │   │   ├─春节7天练-Day3:排序和二分查找
│   │   │   ├─春节7天练-Day4:散列表和字符串
│   │   │   ├─春节7天练-Day5:二叉树和堆
│   │   │   ├─春节7天练-Day6:图
│   │   │   ├─春节7天练-Day7:贪心、分治、回溯和动态规划
│   │   │   ├─用户故事-Jerry银银:这一年我的脑海里只有算法
│   │   │   ├─用户故事-zixuan:站在思维的高处,才有足够的视野和能力欣赏“美”
│   │   │   ├─第2季回归-这一次,我们一起拿下设计模式!
│   │   │   ├─结束语-送君千里,终须一别
│   │   │   ├─结课测试|这些数据结构与算法,你真的掌握了吗?
│   │   │   ├─课程迭代|全新交付71讲音频
│   │   │   └─课程迭代|全新交付71讲音频
│   │   ├─027-如何设计一个秒杀系统
│   │   │   ├─01-设计秒杀系统时应该注意的5个架构原则
│   │   │   ├─02-如何才能做好动静分离?有哪些方案可选?
│   │   │   ├─027-如何设计一个秒杀系统
│   │   │   ├─03-二八原则:有针对性地处理好系统的“热点数据”
│   │   │   ├─04-流量削峰这事应该怎么做?
│   │   │   ├─05-影响性能的因素有哪些?又该如何提高系统的性能?
│   │   │   ├─06-秒杀系统“减库存”设计的核心逻辑
│   │   │   ├─07-准备PlanB:如何设计兜底方案
│   │   │   ├─08-答疑解惑:缓存失效的策略应该怎么定?
│   │   │   ├─开篇词-秒杀系统架构设计都有哪些关键点?(1)
│   │   │   ├─开篇词-秒杀系统架构设计都有哪些关键点?
│   │   │   └─结课测试-这些秒杀系统的设计知识你都掌握了吗?
│   │   ├─028-白话法律42讲
│   │   │   ├─01“老周,我想知道”-常见法律认知盲区(一)
│   │   │   ├─028-白话法律42讲
│   │   │   ├─02“老周,我想知道”-律师就在你身边(二)
│   │   │   ├─03“老周,我想知道”-律师就在你身边(三)
│   │   │   ├─04“老周,我想知道”-律师就在你身边(四)
│   │   │   ├─05-创业未捷老板跑,社保工资哪里讨?
│   │   │   ├─06-保密还是“卖身”,霸王条款怎么看?
│   │   │   ├─07-编造流言蹭热度?看守所里降温度!
│   │   │   ├─08-合同在手欠款难收,报警有用吗?
│   │   │   ├─09-致创业:谁动了我的股权?
│   │   │   ├─10-又见猝死!工“殇”究竟是不是工伤?
│   │   │   ├─11-期权的“前世今生”
│   │   │   ├─12-裁员面前,你能做的还有什么?
│   │   │   ├─13-抄袭、盗图为什么做不得?
│   │   │   ├─14-加班、工资、休假,你知道多少?
│   │   │   ├─15-受贿原来这么“容易”
│   │   │   ├─16-今天你用“VPN”了吗?
│   │   │   ├─16-今天你用“VPN”了吗?
│   │   │   ├─17-漏洞在眼前,可以悄悄破解吗?
│   │   │   ├─18-“爬虫”真的合法吗?
│   │   │   ├─19-非法集资到底是个啥?
│   │   │   ├─20-黄色网站?不仅仅是“黄色”罪名
│   │   │   ├─21-谁修改了我的积分资产?
│   │   │   ├─22-外挂真能大吉大利吗?
│   │   │   ├─22-外挂真能大吉大利吗?
│   │   │   ├─23-如何看待“从删库到跑路”?
│   │   │   ├─24-“伪基站”是你的避风港吗?
│   │   │   ├─25-“网络诈骗”真的离你很远吗?
│   │   │   ├─26-智斗中介:“北上广”租房图鉴
│   │   │   ├─27-买买买!买房的“避坑”指南
│   │   │   ├─27-买买买!买房的“避坑”指南
│   │   │   ├─28-闪婚又闪离,彩礼怎么理?
│   │   │   ├─29-离婚还想和平?你要这么做
│   │   │   ├─30-遗产继承的爱恨情仇
│   │   │   ├─31-骗术升级?假结婚、假离婚的那些事儿
│   │   │   ├─32-孩子学校受伤,谁之过?
│   │   │   ├─33-如何让欠债还钱真正“天经地义”?
│   │   │   ├─34-从透支到盗刷:人人须知的银行卡纠纷
│   │   │   ├─35-远离“套路贷”的套路大全
│   │   │   ├─36-危险!酒驾为什么被罚那么重?
│   │   │   ├─37-老人倒地,“扶”“不服”?
│   │   │   ├─38-“能动手就别吵吵”,代价你真的知道吗?
│   │   │   ├─39-发生交通事故,如何处理?
│   │   │   ├─40-交通事故综合法宝
│   │   │   ├─41-婚姻家庭综合法宝
│   │   │   ├─41-婚姻家庭综合法宝
│   │   │   ├─42-买卖房屋综合法宝
│   │   │   ├─一键直达-法律专栏“食用”指南
│   │   │   ├─加餐-“新冠肺炎”影响下,17个常见法律问题解答
│   │   │   ├─开篇词-这年头,你真应该懂点法律常识
│   │   │   ├─结束语-法律,不会终止的篇章
│   │   │   └─结课测试-这些法律知识,你都掌握了吗?
│   │   ├─029-从0开始学大数据
│   │   │   ├─029-从0开始学大数据
│   │   │   ├─04-移动计算比移动数据更划算
│   │   │   ├─05-从RAID看垂直伸缩到水平伸缩的演化
│   │   │   ├─06-新技术层出不穷,HDFS依然是存储的王者
│   │   │   ├─07-为什么说MapReduce既是编程模型又是计算框架?
│   │   │   ├─08-MapReduce如何让数据完成一次旅行?
│   │   │   ├─09-为什么我们管Yarn叫作资源调度框架?
│   │   │   ├─10-模块答疑:我们能从Hadoop学到什么?
│   │   │   ├─11-Hive是如何让MapReduce实现SQL操作的?
│   │   │   ├─12-我们并没有觉得MapReduce速度慢,直到Spark出现
│   │   │   ├─13-同样的本质,为何Spark可以更高效?
│   │   │   ├─14-BigTable的开源实现:HBase
│   │   │   ├─15-流式计算的代表:Storm、Flink、SparkStreaming
│   │   │   ├─16-ZooKeeper是如何保证数据一致性的?
│   │   │   ├─17-模块答疑:这么多技术,到底都能用在什么场景里?
│   │   │   ├─18-如何自己开发一个大数据SQL引擎?
│   │   │   ├─19-Spark的性能优化案例分析(上)
│   │   │   ├─20-Spark的性能优化案例分析(下)
│   │   │   ├─21-从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
│   │   │   ├─22-从阿里内部产品看海量数据处理系统的设计(下):架构与创新
│   │   │   ├─23-大数据基准测试可以带来什么好处?
│   │   │   ├─24-从大数据性能测试工具Dew看如何快速开发大数据系统
│   │   │   ├─25-模块答疑:我能从大厂的大数据开发实践中学到什么?
│   │   │   ├─26-互联网产品+大数据产品=大数据平台
│   │   │   ├─27-大数据从哪里来?
│   │   │   ├─28-知名大厂如何搭建大数据平台?
│   │   │   ├─29-盘点可供中小企业参考的商业大数据平台
│   │   │   ├─30-当大数据遇上物联网
│   │   │   ├─31-模块答疑:为什么大数据平台至关重要?
│   │   │   ├─32-互联网运营数据指标与可视化监控
│   │   │   ├─33-一个电商网站订单下降的数据分析案例
│   │   │   ├─34-A-B测试与灰度发布必知必会
│   │   │   ├─35-如何利用大数据成为“增长黑客”?
│   │   │   ├─36-模块答疑:为什么说数据驱动运营?
│   │   │   ├─37-如何对数据进行分类和预测?
│   │   │   ├─38-如何发掘数据之间的关系?
│   │   │   ├─39-如何预测用户的喜好?
│   │   │   ├─40-机器学习的数学原理是什么?
│   │   │   ├─41-从感知机到神经网络算法
│   │   │   ├─42-模块答疑:软件工程师如何进入人工智能领域?
│   │   │   ├─开篇词-为什么说每个软件工程师都应该懂大数据技术?
│   │   │   ├─所有的不确定都是机会——智慧写给你的新年寄语
│   │   │   ├─第2季回归丨大数据之后,让我们回归后端
│   │   │   ├─结束语-未来的你,有无限可能
│   │   │   ├─结课测试-这些大数据的知识你都掌握了吗?
│   │   │   ├─预习01-大数据技术发展史:大数据的前世今生
│   │   │   ├─预习02-大数据应用发展史:从搜索引擎到人工智能
│   │   │   ├─预习03-大数据应用领域:数据驱动一切
│   │   │   └─预习03-大数据应用领域:数据驱动一切
│   │   ├─030-MySQL实战45讲
│   │   │   ├─01-基础架构:一条SQL查询语句是如何执行的?
│   │   │   ├─02-日志系统:一条SQL更新语句是如何执行的?
│   │   │   ├─03-事务隔离:为什么你改了我还看不见?
│   │   │   ├─030-MySQL实战45讲
│   │   │   ├─04-深入浅出索引(上)
│   │   │   ├─04-深入浅出索引(上)
│   │   │   ├─05-深入浅出索引(下)
│   │   │   ├─06-全局锁和表锁:给表加个字段怎么有这么多阻碍?
│   │   │   ├─07-行锁功过:怎么减少行锁对性能的影响?
│   │   │   ├─08-事务到底是隔离的还是不隔离的?
│   │   │   ├─09-普通索引和唯一索引,应该怎么选择?
│   │   │   ├─10-MySQL为什么有时候会选错索引?
│   │   │   ├─11-怎么给字符串字段加索引?
│   │   │   ├─12-为什么我的MySQL会“抖”一下?
│   │   │   ├─13-为什么表数据删掉一半,表文件大小不变?
│   │   │   ├─14-count(-)这么慢,我该怎么办?
│   │   │   ├─15-答疑文章(一):日志和索引相关问题
│   │   │   ├─16-“orderby”是怎么工作的?
│   │   │   ├─17-如何正确地显示随机消息?
│   │   │   ├─18-为什么这些SQL语句逻辑相同,性能却差异巨大?
│   │   │   ├─19-为什么我只查一行的语句,也执行这么慢?
│   │   │   ├─20-幻读是什么,幻读有什么问题?
│   │   │   ├─21-为什么我只改一行的语句,锁这么多?
│   │   │   ├─22-MySQL有哪些“饮鸩止渴”提高性能的方法?
│   │   │   ├─23-MySQL是怎么保证数据不丢的?
│   │   │   ├─24-MySQL是怎么保证主备一致的?
│   │   │   ├─25-MySQL是怎么保证高可用的?
│   │   │   ├─26-备库为什么会延迟好几个小时?
│   │   │   ├─27-主库出问题了,从库怎么办?
│   │   │   ├─28-读写分离有哪些坑?
│   │   │   ├─29-如何判断一个数据库是不是出问题了?
│   │   │   ├─30-答疑文章(二):用动态的观点看加锁
│   │   │   ├─31-误删数据后除了跑路,还能怎么办?
│   │   │   ├─32-为什么还有kill不掉的语句?
│   │   │   ├─33-我查这么多数据,会不会把数据库内存打爆?
│   │   │   ├─34-到底可不可以使用join?
│   │   │   ├─35-join语句怎么优化?
│   │   │   ├─35-join语句怎么优化?
│   │   │   ├─36-为什么临时表可以重名?
│   │   │   ├─37-什么时候会使用内部临时表?
│   │   │   ├─38-都说InnoDB好,那还要不要使用Memory引擎?
│   │   │   ├─39-自增主键为什么不是连续的?
│   │   │   ├─40-insert语句的锁为什么这么多?
│   │   │   ├─41-怎么最快地复制一张表?
│   │   │   ├─42-grant之后要跟着flushprivileges吗?
│   │   │   ├─43-要不要使用分区表?
│   │   │   ├─44-答疑文章(三):说一说这些好问题
│   │   │   ├─45-自增id用完怎么办?
│   │   │   ├─开篇词-这一次,让我们一起来搞懂MySQL
│   │   │   ├─直播回顾-林晓斌:我的MySQL心路历程
│   │   │   ├─结束语-点线网面,一起构建MySQL知识网络
│   │   │   └─结课测试|这些MySQL知识你都掌握了吗?
│   │   ├─031-Linux性能优化实战
│   │   │   ├─01-如何学习Linux性能优化?
│   │   │   ├─02-基础篇:到底应该怎么理解“平均负载”?
│   │   │   ├─03-基础篇:经常说的CPU上下文切换是什么意思?(上)
│   │   │   ├─031-Linux性能优化实战
│   │   │   ├─04-基础篇:经常说的CPU上下文切换是什么意思?(下)
│   │   │   ├─04-基础篇:经常说的CPU上下文切换是什么意思?(下)
│   │   │   ├─05-基础篇:某个应用的CPU使用率居然达到100%,我该怎么办?
│   │   │   ├─06-案例篇:系统的CPU使用率很高,但为啥却找不到高CPU的应用?
│   │   │   ├─07-案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)
│   │   │   ├─08-案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(下)
│   │   │   ├─09-基础篇:怎么理解Linux软中断?
│   │   │   ├─10-案例篇:系统的软中断CPU使用率升高,我该怎么办?
│   │   │   ├─11-套路篇:如何迅速分析出系统CPU的瓶颈在哪里?
│   │   │   ├─12-套路篇:CPU性能优化的几个思路
│   │   │   ├─13-答疑(一):无法模拟出RES中断的问题,怎么办?
│   │   │   ├─14-答疑(二):如何用perf工具分析Java程序?
│   │   │   ├─15-基础篇:Linux内存是怎么工作的?
│   │   │   ├─16-基础篇:怎么理解内存中的Buffer和Cache?
│   │   │   ├─17-案例篇:如何利用系统缓存优化程序的运行效率?
│   │   │   ├─18-案例篇:内存泄漏了,我该如何定位和处理?
│   │   │   ├─19-案例篇:为什么系统的Swap变高了(上)
│   │   │   ├─20-案例篇:为什么系统的Swap变高了?(下)
│   │   │   ├─21-套路篇:如何“快准狠”找到系统内存的问题?
│   │   │   ├─22-答疑(三):文件系统与磁盘的区别是什么?
│   │   │   ├─23-基础篇:Linux文件系统是怎么工作的?
│   │   │   ├─24-基础篇:Linux磁盘I-O是怎么工作的(上)
│   │   │   ├─25-基础篇:Linux磁盘I-O是怎么工作的(下)
│   │   │   ├─26-案例篇:如何找出狂打日志的“内鬼”?
│   │   │   ├─27-案例篇:为什么我的磁盘I-O延迟很高?
│   │   │   ├─28-案例篇:一个SQL查询要15秒,这是怎么回事?
│   │   │   ├─29-案例篇:Redis响应严重延迟,如何解决?
│   │   │   ├─30-套路篇:如何迅速分析出系统I-O的瓶颈在哪里?
│   │   │   ├─31-套路篇:磁盘I-O性能优化的几个思路
│   │   │   ├─32-答疑(四):阻塞、非阻塞I-O与同步、异步I-O的区别和联系
│   │   │   ├─33-关于Linux网络,你必须知道这些(上)
│   │   │   ├─34-关于Linux网络,你必须知道这些(下)
│   │   │   ├─35-基础篇:C10K和C1000K回顾
│   │   │   ├─36-套路篇:怎么评估系统的网络性能?
│   │   │   ├─37-案例篇:DNS解析时快时慢,我该怎么办?
│   │   │   ├─38-案例篇:怎么使用tcpdump和Wireshark分析网络流量?
│   │   │   ├─39-案例篇:怎么缓解DDoS攻击带来的性能下降问题?
│   │   │   ├─40-案例篇:网络请求延迟变大了,我该怎么办?
│   │   │   ├─41-案例篇:如何优化NAT性能?(上)
│   │   │   ├─42-案例篇:如何优化NAT性能?(下)
│   │   │   ├─43-套路篇:网络性能优化的几个思路(上)
│   │   │   ├─44-套路篇:网络性能优化的几个思路(下)
│   │   │   ├─45-答疑(五):网络收发过程中,缓冲区位置在哪里?
│   │   │   ├─46-案例篇:为什么应用容器化后,启动慢了很多?
│   │   │   ├─47-案例篇:服务器总是时不时丢包,我该怎么办?(上)
│   │   │   ├─48-案例篇:服务器总是时不时丢包,我该怎么办?(下)
│   │   │   ├─49-案例篇:内核线程CPU利用率太高,我该怎么办?
│   │   │   ├─50-案例篇:动态追踪怎么用?(上)
│   │   │   ├─51-案例篇:动态追踪怎么用?(下)
│   │   │   ├─52-案例篇:服务吞吐量下降很厉害,怎么分析?
│   │   │   ├─52-案例篇:服务吞吐量下降很厉害,怎么分析?
│   │   │   ├─53-套路篇:系统监控的综合思路
│   │   │   ├─54-套路篇:应用监控的一般思路
│   │   │   ├─55-套路篇:分析性能问题的一般步骤
│   │   │   ├─56-套路篇:优化性能问题的一般方法
│   │   │   ├─57-套路篇:Linux性能工具速查
│   │   │   ├─58-答疑(六):容器冷启动如何性能分析?
│   │   │   ├─加餐(一)-书单推荐:性能优化和Linux系统原理
│   │   │   ├─加餐(二)-书单推荐:网络原理和Linux内核实现
│   │   │   ├─开篇词-别再让Linux性能问题成为你的绊脚石
│   │   │   ├─用户故事-“半路出家”,也要顺利拿下性能优化!
│   │   │   ├─用户故事-“半路出家”,也要顺利拿下性能优化!
│   │   │   ├─用户故事-运维和开发工程师们怎么说?
│   │   │   ├─结束语-愿你攻克性能难关
│   │   │   └─结课测试|这些Linux性能知识你都掌握了吗?
│   │   ├─032-Android开发高手课
│   │   │   ├─01-崩溃优化(上):关于“崩溃”那些事儿
│   │   │   ├─02-崩溃优化(下):应用崩溃了,你应该如何去分析?
│   │   │   ├─03-内存优化(上):4GB内存时代,再谈内存优化
│   │   │   ├─032-Android开发高手课
│   │   │   ├─04-内存优化(下):内存优化这件事,应该从哪里着手?
│   │   │   ├─05-卡顿优化(上):你要掌握的卡顿分析方法
│   │   │   ├─06-卡顿优化(下):如何监控应用卡顿?
│   │   │   ├─06补充篇-卡顿优化:卡顿现场与卡顿分析
│   │   │   ├─07-启动优化(上):从启动过程看启动速度优化
│   │   │   ├─08-启动优化(下):优化启动速度的进阶方法
│   │   │   ├─09-I-O优化(上):开发工程师必备的I-O优化知识
│   │   │   ├─10-I-O优化(中):不同I-O方式的使用场景是什么?
│   │   │   ├─11-I-O优化(下):如何监控线上I-O操作?
│   │   │   ├─12-存储优化(上):常见的数据存储方法有哪些?
│   │   │   ├─13-存储优化(中):如何优化数据存储?
│   │   │   ├─14-存储优化(下):数据库SQLite的使用和优化
│   │   │   ├─15-网络优化(上):移动开发工程师必备的网络优化知识
│   │   │   ├─16-网络优化(中):复杂多变的移动网络该如何优化?
│   │   │   ├─17-网络优化(下):大数据下网络该如何监控?
│   │   │   ├─17-网络优化(下):大数据下网络该如何监控?
│   │   │   ├─18-耗电优化(上):从电量优化的演进看耗电分析
│   │   │   ├─19-耗电优化(下):耗电的优化方法与线上监控
│   │   │   ├─20-UI优化(上):UI渲染的几个关键概念
│   │   │   ├─21-UI优化(下):如何优化UI渲染?
│   │   │   ├─22-包体积优化(上):如何减少安装包大小?
│   │   │   ├─23-包体积优化(下):资源优化的进阶实践
│   │   │   ├─24-想成为Android高手,你需要先搞定这三个问题
│   │   │   ├─25-如何提升组织与个人的研发效能?
│   │   │   ├─26-关于编译,你需要了解什么?
│   │   │   ├─27-编译插桩的三种方法:AspectJ、ASM、ReDex
│   │   │   ├─28-大数据与AI,如何高效地测试?
│   │   │   ├─29-从每月到每天,如何给版本发布提速?
│   │   │   ├─29-从每月到每天,如何给版本发布提速?
│   │   │   ├─30-数据评估(上):如何实现高可用的上报组件?
│   │   │   ├─31-数据评估(下):什么是大数据平台?
│   │   │   ├─32-线上疑难问题该如何排查和跟踪?
│   │   │   ├─33-做一名有高度的移动开发工程师
│   │   │   ├─34-聊聊重构:优秀的架构都是演进而来的
│   │   │   ├─34-聊聊重构:优秀的架构都是演进而来的
│   │   │   ├─35-NativeHook技术,天使还是魔鬼?
│   │   │   ├─36-跨平台开发的现状与应用
│   │   │   ├─37-移动开发新大陆:工作三年半,移动开发转型手游开发
│   │   │   ├─38-移动开发新大陆:Android音视频开发
│   │   │   ├─39-移动开发新大陆:边缘智能计算的趋势
│   │   │   ├─40-动态化实践,如何选择适合自己的方案?
│   │   │   ├─41-聊聊Flutter,面对层出不穷的新技术该如何跟进?
│   │   │   ├─42-Android开发高手课学习心得
│   │   │   ├─AndroidJVMTI机制详解(内含福利彩蛋)
│   │   │   ├─Android工程师的“面试指南”
│   │   │   ├─Native下如何获取调用栈?
│   │   │   ├─专栏学得苦?可能你还需要一份配套学习书单
│   │   │   ├─专栏学得苦?可能是方法没找对
│   │   │   ├─导读-如何打造高质量的应用?
│   │   │   ├─开篇词-焦虑的移动开发者该如何破局?
│   │   │   ├─程序员修炼之路-设计能力的提升途径
│   │   │   ├─练习Sample跑起来-ASM插桩强化练习
│   │   │   ├─练习Sample跑起来-ASM插桩强化练习
│   │   │   ├─练习Sample跑起来-唯鹿同学的练习手记第1辑
│   │   │   ├─练习Sample跑起来-唯鹿同学的练习手记第2辑
│   │   │   ├─练习Sample跑起来-唯鹿同学的练习手记第3辑
│   │   │   ├─练习Sample跑起来-热点问题答疑第1期
│   │   │   ├─练习Sample跑起来-热点问题答疑第2期
│   │   │   ├─练习Sample跑起来-热点问题答疑第3期
│   │   │   ├─练习Sample跑起来-热点问题答疑第4期
│   │   │   ├─结束语-移动开发的今天和明天
│   │   │   ├─结课测试-这些Android知识,你都掌握了吗?
│   │   │   ├─聊聊Framework的学习方法
│   │   │   └─聊聊Framework的学习方法
│   │   ├─033-程序员的数学基础课
│   │   │   ├─01-二进制:不了解计算机的源头,你学什么编程
│   │   │   ├─02-余数:原来取余操作本身就是个哈希函数
│   │   │   ├─03-迭代法:不用编程语言的自带函数,你会如何计算平方根?
│   │   │   ├─033-程序员的数学基础课
│   │   │   ├─04-数学归纳法:如何用数学归纳提升代码的运行效率?
│   │   │   ├─05-递归(上):泛化数学归纳,如何将复杂问题简单化?
│   │   │   ├─06-递归(下):分而治之,从归并排序到MapReduce
│   │   │   ├─07-排列:如何让计算机学会“田忌赛马”?
│   │   │   ├─08-组合:如何让计算机安排世界杯的赛程?
│   │   │   ├─09-动态规划(上):如何实现基于编辑距离的查询推荐?
│   │   │   ├─10-动态规划(下):如何求得状态转移方程并进行编程实现?
│   │   │   ├─11-树的深度优先搜索(上):如何才能高效率地查字典?
│   │   │   ├─12-树的深度优先搜索(下):如何才能高效率地查字典?
│   │   │   ├─13-树的广度优先搜索(上):人际关系的六度理论是真的吗?
│   │   │   ├─14-树的广度优先搜索(下):为什么双向广度优先搜索的效率更高?
│   │   │   ├─15-从树到图:如何让计算机学会看地图?
│   │   │   ├─16-时间和空间复杂度(上):优化性能是否只是“纸上谈兵”?
│   │   │   ├─17-时间和空间复杂度(下):如何使用六个法则进行复杂度分析?
│   │   │   ├─18-总结课:数据结构、编程语句和基础算法体现了哪些数学思想?
│   │   │   ├─18-总结课:数据结构、编程语句和基础算法体现了哪些数学思想?
│   │   │   ├─19-概率和统计:编程为什么需要概率和统计?
│   │   │   ├─20-概率基础(上):一篇文章帮你理解随机变量、概率分布和期望值
│   │   │   ├─21-概率基础(下):联合概率、条件概率和贝叶斯法则,这些概率公式究竟能做什么?
│   │   │   ├─22-朴素贝叶斯:如何让计算机学会自动分类?
│   │   │   ├─23-文本分类:如何区分特定类型的新闻?
│   │   │   ├─24-语言模型:如何使用链式法则和马尔科夫假设简化概率模型?
│   │   │   ├─25-马尔科夫模型:从PageRank到语音识别,背后是什么模型在支撑?
│   │   │   ├─26-信息熵:如何通过几个问题,测出你对应的武侠人物?
│   │   │   ├─27-决策树:信息增益、增益比率和基尼指数的运用
│   │   │   ├─28-熵、信息增益和卡方:如何寻找关键特征?
│   │   │   ├─29-归一化和标准化:各种特征如何综合才是最合理的?
│   │   │   ├─30-统计意义(上):如何通过显著性检验,判断你的A-B测试结果是不是巧合?
│   │   │   ├─31-统计意义(下):如何通过显著性检验,判断你的A-B测试结果是不是巧合?
│   │   │   ├─32-概率统计篇答疑和总结:为什么会有欠拟合和过拟合?
│   │   │   ├─33-线性代数:线性代数到底都讲了些什么?
│   │   │   ├─34-向量空间模型:如何让计算机理解现实事物之间的关系?
│   │   │   ├─35-文本检索:如何让计算机处理自然语言?
│   │   │   ├─36-文本聚类:如何过滤冗余的新闻?
│   │   │   ├─37-矩阵(上):如何使用矩阵操作进行PageRank计算?
│   │   │   ├─37-矩阵(上):如何使用矩阵操作进行PageRank计算?
│   │   │   ├─38-矩阵(下):如何使用矩阵操作进行协同过滤推荐?
│   │   │   ├─39-线性回归(上):如何使用高斯消元求解线性方程组?
│   │   │   ├─40-线性回归(中):如何使用最小二乘法进行直线拟合?
│   │   │   ├─41-线性回归(下):如何使用最小二乘法进行效果验证?
│   │   │   ├─42-PCA主成分分析(上):如何利用协方差矩阵来降维?
│   │   │   ├─43-PCA主成分分析(下):为什么要计算协方差矩阵的特征值和特征向量?
│   │   │   ├─44-奇异值分解:如何挖掘潜在的语义关系?
│   │   │   ├─45-线性代数篇答疑和总结:矩阵乘法的几何意义是什么?
│   │   │   ├─46-缓存系统:如何通过哈希表和队列实现高效访问?
│   │   │   ├─47-搜索引擎(上):如何通过倒排索引和向量空间模型,打造一个简单的搜索引擎?
│   │   │   ├─48-搜索引擎(下):如何通过查询的分类,让电商平台的搜索结果更相关?
│   │   │   ├─49-推荐系统(上):如何实现基于相似度的协同过滤?
│   │   │   ├─50-推荐系统(下):如何通过SVD分析用户和物品的矩阵?
│   │   │   ├─51-综合应用篇答疑和总结:如何进行个性化用户画像的设计?
│   │   │   ├─导读:程序员应该怎么学数学?
│   │   │   ├─开篇词-作为程序员,为什么你应该学好数学?
│   │   │   ├─数学专栏课外加餐(一)-我们为什么需要反码和补码?
│   │   │   ├─数学专栏课外加餐(三):程序员需要读哪些数学书?
│   │   │   ├─数学专栏课外加餐(二)-位操作的三个应用实例
│   │   │   ├─结束语-从数学到编程,本身就是一个很长的链条
│   │   │   ├─结束语-从数学到编程,本身就是一个很长的链条
│   │   │   └─结课测试-这些数学知识你都掌握了吗?
│   │   ├─034-数据分析实战45讲
│   │   │   ├─01丨数据分析全景图及修炼指南
│   │   │   ├─02丨学习数据挖掘的最佳路径是什么?
│   │   │   ├─034-数据分析实战45讲
│   │   │   ├─03丨Python基础语法:开始你的Python之旅
│   │   │   ├─04丨Python科学计算:用NumPy快速处理数据
│   │   │   ├─05丨Python科学计算:Pandas
│   │   │   ├─06-学数据分析要掌握哪些基本概念?
│   │   │   ├─07-用户画像:标签化就是数据的抽象能力
│   │   │   ├─08-数据采集:如何自动化采集数据?
│   │   │   ├─09丨数据采集:如何用八爪鱼采集微博上的“D&G”评论
│   │   │   ├─10丨Python爬虫:如何自动化下载王祖贤海报?
│   │   │   ├─11-数据科学家80%时间都花费在了这些清洗任务上?
│   │   │   ├─12-数据集成:这些大号一共20亿粉丝?
│   │   │   ├─13-数据变换:考试成绩要求正态分布合理么?
│   │   │   ├─14丨数据可视化:掌握数据领域的万金油技能
│   │   │   ├─15丨一次学会Python数据可视化的10种技能
│   │   │   ├─16丨数据分析基础篇答疑
│   │   │   ├─17丨决策树(上):要不要去打篮球?决策树来告诉你
│   │   │   ├─18丨决策树(中):CART,一棵是回归树,另一棵是分类树
│   │   │   ├─19丨决策树(下):泰坦尼克乘客生存预测
│   │   │   ├─20丨朴素贝叶斯分类(上):如何让机器判断男女?
│   │   │   ├─21丨朴素贝叶斯分类(下):如何对文档进行分类?
│   │   │   ├─22丨SVM(上):如何用一根棍子将蓝红两色球分开?
│   │   │   ├─23丨SVM(下):如何进行乳腺癌检测?
│   │   │   ├─24丨KNN(上):如何根据打斗和接吻次数来划分电影类型?
│   │   │   ├─25丨KNN(下):如何对手写数字进行识别?
│   │   │   ├─26丨K-Means(上):如何给20支亚洲球队做聚类?
│   │   │   ├─27丨K-Means(下):如何使用K-Means对图像进行分割?
│   │   │   ├─28丨EM聚类(上):如何将一份菜等分给两个人?
│   │   │   ├─29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分
│   │   │   ├─30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
│   │   │   ├─30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
│   │   │   ├─31丨关联规则挖掘(下):导演如何选择演员?
│   │   │   ├─32丨PageRank(上):搞懂Google的PageRank算法
│   │   │   ├─33丨PageRank(下):分析希拉里邮件中的人物关系
│   │   │   ├─34丨AdaBoost(上):如何使用AdaBoost提升分类器性能?
│   │   │   ├─35丨AdaBoost(下):如何使用AdaBoost对房价进行预测?
│   │   │   ├─36丨数据分析算法篇答疑
│   │   │   ├─37丨数据采集实战:如何自动化运营微博?
│   │   │   ├─38丨数据可视化实战:如何给毛不易的歌曲做词云展示?
│   │   │   ├─39丨数据挖掘实战(1):信用卡违约率分析
│   │   │   ├─40丨数据挖掘实战(2):信用卡诈骗分析
│   │   │   ├─41丨数据挖掘实战(3):如何对比特币走势进行预测?
│   │   │   ├─42丨当我们谈深度学习的时候,我们都在谈什么?
│   │   │   ├─43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
│   │   │   ├─44丨如何培养你的数据分析思维?
│   │   │   ├─45丨求职简历中没有相关项目经验,怎么办?
│   │   │   ├─加餐丨在社交网络上刷粉刷量,技术上是如何实现的?
│   │   │   ├─开篇词-你为什么需要数据分析能力?
│   │   │   ├─结束语丨当大家都在讲知识和工具的时候,我更希望你重视思维和实战
│   │   │   └─结课测试-数据分析的这些知识,你真的掌握了吗?
│   │   ├─035-10x程序员工作法
│   │   │   ├─01-10x程序员是如何思考的?
│   │   │   ├─02-以终为始:如何让你的努力不白费?
│   │   │   ├─03-DoD的价值:你完成了工作,为什么他们还不满意?
│   │   │   ├─035-10x程序员工作法
│   │   │   ├─04-接到需求任务,你要先做哪件事?
│   │   │   ├─05-持续集成:集成本身就是写代码的一个环节
│   │   │   ├─06-精益创业:产品经理不靠谱,你该怎么办?
│   │   │   ├─07-解决了很多技术问题,为什么你依然在“坑”里?
│   │   │   ├─08-为什么说做事之前要先进行推演?
│   │   │   ├─09-你的工作可以用数字衡量吗?
│   │   │   ├─10-迭代0-启动开发之前,你应该准备什么?
│   │   │   ├─11-向埃隆·马斯克学习任务分解
│   │   │   ├─12-测试也是程序员的事吗?
│   │   │   ├─13-先写测试,就是测试驱动开发吗?
│   │   │   ├─14-大师级程序员的工作秘笈
│   │   │   ├─15-一起练习:手把手带你分解任务
│   │   │   ├─16-为什么你的测试不够好?
│   │   │   ├─17-程序员也可以“砍”需求吗?
│   │   │   ├─18-需求管理:太多人给你安排任务,怎么办?
│   │   │   ├─19-如何用最小的代价做产品?
│   │   │   ├─20-为什么世界和你的理解不一样?
│   │   │   ├─21-你的代码为谁而写?
│   │   │   ├─22-轻量级沟通:你总是在开会吗?
│   │   │   ├─23-可视化:一种更为直观的沟通方式
│   │   │   ├─24-快速反馈:为什么你们公司总是做不好持续集成?
│   │   │   ├─25-开发中的问题一再出现,应该怎么办?
│   │   │   ├─26-作为程序员,你也应该聆听用户声音
│   │   │   ├─27-尽早暴露问题:为什么被指责的总是你?
│   │   │   ├─28-结构化:写文档也是一种学习方式
│   │   │   ├─29-“懒惰”应该是所有程序员的骄傲
│   │   │   ├─30-一个好的项目自动化应该是什么样子的?
│   │   │   ├─31-程序员怎么学习运维知识?
│   │   │   ├─32-持续交付:有持续集成就够了吗?
│   │   │   ├─33-如何做好验收测试?
│   │   │   ├─34-你的代码是怎么变混乱的?
│   │   │   ├─35-总是在说MVC分层架构,但你真的理解分层吗?
│   │   │   ├─36-为什么总有人觉得5万块钱可以做一个淘宝?
│   │   │   ├─37-先做好DDD再谈微服务吧,那只是一种部署形式
│   │   │   ├─38-新入职一家公司,怎么快速进入工作状态?
│   │   │   ├─39-面对遗留系统,你应该这样做
│   │   │   ├─40-我们应该如何保持竞争力?
│   │   │   ├─划重点-“综合运用”主题内容的全盘回顾
│   │   │   ├─划重点-“自动化”主题的重点内容回顾汇总
│   │   │   ├─划重点-“自动化”主题的重点内容回顾汇总
│   │   │   ├─划重点-一次关于“沟通反馈”主题内容的复盘
│   │   │   ├─划重点-关于“以终为始”,你要记住的9句话
│   │   │   ├─划重点-关于“任务分解”,你要重点掌握哪些事?
│   │   │   ├─加餐-你真的了解重构吗?
│   │   │   ├─开篇词-程序员解决的问题,大多不是程序问题
│   │   │   ├─开篇词-程序员解决的问题,大多不是程序问题
│   │   │   ├─总复习-重新审视“最佳实践”
│   │   │   ├─总复习-重新来“看书”
│   │   │   ├─用户故事-站在前人的肩膀上,领取属于你的高效工作秘籍
│   │   │   ├─第三季回归-我们一起来写好代码!
│   │   │   ├─第二季回归-我带着软件设计课回来了!
│   │   │   ├─第四季回归-通向高质量代码之路
│   │   │   ├─答疑解惑-如何分解一个你不了解的技术任务?
│   │   │   ├─答疑解惑-如何在实际工作中推行新观念?
│   │   │   ├─答疑解惑-如何管理你的上级?
│   │   │   ├─答疑解惑-如何管理你的上级?
│   │   │   ├─答疑解惑-持续集成、持续交付,然后呢?
│   │   │   ├─答疑解惑-持续集成,一条贯穿诸多实践的主线
│   │   │   ├─结束语-少做事,才能更有效地工作
│   │   │   └─结课测试-这些10x程序员工作法的知识你都掌握了吗?
│   │   ├─036-代码精进之路
│   │   │   ├─01-从条件运算符说起,反思什么是好代码
│   │   │   ├─02-把错误关在笼子里的五道关卡
│   │   │   ├─03-优秀程序员的六个关键特质
│   │   │   ├─036-代码精进之路
│   │   │   ├─04-代码规范的价值:复盘苹果公司的GoToFail漏洞
│   │   │   ├─05-经验总结:如何给你的代码起好名字?
│   │   │   ├─06-代码整理的关键逻辑和最佳案例
│   │   │   ├─07-写好注释,真的是小菜一碟吗?
│   │   │   ├─08-写好声明的“八项纪律”
│   │   │   ├─09-怎么用好Java注解?
│   │   │   ├─10-异常处理都有哪些陷阱?
│   │   │   ├─11-组织好代码段,让人对它“一见钟情”
│   │   │   ├─11-组织好代码段,让人对它“一见钟情”
│   │   │   ├─12丨组织好代码文件,要有“用户思维”
│   │   │   ├─13-接口规范,是协作的合约
│   │   │   ├─14-怎么写好用户指南?
│   │   │   ├─15-编写规范代码的检查清单
│   │   │   ├─16丨代码“规范”篇用户答疑
│   │   │   ├─17-为什么需要经济的代码?
│   │   │   ├─18丨思考框架:什么样的代码才是高效的代码?
│   │   │   ├─19-怎么避免过度设计?
│   │   │   ├─20-简单和直观,是永恒的解决方案
│   │   │   ├─21-怎么设计一个简单又直观的接口?
│   │   │   ├─22丨高效率,从超越线程同步开始!
│   │   │   ├─23-怎么减少内存使用,减轻内存管理负担?
│   │   │   ├─24-黑白灰,理解延迟分配的两面性
│   │   │   ├─25-使用有序的代码,调动异步的事件
│   │   │   ├─26-有哪些招惹麻烦的性能陷阱?
│   │   │   ├─27-怎么编写可持续发展的代码?
│   │   │   ├─28-怎么尽量“不写”代码?
│   │   │   ├─29-编写经济代码的检查清单
│   │   │   ├─30丨“代码经济篇”答疑汇总
│   │   │   ├─31-为什么安全的代码这么重要?
│   │   │   ├─32-如何评估代码的安全缺陷?
│   │   │   ├─33-整数的运算有哪些安全威胁?
│   │   │   ├─34-数组和集合,可变量的安全陷阱
│   │   │   ├─35-怎么处理敏感信息?
│   │   │   ├─36-继承有什么安全缺陷?
│   │   │   ├─37-边界,信任的分水岭
│   │   │   ├─38-对象序列化的危害有多大?
│   │   │   ├─39-怎么控制好代码的权力?
│   │   │   ├─40-规范,代码长治久安的基础
│   │   │   ├─41-预案,代码的主动风险管理
│   │   │   ├─41-预案,代码的主动风险管理
│   │   │   ├─42-纵深,代码安全的深度防御
│   │   │   ├─43-编写安全代码的最佳实践清单
│   │   │   ├─44-“代码安全篇”答疑汇总
│   │   │   ├─Q&A加餐丨关于代码质量,你关心的那些事儿
│   │   │   ├─开篇词-你写的每一行代码,都是你的名片
│   │   │   ├─期末测试丨有关代码编写的那些准则,你掌握了多少呢?
│   │   │   ├─结束语|如何成为一个编程好手?
│   │   │   └─结束语|如何成为一个编程好手?
│   │   ├─037-重学前端
│   │   │   ├─037-重学前端
│   │   │   ├─CSSFlex排版:为什么垂直居中这么难?
│   │   │   ├─CSS动画与交互:为什么动画要用贝塞尔曲线这么奇怪的东西?
│   │   │   ├─CSS小实验:动手做,用代码挖掘CSS属性
│   │   │   ├─CSS排版:从毕升开始,我们就开始用正常流了
│   │   │   ├─CSS渲染:CSS是如何绘制颜色的?
│   │   │   ├─CSS语法:除了属性和选择器,你还需要知道这些带@的规则
│   │   │   ├─CSS选择器:伪元素是怎么回事儿?
│   │   │   ├─CSS选择器:如何选中svg里的a元素?
│   │   │   ├─HTML·ARIA:可访问性是只给盲人用的特性么?
│   │   │   ├─HTML元信息类标签:你知道head里一共能写哪几种标签吗?
│   │   │   ├─HTML小实验:用代码分析HTML标准
│   │   │   ├─HTML替换型元素:为什么link一个CSS要用href,而引入js要用src呢?
│   │   │   ├─HTML语义:div和span不是够用了吗?
│   │   │   ├─HTML语义:如何运用语义类标签来呈现Wiki网页?
│   │   │   ├─HTML语言:DTD到底是什么?
│   │   │   ├─HTML链接:除了a标签,还有哪些标签叫链接?
│   │   │   ├─JavaScript对象:你知道全部的对象分类吗?
│   │   │   ├─JavaScript对象:我们真的需要模拟类吗?
│   │   │   ├─JavaScript对象:面向对象还是基于对象?
│   │   │   ├─JavaScript执行(一):Promise里的代码为什么比setTimeout先执行?
│   │   │   ├─JavaScript执行(三):你知道现在有多少种函数吗?
│   │   │   ├─JavaScript执行(二):闭包和执行上下文到底是怎么回事?
│   │   │   ├─JavaScript执行(四):try里面放return,finally还会执行吗?
│   │   │   ├─JavaScript类型:关于类型,有哪些你不知道的细节?
│   │   │   ├─JavaScript词法:为什么12
│   │   │   ├─JavaScript语法(一):在script标签写export为什么会抛错?
│   │   │   ├─JavaScript语法(三):什么是表达式语句?
│   │   │   ├─JavaScript语法(二):你知道哪些JavaScript语句?
│   │   │   ├─JavaScript语法(四):新加入的-运算符,哪里有些不一样呢?
│   │   │   ├─JavaScript语法(预备篇):到底要不要写分号呢?
│   │   │   ├─列一份前端知识架构图
│   │   │   ├─前端架构:前端架构有哪些核心问题?
│   │   │   ├─加餐-前端与图形学
│   │   │   ├─加餐-前端交互基础设施的建设
│   │   │   ├─尾声-长风破浪会有时,直挂云帆济沧海
│   │   │   ├─工具链:什么样的工具链才能提升团队效率?
│   │   │   ├─开篇词-从今天起,重新理解前端
│   │   │   ├─性能:前端的性能到底对业务数据有多大的影响?
│   │   │   ├─持续集成:几十个前端一起工作,如何保证工作质量?
│   │   │   ├─搭建系统:大量的低价值需求应该如何应对?
│   │   │   ├─新年彩蛋-2019,有哪些前端技术值得关注?
│   │   │   ├─明确你的前端学习路线与方法
│   │   │   ├─期中答疑-name(){}与name-function(){},两种写法有什么区别吗?
│   │   │   ├─期末答疑(一):前端代码单元测试怎么做?
│   │   │   ├─期末答疑(二):前端架构中,每个逻辑页面如何可以做到独立发布呢?
│   │   │   ├─浏览器API(小实验):动手整理全部API
│   │   │   ├─浏览器CSSOM:如何获取一个元素的准确位置
│   │   │   ├─浏览器DOM:你知道HTML的节点有哪几种吗?
│   │   │   ├─浏览器事件:为什么会有捕获过程和冒泡过程?
│   │   │   ├─浏览器:一个浏览器是如何工作的(阶段三)
│   │   │   ├─浏览器:一个浏览器是如何工作的?(阶段一)
│   │   │   ├─浏览器:一个浏览器是如何工作的?(阶段二)
│   │   │   ├─浏览器:一个浏览器是如何工作的?(阶段五)
│   │   │   ├─浏览器:一个浏览器是如何工作的?(阶段四)
│   │   │   ├─用户故事-那些你与“重学前端”的不解之缘
│   │   │   ├─答疑加餐-学了这么多前端的“小众”知识,到底对我有什么帮助?
│   │   │   ├─(小实验)理解编译原理:一个四则运算的解释器
│   │   │   └─(小实验)理解编译原理:一个四则运算的解释器
│   │   ├─038-面试现场
│   │   │   ├─01-公司到底想要什么样的人?
│   │   │   ├─01-公司到底想要什么样的人?
│   │   │   ├─01-考官面对面:程序员择业时常碰到的几个疑惑
│   │   │   ├─02-想要成功面试,先要弄懂面试过程
│   │   │   ├─02-考官面对面:如何有效地准备一场面试?
│   │   │   ├─03-考官面对面:面试注意事项及面试官常见的思维模式
│   │   │   ├─03-面试官的面试逻辑是什么?
│   │   │   ├─038-面试现场
│   │   │   ├─04-现在的你,到底该不该换工作
│   │   │   ├─04-考官面对面:面试与应聘,如何站在对方的角度考虑问题?
│   │   │   ├─05-喜欢或擅长的工作,你该选哪一个?
│   │   │   ├─05-考官面对面:我是如何面试程序员的?
│   │   │   ├─06-考官面对面:我们是如何面试架构师的?
│   │   │   ├─06-职业规划一:你真的想好要怎么发展了吗?
│   │   │   ├─07-考官面对面:面试经验谈之校招与社招
│   │   │   ├─07-职业规划二:程序员后来都去干啥了?
│   │   │   ├─08-如何让你的简历更受青睐
│   │   │   ├─09-经历没有亮点可讲?你需要做份“详历”
│   │   │   ├─10-面试紧张怎么办?
│   │   │   ├─11-面试答疑(一):说说你面试中的一些困惑
│   │   │   ├─12-如何做好开场:给自我介绍加“特效”
│   │   │   ├─13-你真能讲明白技术吗
│   │   │   ├─14-怎样展示你在项目中的重要性?
│   │   │   ├─15-如何认识自己的优缺点?
│   │   │   ├─16-透过兴趣爱好,面试官可以看出什么?
│   │   │   ├─17-如何让你的回答更到位?
│   │   │   ├─18-被面试官问住了怎么办?
│   │   │   ├─19-应该如何向面试官提问?
│   │   │   ├─20-怎么谈薪水比较好?
│   │   │   ├─21-面试答疑(二):面试问答环节的一些思考
│   │   │   ├─22-怎样体现你的学习能力强?
│   │   │   ├─23-怎么体现你能把工作越做越好?
│   │   │   ├─24-怎样体现你的协作能力强?
│   │   │   ├─25-不是领导,怎么体现你的领导力?
│   │   │   ├─26-你解决问题的能力有多强?
│   │   │   ├─27-盘点面试官和应聘者的认知差异
│   │   │   ├─27-盘点面试官和应聘者的认知差异
│   │   │   ├─28-通过面试,你能了解这个团队多少?
│   │   │   ├─29-合同都签了,老板却不放你走,怎么办?
│   │   │   ├─30-面试答疑(三):如何更好地体现你的能力?
│   │   │   ├─开篇词-面试,这样做会功到自然成
│   │   │   ├─结束语-以终为始,闭环迭代,持续提高
│   │   │   └─结课测试|这些面试技巧你都掌握了吗?
│   │   ├─039-软件工程之美
│   │   │   ├─01-到底应该怎样理解软件工程?
│   │   │   ├─02-工程思维:把每件事都当作一个项目来推进
│   │   │   ├─03-瀑布模型:像工厂流水线一样把软件开发分层化
│   │   │   ├─039-软件工程之美
│   │   │   ├─04-瀑布模型之外,还有哪些开发模型?
│   │   │   ├─05-敏捷开发到底是想解决什么问题?
│   │   │   ├─06-大厂都在用哪些敏捷方法?(上)
│   │   │   ├─07-大厂都在用哪些敏捷方法?(下)
│   │   │   ├─08-怎样平衡软件质量与时间成本范围的关系?
│   │   │   ├─09-为什么软件工程项目普遍不重视可行性分析?
│   │   │   ├─10-如果你想技术转管理,先来试试管好一个项目
│   │   │   ├─11-项目计划:代码未动,计划先行
│   │   │   ├─12-流程和规范:红绿灯不是约束,而是用来提高效率
│   │   │   ├─13-白天开会,加班写代码的节奏怎么破?
│   │   │   ├─14-项目管理工具:一切管理问题,都应思考能否通过工具解决
│   │   │   ├─15-风险管理:不能盲目乐观,凡事都应该有B计划
│   │   │   ├─16-怎样才能写好项目文档?
│   │   │   ├─17-需求分析到底要分析什么?怎么分析?
│   │   │   ├─18-原型设计:如何用最小的代价完成产品特性?
│   │   │   ├─19-作为程序员,你应该有产品意识
│   │   │   ├─20-如何应对让人头疼的需求变更问题?
│   │   │   ├─21-架构设计:普通程序员也能实现复杂系统?
│   │   │   ├─22-如何为项目做好技术选型?
│   │   │   ├─23-架构师:不想当架构师的程序员不是好程序员
│   │   │   ├─24-技术债务:是继续修修补补凑合着用,还是推翻重来?
│   │   │   ├─25-有哪些方法可以提高开发效率?
│   │   │   ├─26-持续交付:如何做到随时发布新版本到生产环境?
│   │   │   ├─27-软件工程师的核心竞争力是什么?(上)
│   │   │   ├─28-软件工程师的核心竞争力是什么?(下)
│   │   │   ├─29-自动化测试:如何把Bug杀死在摇篮里?
│   │   │   ├─29-自动化测试:如何把Bug杀死在摇篮里?
│   │   │   ├─30-用好源代码管理工具,让你的协作更高效
│   │   │   ├─31-软件测试要为产品质量负责吗?
│   │   │   ├─32-软件测试:什么样的公司需要专职测试?
│   │   │   ├─33-测试工具:为什么不应该通过QQ-微信-邮件报Bug?
│   │   │   ├─34-账号密码泄露成灾,应该怎样预防?
│   │   │   ├─35-版本发布:软件上线只是新的开始
│   │   │   ├─36-DevOps工程师到底要做什么事情?
│   │   │   ├─37-遇到线上故障,你和高手的差距在哪里?
│   │   │   ├─38-日志管理:如何借助工具快速发现和定位产品问题?
│   │   │   ├─39-项目总结:做好项目复盘,把经验变成能力
│   │   │   ├─40-最佳实践:小团队如何应用软件工程?
│   │   │   ├─41-为什么程序员的业余项目大多都死了?
│   │   │   ├─42-反面案例:盘点那些失败的软件项目
│   │   │   ├─43-以VSCode为例,看大型开源项目是如何应用软件工程的?
│   │   │   ├─43-以VSCode为例,看大型开源项目是如何应用软件工程的?
│   │   │   ├─44-微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
│   │   │   ├─45-从软件工程的角度看微服务、云计算、人工智能这些新技术
│   │   │   ├─“一问一答”第1期-30个软件开发常见问题解决策略
│   │   │   ├─“一问一答”第2期-30个软件开发常见问题解决策略
│   │   │   ├─“一问一答”第3期-18个软件开发常见问题解决策略
│   │   │   ├─“一问一答”第4期-14个软件开发常见问题解决策略
│   │   │   ├─“一问一答”第5期(内含彩蛋)-22个软件开发常见问题解决策略
│   │   │   ├─学习攻略-怎样学好软件工程?
│   │   │   ├─开篇词-你为什么应该学好软件工程?
│   │   │   ├─特别放送-从软件工程的角度解读任正非的新年公开信
│   │   │   ├─结束语-万事皆项目,软件工程无处不在
│   │   │   └─结课测试-这些软件工程知识,你都掌握了吗?
│   │   ├─040-Java并发编程实战
│   │   │   ├─01-可见性、原子性和有序性问题:并发编程Bug的源头
│   │   │   ├─02-Java内存模型:看Java如何解决可见性和有序性问题
│   │   │   ├─03-互斥锁(上):解决原子性问题
│   │   │   ├─04-互斥锁(下):如何用一把锁保护多个资源?
│   │   │   ├─040-Java并发编程实战
│   │   │   ├─05-一不小心就死锁了,怎么办?
│   │   │   ├─06-用“等待-通知”机制优化循环等待
│   │   │   ├─07-安全性、活跃性以及性能问题
│   │   │   ├─08-管程:并发编程的万能钥匙
│   │   │   ├─09-Java线程(上):Java线程的生命周期
│   │   │   ├─10-Java线程(中):创建多少线程才是合适的?
│   │   │   ├─11-Java线程(下):为什么局部变量是线程安全的?
│   │   │   ├─12-如何用面向对象思想写好并发程序?
│   │   │   ├─12-如何用面向对象思想写好并发程序?
│   │   │   ├─13-理论基础模块热点问题答疑
│   │   │   ├─14-Lock和Condition(上):隐藏在并发包中的管程
│   │   │   ├─15-Lock和Condition(下):Dubbo如何用管程实现异步转同步?
│   │   │   ├─16-Semaphore:如何快速实现一个限流器?
│   │   │   ├─16-Semaphore:如何快速实现一个限流器?
│   │   │   ├─17-ReadWriteLock:如何快速实现一个完备的缓存?
│   │   │   ├─18-StampedLock:有没有比读写锁更快的锁?
│   │   │   ├─19-CountDownLatch和CyclicBarrier:如何让多线程步调一致?
│   │   │   ├─20-并发容器:都有哪些“坑”需要我们填?
│   │   │   ├─21-原子类:无锁工具类的典范
│   │   │   ├─22-Executor与线程池:如何创建正确的线程池?
│   │   │   ├─23-Future:如何用多线程实现最优的“烧水泡茶”程序?
│   │   │   ├─24-CompletableFuture:异步编程没那么难
│   │   │   ├─25-CompletionService:如何批量执行异步任务?
│   │   │   ├─26-Fork-Join:单机版的MapReduce
│   │   │   ├─27-并发工具类模块热点问题答疑
│   │   │   ├─28-Immutability模式:如何利用不变性解决并发问题?
│   │   │   ├─29-Copy-on-Write模式:不是延时策略的COW
│   │   │   ├─30-线程本地存储模式:没有共享,就没有伤害
│   │   │   ├─31-GuardedSuspension模式:等待唤醒机制的规范实现
│   │   │   ├─32-Balking模式:再谈线程安全的单例模式
│   │   │   ├─33-Thread-Per-Message模式:最简单实用的分工方法
│   │   │   ├─34-WorkerThread模式:如何避免重复创建线程?
│   │   │   ├─34-WorkerThread模式:如何避免重复创建线程?
│   │   │   ├─35-两阶段终止模式:如何优雅地终止线程?
│   │   │   ├─36-生产者-消费者模式:用流水线思想提高效率
│   │   │   ├─37-设计模式模块热点问题答疑
│   │   │   ├─38-案例分析(一):高性能限流器GuavaRateLimiter
│   │   │   ├─39-案例分析(二):高性能网络应用框架Netty
│   │   │   ├─3个用户来信-打开一个新的并发世界
│   │   │   ├─40-案例分析(三):高性能队列Disruptor
│   │   │   ├─40-案例分析(三):高性能队列Disruptor
│   │   │   ├─41-案例分析(四):高性能数据库连接池HiKariCP
│   │   │   ├─42-Actor模型:面向对象原生的并发模型
│   │   │   ├─43-软件事务内存:借鉴数据库的并发经验
│   │   │   ├─44-协程:更轻量级的线程
│   │   │   ├─45-CSP模型:Golang的主力队员
│   │   │   ├─学习攻略-如何才能学好并发编程?
│   │   │   ├─开篇词-你为什么需要学习并发编程?
│   │   │   ├─用户来信-真好,面试考到这些并发编程,我都答对了!
│   │   │   ├─结束语-十年之后,初心依旧
│   │   │   └─结课测试-这些Java并发编程实战的知识你都掌握了吗?
│   │   ├─041-iOS开发高手课
│   │   │   ├─01-建立你自己的iOS开发知识体系
│   │   │   ├─02-App启动速度怎么做优化与监控?
│   │   │   ├─03-AutoLayout是怎么进行自动布局的,性能如何?
│   │   │   ├─04-项目大了人员多了,架构怎么设计更合理?
│   │   │   ├─041-iOS开发高手课
│   │   │   ├─05-链接器:符号是怎么绑定到地址上的?
│   │   │   ├─06-App如何通过注入动态库的方式实现极速编译调试?
│   │   │   ├─07-Clang、Infer和OCLint,我们应该使用谁来做静态分析?
│   │   │   ├─08-如何利用Clang为App提质?
│   │   │   ├─09-无侵入的埋点方案如何实现?
│   │   │   ├─10-包大小:如何从资源和代码层面实现全方位瘦身?
│   │   │   ├─11-热点问题答疑(一):基础模块问题答疑
│   │   │   ├─12-iOS崩溃千奇百怪,如何全面监控?
│   │   │   ├─13-如何利用RunLoop原理去监控卡顿?
│   │   │   ├─14-临近OOM,如何获取详细内存分配信息,分析内存问题?
│   │   │   ├─15-日志监控:怎样获取App中的全量日志?
│   │   │   ├─16-性能监控:衡量App质量的那把尺
│   │   │   ├─17-远超你想象的多线程的那些坑
│   │   │   ├─18-怎么减少App电量消耗?
│   │   │   ├─19-热点问题答疑(二):基础模块问题答疑
│   │   │   ├─20-iOS开发的最佳学习路径是什么?
│   │   │   ├─21-除了Cocoa,iOS还可以用哪些GUI框架开发?
│   │   │   ├─22-细说iOS响应式框架变迁,哪些思想可以为我所用?
│   │   │   ├─23-如何构造酷炫的物理效果和过场动画效果?
│   │   │   ├─24-A-B测试:验证决策效果的利器
│   │   │   ├─25-怎样构建底层的发布和订阅事件总线?
│   │   │   ├─26-如何提高JSON解析的性能?
│   │   │   ├─27-如何用Flexbox思路开发?跟自动布局比,Flexbox好在哪?
│   │   │   ├─28-怎么应对各种富文本表现需求?
│   │   │   ├─29-如何在iOS中进行面向测试驱动开发和面向行为驱动开发?
│   │   │   ├─30-如何制定一套适合自己团队的iOS编码规范?
│   │   │   ├─31-iOS开发学习资料和书单推荐
│   │   │   ├─32-热点问题答疑(三)
│   │   │   ├─33-iOS系统内核XNU:App如何加载?
│   │   │   ├─34-iOS黑魔法RuntimeMethodSwizzling背后的原理
│   │   │   ├─35-libffi:动态调用和定义C函数
│   │   │   ├─36-iOS是怎么管理内存的?
│   │   │   ├─37-如何编写Clang插件?
│   │   │   ├─38-热点问题答疑(四)
│   │   │   ├─39-打通前端与原生的桥梁:JavaScriptCore能干哪些事情?
│   │   │   ├─40-ReactNative、Flutter等,这些跨端方案怎么选?
│   │   │   ├─41-原生布局转到前端布局,开发思路有哪些转变?
│   │   │   ├─42-iOS原生、大前端和Flutter分别是怎么渲染的?
│   │   │   ├─43-剖析使App具有动态化和热更新能力的方案
│   │   │   ├─开篇词-锚定一个点,然后在这个点上深耕
│   │   │   ├─用户故事-我是如何学习这个专栏的?
│   │   │   ├─结束语-慢几步,深几度
│   │   │   ├─结束语-慢几步,深几度
│   │   │   └─结课测试-这些iOS的开发知识你都掌握了吗?
│   │   ├─042-趣谈Linux操作系统
│   │   │   ├─01-入学测验:你究竟对Linux操作系统了解多少?
│   │   │   ├─02-学习路径:爬过这六个陡坡,你就能对Linux了如指掌
│   │   │   ├─03-你可以把Linux内核当成一家软件外包公司的老板
│   │   │   ├─04-快速上手几个Linux命令:每家公司都有自己的黑话
│   │   │   ├─042-趣谈Linux操作系统
│   │   │   ├─05-学会几个系统调用:咱们公司能接哪些类型的项目?
│   │   │   ├─06-x86架构:有了开放的架构,才能打造开放的营商环境
│   │   │   ├─07-从BIOS到bootloader:创业伊始,有活儿老板自己上
│   │   │   ├─08-内核初始化:生意做大了就得成立公司
│   │   │   ├─09-系统调用:公司成立好了就要开始接项目
│   │   │   ├─10-进程:公司接这么多项目,如何管?
│   │   │   ├─10-进程:公司接这么多项目,如何管?
│   │   │   ├─11-线程:如何让复杂的项目并行执行?
│   │   │   ├─12-进程数据结构(上):项目多了就需要项目管理系统
│   │   │   ├─13-进程数据结构(中):项目多了就需要项目管理系统
│   │   │   ├─14-进程数据结构(下):项目多了就需要项目管理系统
│   │   │   ├─15-调度(上):如何制定项目管理流程?
│   │   │   ├─16-调度(中):主动调度是如何发生的?
│   │   │   ├─17-调度(下):抢占式调度是如何发生的?
│   │   │   ├─18-进程的创建:如何发起一个新项目?
│   │   │   ├─19-线程的创建:如何执行一个新子项目?
│   │   │   ├─20-内存管理(上):为客户保密,规划进程内存空间布局
│   │   │   ├─21-内存管理(下):为客户保密,项目组独享会议室封闭开发
│   │   │   ├─22-进程空间管理:项目组还可以自行布置会议室
│   │   │   ├─23-物理内存管理(上):会议室管理员如何分配会议室?
│   │   │   ├─24-物理内存管理(下):会议室管理员如何分配会议室?
│   │   │   ├─24-物理内存管理(下):会议室管理员如何分配会议室?
│   │   │   ├─25-用户态内存映射:如何找到正确的会议室?
│   │   │   ├─26-内核态内存映射:如何找到正确的会议室?
│   │   │   ├─27-文件系统:项目成果要归档,我们就需要档案库
│   │   │   ├─28-硬盘文件系统:如何最合理地组织档案库的文档?
│   │   │   ├─29-虚拟文件系统:文件多了就需要档案管理系统
│   │   │   ├─30-文件缓存:常用文档应该放在触手可得的地方
│   │   │   ├─31-输入与输出:如何建立售前售后生态体系?
│   │   │   ├─31-输入与输出:如何建立售前售后生态体系?
│   │   │   ├─32-字符设备(上):如何建立直销模式?
│   │   │   ├─33-字符设备(下):如何建立直销模式?
│   │   │   ├─34-块设备(上):如何建立代理商销售模式?
│   │   │   ├─35-块设备(下):如何建立代理商销售模式?
│   │   │   ├─36-进程间通信:遇到大项目需要项目组之间的合作才行
│   │   │   ├─37-信号(上):项目组A完成了,如何及时通知项目组B?
│   │   │   ├─38-信号(下):项目组A完成了,如何及时通知项目组B?
│   │   │   ├─39-管道:项目组A完成了,如何交接给项目组B?
│   │   │   ├─40-IPC(上):不同项目组之间抢资源,如何协调?
│   │   │   ├─41-IPC(中):不同项目组之间抢资源,如何协调?
│   │   │   ├─42-IPC(下):不同项目组之间抢资源,如何协调?
│   │   │   ├─43-Socket通信:遇上特大项目,要学会和其他公司合作
│   │   │   ├─43-Socket通信:遇上特大项目,要学会和其他公司合作
│   │   │   ├─43预习-Socket通信之网络协议基本原理
│   │   │   ├─44-Socket内核数据结构:如何成立特大项目合作部?
│   │   │   ├─45-发送网络包(上):如何表达我们想让合作伙伴做什么?
│   │   │   ├─46-发送网络包(下):如何表达我们想让合作伙伴做什么?
│   │   │   ├─47-接收网络包(上):如何搞明白合作伙伴让我们做什么?
│   │   │   ├─48-接收网络包(下):如何搞明白合作伙伴让我们做什么?
│   │   │   ├─49-虚拟机:如何成立子公司,让公司变集团?
│   │   │   ├─50-计算虚拟化之CPU(上):如何复用集团的人力资源?
│   │   │   ├─51-计算虚拟化之CPU(下):如何复用集团的人力资源?
│   │   │   ├─52-计算虚拟化之内存:如何建立独立的办公室?
│   │   │   ├─53-存储虚拟化(上):如何建立自己保管的单独档案库?
│   │   │   ├─53-存储虚拟化(上):如何建立自己保管的单独档案库?
│   │   │   ├─54-存储虚拟化(下):如何建立自己保管的单独档案库?
│   │   │   ├─55-网络虚拟化:如何成立独立的合作部?
│   │   │   ├─56-容器:大公司为保持创新,鼓励内部创业
│   │   │   ├─57-Namespace技术:内部创业公司应该独立运营
│   │   │   ├─57-Namespace技术:内部创业公司应该独立运营
│   │   │   ├─58-cgroup技术:内部创业公司应该独立核算成本
│   │   │   ├─59-数据中心操作系统:上市敲钟
│   │   │   ├─60-搭建操作系统实验环境(上):授人以鱼不如授人以渔
│   │   │   ├─61-搭建操作系统实验环境(下):授人以鱼不如授人以渔
│   │   │   ├─62-知识串讲:用一个创业故事串起操作系统原理(一)
│   │   │   ├─63-知识串讲:用一个创业故事串起操作系统原理(二)
│   │   │   ├─64-知识串讲:用一个创业故事串起操作系统原理(三)
│   │   │   ├─65-知识串讲:用一个创业故事串起操作系统原理(四)
│   │   │   ├─66-知识串讲:用一个创业故事串起操作系统原理(五)
│   │   │   ├─“趣谈Linux操作系统”食用指南
│   │   │   ├─学习攻略(一):学好操作系统,需要掌握哪些前置知识?
│   │   │   ├─开篇词-为什么要学习Linux操作系统?
│   │   │   ├─期末测试-这些操作系统问题,你真的掌握了吗?
│   │   │   ├─结束语-永远别轻视任何技术,也永远别轻视自己
│   │   │   └─结束语-永远别轻视任何技术,也永远别轻视自己
│   │   ├─043-从0开始做增长
│   │   │   ├─01预习-增长小白如何“弯道超车”?
│   │   │   ├─02预习-如何理解“增长”?
│   │   │   ├─03预习-不同职能如何做好增长?
│   │   │   ├─043-从0开始做增长
│   │   │   ├─04预习-做增长如何处理职能间的矛盾?
│   │   │   ├─05-正确目标找不对,天天加班也枉然
│   │   │   ├─06-活学活用北极星指标
│   │   │   ├─07-OKR如何助力增长?
│   │   │   ├─08-不懂用户调研?那就对了!
│   │   │   ├─09-调研目标:在差异性洞察中找到爆破点
│   │   │   ├─10-数据分析:在“花式对比”中发现玄机
│   │   │   ├─10-数据分析:在“花式对比”中发现玄机
│   │   │   ├─11-用户分类:围绕北极星指标细分人群
│   │   │   ├─12-用户访谈:像侦探一样寻找破案线索(上)
│   │   │   ├─13-用户访谈:像侦探一样寻找破案线索(下)
│   │   │   ├─14-提炼用户差异,发现增长契机
│   │   │   ├─15-挖掘产品优势,打破增长瓶颈
│   │   │   ├─15-挖掘产品优势,打破增长瓶颈
│   │   │   ├─16-定位营销差异,抢占用户心智
│   │   │   ├─17-一级方向:找到增长爆破点
│   │   │   ├─18-B端产品如何调研?
│   │   │   ├─19-全局规划增长机会
│   │   │   ├─20-统筹全局的用户增长地图
│   │   │   ├─21-案例解析:定义关键增长指标
│   │   │   ├─22-正负双向洞察,找准切入点
│   │   │   ├─23-二级机会:制定增长策略
│   │   │   ├─24-为一家濒临破产的公司制定增长策略(上)
│   │   │   ├─24-为一家濒临破产的公司制定增长策略(上)
│   │   │   ├─25-为一家濒临破产的公司制定增长策略(中)
│   │   │   ├─26-为一家濒临破产的公司制定增长策略(下)
│   │   │   ├─27-为什么指标数据怎么优化都不提升?
│   │   │   ├─28-案例解析:打造增长闭环(上)
│   │   │   ├─29-案例解析:打造增长闭环(下)
│   │   │   ├─29-案例解析:打造增长闭环(下)
│   │   │   ├─30-案例解析:唤醒沉睡用户(上)
│   │   │   ├─31-案例解析:唤醒沉睡用户(下)
│   │   │   ├─32-没有分解,就无缘增长
│   │   │   ├─33-四个要点颠覆传统需求文档
│   │   │   ├─34-三级落地:无限场景应用
│   │   │   ├─34-三级落地:无限场景应用
│   │   │   ├─35-手把手教你设计一次成功的实验(上)
│   │   │   ├─36-手把手教你设计一次成功的实验(下)
│   │   │   ├─37-积少可成多,别针换别墅
│   │   │   ├─38-四级延续:增长组件库案例
│   │   │   ├─39-以用户为中心增长
│   │   │   ├─增长导航图-增长专栏的知识架构是怎样的?
│   │   │   ├─增长导航图-增长专栏的知识架构是怎样的?
│   │   │   ├─尾声-结束意味着新的开始
│   │   │   ├─开篇词-人人都是增长官
│   │   │   ├─结课测试-这些“增长”知识,你真的掌握了吗?
│   │   │   ├─预习答疑-你需要一张思维导图吗?
│   │   │   └─预习答疑-你需要一张思维导图吗?
│   │   ├─044-许式伟的架构课
│   │   │   ├─01-架构设计的宏观视角
│   │   │   ├─02-大厦基石:无生有,有生万物
│   │   │   ├─03-汇编:编程语言的诞生(1)
│   │   │   ├─03-汇编:编程语言的诞生
│   │   │   ├─04-编程语言的进化
│   │   │   ├─044-许式伟的架构课
│   │   │   ├─05-思考题解读:如何实现可自我迭代的计算机?
│   │   │   ├─06-操作系统进场
│   │   │   ├─07-软件运行机制及内存管理
│   │   │   ├─08-操作系统内核与编程接口
│   │   │   ├─09-外存管理与文件系统
│   │   │   ├─10-输入和输出设备:交互的演进
│   │   │   ├─11-多任务:进程、线程与协程
│   │   │   ├─12-进程内协同:同步、互斥与通讯
│   │   │   ├─13-进程间的同步互斥、资源共享与通讯
│   │   │   ├─14-IP网络:连接世界的桥梁
│   │   │   ├─15-可编程的互联网世界
│   │   │   ├─16-安全管理:数字世界的守护
│   │   │   ├─17-架构:需求分析(上)
│   │   │   ├─18-架构:需求分析(下)·实战案例
│   │   │   ├─19-基础平台篇:回顾与总结
│   │   │   ├─20-桌面开发的宏观视角
│   │   │   ├─21-图形界面程序的框架
│   │   │   ├─22-桌面程序的架构建议
│   │   │   ├─23-Web开发:浏览器、小程序与PWA
│   │   │   ├─24-跨平台与Web开发的建议
│   │   │   ├─25-桌面开发的未来
│   │   │   ├─26-实战(一):怎么设计一个“画图”程序?
│   │   │   ├─26-实战(一):怎么设计一个“画图”程序?
│   │   │   ├─27-实战(二):怎么设计一个“画图”程序?
│   │   │   ├─28-实战(三):怎么设计一个“画图”程序?
│   │   │   ├─29-实战(四):怎么设计一个“画图”程序?
│   │   │   ├─30-实战(五):怎么设计一个“画图”程序?
│   │   │   ├─31-辅助界面元素的架构设计
│   │   │   ├─32-架构:系统的概要设计
│   │   │   ├─33-桌面开发篇:回顾与总结
│   │   │   ├─34-服务端开发的宏观视角
│   │   │   ├─35-流量调度与负载均衡
│   │   │   ├─36-业务状态与存储中间件
│   │   │   ├─37-键值存储与数据库
│   │   │   ├─38-文件系统与对象存储
│   │   │   ├─39-存储与缓存
│   │   │   ├─40-服务端的业务架构建议
│   │   │   ├─41-实战(一):“画图”程序后端实战
│   │   │   ├─42-实战(二):“画图”程序后端实战
│   │   │   ├─43-实战(三):“画图”程序后端实战
│   │   │   ├─44-实战(四):“画图”程序后端实战
│   │   │   ├─45-架构:怎么做详细设计?
│   │   │   ├─46-服务端开发篇:回顾与总结
│   │   │   ├─47-服务治理的宏观视角
│   │   │   ├─48-事务与工程:什么是工程师思维?
│   │   │   ├─49-发布、升级与版本管理
│   │   │   ├─50-日志、监控与报警
│   │   │   ├─51-故障域与故障预案
│   │   │   ├─52-故障排查与根因分析
│   │   │   ├─53-过载保护与容量规划
│   │   │   ├─53-过载保护与容量规划
│   │   │   ├─54-业务的可支持性与持续运营
│   │   │   ├─55-云计算、容器革命与服务端的未来
│   │   │   ├─56-服务治理篇:回顾与总结
│   │   │   ├─57-心性:架构师的修炼之道
│   │   │   ├─58-如何判断架构设计的优劣?
│   │   │   ├─59-少谈点框架,多谈点业务
│   │   │   ├─60-架构分解:边界,不断重新审视边界
│   │   │   ├─61-全局性功能的架构设计
│   │   │   ├─62-重新认识开闭原则(OCP)
│   │   │   ├─63-接口设计的准则
│   │   │   ├─64-不断完善的架构范式
│   │   │   ├─65-架构范式:文本处理
│   │   │   ├─66-架构老化与重构
│   │   │   ├─67-架构思维篇:回顾与总结
│   │   │   ├─68-软件工程的宏观视角
│   │   │   ├─69-团队的共识管理
│   │   │   ├─70-怎么写设计文档?
│   │   │   ├─71-如何阅读别人的代码?
│   │   │   ├─72-发布单元与版本管理
│   │   │   ├─73-软件质量管理:单元测试、持续构建与发布
│   │   │   ├─74-开源、云服务与外包管理
│   │   │   ├─75-软件版本迭代的规划
│   │   │   ├─76-软件工程的未来
│   │   │   ├─77-软件工程篇:回顾与总结
│   │   │   ├─加餐-如何做HTTP服务的测试?
│   │   │   ├─加餐-实战:“画图程序”的整体架构
│   │   │   ├─加餐-怎么保障发布的效率与质量?
│   │   │   ├─开篇词-怎样成长为优秀的软件架构师?
│   │   │   ├─热点观察-我看Facebook发币(上):区块链、比特币与Libra币
│   │   │   ├─热点观察-我看Facebook发币(下):深入浅出理解Libra币
│   │   │   ├─用户故事-站在更高的视角看架构
│   │   │   ├─答疑解惑-想当架构师,我需要成为“全才”吗?
│   │   │   ├─结束语-放下技术人的身段,用极限思维提升架构能力
│   │   │   ├─结课问卷获奖用户名单
│   │   │   ├─课外阅读-从《孙子兵法》看底层的自然法则
│   │   │   ├─课程迭代-84讲音频重新交付
│   │   │   └─课程迭代-84讲音频重新交付
│   │   ├─045-大规模数据处理实战
│   │   │   ├─01-为什么MapReduce会被硅谷一线公司淘汰?
│   │   │   ├─02-MapReduce后谁主沉浮:怎样设计下一代数据处理技术?
│   │   │   ├─03-大规模数据处理初体验:怎样实现大型电商热销榜?
│   │   │   ├─04-分布式系统(上):学会用服务等级协议SLA来评估你的系统
│   │   │   ├─045-大规模数据处理实战
│   │   │   ├─05-分布式系统(下):架构师不得不知的三大指标
│   │   │   ├─06-如何区分批处理还是流处理?
│   │   │   ├─06-如何区分批处理还是流处理?
│   │   │   ├─07-Workflow设计模式:让你在大规模数据世界中君临天下
│   │   │   ├─08-发布-订阅模式:流处理架构中的瑞士军刀
│   │   │   ├─09-CAP定理:三选二,架构师必须学会的取舍
│   │   │   ├─10-Lambda架构:Twitter亿级实时数据分析架构背后的倚天剑
│   │   │   ├─11-Kappa架构:利用Kafka锻造的屠龙刀
│   │   │   ├─12-我们为什么需要Spark?
│   │   │   ├─13-弹性分布式数据集:Spark大厦的地基(上)
│   │   │   ├─14-弹性分布式数据集:Spark大厦的地基(下)
│   │   │   ├─15-SparkSQL:Spark数据查询的利器
│   │   │   ├─16-SparkStreaming:Spark的实时流计算API
│   │   │   ├─17-StructuredStreaming:如何用DataFrameAPI进行实时数据分析
│   │   │   ├─18-WordCount:从零开始运行你的第一个Spark应用
│   │   │   ├─19-综合案例实战:处理加州房屋信息,构建线性回归模型
│   │   │   ├─20-流处理案例实战:分析纽约市出租车载客信息
│   │   │   ├─21-深入对比Spark与Flink:帮你系统设计两开花
│   │   │   ├─22-ApacheBeam的前世今生
│   │   │   ├─23-站在Google的肩膀上学习Beam编程模型
│   │   │   ├─24-PCollection:为什么Beam要如此抽象封装数据?
│   │   │   ├─25-Transform:Beam数据转换操作的抽象方法
│   │   │   ├─26-Pipeline:Beam如何抽象多步骤的数据流水线?
│   │   │   ├─27-PipelineI-O-Beam数据中转的设计模式
│   │   │   ├─28-如何设计创建好一个BeamPipeline?
│   │   │   ├─29-如何测试BeamPipeline?
│   │   │   ├─30-ApacheBeam实战冲刺:Beam如何runeverywhere
│   │   │   ├─31-WordCountBeamPipeline实战
│   │   │   ├─32-BeamWindow:打通流处理的任督二脉
│   │   │   ├─33-横看成岭侧成峰:再战StreamingWordCount
│   │   │   ├─34-Amazon热销榜BeamPipeline实战
│   │   │   ├─35-Facebook游戏实时流处理BeamPipeline实战(上)
│   │   │   ├─36-Facebook游戏实时流处理BeamPipeline实战(下)
│   │   │   ├─37-5G时代,如何处理超大规模物联网数据
│   │   │   ├─38-大规模数据处理在深度学习中如何应用?
│   │   │   ├─39-从SQL到StreamingSQL:突破静态数据查询的次元
│   │   │   ├─40-大规模数据处理未来之路
│   │   │   ├─FAQ第一期-学习大规模数据处理需要什么基础?
│   │   │   ├─FAQ第三期-ApacheBeam基础答疑
│   │   │   ├─FAQ第二期-Spark案例实战答疑
│   │   │   ├─加油站-Practicemakesperfect!
│   │   │   ├─开篇词-从这里开始,带你走上硅谷一线系统架构师之路
│   │   │   ├─结束语-世间所有的相遇,都是久别重逢
│   │   │   └─结束语-世间所有的相遇,都是久别重逢
│   │   ├─046-深入浅出计算机组成原理
│   │   │   ├─01-冯·诺依曼体系结构:计算机组成的金字塔
│   │   │   ├─02-给你一张知识地图,计算机组成原理应该这么学
│   │   │   ├─03-通过你的CPU主频,我们来谈谈“性能”究竟是什么?
│   │   │   ├─04-穿越功耗墙,我们该从哪些方面提升“性能”?
│   │   │   ├─046-深入浅出计算机组成原理
│   │   │   ├─05-计算机指令:让我们试试用纸带编程
│   │   │   ├─06-指令跳转:原来if
│   │   │   ├─07-函数调用:为什么会发生stackoverflow?
│   │   │   ├─08-ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?
│   │   │   ├─09-程序装载:“640K内存”真的不够用么?
│   │   │   ├─09-程序装载:“640K内存”真的不够用么?
│   │   │   ├─10-动态链接:程序内部的“共享单车”
│   │   │   ├─11-二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
│   │   │   ├─12-理解电路:从电报机到门电路,我们如何做到“千里传信”?
│   │   │   ├─13-加法器:如何像搭乐高一样搭电路(上)?
│   │   │   ├─14-乘法器:如何像搭乐高一样搭电路(下)?
│   │   │   ├─15-浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
│   │   │   ├─16-浮点数和定点数(下):深入理解浮点数到底有什么用?
│   │   │   ├─17-建立数据通路(上):指令+运算=CPU
│   │   │   ├─18-建立数据通路(中):指令+运算=CPU
│   │   │   ├─19-建立数据通路(下):指令+运算=CPU
│   │   │   ├─20-面向流水线的指令设计(上):一心多用的现代CPU
│   │   │   ├─21-面向流水线的指令设计(下):奔腾4是怎么失败的?
│   │   │   ├─22-冒险和预测(一):hazard是“危”也是“机”
│   │   │   ├─23-冒险和预测(二):流水线里的接力赛
│   │   │   ├─24-冒险和预测(三):CPU里的“线程池”
│   │   │   ├─25-冒险和预测(四):今天下雨了,明天还会下雨么?
│   │   │   ├─26-Superscalar和VLIW:如何让CPU的吞吐率超过1?
│   │   │   ├─27-SIMD:如何加速矩阵乘法?
│   │   │   ├─28-异常和中断:程序出错了怎么办?
│   │   │   ├─29-CISC和RISC:为什么手机芯片都是ARM?
│   │   │   ├─30-GPU(上):为什么玩游戏需要使用GPU?
│   │   │   ├─31-GPU(下):为什么深度学习需要使用GPU?
│   │   │   ├─32-FPGA和ASIC:计算机体系结构的黄金时代
│   │   │   ├─32-FPGA和ASIC:计算机体系结构的黄金时代
│   │   │   ├─33-解读TPU:设计和拆解一块ASIC芯片
│   │   │   ├─34-理解虚拟机:你在云上拿到的计算机是什么样的?
│   │   │   ├─35-存储器层次结构全景:数据存储的大金字塔长什么样?
│   │   │   ├─36-局部性原理:数据库性能跟不上,加个缓存就好了?
│   │   │   ├─37-高速缓存(上):“4毫秒”究竟值多少钱?
│   │   │   ├─38-高速缓存(下):你确定你的数据更新了么?
│   │   │   ├─39-MESI协议:如何让多核CPU的高速缓存保持一致?
│   │   │   ├─40-理解内存(上):虚拟内存和内存保护是什么?
│   │   │   ├─41-理解内存(下):解析TLB和内存保护
│   │   │   ├─42-总线:计算机内部的高速公路
│   │   │   ├─43-输入输出设备:我们并不是只能用灯泡显示“0”和“1”
│   │   │   ├─44-理解IOWAIT:I-O性能到底是怎么回事儿?
│   │   │   ├─45-机械硬盘:Google早期用过的“黑科技”
│   │   │   ├─46-SSD硬盘(上):如何完成性能优化的KPI?
│   │   │   ├─47-SSD硬盘(下):如何完成性能优化的KPI?
│   │   │   ├─48-DMA:为什么Kafka这么快?
│   │   │   ├─49-数据完整性(上):硬件坏了怎么办?
│   │   │   ├─50-数据完整性(下):如何还原犯罪现场?
│   │   │   ├─51-分布式计算:如果所有人的大脑都联网会怎样?
│   │   │   ├─52-设计大型DMP系统(上):MongoDB并不是什么灵丹妙药
│   │   │   ├─53-设计大型DMP系统(下):SSD拯救了所有的DBA
│   │   │   ├─54-理解Disruptor(上):带你体会CPU高速缓存的风驰电掣
│   │   │   ├─55-理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?
│   │   │   ├─FAQ第一期-学与不学,知识就在那里,不如就先学好了
│   │   │   ├─FAQ第二期-世界上第一个编程语言是怎么来的?
│   │   │   ├─开篇词-为什么你需要学习计算机组成原理?
│   │   │   ├─特别加餐-我在2019年F8大会的两日见闻录
│   │   │   ├─特别加餐-我的一天怎么过?
│   │   │   ├─用户故事-赵文海:怕什么真理无穷,进一寸有一寸的欢喜
│   │   │   ├─结束语-知也无涯,愿你也享受发现的乐趣
│   │   │   └─结束语-知也无涯,愿你也享受发现的乐趣
│   │   ├─047-Python核心技术与实战
│   │   │   ├─01-如何逐步突破,成为Python高手?
│   │   │   ├─02-JupyterNotebook为什么是现代Python的必学技术?
│   │   │   ├─03-列表和元组,到底用哪一个?
│   │   │   ├─04-字典、集合,你真的了解吗?
│   │   │   ├─047-Python核心技术与实战
│   │   │   ├─05-深入浅出字符串
│   │   │   ├─06-Python“黑箱”:输入与输出
│   │   │   ├─07-修炼基本功:条件与循环
│   │   │   ├─08-异常处理:如何提高程序的稳定性?
│   │   │   ├─09-不可或缺的自定义函数
│   │   │   ├─10-简约不简单的匿名函数
│   │   │   ├─11-面向对象(上):从生活中的类比说起
│   │   │   ├─12-面向对象(下):如何实现一个搜索引擎?
│   │   │   ├─13-搭建积木:Python模块化
│   │   │   ├─14-答疑(一):列表和元组的内部实现是怎样的?
│   │   │   ├─15-Python对象的比较、拷贝
│   │   │   ├─16-值传递,引用传递or其他,Python里参数是如何传递的?
│   │   │   ├─17-强大的装饰器
│   │   │   ├─18-metaclass,是潘多拉魔盒还是阿拉丁神灯?
│   │   │   ├─19-深入理解迭代器和生成器
│   │   │   ├─19-深入理解迭代器和生成器
│   │   │   ├─20-揭秘Python协程
│   │   │   ├─21-Python并发编程之Futures
│   │   │   ├─22-并发编程之Asyncio
│   │   │   ├─23-你真的懂PythonGIL(全局解释器锁)吗?
│   │   │   ├─24-带你解析Python垃圾回收机制
│   │   │   ├─25-答疑(二):GIL与多线程是什么关系呢?
│   │   │   ├─26-活都来不及干了,还有空注意代码风格?!
│   │   │   ├─27-学会合理分解代码,提高代码可读性
│   │   │   ├─28-如何合理利用assert?
│   │   │   ├─29-巧用上下文管理器和With语句精简代码
│   │   │   ├─30-真的有必要写单元测试吗?
│   │   │   ├─31-pdb&cProfile:调试和性能分析的法宝
│   │   │   ├─32-答疑(三):如何选择合适的异常处理方式?
│   │   │   ├─33-带你初探量化世界
│   │   │   ├─34-RESTful&Socket:搭建交易执行层核心
│   │   │   ├─35-RESTful&Socket:行情数据对接和抓取
│   │   │   ├─36-Pandas&Numpy:策略与回测系统
│   │   │   ├─37-Kafka&ZMQ:自动化交易流水线
│   │   │   ├─37-Kafka&ZMQ:自动化交易流水线
│   │   │   ├─38-MySQL:日志和数据存储系统
│   │   │   ├─39-Django:搭建监控平台
│   │   │   ├─39-Django:搭建监控平台
│   │   │   ├─40-总结:Python中的数据结构与算法全景
│   │   │   ├─41-硅谷一线互联网公司的工作体验
│   │   │   ├─42-细数技术研发的注意事项
│   │   │   ├─43-Q&A:聊一聊职业发展和选择
│   │   │   ├─加餐-带你上手SWIG:一份清晰好用的SWIG编程实践指南
│   │   │   ├─开篇词-从工程的角度深入理解Python
│   │   │   ├─结束语-技术之外的几点成长建议
│   │   │   └─结课测试-关于Python的这些知识,你都掌握了吗?
│   │   ├─048-深入拆解Tomcat&Jetty
│   │   │   ├─01-Web容器学习路径
│   │   │   ├─02-HTTP协议必知必会
│   │   │   ├─03-你应该知道的Servlet规范和Servlet容器
│   │   │   ├─04-实战:纯手工打造和运行一个Servlet
│   │   │   ├─048-深入拆解Tomcat&Jetty
│   │   │   ├─05-Tomcat系统架构(上):连接器是如何设计的?
│   │   │   ├─06-Tomcat系统架构(下):聊聊多层容器的设计
│   │   │   ├─07-Tomcat如何实现一键式启停?
│   │   │   ├─08-Tomcat的“高层们”都负责做什么?
│   │   │   ├─09-比较:Jetty架构特点之Connector组件
│   │   │   ├─09-比较:Jetty架构特点之Connector组件
│   │   │   ├─10-比较:Jetty架构特点之Handler组件
│   │   │   ├─11-总结:从Tomcat和Jetty中提炼组件化设计规范
│   │   │   ├─12-实战:优化并提高Tomcat启动速度
│   │   │   ├─13-热点问题答疑(1):如何学习源码?
│   │   │   ├─14-NioEndpoint组件:Tomcat如何实现非阻塞I-O?
│   │   │   ├─15-Nio2Endpoint组件:Tomcat如何实现异步I-O?
│   │   │   ├─16-AprEndpoint组件:TomcatAPR提高I-O性能的秘密
│   │   │   ├─17-Executor组件:Tomcat如何扩展Java线程池?
│   │   │   ├─18-新特性:Tomcat如何支持WebSocket?
│   │   │   ├─19-比较:Jetty的线程策略EatWhatYouKill
│   │   │   ├─20-总结:Tomcat和Jetty中的对象池技术
│   │   │   ├─21-总结:Tomcat和Jetty的高性能、高并发之道
│   │   │   ├─22-热点问题答疑(2):内核如何阻塞与唤醒进程?
│   │   │   ├─22-热点问题答疑(2):内核如何阻塞与唤醒进程?
│   │   │   ├─23-Host容器:Tomcat如何实现热部署和热加载?
│   │   │   ├─24-Context容器(上):Tomcat如何打破双亲委托机制?
│   │   │   ├─25-Context容器(中):Tomcat如何隔离Web应用?
│   │   │   ├─26-Context容器(下):Tomcat如何实现Servlet规范?
│   │   │   ├─27-新特性:Tomcat如何支持异步Servlet?
│   │   │   ├─28-新特性:SpringBoot如何使用内嵌式的Tomcat和Jetty?
│   │   │   ├─29-比较:Jetty如何实现具有上下文信息的责任链?
│   │   │   ├─30-热点问题答疑(3):Spring框架中的设计模式
│   │   │   ├─31-Logger组件:Tomcat的日志框架及实战
│   │   │   ├─32-Manager组件:Tomcat的Session管理机制解析
│   │   │   ├─33-Cluster组件:Tomcat的集群通信原理
│   │   │   ├─34-JVMGC原理及调优的基本思路
│   │   │   ├─35-如何监控Tomcat的性能?
│   │   │   ├─36-TomcatI-O和线程池的并发调优
│   │   │   ├─37-Tomcat内存溢出的原因分析及调优
│   │   │   ├─38-Tomcat拒绝连接原因分析及网络优化
│   │   │   ├─39-Tomcat进程占用CPU过高怎么办?
│   │   │   ├─40-谈谈Jetty性能调优的思路
│   │   │   ├─41-热点问题答疑(4):Tomcat和Jetty有哪些不同?
│   │   │   ├─开篇词-Java程序员如何快速成长?
│   │   │   ├─特别放送-如何持续保持对学习的兴趣?
│   │   │   ├─结束语-静下心来,品味经典
│   │   │   └─结课测试-这些Tomcat&Jetty的知识你都掌握了吗?
│   │   ├─049-Java性能调优实战
│   │   │   ├─01-如何制定性能调优标准?
│   │   │   ├─02-如何制定性能调优策略?
│   │   │   ├─03-字符串性能优化不容小觑,百M内存轻松存储几十G数据
│   │   │   ├─04-慎重使用正则表达式
│   │   │   ├─049-Java性能调优实战
│   │   │   ├─05-ArrayList还是LinkedList?使用不当性能差千倍
│   │   │   ├─06-Stream如何提高遍历集合效率?
│   │   │   ├─07-深入浅出HashMap的设计与优化
│   │   │   ├─08-网络通信优化之I-O模型:如何解决高并发下I-O瓶颈?
│   │   │   ├─09-网络通信优化之序列化:避免使用Java序列化
│   │   │   ├─10-网络通信优化之通信协议:如何优化RPC网络通信?
│   │   │   ├─11-答疑课堂:深入了解NIO的优化实现原理
│   │   │   ├─12-多线程之锁优化(上):深入了解Synchronized同步锁的优化方法
│   │   │   ├─12-多线程之锁优化(上):深入了解Synchronized同步锁的优化方法
│   │   │   ├─13-多线程之锁优化(中):深入了解Lock同步锁的优化方法
│   │   │   ├─14-多线程之锁优化(下):使用乐观锁优化并行操作
│   │   │   ├─15-多线程调优(上):哪些操作导致了上下文切换?
│   │   │   ├─16-多线程调优(下):如何优化多线程上下文切换?
│   │   │   ├─17-并发容器的使用:识别不同场景下最优容器
│   │   │   ├─18-如何设置线程池大小?
│   │   │   ├─19-如何用协程来优化多线程业务?
│   │   │   ├─20-答疑课堂:模块三热点问题解答
│   │   │   ├─21-磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型
│   │   │   ├─22-深入JVM即时编译器JIT,优化Java编译
│   │   │   ├─23-如何优化垃圾回收机制?
│   │   │   ├─24-如何优化JVM内存分配?
│   │   │   ├─25-内存持续上升,我该如何排查问题?
│   │   │   ├─26-答疑课堂:模块四热点问题解答
│   │   │   ├─27-单例模式:如何创建单一对象优化系统性能?
│   │   │   ├─28-原型模式与享元模式:提升系统性能的利器
│   │   │   ├─29-如何使用设计模式优化并发编程?
│   │   │   ├─30-生产者消费者模式:电商库存设计优化
│   │   │   ├─31-装饰器模式:如何优化电商系统中复杂的商品价格策略?
│   │   │   ├─32-答疑课堂:模块五思考题集锦
│   │   │   ├─33-MySQL调优之SQL语句:如何写出高性能SQL语句?
│   │   │   ├─34-MySQL调优之事务:高并发场景下的数据库事务调优
│   │   │   ├─35-MySQL调优之索引:索引的失效与优化
│   │   │   ├─36-记一次线上SQL死锁事故:如何避免死锁?
│   │   │   ├─37-什么时候需要分表分库?
│   │   │   ├─38-电商系统表设计优化案例分析
│   │   │   ├─39-数据库参数设置优化,失之毫厘差之千里
│   │   │   ├─40-答疑课堂:MySQL中InnoDB的知识点串讲
│   │   │   ├─41-如何设计更优的分布式锁?
│   │   │   ├─42-电商系统的分布式事务调优
│   │   │   ├─43-如何使用缓存优化系统性能?
│   │   │   ├─44-记一次双十一抢购性能瓶颈调优
│   │   │   ├─加餐-什么是数据的强、弱一致性?
│   │   │   ├─加餐-推荐几款常用的性能测试工具
│   │   │   ├─开篇词-怎样才能做好性能调优?
│   │   │   ├─期末测试-有关Java性能调优,你掌握了多少呢?
│   │   │   ├─结束语-栉风沐雨,砥砺前行!
│   │   │   └─结束语-栉风沐雨,砥砺前行!
│   │   ├─050-OpenResty从入门到实战
│   │   │   ├─01-初探OpenResty的三大特性
│   │   │   ├─02-如何写出你的“helloworld”?
│   │   │   ├─03-揪出隐藏在背后的那些子项目
│   │   │   ├─04-如何管理第三方包?从包管理工具luarocks和opm说起
│   │   │   ├─05-[视频]opm项目导读
│   │   │   ├─050-OpenResty从入门到实战
│   │   │   ├─06-OpenResty中用到的NGINX知识
│   │   │   ├─07-带你快速上手Lua
│   │   │   ├─08-LuaJIT分支和标准Lua有什么不同?
│   │   │   ├─09-为什么lua-resty-core性能更高一些?
│   │   │   ├─10-JIT编译器的死穴:为什么要避免使用NYI?
│   │   │   ├─11-剖析Lua唯一的数据结构table和metatable特性
│   │   │   ├─12-高手秘诀:识别Lua的独有概念和坑
│   │   │   ├─13-[视频]实战:基于FFI实现的lua-resty-lrucache
│   │   │   ├─14-答疑(一):Lua规则和NGINX配置文件产生冲突怎么办?
│   │   │   ├─15-OpenResty和别的开发平台有什么不同?
│   │   │   ├─16-秒杀大多数开发问题的两个利器:文档和测试案例
│   │   │   ├─17-为什么能成为更好的Web服务器?动态处理请求和响应是关键
│   │   │   ├─18-worker间的通信法宝:最重要的数据结构之shareddict
│   │   │   ├─19-OpenResty的核心和精髓:cosocket
│   │   │   ├─20-超越Web服务器:特权进程和定时任务
│   │   │   ├─21-带你玩转时间、正则表达式等常用API
│   │   │   ├─22-[视频]从一个安全漏洞说起,探寻API性能和安全的平衡
│   │   │   ├─23-[视频]导读lua-resty-requests:优秀的lua-resty-是如何编写的?
│   │   │   ├─24-实战:处理四层流量,实现MemcachedServer
│   │   │   ├─25-答疑(二):特权进程的权限到底是什么?
│   │   │   ├─26-代码贡献者的拦路虎:test-nginx简介
│   │   │   ├─27-test-nginx包罗万象的测试方法
│   │   │   ├─28-test-nginx还可以这样用?
│   │   │   ├─29-最容易失准的性能测试?你需要压测工具界的“悍马”wrk
│   │   │   ├─30-答疑(三)如何搭建测试的网络结构?
│   │   │   ├─31-性能下降10倍的真凶:阻塞函数
│   │   │   ├─32-让人又恨又爱的字符串操作
│   │   │   ├─33-性能提升10倍的秘诀:必须用好table
│   │   │   ├─34-特别放送:OpenResty编码指南
│   │   │   ├─35-[视频]实际项目中的性能优化:ingress-nginx中的几个PR解读
│   │   │   ├─36-盘点OpenResty的各种调试手段
│   │   │   ├─37-systemtap-toolkit和stapxx:如何用数据搞定“疑难杂症”?
│   │   │   ├─38-[视频]巧用wrk和火焰图,科学定位性能瓶颈
│   │   │   ├─39-高性能的关键:shareddict缓存和lru缓存
│   │   │   ├─40-缓存与风暴并存,谁说缓存风暴不可避免?
│   │   │   ├─41-lua-resty-封装,让你远离多级缓存之痛
│   │   │   ├─42-如何应对突发流量:漏桶和令牌桶的概念
│   │   │   ├─43-灵活实现动态限流限速,其实没有那么难
│   │   │   ├─44-OpenResty的杀手锏:动态
│   │   │   ├─45-不得不提的能力外延:OpenResty常用的第三方库
│   │   │   ├─46-答疑(四):共享字典的缓存是必须的吗?
│   │   │   ├─47-微服务API网关搭建三步曲(一)
│   │   │   ├─48-微服务API网关搭建三步曲(二)
│   │   │   ├─49-微服务API网关搭建三步曲(三)
│   │   │   ├─50-答疑(五):如何在工作中引入OpenResty?
│   │   │   ├─开篇词-OpenResty,为你打开高性能开发的大门
│   │   │   ├─结束语-行百里者半九十
│   │   │   └─结束语-行百里者半九十
│   │   ├─051-透视HTTP协议
│   │   │   ├─01-时势与英雄:HTTP的前世今生
│   │   │   ├─02-HTTP是什么?HTTP又不是什么?
│   │   │   ├─03-HTTP世界全览(上):与HTTP相关的各种概念
│   │   │   ├─04-HTTP世界全览(下):与HTTP相关的各种协议
│   │   │   ├─05-常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
│   │   │   ├─051-透视HTTP协议
│   │   │   ├─06-域名里有哪些门道?
│   │   │   ├─07-自己动手,搭建HTTP实验环境
│   │   │   ├─08-键入网址再按下回车,后面究竟发生了什么?
│   │   │   ├─09-HTTP报文是什么样子的?
│   │   │   ├─10-应该如何理解请求方法?
│   │   │   ├─11-你能写出正确的网址吗?
│   │   │   ├─11-你能写出正确的网址吗?
│   │   │   ├─12-响应状态码该怎么用?
│   │   │   ├─13-HTTP有哪些特点?
│   │   │   ├─14-HTTP有哪些优点?又有哪些缺点?
│   │   │   ├─15-海纳百川:HTTP的实体数据
│   │   │   ├─16-把大象装进冰箱:HTTP传输大文件的方法
│   │   │   ├─17-排队也要讲效率:HTTP的连接管理
│   │   │   ├─18-四通八达:HTTP的重定向和跳转
│   │   │   ├─19-让我知道你是谁:HTTP的Cookie机制
│   │   │   ├─20-生鲜速递:HTTP的缓存控制
│   │   │   ├─21-良心中间商:HTTP的代理服务
│   │   │   ├─22-冷链周转:HTTP的缓存代理
│   │   │   ├─23-HTTPS是什么?SSL-TLS又是什么?
│   │   │   ├─24-固若金汤的根本(上):对称加密与非对称加密
│   │   │   ├─25-固若金汤的根本(下):数字签名与证书
│   │   │   ├─26-信任始于握手:TLS1
│   │   │   ├─27-更好更快的握手:TLS1
│   │   │   ├─28-连接太慢该怎么办:HTTPS的优化
│   │   │   ├─29-我应该迁移到HTTPS吗?
│   │   │   ├─30-时代之风(上):HTTP-2特性概览
│   │   │   ├─31-时代之风(下):HTTP-2内核剖析
│   │   │   ├─32-未来之路:HTTP-3展望
│   │   │   ├─33-我应该迁移到HTTP-2吗?
│   │   │   ├─34-Nginx:高性能的Web服务器
│   │   │   ├─35-OpenResty:更灵活的Web服务器
│   │   │   ├─36-WAF:保护我们的网络服务
│   │   │   ├─37-CDN:加速我们的网络服务
│   │   │   ├─38-WebSocket:沙盒里的TCP
│   │   │   ├─39-HTTP性能优化面面观(上)
│   │   │   ├─40-HTTP性能优化面面观(下)
│   │   │   ├─41-Linux-Mac实验环境搭建与URI查询参数
│   │   │   ├─41-Linux-Mac实验环境搭建与URI查询参数
│   │   │   ├─42-DHE-ECDHE算法的原理
│   │   │   ├─43-如何进行Docker实验环境搭建?
│   │   │   ├─44-先睹为快:HTTP-3实验版本长什么样子?
│   │   │   ├─开篇词|ToBeaHTTPHero
│   │   │   ├─结束语-做兴趣使然的Hero
│   │   │   ├─结课测试-这些HTTP协议知识,你真的掌握了吗?
│   │   │   └─罗剑锋老师出新课了?
│   │   ├─052-Kafka核心技术与实战
│   │   │   ├─01-消息引擎系统ABC
│   │   │   ├─02-一篇文章带你快速搞定Kafka术语
│   │   │   ├─03-Kafka只是消息引擎系统吗?
│   │   │   ├─04-我应该选择哪种Kafka?
│   │   │   ├─05-聊聊Kafka的版本号
│   │   │   ├─052-Kafka核心技术与实战
│   │   │   ├─06-Kafka线上集群部署方案怎么做?
│   │   │   ├─07-最最最重要的集群参数配置(上)
│   │   │   ├─08-最最最重要的集群参数配置(下)
│   │   │   ├─09-生产者消息分区机制原理剖析
│   │   │   ├─10-生产者压缩算法面面观
│   │   │   ├─11-无消息丢失配置怎么实现?
│   │   │   ├─12-客户端都有哪些不常见但是很高级的功能?
│   │   │   ├─13-Java生产者是如何管理TCP连接的?
│   │   │   ├─14-幂等生产者和事务生产者是一回事吗?
│   │   │   ├─15-消费者组到底是什么?
│   │   │   ├─16-揭开神秘的“位移主题”面纱
│   │   │   ├─17-消费者组重平衡能避免吗?
│   │   │   ├─18-Kafka中位移提交那些事儿
│   │   │   ├─19-CommitFailedException异常怎么处理?
│   │   │   ├─20-多线程开发消费者实例
│   │   │   ├─21-Java消费者是如何管理TCP连接的
│   │   │   ├─22-消费者组消费进度监控都怎么实现?
│   │   │   ├─23-Kafka副本机制详解
│   │   │   ├─24-请求是怎么被处理的?
│   │   │   ├─25-消费者组重平衡全流程解析
│   │   │   ├─26-你一定不能错过的Kafka控制器
│   │   │   ├─27-关于高水位和LeaderEpoch的讨论
│   │   │   ├─28-主题管理知多少
│   │   │   ├─29-Kafka动态配置了解下?
│   │   │   ├─30-怎么重设消费者组位移?
│   │   │   ├─31-常见工具脚本大汇总
│   │   │   ├─32-KafkaAdminClient:Kafka的运维利器
│   │   │   ├─33-Kafka认证机制用哪家?
│   │   │   ├─34-云环境下的授权该怎么做?
│   │   │   ├─35-跨集群备份解决方案MirrorMaker
│   │   │   ├─36-你应该怎么监控Kafka?
│   │   │   ├─37-主流的Kafka监控框架
│   │   │   ├─38-调优Kafka,你做到了吗?
│   │   │   ├─39-从0搭建基于Kafka的企业级实时日志流处理平台
│   │   │   ├─40-KafkaStreams与其他流处理平台的差异在哪里?
│   │   │   ├─41-KafkaStreamsDSL开发实例
│   │   │   ├─42-KafkaStreams在金融领域的应用
│   │   │   ├─加餐-搭建开发环境、阅读源码方法、经典学习资料大揭秘
│   │   │   ├─开篇词-为什么要学习Kafka?
│   │   │   ├─期末测试-这些Kafka核心要点,你都掌握了吗?
│   │   │   ├─用户故事-黄云:行百里者半九十
│   │   │   ├─结束语-以梦为马,莫负韶华!
│   │   │   └─结束语-以梦为马,莫负韶华!
│   │   ├─053-SQL必知必会
│   │   │   ├─01丨了解SQL:一门半衰期很长的语言
│   │   │   ├─02丨DBMS的前世今生
│   │   │   ├─03丨学会用数据库的方式思考SQL是如何执行的
│   │   │   ├─04丨使用DDL创建数据库&数据表时需要注意什么?
│   │   │   ├─053-SQL必知必会
│   │   │   ├─05丨检索数据:你还在SELECT-么?
│   │   │   ├─06丨数据过滤:SQL数据过滤都有哪些方法?
│   │   │   ├─07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?
│   │   │   ├─08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?
│   │   │   ├─09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?
│   │   │   ├─10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?
│   │   │   ├─11丨SQL99是如何使用连接的,与SQL92的区别是什么?
│   │   │   ├─12丨视图在SQL中的作用是什么,它是怎样工作的?
│   │   │   ├─13丨什么是存储过程,在实际项目中用得多么?
│   │   │   ├─14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?
│   │   │   ├─15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
│   │   │   ├─16丨游标:当我们需要逐条处理数据时,该怎么做?
│   │   │   ├─17丨如何使用Python操作MySQL?
│   │   │   ├─18丨SQLAlchemy:如何使用PythonORM框架来操作MySQL?
│   │   │   ├─19丨基础篇总结:如何理解查询优化、通配符以及存储过程?
│   │   │   ├─20丨当我们思考数据库调优的时候,都有哪些维度可以选择?
│   │   │   ├─21丨范式设计:数据表的范式有哪些,3NF指的是什么?
│   │   │   ├─22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?
│   │   │   ├─23丨索引的概览:用还是不用索引,这是一个问题
│   │   │   ├─23丨索引的概览:用还是不用索引,这是一个问题
│   │   │   ├─24丨索引的原理:我们为什么用B+树来做索引?
│   │   │   ├─25丨Hash索引的底层原理是什么?
│   │   │   ├─26丨索引的使用原则:如何通过索引让SQL查询效率最大化?
│   │   │   ├─27丨从数据页的角度理解B+树查询
│   │   │   ├─28丨从磁盘I-O的角度理解SQL查询的成本
│   │   │   ├─29丨为什么没有理想的索引?
│   │   │   ├─30丨锁:悲观锁和乐观锁是什么?
│   │   │   ├─31丨为什么大部分RDBMS都会支持MVCC?
│   │   │   ├─32丨查询优化器是如何工作的?
│   │   │   ├─33丨如何使用性能分析工具定位SQL执行慢的原因?
│   │   │   ├─34丨答疑篇:关于索引以及缓冲池的一些解惑
│   │   │   ├─35丨数据库主从同步的作用是什么,如何解决数据不一致问题?
│   │   │   ├─36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?
│   │   │   ├─37丨SQL注入:你的SQL是如何被注入的?
│   │   │   ├─38丨如何在Excel中使用SQL语言?
│   │   │   ├─39丨WebSQL:如何在H5中存储一个本地数据库?
│   │   │   ├─40丨SQLite:为什么微信用SQLite存储聊天记录?
│   │   │   ├─41丨初识Redis:Redis为什么会这么快?
│   │   │   ├─42丨如何使用Redis来实现多用户抢票问题
│   │   │   ├─43丨如何使用Redis搭建玩家排行榜?
│   │   │   ├─44丨DBMS篇总结和答疑:用SQLite做词云
│   │   │   ├─45丨数据清洗:如何使用SQL对数据进行清洗?
│   │   │   ├─46丨数据集成:如何对各种数据库进行集成和转换?
│   │   │   ├─47丨如何利用SQL对零售数据进行分析?
│   │   │   ├─开篇词丨SQL可能是你掌握的最有用的技能
│   │   │   ├─期末测试丨对于SQL的有关内容,你掌握了多少呢?
│   │   │   ├─结束语-互联网的下半场是数据驱动的时代
│   │   │   └─结束语-互联网的下半场是数据驱动的时代
│   │   ├─054-黄勇的OKR实战笔记
│   │   │   ├─01-你想要快速理解OKR吗?看这篇文章就够了
│   │   │   ├─02-如果有人再问你,OKR与KPI有何区别?你可以这样告诉他
│   │   │   ├─03-如何在企业中有效落地OKR?你必须掌握这些技巧
│   │   │   ├─04-在落地OKR之前,需要具备哪些先决条件?
│   │   │   ├─05-OKR好用,但一不小心就容易被误用,为什么呢?
│   │   │   ├─054-黄勇的OKR实战笔记
│   │   │   ├─06-OKR大咖说:产品技术部门的OKR从何而来
│   │   │   ├─07-热点问题答疑(一):你的OKR用对了吗?
│   │   │   ├─08-如何轻松制定OKR?方法原来如此简单
│   │   │   ├─09-推动团队高效执行OKR,你知道这些技巧吗?
│   │   │   ├─10-OKR评估没你想象的那么难,其实你可以这么做!
│   │   │   ├─11-都说OKR赢在复盘,为何大家都忽略了这个重要环节?
│   │   │   ├─12-落地OKR效果不理想?可能是你身边缺少一位“教练”
│   │   │   ├─13-OKR大咖说:一个可供创业公司参考的OKR落地实践
│   │   │   ├─14-热点问题答疑(二):你该如何看待OKR?(文末有彩蛋)
│   │   │   ├─15-技术团队真的是“成本中心”吗?如何改变这一现状?
│   │   │   ├─16-大家都说“向上管理”很重要,你想学一些“套路”吗?
│   │   │   ├─17-跨部门协同费劲,沟通效率低,如何粉碎“部门墙”?
│   │   │   ├─18-企业“腰部力量”不够,如何提升中层领导力?
│   │   │   ├─19-敏捷与OKR都是为了“拥抱变化”,两者如何无缝整合?
│   │   │   ├─20-OKR大咖说:OKR还有哪些应用场景?
│   │   │   ├─21-热点问题答疑(三):如何计算研发团队人效?
│   │   │   ├─22-面试人才好纠结,新人试用难考核?你其实可以这样做
│   │   │   ├─23-人才激励方式众多,哪种方式最有效?
│   │   │   ├─24-敏捷时代下你该如何做绩效管理?
│   │   │   ├─25-如何告别无效会议?不妨试试这六招
│   │   │   ├─26-OKR最容易踩的10个坑,你踩过几个?
│   │   │   ├─27-OKR大咖说:在硅谷公司使用OKR时,一个资深员工的体验和感悟
│   │   │   ├─28-如何避免“跳槽”变“跳坑”?
│   │   │   ├─29-他们落地OKR都失败了,原因出在哪儿?
│   │   │   ├─30-用什么工具,能加强OKR落地效果?
│   │   │   ├─31-工作之外如何应用OKR?以真实案例为例
│   │   │   ├─32-积分制、游戏化,一种新型的团队管理和协同方式
│   │   │   ├─33-无所不能的OKR,它会变成“银弹”吗?
│   │   │   ├─34-OKR大咖说:为何有些文化的因,结不出OKR的果?
│   │   │   ├─35-OKR学习测验:你是否真的学会了OKR?
│   │   │   ├─入学测验-你对OKR了解有多少?
│   │   │   ├─加餐-OKR思维能助你学会向上管理?
│   │   │   ├─加餐-一幅图,让你快速入门OKR
│   │   │   ├─加餐-如何灵活运用OKR?
│   │   │   ├─加餐-新型的团队管理和协作方式是怎样的?
│   │   │   ├─开篇词-神奇的OKR工作法
│   │   │   ├─结束语-OKR助我一路成长
│   │   │   └─结束语-OKR助我一路成长
│   │   ├─055-Flutter核心技术与实战
│   │   │   ├─01-预习篇·从0开始搭建Flutter工程环境
│   │   │   ├─02-预习篇·Dart语言概览
│   │   │   ├─03-深入理解跨平台方案的历史发展逻辑
│   │   │   ├─04-Flutter区别于其他方案的关键技术是什么?
│   │   │   ├─05-从标准模板入手,体会Flutter代码是如何运行在原生系统上的
│   │   │   ├─055-Flutter核心技术与实战
│   │   │   ├─06-基础语法与类型变量:Dart是如何表示信息的?
│   │   │   ├─07-函数、类与运算符:Dart是如何处理信息的?
│   │   │   ├─08-综合案例:掌握Dart核心特性
│   │   │   ├─09-Widget,构建Flutter界面的基石
│   │   │   ├─10-Widget中的State到底是什么?
│   │   │   ├─11-提到生命周期,我们是在说什么?
│   │   │   ├─12-经典控件(一):文本、图片和按钮在Flutter中怎么用?
│   │   │   ├─13-经典控件(二):UITableView-ListView在Flutter中是什么?
│   │   │   ├─14-经典布局:如何定义子控件在父容器中排版的位置?
│   │   │   ├─15-组合与自绘,我该选用何种方式自定义Widget?
│   │   │   ├─16-从夜间模式说起,如何定制不同风格的App主题?
│   │   │   ├─17-依赖管理(一):图片、配置和字体在Flutter中怎么用?
│   │   │   ├─18-依赖管理(二):第三方组件库在Flutter中要如何管理?
│   │   │   ├─19-用户交互事件该如何响应?
│   │   │   ├─20-关于跨组件传递数据,你只需要记住这三招
│   │   │   ├─21-路由与导航,Flutter是这样实现页面切换的
│   │   │   ├─22-如何构造炫酷的动画效果?
│   │   │   ├─23-单线程模型怎么保证UI运行流畅?
│   │   │   ├─24-HTTP网络编程与JSON解析
│   │   │   ├─25-本地存储与数据库的使用和优化
│   │   │   ├─26-如何在Dart层兼容Android-iOS平台特定实现?(一)
│   │   │   ├─27-如何在Dart层兼容Android-iOS平台特定实现?(二)
│   │   │   ├─28-如何在原生应用中混编Flutter工程?
│   │   │   ├─29-混合开发,该用何种方案管理导航栈?
│   │   │   ├─30-为什么需要做状态管理,怎么做?
│   │   │   ├─31-如何实现原生推送能力?
│   │   │   ├─31-如何实现原生推送能力?
│   │   │   ├─32-适配国际化,除了多语言我们还需要注意什么
│   │   │   ├─33-如何适配不同分辨率的手机屏幕?
│   │   │   ├─34-如何理解Flutter的编译模式?
│   │   │   ├─34-如何理解Flutter的编译模式?
│   │   │   ├─35-HotReload是怎么做到的?
│   │   │   ├─36-如何通过工具链优化开发调试效率?
│   │   │   ├─37-如何检测并优化FlutterApp的整体性能表现?
│   │   │   ├─38-如何通过自动化测试提高交付质量?
│   │   │   ├─39-线上出现问题,该如何做好异常捕获与信息采集?
│   │   │   ├─40-衡量FlutterApp线上质量,我们需要关注这三个指标
│   │   │   ├─41-组件化和平台化,该如何组织合理稳定的Flutter工程结构?
│   │   │   ├─42-如何构建高效的FlutterApp打包发布环境?
│   │   │   ├─43-如何构建自己的Flutter混合开发框架(一)?
│   │   │   ├─44-如何构建自己的Flutter混合开发框架(二)?
│   │   │   ├─开篇词-为什么每一位大前端从业者都应该学习Flutter?
│   │   │   ├─特别放送|温故而知新,与你说说专栏的那些思考题
│   │   │   ├─结束语-勿畏难,勿轻略
│   │   │   └─结课测试-关于Flutter的这些知识,你都掌握了吗?
│   │   ├─056-编辑训练营
│   │   │   ├─01-为什么说编辑要重视文字规范?
│   │   │   ├─02-如何发现并纠正文章语病?
│   │   │   ├─03-到底该怎么理解技术采用生命周期?
│   │   │   ├─04-如何取一个好的文章标题?
│   │   │   ├─05-怎么才能写出一篇好新闻?
│   │   │   ├─056-编辑训练营
│   │   │   ├─06-和专家沟通出现冲突时,我该怎么办?
│   │   │   ├─07-如何快速找到各个领域的专家?
│   │   │   ├─07-如何快速找到各个领域的专家?
│   │   │   ├─08-如何制作出一张清晰且美观的配图?
│   │   │   ├─开篇词-把内容交付这件事做好
│   │   │   └─开篇词-把内容交付这件事做好
│   │   ├─057-从0打造音视频直播系统
│   │   │   ├─01-原来通过浏览器访问摄像头这么容易
│   │   │   ├─02-如何通过WebRTC进行音视频设备检测呢?
│   │   │   ├─03-如何使用浏览器给自己拍照呢?
│   │   │   ├─04-可以把采集到的音视频数据录制下来吗?
│   │   │   ├─05-原来浏览器还能抓取桌面?
│   │   │   ├─057-从0打造音视频直播系统
│   │   │   ├─06-WebRTC中的RTP及RTCP详解
│   │   │   ├─07-你竟然不知道SDP?它可是WebRTC的驱动核心!
│   │   │   ├─08-有话好商量,论媒体协商
│   │   │   ├─09-让我们揭开WebRTC建立连接的神秘面纱
│   │   │   ├─10-WebRTCNAT穿越原理
│   │   │   ├─11-如何通过Node
│   │   │   ├─12-RTCPeerConnection:音视频实时通讯的核心
│   │   │   ├─13-在WebRTC中如何控制传输速率呢?
│   │   │   ├─14-如何打开-关闭音视频?
│   │   │   ├─15-WebRTC中的数据统计原来这么强大(上)
│   │   │   ├─16-WebRTC中的数据统计原来这么强大(下)
│   │   │   ├─17-如何使用Canvas绘制统计图表(上)?
│   │   │   ├─18-如何使用Canvas绘制统计图表(下)?
│   │   │   ├─19-WebRTC能不能进行文本聊天呢?
│   │   │   ├─20-原来WebRTC还可以实时传输文件?
│   │   │   ├─21-如何保证数据传输的安全(上)?
│   │   │   ├─22-如何保证数据传输的安全(下)?
│   │   │   ├─23-实战演练:通过WebRTC实现一个1对1音视频实时直播系统
│   │   │   ├─24-多人音视频实时通讯是怎样的架构?
│   │   │   ├─25-那些常见的流媒体服务器,你该选择谁?
│   │   │   ├─26-为什么编译MedoozeServer这么难?
│   │   │   ├─27-让我们一起探索Medooze的具体实现吧(上)
│   │   │   ├─28-让我们一起探索Medooze的具体实现吧(下)
│   │   │   ├─29-如何使用Medooze实现多方视频会议?
│   │   │   ├─30-实战演练:通过WebRTC实现多人音视频实时互动直播系统
│   │   │   ├─31-一对多直播系统RTMP-HLS,你该选哪个?
│   │   │   ├─31-一对多直播系统RTMP-HLS,你该选哪个?
│   │   │   ├─32-HLS:实现一对多直播系统的必备协议
│   │   │   ├─33-FLV:适合录制的多媒体格式
│   │   │   ├─34-如何使用Nginx搭建最简单的直播服务器?
│   │   │   ├─35-如何构建云端一对多直播系统?
│   │   │   ├─36-如何使用flv
│   │   │   ├─37-如何使用video
│   │   │   ├─38-实战推演:带你实现一个支持万人同时在线的直播系统
│   │   │   ├─开篇词-5G的到来将会为音视频插上飞翔的翅膀
│   │   │   ├─结束语-路漫漫其修远兮,吾将上下而求索
│   │   │   └─结课测试-这些音视频直播系统的知识你都掌握了吗?
│   │   ├─058-消息队列高手课
│   │   │   ├─01-为什么需要消息队列?
│   │   │   ├─02-该如何选择消息队列?
│   │   │   ├─03-消息模型:主题和队列有什么区别?
│   │   │   ├─04-如何利用事务消息实现分布式事务?
│   │   │   ├─05-如何确保消息不会丢失
│   │   │   ├─058-消息队列高手课
│   │   │   ├─06-如何处理消费过程中的重复消息?
│   │   │   ├─07-消息积压了该如何处理?
│   │   │   ├─08-答疑解惑(一)-网关如何接收服务端的秒杀结果?
│   │   │   ├─09-学习开源代码该如何入手?
│   │   │   ├─10-如何使用异步设计提升系统性能?
│   │   │   ├─10-如何使用异步设计提升系统性能?
│   │   │   ├─11-如何实现高性能的异步网络传输?
│   │   │   ├─12-序列化与反序列化:如何通过网络传输结构化的数据?
│   │   │   ├─13-传输协议:应用程序之间对话的语言
│   │   │   ├─14-内存管理:如何避免内存溢出和频繁的垃圾回收?
│   │   │   ├─15-Kafka如何实现高性能IO?
│   │   │   ├─16-缓存策略:如何使用缓存来减少磁盘IO?
│   │   │   ├─17-如何正确使用锁保护共享数据,协调异步线程?
│   │   │   ├─18-如何用硬件同步原语(CAS)替代锁?
│   │   │   ├─19-数据压缩:时间换空间的游戏
│   │   │   ├─20-RocketMQProducer源码分析:消息生产的实现过程
│   │   │   ├─21-KafkaConsumer源码分析:消息消费的实现过程
│   │   │   ├─22-Kafka和RocketMQ的消息复制实现的差异点在哪?
│   │   │   ├─23-RocketMQ客户端如何在集群中找到正确的节点?
│   │   │   ├─24-Kafka的协调服务ZooKeeper:实现分布式系统的“瑞士军刀”
│   │   │   ├─25-RocketMQ与Kafka中如何实现事务?
│   │   │   ├─26-MQTT协议:如何支持海量的在线IoT设备
│   │   │   ├─27-Pulsar的存储计算分离设计:全新的消息队列设计思路
│   │   │   ├─28-答疑解惑(二):我的100元哪儿去了?
│   │   │   ├─29-流计算与消息(一):通过Flink理解流计算的原理
│   │   │   ├─30-流计算与消息(二):在流计算中使用Kafka链接计算任务
│   │   │   ├─31-动手实现一个简单的RPC框架(一):原理和程序的结构
│   │   │   ├─32-动手实现一个简单的RPC框架(二):通信与序列化
│   │   │   ├─33-动手实现一个简单的RPC框架(三):客户端
│   │   │   ├─34-动手实现一个简单的RPC框架(四):服务端
│   │   │   ├─35-答疑解惑(三):主流消息队列都是如何存储消息的?
│   │   │   ├─加餐-JMQ的Broker是如何异步处理消息的?
│   │   │   ├─开篇词-优秀的程序员,你的技术栈中不能只有“增删改查”
│   │   │   ├─期中测试丨10个消息队列热点问题自测
│   │   │   ├─期末测试-消息队列100分试卷等你来挑战!
│   │   │   ├─第二季回归丨这次我们一起实战后端存储
│   │   │   ├─第二季回归丨这次我们一起实战后端存储
│   │   │   ├─结束语-程序员如何构建知识体系?
│   │   │   ├─预习-怎样更好地学习这门课?
│   │   │   └─预习-怎样更好地学习这门课?
│   │   ├─059-网络编程实战
│   │   │   ├─01-追古溯源:TCP-IP和Linux是如何改变世界的?
│   │   │   ├─02-网络编程模型:认识客户端-服务器网络模型的基本概念
│   │   │   ├─03丨套接字和地址:像电话和电话号码一样理解它们
│   │   │   ├─04-TCP三次握手:怎么使用套接字格式建立连接?
│   │   │   ├─05-使用套接字进行读写:开始交流吧
│   │   │   ├─059-网络编程实战
│   │   │   ├─06-嗨,别忘了UDP这个小兄弟
│   │   │   ├─07-What-还有本地套接字?
│   │   │   ├─08-工欲善其事必先利其器:学会使用各种工具
│   │   │   ├─09丨答疑篇:学习网络编程前,需要准备哪些东西?
│   │   │   ├─10-TIMEWAIT:隐藏在细节下的魔鬼
│   │   │   ├─11-优雅地关闭还是粗暴地关闭
│   │   │   ├─12-连接无效:使用Keep-Alive还是应用心跳来检测?
│   │   │   ├─13-小数据包应对之策:理解TCP协议中的动态数据传输
│   │   │   ├─14丨UDP也可以是“已连接”?
│   │   │   ├─15-怎么老是出现“地址已经被使用”?
│   │   │   ├─16-如何理解TCP的“流”?
│   │   │   ├─17-TCP并不总是“可靠”的?
│   │   │   ├─18-防人之心不可无:检查数据的有效性
│   │   │   ├─19丨提高篇答疑:如何理解TCP四次挥手?
│   │   │   ├─20-大名??的select:看我如何同时感知多个I-O事件
│   │   │   ├─21-poll:另一种I-O多路复用
│   │   │   ├─22-非阻塞I-O:提升性能的加速器
│   │   │   ├─23-Linux利器:epoll的前世今生
│   │   │   ├─24-C10K问题:高并发模型设计
│   │   │   ├─25-使用阻塞I-O和进程模型:最传统的方式
│   │   │   ├─26-使用阻塞I-O和线程模型:换一种轻量的方式
│   │   │   ├─27-I-O多路复用遇上线程:使用poll单线程处理所有I-O事件
│   │   │   ├─28-I-O多路复用进阶:子线程使用poll处理连接I-O事件
│   │   │   ├─29-渐入佳境:使用epoll和多线程模型
│   │   │   ├─30-真正的大杀器:异步I-O探索
│   │   │   ├─31丨性能篇答疑:epoll源码深度剖析
│   │   │   ├─32-自己动手写高性能HTTP服务器(一):设计和思路
│   │   │   ├─33-自己动手写高性能HTTP服务器(二):I-O模型和多线程模型实现
│   │   │   ├─34-自己动手写高性能HTTP服务器(三):TCP字节流处理和HTTP协议实现
│   │   │   ├─35-答疑:编写高性能网络编程框架时,都需要注意哪些问题?
│   │   │   ├─开篇词-学好网络编程,需要掌握哪些核心问题?
│   │   │   ├─期中大作业丨动手编写一个自己的程序吧!
│   │   │   ├─期中大作业丨题目以及解答剖析
│   │   │   ├─期中大作业丨题目以及解答剖析
│   │   │   ├─期末测试题丨有关网络编程的知识,你掌握了多少呢?
│   │   │   ├─结束语丨我相信这不是结束,让我们江湖再见
│   │   │   └─结束语丨我相信这不是结束,让我们江湖再见
│   │   ├─060-浏览器工作原理与实践
│   │   │   ├─01-Chrome架构:仅仅打开了1个页面,为什么有4个进程?
│   │   │   ├─02-TCP协议:如何保证页面文件能被完整送达浏览器?
│   │   │   ├─03-HTTP请求流程:为什么很多站点第二次打开速度会很快?
│   │   │   ├─04-导航流程:从输入URL到页面展示,这中间发生了什么?
│   │   │   ├─05-渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?
│   │   │   ├─06-渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
│   │   │   ├─060-浏览器工作原理与实践
│   │   │   ├─07-变量提升:JavaScript代码是按顺序执行的吗?
│   │   │   ├─08-调用栈:为什么JavaScript代码会出现栈溢出?
│   │   │   ├─09-块级作用域:var缺陷以及为什么要引入let和const?
│   │   │   ├─10-作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?
│   │   │   ├─10-作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?
│   │   │   ├─11-this:从JavaScript执行上下文的视角讲清楚this
│   │   │   ├─12-栈空间和堆空间:数据是如何存储的?
│   │   │   ├─13-垃圾回收:垃圾数据是如何自动回收的?
│   │   │   ├─14-编译器和解释器:V8是如何执行一段JavaScript代码的?
│   │   │   ├─15-消息队列和事件循环:页面是怎么“活”起来的?
│   │   │   ├─16-WebAPI:setTimeout是如何实现的?
│   │   │   ├─17-WebAPI:XMLHttpRequest是怎么实现的?
│   │   │   ├─18-宏任务和微任务:不是所有任务都是一个待遇
│   │   │   ├─19-Promise:使用Promise,告别回调函数
│   │   │   ├─20-async-await:使用同步的方式去写异步代码
│   │   │   ├─21-Chrome开发者工具:利用网络面板做性能分析
│   │   │   ├─22-DOM树:JavaScript是如何影响DOM树构建的?
│   │   │   ├─23-渲染流水线:CSS如何影响首次加载时的白屏时间?
│   │   │   ├─24-分层和合成机制:为什么CSS动画比JavaScript高效?
│   │   │   ├─25-页面性能:如何系统地优化页面?
│   │   │   ├─26-虚拟DOM:虚拟DOM和实际的DOM有何不同?
│   │   │   ├─27-渐进式网页应用(PWA):它究竟解决了Web应用的哪些问题?
│   │   │   ├─28-WebComponent:像搭积木一样构建Web应用
│   │   │   ├─29-HTTP-1:HTTP性能优化
│   │   │   ├─30|HTTP-2:如何提升网络速度?
│   │   │   ├─31|HTTP-3:甩掉TCP、TLS的包袱,构建高效网络
│   │   │   ├─32-同源策略:为什么XMLHttpRequest不能跨域请求资源?
│   │   │   ├─33-跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
│   │   │   ├─34-CSRF攻击:陌生链接不要随便点
│   │   │   ├─35-安全沙箱:页面和系统之间的隔离墙
│   │   │   ├─36-HTTPS:让数据传输更安全
│   │   │   ├─加餐一|浏览上下文组:如何计算Chrome中渲染进程的个数?
│   │   │   ├─加餐三|加载阶段性能:使用Audits来优化Web性能
│   │   │   ├─加餐二|任务调度:有了setTimeOut,为什么还要使用rAF?
│   │   │   ├─加餐五-性能分析工具:如何分析Performance中的Main指标?
│   │   │   ├─加餐六|HTTPS:浏览器如何验证数字证书?
│   │   │   ├─加餐四|页面性能工具:如何使用Performance?
│   │   │   ├─开篇词-参透了浏览器的工作原理,你就能解决80%的前端难题
│   │   │   ├─第二季回归-这次我们来专门聊聊V8
│   │   │   ├─结束语-大道至简
│   │   │   └─结课测试-这些浏览器的知识你都掌握了吗?
│   │   ├─061-编译原理之美
│   │   │   ├─01-理解代码:编译器的前端技术
│   │   │   ├─02-正则文法和有限自动机:纯手工打造词法分析器
│   │   │   ├─03-语法分析(一):纯手工打造公式计算器
│   │   │   ├─04-语法分析(二):解决二元表达式中的难点
│   │   │   ├─05-语法分析(三):实现一门简单的脚本语言
│   │   │   ├─06-编译器前端工具(一):用Antlr生成词法、语法分析器
│   │   │   ├─061-编译原理之美
│   │   │   ├─07-编译器前端工具(二):用Antlr重构脚本语言
│   │   │   ├─08-作用域和生存期:实现块作用域和函数
│   │   │   ├─09-面向对象:实现数据和方法的封装
│   │   │   ├─10-闭包:理解了原理,它就不反直觉了
│   │   │   ├─10-闭包:理解了原理,它就不反直觉了
│   │   │   ├─11-语义分析(上):如何建立一个完善的类型系统?
│   │   │   ├─12-语义分析(下):如何做上下文相关情况的处理?
│   │   │   ├─13-继承和多态:面向对象运行期的动态特性
│   │   │   ├─14-前端技术应用(一):如何透明地支持数据库分库分表?
│   │   │   ├─15-前端技术应用(二):如何设计一个报表工具?
│   │   │   ├─16-NFA和DFA:如何自己实现一个正则表达式工具?
│   │   │   ├─17-First和Follow集合:用LL算法推演一个实例
│   │   │   ├─18-移进和规约:用LR算法推演一个实例
│   │   │   ├─19-案例总结与热点问题答疑:对于左递归的语法,为什么我的推导不是左递归的?
│   │   │   ├─20-高效运行:编译器的后端技术
│   │   │   ├─21-运行时机制:突破现象看本质,透过语法看运行时
│   │   │   ├─22-生成汇编代码(一):汇编语言其实不难学
│   │   │   ├─23-生成汇编代码(二):把脚本编译成可执行文件
│   │   │   ├─24-中间代码:兼容不同的语言和硬件
│   │   │   ├─25-后端技术的重用:LLVM不仅仅让你高效
│   │   │   ├─26-生成IR:实现静态编译的语言
│   │   │   ├─27-代码优化:为什么你的代码比他的更高效?
│   │   │   ├─28-数据流分析:你写的程序,它更懂
│   │   │   ├─29-目标代码的生成和优化(一):如何适应各种硬件架构?
│   │   │   ├─30-目标代码的生成和优化(二):如何适应各种硬件架构?
│   │   │   ├─31-内存计算:对海量数据做计算,到底可以有多快?
│   │   │   ├─32-字节码生成:为什么Spring技术很强大?
│   │   │   ├─33-垃圾收集:能否不停下整个世界?
│   │   │   ├─34-运行时优化:即时编译的原理和作用
│   │   │   ├─35-案例总结与热点问题答疑:后端部分真的比前端部分难吗?
│   │   │   ├─36-当前技术的发展趋势以及其对编译技术的影响
│   │   │   ├─37-云编程:云计算会如何改变编程模式?
│   │   │   ├─38-元编程:一边写程序,一边写语言
│   │   │   ├─38-元编程:一边写程序,一边写语言
│   │   │   ├─加餐-汇编代码编程与栈帧管理
│   │   │   ├─开篇词-为什么你要学习编译原理?
│   │   │   ├─期中考试-来赴一场100分的约定吧!
│   │   │   ├─用户故事-因为热爱,所以坚持
│   │   │   ├─第二季回归-这次,我们一起实战解析真实世界的编译器
│   │   │   ├─结束语-用程序语言,推动这个世界的演化
│   │   │   └─结课测试-编译原理的这些知识,你都掌握了吗?
│   │   ├─062-研发效率破局之道
│   │   │   ├─01-效能模型:如何系统地理解研发效能?
│   │   │   ├─02-效能度量:效果不好甚至有副作用,怎么回事?
│   │   │   ├─03-效能度量:如何选对指标与方法,真正提升效能?
│   │   │   ├─04-流程优化:怎样才能让敏捷、精益真正为我所用?
│   │   │   ├─05-代码入库前:Facebook如何让开发人员聚焦于开发?
│   │   │   ├─06-代码入库到产品上线:Facebook如何使用CI-CD满足业务要求?
│   │   │   ├─062-研发效率破局之道
│   │   │   ├─07-分支管理:Facebook的策略,适合我的团队吗?
│   │   │   ├─08-DevOps、SRE的共性:应用全栈思路打通开发和运维
│   │   │   ├─09-信息流通:让团队高效协同,让产品准确击中目标
│   │   │   ├─10-答疑篇:反对996并不是反对奋斗
│   │   │   ├─11-研发环境:Facebook怎样让开发人员不再操心环境?
│   │   │   ├─12-代码审查:哪种方式更适合我的团队?
│   │   │   ├─13-代码审查:学习Facebook真正发挥代码审查的提效作用
│   │   │   ├─14-质量与速度的均衡:让“唯快不破”快得更持久
│   │   │   ├─15-开源:从Phabricator的开源历程看开源利弊
│   │   │   ├─16-高效上云:如何用云计算来提高效能?
│   │   │   ├─17-测试左移:测试如何应对新的开发模式?
│   │   │   ├─18-蓝绿红黑灰度发布:这些五颜六色的发布到底怎么用?
│   │   │   ├─19-不再掉队,研发流程、工程方法趋势解读和展望
│   │   │   ├─20-答疑篇:如何平衡短期收益和长期收益?
│   │   │   ├─21-高效工作:Facebook的10x程序员效率心法
│   │   │   ├─22-深度工作:聚焦最有价值的事儿
│   │   │   ├─23-效率工具:选对用对才能事半功倍
│   │   │   ├─24-VIM:如何高性价比地学习VIM的实用技巧?
│   │   │   ├─25-玩转Git:五种提高代码提交原子性的基本操作
│   │   │   ├─26-Facebook怎样实现代码提交的原子性?
│   │   │   ├─27-命令行:不只是酷,更重要的是能提高个人效能
│   │   │   ├─28-从工作场景出发,寻找炫酷且有效的命令行工具
│   │   │   ├─29-1+1-2,灵活的工具组合及环境让你的工作效率翻倍
│   │   │   ├─30-答疑篇:关于价值导向和沟通
│   │   │   ├─31-业务目标和技术目标两手抓:怎样打造高效团队?
│   │   │   ├─32-从Netflix公开的著名PPT谈硅谷公司文化
│   │   │   ├─33-Facebook企业文化:工程师文化是创造力引擎
│   │   │   ├─33-Facebook企业文化:工程师文化是创造力引擎
│   │   │   ├─34-Facebook工程师文化实践三大支柱之一做感兴趣的事
│   │   │   ├─35-Facebook工程师文化实践三大支柱之二拥有信息和权限
│   │   │   ├─36-Facebook工程师文化实践三大支柱之三绩效调节
│   │   │   ├─开篇词-为什么你要关注研发效能?
│   │   │   ├─特别放送-每个开发人员都应该学一些VIM
│   │   │   ├─结束语-超越昨天的自己,享受成长的快乐
│   │   │   └─结课测试-关于研发效率的这些知识,你都掌握了吗?
│   │   ├─063-即时消息技术剖析与实战
│   │   │   ├─01-架构与特性:一个完整的IM系统是怎样的?
│   │   │   ├─02-消息收发架构:为你的App,加上实时通信功能
│   │   │   ├─03-轮询与长连接:如何解决消息的实时到达问题?
│   │   │   ├─04-ACK机制:如何保证消息的可靠投递?
│   │   │   ├─05-消息序号生成器:如何保证你的消息不会乱序?
│   │   │   ├─06-HttpDNS和TLS:你的消息聊天真的安全吗?
│   │   │   ├─063-即时消息技术剖析与实战
│   │   │   ├─07-分布式锁和原子性:你看到的未读消息提醒是真的吗?
│   │   │   ├─08-智能心跳机制:解决网络的不确定性
│   │   │   ├─09-分布式一致性:让你的消息支持多终端漫游
│   │   │   ├─10-自动智能扩缩容:直播互动场景中峰值流量的应对
│   │   │   ├─11-期中实战:动手写一个简易版的IM系统
│   │   │   ├─12-服务高可用:保证核心链路稳定性的流控和熔断机制
│   │   │   ├─13-HTTPTunnel:复杂网络下消息通道高可用设计的思考
│   │   │   ├─14-分片上传:如何让你的图片、音视频消息发送得更快?
│   │   │   ├─15-CDN加速:如何让你的图片、视频、语音消息浏览播放不卡?
│   │   │   ├─16-APNs:聊一聊第三方系统级消息通道的事
│   │   │   ├─17-Cache:多级缓存架构在消息系统中的应用
│   │   │   ├─18-Docker容器化:说一说IM系统中模块水平扩展的实现
│   │   │   ├─18-Docker容器化:说一说IM系统中模块水平扩展的实现
│   │   │   ├─19-端到端Trace:消息收发链路的监控体系搭建
│   │   │   ├─20-存储和并发:万人群聊系统设计中的几个难点
│   │   │   ├─21-期末实战:为你的简约版IM系统,加上功能
│   │   │   ├─22-答疑解惑:不同即时消息场景下架构实现上的异同
│   │   │   ├─开篇词-搞懂“实时交互”的IM技术,将会有什么新机遇?
│   │   │   ├─结束语-真正的高贵,不是优于别人,而是优于过去的自己
│   │   │   └─结课测试-“即时消息技术剖析与实战”100分试卷等你来挑战!
│   │   ├─064-全栈工程师修炼指南
│   │   │   ├─01-网络互联的昨天、今天和明天:HTTP协议的演化
│   │   │   ├─02-为HTTP穿上盔甲:HTTPS
│   │   │   ├─03-换个角度解决问题:服务端推送技术
│   │   │   ├─04-工整与自由的风格之争:SOAP和REST
│   │   │   ├─05-权衡的艺术:漫谈WebAPI的设计
│   │   │   ├─06-特别放送:北美大厂如何招聘全栈工程师?
│   │   │   ├─064-全栈工程师修炼指南
│   │   │   ├─07-解耦是永恒的主题:MVC框架的发展
│   │   │   ├─08-MVC架构解析:模型(Model)篇
│   │   │   ├─09-MVC架构解析:视图(View)篇
│   │   │   ├─10-MVC架构解析:控制器(Controller)篇
│   │   │   ├─11-剑走偏锋:面向切面编程
│   │   │   ├─12-唯有套路得人心:谈谈JavaEE的那些模式
│   │   │   ├─13-特别放送:选择比努力更重要
│   │   │   ├─14-别有洞天:从后端到前端
│   │   │   ├─15-重剑无锋,大巧不工:JavaScript面向对象
│   │   │   ├─16-百花齐放,百家争鸣:前端MVC框架
│   │   │   ├─17-不一样的体验:交互设计和页面布局
│   │   │   ├─18-千言万语不及一幅画:谈谈数据可视化
│   │   │   ├─19-打开潘多拉盒子:JavaScript异步编程
│   │   │   ├─20-特别放送:全栈团队的角色构成
│   │   │   ├─21-赫赫有名的双刃剑:缓存(上)
│   │   │   ├─22-赫赫有名的双刃剑:缓存(下)
│   │   │   ├─23-知其然,知其所以然:数据的持久化和一致性
│   │   │   ├─24-尺有所短,寸有所长:CAP和数据存储技术选择
│   │   │   ├─25-设计数据持久层(上):理论分析
│   │   │   ├─26-设计数据持久层(下):案例介绍
│   │   │   ├─27-特别放送:聊一聊代码审查
│   │   │   ├─28-Ops三部曲之一:配置管理
│   │   │   ├─29-Ops三部曲之二:集群部署
│   │   │   ├─30-Ops三部曲之三:测试和发布
│   │   │   ├─31-防人之心不可无:网站安全问题窥视
│   │   │   ├─32-和搜索引擎的对话:SEO的原理和基础
│   │   │   ├─33-特别放送:聊一聊程序员学英语
│   │   │   ├─34-网站性能优化(上)
│   │   │   ├─35-网站性能优化(下)
│   │   │   ├─35-网站性能优化(下)
│   │   │   ├─36-全栈开发中的算法(上)
│   │   │   ├─37-全栈开发中的算法(下)
│   │   │   ├─38-分页的那些事儿
│   │   │   ├─39-XML、JSON、YAML比较
│   │   │   ├─40-全栈衍化:让全栈意味着更多
│   │   │   ├─全栈回顾-成为更好的全栈工程师!
│   │   │   ├─好书荐读:小众书也有看头儿
│   │   │   ├─学习路径-怎样成为一名优秀的全栈工程师?
│   │   │   ├─导读-如何学习这个专栏?
│   │   │   ├─开篇词-从成长角度看,为什么你应该成为全栈工程师?
│   │   │   └─期末测试-对于全栈的内容,你掌握了多少呢?
│   │   ├─065-高并发系统设计40问
│   │   │   ├─01-高并发系统:它的通用设计方法是什么?
│   │   │   ├─02-架构分层:我们为什么一定要这么做?
│   │   │   ├─03-系统设计目标(一):如何提升系统性能?
│   │   │   ├─03-系统设计目标(一):如何提升系统性能?
│   │   │   ├─04-系统设计目标(二):系统怎样做到高可用?
│   │   │   ├─05-系统设计目标(三):如何让系统易于扩展?
│   │   │   ├─06-面试现场第一期:当问到组件实现原理时,面试官是在刁难你吗?
│   │   │   ├─065-高并发系统设计40问
│   │   │   ├─07-池化技术:如何减少频繁创建数据库连接的性能损耗?
│   │   │   ├─08-数据库优化方案(一):查询请求增加时,如何做主从分离?
│   │   │   ├─09-数据库优化方案(二):写入数据量增加时,如何实现分库分表?
│   │   │   ├─10-发号器:如何保证分库分表后ID的全局唯一性?
│   │   │   ├─11-NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?
│   │   │   ├─12-缓存:数据库成为瓶颈后,动态数据的查询要如何加速?
│   │   │   ├─13-缓存的使用姿势(一):如何选择缓存的读写策略?
│   │   │   ├─13-缓存的使用姿势(一):如何选择缓存的读写策略?
│   │   │   ├─14-缓存的使用姿势(二):缓存如何做到高可用?
│   │   │   ├─15-缓存的使用姿势(三):缓存穿透了怎么办?
│   │   │   ├─16-CDN:静态资源如何加速?
│   │   │   ├─17-消息队列:秒杀时如何处理每秒上万次的下单请求?
│   │   │   ├─18-消息投递:如何保证消息仅仅被消费一次?
│   │   │   ├─19-消息队列:如何降低消息队列系统中消息的延迟?
│   │   │   ├─20-面试现场第二期:当问到项目经历时,面试官究竟想要了解什么?
│   │   │   ├─21-系统架构:每秒1万次请求的系统要做服务化拆分吗?
│   │   │   ├─22-微服务架构:微服务化后系统架构要如何改造?
│   │   │   ├─23-RPC框架:10万QPS下如何实现毫秒级的服务调用?
│   │   │   ├─24-注册中心:分布式系统如何寻址?
│   │   │   ├─25-分布式Trace:横跨几十个分布式组件的慢请求要如何排查?
│   │   │   ├─25-分布式Trace:横跨几十个分布式组件的慢请求要如何排查?
│   │   │   ├─26-负载均衡:怎样提升系统的横向扩展能力?
│   │   │   ├─27-API网关:系统的门面要如何做呢?
│   │   │   ├─28-多机房部署:跨地域的分布式系统如何做?
│   │   │   ├─29-ServiceMesh:如何屏蔽服务化系统的服务治理细节?
│   │   │   ├─30-给系统加上眼睛:服务端监控要怎么做?
│   │   │   ├─31-应用性能管理:用户的使用体验应该如何监控?
│   │   │   ├─32-压力测试:怎样设计全链路压力测试平台?
│   │   │   ├─33-配置管理:成千上万的配置项要如何管理?
│   │   │   ├─34-降级熔断:如何屏蔽非核心系统故障的影响?
│   │   │   ├─35-流量控制:高并发系统中我们如何操纵流量?
│   │   │   ├─36-面试现场第三期:你要如何准备一场技术面试呢?
│   │   │   ├─37-计数系统设计(一):面对海量数据的计数器要如何做?
│   │   │   ├─38-计数系统设计(二):50万QPS下如何设计未读数系统?
│   │   │   ├─39-信息流设计(一):通用信息流系统的推模式要如何做?
│   │   │   ├─40-信息流设计(二):通用信息流系统的拉模式要如何做?
│   │   │   ├─加餐-数据的迁移应该如何做?
│   │   │   ├─开篇词-为什么你要学习高并发系统设计?
│   │   │   ├─春节特别策划-我们如何准备抵抗流量峰值?
│   │   │   ├─春节特别策划-高并发下如何发现和排查问题?
│   │   │   ├─期中测试-10道高并发系统设计题目自测
│   │   │   ├─用户故事-从“心”出发,我还有无数个可能
│   │   │   ├─结束语-学不可以已
│   │   │   ├─结课测试-高并发系统设计的相关知识,你都掌握了吗?
│   │   │   └─结课问卷获奖用户名单
│   │   ├─066-分布式技术原理与算法解析
│   │   │   ├─01-分布式缘何而起:从单兵,到游击队,到集团军
│   │   │   ├─02-分布式系统的指标:啥是分布式的三围
│   │   │   ├─03-分布式互斥:有你没我,有我没你
│   │   │   ├─04-分布式选举:国不可一日无君
│   │   │   ├─05-分布式共识:存异求同
│   │   │   ├─06-分布式事务:Allornothing
│   │   │   ├─066-分布式技术原理与算法解析
│   │   │   ├─07-分布式锁:关键重地,非请勿入
│   │   │   ├─08-分布式技术是如何引爆人工智能的?
│   │   │   ├─09-分布式体系结构之集中式结构:一人在上,万人在下
│   │   │   ├─10-分布式体系结构之非集中式结构:众生平等
│   │   │   ├─11-分布式调度架构之单体调度:物质文明、精神文明一手抓
│   │   │   ├─12-分布式调度架构之两层调度:物质文明、精神文明两手抓
│   │   │   ├─13-分布式调度架构之共享状态调度:物质文明、精神文明多手协商抓
│   │   │   ├─14-答疑篇:分布式事务与分布式锁相关问题
│   │   │   ├─15-分布式计算模式之MR:一门同流合污的艺术
│   │   │   ├─16-分布式计算模式之Stream:一门背锅的艺术
│   │   │   ├─17-分布式计算模式之Actor:一门甩锅的艺术
│   │   │   ├─18-分布式计算模式之流水线:你方唱罢我登场
│   │   │   ├─19-分布式通信之远程调用:我是你的千里眼
│   │   │   ├─20-分布式通信之发布订阅:送货上门
│   │   │   ├─21-分布式通信之消息队列:货物自取
│   │   │   ├─22-答疑篇:分布式体系架构与分布式计算相关问题
│   │   │   ├─23-CAP理论:这顶帽子我不想要
│   │   │   ├─24-分布式数据存储系统之三要素:顾客、导购与货架
│   │   │   ├─25-数据分布方式之哈希与一致性哈希:“掐指一算”与“掐指两算”的事
│   │   │   ├─26-分布式数据复制技术:分身有术
│   │   │   ├─27-分布式数据之缓存技术:“身手钥钱”随身带
│   │   │   ├─28-分布式高可靠之负载均衡:不患寡,而患不均
│   │   │   ├─29-分布式高可靠之流量控制:大禹治水,在疏不在堵
│   │   │   ├─30-分布式高可用之故障隔离:当断不断,反受其乱
│   │   │   ├─31-分布式高可用之故障恢复:知错能改,善莫大焉
│   │   │   ├─32-答疑篇:如何判断并解决网络分区问题?
│   │   │   ├─33-知识串联:以购买火车票的流程串联分布式核心技术
│   │   │   ├─34-搭建一个分布式实验环境:纸上得来终觉浅,绝知此事要躬行
│   │   │   ├─开篇词-四纵四横,带你透彻理解分布式技术
│   │   │   ├─特别放送-Jackey:寄语天涯客,轻寒底用愁
│   │   │   ├─特别放送-分布式下的一致性杂谈
│   │   │   ├─特别放送-崔新:追根溯源,拨开云雾见青天
│   │   │   ├─特别放送-徐志强:学习这件事儿,不到长城非好汉
│   │   │   ├─特别放送-那些你不能错过的分布式系统论文
│   │   │   ├─结束语-为什么说提升职业竞争力要从尊重、诚实开始?
│   │   │   ├─结课测试-关于分布式的这些知识点,你都掌握了吗?
│   │   ├─067-说透中台
│   │   │   ├─01-来龙去脉:中台为什么这么火?
│   │   │   ├─02-中台种类:你听说的中台真的是中台吗?
│   │   │   ├─03-中台定义:当我们谈中台时到底在谈些什么?
│   │   │   ├─04-万事预则立:中台建设前必须想清楚的四个问题
│   │   │   ├─05-D4模型:中台规划建设方法论概述
│   │   │   ├─06-中台落地第一步:企业战略分解及现状调研(Discovery)
│   │   │   ├─067-说透中台
│   │   │   ├─07-中台落地第二步:企业数字化全景规划(Define)
│   │   │   ├─08-中台落地第三步:中台的规划与设计(Design)
│   │   │   ├─09-中台落地第四步:中台的建设与接入(Delivery)
│   │   │   ├─09-中台落地第四步:中台的建设与接入(Delivery)
│   │   │   ├─10-总结:中台落地工具资源汇总
│   │   │   ├─开篇词-中台,昙花一现还是下一个风口?
│   │   │   ├─答疑篇(上)-你问我答,关于中台还有哪些困惑?
│   │   │   ├─答疑篇(下)-你问我答,关于中台还有哪些困惑?
│   │   │   └─结课测试|“说透中台”100分试卷等你来挑战
│   │   ├─068-DevOps实战笔记
│   │   │   ├─01-DevOps的“定义”:DevOps究竟要解决什么问题?
│   │   │   ├─02-DevOps的价值:数字化转型时代,DevOps是必选项?
│   │   │   ├─03-DevOps的实施:到底是工具先行还是文化先行?
│   │   │   ├─04-DevOps的衡量:你是否找到了DevOps的实施路线图?
│   │   │   ├─05-价值流分析:关于DevOps转型,我们应该从何处入手?
│   │   │   ├─06-转型之路:企业实施DevOps的常见路径和问题
│   │   │   ├─068-DevOps实战笔记
│   │   │   ├─07-业务敏捷:帮助DevOps快速落地的源动力
│   │   │   ├─08-精益看板(上):精益驱动的敏捷开发方法
│   │   │   ├─09-精益看板(下):精益驱动的敏捷开发方法
│   │   │   ├─10-配置管理:最容易被忽视的DevOps工程实践基础
│   │   │   ├─11-分支策略:让研发高效协作的关键要素
│   │   │   ├─12-持续集成:你说的CI和我说的CI是一回事吗?
│   │   │   ├─13-自动化测试:DevOps的阿克琉斯之踵
│   │   │   ├─14-内建质量:丰田和亚马逊给我们的启示
│   │   │   ├─15-技术债务:那些不可忽视的潜在问题
│   │   │   ├─16-环境管理:一切皆代码是一种什么样的体验?
│   │   │   ├─17-部署管理:低风险的部署发布策略
│   │   │   ├─18-混沌工程:软件领域的反脆弱
│   │   │   ├─19-正向度量:如何建立完整的DevOps度量体系?
│   │   │   ├─20-持续改进:PDCA体系和持续改进的意义
│   │   │   ├─21-开源还是自研:企业DevOps平台建设的三个阶段
│   │   │   ├─22-产品设计之道:DevOps产品设计的五个层次
│   │   │   ├─23-持续交付平台:现代流水线必备的十大特征(上)
│   │   │   ├─24-持续交付平台:现代流水线必备的十大特征(下)
│   │   │   ├─25-让数据说话:如何建设企业级数据度量平台?
│   │   │   ├─26-平台产品研发:三个月完成千人规模的产品要怎么做?
│   │   │   ├─27-巨人的肩膀:那些你不能忽视的开源工具
│   │   │   ├─28-迈向云端:云原生应用时代的平台思考
│   │   │   ├─29-向前一步:万人规模企业的DevOps实战转型案例(上)
│   │   │   ├─30-向前一步:万人规模企业的DevOps实战转型案例(下)
│   │   │   ├─开篇词-从默默无闻到风靡全球,DevOps究竟有什么魔力?
│   │   │   ├─期中总结-3个典型问题答疑及如何高效学习
│   │   │   ├─期末总结-在云时代,如何选择一款合适的流水线工具?
│   │   │   ├─期末测试-这些DevOps核心知识,你都掌握了吗?
│   │   │   ├─特别放送(一)-成为DevOps工程师的必备技能(上)
│   │   │   ├─特别放送(三)-学习DevOps不得不了解的经典资料
│   │   │   ├─特别放送(二)-成为DevOps工程师的必备技能(下)
│   │   │   ├─特别放送(五)-关于DevOps组织和文化的那些趣事儿
│   │   │   ├─特别放送(四)-Jenkins产品经理是如何设计产品的?
│   │   │   ├─结束语-持续改进,成就非凡!
│   │   ├─069-DDD实战课
│   │   │   ├─01-领域驱动设计:微服务设计为什么要选择DDD?
│   │   │   ├─02-领域、子域、核心域、通用域和支撑域:傻傻分不清?
│   │   │   ├─03-限界上下文:定义领域边界的利器
│   │   │   ├─03-限界上下文:定义领域边界的利器
│   │   │   ├─04-实体和值对象:从领域模型的基础单元看系统设计
│   │   │   ├─05-聚合和聚合根:怎样设计聚合?
│   │   │   ├─05-聚合和聚合根:怎样设计聚合?
│   │   │   ├─06-领域事件:解耦微服务的关键
│   │   │   ├─069-DDD实战课
│   │   │   ├─07-DDD分层架构:有效降低层与层之间的依赖
│   │   │   ├─08-微服务架构模型:几种常见模型的对比和分析
│   │   │   ├─09-中台:数字转型后到底应该共享什么?
│   │   │   ├─10-DDD、中台和微服务:它们是如何协作的?
│   │   │   ├─11-DDD实践:如何用DDD重构中台业务模型?
│   │   │   ├─12-领域建模:如何用事件风暴构建领域模型?
│   │   │   ├─13-代码模型(上):如何使用DDD设计微服务代码模型?
│   │   │   ├─14-代码模型(下):如何保证领域模型与代码模型的一致性?
│   │   │   ├─15-边界:微服务的各种边界在架构演进中的作用?
│   │   │   ├─16-视图:如何实现服务和数据在微服务各层的协作?
│   │   │   ├─17-从后端到前端:微服务后,前端如何设计?
│   │   │   ├─18-知识点串讲:基于DDD的微服务设计实例
│   │   │   ├─19-总结(一):微服务设计和拆分要坚持哪些原则?
│   │   │   ├─20-总结(二):分布式架构关键设计10问
│   │   │   ├─基于DDD的微服务设计实例代码详解
│   │   │   ├─开篇词-学好了DDD,你能做什么?
│   │   │   ├─抽奖|《DDD实战课》沉淀成书了,感谢有你!
│   │   │   ├─期末测试-有关DDD的内容,你掌握了多少呢?
│   │   │   ├─答疑:有关3个典型问题的讲解
│   │   │   ├─结束语-所谓高手,就是跨过坑和大海!
│   │   │   └─结束语-所谓高手,就是跨过坑和大海!
│   │   ├─070-苏杰的产品创新课
│   │   │   ├─01-为什么每个人都要学产品创新课?
│   │   │   ├─02-四轮MVP框架导读:产品从无到有的创新,有通杀的法门吗?
│   │   │   ├─03-从理解用户开始:故事、生态、画像、旅程
│   │   │   ├─04-竞品生态:真正有效的竞品分析怎么做?
│   │   │   ├─05-打造属于你的点子过滤器
│   │   │   ├─06-Y模型:从问题域到方案域的最硬核解题思路
│   │   │   ├─06-Y模型:从问题域到方案域的最硬核解题思路
│   │   │   ├─07-用“原型”低成本验证:差个程序员,也可以做产品
│   │   │   ├─070-苏杰的产品创新课
│   │   │   ├─08-设计冲刺:谷歌创投如何帮助产品成功?
│   │   │   ├─09-产品服务系统:避免狭隘,再聊什么是产品
│   │   │   ├─10-好产品的评价标准:单一产品的两个维度
│   │   │   ├─11-习惯、启程、发现、精通:一个好产品的起步逻辑
│   │   │   ├─12-和用户一起成长:生命周期,不同阶段怎么运营
│   │   │   ├─13-真正的成功指标:用户数、收入等等都不是
│   │   │   ├─14-赚到钱只是结果:做出来和推出去的效率
│   │   │   ├─15-需求采集:各种方法怎么灵活应用
│   │   │   ├─16-KANO模型:雪中送炭与锦上添花
│   │   │   ├─17-产品进化案例:千岛湖啤酒的脑洞
│   │   │   ├─18-我的实践:这门“产品创新课”本身
│   │   │   ├─19-从产品到产品矩阵:可复用、能积累、善生死
│   │   │   ├─20-组织团队的支撑:面向未来,如何提升你的竞争力
│   │   │   ├─20-组织团队的支撑:面向未来,如何提升你的竞争力
│   │   │   ├─21-长大以后:从4轮到6轮MVP(M2V6P)
│   │   │   ├─22-步步为营:项目、产品、平台、生态
│   │   │   ├─23-痛苦抉择:从满足用户到“伤害”用户
│   │   │   ├─24-众里寻他:怎么找到合适的产品达人?
│   │   │   ├─25-借力打力:和产品达人做朋友
│   │   │   ├─26-养家糊口:商业模式=价值+收入+过程
│   │   │   ├─27-群策群力:组织效率,管理?沟通?协作?
│   │   │   ├─28-长期主义:从产品到职场、人生
│   │   │   ├─加餐-知识地图:学习产品创新的意义是什么?
│   │   │   ├─开篇词-人人都是产品经理吗?
│   │   │   ├─结束语-死亡是宇宙最伟大的发明
│   │   │   └─结课测试-这些产品创新知识,你真的掌握了吗?
│   │   ├─071-雷蓓蓓的项目管理实战课
│   │   │   ├─01|角色转变:新手项目管理的三大误区
│   │   │   ├─02|十大领域五大过程组(上):你必须了解的项目管理常识
│   │   │   ├─03|十大领域五大过程组(下):你必须了解的项目管理常识
│   │   │   ├─04-启动:盘活四类干系人,把拥护项目的人搞得多多的
│   │   │   ├─05-规划:扫除五大“延期地雷”,计划是用来对焦的
│   │   │   ├─06-执行:三种闭环验证方法,保证执行不走样
│   │   │   ├─07-监控:“巧”用数据说话,让汇报告别流水账
│   │   │   ├─071-雷蓓蓓的项目管理实战课
│   │   │   ├─08-收尾:持续改进,从真正有效的复盘开始
│   │   │   ├─09-需求变更:三个锦囊,让需求变更不再是洪水猛兽
│   │   │   ├─10-风险管理:冰山下的风险,如何系统化应对?
│   │   │   ├─11-质量管理:层层卡点,一次把事情做对
│   │   │   ├─12-高效会议:拒绝例行公事,开好最有必要的会
│   │   │   ├─12-高效会议:拒绝例行公事,开好最有必要的会
│   │   │   ├─13|工具方法大串讲:手把手教你高效管理
│   │   │   ├─14|“学习”到“实战”的距离,到底有多远?
│   │   │   ├─15|学会对焦,从头到尾把事做成(上)
│   │   │   ├─16|学会对焦,从头到尾把事做成(下)
│   │   │   ├─17|新手上路,如何引入变化?
│   │   │   ├─17|新手上路,如何引入变化?
│   │   │   ├─18-小步快跑,小而美的敏捷
│   │   │   ├─19|用户故事:我想从头到尾把事情做成
│   │   │   ├─20|向上沟通:你必须要注意的三个误区
│   │   │   ├─21|跨部门沟通:怎么让不归你管的人积极配合你?
│   │   │   ├─22|向下沟通(上):无权无势,他们不听你的怎么办?
│   │   │   ├─23-向下沟通(下):无权无势,他们不听你的怎么办?
│   │   │   ├─24|小心“猴子”:项目经理的头号时间杀手
│   │   │   ├─25-进阶之路:项目经理预备战之PMP认证攻略
│   │   │   ├─开篇词|使众人行:如何带领一群人把事做成?
│   │   │   ├─结束语-如果我可以,你也一定行!
│   │   │   ├─结课测试|这些项目管理知识你都掌握了吗?
│   │   │   ├─迭代说明|如何学习项目管理这门课?
│   │   │   └─迭代说明|如何学习项目管理这门课?
│   │   ├─072-设计模式之美
│   │   │   ├─01-为什么说每个程序员都要尽早地学习并掌握设计模式相关知识?
│   │   │   ├─02-从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?
│   │   │   ├─03-面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?(1)
│   │   │   ├─03-面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?
│   │   │   ├─04-理论一:当谈论面向对象的时候,我们到底在谈论什么?(1)
│   │   │   ├─04-理论一:当谈论面向对象的时候,我们到底在谈论什么?
│   │   │   ├─05-理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?
│   │   │   ├─06-理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?
│   │   │   ├─07-理论四:哪些代码设计看似是面向对象,实际是面向过程的?
│   │   │   ├─072-设计模式之美
│   │   │   ├─08-理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?
│   │   │   ├─09-理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?
│   │   │   ├─10-理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?
│   │   │   ├─100-如何将设计思想、原则、模式等理论知识应用到项目中?
│   │   │   ├─11-实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
│   │   │   ├─12-实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
│   │   │   ├─13-实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?
│   │   │   ├─14-实战二(下):如何利用面向对象设计和编程开发接口鉴权功能?
│   │   │   ├─15-理论一:对于单一职责原则,如何判定某个类的职责是否够“单一”?
│   │   │   ├─16-理论二:如何做到“对扩展开放、修改关闭”?扩展和修改各指什么?
│   │   │   ├─17-理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?
│   │   │   ├─18-理论四:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?
│   │   │   ├─19-理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
│   │   │   ├─20-理论六:我为何说KISS、YAGNI原则看似简单,却经常被用错?
│   │   │   ├─21-理论七:重复的代码就一定违背DRY吗?如何提高代码的复用性?
│   │   │   ├─22-理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”?
│   │   │   ├─23-实战一(上):针对业务系统的开发,如何做需求分析和设计?
│   │   │   ├─24-实战一(下):如何实现一个遵从设计原则的积分兑换系统?
│   │   │   ├─25-实战二(上):针对非业务的通用框架开发,如何做需求分析和设计?
│   │   │   ├─26-实战二(下):如何实现一个支持各种统计规则的性能计数器?
│   │   │   ├─27-理论一:什么情况下要重构?到底重构什么?又该如何重构?
│   │   │   ├─28-理论二:为了保证重构不出错,有哪些非常能落地的技术手段?
│   │   │   ├─29-理论三:什么是代码的可测试性?如何写出可测试性好的代码?
│   │   │   ├─30-理论四:如何通过封装、抽象、模块化、中间层等解耦代码?
│   │   │   ├─31-理论五:让你最快速地改善代码质量的20条编程规范(上)
│   │   │   ├─32-理论五:让你最快速地改善代码质量的20条编程规范(中)
│   │   │   ├─32-理论五:让你最快速地改善代码质量的20条编程规范(中)
│   │   │   ├─33-理论五:让你最快速地改善代码质量的20条编程规范(下)
│   │   │   ├─34-实战一(上):通过一段ID生成器代码,学习如何发现代码质量问题
│   │   │   ├─35-实战一(下):手把手带你将ID生成器代码从“能用”重构为“好用”
│   │   │   ├─36-实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?
│   │   │   ├─37-实战二(下):重构ID生成器项目中各函数的异常处理代码
│   │   │   ├─38-总结回顾面向对象、设计原则、编程规范、重构技巧等知识点
│   │   │   ├─38-总结回顾面向对象、设计原则、编程规范、重构技巧等知识点
│   │   │   ├─39-运用学过的设计原则和思想完善之前讲的性能计数器项目(上)
│   │   │   ├─40-运用学过的设计原则和思想完善之前讲的性能计数器项目(下)
│   │   │   ├─41-单例模式(上):为什么说支持懒加载的双重检测不比饿汉式更优?
│   │   │   ├─42-单例模式(中):我为什么不推荐使用单例模式?又有何替代方案?
│   │   │   ├─43-单例模式(下):如何设计实现一个集群环境下的分布式单例模式?
│   │   │   ├─44-工厂模式(上):我为什么说没事不要随便用工厂模式创建对象?
│   │   │   ├─45-工厂模式(下):如何设计实现一个DependencyInjection框架?
│   │   │   ├─46-建造者模式:详解构造函数、set方法、建造者模式三种对象创建方式
│   │   │   ├─47-原型模式:如何最快速地clone一个HashMap散列表?
│   │   │   ├─48-代理模式:代理在RPC、缓存、监控等场景中的应用
│   │   │   ├─49-桥接模式:如何实现支持不同类型和渠道的消息推送系统?
│   │   │   ├─50-装饰器模式:通过剖析JavaIO类库源码学习装饰器模式
│   │   │   ├─51-适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?
│   │   │   ├─52-门面模式:如何设计合理的接口粒度以兼顾接口的易用性和通用性?
│   │   │   ├─53-组合模式:如何设计实现支持递归遍历的文件系统目录树结构?
│   │   │   ├─54-享元模式(上):如何利用享元模式优化文本编辑器的内存占用?
│   │   │   ├─55-享元模式(下):剖析享元模式在JavaInteger、String中的应用
│   │   │   ├─56-观察者模式(上):详解各种应用场景下观察者模式的不同实现方式
│   │   │   ├─57-观察者模式(下):如何实现一个异步非阻塞的EventBus框架?
│   │   │   ├─58-模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用
│   │   │   ├─58-模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用
│   │   │   ├─59-模板模式(下):模板模式与Callback回调函数有何区别和联系?
│   │   │   ├─60-策略模式(上):如何避免冗长的if-else-switch分支判断代码?
│   │   │   ├─61-策略模式(下):如何实现一个支持给不同大小文件排序的小程序?
│   │   │   ├─62-职责链模式(上):如何实现可灵活扩展算法的敏感信息过滤框架?
│   │   │   ├─63-职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?
│   │   │   ├─64-状态模式:游戏、工作流引擎中常用的状态机是如何实现的?
│   │   │   ├─65-迭代器模式(上):相比直接遍历集合数据,使用迭代器有哪些优势?
│   │   │   ├─66-迭代器模式(中):遍历集合的同时,为什么不能增删集合元素?
│   │   │   ├─67-迭代器模式(下):如何设计实现一个支持“快照”功能的iterator?
│   │   │   ├─68-访问者模式(上):手把手带你还原访问者模式诞生的思维过程
│   │   │   ├─69-访问者模式(下):为什么支持双分派的语言不需要访问者模式?
│   │   │   ├─70-备忘录模式:对于大对象的备份和恢复,如何优化内存和时间的消耗?
│   │   │   ├─71-命令模式:如何利用命令模式实现一个手游后端架构?
│   │   │   ├─72-解释器模式:如何设计实现一个自定义接口告警规则功能?
│   │   │   ├─73-中介模式:什么时候用中介模式?什么时候用观察者模式?
│   │   │   ├─74-总结回顾23种经典设计模式的原理、背后的思想、应用场景等
│   │   │   ├─75-在实际的项目开发中,如何避免过度设计?又如何避免设计不足?
│   │   │   ├─76-开源实战一(上):通过剖析JavaJDK源码学习灵活应用设计模式
│   │   │   ├─76-开源实战一(上):通过剖析JavaJDK源码学习灵活应用设计模式
│   │   │   ├─77-开源实战一(下):通过剖析JavaJDK源码学习灵活应用设计模式
│   │   │   ├─78-开源实战二(上):从Unix开源开发学习应对大型复杂项目开发
│   │   │   ├─79-开源实战二(中):从Unix开源开发学习应对大型复杂项目开发
│   │   │   ├─80-开源实战二(下):从Unix开源开发学习应对大型复杂项目开发
│   │   │   ├─81-开源实战三(上):借GoogleGuava学习发现和开发通用功能模块
│   │   │   ├─82-开源实战三(中):剖析GoogleGuava中用到的几种设计模式
│   │   │   ├─83-开源实战三(下):借GoogleGuava学习三大编程范式中的函数式编程
│   │   │   ├─84-开源实战四(上):剖析Spring框架中蕴含的经典设计思想或原则
│   │   │   ├─85-开源实战四(中):剖析Spring框架中用来支持扩展的两种设计模式
│   │   │   ├─86-开源实战四(下):总结Spring框架用到的11种设计模式
│   │   │   ├─87-开源实战五(上):MyBatis如何权衡易用性、性能和灵活性?
│   │   │   ├─88-开源实战五(中):如何利用职责链与代理模式实现MyBatisPlugin?
│   │   │   ├─89-开源实战五(下):总结MyBatis框架中用到的10种设计模式
│   │   │   ├─90-项目实战一:设计实现一个支持各种算法的限流框架(分析)
│   │   │   ├─91-项目实战一:设计实现一个支持各种算法的限流框架(设计)
│   │   │   ├─92-项目实战一:设计实现一个支持各种算法的限流框架(实现)
│   │   │   ├─93-项目实战二:设计实现一个通用的接口幂等框架(分析)
│   │   │   ├─94-项目实战二:设计实现一个通用的接口幂等框架(设计)
│   │   │   ├─95-项目实战二:设计实现一个通用的接口幂等框架(实现)
│   │   │   ├─96-项目实战三:设计实现一个支持自定义规则的灰度发布组件(分析)
│   │   │   ├─97-项目实战三:设计实现一个支持自定义规则的灰度发布组件(设计)
│   │   │   ├─98-项目实战三:设计实现一个支持自定义规则的灰度发布组件(实现)
│   │   │   ├─99-总结回顾:在实际软件开发中常用的设计思想、原则和模式
│   │   │   ├─加餐一-用一篇文章带你了解专栏中用到的所有Java语法
│   │   │   ├─加餐一-用一篇文章带你了解专栏中用到的所有Java语法
│   │   │   ├─加餐七-基础学科的知识如何转化成实际的技术生产力?
│   │   │   ├─加餐三-聊一聊Google是如何做CodeReview的
│   │   │   ├─加餐九-作为面试官或候选人,如何面试或回答设计模式问题?
│   │   │   ├─加餐二-设计模式、重构、编程规范等相关书籍推荐
│   │   │   ├─加餐五-听一听小争哥对Google工程师文化的解读
│   │   │   ├─加餐八-程序员怎么才能让自己走得更高、更远?
│   │   │   ├─加餐六-什么才是所谓的编程能力?如何考察一个人的编程能力?
│   │   │   ├─加餐十-如何接手一坨烂业务代码?如何在烂业务代码中成长?
│   │   │   ├─加餐四-聊一聊Google那些让我快速成长的地方
│   │   │   ├─加餐四-聊一聊Google那些让我快速成长的地方
│   │   │   ├─开篇词-一对一的设计与编码集训,让你告别没有成长的烂代码!
│   │   │   ├─春节特别加餐-王争:如何学习《设计模式之美》专栏?
│   │   │   ├─结束语-聊一聊机遇、方向、能力、努力!
│   │   │   └─结束语-聊一聊机遇、方向、能力、努力!
│   │   ├─073-JavaScript核心原理解析
│   │   │   ├─01-delete0:JavaScript中到底有什么是可以销毁的
│   │   │   ├─02-varx=y=100:声明语句与语法改变了JavaScript语言核心性质
│   │   │   ├─03-a
│   │   │   ├─04-exportdefaultfunction(){}:你无法导出一个匿名函数表达式
│   │   │   ├─05-for(letxof[1,2,3])
│   │   │   ├─06-x-breakx;搞懂如何在循环外使用break,方知语句执行真解
│   │   │   ├─07-`${1}`:详解JavaScript中特殊的可执行结构
│   │   │   ├─073-JavaScript核心原理解析
│   │   │   ├─08-x=-x:函数式语言的核心抽象:函数与表达式的同一性
│   │   │   ├─09-(
│   │   │   ├─10-x=yieldx:迭代过程的“函数式化”
│   │   │   ├─11-throw1;:它在“最简单语法榜”上排名第三
│   │   │   ├─12-1in1
│   │   │   ├─13-newX:从构造器到类,为你揭密对象构造的全程
│   │   │   ├─14-super
│   │   │   ├─15-returnObject
│   │   │   ├─15-returnObject
│   │   │   ├─16-[a,b]={a,b}:让你从一行代码看到对象的本质
│   │   │   ├─17-Object
│   │   │   ├─18-a+b:动态类型是灾难之源还是最好的特性?(上)
│   │   │   ├─19-a+b:动态类型是灾难之源还是最好的特性?(下)
│   │   │   ├─20-(0,eval)(-x=100-):一行让严格模式形同虚设的破坏性设计(上)
│   │   │   ├─21-(0,eval)(-x=100-):一行让严格模式形同虚设的破坏性设计(下)
│   │   │   ├─22-newFunction(‘x=100’)();:函数的类化是对动态与静态系统的再次统一
│   │   │   ├─加餐-捡豆吃豆的学问(上):这门课讲的是什么?
│   │   │   ├─加餐-捡豆吃豆的学问(下):这门课该怎么学?
│   │   │   ├─加餐-让JavaScript运行起来
│   │   │   ├─开篇词-如何解决语言问题?
│   │   │   ├─结束语-愿你能做一个真正“懂”的程序员
│   │   │   └─结课测试-这些JavaScript知识,你真的掌握了吗?
│   │   ├─074-后端技术面试38讲
│   │   │   ├─01丨程序运行原理:程序是如何运行又是如何崩溃的?
│   │   │   ├─02丨数据结构原理:Hash表的时间复杂度为什么是O(1)?
│   │   │   ├─03丨Java虚拟机原理:JVM为什么被称为机器(machine)?
│   │   │   ├─04丨网络编程原理:一个字符的互联网之旅
│   │   │   ├─05丨文件系统原理:如何用1分钟遍历一个100TB的文件?
│   │   │   ├─06丨数据库原理:为什么PrepareStatement性能更好更安全?
│   │   │   ├─074-后端技术面试38讲
│   │   │   ├─07丨编程语言原理:面向对象编程是编程的终极形态吗?
│   │   │   ├─08丨软件设计的方法论:软件为什么要建模?
│   │   │   ├─09丨软件设计实践:如何使用UML完成一个设计文档?
│   │   │   ├─10-软件设计的目的:糟糕的程序员比优秀的程序员差在哪里?
│   │   │   ├─11丨软件设计的开闭原则:如何不修改代码却能实现需求变更?
│   │   │   ├─12-软件设计的依赖倒置原则:如何不依赖代码却可以复用它的功能?
│   │   │   ├─13丨软件设计的里氏替换原则:正方形可以继承长方形吗?
│   │   │   ├─14-软件设计的单一职责原则:为什么说一个类文件打开最好不要超过一屏?
│   │   │   ├─15丨软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?
│   │   │   ├─16-设计模式基础:不会灵活应用设计模式,你就没有掌握面向对象编程
│   │   │   ├─17-设计模式应用:编程框架中的设计模式
│   │   │   ├─18-反应式编程框架设计:如何使程序调用不阻塞等待,立即响应?
│   │   │   ├─19-组件设计原则:组件的边界在哪里?
│   │   │   ├─20-领域驱动设计:35岁的程序员应该写什么样的代码?
│   │   │   ├─21丨分布式架构:如何应对高并发的用户请求
│   │   │   ├─22-缓存架构:如何减少不必要的计算?
│   │   │   ├─23-异步架构:如何避免互相依赖的系统间耦合?
│   │   │   ├─24-负载均衡架构:如何用10行代码实现一个负载均衡服务?
│   │   │   ├─25-数据存储架构:如何改善系统的数据存储能力?
│   │   │   ├─26-搜索引擎架构:如何瞬间完成海量数据检索?
│   │   │   ├─27-微服务架构:微服务究竟是灵丹还是毒药?
│   │   │   ├─28-高性能架构:除了代码,你还可以在哪些地方优化性能?
│   │   │   ├─29-高可用架构:我们为什么感觉不到淘宝应用升级时的停机?
│   │   │   ├─30-安全性架构:为什么说用户密码泄漏是程序员的锅?
│   │   │   ├─31-大数据架构:大数据技术架构的思想和原理是什么?
│   │   │   ├─32-AI与物联网架构:从智能引擎到物联网平台
│   │   │   ├─33-区块链技术架构:区块链到底能做什么?
│   │   │   ├─34-技术修炼之道:同样工作十几年,为什么有的人成为大厂架构师,有的人失业?
│   │   │   ├─35-技术进阶之道:你和这个星球最顶级的程序员差几个等级?
│   │   │   ├─36丨技术落地之道:你真的知道自己要解决的问题是什么吗?
│   │   │   ├─37丨技术沟通之道:如何解决问题?
│   │   │   ├─38丨技术管理之道:你真的要转管理吗?
│   │   │   ├─加餐-软件设计文档示例模板
│   │   │   ├─开篇词-掌握软件开发技术的第一性原理
│   │   │   ├─期末测试丨快来测测你对专栏内容掌握到何种程度了
│   │   │   ├─答疑丨JavaWeb程序的运行时环境到底是怎样的?
│   │   │   ├─答疑丨互联网需要解决的技术问题是什么?
│   │   │   ├─答疑丨对于设计模式而言,场景到底有多重要?
│   │   │   ├─答疑丨工作中的交往和沟通,都有哪些小技巧呢?
│   │   │   ├─结束语丨期待未来的你,成为优秀的软件架构师
│   │   │   └─结束语丨期待未来的你,成为优秀的软件架构师
│   │   ├─075-现代C++编程实战
│   │   │   ├─01-堆、栈、RAII:C++里该如何管理资源?
│   │   │   ├─02-自己动手,实现C++的智能指针
│   │   │   ├─03-右值和移动究竟解决了什么问题?
│   │   │   ├─04-容器汇编I:比较简单的若干容器
│   │   │   ├─05-容器汇编II:需要函数对象的容器
│   │   │   ├─05-容器汇编II:需要函数对象的容器
│   │   │   ├─06-异常:用还是不用,这是个问题
│   │   │   ├─07-迭代器和好用的新for循环
│   │   │   ├─075-现代C++编程实战
│   │   │   ├─08-易用性改进I:自动类型推断和初始化
│   │   │   ├─09-易用性改进II:字面量、静态断言和成员函数说明符
│   │   │   ├─10-到底应不应该返回对象?
│   │   │   ├─11-Unicode:进入多文字支持的世界
│   │   │   ├─12-编译期多态:泛型编程和模板入门
│   │   │   ├─13-编译期能做些什么?一个完整的计算世界
│   │   │   ├─14-SFINAE:不是错误的替换失败是怎么回事
│   │   │   ├─15-constexpr:一个常态的世界
│   │   │   ├─16-函数对象和lambda:进入函数式编程
│   │   │   ├─17-函数式编程:一种越来越流行的编程范式
│   │   │   ├─17-函数式编程:一种越来越流行的编程范式
│   │   │   ├─18-应用可变模板和tuple的编译期技巧
│   │   │   ├─19-thread和future:领略异步中的未来
│   │   │   ├─20-内存模型和atomic:理解并发的复杂性
│   │   │   ├─21-工具漫谈:编译、格式化、代码检查、排错各显身手
│   │   │   ├─22-处理数据类型变化和错误:optional、variant、expected和Herbception
│   │   │   ├─23-数字计算:介绍线性代数和数值计算库
│   │   │   ├─24-Boost:你需要的“瑞士军刀”
│   │   │   ├─25-两个单元测试库:C++里如何进行单元测试
│   │   │   ├─26-Easylogging++和spdlog:两个好用的日志库
│   │   │   ├─27-C++RESTSDK:使用现代C++开发网络应用
│   │   │   ├─28-Concepts:如何对模板进行约束
│   │   │   ├─29-Ranges:无迭代器的迭代和更方便的组合
│   │   │   ├─30-Coroutines:协作式的交叉调度执行
│   │   │   ├─31|new和delete背后:分配函数和释放函数
│   │   │   ├─31|new和delete背后:分配函数和释放函数
│   │   │   ├─32|容器里的内存管理:分配器
│   │   │   ├─33|性能测试的正确姿势:性能、时间和优化
│   │   │   ├─34|快速分配和释放内存:内存池
│   │   │   ├─35-发现和识别内存问题:内存调试实践
│   │   │   ├─36|访问对象的代理对象:视图类型
│   │   │   ├─37|参数传递的正确方法和模板的二进制膨胀
│   │   │   ├─38-折叠表达式:高效的编译期展开
│   │   │   ├─39-如何在编译期玩转字符串?
│   │   │   ├─40-如何在编译期遍历数据?
│   │   │   ├─41|对象传参和返回的最佳实践
│   │   │   ├─加餐-部分课后思考题答案合集
│   │   │   ├─开篇词-C++这么难,为什么我们还要用C++?
│   │   │   ├─新春寄语-35年码龄程序员:人生漫长,走点弯路在所难免
│   │   │   ├─新春寄语-35年码龄程序员:人生漫长,走点弯路在所难免
│   │   │   ├─新春福利-C++好书荐读
│   │   │   ├─旅程再启|那些关于C++的新认知
│   │   │   ├─期末测试-对于现代C++,你掌握了多少呢?
│   │   │   ├─第二季回归|拿下Vim,让编程效率神器为我所用
│   │   │   ├─结束语-终点已达,行程还要继续
│   │   │   ├─课前必读-有关术语发音及环境要求
│   │   │   └─课前必读-有关术语发音及环境要求
│   │   ├─076-性能工程高手课
│   │   │   ├─01-程序员为什么要关心代码性能?
│   │   │   ├─02-程序员也要关心整个系统和公司成本吗?
│   │   │   ├─03-导读:专栏是怎么设计的?需要哪些知识?
│   │   │   ├─04-性能工程三定律:IT业和性能优化工作的“法律法规”
│   │   │   ├─04-性能工程三定律:IT业和性能优化工作的“法律法规”
│   │   │   ├─05-概率统计和排队论:做性能工作必须懂的数理基础
│   │   │   ├─06-性能数据的分析:如何从大量数据中看出想要的信号?
│   │   │   ├─07-性能数据的展示:一图胜千言,说出你的数据故事
│   │   │   ├─076-性能工程高手课
│   │   │   ├─08-经验总结:必须熟记的一组常用性能数字
│   │   │   ├─09-性能测试的种类:如何快准狠地抓住一个测试的本质?
│   │   │   ├─10-性能测试的规划和步骤:为什么性能测试不容易一蹴而就呢?
│   │   │   ├─11-性能测试的工具:七大测试场景如何选择高质量的测试工具?
│   │   │   ├─12-九条性能测试的经验和教训:如何保证测试结果可靠且可重复?
│   │   │   ├─13-性能测试的工程集成:如何与产品开发和运维业务有机集成?
│   │   │   ├─14-性能分析概述:性能问题归根结底是什么原因?
│   │   │   ├─15-CPU篇:如何让CPU的运行不受阻碍?
│   │   │   ├─16-内存篇:如何减少延迟提升内存分配效率?
│   │   │   ├─17-存储篇:如何根据性能优缺点选择最合适的存储系统?
│   │   │   ├─18-网络篇:如何步步拆解处理复杂的网络性能问题?
│   │   │   ├─19-性能优化六大原则:三要三不要,快速有效地进行优化
│   │   │   ├─20-性能优化十大策略:如何系统地有层次地优化性能问题?
│   │   │   ├─21-CPU案例:如何提高LLC(最后一级缓存)的命中率?
│   │   │   ├─22-系统案例:如何提高iTLB(指令地址映射)的命中率?
│   │   │   ├─23-存储案例:如何降低SSD峰值延迟?
│   │   │   ├─24-跨层案例:如何优化程序、OS和存储系统的交互?
│   │   │   ├─25-如何在生产环境中进行真实的容量测试?
│   │   │   ├─26-怎么规划和控制数据库的复制延迟大小?
│   │   │   ├─27-多任务环境中的Java性能问题,怎样才能不让程序互相干扰?
│   │   │   ├─28-网络数据传输慢,问题到底出在哪了?
│   │   │   ├─29-如何彻底发挥SSD的潜力?
│   │   │   ├─30-服务器的管理和部署:工业界近几年有哪些发展趋势?
│   │   │   ├─31-规划部署数据中心要考虑哪些重要因素?
│   │   │   ├─32-服务的容量规划:怎样才能做到有备无患?
│   │   │   ├─33-服务效率提升:如何降低公司运营成本?
│   │   │   ├─34-服务需求控制管理:每种需求都是必需的吗?
│   │   │   ├─35-职业发展:从“锦上添花”到“不可或缺”
│   │   │   ├─36-如何成为优秀的性能和容量工程师?
│   │   │   ├─36-如何成为优秀的性能和容量工程师?
│   │   │   ├─开篇词-代码不要眼前的苟且,而要效率的提升和性能的优化
│   │   │   ├─结束语-不愁明月尽,自有夜珠来
│   │   │   ├─结课测试-这些性能工程知识,你真的掌握了吗?
│   │   ├─077-安全攻防技能30讲
│   │   │   ├─01-安全的本质:数据被窃取后,你能意识到问题来源吗?
│   │   │   ├─02-安全原则:我们应该如何上手解决安全问题?
│   │   │   ├─03-密码学基础:如何让你的密码变得“不可见”?
│   │   │   ├─04-身份认证:除了账号密码,我们还能怎么做身份认证?
│   │   │   ├─04-身份认证:除了账号密码,我们还能怎么做身份认证?
│   │   │   ├─05-访问控制:如何选取一个合适的数据保护方案?
│   │   │   ├─06-XSS:当你“被发送”了一条微博时,到底发生了什么?
│   │   │   ├─07-SQL注入:明明设置了强密码,为什么还会被别人登录?
│   │   │   ├─077-安全攻防技能30讲
│   │   │   ├─08-CSRF-SSRF:为什么避免了XSS,还是“被发送”了一条微博?
│   │   │   ├─09-反序列化漏洞:使用了编译型语言,为什么还是会被注入?
│   │   │   ├─10-信息泄露:为什么黑客会知道你的代码逻辑?
│   │   │   ├─11-插件漏洞:我的代码看起来很安全,为什么还会出现漏洞?
│   │   │   ├─12-权限提升和持久化:为什么漏洞修复了,黑客还是能够自由进出?
│   │   │   ├─13-Linux系统安全:多人共用服务器,如何防止别人干“坏事”?
│   │   │   ├─14-网络安全:和别人共用Wi-Fi时,你的信息会被窃取吗?
│   │   │   ├─15-Docker安全:在虚拟的环境中,就不用考虑安全了吗?
│   │   │   ├─16-数据库安全:数据库中的数据是如何被黑客拖取的?
│   │   │   ├─17-分布式安全:上百个分布式节点,不会出现“内奸”吗?
│   │   │   ├─18-安全标准和框架:怎样依“葫芦”画出好“瓢”?
│   │   │   ├─18-安全标准和框架:怎样依“葫芦”画出好“瓢”?
│   │   │   ├─19-防火墙:如何和黑客“划清界限”?
│   │   │   ├─20-WAF:如何为漏洞百出的Web应用保驾护航?
│   │   │   ├─21-IDS:当黑客绕过了防火墙,你该如何发现?
│   │   │   ├─22-RASP:写规则写得烦了?尝试一下更底层的IDS
│   │   │   ├─23-SIEM:一个人管理好几个安全工具,如何高效运营?
│   │   │   ├─24-SDL:怎样才能写出更“安全”的代码?
│   │   │   ├─25-业务安全体系:对比基础安全,业务安全有哪些不同?
│   │   │   ├─26-产品安全方案:如何降低业务对黑灰产的诱惑?
│   │   │   ├─27-风控系统:如何从海量业务数据中,挖掘黑灰产?
│   │   │   ├─28-机器学习:如何教会机器识别黑灰产?
│   │   │   ├─29-设备指纹:面对各种虚拟设备,如何进行对抗?
│   │   │   ├─30-安全运营:“黑灰产”打了又来,如何正确处置?
│   │   │   ├─30-安全运营:“黑灰产”打了又来,如何正确处置?
│   │   │   ├─加餐1-数据安全:如何防止内部员工泄露商业机密?
│   │   │   ├─加餐2-前端安全:如何打造一个可信的前端环境?
│   │   │   ├─加餐3-职业发展:应聘安全工程师,我需要注意什么?
│   │   │   ├─加餐4-个人成长:学习安全,哪些资源我必须要知道?
│   │   │   ├─加餐5-安全新技术:IoT、IPv6、区块链中的安全新问题
│   │   │   ├─开篇词-别说你没被安全困扰过
│   │   │   ├─模块串讲(一)-Web安全:如何评估用户数据和资产数据面临的威胁?
│   │   │   ├─模块串讲(三)-安全防御工具:如何选择和规划公司的安全防御体系?
│   │   │   ├─模块串讲(二)-Linux系统和应用安全:如何大范围提高平台安全性?
│   │   │   ├─结束语-在与黑客的战役中,我们都是盟友!
│   │   │   └─结课测试|这些安全知识,你都掌握了吗?
│   │   ├─078-性能测试实战30讲
│   │   │   ├─01丨性能综述:性能测试的概念到底是什么?
│   │   │   ├─02丨性能综述:TPS和响应时间之间是什么关系?
│   │   │   ├─03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
│   │   │   ├─04丨JMeter和LoadRunner:要知道工具仅仅只是工具
│   │   │   ├─05丨指标关系:你知道并发用户数应该怎么算吗?
│   │   │   ├─06丨倾囊相授:我毕生所学的性能分析思路都在这里了
│   │   │   ├─078-性能测试实战30讲
│   │   │   ├─07丨性能测试工具:如何录制脚本?
│   │   │   ├─08丨案例:手把手教你编写最简单的性能脚本
│   │   │   ├─09丨-关联和断言:一动一静,核心都是在取数据
│   │   │   ├─10丨案例:在JMeter中如何设置参数化数据?
│   │   │   ├─11丨性能脚本:用案例和图示帮你理解HTTP协议
│   │   │   ├─12丨性能场景:做参数化之前,我们需要考虑什么?
│   │   │   ├─13丨性能测试场景:如何进行场景设计?
│   │   │   ├─14丨性能测试场景:如何理解业务模型?
│   │   │   ├─15丨性能测试场景:如何进行监控设计?
│   │   │   ├─16丨案例:性能监控工具之Grafana+Prometheus+Exporters
│   │   │   ├─17丨CentOS:操作系统级监控及常用计数器解析(上)
│   │   │   ├─18丨CentOS:操作系统级监控及常用计数器解析(下)
│   │   │   ├─18丨CentOS:操作系统级监控及常用计数器解析(下)
│   │   │   ├─19丨Java&C++:代码级监控及常用计数器解析(上)
│   │   │   ├─20丨Java&C++:代码级监控及常用计数器解析(下)
│   │   │   ├─21丨Tomcat:中间件监控及常用计数器解析
│   │   │   ├─22丨MySQL:数据库级监控及常用计数器解析(上)
│   │   │   ├─23丨MySQL:数据库级监控及常用计数器解析(下)
│   │   │   ├─24丨Kafka:性能监控工具之队列级监控及常用计数器解析
│   │   │   ├─25丨SkyWalking:性能监控工具之链路级监控及常用计数器解析
│   │   │   ├─26丨案例:手把手带你理解TPS趋势分析
│   │   │   ├─27丨案例:带宽消耗以及Swap(上)
│   │   │   ├─28丨案例:带宽消耗以及Swap(下)
│   │   │   ├─29丨案例:如何应对因网络参数导致的TPS-呈锯齿状?
│   │   │   ├─30丨案例:为什么参数化数据会导致TPS突然下降?
│   │   │   ├─31丨案例:当磁盘参数导致I-O高的时候,应该怎么办?
│   │   │   ├─32丨当Postgres磁盘读引起I-O高的时候,应该怎么办?
│   │   │   ├─开篇词丨“老板,之前咱TPS是100,我优化完是10000”
│   │   │   ├─春节策划丨快来挑战一下自己的分析逻辑吧!
│   │   │   ├─春节策划丨性能评估和性能分析试题,等你挑战!
│   │   │   ├─期末测试题丨快来测试一下你对性能掌握到何种程度了吧!
│   │   │   ├─结束语丨见过林林总总的乱象,才知未来的无限可能
│   │   │   └─结束语丨见过林林总总的乱象,才知未来的无限可能
│   │   ├─079-摄影入门课
│   │   │   ├─00丨开篇词 (1讲)
│   │   │   │   ├─00丨开篇词丨拍了十三年照片,我还是个小白
│   │   │   │   └─00丨开篇词丨拍了十三年照片,我还是个小白
│   │   │   ├─01丨摄影史 (2讲)
│   │   │   │   ├─01丨影像时代的视觉语言(上):是什么推动了摄影的发展?
│   │   │   │   ├─02丨影像时代的视觉语言(下):有图就有真相?
│   │   │   │   └─02丨影像时代的视觉语言(下):有图就有真相?
│   │   │   ├─02丨理论篇 (8讲)
│   │   │   │   ├─03丨光圈与景深:拍照片可以不对焦?
│   │   │   │   ├─03丨光圈与景深:拍照片可以不对焦?
│   │   │   │   ├─04丨镜头焦段与实际运用:你拍到的是你看到的么?
│   │   │   │   ├─05丨快门:你看到就能拍到么?
│   │   │   │   ├─06丨感光度(ISO)与其他相机参数:除了光圈和快门,你还应该知道些什么?
│   │   │   │   ├─06丨感光度(ISO)与其他相机参数:除了光圈和快门,你还应该知道些什么?
│   │   │   │   ├─07丨测光:什么才是正确曝光?(1)
│   │   │   │   ├─07丨测光:什么才是正确曝光?
│   │   │   │   ├─08丨拍摄设备选择(上):都有什么相机?(1)
│   │   │   │   ├─08丨拍摄设备选择(上):都有什么相机?
│   │   │   │   ├─09丨拍摄设备选择(下):什么相机才是最好的相机?
│   │   │   │   ├─10丨 好照片的构成因素:什么照片才是好照片?(1)
│   │   │   │   ├─10丨 好照片的构成因素:什么照片才是好照片?
│   │   │   │   └─10丨 好照片的构成因素:什么照片才是好照片?
│   │   │   ├─03丨实战篇 (10讲)
│   │   │   │   ├─11丨 光(上):摄影的“影”长什么样?
│   │   │   │   ├─12丨 光(中):你真的会在阳光下拍照片么?
│   │   │   │   ├─13丨 光(下):闪光灯是因为环境太暗所以照亮儿用的么?
│   │   │   │   ├─14丨 静物:静物是静物么?
│   │   │   │   ├─15丨 人物:会聊天比会拍照片更重要
│   │   │   │   ├─16丨 风光:你不想让别人看见什么?
│   │   │   │   ├─17丨 街拍:艺术这场“大骗局”
│   │   │   │   ├─18丨 基础手机后期(上):VSCO 完整指南(@随你们去)
│   │   │   │   ├─19丨基础手机后期(下):Snapseed使用攻略(@随你们去)
│   │   │   │   ├─20丨摄影的更多可能:摄影到底是不是艺术?
│   │   │   │   └─20丨摄影的更多可能:摄影到底是不是艺术?
│   │   │   └─04丨结束语 (1讲)
│   │   │         ├─在此谢罪,结束语被迫延期了
│   │   │         └─在此谢罪,结束语被迫延期了
│   │   ├─080-人人都能学会的编程入门课
│   │   │   ├─01-学习编程,我到底该选择哪门语言?
│   │   │   ├─02-第一个程序:教你输出彩色的文字
│   │   │   ├─02-第一个程序:教你输出彩色的文字
│   │   │   ├─03-判断与循环:给你的程序加上处理逻辑
│   │   │   ├─04-随机函数:随机实验真的可以算π值嘛?
│   │   │   ├─05-数组:一秒钟,定义1000个变量
│   │   │   ├─05-数组:一秒钟,定义1000个变量
│   │   │   ├─06-字符串:彻底被你忽略的printf的高级用法
│   │   │   ├─07-指针系列(一):记住,指针变量也是变量
│   │   │   ├─08-指针系列(二):记住,指针变量也是变量
│   │   │   ├─080-人人都能学会的编程入门课
│   │   │   ├─09-函数:自己动手实现低配版scanf函数
│   │   │   ├─10-预处理命令(上):必须掌握的“黑魔法”,让编译器帮你写代码
│   │   │   ├─11-预处理命令(下):必须掌握的“黑魔法”,让编译器帮你写代码
│   │   │   ├─12-数学归纳法:搞定循环与递归的钥匙
│   │   │   ├─13-程序设计原则:把计算过程交给计算机
│   │   │   ├─14-框架思维(上):将素数筛算法写成框架算法
│   │   │   ├─15-框架思维(下):用筛法求解其他积性函数
│   │   │   ├─16-数据结构(上):突破基本类型的限制,存储更大的整数
│   │   │   ├─17-数据结构(下):大整数实战,提升Shift-And算法能力
│   │   │   ├─18-重新认识数据结构(上):初识链表结构
│   │   │   ├─19-重新认识数据结构(下):有趣的“链表思维”
│   │   │   ├─20-二分查找:提升程序的查找效率
│   │   │   ├─21-队列与单调队列:滑动区间最大值
│   │   │   ├─22-栈与单调栈:最大矩形面积
│   │   │   ├─23-深入理解:容斥原理与递推算法
│   │   │   ├─23-深入理解:容斥原理与递推算法
│   │   │   ├─24-动态规划(上):只需四步,搞定动态规划算法设计
│   │   │   ├─25-动态规划(下):背包问题与动态规划算法优化
│   │   │   ├─26-牛刀小试(上):实现测试框架前的基础准备
│   │   │   ├─27-牛刀小试(下):实现一个自己的测试框架
│   │   │   ├─28-尝试升级(上):完善测试框架的功能与提示
│   │   │   ├─29-尝试升级(下):“链表”知识在测试框架中的应用
│   │   │   ├─30-毕业设计:实现你自己的计算器程序
│   │   │   ├─30-毕业设计:实现你自己的计算器程序
│   │   │   ├─做好闭环(一):不看答案可能就白学了
│   │   │   ├─做好闭环(三):编码能力训练篇的思考题答案都在这里啦!
│   │   │   ├─做好闭环(二):函数是压缩的数组,数组是展开的函数
│   │   │   ├─做好闭环(四):二分答案算法的代码统一结构
│   │   │   ├─开篇词-别闹了,学编程≠学语言
│   │   │   ├─期中测试-给语言基础篇交一份满分答卷,去迎接新的挑战!
│   │   │   ├─结束语-设立目标,有的放矢
│   │   │   └─结课测试-这些编程知识,你都掌握了吗?
│   │   ├─081-说透敏捷
│   │   │   ├─01-灵魂拷问:如何利用敏捷思维更好地解决实际问题?
│   │   │   ├─02-老生常谈:你真的知道敏捷到底是什么吗?
│   │   │   ├─03-评估诊断:成功迈出敏捷推进的第一步
│   │   │   ├─04-团队试点(一):让你的敏捷实践“事半功倍”
│   │   │   ├─05-团队试点(二):打造一支无往不胜的敏捷团队
│   │   │   ├─06-规模化推广:复制粘贴试点的经验就够了吗?
│   │   │   ├─07-填坑指南:填好这4个坑,快速做对敏捷
│   │   │   ├─08-避雷策略:如何防止你的敏捷变为“小瀑布”?
│   │   │   ├─081-说透敏捷
│   │   │   ├─09-内部教练:守护敏捷实践,求人不如求己
│   │   │   ├─10-服务型领导:在敏捷中你该怎样提升自己的领导力?
│   │   │   ├─开篇词-重识敏捷,让你的研发管理少走一些弯路
│   │   │   ├─结束语-用敏捷提升自己,从敏捷走向未来
│   │   │   └─结课测试-敏捷的这些知识,你掌握到什么程度了呢?
│   │   ├─082-接口测试入门课
│   │   │   ├─01-基础:跳出细节看全局,接口测试到底是在做什么?
│   │   │   ├─02-方法论:没有任何文档,怎么才能快速了解接口的信息?
│   │   │   ├─03-思维方式:用一个案例彻底理解接口测试的关键逻辑
│   │   │   ├─04-案例:如何把流程化的测试脚本抽象为测试框架?
│   │   │   ├─05-案例:测试框架如何才能支持RESTful风格的接口?
│   │   │   ├─06-接口测试平台:工具和框架不可以兼容?
│   │   │   ├─07-WebSocket接口:如何测试一个完全陌生的协议接口?
│   │   │   ├─08-测试数据:是不是可以把所有的参数都保存到Excel中?
│   │   │   ├─08-测试数据:是不是可以把所有的参数都保存到Excel中?
│   │   │   ├─082-接口测试入门课
│   │   │   ├─09-微服务接口:怎么用Mock解决混乱的调用关系?
│   │   │   ├─开篇词-把接口测试这件小事做深、做透
│   │   │   ├─结束语|如何成为一名优秀的测试工程师?
│   │   │   └─结课测试|这些接口测试知识你都掌握了吗?
│   │   ├─083-分布式协议与算法实战
│   │   │   ├─01-拜占庭将军问题:有叛徒的情况下,如何才能达成共识?
│   │   │   ├─02-CAP理论:分布式系统的PH试纸,用它来测酸碱度
│   │   │   ├─03-ACID理论:CAP的酸,追求一致性
│   │   │   ├─04-BASE理论:CAP的碱,追求可用性
│   │   │   ├─05-Paxos算法(一):如何在多个节点间确定某变量的值?
│   │   │   ├─06-Paxos算法(二):Multi-Paxos不是一个算法,而是统称
│   │   │   ├─07-Raft算法(一):如何选举领导者?
│   │   │   ├─08-Raft算法(二):如何复制日志?
│   │   │   ├─083-分布式协议与算法实战
│   │   │   ├─09-Raft算法(三):如何解决成员变更的问题?
│   │   │   ├─10-一致哈希算法:如何分群,突破集群的“领导者”限制?
│   │   │   ├─11-Gossip协议:流言蜚语,原来也可以实现一致性
│   │   │   ├─12-QuorumNWR算法:想要灵活地自定义一致性,没问题!
│   │   │   ├─13-PBFT算法:有人作恶,如何达成共识?
│   │   │   ├─14-PoW算法:有办法黑比特币吗?
│   │   │   ├─15-ZAB协议:如何实现操作的顺序性?
│   │   │   ├─16-InfluxDB企业版一致性实现剖析:他山之石,可以攻玉
│   │   │   ├─17-HashicorpRaft(一):如何跨过理论和代码之间的鸿沟?
│   │   │   ├─18-HashicorpRaft(二):如何以“集群节点”为中心使用API?
│   │   │   ├─18-HashicorpRaft(二):如何以“集群节点”为中心使用API?
│   │   │   ├─19-基于Raft的分布式KV系统开发实战(一):如何设计架构?
│   │   │   ├─20-基于Raft的分布式KV系统开发实战(二):如何实现代码?
│   │   │   ├─20-基于Raft的分布式KV系统开发实战(二):如何实现代码?
│   │   │   ├─加餐-MySQLXA是如何实现分布式事务的?
│   │   │   ├─加餐-PBFT算法:如何替换作恶的领导者?
│   │   │   ├─加餐-TCC如何实现指令执行的原子性?
│   │   │   ├─加餐-ZAB协议(一):主节点崩溃了,怎么办?
│   │   │   ├─加餐-ZAB协议(三):如何处理读写请求?
│   │   │   ├─加餐-ZAB协议(二):如何从故障中恢复?
│   │   │   ├─加餐-拜占庭将军问题:如何基于签名消息实现作战计划的一致性?
│   │   │   ├─学习路径-分布式协议与算法你应该这么学
│   │   │   ├─开篇词-想成为分布式高手?那就先把协议和算法烂熟于心吧
│   │   │   ├─结束语-静下心来,享受技术的乐趣
│   │   │   └─结课测试-这些分布式协议与算法的知识,你都掌握了吗?
│   │   ├─084-RPC实战与核心原理
│   │   │   ├─01-核心原理:能否画张图解释下RPC的通信流程?
│   │   │   ├─02-协议:怎么设计可扩展且向后兼容的协议?
│   │   │   ├─03-序列化:对象怎么在网络中传输?
│   │   │   ├─04-网络通信:RPC框架在网络通信上更倾向于哪种网络IO模型?
│   │   │   ├─05-动态代理:面向接口编程,屏蔽RPC处理流程
│   │   │   ├─06-RPC实战:剖析gRPC源码,动手实现一个完整的RPC
│   │   │   ├─07-架构设计:设计一个灵活的RPC框架
│   │   │   ├─08-服务发现:到底是要CP还是AP?
│   │   │   ├─084-RPC实战与核心原理
│   │   │   ├─09-健康检测:这个节点都挂了,为啥还要疯狂发请求?
│   │   │   ├─10-路由策略:怎么让请求按照设定的规则发到不同的节点上?
│   │   │   ├─11-负载均衡:节点负载差距这么大,为什么收到的流量还一样?
│   │   │   ├─12-异常重试:在约定时间内安全可靠地重试
│   │   │   ├─13-优雅关闭:如何避免服务停机带来的业务损失?
│   │   │   ├─14-优雅启动:如何避免流量打到没有启动完成的节点?
│   │   │   ├─15-熔断限流:业务如何实现自我保护
│   │   │   ├─15-熔断限流:业务如何实现自我保护
│   │   │   ├─16-业务分组:如何隔离流量?
│   │   │   ├─17-异步RPC:压榨单机吞吐量
│   │   │   ├─18-安全体系:如何建立可靠的安全体系?
│   │   │   ├─19-分布式环境下如何快速定位问题?
│   │   │   ├─20-详解时钟轮在RPC中的应用
│   │   │   ├─21-流量回放:保障业务技术升级的神器
│   │   │   ├─22-动态分组:超高效实现秒级扩缩容
│   │   │   ├─23-如何在没有接口的情况下进行RPC调用?
│   │   │   ├─24-如何在线上环境里兼容多种RPC协议?
│   │   │   ├─加餐-RPC框架代码实例详解
│   │   │   ├─加餐-谈谈我所经历过的RPC
│   │   │   ├─开篇词-别老想着怎么用好RPC框架,你得多花时间琢磨原理
│   │   │   ├─答疑课堂-基础篇与进阶篇思考题答案合集
│   │   │   ├─结束语-学会从优秀项目的源代码中挖掘知识
│   │   │   └─结束语-学会从优秀项目的源代码中挖掘知识
│   │   ├─085-架构实战案例解析
│   │   │   ├─01-架构的本质:如何打造一个有序的系统?
│   │   │   ├─02-业务架构:作为开发,你真的了解业务吗?
│   │   │   ├─03-可扩展架构:如何打造一个善变的柔性系统?
│   │   │   ├─04-可扩展架构案例(一):电商平台架构是如何演变的?
│   │   │   ├─05-可扩展架构案例(二):App服务端架构是如何升级的?
│   │   │   ├─06-可扩展架构案例(三):你真的需要一个中台吗?
│   │   │   ├─07-可复用架构:如何实现高层次的复用?
│   │   │   ├─08-可复用架构案例(一):如何设计一个基础服务?
│   │   │   ├─085-架构实战案例解析
│   │   │   ├─09-可复用架构案例(二):如何对现有系统做微服务改造?
│   │   │   ├─10-可复用架构案例(三):中台是如何炼成的?
│   │   │   ├─11-技术架构:作为开发,你真的了解系统吗?
│   │   │   ├─12-高可用架构:如何让你的系统不掉链子?
│   │   │   ├─13-高可用架构案例(一):如何实现O2O平台日订单500万?
│   │   │   ├─14-高可用架构案例(二):如何第一时间知道系统哪里有问题?
│   │   │   ├─15-高可用架构案例(三):如何打造一体化的监控系统?
│   │   │   ├─16-高性能和可伸缩架构:业务增长,能不能加台机器就搞定?
│   │   │   ├─17-高性能架构案例:如何设计一个秒杀系统?
│   │   │   ├─18-可伸缩架构案例:数据太多,如何无限扩展你的数据库?
│   │   │   ├─19-综合案例:电商平台技术架构是如何演变的?
│   │   │   ├─20-从务实的角度,给你架构设计的重点知识和学习路径
│   │   │   ├─开篇词-想吃透架构?你得看看真实、接地气的架构案例
│   │   │   ├─结束语-和你聊聊我的架构心路历程
│   │   │   ├─结课测试-“架构实战案例解析”100分试卷等你来挑战!
│   │   │   └─结课测试-“架构实战案例解析”100分试卷等你来挑战!
│   │   ├─086-后端存储实战课
│   │   │   ├─01-创建和更新订单时,如何保证数据准确无误?
│   │   │   ├─02-流量大、数据多的商品详情页系统该如何设计?
│   │   │   ├─03-复杂而又重要的购物车系统,应该如何设计?
│   │   │   ├─04-事务:账户余额总是对不上账,怎么办?
│   │   │   ├─05-分布式事务:如何保证多个系统间的数据是一致的?
│   │   │   ├─06-如何用Elasticsearch构建商品搜索系统?
│   │   │   ├─07|MySQLHA:如何将“删库跑路”的损失降到最低?
│   │   │   ├─08-一个几乎每个系统必踩的坑儿:访问数据库超时
│   │   │   ├─086-后端存储实战课
│   │   │   ├─09-怎么能避免写出慢SQL?
│   │   │   ├─10-走进黑盒:SQL是如何在数据库中执行的?
│   │   │   ├─11-MySQL如何应对高并发(一):使用缓存保护MySQL
│   │   │   ├─12-MySQL如何应对高并发(二):读写分离
│   │   │   ├─13-MySQL主从数据库同步是如何实现的?
│   │   │   ├─14-订单数据越来越多,数据库越来越慢该怎么办?
│   │   │   ├─15-MySQL存储海量数据的最后一招:分库分表
│   │   │   ├─16-用Redis构建缓存集群的最佳实践有哪些?
│   │   │   ├─17-大厂都是怎么做MySQLtoRedis同步的
│   │   │   ├─18-分布式存储:你知道对象存储是如何保存图片文件的吗?
│   │   │   ├─19-跨系统实时同步数据,分布式事务是唯一的解决方案吗?
│   │   │   ├─20-如何在不停机的情况下,安全地更换数据库?
│   │   │   ├─21-类似“点击流”这样的海量数据应该如何存储?
│   │   │   ├─22-面对海量数据,如何才能查得更快
│   │   │   ├─23-MySQL经常遇到的高可用、分片问题,NewSQL是如何解决的?
│   │   │   ├─24-RocksDB:不丢数据的高性能KV存储
│   │   │   ├─开篇词-从今天起,换种方式学存储
│   │   │   ├─特别放送-和你分享一个好消息:这门课被出版了一本书
│   │   │   ├─特别放送-如何平衡存储系统的一致性和可用性?
│   │   │   ├─结束语-把奋斗当习惯
│   │   │   ├─结课测试-后端存储,100分试卷等你来挑战
│   │   │   ├─课前加餐-电商系统是如何设计的?
│   │   │   └─课前加餐-电商系统是如何设计的?
│   │   ├─087-深入浅出云计算
│   │   │   ├─01-区域和可用区:欢迎来到云端数据中心
│   │   │   ├─02-云虚拟机(一):云端“攒机”,有哪些容易忽视的要点?
│   │   │   ├─03-云虚拟机(二):眼花缭乱的虚拟机型号,我该如何选择?
│   │   │   ├─04-云虚拟机(三):老板要求省省省,有哪些妙招?
│   │   │   ├─05-云硬盘:云上IO到底给不给力?
│   │   │   ├─06-云上虚拟网络:开合有度,编织无形之网
│   │   │   ├─07-云端架构最佳实践:与故障同舞,与伸缩共生
│   │   │   ├─08-云上运维:云端究竟需不需要运维?需要怎样的运维?
│   │   │   ├─087-深入浅出云计算
│   │   │   ├─09-什么是PaaS?怎样深入理解和评估PaaS?
│   │   │   ├─10-对象存储:看似简单的存储服务都有哪些玄机?
│   │   │   ├─11-应用托管服务:Web应用怎样在云上安家?
│   │   │   ├─12-云数据库:高歌猛进的数据库“新贵”
│   │   │   ├─13-云上大数据:云计算遇上大数据,为什么堪称天作之合?
│   │   │   ├─14-云上容器服务:从Docker到Kubernetes,迎接云原生浪潮
│   │   │   ├─15-无服务器计算:追求极致效率的多面手
│   │   │   ├─16-云上AI服务:云AI能从哪些方面帮助构建智能应用?
│   │   │   ├─开篇词-云计算,这是开发者最好的时代
│   │   │   ├─结束语-与云计算一起,迈向未来
│   │   │   ├─结课测试|这些云计算知识,你都掌握了吗?
│   │   │   └─结课测试|这些云计算知识,你都掌握了吗?
│   │   ├─088-Java业务开发常见错误100例
│   │   │   ├─01-使用了并发工具类库,线程安全就高枕无忧了吗?
│   │   │   ├─02-代码加锁:不要让“锁”事成为烦心事
│   │   │   ├─03-线程池:业务代码最常用也最容易犯错的组件
│   │   │   ├─04-连接池:别让连接池帮了倒忙
│   │   │   ├─05-HTTP调用:你考虑到超时、重试、并发了吗?
│   │   │   ├─06-20%的业务代码的Spring声明式事务,可能都没处理正确
│   │   │   ├─07-数据库索引:索引并不是万能药
│   │   │   ├─08-判等问题:程序里如何确定你就是你?
│   │   │   ├─088-Java业务开发常见错误100例
│   │   │   ├─09-数值计算:注意精度、舍入和溢出问题
│   │   │   ├─10-集合类:坑满地的List列表操作
│   │   │   ├─11-空值处理:分不清楚的null和恼人的空指针
│   │   │   ├─12-异常处理:别让自己在出问题的时候变为瞎子
│   │   │   ├─13-日志:日志记录真没你想象的那么简单
│   │   │   ├─14-文件IO:实现高效正确的文件读写并非易事
│   │   │   ├─15-序列化:一来一回你还是原来的你吗?
│   │   │   ├─16-用好Java8的日期时间类,少踩一些“老三样”的坑
│   │   │   ├─17-别以为“自动挡”就不可能出现OOM
│   │   │   ├─18-当反射、注解和泛型遇到OOP时,会有哪些坑?
│   │   │   ├─19-Spring框架:IoC和AOP是扩展的核心
│   │   │   ├─20-Spring框架:框架帮我们做了很多工作也带来了复杂度
│   │   │   ├─21-代码重复:搞定代码重复的三个绝招
│   │   │   ├─22-接口设计:系统间对话的语言,一定要统一
│   │   │   ├─23-缓存设计:缓存可以锦上添花也可以落井下石
│   │   │   ├─24-业务代码写完,就意味着生产就绪了?
│   │   │   ├─25-异步处理好用,但非常容易用错
│   │   │   ├─26-数据存储:NoSQL与RDBMS如何取长补短、相辅相成?
│   │   │   ├─27-数据源头:任何客户端的东西都不可信任
│   │   │   ├─28-安全兜底:涉及钱时,必须考虑防刷、限量和防重
│   │   │   ├─29-数据和代码:数据就是数据,代码就是代码
│   │   │   ├─30-如何正确保存和传输敏感数据?
│   │   │   ├─31-加餐1:带你吃透课程中Java8的那些重要知识点(一)
│   │   │   ├─32-加餐2:带你吃透课程中Java8的那些重要知识点(二)
│   │   │   ├─33-加餐3:定位应用问题,排错套路很重要
│   │   │   ├─34-加餐4:分析定位Java问题,一定要用好这些工具(一)
│   │   │   ├─34-加餐4:分析定位Java问题,一定要用好这些工具(一)
│   │   │   ├─35-加餐5:分析定位Java问题,一定要用好这些工具(二)
│   │   │   ├─36-加餐6:这15年来,我是如何在工作中学习技术和英语的?
│   │   │   ├─37-加餐7:程序员成长28计
│   │   │   ├─38-加餐8:Java程序从虚拟机迁移到Kubernetes的一些坑
│   │   │   ├─开篇词-业务代码真的会有这么多坑?
│   │   │   ├─答疑篇:代码篇思考题集锦(一)
│   │   │   ├─答疑篇:代码篇思考题集锦(三)
│   │   │   ├─答疑篇:代码篇思考题集锦(二)
│   │   │   ├─答疑篇:加餐篇思考题答案合集
│   │   │   ├─答疑篇:安全篇思考题答案合集
│   │   │   ├─答疑篇:设计篇思考题答案合集
│   │   │   ├─结束语-写代码时,如何才能尽量避免踩坑?
│   │   │   ├─结课测试-关于Java业务开发的100个常见错误,你都明白其中缘由了吗?
│   │   ├─089-图解GoogleV8
│   │   │   ├─01-V8是如何执行一段JavaScript代码的?
│   │   │   ├─02-函数即对象:一篇文章彻底搞懂JavaScript的函数特点
│   │   │   ├─03-快属性和慢属性:V8是怎样提升对象属性访问速度的?
│   │   │   ├─04-函数表达式:涉及大量概念,函数表达式到底该怎么学?
│   │   │   ├─05|原型链:V8是如何实现对象继承的?
│   │   │   ├─06|作用域链:V8是如何查找变量的?
│   │   │   ├─07|类型转换:V8是怎么实现1+“2”的?
│   │   │   ├─089-图解GoogleV8
│   │   │   ├─08|答疑:如何构建和使用V8的调试工具d8?
│   │   │   ├─09-运行时环境:运行JavaScript代码的基石
│   │   │   ├─10-机器代码:二进制机器码究竟是如何被CPU执行的?
│   │   │   ├─11-堆和栈:函数调用是如何影响到内存布局的?
│   │   │   ├─12-延迟解析:V8是如何实现闭包的?
│   │   │   ├─13-字节码(一):V8为什么又重新引入字节码?
│   │   │   ├─14|字节码(二):解释器是如何解释执行字节码的?
│   │   │   ├─15-隐藏类:如何在内存中快速查找对象属性?
│   │   │   ├─16-答疑:V8是怎么通过内联缓存来提升函数执行效率的?
│   │   │   ├─17-消息队列:V8是怎么实现回调函数的?
│   │   │   ├─18-异步编程(一):V8是如何实现微任务的?
│   │   │   ├─19|异步编程(二):V8是如何实现async-await的?
│   │   │   ├─20-垃圾回收(一):V8的两个垃圾回收器是如何工作的?
│   │   │   ├─21-垃圾回收(二):V8是如何优化垃圾回收器执行效率的?
│   │   │   ├─22|答疑:几种常见内存问题的解决策略
│   │   │   ├─开篇词-如何学习谷歌高性能JavaScript引擎V8?
│   │   │   ├─结束语-我的前端学习踩坑史
│   │   │   └─结课测试-这些V8的知识你都掌握了吗?
│   │   ├─090-SRE实战手册
│   │   │   ├─01|SRE迷思:无所不能的角色?还是运维的升级?
│   │   │   ├─02-系统可用性:没有故障,系统就一定是稳定的吗?
│   │   │   ├─03-SRE切入点:选择SLI,设定SLO
│   │   │   ├─04-错误预算:达成稳定性目标的共识机制
│   │   │   ├─05-案例:落地SLO时还需要考虑哪些因素?
│   │   │   ├─06-故障发现:如何建设On-Call机制?
│   │   │   ├─07|故障处理:一切以恢复业务为最高优先级
│   │   │   ├─07|故障处理:一切以恢复业务为最高优先级
│   │   │   ├─08|故障复盘:黄金三问与判定三原则
│   │   │   ├─090-SRE实战手册
│   │   │   ├─09|案例:互联网典型的SRE组织架构是怎样的?
│   │   │   ├─10-经验:都有哪些高效的SRE组织协作机制?
│   │   │   ├─开篇词|SRE是解决系统稳定性问题的灵丹妙药吗?
│   │   │   ├─答疑|没什么能阻挡你拓展边界的渴望
│   │   │   ├─结束语|聊聊我的SRE落地心路历程
│   │   │   └─结束语|聊聊我的SRE落地心路历程
│   │   ├─091-检索技术核心20讲
│   │   │   ├─01-线性结构检索:从数组和链表的原理初窥检索本质
│   │   │   ├─02-非线性结构检索:数据频繁变化的情况下,如何高效检索?
│   │   │   ├─03-哈希检索:如何根据用户ID快速查询用户信息?
│   │   │   ├─03-哈希检索:如何根据用户ID快速查询用户信息?
│   │   │   ├─04-状态检索:如何快速判断一个用户是否存在?
│   │   │   ├─05-倒排索引:如何从海量数据中查询同时带有“极”和“客”的唐诗?
│   │   │   ├─06-数据库检索:如何使用B+树对海量磁盘数据建立索引?
│   │   │   ├─07-NoSQL检索:为什么日志系统主要用LSM树而非B+树?
│   │   │   ├─08-索引构建:搜索引擎如何为万亿级别网站生成索引?
│   │   │   ├─09-索引更新:刚发布的文章就能被搜到,这是怎么做到的?
│   │   │   ├─091-检索技术核心20讲
│   │   │   ├─10-索引拆分:大规模检索系统如何使用分布式技术加速检索?
│   │   │   ├─11|精准TopK检索:搜索结果是怎么进行打分排序的?
│   │   │   ├─12-非精准TopK检索:如何给检索结果的排序过程装上“加速器”?
│   │   │   ├─13-空间检索(上):如何用Geohash实现“查找附近的人”功能?
│   │   │   ├─14-空间检索(下):“查找最近的加油站”和“查找附近的人”有何不同?
│   │   │   ├─15-最近邻检索(上):如何用局部敏感哈希快速过滤相似文章?
│   │   │   ├─16-最近邻检索(下):如何用乘积量化实现“拍照识花”功能?
│   │   │   ├─17-存储系统:从检索技术角度剖析LevelDB的架构设计思想
│   │   │   ├─18-搜索引擎:输入搜索词以后,搜索引擎是怎么工作的?
│   │   │   ├─19-广告系统:广告引擎如何做到在0
│   │   │   ├─20-推荐引擎:没有搜索词,“头条”怎么找到你感兴趣的文章?
│   │   │   ├─导读-三步走策略,轻松搞定检索!
│   │   │   ├─开篇词-学会检索,快人一步!
│   │   │   ├─测一测-检索算法基础,你掌握了多少?
│   │   │   ├─测一测-高性能检索系统的实战知识,你掌握了多少?
│   │   │   ├─特别加餐-倒排检索加速(一):工业界如何利用跳表、哈希表、位图进行加速?
│   │   │   ├─特别加餐-倒排检索加速(二):如何对联合查询进行加速?
│   │   │   ├─特别加餐-高性能检索系统中的设计漫谈
│   │   │   ├─结束语-成长和进化,技术如此,我们亦如此
│   │   │   ├─结课测试-这些检索知识,你都掌握了吗?
│   │   │   └─结课测试-这些检索知识,你都掌握了吗?
│   │   ├─092-数据中台实战课
│   │   │   ├─01-前因后果:为什么说数据中台是大数据的下一站?
│   │   │   ├─02-关键抉择:到底什么样的企业应该建数据中台?
│   │   │   ├─03-数据中台建设三板斧:方法论、组织和技术
│   │   │   ├─04-元数据中心的关键目标和技术实现方案
│   │   │   ├─05-如何统一管理纷繁杂乱的数据指标?
│   │   │   ├─06-数据模型无法复用,归根结底还是设计问题
│   │   │   ├─07-同事老打脸说数据有问题,该怎么彻底解决?
│   │   │   ├─07-同事老打脸说数据有问题,该怎么彻底解决?
│   │   │   ├─08-交付速度和质量问题解决了,老板说还得“省”
│   │   │   ├─09-数据服务到底解决了什么问题?
│   │   │   ├─092-数据中台实战课
│   │   │   ├─10-数据服务难道就是对外提供个API吗?
│   │   │   ├─11-怎么一劳永逸地解决数据安全问题?
│   │   │   ├─12-数据的台子搭完了,但你还得想好戏该怎么唱
│   │   │   ├─13-数据研发就只是写代码吗?
│   │   │   ├─14-数据被加工后,你还要学会使用和管理数据
│   │   │   ├─15-数据中台在网易电商业务的最佳实践
│   │   │   ├─开篇词-数据中台,是陷阱?还是金钥匙?
│   │   │   ├─特别放送|史凯:建设数据中台到底有什么用?
│   │   │   ├─结束语-数据中台从哪里来,要到哪里去?
│   │   │   ├─结课测试-建设数据中台的这些知识,你都掌握了吗?
│   │   │   └─结课测试-建设数据中台的这些知识,你都掌握了吗?
│   │   ├─093-Kafka核心源码解读
│   │   │   ├─01-日志段:保存消息文件的对象是怎么实现的?
│   │   │   ├─02-日志(上):日志究竟是如何加载日志段的?
│   │   │   ├─03-日志(下):彻底搞懂Log对象的常见操作
│   │   │   ├─04-索引(上):改进的二分查找算法在Kafka索引的应用
│   │   │   ├─05-索引(下):位移索引和时间戳索引的区别是什么?
│   │   │   ├─06-请求通道:如何实现Kafka请求队列?
│   │   │   ├─07-SocketServer(上):Kafka到底是怎么应用NIO实现网络通信的?
│   │   │   ├─08-SocketServer(中):请求还要区分优先级?
│   │   │   ├─09-SocketServer(下):请求处理全流程源码分析
│   │   │   ├─093-Kafka核心源码解读
│   │   │   ├─10-KafkaApis:Kafka最重要的源码入口,没有之一
│   │   │   ├─11-Controller元数据:Controller都保存有哪些东西?有几种状态?
│   │   │   ├─12-ControllerChannelManager:Controller如何管理请求发送?
│   │   │   ├─13-ControllerEventManager:变身单线程后的Controller如何处理事件?
│   │   │   ├─14-Controller选举是怎么实现的?
│   │   │   ├─15-如何理解Controller在Kafka集群中的作用?
│   │   │   ├─16-TopicDeletionManager:Topic是怎么被删除的?
│   │   │   ├─17-ReplicaStateMachine:揭秘副本状态机实现原理
│   │   │   ├─18-PartitionStateMachine:分区状态转换如何实现?
│   │   │   ├─19-TimingWheel:探究Kafka定时器背后的高效时间轮算法
│   │   │   ├─20-DelayedOperation:Broker是怎么延时处理请求的?
│   │   │   ├─21-AbstractFetcherThread:拉取消息分几步?
│   │   │   ├─22-ReplicaFetcherThread:Follower如何拉取Leader消息?
│   │   │   ├─23-ReplicaManager(上):必须要掌握的副本管理类定义和核心字段
│   │   │   ├─24-ReplicaManager(中):副本管理器是如何读写副本的?
│   │   │   ├─25-ReplicaManager(下):副本管理器是如何管理副本的?
│   │   │   ├─26-MetadataCache:Broker是怎么异步更新元数据缓存的?
│   │   │   ├─27-消费者组元数据(上):消费者组都有哪些元数据?
│   │   │   ├─28-消费者组元数据(下):Kafka如何管理这些元数据?
│   │   │   ├─29-GroupMetadataManager:组元数据管理器是个什么东西?
│   │   │   ├─30-GroupMetadataManager:位移主题保存的只是位移吗?
│   │   │   ├─31-GroupMetadataManager:查询位移时,不用读取位移主题?
│   │   │   ├─32-GroupCoordinator:在Rebalance中,Coordinator如何处理成员入组?
│   │   │   ├─33-GroupCoordinator:在Rebalance中,如何进行组同步?
│   │   │   ├─导读-构建Kafka工程和源码阅读环境、Scala语言热身
│   │   │   ├─开篇词-阅读源码,逐渐成了职业进阶道路上的“必选项”
│   │   │   ├─期中测试-这些源码知识,你都掌握了吗?
│   │   │   ├─期末测试-一套习题,测试你的掌握程度
│   │   │   ├─特别放送(一)-经典的Kafka学习资料有哪些?
│   │   │   ├─特别放送(三)-我是怎么度过日常一天的?
│   │   │   ├─特别放送(二)-一篇文章带你了解参与开源社区的全部流程
│   │   │   ├─特别放送(二)-一篇文章带你了解参与开源社区的全部流程
│   │   │   ├─特别放送(五)-Kafka社区的重磅功能:移除ZooKeeper依赖
│   │   │   ├─特别放送(四)-20道经典的Kafka面试题详解
│   │   │   ├─结束语-源码学习,我们才刚上路呢
│   │   │   ├─重磅加餐-带你快速入门Scala语言
│   │   │   └─重磅加餐-带你快速入门Scala语言
│   │   ├─094-Serverless入门课
│   │   │   ├─01|定义:到底什么是Serverless?
│   │   │   ├─02-原理:通过一个案例,理解FaaS的运行逻辑
│   │   │   ├─03-原理:FaaS的两种进程模型及应用场景
│   │   │   ├─04-原理:FaaS应用如何才能快速扩缩容?
│   │   │   ├─05-后端BaaS化(上):NoOps的微服务
│   │   │   ├─06-后端BaaS化(中):业务逻辑的拆与合
│   │   │   ├─07-后端BaaS化(下):ContainerServerless
│   │   │   ├─08-搭建私有Serverless(一):K8s和云原生CNCF
│   │   │   ├─09-搭建私有Serverless(二):基于K8s的Serverless
│   │   │   ├─094-Serverless入门课
│   │   │   ├─10-经验:Serverless架构应该如何选型?
│   │   │   ├─11-经验:Serverless开发最佳实践
│   │   │   ├─开篇词-说来说去,到底Serverless要解决什么问题?
│   │   │   ├─期末测试-有关Serverless,你掌握了多少呢?
│   │   │   ├─特别放送-为什么阿里要举集团之力趟坑Serverless?
│   │   │   ├─结束语-带你整体回顾我们的Serverless案例
│   │   ├─095-视觉笔记入门课
│   │   │   ├─01-基础:只用点线面也能搞定视觉笔记
│   │   │   ├─02-人物:如何画出引人注目的主角?
│   │   │   ├─03-动态容器:如何生动地记录对话?
│   │   │   ├─04-静态容器:办公用品如何表达你的内容?
│   │   │   ├─05-图标(上):把现实装进你的笔记
│   │   │   ├─06-图标(下):万物皆可视觉化
│   │   │   ├─06-图标(下):万物皆可视觉化
│   │   │   ├─07-链接:如何串联一个旅行故事?
│   │   │   ├─08-字体:如何用文字表现信息的情绪?
│   │   │   ├─09-色彩:如何让你的视觉笔记“有温度”?
│   │   │   ├─095-视觉笔记入门课
│   │   │   ├─10-抽象逻辑构图:如何通过内容关系确定构图方式?
│   │   │   ├─11-具象逻辑构图:如何通过视觉场景进行构图?
│   │   │   ├─12-静态实践:如何做图书的视觉笔记?
│   │   │   ├─13-动态实践:如何做语音信息的视觉笔记?
│   │   │   ├─13-动态实践:如何做语音信息的视觉笔记?
│   │   │   ├─开篇词-一图胜千言
│   │   │   ├─答疑-笔记大触们可能没有告诉你的那些事
│   │   │   ├─结束语-你和你的笔记都闪闪发光
│   │   │   └─结束语-你和你的笔记都闪闪发光
│   │   ├─096-系统性能调优必知必会
│   │   │   ├─01-CPU缓存:怎样写代码能够让CPU执行得更快?
│   │   │   ├─02-内存池:如何提升内存分配的效率?
│   │   │   ├─03-索引:如何用哈希表管理亿级对象?
│   │   │   ├─04-零拷贝:如何高效地传输文件?
│   │   │   ├─05-协程:如何快速地实现高并发服务?
│   │   │   ├─06-锁:如何根据业务场景选择合适的锁?
│   │   │   ├─07-性能好,效率高的一对多通讯该如何实现?
│   │   │   ├─08-事件驱动:C10M是如何实现的?
│   │   │   ├─09-如何提升TCP三次握手的性能?
│   │   │   ├─09-如何提升TCP三次握手的性能?
│   │   │   ├─096-系统性能调优必知必会
│   │   │   ├─10-如何提升TCP四次挥手的性能?
│   │   │   ├─11-如何修改TCP缓冲区才能兼顾并发数量与传输速度?
│   │   │   ├─11-如何修改TCP缓冲区才能兼顾并发数量与传输速度?
│   │   │   ├─12-如何调整TCP拥塞控制的性能?
│   │   │   ├─13-实战:单机如何实现管理百万主机的心跳服务?
│   │   │   ├─14-优化TLS-SSL性能该从何下手?
│   │   │   ├─15-如何提升HTTP-1
│   │   │   ├─16-HTTP-2是怎样提升性能的?
│   │   │   ├─17-Protobuf是如何进一步提高编码效率的?
│   │   │   ├─18-如何通过gRPC实现高效远程过程调用?
│   │   │   ├─19-如何通过监控找到性能瓶颈?
│   │   │   ├─20-CAP理论:怎样舍弃一致性去换取性能?
│   │   │   ├─21-AKF立方体:怎样通过可扩展性来提高性能?
│   │   │   ├─22-NWR算法:如何修改读写模型以提升性能?
│   │   │   ├─23-负载均衡:选择Nginx还是OpenResty?
│   │   │   ├─24-一致性哈希:如何高效地均衡负载?
│   │   │   ├─25-过期缓存:如何防止缓存被流量打穿?
│   │   │   ├─26-应用层多播:如何快速地分发内容?
│   │   │   ├─27-消息队列:如何基于异步消息提升性能?
│   │   │   ├─28-MapReduce:如何通过集群实现离线计算?
│   │   │   ├─28-MapReduce:如何通过集群实现离线计算?
│   │   │   ├─29-流式计算:如何通过集群实现实时计算?
│   │   │   ├─30-如何权衡关系数据库与NoSQL数据库?
│   │   │   ├─加餐1|特别福利:陶辉视频课精选
│   │   │   ├─加餐2|答疑精选:这些问题你都清楚吗?
│   │   │   ├─加餐3-大厂面试到底在考些什么?
│   │   │   ├─加餐4|百万并发下Nginx的优化之道
│   │   │   ├─加餐5-如何理解分布式系统?
│   │   │   ├─加餐6|分布式系统的本质是什么?
│   │   │   ├─加餐7|深入剖析HTTP-3协议
│   │   │   ├─大咖助场1-李玥:高并发场景下如何优化微服务的性能
│   │   │   ├─大咖助场2|庄振运:与程序员相关的SSD性能知识
│   │   │   ├─大咖助场3|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(上)
│   │   │   ├─大咖助场4|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(下)
│   │   │   ├─开篇词-万变不离其宗,性能优化也有章可循
│   │   │   ├─期中考试|行至半程,你的收获如何呢?
│   │   │   ├─期末测试|对于性能优化,你掌握了多少呢?
│   │   │   ├─来领奖啦!你填写毕业问卷了吗?
│   │   │   ├─毕业问卷获奖用户名单
│   │   │   ├─结束语-从业IT20年后,我将最看重什么?
│   │   │   └─结束语-从业IT20年后,我将最看重什么?
│   │   ├─097-罗剑锋的C++实战笔记
│   │   │   ├─01-重新认识C++:生命周期和编程范式
│   │   │   ├─02-编码阶段能做什么:秀出好的codestyle
│   │   │   ├─02-编码阶段能做什么:秀出好的codestyle
│   │   │   ├─03-预处理阶段能做什么:宏定义和条件编译
│   │   │   ├─04-编译阶段能做什么:属性和静态断言
│   │   │   ├─05-面向对象编程:怎样才能写出一个“好”的类?
│   │   │   ├─06-auto-decltype:为什么要有自动类型推导?
│   │   │   ├─07-const-volatile-mutable:常量-变量究竟是怎么回事?
│   │   │   ├─08-smartptr:智能指针到底“智能”在哪里?
│   │   │   ├─09-exception:怎样才能用好异常?
│   │   │   ├─097-罗剑锋的C++实战笔记
│   │   │   ├─10-lambda:函数式编程带来了什么?
│   │   │   ├─11-一枝独秀的字符串:C++也能处理文本?
│   │   │   ├─12-三分天下的容器:恰当选择,事半功倍
│   │   │   ├─13-五花八门的算法:不要再手写for循环了
│   │   │   ├─14-十面埋伏的并发:多线程真的很难吗?
│   │   │   ├─15-序列化:简单通用的数据交换格式有哪些?
│   │   │   ├─16-网络通信:我不想写原生Socket
│   │   │   ├─17-脚本语言:搭建高性能的混合系统
│   │   │   ├─18-性能分析:找出程序的瓶颈
│   │   │   ├─19-设计模式(上):C++与设计模式有啥关系?
│   │   │   ├─20-设计模式(下):C++是怎么应用设计模式的?
│   │   │   ├─21-知识串讲(上):带你开发一个书店应用
│   │   │   ├─22-知识串讲(下):带你开发一个书店应用
│   │   │   ├─开篇词-把C++从“神坛”上拉下来,这次咱这么学
│   │   │   ├─期末测试-这些C++核心知识,你都掌握了吗?
│   │   │   ├─特别放送-和你聊聊现代C++里的“特殊容器”
│   │   │   ├─结束语-路远,未有穷期
│   │   │   ├─罗剑锋老师出新课了?
│   │   │   ├─课前准备-搭建实验环境
│   │   │   ├─轻松话题(一)-4本值得一读再读的经典好书
│   │   │   ├─轻松话题(三)-提高生活质量的App
│   │   │   ├─轻松话题(二)-给你分享我的工作百宝箱
│   │   │   ├─轻松话题(四)-真正高效的生活,是张弛有度
│   │   │   └─轻松话题(四)-真正高效的生活,是张弛有度
│   │   ├─098-互联网人的英语私教课
│   │   │   ├─01|导读:背景知识对于理解文章究竟有多重要?
│   │   │   ├─02-什么时候适合用“词根词缀法”来背单词?
│   │   │   ├─02-什么时候适合用“词根词缀法”来背单词?
│   │   │   ├─03|到底要不要学语法?什么时候学比较好?
│   │   │   ├─04-从那些不规范的表达中,我们可以学到什么?
│   │   │   ├─05|tradeoff还是trade-off?用连字符到底对不对?
│   │   │   ├─06|小心那些平淡无奇、人畜无害的简单小词!
│   │   │   ├─07|为什么虚拟语气一看就懂、一用就忘?
│   │   │   ├─08|带你一次性搞懂非限定性和限定性定语从句
│   │   │   ├─09-导读:通过阅读序言段了解文章的背景知识
│   │   │   ├─098-互联网人的英语私教课
│   │   │   ├─10|一切始于“主干”,万变不离其宗
│   │   │   ├─11|并列句=简单句+并列连词+简单句
│   │   │   ├─12-谓语动词永远是英语句子的核心
│   │   │   ├─13-导读:如何逐渐培养阅读习惯,快速抓住文章大意?
│   │   │   ├─14|为什么介词如此“烦人”?
│   │   │   ├─14|为什么介词如此“烦人”?
│   │   │   ├─15|同位语的两个重要作用
│   │   │   ├─16|动词:英语宇宙的中心
│   │   │   ├─17|参透“主从分明”的树状结构,即可“庖丁解牛”
│   │   │   ├─18|全篇通读(上):从读懂一句话慢慢转向读懂一篇文章
│   │   │   ├─19|全篇通读(下):不是所有的文章和书籍都值得读完
│   │   │   ├─20|英语词汇学习的唯一有效途径:阅读、阅读、阅读
│   │   │   ├─21|你和所有见过的单词或短语都只是加了“好友”而已
│   │   │   ├─22|paraphrase:跨越阅读和写作两项技能的练习法
│   │   │   ├─23|练习paraphrase的最终目的,是有一天可以不再需要它
│   │   │   ├─24|如何用“金字塔原理”来练习阅读和写作?
│   │   │   ├─25|如何利用“30秒电梯原则”写出言简意赅的读书总结?
│   │   │   ├─26-阅读准备:当我们谈论快速阅读时,我们究竟在谈论什么?
│   │   │   ├─27-行业预测类文章,动词就是它的全部
│   │   │   ├─28-没有经过相关专业训练,如何自学新的专业知识?
│   │   │   ├─28-没有经过相关专业训练,如何自学新的专业知识?
│   │   │   ├─29-如何通过定期的主题阅读计划,个性化定制专属的语料库?
│   │   │   ├─30-突破实用型、技术类阅读,外面还有另一片星辰大海
│   │   │   ├─学习指南-我想和你交代下这门课的设计思路
│   │   │   ├─开学直播回顾-程序员如何阅读英语资料?
│   │   │   ├─开篇词-把技能当知识,是学英语最大的坑
│   │   │   ├─每周一起背10句-week01
│   │   │   ├─每周一起背10句-week02
│   │   │   ├─每周一起背10句-week03
│   │   │   ├─每周一起背10句-week04
│   │   │   ├─每周一起背10句-week05
│   │   │   ├─每周一起背10句-week06
│   │   │   ├─每周一起背10句-week07
│   │   │   ├─每周一起背10句-week08
│   │   │   ├─每周一起背10句-week09
│   │   │   ├─用户故事-张理查:作为软件工程师,我怎么学习英语专栏?
│   │   │   ├─结束语-学英语也是修行
│   │   │   └─结束语-学英语也是修行
│   │   ├─099-职场求生攻略
│   │   │   ├─01丨优先级:工作中那么多事情,我要如何安排优先级?
│   │   │   ├─02丨沟通:邮件那么重要,你还在轻视邮件吗?
│   │   │   ├─03丨沟通:程序员为什么应该爱上交流?
│   │   │   ├─04丨主观能动性:为什么程序员,需要发挥主观能动性?
│   │   │   ├─05丨责任的边界:程序员的职责范围仅仅只是被安排的任务吗?
│   │   │   ├─06-职业素养篇热点问题答疑
│   │   │   ├─07-职业规划:如何选择一个公司?
│   │   │   ├─08丨管理者关系:怎么才叫“跟对人”?
│   │   │   ├─099-职场求生攻略
│   │   │   ├─09丨管理者关系:跟对人和做对事哪个更重要?
│   │   │   ├─10丨职业规划:跳槽之前你想清楚这些事情了吗?
│   │   │   ├─11丨面试:如何准备简历和面试?
│   │   │   ├─12丨外包:外包不也是写程序吗?有什么不一样的?
│   │   │   ├─13-外派:大家都在一个办公室工作,有什么不一样?
│   │   │   ├─14-职业规划:转管理是程序员的终极选择吗?
│   │   │   ├─15-职业规划:程序员加入创业公司,这些事情你想清楚了吗?
│   │   │   ├─16-答疑篇:为啥你工作八年,只抵别人一年?
│   │   │   ├─17-升职:看着周围的人都升职了,我什么时候才能升职?
│   │   │   ├─18-职场政治:我只想好好干活,职场政治和我有什么关系?
│   │   │   ├─19-职场政治:面对公司自上而下的技术更新,我该怎么办?
│   │   │   ├─20-沟通技巧:如何跟自己的同事请教问题?
│   │   │   ├─21-答疑篇:想升职,我该准备些什么?
│   │   │   ├─22-学习观:程序员如何定义自己的技术舒适区?
│   │   │   ├─23丨技术观:做程序员,技术观为何如此重要?
│   │   │   ├─24丨技术观:程序员在技术的成长之路上,有哪些陷阱?
│   │   │   ├─25-系统架构:如何从写代码的程序员,成长为软件系统架构师?
│   │   │   ├─26-系统集成:为什么最容易出问题的是系统集成?
│   │   │   ├─27-答疑篇:什么样的技术观能够更快成长?
│   │   │   ├─28-沟通中的冲突:什么时候应该妥协,什么时候应该坚持?
│   │   │   ├─29-加班:加班逃不过,如何用正确姿势加班?
│   │   │   ├─30-焦虑:程序员怎样才能越干越给力?
│   │   │   ├─31-数据观:在你眼里,数据到底是什么?
│   │   │   ├─开篇词-学会如何工作,和学习技术同等重要
│   │   │   ├─结束语-职场的攀岩之路
│   │   │   └─结课测试-这些职场相关问题,你能答对多少?
│   │   ├─100软件设计之美
│   │   │   ├─01-软件设计到底是什么?
│   │   │   ├─02-分离关注点:软件设计至关重要的第一步
│   │   │   ├─03-可测试性:一个影响软件设计的重要因素
│   │   │   ├─04-三步走:如何了解一个软件的设计?
│   │   │   ├─05-SpringDI容器:如何分析一个软件的模型?
│   │   │   ├─06-RubyonRails:如何分析一个软件的接口?
│   │   │   ├─07-Kafka:如何分析一个软件的实现?
│   │   │   ├─08-语言的模型:如何打破单一语言局限,让设计更好地落地?
│   │   │   ├─09-语言的接口:语法和程序库,软件设计的发力点
│   │   │   ├─10-语言的实现:运行时,软件设计的地基
│   │   │   ├─100软件设计之美
│   │   │   ├─11-DSL:你也可以设计一门自己的语言
│   │   │   ├─12-编程范式:明明写的是Java,为什么被人说成了C代码?
│   │   │   ├─13-结构化编程:为什么做设计时仅有结构化编程是不够的?
│   │   │   ├─14-面向对象之封装:怎样的封装才算是高内聚?
│   │   │   ├─15-面向对象之继承:继承是代码复用的合理方式吗?
│   │   │   ├─16-面向对象之多态:为什么“稀疏平常”的多态,是软件设计的大杀器?
│   │   │   ├─17-函数式编程:不用函数式编程语言,怎么写函数式的程序?
│   │   │   ├─18-函数式编程之组合性:函数式编程为什么如此吸引人?
│   │   │   ├─19-函数式编程之不变性:怎样保证我的代码不会被别人破坏?
│   │   │   ├─20-单一职责原则:你的模块到底为谁负责?
│   │   │   ├─21-开放封闭原则:不改代码怎么写新功能?
│   │   │   ├─22-Liskov替换原则:用了继承,子类就设计对了吗?
│   │   │   ├─23-接口隔离原则:接口里的方法,你都用得到吗?
│   │   │   ├─24-依赖倒置原则:高层代码和底层代码,到底谁该依赖谁?
│   │   │   ├─25-设计模式:每一种都是一个特定问题的解决方案
│   │   │   ├─26-简单设计:难道一开始就要把设计做复杂吗?
│   │   │   ├─27-领域驱动设计:如何从零开始设计一个软件?
│   │   │   ├─28-战略设计:如何划分系统的模块?
│   │   │   ├─29-战术设计:如何像写故事一样找出模型?
│   │   │   ├─30-程序库的设计:Moco是如何解决集成问题的?
│   │   │   ├─31-应用的设计:如何设计一个数据采集平台?
│   │   │   ├─32-应用的改进:如何改进我们的软件设计?
│   │   │   ├─加餐-再八卦几门语言!
│   │   │   ├─加餐-函数式编程拾遗
│   │   │   ├─开篇词-软件设计,应对需求规模的“算法”
│   │   │   ├─结束语|那些没讲的事儿
│   │   │   └─结课测试|这些软件设计的知识你都掌握了吗?
│   │   ├─101编译原理实战课
│   │   │   ├─01-编译的全过程都悄悄做了哪些事情?
│   │   │   ├─02-词法分析:用两种方式构造有限自动机
│   │   │   ├─03-语法分析:两个基本功和两种算法思路
│   │   │   ├─04-语义分析:让程序符合语义规则
│   │   │   ├─05-运行时机制:程序如何运行,你有发言权
│   │   │   ├─06-中间代码:不是只有一副面孔
│   │   │   ├─07-代码优化:跟编译器做朋友,让你的代码飞起来
│   │   │   ├─08-代码生成:如何实现机器相关的优化?
│   │   │   ├─09-Java编译器(一):手写的编译器有什么优势?
│   │   │   ├─10-Java编译器(二):语法分析之后,还要做些什么?
│   │   │   ├─101编译原理实战课
│   │   │   ├─11-Java编译器(三):属性分析和数据流分析
│   │   │   ├─11-Java编译器(三):属性分析和数据流分析
│   │   │   ├─12-Java编译器(四):去除语法糖和生成字节码
│   │   │   ├─13-JavaJIT编译器(一):动手修改Graal编译器
│   │   │   ├─14-JavaJIT编译器(二):SeaofNodes为何如此强大?
│   │   │   ├─15-JavaJIT编译器(三):探究内联和逃逸分析的算法原理
│   │   │   ├─16-JavaJIT编译器(四):Graal的后端是如何工作的?
│   │   │   ├─17-Python编译器(一):如何用工具生成编译器?
│   │   │   ├─18-Python编译器(二):从AST到字节码
│   │   │   ├─19-Python编译器(三):运行时机制
│   │   │   ├─20-JavaScript编译器(一):V8的解析和编译过程
│   │   │   ├─21-JavaScript编译器(二):V8的解释器和优化编译器
│   │   │   ├─22-Julia编译器(一):如何让动态语言性能很高?
│   │   │   ├─23-Julia编译器(二):如何利用LLVM的优化和后端功能?
│   │   │   ├─24-Go语言编译器:把它当作教科书吧
│   │   │   ├─25-MySQL编译器(一):解析一条SQL语句的执行过程
│   │   │   ├─26-MySQL编译器(二):编译技术如何帮你提升数据库性能?
│   │   │   ├─27-课前导读:学习现代语言设计的正确姿势
│   │   │   ├─28-前端总结:语言设计也有人机工程学
│   │   │   ├─29-中端总结:不遗余力地进行代码优化
│   │   │   ├─30-后端总结:充分发挥硬件的能力
│   │   │   ├─31-运行时(一):从0到语言级的虚拟化
│   │   │   ├─32-运行时(二):垃圾收集与语言的特性有关吗?
│   │   │   ├─33-并发中的编译技术(一):如何从语言层面支持线程?
│   │   │   ├─34-并发中的编译技术(二):如何从语言层面支持协程?
│   │   │   ├─35-并发中的编译技术(三):Erlang语言厉害在哪里?
│   │   │   ├─36-高级特性(一):揭秘元编程的实现机制
│   │   │   ├─37-高级特性(二):揭秘泛型编程的实现机制
│   │   │   ├─38-综合实现(一):如何实现面向对象编程?
│   │   │   ├─39-综合实现(二):如何实现函数式编程?
│   │   │   ├─40-成果检验:方舟编译器的优势在哪里?
│   │   │   ├─不定期加餐1-远程办公,需要你我具备什么样的素质?
│   │   │   ├─不定期加餐2-学习技术的过程,其实是训练心理素质的过程
│   │   │   ├─不定期加餐3-这几年,打动我的两本好书
│   │   │   ├─不定期加餐4-从身边的牛人身上,我学到的一些优秀品质
│   │   │   ├─不定期加餐5-借助实例,探究C++编译器的内部机制
│   │   │   ├─不定期加餐5-借助实例,探究C++编译器的内部机制
│   │   │   ├─划重点-7种编译器的核心概念与算法
│   │   │   ├─学习指南-如何学习这门编译原理实战课?
│   │   │   ├─开篇词-在真实世界的编译器中游历
│   │   │   ├─开篇词-在真实世界的编译器中游历
│   │   │   ├─期中考试-这些编译原理知识,你都掌握了吗?
│   │   │   ├─期末答疑与总结-再次审视学习编译原理的作用
│   │   │   ├─期末考试-“编译原理实战课”100分试卷等你来挑战!
│   │   │   ├─热点问题答疑-如何吃透7种真实的编译器?
│   │   │   ├─用户故事-易昊:程序员不止有Bug和加班,还有诗和远方
│   │   │   ├─知识地图-一起来复习编译技术核心概念与算法
│   │   │   ├─结束语-实战是唯一标准!
│   │   │   └─结束语-实战是唯一标准!
│   │   ├─102正则表达式入门课
│   │   │   ├─01-元字符:如何巧妙记忆正则表达式的基本元件?
│   │   │   ├─02丨量词与贪婪:小小的正则,也可能把CPU拖垮!
│   │   │   ├─03-分组与引用:如何用正则实现更复杂的查找和替换操作?
│   │   │   ├─04-匹配模式:一次性掌握正则中常见的4种匹配模式
│   │   │   ├─05-断言:如何用断言更好地实现替换重复出现的单词?
│   │   │   ├─06-转义:正则中转义需要注意哪些问题?
│   │   │   ├─07-正则有哪些常见的流派及其特性?
│   │   │   ├─08-应用1:正则如何处理Unicode编码的文本?
│   │   │   ├─09-应用2:如何在编辑器中使用正则完成工作?
│   │   │   ├─10-应用3:如何在语言中用正则让文本处理能力上一个台阶?
│   │   │   ├─102正则表达式入门课
│   │   │   ├─11-如何理解正则的匹配原理以及优化原则?
│   │   │   ├─12-问题集锦:详解正则常见问题及解决方案
│   │   │   ├─加餐-从编程语言的角度来理解正则表达式
│   │   │   ├─导读-余晟:我是怎么学习和使用正则的?
│   │   │   ├─开篇词丨学习正则,我们到底要学什么?
│   │   │   ├─结束语-使用正则提高你的人生效率
│   │   │   ├─结束语-使用正则提高你的人生效率
│   │   │   └─结课测试-这些正则知识,你都掌握了吗?
│   │   ├─103跟月影学可视化
│   │   │   ├─01-浏览器中实现可视化的四种方式
│   │   │   ├─02-指令式绘图系统:如何用Canvas绘制层次关系图?
│   │   │   ├─03-声明式图形系统:如何用SVG图形元素绘制可视化图表?
│   │   │   ├─04-GPU与渲染管线:如何用WebGL绘制最简单的几何图形?
│   │   │   ├─04-GPU与渲染管线:如何用WebGL绘制最简单的几何图形?
│   │   │   ├─05-如何用向量和坐标系描述点和线段?
│   │   │   ├─06-可视化中你必须要掌握的向量乘法知识
│   │   │   ├─07-如何用向量和参数方程描述曲线?
│   │   │   ├─08-如何利用三角剖分和向量操作描述并处理多边形?
│   │   │   ├─09-如何用仿射变换对几何图形进行坐标变换?
│   │   │   ├─10-图形系统如何表示颜色?
│   │   │   ├─103跟月影学可视化
│   │   │   ├─11|图案生成:如何生成重复图案、分形图案以及随机效果?
│   │   │   ├─12-如何使用滤镜函数实现美颜效果?
│   │   │   ├─13-如何给简单的图案添加纹理和复杂滤镜?
│   │   │   ├─14-如何使用片元着色器进行几何造型?
│   │   │   ├─15-如何用极坐标系绘制有趣图案?
│   │   │   ├─16-如何使用噪声生成复杂的纹理?
│   │   │   ├─17-如何使用后期处理通道增强图像效果?
│   │   │   ├─18-如何生成简单动画让图形动起来?
│   │   │   ├─19-如何用着色器实现像素动画?
│   │   │   ├─20-如何用WebGL绘制3D物体?
│   │   │   ├─21-如何添加相机,用透视原理对物体进行投影?
│   │   │   ├─21-如何添加相机,用透视原理对物体进行投影?
│   │   │   ├─22-如何用仿射变换来移动和旋转3D物体?
│   │   │   ├─23-如何模拟光照让3D场景更逼真?(上)
│   │   │   ├─24-如何模拟光照让3D场景更逼真?(下)
│   │   │   ├─25-如何用法线贴图模拟真实物体表面
│   │   │   ├─26-如何绘制带宽度的曲线?
│   │   │   ├─26-如何绘制带宽度的曲线?
│   │   │   ├─27-案例:如何实现简单的3D可视化图表?
│   │   │   ├─28-Canvas、SVG与WebGL在性能上的优势与劣势
│   │   │   ├─28-Canvas、SVG与WebGL在性能上的优势与劣势
│   │   │   ├─29-怎么给Canvas绘制加速?
│   │   │   ├─30|怎么给WebGL绘制加速?
│   │   │   ├─31-针对海量数据,如何优化性能?
│   │   │   ├─32-数据之美:如何选择合适的方法对数据进行可视化处理?
│   │   │   ├─33-数据处理(一):可视化数据处理的一般方法是什么?
│   │   │   ├─34-数据处理(二):如何处理多元变量?
│   │   │   ├─35-设计(一):如何让可视化设计更加清晰?
│   │   │   ├─36-设计(二):如何理解可视化设计原则?
│   │   │   ├─37-实战(一):如何使用图表库绘制常用数据图表?
│   │   │   ├─38-实战(二):如何使用数据驱动框架绘制常用数据图表?
│   │   │   ├─39-实战(三):如何实现地理信息的可视化?
│   │   │   ├─40-实战(四):如何实现3D地球可视化(上)?
│   │   │   ├─41-实战(五):如何实现3D地球可视化(下)?
│   │   │   ├─42-如何整理出我们自己的可视化工具集?
│   │   │   ├─加餐1-作为一名程序员,数学到底要多好?
│   │   │   ├─加餐2-SpriteJS:我是如何设计一个可视化图形渲染引擎的?
│   │   │   ├─加餐3-轻松一刻:我想和你聊聊前端的未来
│   │   │   ├─加餐3-轻松一刻:我想和你聊聊前端的未来
│   │   │   ├─加餐4-一篇文章,带你快速理解函数式编程
│   │   │   ├─加餐5|周爱民:我想和你分享些学习的道理
│   │   │   ├─国庆策划-假期别闲着,一起来挑战“手势密码”
│   │   │   ├─国庆策划-假期别闲着,一起来挑战“手势密码”
│   │   │   ├─国庆策划-快来看看怎么用原生JavaScript实现手势解锁组件
│   │   │   ├─开篇词-不写网页的前端工程师,还能干什么?
│   │   │   ├─有奖征集倒计时4天!你填写毕业问卷了吗?
│   │   │   ├─用户故事-非前端开发,我为什么要学可视化?
│   │   │   ├─结束语-可视化工程师的未来之路
│   │   │   ├─预习-Web前端与可视化到底有什么区别?
│   │   │   └─预习-Web前端与可视化到底有什么区别?
│   │   ├─104OAuth2
│   │   │   ├─01-OAuth2
│   │   │   ├─02-授权码许可类型中,为什么一定要有授权码?
│   │   │   ├─03-授权服务:授权码和访问令牌的颁发流程是怎样的?
│   │   │   ├─04-在OAuth2
│   │   │   ├─05-如何安全、快速地接入OAuth2
│   │   │   ├─06-除了授权码许可类型,OAuth2
│   │   │   ├─07-如何在移动App中使用OAuth2
│   │   │   ├─08-实践OAuth2
│   │   │   ├─09-实战:利用OAuth2
│   │   │   ├─10-串讲:OAuth2
│   │   │   ├─104OAuth2
│   │   │   ├─11-实战案例:使用SpringSecurity搭建一套基于JWT的OAuth2
│   │   │   ├─12-架构案例:基于OAuth2
│   │   │   ├─13-各大开放平台是如何使用OAuth2
│   │   │   ├─14-查漏补缺:OAuth2
│   │   │   ├─开篇词-为什么要学OAuth2
│   │   │   ├─结束语-把学习当成一种习惯
│   │   │   └─结束语-把学习当成一种习惯
│   │   ├─105Vim实用技巧必知必会
│   │   │   ├─01|各平台下的Vim安装方法:上路前准备好你的宝马
│   │   │   ├─02|基本概念和基础命令:应对简单的编辑任务
│   │   │   ├─03|更多常用命令:应对稍复杂的编辑任务
│   │   │   ├─04|初步定制:让你的Vim更顺手
│   │   │   ├─05|多文件打开与缓冲区:复制粘贴的正确姿势
│   │   │   ├─06|窗口和标签页:修改、对比多个文件的正确姿势
│   │   │   ├─07|正则表达式:实现文件内容的搜索和替换
│   │   │   ├─07|正则表达式:实现文件内容的搜索和替换
│   │   │   ├─08|基本编程支持:规避、解决编程时的常见问题
│   │   │   ├─09|七大常用技巧:让编辑效率再上一个台阶
│   │   │   ├─105Vim实用技巧必知必会
│   │   │   ├─10|代码重构实验:在实战中提高编辑熟练度
│   │   │   ├─11|文本的细节:关于字符、编码、行你所需要知道的一切
│   │   │   ├─12|语法加亮和配色方案:颜即正义
│   │   │   ├─13|YouCompleteMe:Vim里的自动完成
│   │   │   ├─14|Vim脚本简介:开始你的深度定制
│   │   │   ├─15|插件荟萃:不可或缺的插件
│   │   │   ├─16|终端和GDB支持:不离开Vim完成开发任务
│   │   │   ├─导读|池建强:Vim就是四个字“唯快不破”
│   │   │   ├─开篇词|我们为什么要学Vim?
│   │   │   ├─拓展1|纯文本编辑:使用Vim书写中英文文档
│   │   │   ├─拓展2|C程序员的Vim工作环境:C代码的搜索、提示和自动完成
│   │   │   ├─拓展3|Python程序员的Vim工作环境:完整的Python开发环境
│   │   │   ├─拓展3|Python程序员的Vim工作环境:完整的Python开发环境
│   │   │   ├─拓展4-插件样例分析:自己动手改进插件
│   │   │   ├─拓展5-其他插件和技巧:吴咏炜的箱底私藏
│   │   │   ├─结束语|Vim森林探秘,一切才刚刚开始
│   │   │   └─结课测试|这些Vim的知识你都掌握了吗?
│   │   ├─106如何看懂一幅画
│   │   │   ├─01-历史与流派:关于油画,你必须了解的事儿
│   │   │   ├─01-历史与流派:关于油画,你必须了解的事儿
│   │   │   ├─02-油画名词小清单:如何正确欣赏油画?
│   │   │   ├─03-梵高的画到底好在哪里?
│   │   │   ├─04-为什么戴珍珠耳环的少女比蒙娜丽莎更灵动?
│   │   │   ├─05|《自由引导人民》超燃的秘密是什么?
│   │   │   ├─06-名画《呐喊》是怎么变成表情包的?
│   │   │   ├─06-名画《呐喊》是怎么变成表情包的?
│   │   │   ├─07-抽象画究竟在画什么?
│   │   │   ├─08-油画圈里有哪些经久不衰的“梗”?
│   │   │   ├─09-如何在一幅画里观察艺术家的情绪?
│   │   │   ├─10-你知道最早的平面广告是什么吗?
│   │   │   ├─106如何看懂一幅画
│   │   │   ├─11-什么样的模仿才是高级的模仿?
│   │   │   ├─12-为什么戈雅的画风是奇异多变的?
│   │   │   ├─13-莫奈是怎样捕捉生命中每一个瞬间的?
│   │   │   ├─14-为什么毕加索画的情人都是天价名画?
│   │   │   ├─15-什么样的画才是一幅好画?
│   │   │   ├─加餐-拉斐尔逝世500年回顾展
│   │   │   ├─开篇词-先看懂一幅画,再去看这个世界
│   │   │   ├─拓展1-为什么画里的人不穿衣服?
│   │   │   ├─拓展2-油画里有哪些彩蛋和趣事?
│   │   │   ├─拓展3-如何从名画中学习穿搭技巧?
│   │   │   ├─拓展4-如何用欣赏油画的方式看电影?
│   │   │   ├─拓展5-如何在博物馆里优雅地观赏一幅画?
│   │   │   ├─结束语-艺术之旅,没有终点
│   │   │   ├─编辑手记-开一朵在技术石块里生长的小花
│   │   │   └─编辑手记-开一朵在技术石块里生长的小花
│   │   ├─107重学线性代数
│   │   │   ├─01-导读:如何在机器学习中运用线性代数工具?
│   │   │   ├─02-基本概念:线性代数研究的到底是什么问题?
│   │   │   ├─03-矩阵:为什么说矩阵是线性方程组的另一种表达?
│   │   │   ├─04-解线性方程组:为什么用矩阵求解的效率这么高?
│   │   │   ├─05-线性空间:如何通过向量的结构化空间在机器学习中做降维处理?
│   │   │   ├─06-线性无关:如何理解向量在N维空间的几何意义?
│   │   │   ├─06-线性无关:如何理解向量在N维空间的几何意义?
│   │   │   ├─07-基和秩:为什么说它表达了向量空间中“有用”的向量个数?
│   │   │   ├─08-线性映射:如何从坐标系角度理解两个向量空间之间的函数?
│   │   │   ├─09-仿射空间:如何在图形的平移操作中大显身手?
│   │   │   ├─10-解析几何:为什么说它是向量从抽象到具象的表达?
│   │   │   ├─107重学线性代数
│   │   │   ├─11-如何运用线性代数方法解决图论问题?
│   │   │   ├─12-如何通过矩阵转换让3D图形显示到二维屏幕上?
│   │   │   ├─13-如何通过有限向量空间加持的希尔密码,提高密码被破译的难度?
│   │   │   ├─14-如何在深度学习中运用数值代数的迭代法做训练?
│   │   │   ├─15-如何从计算机的角度来理解线性代数?
│   │   │   ├─15-如何从计算机的角度来理解线性代数?
│   │   │   ├─基础通关-线性代数5道典型例题及解析
│   │   │   ├─开篇词-从今天起,学会线性代数
│   │   │   ├─强化通关-线性代数水平测试20题
│   │   │   ├─结束语-和数学打交道这么多年,我的三点感悟
│   │   │   └─结束语-和数学打交道这么多年,我的三点感悟
│   │   ├─108Redis核心技术与实战
│   │   │   ├─01-基本架构:一个键值数据库包含什么?
│   │   │   ├─02-数据结构:快速的Redis有哪些慢操作?
│   │   │   ├─03-高性能IO模型:为什么单线程Redis能那么快?
│   │   │   ├─04-AOF日志:宕机了,Redis如何避免数据丢失?
│   │   │   ├─05-内存快照:宕机后,Redis如何实现快速恢复?
│   │   │   ├─06-数据同步:主从库如何实现数据一致?
│   │   │   ├─07-哨兵机制:主库挂了,如何不间断服务?
│   │   │   ├─08-哨兵集群:哨兵挂了,主从库还能切换吗?
│   │   │   ├─09-切片集群:数据增多了,是该加内存还是加实例?
│   │   │   ├─10-第1~9讲课后思考题答案及常见问题答疑
│   │   │   ├─108Redis核心技术与实战
│   │   │   ├─11-“万金油”的String,为什么不好用了?
│   │   │   ├─12-有一亿个keys要统计,应该用哪种集合?
│   │   │   ├─13-GEO是什么?还可以定义新的数据类型吗?
│   │   │   ├─14-如何在Redis中保存时间序列数据?
│   │   │   ├─14-如何在Redis中保存时间序列数据?
│   │   │   ├─15-消息队列的考验:Redis有哪些解决方案?
│   │   │   ├─16-异步机制:如何避免单线程模型的阻塞?
│   │   │   ├─17-为什么CPU结构也会影响Redis的性能?
│   │   │   ├─18-波动的响应延迟:如何应对变慢的Redis?(上)
│   │   │   ├─19-波动的响应延迟:如何应对变慢的Redis?(下)
│   │   │   ├─20-删除数据后,为什么内存占用率还是很高?
│   │   │   ├─21-缓冲区:一个可能引发“惨案”的地方
│   │   │   ├─22-第11~21讲课后思考题答案及常见问题答疑
│   │   │   ├─23-旁路缓存:Redis是如何工作的?
│   │   │   ├─24-替换策略:缓存满了怎么办?
│   │   │   ├─25-缓存异常(上):如何解决缓存和数据库的数据不一致问题?
│   │   │   ├─26-缓存异常(下):如何解决缓存雪崩、击穿、穿透难题?
│   │   │   ├─27-缓存被污染了,该怎么办?
│   │   │   ├─28-Pika:如何基于SSD实现大容量Redis?
│   │   │   ├─29-无锁的原子操作:Redis如何应对并发访问?
│   │   │   ├─30-如何使用Redis实现分布式锁?
│   │   │   ├─31-事务机制:Redis能实现ACID属性吗?
│   │   │   ├─32-Redis主从同步与故障切换,有哪些坑?
│   │   │   ├─33-脑裂:一次奇怪的数据丢失
│   │   │   ├─34-第23~33讲课后思考题答案及常见问题答疑
│   │   │   ├─35-CodisVSRedisCluster:我该选择哪一个集群方案?
│   │   │   ├─36-Redis支撑秒杀场景的关键技术和实践都有哪些?
│   │   │   ├─37-数据分布优化:如何应对数据倾斜?
│   │   │   ├─38-通信开销:限制RedisCluster规模的关键因素
│   │   │   ├─38-通信开销:限制RedisCluster规模的关键因素
│   │   │   ├─39-Redis6
│   │   │   ├─40-Redis的下一步:基于NVM内存的实践
│   │   │   ├─41-第35~40讲课后思考题答案及常见问题答疑
│   │   │   ├─加餐(一)-经典的Redis学习资料有哪些?
│   │   │   ├─加餐(七)-从微博的Redis实践中,我们可以学到哪些经验?
│   │   │   ├─加餐(三)-用户Kaito:我希望成为在压力中成长的人
│   │   │   ├─加餐(二)-用户Kaito:我是如何学习Redis的?
│   │   │   ├─加餐(五)-Redis有哪些好用的运维工具?
│   │   │   ├─加餐(六)-Redis的使用规范小建议
│   │   │   ├─加餐(四)-Redis客户端如何与服务器端交换命令和数据?
│   │   │   ├─开篇词-这样学Redis,才能技高一筹
│   │   │   ├─期中测试题-一套习题,测出你的掌握程度
│   │   │   ├─期中测试题答案-这些问题,你都答对了吗?
│   │   │   ├─期末测试-这些Redis核心知识,你都掌握了吗?
│   │   │   ├─结束语-从学习Redis到向Redis学习
│   │   │   └─结束语-从学习Redis到向Redis学习
│   │   ├─109分布式数据库30讲
│   │   │   ├─01|什么是分布式数据库?
│   │   │   ├─02|强一致性:那么多数据一致性模型,究竟有啥不一样?
│   │   │   ├─03|强一致性:别再用BASE做借口,来看看什么是真正的事务一致性
│   │   │   ├─04-架构风格:NewSQL和PGXC到底有啥不一样?
│   │   │   ├─05-全局时钟:物理时钟和逻辑时钟你Pick谁?
│   │   │   ├─06-分片机制:为什么说Range是更好的分片策略?
│   │   │   ├─07-数据复制:为什么有时候Paxos不是最佳选择?
│   │   │   ├─08-基础篇大串讲:重难点回顾+思考题答疑+知识全景图
│   │   │   ├─09|原子性:2PC还是原子性协议的王者吗?
│   │   │   ├─10-原子性:如何打破事务高延迟的魔咒?
│   │   │   ├─109分布式数据库30讲
│   │   │   ├─11|隔离性:读写冲突时,快照是最好的办法吗?
│   │   │   ├─12-隔离性:看不见的读写冲突,要怎么处理?
│   │   │   ├─13-隔离性:为什么使用乐观协议的分布式数据库越来越少
│   │   │   ├─14-隔离性:实现悲观协议,除了锁还有别的办法吗?
│   │   │   ├─15-分布式事务串讲:重难点回顾+思考题答疑+知识全景图
│   │   │   ├─16-为什么不建议你使用存储过程?
│   │   │   ├─17-为什么不建议你使用自增主键?
│   │   │   ├─18-HTAP是不是赢者通吃的游戏?
│   │   │   ├─19-查询性能优化:计算与存储分离架构下有哪些优化思路?
│   │   │   ├─20-关联查询:如何提升多表Join能力?
│   │   │   ├─21-查询执行引擎:如何让聚合计算加速?
│   │   │   ├─22|RUM猜想:想要读写快还是存储省?又是三选二
│   │   │   ├─23-数据库查询串讲:重难点回顾+思考题答疑+知识全景图
│   │   │   ├─24-全球化部署:如何打造近在咫尺且永不宕机的数据库?
│   │   │   ├─25-容灾与备份:如何设计逃生通道保证业务连续性?
│   │   │   ├─26-容器化:分布式数据库要不要上云,你想好了吗?
│   │   │   ├─27-产品测试:除了性能跑分,还能测个啥?
│   │   │   ├─28-选型案例:银行是怎么选择分布式数据库的?
│   │   │   ├─29-产品图鉴:哪些分布式数据库值得看?
│   │   │   ├─30-实践篇大串讲:重难点回顾+思考题答疑+知识全景图
│   │   │   ├─开篇词|为什么要学习分布式数据库?
│   │   │   ├─用户故事-李兆龙:博观而约取,厚积而薄发
│   │   │   ├─结束语-享受职业带给你的快乐
│   │   │   └─结课测试|这些分布式数据库的问题,你都掌握了吗?
│   │   ├─110ToB市场品牌实战课
│   │   │   ├─01-ToB市场营销到底是做什么的?
│   │   │   ├─02-ToB消费心理学:如何把握客户CEO心理,让他买单?
│   │   │   ├─03-第一印象(上):如何策划一场产品发布会?
│   │   │   ├─04-第一印象(下):如何策划一场产品发布会?
│   │   │   ├─05-Leads:如何成体系地寻找高质量的Leads?
│   │   │   ├─05-Leads:如何成体系地寻找高质量的Leads?
│   │   │   ├─06-案例:怎样0成本把一个新产品的市场认知率做到76%?
│   │   │   ├─07-产品世界观:如何构建一个好的对外产品故事体系?
│   │   │   ├─08-口碑:如何打造一个有影响力的Demo?
│   │   │   ├─09-后疫情时代,如何做ToB市场品牌内容的线上转型?
│   │   │   ├─10-如何用“周边”产品构建ToB影响力?
│   │   │   ├─11-打造案例(上):如何做优质客户案例的选型和内容构造?
│   │   │   ├─110ToB市场品牌实战课
│   │   │   ├─12-打造案例(中):如何引发现象级讨论,打赢PR战役?
│   │   │   ├─13-打造案例(下):如何通过营销战役把商机转化为销量?
│   │   │   ├─14-颜值美学:如何体现ToB产品营销的设计感?
│   │   │   ├─15-如何给企业讲一个“降本”的故事?
│   │   │   ├─16|如何给企业讲一个“增效”的故事?
│   │   │   ├─17|市场中的禁忌:ToB营销中容易犯哪些错误?
│   │   │   ├─18-ToB营销的阵地:我们在哪里说话,也很重要
│   │   │   ├─ToB会客厅|SDR是如何优化线索跟进策略,提升销售效能的?
│   │   │   ├─ToB会客厅|如何通过整体营销迎接后疫情时代的市场挑战?
│   │   │   ├─开篇词-成为下一个万亿市场风口上的操盘人
│   │   │   ├─结束语-一个ToB的市场人应该具备怎样的特质?
│   │   │   └─结束语-一个ToB的市场人应该具备怎样的特质?
│   │   ├─111Linux内核技术实战课
│   │   │   ├─01基础篇-如何用数据观测PageCache?
│   │   │   ├─02基础篇-PageCache是怎样产生和释放的?
│   │   │   ├─03案例篇-如何处理PageCache难以回收产生的load飙高问题?
│   │   │   ├─04案例篇-如何处理PageCache容易回收引起的业务性能问题?
│   │   │   ├─05分析篇-如何判断问题是否由PageCache产生的?
│   │   │   ├─06基础篇-进程的哪些内存类型容易引起内存泄漏?
│   │   │   ├─07案例篇-如何预防内存泄漏导致的系统假死?
│   │   │   ├─07案例篇-如何预防内存泄漏导致的系统假死?
│   │   │   ├─08案例篇-Shmem:进程没有消耗内存,内存哪去了?
│   │   │   ├─09分析篇-如何对内核内存泄漏做些基础的分析?
│   │   │   ├─10分析篇-内存泄漏时,我们该如何一步步找到根因?
│   │   │   ├─111Linux内核技术实战课
│   │   │   ├─11基础篇-TCP连接的建立和断开受哪些系统配置影响?
│   │   │   ├─12基础篇-TCP收发包过程会受哪些配置项影响?
│   │   │   ├─13案例篇-TCP拥塞控制是如何导致业务性能抖动的?
│   │   │   ├─13案例篇-TCP拥塞控制是如何导致业务性能抖动的?
│   │   │   ├─14案例篇-TCP端到端时延变大,怎样判断是哪里出现了问题?
│   │   │   ├─15分析篇-如何高效地分析TCP重传问题?
│   │   │   ├─16套路篇-如何分析常见的TCP问题?
│   │   │   ├─17基础篇-CPU是如何执行任务的?
│   │   │   ├─18案例篇-业务是否需要使用透明大页:水可载舟,亦可覆舟?
│   │   │   ├─19案例篇-网络吞吐高的业务是否需要开启网卡特性呢?
│   │   │   ├─20分析篇-如何分析CPU利用率飙高问题?
│   │   │   ├─加餐-我是如何使用tracepoint来分析内核Bug的?
│   │   │   ├─开篇词-如何让Linux内核更好地服务应用程序?
│   │   │   ├─结束语-第一次看内核代码,我也很懵逼
│   │   │   └─结课测试-这些Linux内核技术实战技能你都掌握了吗?
│   │   ├─112技术管理案例课
│   │   │   ├─01-领导力:如何在实践中应用不同层次的领导力?
│   │   │   ├─02-经理权:如何有效使用经理权?
│   │   │   ├─03-领导特质:一个合格经理人应有的4个待人处事原则
│   │   │   ├─03-领导特质:一个合格经理人应有的4个待人处事原则
│   │   │   ├─04-避坑指南:从技术骨干到一线经理,你会遇到哪些坑?
│   │   │   ├─05|事急则乱:上任第一个礼拜的教训
│   │   │   ├─06-员工沟通:怎么赢得之前平级的技术骨干的尊重?
│   │   │   ├─07-向上管理:你知不知道你领导真正的烦恼是啥?
│   │   │   ├─08-人才招聘:招人过程中容易犯的5种错误
│   │   │   ├─09-人才培养:御人也是育人,人才培养的5个维度
│   │   │   ├─10-裁人:“心要慈、刀要快”,做好裁人这件事
│   │   │   ├─10-裁人:“心要慈、刀要快”,做好裁人这件事
│   │   │   ├─11-员工关怀:发自内心地关心人,是一切的基础
│   │   │   ├─112技术管理案例课
│   │   │   ├─12-进阶心路:不要轻易跨过一线经理,给员工安排工作!
│   │   │   ├─13-变革管理:如何从“拥抱变化”到“发起变化”?
│   │   │   ├─14-冲突管理1:如何进行高压对话?
│   │   │   ├─15-冲突管理2:没有双赢的情况下,如何推进事情发展?
│   │   │   ├─16-冲突管理3:冲突不可怕,可怕的是引发信任危机
│   │   │   ├─17-招募高手:看人看本质,优秀的人才都是内驱的
│   │   │   ├─18-组织管理:如何突破团队效率提升的三大关?
│   │   │   ├─19-危机管理:摆明态度,不要做名义上的领导
│   │   │   ├─20-文化建设:哪些价值观能够提升团队凝聚力?
│   │   │   ├─21-内部考评:为什么说“一碗水端不平”才是公平?
│   │   │   ├─22-技术决策(1):技术管理者做什么,团队效率才最高?
│   │   │   ├─23-技术决策(2):拥有辩证思维,才能在纠结中负重前行
│   │   │   ├─24-技术决策(3):持续跟进进度,执行细节决定成败
│   │   │   ├─开篇词-一个技术总监的管理“自白”
│   │   │   ├─用户故事-Weehua:愿每一个管理者都能勇往直前
│   │   │   ├─结束语-时时反思,优化管理能力
│   │   │   └─结课测试|这些技术管理的问题,你都掌握了么?
│   │   ├─113用户体验设计实战课
│   │   │   ├─01-商业的天时:如何选择正确的体验策略?
│   │   │   ├─02-如何判断产品体验的商业化潜能?
│   │   │   ├─03-体验设计的模型:找到体验设计的关键规律
│   │   │   ├─04-体验进化:选择正确的增长路径
│   │   │   ├─05-拆解体验量化模型的5个维度
│   │   │   ├─06-如何构建适合体验驱动商业的组织?
│   │   │   ├─07-认知用户:为什么要成为用户企业?
│   │   │   ├─08-三个基因维度,看清用户企业特性
│   │   │   ├─09-如何建立用户数据模型,驱动运营?
│   │   │   ├─10-如何分层理解用户需求?
│   │   │   ├─11-如何重构用户生命周期,指导体验设计?
│   │   │   ├─11-如何重构用户生命周期,指导体验设计?
│   │   │   ├─113用户体验设计实战课
│   │   │   ├─12-你的用户研究方法是正确的吗?
│   │   │   ├─13-场景服务设计:拿到新商业的支点
│   │   │   ├─14|如何精确洞察场景用户需求?
│   │   │   ├─15|构建用户体验地图的4个关键步骤
│   │   │   ├─16-如何借助体验地图为用户打造沉浸体验?
│   │   │   ├─17-如何提炼并兑现服务设计的生活主张?
│   │   │   ├─18-如何搭建服务的组织体系?
│   │   │   ├─19-精通产品体验设计:获得润物细无声的力量
│   │   │   ├─20-依靠设计系统,提升体验品质
│   │   │   ├─21-七步判断互联网产品交互设计质量
│   │   │   ├─22-如何为产品设计优雅的界面?
│   │   │   ├─23-产品设计的高级感,是怎么做出来的?
│   │   │   ├─24-如何搭建发挥产品设计价值的流程架构?
│   │   │   ├─25-体验品牌:用户与企业的精神图腾
│   │   │   ├─26-如何打造产品的文化?
│   │   │   ├─26-如何打造产品的文化?
│   │   │   ├─27-如何打造用户企业的品牌IP?
│   │   │   ├─28-如何打造场景化的传播策略?
│   │   │   ├─29-如何打造用户同盟?
│   │   │   ├─30-串讲:用体验策略打通商业与用户,手眼通天
│   │   │   ├─开篇词-用户体验,未来十年撬动商业的思维
│   │   │   ├─用户故事-以学习为储备,以实践为阶梯
│   │   │   ├─答疑-找到理论联系实际的钥匙
│   │   │   ├─结束语-设计的智慧,就是不断链接世界与人
│   │   │   ├─结束语-设计的智慧,就是不断链接世界与人
│   │   │   └─结课测试-一套习题,测出你的掌握程度
│   │   ├─114WebAssembly入门课
│   │   │   ├─01-基础篇:学习此课程你需要了解哪些基础知识?
│   │   │   ├─02-历史篇:为什么会有WebAssembly这样一门技术?
│   │   │   ├─03-WebAssembly是一门新的编程语言吗?
│   │   │   ├─04-WebAssembly模块的基本组成结构到底有多简单?
│   │   │   ├─05-二进制编码:WebAssembly微观世界的基本数据规则是什么?
│   │   │   ├─06-WAT:如何让一个WebAssembly二进制模块的内容易于解读?
│   │   │   ├─06-WAT:如何让一个WebAssembly二进制模块的内容易于解读?
│   │   │   ├─07-WASI:你听说过WebAssembly操作系统接口吗?
│   │   │   ├─08-API:在WebAssemblyMVP标准下你能做到哪些事?
│   │   │   ├─09-WebAssembly能够为Web前端框架赋能吗?
│   │   │   ├─10-有哪些已经投入生产的WebAssembly真实案例?
│   │   │   ├─11-WebAssembly在物联网、多媒体与云技术方面有哪些创新实践?
│   │   │   ├─114WebAssembly入门课
│   │   │   ├─12-有哪些优秀的WebAssembly编译器与运行时?
│   │   │   ├─13-LLVM:如何将自定义的语言编译到WebAssembly?
│   │   │   ├─14-有哪些正在行进中的WebAssemblyPost-MVP提案?
│   │   │   ├─15-如何实现一个WebAssembly在线多媒体处理应用(一)?
│   │   │   ├─16-如何实现一个WebAssembly在线多媒体处理应用(二)?
│   │   │   ├─17-如何实现一个WebAssembly在线多媒体处理应用(三)?
│   │   │   ├─18-如何进行Wasm应用的调试与分析?
│   │   │   ├─19-如何应用WASI及其相关生态?
│   │   │   ├─20-总结与答疑
│   │   │   ├─开篇词-我们为什么要了解WebAssembly?
│   │   │   ├─期末测试|这些WebAssembly的问题,你都掌握了吗?
│   │   │   ├─结束语-WebAssembly,未来已来
│   │   │   └─结束语-WebAssembly,未来已来
│   │   ├─115动态规划面试宝典
│   │   │   ├─01-硬币找零问题:从贪心算法说起
│   │   │   ├─02-暴力递归:当贪心失效了怎么办?
│   │   │   ├─03-备忘录:如何避免递归中的重复计算?
│   │   │   ├─04-动态规划:完美解决硬币找零
│   │   │   ├─05|面试即正义第一期:什么样的问题应该使用动态规划?
│   │   │   ├─06-0-1背包:动态规划的HelloWorld
│   │   │   ├─07|完全背包:深入理解背包问题
│   │   │   ├─08|子数组问题:从解决动归问题套路到实践解题思路
│   │   │   ├─09|子序列问题:详解重要的一大类动态规划问题
│   │   │   ├─10|面试即正义第二期:常见的动态规划面试题串烧
│   │   │   ├─115动态规划面试宝典
│   │   │   ├─11|动态规划新问题1:攻破最长递增子序列问题
│   │   │   ├─12|动态规划新问题2:攻破最大子数组问题
│   │   │   ├─13|动态规划算法设计的关键:最优子结构与状态依赖
│   │   │   ├─14|面试即正义第三期:刷题指南,熟能生巧
│   │   │   ├─15|课程回顾与总结(上)
│   │   │   ├─16|课程回顾与总结(下)
│   │   │   ├─加餐|买卖股票:常见且必考的动态规划面试题
│   │   │   ├─导读|动态规划问题纷繁复杂,如何系统学习和掌握它?
│   │   │   ├─开篇词|为什么大厂都爱考动态规划?
│   │   │   ├─有奖征集倒计时3天!你填写毕业问卷了吗?
│   │   │   ├─期末测试|有关动态规划,你掌握了多少呢?
│   │   │   ├─结束语|在我家的后院养长颈鹿
│   │   │   └─结课问卷获奖用户名单
│   │   ├─116深度学习推荐系统实战
│   │   │   ├─01-技术架构:深度学习推荐系统的经典技术架构长啥样?
│   │   │   ├─02-SparrowRecSys:我们要实现什么样的推荐系统?
│   │   │   ├─03-深度学习基础:你打牢深度学习知识的地基了吗?
│   │   │   ├─04-特征工程:推荐系统有哪些可供利用的特征?
│   │   │   ├─05-特征处理:如何利用Spark解决特征处理问题?
│   │   │   ├─06-Embedding基础:所有人都在谈的Embedding技术到底是什么?
│   │   │   ├─07-Embedding进阶:如何利用图结构数据生成GraphEmbedding?
│   │   │   ├─08-Embedding实战:如何使用Spark生成Item2vec和GraphEmbedding?
│   │   │   ├─09-线上服务:如何在线上提供高并发的推荐服务?
│   │   │   ├─10-存储模块:如何用Redis解决推荐系统特征的存储问题?
│   │   │   ├─11-召回层:如何快速又准确地筛选掉不相关物品?
│   │   │   ├─116深度学习推荐系统实战
│   │   │   ├─12-局部敏感哈希:如何在常数时间内搜索Embedding最近邻?
│   │   │   ├─13-模型服务:怎样把你的离线模型部署到线上?
│   │   │   ├─14-融会贯通:SparrowRecSys中的电影相似推荐功能是如何实现的?
│   │   │   ├─15-协同过滤:最经典的推荐模型,我们应该掌握什么?
│   │   │   ├─16-深度学习革命:深度学习推荐模型发展的整体脉络是怎样的?
│   │   │   ├─17-Embedding+MLP:如何用TensorFlow实现经典的深度学习模型?
│   │   │   ├─18|Wide&Deep:怎样让你的模型既有想象力又有记忆力?
│   │   │   ├─19|NeuralCF:如何用深度学习改造协同过滤?
│   │   │   ├─20-DeepFM:如何让你的模型更好地处理特征交叉?
│   │   │   ├─21|注意力机制、兴趣演化:推荐系统如何抓住用户的心?
│   │   │   ├─22|强化学习:让推荐系统像智能机器人一样自主学习
│   │   │   ├─23|实战:如何用深度学习模型实现SparrowRecSys的个性化推荐功能?
│   │   │   ├─24-离线评估:常用的推荐系统离线评估方法有哪些?
│   │   │   ├─25-评估指标:我们可以用哪些指标来衡量模型的好坏?
│   │   │   ├─26-在线测试:如何在推荐服务器内部实现A-B测试?
│   │   │   ├─27-评估体系:如何解决A-B测试资源紧张的窘境?
│   │   │   ├─28-业界经典:YouTube深度学习推荐系统的经典架构长什么样?
│   │   │   ├─29-图神经网络:Pinterest是如何应用图神经网络的?
│   │   │   ├─30-流处理平台:Flink是如何快速识别用户兴趣,实现实时推荐的?
│   │   │   ├─31|模型迭代:阿里巴巴是如何迭代更新推荐模型的?
│   │   │   ├─32-强化学习案例:美团是如何在推荐系统中落地强化学习的?
│   │   │   ├─33|技术权衡:解决方案这么多,哪个最合适?
│   │   │   ├─33|技术权衡:解决方案这么多,哪个最合适?
│   │   │   ├─国庆策划-关于深度学习推荐系统,我有这些资料想推荐给你
│   │   │   ├─国庆策划-深度学习推荐系统基础,你掌握了多少?
│   │   │   ├─开篇词-从0开始搭建一个深度学习推荐系统
│   │   │   ├─期末考试-“深度学习推荐系统”100分试卷等你来挑战!
│   │   │   ├─模型实战准备(一)-TensorFlow入门和环境配置
│   │   │   ├─模型实战准备(二)-模型特征、训练样本的处理
│   │   │   ├─特别加餐-“银弹”不可靠,最优的模型结构该怎么找?
│   │   │   ├─特别加餐|TensorFlow的模型离线评估实践怎么做?
│   │   │   ├─特别加餐|TensorFlow的模型离线评估实践怎么做?
│   │   │   ├─答疑-基础架构篇+特征工程篇常见问题解答
│   │   │   ├─答疑-线上服务篇留言问题详解
│   │   │   ├─结束语|深度学习时代需要什么样的推荐工程师?
│   │   │   └─结束语|深度学习时代需要什么样的推荐工程师?
│   │   ├─117爱上跑步
│   │   │   ├─01-跑两步就喘了,是不是我不适合跑步?
│   │   │   ├─02-正确的跑步姿势是什么样的?
│   │   │   ├─03-为什么跑步要先热身?
│   │   │   ├─04-怎样制定你的第一个10公里跑步计划?
│   │   │   ├─05-快跑和慢跑,哪个更燃脂?
│   │   │   ├─06-普通跑步者应该如何选择跑鞋?
│   │   │   ├─07-买跑步装备,不要踩这些坑儿
│   │   │   ├─07-买跑步装备,不要踩这些坑儿
│   │   │   ├─08-跑步前到底应不应该吃东西?
│   │   │   ├─09-跑步到底伤不伤膝盖?
│   │   │   ├─10-参加了20场马拉松,我是如何准备的?
│   │   │   ├─11-除了马拉松,还能参加哪些跑步赛事?
│   │   │   ├─117爱上跑步
│   │   │   ├─12-热点问题答疑:跑完第二天浑身疼,还要不要继续跑?
│   │   │   ├─开篇词-跑步,不那么简单的事儿
│   │   │   └─开篇词-跑步,不那么简单的事儿
│   │   ├─118Go并发编程实战课
│   │   │   ├─01-Mutex:如何解决资源并发访问问题?
│   │   │   ├─02-Mutex:庖丁解牛看实现
│   │   │   ├─03|Mutex:4种易错场景大盘点
│   │   │   ├─04|Mutex:骇客编程,如何拓展额外功能?
│   │   │   ├─05|RWMutex:读写锁的实现原理及避坑指南
│   │   │   ├─06-WaitGroup:协同等待,任务编排利器
│   │   │   ├─07-Cond:条件变量的实现机制及避坑指南
│   │   │   ├─08-Once:一个简约而不简单的并发原语
│   │   │   ├─09-map:如何实现线程安全的map类型?
│   │   │   ├─10-Pool:性能提升大杀器
│   │   │   ├─11-Context:信息穿透上下文
│   │   │   ├─118Go并发编程实战课
│   │   │   ├─12-atomic:要保证原子操作,一定要使用这几种方法
│   │   │   ├─13-Channel:另辟蹊径,解决并发问题
│   │   │   ├─13-Channel:另辟蹊径,解决并发问题
│   │   │   ├─14-Channel:透过代码看典型的应用模式
│   │   │   ├─15-内存模型:Go如何保证并发读写的顺序?
│   │   │   ├─16-Semaphore:一篇文章搞懂信号量
│   │   │   ├─17-SingleFlight和CyclicBarrier:请求合并和循环栅栏该怎么用?
│   │   │   ├─18-分组操作:处理一组子任务,该用什么并发原语?
│   │   │   ├─19-在分布式环境中,Leader选举、互斥锁和读写锁该如何实现?
│   │   │   ├─20-在分布式环境中,队列、栅栏和STM该如何实现?
│   │   │   ├─开篇词-想吃透Go并发编程,你得这样学!
│   │   │   ├─结束语-再聊Go并发编程的价值和精进之路
│   │   │   └─结束语-再聊Go并发编程的价值和精进之路
│   │   ├─119人人都用得上的写作课
│   │   │   ├─01|写作前戏:如何让阅读真正帮到写作?
│   │   │   ├─02|以正合以奇胜:好文章都有哪些标志?
│   │   │   ├─03|躲雷指南:你一定要避开的4大写作误区
│   │   │   ├─04|重中之重:如何量身打造一个好的写作主题?
│   │   │   ├─05|谋篇布局:如何为主题搭建一个好的结构?
│   │   │   ├─06|开篇制胜:必学必会的几大开题手段
│   │   │   ├─07|生动叙事:如何让读者紧跟你的节奏?
│   │   │   ├─08|人物出场:为他们设置戏剧化场景的妙招
│   │   │   ├─09|细节打磨:如何设计出令人过目不忘的细节?
│   │   │   ├─10|遣词造句:如何让字和句吸引用户的眼球?
│   │   │   ├─119人人都用得上的写作课
│   │   │   ├─11|有效修改:文章反复推敲的诀窍
│   │   │   ├─11|有效修改:文章反复推敲的诀窍
│   │   │   ├─12|如何快速写出一篇高质量的热点文章?
│   │   │   ├─13|如何写出一篇兼具营销性的好软文?
│   │   │   ├─14|如何完成一篇出彩的演讲稿?
│   │   │   ├─15|如何用心讲好一个故事?
│   │   │   ├─开篇词|碎片化时代如何写出吸引人的好文章?
│   │   │   ├─有奖征集最后1天!你填写毕业问卷了吗?
│   │   │   ├─期中阶段作业打卡:恭喜!5位同学获课程免单
│   │   │   ├─期末阶段作业打卡:恭喜!5位同学获100元充值码
│   │   │   ├─结束语|写作有时候是一面镜子
│   │   ├─120手机摄影
│   │   │   ├─01|拍摄前,我们需要做什么?
│   │   │   ├─02|一张好照片的背后,都隐含着哪些要素?
│   │   │   ├─03|你的照片里是否有内容?
│   │   │   ├─04-除了横平竖直,照片还能怎么拍?
│   │   │   ├─05|拍照的光影有最优解吗?
│   │   │   ├─06|后期概述:工具选择与调色倾向
│   │   │   ├─07|后期调色:基础工具使用
│   │   │   ├─08|后期调色:HSL、局部
│   │   │   ├─09|建筑和场景摄影
│   │   │   ├─10|人像摄影
│   │   │   ├─11|食物摄影
│   │   │   ├─120手机摄影
│   │   │   ├─12|专业相机功能与LivePhotos的使用
│   │   │   ├─13|忘记构图规则
│   │   │   ├─14|从零到“零”:多拍与多看
│   │   │   ├─开篇词|手机拍照这件小事
│   │   │   ├─结束语|记录生活这件大事
│   │   │   └─结束语|记录生活这件大事
│   │   ├─121乔新亮的CTO成长复盘
│   │   │   ├─01-职业生涯发展规划:每五年登上一个新台阶
│   │   │   ├─02-到底该怎么理解工作与薪资的关系?
│   │   │   ├─03-看透本质:研发出了生产事故,到底要不要罚钱?
│   │   │   ├─07-管理者最重要的三个任务(一):组织调整到位
│   │   │   ├─08-管理者最重要的三个任务(二):加强组织协同效率
│   │   │   ├─09-管理者最重要的三个任务(三):激发团队活力
│   │   │   ├─10-管理的人性哲学:金刚之怒,菩萨慈悲
│   │   │   ├─11-全局思维和持续完善体系的建立,让团队持续成长
│   │   │   ├─12-管理战略上的聚焦和放弃:有舍才有得
│   │   │   ├─121乔新亮的CTO成长复盘
│   │   │   ├─13-风险管理:世界是脆弱的,持续管理风险非常重要
│   │   │   ├─14-需求做不完,应该怎么办?(初-中级管理者篇)
│   │   │   ├─15-需求做不完,应该怎么办?(高级管理者篇)
│   │   │   ├─17-架构决策,是技术管理者最重要的能力
│   │   │   ├─18-架构设计,专业分工和协作精神的体现
│   │   │   ├─19-产品思维,契约精神是基础,洞察人性才能成就卓越
│   │   │   ├─20-高可用设计,让产品没有后顾之忧
│   │   │   ├─21-高性能设计,一切都围绕着契约精神
│   │   │   ├─22-扩展性设计,看透业务的本质
│   │   │   ├─23-考虑限制,让自己的产品不入险地
│   │   │   ├─24-监控设计,让一切都有迹可循,尽在掌控
│   │   │   ├─24-监控设计,让一切都有迹可循,尽在掌控
│   │   │   ├─25-异常设计,让错误无处遁形
│   │   │   ├─26-上云设计,融合云计算的未来
│   │   │   ├─加餐(一)-大学毕业,我要不要留在一线城市互联网公司?
│   │   │   ├─加餐(一)-如何通过演讲分享,打造自己的影响力?
│   │   │   ├─加餐(三)-选择决定上限,努力决定下限
│   │   │   ├─加餐(二)-工作遇到不懂的问题:何时可以求助,如何正确提问?
│   │   │   ├─开篇词-削弱运气的价值
│   │   │   ├─结束语-做时间的朋友
│   │   │   ├─结束语-做时间的朋友
│   │   │   ├─编辑手记-我被老乔洗脑了
│   │   │   └─编辑手记-我被老乔洗脑了
│   │   ├─122物联网开发实战
│   │   │   ├─01-入门介绍:如何定义物联网?
│   │   │   ├─02-通信技术:设备接入网络的方式有哪些?
│   │   │   ├─03-网络协议:设备使用什么语言与互联网对话?
│   │   │   ├─04-数据分析:数据的价值有哪些?
│   │   │   ├─05-系统实例:怎样设计一个简易物联网系统?
│   │   │   ├─06-物模型:如何定义智能电灯?
│   │   │   ├─07-零配置组网:设备如何发现彼此?
│   │   │   ├─08-MQTT:在实践中掌握一个通信协议
│   │   │   ├─09-边缘中心:物联网网关有多重要?
│   │   │   ├─10-数据处理框架:批处理还是流处理?
│   │   │   ├─11-数据存储:物联网中的数据库有哪些?
│   │   │   ├─12-IoTHub:面对海量设备如何打造高性能设备接入层?
│   │   │   ├─122物联网开发实战
│   │   │   ├─13-隐私:在实践中如何保护用户隐私?
│   │   │   ├─14-安全:物联网平台如何应对安全风险?
│   │   │   ├─15-平台:智能家居开源平台的生态是怎样的?
│   │   │   ├─16-实战准备:如何搭建硬件开发环境?
│   │   │   ├─17-远程控制:怎样打造联网的智能电灯?
│   │   │   ├─18-场景联动:智能电灯如何感知光线?(上)
│   │   │   ├─19-场景联动:智能电灯如何感知光线?(下)
│   │   │   ├─20-智能语音:好玩的语音控制是怎么实现的?
│   │   │   ├─21-多传感器集成:浇花怎么实现自动化?
│   │   │   ├─22-掌控数据:家里的数据可以怎么利用?
│   │   │   ├─假期快乐|这是一份暂时停更的声明
│   │   │   ├─加餐一-这5本关于物联网的好书,值得一读
│   │   │   ├─加餐三-行业应用:物联网的发展将如何升级第一、第二产业?
│   │   │   ├─加餐二-行业应用:物联网的发展将如何重塑我们的生活?
│   │   │   ├─加餐五-投身物联网行业,如何做好职业规划?
│   │   │   ├─加餐四-5G技术将如何推动物联网的发展?
│   │   │   ├─实战一|嵌入式开发:如何使用C语言开发智能电灯?
│   │   │   ├─实战二|MQTT开发:如何实现联网控制?
│   │   │   ├─开篇词-物联网这个趋势,你不应该错过
│   │   │   ├─引子|RISC-V:物联网领域值得关注的芯片趋势是什么?
│   │   │   ├─用户故事-让野蛮生长成为职业发展的助推剂
│   │   │   ├─用户故事-转战物联网,我相信天道酬勤
│   │   │   ├─结束语-永远做一个具有极客精神的人
│   │   │   └─结课测试-这些物联网的问题,你都掌握了吗?
│   │   ├─123容器实战高手课
│   │   │   ├─01-认识容器:容器的基本操作和实现原理
│   │   │   ├─02-理解进程(1):为什么我在容器中不能kill1号进程?
│   │   │   ├─03|理解进程(2):为什么我的容器里有这么多僵尸进程?
│   │   │   ├─04-理解进程(3):为什么我在容器中的进程被强制杀死了?
│   │   │   ├─05|容器CPU(1):怎么限制容器的CPU使用?
│   │   │   ├─06-容器CPU(2):如何正确地拿到容器CPU的开销?
│   │   │   ├─07-LoadAverage:加了CPUCgroup限制,为什么我的容器还是很慢?
│   │   │   ├─08-容器内存:我的容器为什么被杀了?
│   │   │   ├─09-PageCache:为什么我的容器内存使用量总是在临界点
│   │   │   ├─10-Swap:容器可以使用Swap空间吗?
│   │   │   ├─11-容器文件系统:我在容器中读写文件怎么变慢了?
│   │   │   ├─11-容器文件系统:我在容器中读写文件怎么变慢了?
│   │   │   ├─12-容器文件Quota:容器为什么把宿主机的磁盘写满了?
│   │   │   ├─123容器实战高手课
│   │   │   ├─13-容器磁盘限速:我的容器里磁盘读写为什么不稳定
│   │   │   ├─14-容器中的内存与I-O:容器写文件的延时为什么波动很大?
│   │   │   ├─15-容器网络:我修改了-proc-sys-net下的参数,为什么在容器中不起效?
│   │   │   ├─15-容器网络:我修改了-proc-sys-net下的参数,为什么在容器中不起效?
│   │   │   ├─16-容器网络配置(1):容器网络不通了要怎么调试
│   │   │   ├─17|容器网络配置(2):容器网络延时要比宿主机上的高吗
│   │   │   ├─18-容器网络配置(3):容器中的网络乱序包怎么这么高?
│   │   │   ├─19-容器安全(1):我的容器真的需要privileged权限吗
│   │   │   ├─20-容器安全(2):在容器中,我不以root用户来运行程序可以吗?
│   │   │   ├─加餐01-案例分析:怎么解决海量IPVS规则带来的网络延时抖动问题?
│   │   │   ├─加餐02-理解perf:怎么用perf聚焦热点函数?
│   │   │   ├─加餐03-理解ftrace(1):怎么应用ftrace查看长延时内核函数?
│   │   │   ├─加餐04-理解ftrace(2):怎么理解ftrace背后的技术tracepoint和kprobe?
│   │   │   ├─加餐05-eBPF:怎么更加深入地查看内核中的函数?
│   │   │   ├─加餐06-BCC:入门eBPF的前端工具
│   │   │   ├─加餐福利-课后思考题答案合集
│   │   │   ├─开篇词-一个态度两个步骤,成为容器实战高手
│   │   │   ├─用户故事-莫名:相信坚持的力量,终会厚积薄发
│   │   │   ├─结束语-跳出舒适区,突破思考的惰性
│   │   │   └─结课测试|这些容器技术的问题,你都掌握了么?
│   │   ├─124实用密码学
│   │   │   ├─01-学习密码学有什么用?
│   │   │   ├─02|单向散列函数:如何保证信息完整性?
│   │   │   ├─03|如何设置合适的安全强度?
│   │   │   ├─04|选择哈希算法应该考虑哪些因素?
│   │   │   ├─05|如何有效避免长度延展攻击?
│   │   │   ├─06|对称密钥:如何保护私密数据?
│   │   │   ├─07-怎么选择对称密钥算法?
│   │   │   ├─07-怎么选择对称密钥算法?
│   │   │   ├─08-该怎么选择初始化向量?
│   │   │   ├─09-为什么ECB模式不安全?
│   │   │   ├─10-怎么防止数据重放攻击?
│   │   │   ├─11-怎么利用解密端攻击?
│   │   │   ├─12-怎么利用加密端攻击?
│   │   │   ├─124实用密码学
│   │   │   ├─13-如何防止数据被调包?
│   │   │   ├─14-加密数据能够自我验证吗?
│   │   │   ├─15-AEAD有哪些安全陷阱?
│   │   │   ├─16-为什么说随机数都是骗人的?
│   │   │   ├─17-加密密钥是怎么来的?
│   │   │   ├─18-如何管理对称密钥?
│   │   │   ├─19-量子时代,你准备好了吗?
│   │   │   ├─20-综合案例:如何解决约会难题?
│   │   │   ├─加餐-密码学,心底的冷暖
│   │   │   ├─开篇词-人人都要会点密码学
│   │   │   ├─结束语-深挖坑、广积粮
│   │   │   ├─结束语-深挖坑、广积粮
│   │   │   └─结课测试-这些密码学的知识,你都掌握了吗?
│   │   ├─125大厂晋升指南
│   │   │   ├─01-职级体系:你意识到级别鸿沟了吗?
│   │   │   ├─02|晋升流程:你需要通过多少“关卡”才能晋升?
│   │   │   ├─03-晋升原则:什么样的人更容易晋升?
│   │   │   ├─04-晋升逻辑:别人怎么判断你有没有达到晋升要求?
│   │   │   ├─05-COMD能力模型:怎么把抽象的能力要求具体化?
│   │   │   ├─06-职级档次:你现在应该具备的核心能力是什么?
│   │   │   ├─07-P5提升攻略:怎么快速从学生转变为“打工人”?
│   │   │   ├─08-P6提升攻略:怎么成为独立自主的“项目能手”?
│   │   │   ├─09-P7提升攻略:怎么成为让人信服的“团队专家”?
│   │   │   ├─10-P8提升攻略:怎么成为有影响力的“领域专家”?
│   │   │   ├─11-P9提升攻略:怎么成为跨域整合的“业务导演”?
│   │   │   ├─12-PPT框架:标准的晋升PPT长什么样子?
│   │   │   ├─125大厂晋升指南
│   │   │   ├─13-PPT写作:怎么写才能展现自己真正的实力?
│   │   │   ├─14-PPT讲解:怎么讲才能让评委印象深刻?
│   │   │   ├─15-答辩技巧:回答评委提问有哪些技巧?
│   │   │   ├─16-导学:你应该掌握哪些学习方法?
│   │   │   ├─17-海绵学习法:怎么找到你的10000小时?
│   │   │   ├─18-三段分解法:怎么利用10000小时成为大牛?
│   │   │   ├─19-链式&比较&环式学习法:怎么多维度提升技术能力?
│   │   │   ├─20-Play&Teach:怎么摆脱“从入门到忘记”的学习困境?
│   │   │   ├─21-导学:你应该掌握哪些做事方法?
│   │   │   ├─22-OKR的优势:为什么要用OKR来取代KPI做团队规划?
│   │   │   ├─23-OKR规划法:TeamLeader怎么做团队规划?
│   │   │   ├─24-3C方案设计法:怎么让你的方案有理有据?
│   │   │   ├─25-PDCA执行法:怎么推动落地才能“步步为赢”?
│   │   │   ├─26-5W根因分析法:怎么找准问题源头才能治标又治本?
│   │   │   ├─27-5S问题处理法:怎么应对问题才能转危为机?
│   │   │   ├─27-5S问题处理法:怎么应对问题才能转危为机?
│   │   │   ├─28-4D总结法:怎么展示你的工作亮点?
│   │   │   ├─29-金字塔汇报法:怎么汇报才能让领导认可你的成果?
│   │   │   ├─30-四线复盘法:怎么避免成为背锅侠?
│   │   │   ├─31-导学:为什么业务和管理是晋升高级别的基石?
│   │   │   ├─32-5W1H8C1D分析法:P5-P6怎么理解业务功能?
│   │   │   ├─33-AARRR漏斗模型:P7-P8怎么掌握业务领域?
│   │   │   ├─34-宝洁战略模型:P8+-P9怎么看懂业务战略?
│   │   │   ├─35-管理四象限:小白要怎么快速入门带团队?
│   │   │   ├─36-管理五模式:高手常用的管理模式有哪些?
│   │   │   ├─加餐一-晋升等级:不同的职级体系如何对标?
│   │   │   ├─加餐三-10000小时定律:成为大牛的秘密是什么?
│   │   │   ├─加餐三-10000小时定律:成为大牛的秘密是什么?
│   │   │   ├─加餐二-提名词:怎么夸自己才最加分?
│   │   │   ├─加餐五-《大厂晋升指南》推荐书单
│   │   │   ├─加餐四-学习基础技术:你对“基础”的理解准确吗?
│   │   │   ├─开篇词-重新理解晋升
│   │   │   ├─放学别走-如何画好领域分层图?
│   │   │   ├─结束语-晋升也是一种修行
│   │   │   └─结课测试题|这些晋升的知识,你都掌握了吗?
│   │   ├─126A-B测试从0到1
│   │   │   ├─01-统计基础(上):系统掌握指标的统计属性
│   │   │   ├─02|统计基础(下):深入理解A-B测试中的假设检验
│   │   │   ├─03|确定目标和假设:好的目标和假设是什么?
│   │   │   ├─04|确定指标:指标这么多,到底如何来选择?
│   │   │   ├─04|确定指标:指标这么多,到底如何来选择?
│   │   │   ├─05|选取实验单位:什么样的实验单位是合适的?
│   │   │   ├─06-选择实验样本量:样本量越多越好吗?
│   │   │   ├─07|分析测试结果:你得到的测试结果真的靠谱吗?
│   │   │   ├─08-案例串讲:从0开始,搭建一个规范的A-B测试框架
│   │   │   ├─09|测试结果不显著,要怎么改善?
│   │   │   ├─10|常见误区及解决方法(上):多重检验问题和学习效应
│   │   │   ├─11-常见误区及解决方法(下):辛普森悖论和实验组-对照组的独立性
│   │   │   ├─126A-B测试从0到1
│   │   │   ├─12|什么情况下不适合做A-B测试?
│   │   │   ├─13|融会贯通:A-B测试面试必知必会(上)
│   │   │   ├─14|举一反三:A-B测试面试必知必会(下)
│   │   │   ├─15|用R-Shiny,教你制作一个样本量计算器
│   │   │   ├─加餐|试验意识改变决策模式,推动业务增长
│   │   │   ├─导读-科学、规范的A-B测试流程,是什么样的?
│   │   │   ├─开篇词|用好A-B测试,你得这么学
│   │   │   ├─结束语|实践是检验真理的唯一标准
│   │   │   └─结课测试题|这些A-B测试的知识你都掌握了吗?
│   │   ├─127成为AI产品经理
│   │   │   ├─01-行业视角:产品经理眼中的人工智能
│   │   │   ├─02-个人视角:成为AI产品经理,要先搞定这两个问题
│   │   │   ├─03-技术视角:AI产品经理需要懂的技术全景图
│   │   │   ├─03-技术视角:AI产品经理需要懂的技术全景图
│   │   │   ├─04-过来人讲:成为AI产品经理的两条路径
│   │   │   ├─05-通过一个AI产品的落地,掌握产品经理工作全流程
│   │   │   ├─06-AI模型的构建过程是怎样的?(上)
│   │   │   ├─07-AI模型的构建过程是怎样的(下)
│   │   │   ├─08-算法全景图:AI产品经理必须要懂的算法有哪些?
│   │   │   ├─09-K近邻算法:机器学习入门必学算法
│   │   │   ├─10-线性回归:教你预测,投放多少广告带来的收益最大
│   │   │   ├─11-逻辑回归:如何预测用户是否会购买商品?
│   │   │   ├─12-朴素贝叶斯:让AI告诉你,航班延误险该不该买?
│   │   │   ├─12-朴素贝叶斯:让AI告诉你,航班延误险该不该买?
│   │   │   ├─127成为AI产品经理
│   │   │   ├─13-决策树与随机森林:如何预测用户会不会违约?
│   │   │   ├─14-支持向量机:怎么预测股票市场的涨与跌?
│   │   │   ├─15-K-means聚类算法:如何挖掘高价值用户?
│   │   │   ├─16-深度学习:当今最火的机器学习技术,你一定要知道
│   │   │   ├─17-模型评估:从一个失控的项目看优秀的产品经理如何评估AI模型?
│   │   │   ├─18-核心技能:产品经理评估模型需要关注哪些指标?
│   │   │   ├─19-模型性能评估(一):从信用评分产品看什么是混淆矩阵?
│   │   │   ├─20-模型性能评估(二):从信用评分产品看什么是KS、AUC?
│   │   │   ├─21-模型性能评估(三):从股价预测产品看回归算法常用的评估指标
│   │   │   ├─22-模型稳定性评估:如何用PSI来评估信用评分产品的稳定性?
│   │   │   ├─23-模型监控:产品经理如何建设算法模型监控指标体系?
│   │   │   ├─23-模型监控:产品经理如何建设算法模型监控指标体系?
│   │   │   ├─24-推荐类产品(一):推荐系统产品经理的工作职责与必备技能
│   │   │   ├─25-推荐类产品(二):从0打造电商个性化推荐系统产品
│   │   │   ├─26-预测类产品(一):用户复购意向预测的底层逻辑是什么?
│   │   │   ├─27-预测类产品(二):从0打造一款预测用户复购意向的产品
│   │   │   ├─28-预测类产品(三):从0打造一款“大白信用评分产品”
│   │   │   ├─29-自然语言处理产品:从0打造一款智能客服产品
│   │   │   ├─29-自然语言处理产品:从0打造一款智能客服产品
│   │   │   ├─30-AI产品经理,你该如何提升自己的价值?
│   │   │   ├─31-AI产品经理面试,这些问题你必须会答!
│   │   │   ├─开篇词-你好,产品经理!你的未来价值壁垒在哪儿?
│   │   │   ├─春节加餐1-用户增长模型:怎么利用AI技术判断新渠道性价比?
│   │   │   ├─春节加餐2-一次答疑,带你回顾模型评估的所有基础概念
│   │   │   ├─期中周测试题,你做对了吗?
│   │   │   ├─期中答疑-AI产品经理热门问题答疑合集
│   │   │   ├─期末考试-“AI产品经理”100分试卷等你来挑战!
│   │   │   ├─结束语-唯一不变的,就是变化本身!
│   │   │   └─结束语-唯一不变的,就是变化本身!
│   │   ├─128分布式金融架构课
│   │   │   ├─01-业务初探:扫了二维码之后发生了什么?
│   │   │   ├─02-原理解读:如何理解第三方支付的业务逻辑和系统组件?
│   │   │   ├─03-产品大观:不同金融业务都有哪些技术实现要点?
│   │   │   ├─04-领域驱动设计(上):如何设计金融软件顶层架构?
│   │   │   ├─05-领域驱动设计(下):如何设计统一的金融业务模型?
│   │   │   ├─06-计算输入的正确性:怎么选择正确时间的数据?
│   │   │   ├─07-计算过程的正确性:如何设计正确的数据处理架构?
│   │   │   ├─08-计算结果的正确性:怎么保证计算结果是正确的?
│   │   │   ├─09-数据传输的质量:金融业务对数据传输有什么要求?
│   │   │   ├─10-数据存储的合理性:金融业务可以不用关系型数据库吗?
│   │   │   ├─11-系统优化:如何让金融系统运行得更快?
│   │   │   ├─12-正确性分级(上):单机无备份有哪几种不同的一致性?
│   │   │   ├─128分布式金融架构课
│   │   │   ├─13-正确性分级(中):多机无容灾有哪几种不同的一致性实现?
│   │   │   ├─14-正确性分级(下):多机有容灾有哪几种不同的一致性?
│   │   │   ├─15-分布式正确性的存在性(上):什么情况下不存在分布式共识算法?
│   │   │   ├─16-分布式一致性(下):怎么理解最简单的分布式一致性算法?
│   │   │   ├─17-正确性案例(上):如何实现分布式的事件溯源架构?
│   │   │   ├─18-正确性案例(中):常见分布式数据方案的设计原理是什么?
│   │   │   ├─19-正确性案例(下):如何在运行时进行数据系统的动态分库?
│   │   │   ├─20-容灾(上)如何实现正确的跨机房实时容灾?
│   │   │   ├─21-容灾(下):如何通过混沌工程提高系统稳定性?
│   │   │   ├─开篇词-如何成为金融级人才?
│   │   │   ├─春节策划第1期-分布式金融系统知识,你掌握了多少?
│   │   │   ├─春节策划第2期-读书如抽丝,为你推荐一些我读过的好书
│   │   │   ├─春节策划第3期-如何运用架构知识解读春运买票和手游案例?
│   │   │   ├─答疑集锦(一)-思考题解析与外汇架构知识拓展
│   │   │   ├─答疑集锦(三)-思考题解析与数据库底层实现
│   │   │   ├─答疑集锦(二)-思考题解析与账务系统优化
│   │   │   ├─结束语-金融之道,与你同行,虽远尤欣
│   │   │   └─结课测试|这些金融架构的问题,你都掌握了么?
│   │   ├─129代码之丑
│   │   │   ├─01-缺乏业务含义的命名:如何精准命名?
│   │   │   ├─02-乱用英语:站在中国人的视角来看英文命名
│   │   │   ├─03-重复代码:简单需求到处修改,怎么办?
│   │   │   ├─04-长函数:为什么你总是不可避免地写出长函数?
│   │   │   ├─05-大类:如何避免写出难以理解的大类?
│   │   │   ├─06-长参数列表:如何处理不同类型的长参数?
│   │   │   ├─07-滥用控制语句:出现控制结构,多半是错误的提示
│   │   │   ├─08-缺乏封装:如何应对火车代码和基本类型偏执问题?
│   │   │   ├─09-可变的数据:不要让你的代码“失控”
│   │   │   ├─10-变量声明与赋值分离:普通的变量声明,怎么也有坏味道?
│   │   │   ├─11-依赖混乱:你可能还没发现问题,代码就已经无法挽救了
│   │   │   ├─12-不一致的代码:为什么你的代码总被吐槽难懂?
│   │   │   ├─129代码之丑
│   │   │   ├─13-落后的代码风格:使用“新”的语言特性和程序库升级你的代码
│   │   │   ├─13-落后的代码风格:使用“新”的语言特性和程序库升级你的代码
│   │   │   ├─14-多久进行一次代码评审最合适?
│   │   │   ├─15-新需求破坏了代码,怎么办?
│   │   │   ├─16-熊节:什么代码应该被重构?
│   │   │   ├─17-课前作业点评:发现“你”代码里的坏味道
│   │   │   ├─开篇词-这一次,我们从“丑”代码出发
│   │   │   ├─结束语-写代码是一件可以一生精进的事
│   │   │   ├─结课测试|这些代码坏味道的知识你都掌握了吗?
│   │   │   ├─课前热身-这些需求给到你,你会怎么写代码?
│   │   │   └─课前热身-这些需求给到你,你会怎么写代码?
│   │   ├─130体验设计案例课
│   │   │   ├─01-当别人说产品体验不好的时候,他在说什么?
│   │   │   ├─02-交互设计师可以被产品经理替代吗?
│   │   │   ├─03-你画像中的用户是真的还是假的?
│   │   │   ├─04-为什么你的竞品分析看起来像拼接抄袭?
│   │   │   ├─05-你会巧妙利用数据这个神助攻吗?
│   │   │   ├─06-如何给你的体验地图加一个设计导航?
│   │   │   ├─07-如何让你的设计更有温度?
│   │   │   ├─08-怎样搞定一场用户可用性测试?
│   │   │   ├─09-为什么你的设计方案总是通不过?
│   │   │   ├─09-为什么你的设计方案总是通不过?
│   │   │   ├─10-B端设计师如何真正地接近你的用户?
│   │   │   ├─11-设计师的能力水平可以量化吗?
│   │   │   ├─12-如何用量化手段判断需求的优先级?
│   │   │   ├─13-设计量化会把创意扼杀在摇篮里吗?
│   │   │   ├─130体验设计案例课
│   │   │   ├─14-如何用量化的方式讲清设计价值?
│   │   │   ├─15-如何建立设计方案的验证模型?
│   │   │   ├─16-产品体验的评估也可以量化吗?
│   │   │   ├─17-如何轻松应对不同产品阶段的设计量化?
│   │   │   ├─18-怎样用量化的方式帮助设计成长?
│   │   │   ├─19-什么样的设计流程是最高效的?
│   │   │   ├─20-怎样利用设计中台让设计师不加班?
│   │   │   ├─21-如何打破设计师的成长天花板?
│   │   │   ├─21-如何打破设计师的成长天花板?
│   │   │   ├─22-体验设计如何从基础学科中借力?
│   │   │   ├─23-精力管理:你知道设计师的7-2-1黄金比例吗?
│   │   │   ├─24-设计总监到底还要不要画图?
│   │   │   ├─25-想进BAT等大厂,你要做好哪些准备?
│   │   │   ├─加餐-大厂的围城:你想进去,我想逃离
│   │   │   ├─开篇词-不解决实际问题的体验设计都是耍流氓
│   │   │   ├─春节加餐1-炒炒的2020:成长是不变的课题
│   │   │   ├─春节加餐2-用户故事:设计也要学以致用
│   │   │   ├─春节加餐3-书单分享:阅读是一种人生的体验
│   │   │   ├─结束语-你我共同成长,早日财富自由
│   │   │   ├─结束语-你我共同成长,早日财富自由
│   │   │   └─这些用户体验设计的知识你都掌握了吗?
│   │   ├─131手把手教你玩音乐
│   │   │   ├─01|基本操作:5分钟制作一段专属手机铃声
│   │   │   ├─02|吉他&贝斯:跳过枯燥的乐器练习,让你成为吉他手
│   │   │   ├─03|键盘:那么多炫酷的电子音色都是怎么做出来的?
│   │   │   ├─04|弦乐&民乐:你以为很土,其实很酷
│   │   │   ├─05|鼓:流行音乐里最重要的声部
│   │   │   ├─06|和弦条与弹唱:你这么多年的生日歌可能都没唱对
│   │   │   ├─07|学MIDI,像打字一样快速记录灵感
│   │   │   ├─08-实时循环乐段(上),像拼乐高一样做音乐
│   │   │   ├─09-实时循环乐段(下),一节课让你变身DJ
│   │   │   ├─10-百万混音师是怎样炼成的?帮你迈出第一步
│   │   │   ├─11|技巧混搭,让你的创意快速实现
│   │   │   ├─12-外接设备,把你的库乐队变成移动录音棚
│   │   │   ├─12-外接设备,把你的库乐队变成移动录音棚
│   │   │   ├─13-功能串联:从无到有,做出你人生的第一首歌
│   │   │   ├─131手把手教你玩音乐
│   │   │   ├─14-乐队:2台iPhone就能实现乐队表演?
│   │   │   ├─开篇词|听了那么多首歌,不如来动手“玩”音乐
│   │   │   ├─用户故事1|不止学会了库乐队,还拓展了舒适边界
│   │   │   ├─用户故事1|不止学会了库乐队,还拓展了舒适边界
│   │   │   ├─用户故事2|在库乐队中,你就是最好的架构师
│   │   │   ├─知识拓展1|十九个乐理名词解释,让你把音乐玩得更开心
│   │   │   ├─知识拓展2|八个问题,解答你学习中遇到的疑惑
│   │   │   ├─结束语|让音乐陪伴你的生活
│   │   │   ├─结课测试题|这些相关音乐知识你都掌握了吗?
│   │   │   ├─编辑手记|音乐让生活更好玩儿
│   │   │   └─编辑手记|音乐让生活更好玩儿
│   │   ├─132etcd实战课
│   │   │   ├─01-etcd的前世今生:为什么Kubernetes使用etcd?
│   │   │   ├─02-基础架构:etcd一个读请求是如何执行的?
│   │   │   ├─03-基础架构:etcd一个写请求是如何执行的?
│   │   │   ├─04-Raft协议:etcd如何实现高可用、数据强一致的?
│   │   │   ├─05-鉴权:如何保护你的数据安全?
│   │   │   ├─06-租约:如何检测你的客户端存活?
│   │   │   ├─07-MVCC:如何实现多版本并发控制?
│   │   │   ├─08-Watch:如何高效获取数据变化通知?
│   │   │   ├─09-事务:如何安全地实现多key操作?
│   │   │   ├─10-boltdb:如何持久化存储你的key-value数据?
│   │   │   ├─11-压缩:如何回收旧版本数据?
│   │   │   ├─12-一致性:为什么基于Raft实现的etcd还会出现数据不一致?
│   │   │   ├─13-db大小:为什么etcd社区建议db大小不超过8G?
│   │   │   ├─132etcd实战课
│   │   │   ├─14-延时:为什么你的etcd请求会出现超时?
│   │   │   ├─15-内存:为什么你的etcd内存占用那么高?
│   │   │   ├─16-性能及稳定性(上):如何优化及扩展etcd性能?
│   │   │   ├─17-性能及稳定性(下):如何优化及扩展etcd性能
│   │   │   ├─18-实战:如何基于Raft从0到1构建一个支持多存储引擎分布式KV服务?
│   │   │   ├─19-Kubernetes基础应用:创建一个Pod背后etcd发生了什么?
│   │   │   ├─20-Kubernetes高级应用:如何优化业务场景使etcd能支撑上万节点集群?
│   │   │   ├─21-分布式锁:为什么基于etcd实现分布式锁比Redis锁更安全?
│   │   │   ├─22-配置及服务发现:解析etcd在APIGateway开源项目中应用
│   │   │   ├─23-选型:etcd-ZooKeeper-Consul等我们该如何选择?
│   │   │   ├─23-选型:etcd-ZooKeeper-Consul等我们该如何选择?
│   │   │   ├─24-运维:如何构建高可靠的etcd集群运维体系?
│   │   │   ├─开篇词|为什么你要学习etcd
│   │   │   ├─特别放送-成员变更:为什么集群看起来正常,移除节点却会失败呢?
│   │   │   ├─结束语-搞懂etcd,掌握通往分布式存储系统之门的钥匙
│   │   │   └─结课测试题|这些相关etcd知识你都掌握了吗?
│   │   ├─133恋爱必修课
│   │   │   ├─01|是终点也是起点:你的恋爱目标是什么?
│   │   │   ├─02-拒绝焦虑状态:TA到底爱我吗?
│   │   │   ├─03|冒犯有时是必要的:如何开启一段亲密关系?
│   │   │   ├─04-亲密关系的本质是分享:如何把握暧昧的窗口期?
│   │   │   ├─05-创造型与消费型活动:两个人在一起没事干怎么办?
│   │   │   ├─06-小心看上去平平无奇的陷阱:如何防范高级渣?
│   │   │   ├─07-无法回避的现实问题:“亲对象”也要明算账?
│   │   │   ├─08-七年未必痒:如何营造亲密关系的新鲜感?
│   │   │   ├─09-相亲与恋爱套路不一样:相亲有哪些需要注意的?
│   │   │   ├─10-恋爱成功不是只有结婚一条路:分手是我错了吗?
│   │   │   ├─11-独身主义也不赖:选择不结婚究竟是选择了什么?
│   │   │   ├─12-姐弟恋也很可爱:姐弟恋有什么好处和注意事项?
│   │   │   ├─12-姐弟恋也很可爱:姐弟恋有什么好处和注意事项?
│   │   │   ├─13-千古难题真难办:如何跨越家庭背景的差异?
│   │   │   ├─133恋爱必修课
│   │   │   ├─开篇词-爱与被爱,是人一生最值得学习的能力
│   │   │   ├─开篇词-爱与被爱,是人一生最值得学习的能力
│   │   │   ├─春节加餐1-公主,快放开那只巨龙!
│   │   │   ├─春节加餐2-恋爱课答疑集锦:人潮之中彼此相视而窃喜
│   │   │   ├─春节加餐3-恋爱课直播集锦:恋爱这件小事儿
│   │   │   ├─结束语-但行好事,莫问前程
│   │   │   └─结束语-但行好事,莫问前程
│   │   ├─134跟着高手学复盘
│   │   │   ├─01-CLAP模型:一个优秀的复盘模型是什么样的?
│   │   │   ├─02-OPTM框架:怎么使用CLAP模型?
│   │   │   ├─03-教练技术:怎么做复盘才能化解冲突?
│   │   │   ├─04-制度和文化:怎么营造复盘环境?
│   │   │   ├─05-三角法:怎么组建复盘团队?
│   │   │   ├─06-MECE原则:怎么准备复盘资料?
│   │   │   ├─07-五步法:如何召开一次高效的复盘会议?
│   │   │   ├─08-事实比较:如何快速比较目标与结果?
│   │   │   ├─09-分析原因:梳理逻辑时怎样找到切入点?
│   │   │   ├─10-洞察规律:怎样更新认知才能找准发力点?
│   │   │   ├─11-OKR:怎样根据复盘结论制定计划?
│   │   │   ├─12-DoubleCheck:怎么检查评估一次复盘的效果?
│   │   │   ├─13-案例导学:我是怎么帮助企业做复盘的?
│   │   │   ├─13-案例导学:我是怎么帮助企业做复盘的?
│   │   │   ├─134跟着高手学复盘
│   │   │   ├─14-战略升级:5年增长100倍的跨境电商做对了什么?
│   │   │   ├─15-业务关键点:改进一个点业绩增长50%?
│   │   │   ├─16-组织结构设计:变动一个职位,就能带来100万-月的增量吗?
│   │   │   ├─17-高效赋能:怎么建立流程才能把人效提升3倍?
│   │   │   ├─18-人才培养:怎么把人才转化成实际生产力?
│   │   │   ├─19-预算制定:人头和财务预算到底怎么定?
│   │   │   ├─19-预算制定:人头和财务预算到底怎么定?
│   │   │   ├─开篇词-为什么每个人都应该学会复盘?
│   │   │   ├─春节荐书(一)-《原则》:在不确定中找到确定
│   │   │   ├─春节荐书(二)-《人类简史》:故事的力量
│   │   │   ├─春节荐书(二)-《人类简史》:故事的力量
│   │   │   ├─结束语-复盘,见天地见众生见自己
│   │   │   └─结课测试题|这些关于复盘的知识你都掌握了吗?
│   │   ├─135Python自动化办公实战课
│   │   │   ├─01-拆分与合并:如何快速地批量处理内容相似的Excel?
│   │   │   ├─02|善用Python扩展库:如何批量合并多个文档?
│   │   │   ├─03|图片转文字:如何提高识别准确率?
│   │   │   ├─04-函数与字典:如何实现多次替换
│   │   │   ├─05-图像处理库:如何实现长图拼接?
│   │   │   ├─06-jieba分词:如何基于感情色彩进行单词数量统计?
│   │   │   ├─07|快速读写文件:如何实现跨文件的字数统计?
│   │   │   ├─08|正则表达式:如何提高搜索内容的精确度?
│   │   │   ├─09|扩展搜索:如何快速找到想要的文件?
│   │   │   ├─10|按指定顺序给词语排序,提高查找效率
│   │   │   ├─11|通过程序并行计算,避免CPU资源浪费
│   │   │   ├─12|文本处理函数:三招解决数据对齐问题
│   │   │   ├─135Python自动化办公实战课
│   │   │   ├─13|Excel插件:如何扩展Excel的基本功能?
│   │   │   ├─14|VBA脚本编程:如何扩展Excel,实现文件的批量打印?
│   │   │   ├─15|PowerShell脚本:如何实现文件批量处理的自动化?
│   │   │   ├─16|循环与文件目录管理:如何实现文件的批量重命名?
│   │   │   ├─17|不同操作系统下,如何通过网络同步文件?
│   │   │   ├─18|http库:如何批量下载在线内容,解放鼠标(上)?
│   │   │   ├─19|http库:如何批量下载在线内容,解放鼠标(下)?
│   │   │   ├─19|http库:如何批量下载在线内容,解放鼠标(下)?
│   │   │   ├─20|不同文件混在一起,怎么快速分类?
│   │   │   ├─21|SQLite文本数据库:如何进行数据管理(上)?
│   │   │   ├─22|SQLite文本数据库:如何进行数据管理(下)?
│   │   │   ├─23|怎么用数据透视表更直观地展示汇报成果?
│   │   │   ├─24|条形、饼状、柱状图最适合用在什么场景下?
│   │   │   ├─25|图表库:想要生成动态图表,用Echarts就够了
│   │   │   ├─26|快速提取图片中的色块,模仿一张大师的照片
│   │   │   ├─27|zipfile压缩库:如何给数据压缩&加密备份?
│   │   │   ├─28|Celery库:让计算机定时执行任务,解放人力
│   │   │   ├─29|网络和邮件库:定时收发邮件,减少手动操作
│   │   │   ├─30|怎么快速把任意文件格式转成PDF,并批量加水印?
│   │   │   ├─导读|入门Python的必备知识
│   │   │   ├─开篇词-重复工作这么多,怎样才能提高工作效率?
│   │   │   ├─春节特别放送1|实体水果店转线上销售的数据统计问题
│   │   │   ├─春节特别放送2|用自顶至底的思路解决数据统计问题
│   │   │   ├─春节特别放送3|揭晓项目作业的答案
│   │   │   ├─结束语|和我一起成为10X效率职场人
│   │   │   ├─结课测试题|这些Python自动化办公的知识你都掌握了吗?
│   │   │   └─结课测试题|这些Python自动化办公的知识你都掌握了吗?
│   │   ├─136基于人因的用户体验设计课
│   │   │   ├─01-什么是用户体验设计?
│   │   │   ├─02-怎样做到为用户而设计?
│   │   │   ├─03-重新认识感觉:眼见不一定为实
│   │   │   ├─03-重新认识感觉:眼见不一定为实
│   │   │   ├─04-重新认识视觉(上):色彩有重量吗?
│   │   │   ├─05-重新认识视觉(中):构图的力量
│   │   │   ├─06-重新认识视觉(下):为何橱窗越空价格越贵?
│   │   │   ├─07-重新认识听觉:你的自然音效是否足够自然?
│   │   │   ├─08-重新认识触觉:为什么苹果放弃了3DTouch?
│   │   │   ├─08-重新认识触觉:为什么苹果放弃了3DTouch?
│   │   │   ├─09-视听触的协同性:从人感知世界的时间延迟去理解协同
│   │   │   ├─10-重新认识记忆和注意力:你的记性比你想象中的还要糟糕
│   │   │   ├─11-重新认识情感:愉悦性设计
│   │   │   ├─12-理解心流:如何达到专注的沉浸体验?
│   │   │   ├─13-认识人的思维缺陷:不理性的我们
│   │   │   ├─136基于人因的用户体验设计课
│   │   │   ├─14-理解触屏交互:方寸触屏大乾坤
│   │   │   ├─15-理解语音交互:手机和你聊天的正确姿势
│   │   │   ├─16-隐私与个性化:不要骗我
│   │   │   ├─17|人的社会属性:购物节背后的玄机
│   │   │   ├─18-本地和全球化:你的偏好恰恰是他的禁忌
│   │   │   ├─19|无障碍设计:人性之光
│   │   │   ├─20|基于人因的动效设计:动效背后的物理认知
│   │   │   ├─21|基于人因的美学设计:数学与心理学之美
│   │   │   ├─22|正确运用智能交互:谁才是主人?
│   │   │   ├─23|智能汽车交互:安全为王
│   │   │   ├─24|新手机形态对触屏交互影响:折叠屏的创新体验
│   │   │   ├─25|语言学在设计中运用:命名也有心理学
│   │   │   ├─26|深色模式设计:深色也能有层次感
│   │   │   ├─27|多模态交互:替代触屏的交互新可能?
│   │   │   ├─28|空间交互:虚幻与现实
│   │   │   ├─29|普适计算交互:如何和海量的设备进行交互?
│   │   │   ├─开篇词-你为什么要学人因学?
│   │   │   ├─期末测试|来赴一场满分之约!
│   │   │   ├─用户故事|CC:了解自己,了解用户
│   │   │   ├─用户故事|JT:设计为生活赋能
│   │   │   ├─结束语|重新认识你自己
│   │   │   └─结束语|重新认识你自己
│   │   ├─137打造爆款短视频
│   │   │   ├─01-爆款短视频的底层逻辑:用心拍的短视频为啥没人看?
│   │   │   ├─02-爆款短视频的底层逻辑:如何轻松打造自我特色?
│   │   │   ├─03-精益创业法:如何快速跨过从0到1这道坎?
│   │   │   ├─04-SWOT法:这么明显的个人优势你为啥就是看不到?
│   │   │   ├─04-SWOT法:这么明显的个人优势你为啥就是看不到?
│   │   │   ├─05-效用函数法:如何用量化的方式进行高效创作?
│   │   │   ├─06-二次创新实验法:如何打造个人的差异化定位?
│   │   │   ├─07-平台定位:如何选择最适合自己的创作平台?
│   │   │   ├─08-如何快速找到各大短视频平台的正确切入点?
│   │   │   ├─09-选题(上):如何利用思考清单找到合适选题?
│   │   │   ├─10-选题(下):如何为不同的内容定制合适选题?
│   │   │   ├─11-优劣分析法:如何快速筛选适合创作的视频素材?
│   │   │   ├─12-标题(上):如何利用微创新巧妙找到爆款标题?
│   │   │   ├─13-标题(下):如何用对号入座的方式抓住标题亮点?
│   │   │   ├─137打造爆款短视频
│   │   │   ├─14-视频封面(上):如何快速抓住用户注意力?
│   │   │   ├─15-视频封面(下):如何传递最有价值的信息?
│   │   │   ├─16-视频剪辑:如何轻松掌握视频化剪辑的三大公式?
│   │   │   ├─17-效果反馈法:剪辑很容易,为什么你却一直学不会?
│   │   │   ├─18-剪辑对比(上):如何避开常见的短视频剪辑陷阱?
│   │   │   ├─19-剪辑对比(下):如何利用剪辑技巧提升视频质量?
│   │   │   ├─20-拉片法:用电影创作的方式学习爆款短视频运营技巧
│   │   │   ├─21-用户留存率:为什么粉丝很多但忠实拥趸却很少?
│   │   │   ├─22-点赞率(上):如何有效提升短视频的点赞量?
│   │   │   ├─23-点赞率(下):三种方法轻松提升用户对内容的认可度
│   │   │   ├─24-上瘾机制:为什么视频观看量很高却没人留言?
│   │   │   ├─25-避坑指南:为什么很多短视频账号中途做不下去了?
│   │   │   ├─26-如何找到适合自己的短视频变现模式?
│   │   │   ├─27-多元化变现:如何明确不同创作阶段的变现任务?
│   │   │   ├─28-多内容变现:不同内容的主打变现模式是什么?
│   │   │   ├─开篇词-短视频时代下,怎么把握好变现风口?(1)
│   │   │   ├─开篇词-短视频时代下,怎么把握好变现风口?
│   │   │   ├─结束语-一切成大事者,都是终身学习者
│   │   │   ├─结课测试-一套习题,测出你的掌握程度
│   │   ├─138MySQL必知必会
│   │   │   ├─01-存储:一个完整的数据存储过程是怎样的?
│   │   │   ├─02-字段:这么多字段类型,该怎么定义?
│   │   │   ├─02-字段:这么多字段类型,该怎么定义?
│   │   │   ├─03-表:怎么创建和修改数据表?
│   │   │   ├─04-增删改查:如何操作表中的数据?
│   │   │   ├─05-主键:如何正确设置主键?
│   │   │   ├─06-外键和连接:如何做关联查询?
│   │   │   ├─07-条件语句:WHERE与HAVING有什么不同
│   │   │   ├─08-聚合函数:怎么高效地进行分组统计?
│   │   │   ├─09-时间函数:时间类数据,MySQL是怎么处理的?
│   │   │   ├─10-如何进行数学计算、字符串处理和条件判断?
│   │   │   ├─11-索引:怎么提高查询的速度?
│   │   │   ├─12-事务:怎么确保关联操作正确执行?
│   │   │   ├─13-临时表:复杂查询,如何保存中间结果?
│   │   │   ├─138MySQL必知必会
│   │   │   ├─14-视图:如何简化查询?
│   │   │   ├─15-存储过程:如何提高程序的性能和安全性?
│   │   │   ├─16-游标:对于数据集中的记录,该怎么逐条处理?
│   │   │   ├─17-触发器:如何让数据修改自动触发关联操作,确保数据一致性?
│   │   │   ├─18-权限管理:如何控制数据库访问,消除安全隐患?
│   │   │   ├─19-日志(上):系统出现问题,如何及时发现?
│   │   │   ├─20-日志(下):系统故障,如何恢复数据?
│   │   │   ├─21-数据备份:异常情况下,如何确保数据安全?
│   │   │   ├─22-范式:如何消除冗余,实现高效存取?
│   │   │   ├─23-ER模型:如何理清数据库设计思路?
│   │   │   ├─24-查询有点慢,语句该如何写?
│   │   │   ├─25-表太大了,如何设计才能提高性能?
│   │   │   ├─26-如何充分利用系统资源?
│   │   │   ├─27-手把手带你设计一个完整的连锁超市信息系统数据库(上)
│   │   │   ├─28-手把手带你设计一个完整的连锁超市信息系统数据库(下)
│   │   │   ├─开篇词-在实战中学习,是解锁MySQL技能的最佳方法
│   │   │   ├─期末测试-一套习题,测出你的掌握程度
│   │   │   ├─特别发送(一)-经典面试题讲解第一弹
│   │   │   ├─特别发送(一)-经典面试题讲解第一弹
│   │   │   ├─特别放送(三)-MySQL8都有哪些新特征?
│   │   │   ├─特别放送(二)-经典面试题讲解第二弹
│   │   │   ├─特别放送(四)-位置信息:如何进行空间定位?
│   │   │   ├─环境准备-带你安装MySQL和图形化管理工具Workbench
│   │   │   ├─结束语-不盲从于群体思维,走一条适合自己的路
│   │   │   └─结束语-不盲从于群体思维,走一条适合自己的路
│   │   ├─139流程型组织15讲
│   │   │   ├─01-拥抱客户还是老板?老板导向型组织的弊端
│   │   │   ├─02-打破企业两大根本问题,聚焦客户价值创造
│   │   │   ├─03-颠覆传统流程定义,真正实现以流程创造价值
│   │   │   ├─04-实现以客户为中心的核心,用流程重新定义职位
│   │   │   ├─05-流程变革实战案例一:研发流程的重整要点
│   │   │   ├─06-流程变革实战案例二:销售流程的重整要点
│   │   │   ├─07-流程变革实战案例三:战略流程的重整要点
│   │   │   ├─08-谁来驱动变革:让变革影响企业的每个人
│   │   │   ├─09-BPR项目运作的四个阶段:BOD模型的应用
│   │   │   ├─10-流程落地九步法:通过流程管理流程
│   │   │   ├─11-以流程驱动组织变革:实现多方共赢的局面
│   │   │   ├─12-职位的再造升级:实现减员增效涨薪的方法
│   │   │   ├─13-人力资源管理:干部如何转型
│   │   │   ├─139流程型组织15讲
│   │   │   ├─14-人力资源管理:关键人才成长
│   │   │   ├─15-人力资源管理:以奋斗者为本
│   │   │   ├─开篇词-成为一家“笨公司”
│   │   │   ├─测一测-流程型组织的这些概念、思想,你都吃透了吗?
│   │   │   ├─测一测-这些变革的方法论,你都消化了吗?
│   │   │   ├─结束语-企业管理的真谛:以客户为中心的流程型变革
│   │   │   └─结束语-企业管理的真谛:以客户为中心的流程型变革
│   │   ├─140Spark性能调优实战
│   │   │   ├─01-性能调优的必要性:Spark本身就很快,为啥还需要我调优?
│   │   │   ├─02-性能调优的本质:调优的手段五花八门,该从哪里入手?
│   │   │   ├─03-RDD:为什么你必须要理解弹性分布式数据集?
│   │   │   ├─04-DAG与流水线:到底啥叫“内存计算”?
│   │   │   ├─05-调度系统:“数据不动代码动”到底是什么意思?
│   │   │   ├─05-调度系统:“数据不动代码动”到底是什么意思?
│   │   │   ├─06-存储系统:空间换时间,还是时间换空间?
│   │   │   ├─07-内存管理基础:Spark如何高效利用有限的内存空间?
│   │   │   ├─08-应用开发三原则:如何拓展自己的开发边界?
│   │   │   ├─09-调优一筹莫展,配置项速查手册让你事半功倍!(上)
│   │   │   ├─10-调优一筹莫展,配置项速查手册让你事半功倍!(下)
│   │   │   ├─11-为什么说Shuffle是一时无两的性能杀手?
│   │   │   ├─12-广播变量(一):克制Shuffle,如何一招制胜!
│   │   │   ├─13-广播变量(二):如何让SparkSQL选择BroadcastJoins?
│   │   │   ├─14-CPU视角:如何高效地利用CPU?
│   │   │   ├─140Spark性能调优实战
│   │   │   ├─15-内存视角(一):如何最大化内存的使用效率?
│   │   │   ├─16-内存视角(二):如何有效避免Cache滥用?
│   │   │   ├─17-内存视角(三):OOM都是谁的锅?怎么破?
│   │   │   ├─18-磁盘视角:如果内存无限大,磁盘还有用武之地吗?
│   │   │   ├─18-磁盘视角:如果内存无限大,磁盘还有用武之地吗?
│   │   │   ├─19-网络视角:如何有效降低网络开销?
│   │   │   ├─20-RDD和DataFrame:既生瑜,何生亮?
│   │   │   ├─21-Catalyst逻辑计划:你的SQL语句是怎么被优化的?(上)
│   │   │   ├─22-Catalyst物理计划:你的SQL语句是怎么被优化的(下)?
│   │   │   ├─23-钨丝计划:Tungsten给开发者带来了哪些福报?
│   │   │   ├─24-Spark3
│   │   │   ├─25-Spark3
│   │   │   ├─26-JoinHints指南:不同场景下,如何选择Join策略?
│   │   │   ├─27-大表Join小表:广播变量容不下小表怎么办?
│   │   │   ├─28-大表Join大表(一):什么是“分而治之”的调优思路?
│   │   │   ├─29-大表Join大表(二):什么是负隅顽抗的调优思路?
│   │   │   ├─30|应用开发:北京市小客车(汽油车)摇号趋势分析
│   │   │   ├─31-性能调优:手把手带你提升应用的执行性能
│   │   │   ├─31-性能调优:手把手带你提升应用的执行性能
│   │   │   ├─SparkUI(上)-深入解读Spark作业的“体检报告”
│   │   │   ├─SparkUI(下):深入解读Spark作业的“体检报告”
│   │   │   ├─开篇词-Spark性能调优,你该掌握这些“套路”
│   │   │   ├─期末考试-“Spark性能调优”100分试卷等你来挑战!
│   │   │   ├─结束语-在时间面前,做一个笃定学习的人
│   │   │   └─结束语-在时间面前,做一个笃定学习的人
│   │   ├─141高楼的性能工程实战课
│   │   │   ├─01-性能工程:为什么很多性能测试人员无法对性能结果负责?
│   │   │   ├─02-关键概念:性能指标和场景的确定
│   │   │   ├─03-核心分析逻辑:所有的性能分析,靠这七步都能搞定
│   │   │   ├─04-如何构建性能分析决策树和查找瓶颈证据链?
│   │   │   ├─05-性能方案:你的方案是否还停留在形式上?
│   │   │   ├─06-如何抽取出符合真实业务场景的业务模型?
│   │   │   ├─07-性能场景的数据到底应该做成什么样子?
│   │   │   ├─08-并发、在线和TPS到底是什么关系?
│   │   │   ├─09-如何设计全局和定向监控策略?
│   │   │   ├─10-设计基准场景需要注意哪些关键点?
│   │   │   ├─11-打开首页之一:一个案例,带你搞懂基础硬件设施的性能问题
│   │   │   ├─12-打开首页之二:如何平衡利用硬件资源?
│   │   │   ├─13-用户登录:怎么判断线程中的Block原因?
│   │   │   ├─14-用户信息查询:如何解决网络软中断瓶颈问题?
│   │   │   ├─14-用户信息查询:如何解决网络软中断瓶颈问题?
│   │   │   ├─141高楼的性能工程实战课
│   │   │   ├─15-查询商品:资源不足有哪些性能表现?
│   │   │   ├─16-商品加入购物车:SQL优化和压力工具中的参数分析
│   │   │   ├─16-商品加入购物车:SQL优化和压力工具中的参数分析
│   │   │   ├─17-查询购物车:为什么铺底参数一定要符合真实业务特性?
│   │   │   ├─18-购物车信息确定订单:为什么动态参数化逻辑非常重要?
│   │   │   ├─19-生成订单信息之一:应用JDBC池优化和内存溢出分析
│   │   │   ├─20-生成订单信息之二:业务逻辑复杂,怎么做性能优化?
│   │   │   ├─21-支付前查询订单列表:如何分析优化一个固定的技术组件?
│   │   │   ├─22-支付订单信息:如何高效解决for循环产生的内存溢出?
│   │   │   ├─22-支付订单信息:如何高效解决for循环产生的内存溢出?
│   │   │   ├─23-决定容量场景成败的关键因素有哪些?
│   │   │   ├─24-容量场景之一:索引优化和Kubernetes资源分配不均衡怎么办?
│   │   │   ├─25-容量场景之二:缓存对性能会有什么样的影响?
│   │   │   ├─26-稳定性场景之一:怎样搞定业务积累量产生的瓶颈问题?
│   │   │   ├─27-稳定性场景之二:怎样搞定磁盘不足产生的瓶颈问题?
│   │   │   ├─28-如何确定异常场景的范围和设计逻辑?
│   │   │   ├─29-异常场景:如何模拟不同组件层级的异常?
│   │   │   ├─30-如何确定生产系统配置?
│   │   │   ├─31-怎么写出有价值的性能报告?
│   │   │   ├─一套习题,测出你的掌握程度
│   │   │   ├─开篇词-打破四大认知局限,进阶高级性能工程师
│   │   │   ├─我们这个课程的系统是怎么搭建起来的?
│   │   │   ├─结束语-做真正的性能项目
│   │   │   └─结束语-做真正的性能项目
│   │   ├─142技术面试官识人手册
│   │   │   ├─01-评估体系:公司和团队到底需要怎样的技术人才?
│   │   │   ├─02-制定计划:好的计划是成功的一半
│   │   │   ├─03-问题设计(上):三大原则理清面试考察方向
│   │   │   ├─04-问题设计(下):五个技巧助攻技术问题设计
│   │   │   ├─05-流程把控:控好流程,让面试进程高效有温度
│   │   │   ├─06-算法和数据结构考察:怎样有层次地驾驭算法考察?
│   │   │   ├─07-系统设计能力考察:系统设计内功到底怎么考?
│   │   │   ├─07-系统设计能力考察:系统设计内功到底怎么考?
│   │   │   ├─08-其它技能考察:见微知著,不可忽略的其它考察点
│   │   │   ├─09-决策会准备:怎样全面收集事实,有效提炼数据?
│   │   │   ├─10-决策会开展(上):怎样引导争辩,达成共识?
│   │   │   ├─11-决策会开展(下):怎样确保评估全面且有深度?
│   │   │   ├─11-决策会开展(下):怎样确保评估全面且有深度?
│   │   │   ├─12-线上面试:隔屏对话,交流依然畅通
│   │   │   ├─13-简历识人:洞悉简历背后信息,动态调节面试策略
│   │   │   ├─142技术面试官识人手册
│   │   │   ├─开篇词-世事洞明皆学问,人情练达即文章:小面试,大道理
│   │   │   ├─答疑课堂01:面试计划篇热点问题解答
│   │   │   ├─答疑课堂02:面试实践篇热点问题解答
│   │   │   ├─答疑课堂03:面试决策篇热点问题解答
│   │   │   ├─结束语-操千曲而后晓声,观千剑而后识器
│   │   │   ├─结课测试|这些面试问题,你都掌握了么?
│   │   │   └─结课测试|这些面试问题,你都掌握了么?
│   │   ├─143说透数字化转型
│   │   │   ├─01-历史思维:什么是数字时代和数字化转型?
│   │   │   ├─02-生态思维:企业怎么找准自己的定位?
│   │   │   ├─03-架构思维:数字化转型如何落地?
│   │   │   ├─04-破除误解:企业架构真的做不做都行吗?
│   │   │   ├─05-业技融合:如何打破技术和业务的壁垒?
│   │   │   ├─06-玩转业架:怎么设计业务架构?
│   │   │   ├─07-转型路径:数字化转型该从何做起?
│   │   │   ├─08-战略先行:怎么制定数字化战略?
│   │   │   ├─09-转型痛点(上):转型中都有哪些痛点问题?如何识别?
│   │   │   ├─10-转型痛点(下):怎么解决转型中的痛点问题?
│   │   │   ├─11-外部资源:实现数字化需要哪些外部支持?
│   │   │   ├─12-价值链:如何使用价值链进行能力分解?
│   │   │   ├─13-技术展望:转型必备的关键技术有哪些?
│   │   │   ├─14-架构规划:如何用企业架构连通技术和业务?
│   │   │   ├─14-架构规划:如何用企业架构连通技术和业务?
│   │   │   ├─143说透数字化转型
│   │   │   ├─15-分段演进:数字化转型需要经历哪些阶段?
│   │   │   ├─16-人与工具:如何培养数字化人才和建立企业架构方法论?
│   │   │   ├─16-人与工具:如何培养数字化人才和建立企业架构方法论?
│   │   │   ├─开篇词-数字化转型箭在弦上,如何抓住机遇?
│   │   │   ├─结束语-被时代挡在大门外的,往往是对变化视而不见的人
│   │   │   └─结束语-被时代挡在大门外的,往往是对变化视而不见的人
│   │   ├─144Spring编程常见错误50例
│   │   │   ├─01|SpringBean定义常见错误
│   │   │   ├─02|SpringBean依赖注入常见错误(上)
│   │   │   ├─03|SpringBean依赖注入常见错误(下)
│   │   │   ├─04|SpringBean生命周期常见错误
│   │   │   ├─05|SpringAOP常见错误(上)
│   │   │   ├─06|SpringAOP常见错误(下)
│   │   │   ├─07|Spring事件常见错误
│   │   │   ├─08|答疑现场:SpringCore篇思考题合集
│   │   │   ├─09|SpringWebURL解析常见错误
│   │   │   ├─10-SpringWebHeader解析常见错误
│   │   │   ├─11-SpringWebBody转化常见错误
│   │   │   ├─12|SpringWeb参数验证常见错误
│   │   │   ├─13-SpringWeb过滤器使用常见错误(上)
│   │   │   ├─14-SpringWeb过滤器使用常见错误(下)
│   │   │   ├─14-SpringWeb过滤器使用常见错误(下)
│   │   │   ├─144Spring编程常见错误50例
│   │   │   ├─15-SpringSecurity常见错误
│   │   │   ├─16|SpringException常见错误
│   │   │   ├─17|答疑现场:SpringWeb篇思考题合集
│   │   │   ├─18-SpringData常见错误
│   │   │   ├─19-Spring事务常见错误(上)
│   │   │   ├─20-Spring事务常见错误(下)
│   │   │   ├─21-SpringRestTemplate常见错误
│   │   │   ├─22-SpringTest常见错误
│   │   │   ├─23|答疑现场:Spring补充篇思考题合集
│   │   │   ├─导读|5分钟轻松了解Spring基础知识
│   │   │   ├─导读|5分钟轻松了解一个HTTP请求的处理过程
│   │   │   ├─开篇词|贴心“保姆”Spring罢工了怎么办?
│   │   │   ├─期末测试|来赴一场100分之约!
│   │   │   ├─知识回顾-系统梳理Spring编程错误根源
│   │   │   ├─结束语|问题总比解决办法多
│   │   │   └─结束语|问题总比解决办法多
│   │   ├─145操作系统实战45讲
│   │   │   ├─01-程序的运行过程:从代码到机器运行
│   │   │   ├─02-几行汇编几行C:实现一个最简单的内核
│   │   │   ├─03-黑盒之中有什么:内核结构与设计
│   │   │   ├─04-震撼的Linux全景图:业界成熟的内核架构长什么样?
│   │   │   ├─05-CPU工作模式:执行程序的三种模式
│   │   │   ├─06-虚幻与真实:程序中的地址如何转换?
│   │   │   ├─07-Cache与内存:程序放在哪儿?
│   │   │   ├─07-Cache与内存:程序放在哪儿?
│   │   │   ├─08-锁:并发操作中,解决数据同步的四种方法
│   │   │   ├─09-瞧一瞧Linux:Linux的自旋锁和信号量如何实现?
│   │   │   ├─10-设置工作模式与环境(上):建立计算机
│   │   │   ├─11-设置工作模式与环境(中):建造二级引导器
│   │   │   ├─12-设置工作模式与环境(下):探查和收集信息
│   │   │   ├─13-第一个C函数:如何实现板级初始化?
│   │   │   ├─14-Linux初始化(上):GRUB与vmlinuz的结构
│   │   │   ├─14-Linux初始化(上):GRUB与vmlinuz的结构
│   │   │   ├─145操作系统实战45讲
│   │   │   ├─15-Linux初始化(下):从start到第一个进程
│   │   │   ├─16-划分土地(上):如何划分与组织内存?
│   │   │   ├─17-划分土地(中):如何实现内存页面初始化?
│   │   │   ├─18-划分土地(下):如何实现内存页的分配与释放?
│   │   │   ├─19-土地不能浪费:如何管理内存对象?
│   │   │   ├─20-土地需求扩大与保障:如何表示虚拟内存?
│   │   │   ├─21-土地需求扩大与保障:如何分配和释放虚拟内存?
│   │   │   ├─22-瞧一瞧Linux:伙伴系统如何分配内存?
│   │   │   ├─23-瞧一瞧Linux:SLAB如何分配内存?
│   │   │   ├─24-活动的描述:到底什么是进程?
│   │   │   ├─25-多个活动要安排(上):多进程如何调度?
│   │   │   ├─26-多个活动要安排(下):如何实现进程的等待与唤醒机制?
│   │   │   ├─27-瞧一瞧Linux:Linux如何实现进程与进程调度
│   │   │   ├─28-部门分类:如何表示设备类型与设备驱动?
│   │   │   ├─28-部门分类:如何表示设备类型与设备驱动?
│   │   │   ├─29-部门建立:如何在内核中注册设备?
│   │   │   ├─30-部门响应:设备如何处理内核I-O包?
│   │   │   ├─31-瞧一瞧Linux:如何获取所有设备信息?
│   │   │   ├─32-仓库结构:如何组织文件
│   │   │   ├─33-仓库划分:文件系统的格式化操作
│   │   │   ├─33-仓库划分:文件系统的格式化操作
│   │   │   ├─34-仓库管理:如何实现文件的六大基本操作?
│   │   │   ├─35-瞧一瞧Linux:虚拟文件系统如何管理文件?
│   │   │   ├─36-从URL到网卡:如何全局观察网络数据流动?
│   │   │   ├─37-从内核到应用:网络数据在内核中如何流转
│   │   │   ├─38-从单排到团战:详解操作系统的宏观网络架构
│   │   │   ├─39-瞧一瞧Linux:详解socket实现与网络编程接口
│   │   │   ├─40-瞧一瞧Linux:详解socket的接口实现
│   │   │   ├─41-服务接口:如何搭建沟通桥梁?
│   │   │   ├─42-瞧一瞧Linux:如何实现系统API?
│   │   │   ├─43-虚拟机内核:KVM是什么?
│   │   │   ├─44-容器:如何理解容器的实现机制?
│   │   │   ├─45-ARM新宠:苹果的M1芯片因何而快?
│   │   │   ├─45-ARM新宠:苹果的M1芯片因何而快?
│   │   │   ├─46-AArch64体系:ARM最新编程架构模型剖析
│   │   │   ├─参考答案-对答案,是再次学习的一个机会
│   │   │   ├─大咖助场|以无法为有法,以无限为有限
│   │   │   ├─开篇词-为什么要学写一个操作系统?
│   │   │   ├─用户故事-yiyang:我的上机实验“爬坑指南”
│   │   │   ├─用户故事-成为面向“知识库”的工程师
│   │   │   ├─用户故事-技术人如何做选择,路才越走越宽?
│   │   │   ├─用户故事-操作系统发烧友:看不懂?因为你没动手
│   │   │   ├─用户故事-用好动态调试,助力课程学习
│   │   │   ├─用户故事|艾同学:路虽远,行则将至
│   │   │   ├─结束语-生活可以一地鸡毛,但操作系统却是心中的光
│   │   │   ├─结课测试|这些操作系统的问题,你都掌握了么?
│   │   │   ├─编辑手记-升级认知,迭代自己的操作系统
│   │   │   └─编辑手记-升级认知,迭代自己的操作系统
│   │   ├─146容量保障核心技术与实战
│   │   │   ├─01-容量保障的目标:容量保障的目标是什么?该如何度量?
│   │   │   ├─02-容量测试与验证:怎样科学实施容量测试?
│   │   │   ├─03-容量指标分析经典5问:响应时间真的是越短越好吗?
│   │   │   ├─04-容量治理的三板斧:扩容、限流与降级
│   │   │   ├─05-全链路压测:系统整体容量保障的“核武器”(上)
│   │   │   ├─06-全链路压测:系统整体容量保障的“核武器”(下)
│   │   │   ├─06-全链路压测:系统整体容量保障的“核武器”(下)
│   │   │   ├─07-工具进化:如何实现一个分布式压测平台
│   │   │   ├─08-容量预测(上):第三只眼,通过AI预测服务容量瓶颈
│   │   │   ├─09-容量预测(下):为不同服务“画像”,提升容量预测准确性
│   │   │   ├─10-浅谈排队论:数学之美,通过建模计算容量
│   │   │   ├─10-浅谈排队论:数学之美,通过建模计算容量
│   │   │   ├─11-与时俱进:云原生下的容量保障新趋势
│   │   │   ├─12-大促容量保障体系建设:怎样做好大促活动的容量保障工作(上)
│   │   │   ├─13-大促容量保障体系建设:怎样做好大促活动的容量保障工作(下)
│   │   │   ├─14-容量保障组织建设:容量保障需要什么样的团队?
│   │   │   ├─146容量保障核心技术与实战
│   │   │   ├─15-小公司也能做好容量保障:建设经济实用型的容量保障体系
│   │   │   ├─加餐-学习容量保障的那些经典资料
│   │   │   ├─开篇词-互联网时代,人人肩负容量保障的职责
│   │   │   ├─结束语-做时间的朋友,成功是持续累积而成的
│   │   │   └─结课测试-这些容量保障知识,你都掌握了吗?
│   │   ├─147性能优化高手课
│   │   │   ├─01-性能建模设计:如何满足软件设计中的性能需求?
│   │   │   ├─02-并行设计(上):如何利用并行设计挖掘性能极限?
│   │   │   ├─03-并行设计(下):如何高效解决同步互斥问题?
│   │   │   ├─04-缓存设计:做好缓存设计的关键是什么?
│   │   │   ├─05-IO设计:如何设计IO交互来提升系统性能?
│   │   │   ├─06-通信设计:请不要让消息通信拖垮了系统的整体性能
│   │   │   ├─07-数据库选型:如何基于性能需求选择合适的数据库?
│   │   │   ├─07-数据库选型:如何基于性能需求选择合适的数据库?
│   │   │   ├─08-可监控设计:如何利用eBPF来指导可监控设计?
│   │   │   ├─09-性能模式(上):如何有效提升性能指标?
│   │   │   ├─10-性能模式(下):如何解决核心的性能问题?
│   │   │   ├─11-如何针对特定业务场景设计数据结构和高性能算法?
│   │   │   ├─12-我们要先实现业务功能,还是先优化代码?
│   │   │   ├─13-编译期优化:只有修改业务代码才能提升系统性能?
│   │   │   ├─14-内存使用篇:如何高效使用内存来优化软件性能?
│   │   │   ├─147性能优化高手课
│   │   │   ├─15-并发实现:掌握不同并发框架的选择和使用秘诀
│   │   │   ├─16-技术探索:你真的把CPU的潜能都挖掘出来了吗?
│   │   │   ├─17-Benchmark测试(上):如何做好微基准测试?
│   │   │   ├─18-Benchmark测试(下):如何做好宏基准测试?
│   │   │   ├─19-性能测试工具:如何选择最合适的性能测试工具?
│   │   │   ├─20-性能看护:如何更好地守护产品性能?
│   │   │   ├─21-性能CI:性能测试也可以集成到Pipeline中吗?
│   │   │   ├─22-性能调优方法论:如何科学高效地定位性能问题?
│   │   │   ├─23-监控分析:你的性能调优工具足够有效吗?
│   │   │   ├─24-动态监控:你的产品系统中有动态监控的能力吗?
│   │   │   ├─25-性能调优什么时候应该停止?
│   │   │   ├─26-一个嵌入式实时系统都要从哪些方面做好性能优化?
│   │   │   ├─27-解决一个互斥问题,系统并发用户数提升了10倍!
│   │   │   ├─28-Web服务业务代码一行不动,性能提升20%,怎么做到的?
│   │   │   ├─开篇词-与我一起修炼,成为一名软件性能大师吧!
│   │   │   ├─结束语-千里之行,始于足下,你已踏上修炼之道!
│   │   │   └─结课测试-《性能优化高手课》100分试卷等你来挑战!
│   │   ├─148说透芯片
│   │   │   ├─01-核心概念:从晶体管到集成电路到摩尔定律
│   │   │   ├─01-核心概念:从晶体管到集成电路到摩尔定律
│   │   │   ├─02-从一部iPhone手机看芯片的分类
│   │   │   ├─03-芯片设计:一颗芯片到底是如何诞生的(上)
│   │   │   ├─04-芯片制造:一颗芯片到底是如何诞生的(下)
│   │   │   ├─04-芯片制造:一颗芯片到底是如何诞生的(下)
│   │   │   ├─05-Intel的发展史就是一部芯片行业的创新史(上)
│   │   │   ├─06-Intel的发展史就是一部芯片行业的创新史(下)
│   │   │   ├─07-三星:资本与技术共舞的40年
│   │   │   ├─08-台积电:摩尔定律的忠实执行者
│   │   │   ├─09-Nvidia与AI芯片:超越摩尔定律
│   │   │   ├─10|德州仪器:模拟芯片的无冕之王
│   │   │   ├─11-其他半导体公司:美国双通与欧洲双雄
│   │   │   ├─12-中国芯片业的发展历史
│   │   │   ├─13-中国芯片现状与机会(上)
│   │   │   ├─148说透芯片
│   │   │   ├─14|中国芯片现状与机会(下)
│   │   │   ├─15-聊聊芯片投资领域的机会
│   │   │   ├─16-拓展阅读:张忠谋分析台湾半导体晶圆制造的优势
│   │   │   ├─17|拓展阅读:聊聊ARM与RISC-V
│   │   │   ├─18|拓展阅读:再聊聊ARM、RISC-V与中国的机会
│   │   │   ├─开篇词-为什么你一定要了解芯片行业
│   │   │   ├─期末测试-这些芯片知识你都了解了吗?
│   │   │   ├─用户故事-学完课程,我更好地理解了芯片行业
│   │   │   ├─结束语-芯片人的升职之路
│   │   │   └─结束语-芯片人的升职之路
│   │   ├─149ReactHooks核心原理与实战
│   │   │   ├─01|认识React:如何创建你的第一个React应用?
│   │   │   ├─02|理解Hooks:React为什么要发明Hooks?
│   │   │   ├─03|内置Hooks(1):如何保存组件状态和使用生命周期?
│   │   │   ├─04|内置Hooks(2):为什么要避免重复定义回调函数?
│   │   │   ├─05|进一步认识Hooks:如何正确理解函数组件的生命周期?
│   │   │   ├─06|自定义Hooks:四个典型的使用场景
│   │   │   ├─07|全局状态管理:如何在函数组件中使用Redux?
│   │   │   ├─08|复杂状态处理:如何保证状态一致性?
│   │   │   ├─08|复杂状态处理:如何保证状态一致性?
│   │   │   ├─09|异步处理:如何向服务器端发送请求?
│   │   │   ├─10|函数组件设计模式:如何应对复杂条件渲染场景?
│   │   │   ├─11|事件处理:如何创建自定义事件?
│   │   │   ├─12|项目结构:为什么要按领域组织文件夹结构?
│   │   │   ├─13|Form:Hooks给Form处理带来了哪些新变化?
│   │   │   ├─14-使用浮动层:如何展示对话框,并给对话框传递参数?
│   │   │   ├─149ReactHooks核心原理与实战
│   │   │   ├─15-路由管理:为什么每一个前端应用都需要使用路由机制?
│   │   │   ├─16-按需加载:如何提升应用打开速度?
│   │   │   ├─17-打包部署:你的应用是如何上线的?
│   │   │   ├─18-单元测试:自定义Hooks应该如何进行单元测试?
│   │   │   ├─19|第三方工具库:最常用的第三方工具库有哪些?
│   │   │   ├─20-React的未来:什么是服务器端组件?
│   │   │   ├─开篇词-全面拥抱Hooks,掌握最新React开发方式
│   │   │   ├─答疑解惑01|如何转换应用ReactHooks的思路?
│   │   │   ├─答疑解惑02
│   │   │   ├─结束语|抓住本质,方能事半功倍
│   │   │   ├─结课测试题|这些ReactHooks的知识你都掌握了吗?
│   │   │   └─结课测试题|这些ReactHooks的知识你都掌握了吗?
│   │   ├─150Go语言项目开发实战
│   │   │   ├─01-IAM系统概述:我们要实现什么样的Go项目?
│   │   │   ├─02-环境准备:如何安装和配置一个基本的Go开发环境?
│   │   │   ├─03-项目部署:如何快速部署IAM系统?
│   │   │   ├─04-规范设计(上):项目开发杂乱无章,如何规范?
│   │   │   ├─05-规范设计(下):commit信息风格迥异、难以阅读,如何规范?
│   │   │   ├─06-目录结构设计:如何组织一个可维护、可扩展的代码目录?
│   │   │   ├─07-工作流设计:如何设计合理的多人开发模式?
│   │   │   ├─08-研发流程设计(上):如何设计Go项目的开发流程?
│   │   │   ├─09-研发流程设计(下):如何管理应用的生命周期?
│   │   │   ├─10-设计方法:怎么写出优雅的Go项目?
│   │   │   ├─11-设计模式:Go常用设计模式概述
│   │   │   ├─12-API风格(上):如何设计RESTfulAPI?
│   │   │   ├─13-API风格(下):RPCAPI介绍
│   │   │   ├─14-项目管理:如何编写高质量的Makefile?
│   │   │   ├─15-研发流程实战:IAM项目是如何进行研发流程管理的?
│   │   │   ├─150Go语言项目开发实战
│   │   │   ├─16-代码检查:如何进行静态代码检查?
│   │   │   ├─17-API文档:如何生成SwaggerAPI文档?
│   │   │   ├─18-错误处理(上):如何设计一套科学的错误码?
│   │   │   ├─19-错误处理(下):如何设计错误包?
│   │   │   ├─20-日志处理(上):如何设计日志包并记录日志?
│   │   │   ├─21-日志处理(下):手把手教你从0编写一个日志包
│   │   │   ├─22-应用构建三剑客:Pflag、Viper、Cobra核心功能介绍
│   │   │   ├─23-应用构建实战:如何构建一个优秀的企业应用框架?
│   │   │   ├─24-Web服务:Web服务核心功能有哪些,如何实现?
│   │   │   ├─25-认证机制:应用程序如何进行访问认证?
│   │   │   ├─26-IAM项目是如何设计和实现访问认证功能的?
│   │   │   ├─26-IAM项目是如何设计和实现访问认证功能的?
│   │   │   ├─27-权限模型:5大权限模型是如何进行资源授权的?
│   │   │   ├─28-控制流(上):通过iam-apiserver设计,看Web服务的构建
│   │   │   ├─29|控制流(下):iam-apiserver服务核心功能实现讲解
│   │   │   ├─30-ORM:CURD神器GORM包介绍及实战
│   │   │   ├─31-数据流:通过iam-authz-server设计,看数据流服务的设计
│   │   │   ├─32-数据处理:如何高效处理应用程序产生的数据?
│   │   │   ├─33-SDK设计(上):如何设计出一个优秀的GoSDK?
│   │   │   ├─34-SDK设计(下):IAM项目GoSDK设计和实现
│   │   │   ├─35-效率神器:如何设计和实现一个命令行客户端工具?
│   │   │   ├─36-代码测试(上):如何编写Go语言单元测试和性能测试用例?
│   │   │   ├─37-代码测试(下):Go语言其他测试类型及IAM测试介绍
│   │   │   ├─38|性能分析(上):如何分析Go语言代码的性能?
│   │   │   ├─39|性能分析(下):APIServer性能测试和调优实战
│   │   │   ├─40-软件部署实战(上):部署方案及负载均衡、高可用组件介绍
│   │   │   ├─41-软件部署实战(中):IAM系统生产环境部署实战
│   │   │   ├─42-软件部署实战(下):IAM系统安全加固、水平扩缩容实战
│   │   │   ├─43|技术演进(上):虚拟化技术演进之路
│   │   │   ├─44|技术演进(下):软件架构和应用生命周期技术演进之路
│   │   │   ├─45|基于Kubernetes的云原生架构设计
│   │   │   ├─46-如何制作Docker镜像?
│   │   │   ├─47-如何编写Kubernetes资源定义文件?
│   │   │   ├─48-IAM容器化部署实战
│   │   │   ├─49-服务编排(上):Helm服务编排基础知识
│   │   │   ├─50-服务编排(下):基于Helm的服务编排部署实战
│   │   │   ├─51-基于GitHubActions的CI实战
│   │   │   ├─开篇词-从0开始搭建一个企业级Go应用
│   │   │   ├─期末考试|《Go语言项目开发实战》满分试卷,等你来挑战!
│   │   │   ├─特别放送-GoModules依赖包管理全讲
│   │   │   ├─特别放送-GoModules实战
│   │   │   ├─特别放送-IAM排障指南
│   │   │   ├─特别放送-分布式作业系统设计和实现
│   │   │   ├─特别放送-给你一份Go项目中最常用的Makefile核心语法
│   │   │   ├─特别放送-给你一份清晰、可直接套用的Go编码规范
│   │   │   ├─直播加餐|如何从小白进阶成Go语言专家?
│   │   │   ├─结束语-如何让自己的Go研发之路走得更远?
│   │   │   └─结束语-如何让自己的Go研发之路走得更远?
│   │   ├─151说透5G
│   │   │   ├─01|从1G到3G:从野蛮生长到数据崭露头角
│   │   │   ├─02-从4G到5G:发展5G真的有必要吗?
│   │   │   ├─03|用一通电话带你遍历移动通信基础
│   │   │   ├─04|5G产业全景图:如何能高效、系统地掌握5G?
│   │   │   ├─05-决定5G产业生态的技术标准,是怎么制定出来的?
│   │   │   ├─06-5G关键性能指标是如何通过无线技术来实现的?
│   │   │   ├─07|5G基站一定要重建吗?怎样才能节省投资?
│   │   │   ├─07|5G基站一定要重建吗?怎样才能节省投资?
│   │   │   ├─08-基于IT技术的开放式无线接入网,到底可不可行?
│   │   │   ├─09|你真的了解5G的终端和芯片吗?
│   │   │   ├─10|云上的通信核心网,会是未来的方向吗?
│   │   │   ├─11|万物智联,先从搭建一套技术底座开始
│   │   │   ├─12|AR-VR-超高清:开启全新的娱乐生活体验
│   │   │   ├─13|工业互联网:为什么工业智能化数字化升级缺不了5G?
│   │   │   ├─14|智能医疗:5G真的能让我们看病更快更方便吗
│   │   │   ├─14|智能医疗:5G真的能让我们看病更快更方便吗
│   │   │   ├─15-车联网:5G能给车联网带来什么?
│   │   │   ├─151说透5G
│   │   │   ├─16-5G使能数字社会,6G成就数字社会?
│   │   │   ├─开篇词|除了使用5G手机,你为什么还得了解5G行业?
│   │   │   ├─期末考试|《说透5G》100分试卷等你来挑战!
│   │   │   ├─结束语|持续学习,才能找到通往未来的“捷径”
│   │   │   └─结束语|持续学习,才能找到通往未来的“捷径”
│   │   ├─152如何成为学习高手
│   │   │   ├─01|如何减少对学习的排斥和厌恶心理,使其变得相对愉悦?
│   │   │   ├─02|学会这4点,你也可以告别伪勤奋
│   │   │   ├─03|掌握考试思维:成为一个特别会考试的人
│   │   │   ├─04|用科学原理告诉你如何在考场上超常发挥
│   │   │   ├─05|教你全面提升专注力,学习时不再走神
│   │   │   ├─06|教你高效复习:巧用学习神器取得好成绩
│   │   │   ├─07|我考北大中文系时,15天背下10门专业课的连点成线法
│   │   │   ├─08|高效记忆的根本方法:主动思考和加工&组块化记忆
│   │   │   ├─09|如何高效读书?如何记住读过的每一本书?
│   │   │   ├─10|如何快速入门新领域?论述题如何答出高分?
│   │   │   ├─11|如何快速完成学习和工作任务,以及快速学会新技能?
│   │   │   ├─12|每个人都能学会:5分钟克服拖延症的方法
│   │   │   ├─13|3个思路,让你成为一个真正自律的人
│   │   │   ├─14|通过选择环境,来提高学习和工作效率
│   │   │   ├─152如何成为学习高手
│   │   │   ├─15|一个人在家如何做到高度自律?
│   │   │   ├─16|一玩手机就停不下来?教你如何戒手机
│   │   │   ├─16|一玩手机就停不下来?教你如何戒手机
│   │   │   ├─17|如何合理地制订计划?
│   │   │   ├─18|如何保证100%完成你制订的计划?
│   │   │   ├─19|如何高效完成复杂艰难的、不喜欢的任务?
│   │   │   ├─20|如何做到每天高效学习12小时?
│   │   │   ├─21|学霸为什么学什么都快?有哪些可以借鉴的方法论?
│   │   │   ├─22|如何通过练习,让自己变得更聪明?
│   │   │   ├─23|教你利用“双加工理论”,有效提高学习能力
│   │   │   ├─24|重要:别再去找更好的学习方法了
│   │   │   └─24|重要:别再去找更好的学习方法了
│   │   ├─153如何读懂一首诗
│   │   │   ├─01|读诗句:溪柴火软蛮毡暖,还是火软溪柴蛮毡暖?
│   │   │   ├─02|读诗人:连李贺生平都不熟,又怎能懂他的诗呢?
│   │   │   ├─03|读诗意:恍惚之间,我从诗里找到了自己的影子
│   │   │   ├─04|元白友情:什么样的人才算得上知己?
│   │   │   ├─04|元白友情:什么样的人才算得上知己?
│   │   │   ├─05|沈园之恋:74岁的陆游,念念不忘的初恋
│   │   │   ├─06|骨肉情深:苏轼临死前最关心什么?
│   │   │   ├─07|侠客李白:古今不变的大侠梦
│   │   │   ├─08|文人风骨:张孝祥的孤光自照
│   │   │   ├─09|家国情怀:35岁的辛弃疾老了吗?
│   │   │   ├─10|山水诗词:给自己一座精神的“辋川”
│   │   │   ├─11|诗中花语:宋人为什么觉得唐人不懂梅花?
│   │   │   ├─12|漂啊漂啊:古代的“北漂”在想什么?
│   │   │   ├─13|《甄嬛传》曲:为什么古代男子喜欢学女子说话?
│   │   │   ├─14|民生疾苦:他们使杜甫成为诗圣
│   │   │   ├─14|民生疾苦:他们使杜甫成为诗圣
│   │   │   ├─153如何读懂一首诗
│   │   │   ├─15|升迁贬谪:命犯“桃花”的刘禹锡
│   │   │   ├─16|女性视角:李清照笔下独到的细腻
│   │   │   ├─17|诗中哲学:读了这些理趣诗之后,我悟了!
│   │   │   ├─18|乐观豁达:黄州重生的苏轼
│   │   │   ├─19|返璞归真:王维佛系建议,万事不如吃好睡好
│   │   │   ├─20|自强不息:什么样的宝刀配得上女侠秋瑾?
│   │   │   ├─加餐1|辞职问题:古人怎么写高端辞职信?
│   │   │   ├─加餐2|面试问题:古人怎么向别人推荐自己?
│   │   │   ├─好诗相伴01|见情真:情到深处成文章
│   │   │   ├─好诗相伴02|见古今:古今不变唯精神
│   │   │   ├─好诗相伴03|见万物:世间万物在诗中
│   │   │   ├─好诗相伴04|见众生:众生皆苦亦哲学
│   │   │   ├─好诗相伴05|见自己:我在诗中渡自己
│   │   │   ├─开篇词|有刷抖音的功夫,我们还不如读读诗词
│   │   │   ├─结束语|诗词是一颗精神世界的种子
│   │   │   └─结束语|诗词是一颗精神世界的种子
│   │   ├─154如何落地业务建模
│   │   │   ├─01|领域驱动设计到底在讲什么?
│   │   │   ├─02|统一语言是必要的吗?
│   │   │   ├─03|我们要怎么理解领域驱动设计?
│   │   │   ├─04|跨越现实的障碍(上):要性能还是要模型?
│   │   │   ├─05|跨越现实的障碍(中):富含知识还是代码坏味道?
│   │   │   ├─06-跨越现实的障碍(下):架构分层就对了吗?
│   │   │   ├─07|统一语言可以是领域模型本身吗?
│   │   │   ├─08-什么办法可以在讨论中自然形成统一语言?
│   │   │   ├─09|怎么才能更有效地获得事件流?
│   │   │   ├─10-将模型实现为RESTfulAPI(上)
│   │   │   ├─11|将模型实现为RESTfulAPI(下)
│   │   │   ├─12|云时代的挑战(上):弹性边界还是业务边界?
│   │   │   ├─13|云时代的挑战(下):如何保持弹性边界的独立性?
│   │   │   ├─14-8XFlow(上):何为业务?何为领域?
│   │   │   ├─154如何落地业务建模
│   │   │   ├─15|8XFlow(中):如何通过模型发现业务系统的变化点?
│   │   │   ├─16|8XFlow(下):多于一个例子
│   │   │   ├─17|中台建模(上):到底什么是中台?
│   │   │   ├─18|中台建模(下):如何寻找可复用的业务模式?
│   │   │   ├─19|如何将模型实现为微服务?
│   │   │   ├─20|云时代的下一站:SaaS化与魔球建模法
│   │   │   ├─开篇词|为什么你需要学习业务建模?
│   │   │   ├─用户故事01|知瑕:如何通过刻意练习,掌握建模方法?
│   │   │   ├─用户故事02|邹海龙:大道千条,我选其一
│   │   │   ├─直播加餐01|如何使用8XFlow实施面向业务设计?
│   │   │   ├─直播加餐02|如何使用SmartDomain实现DDD?
│   │   │   ├─结束语|吃喝玩乐如何让我成为更好的程序员?
│   │   │   ├─结课测试题|这些业务建模知识你都掌握了吗?
│   │   │   ├─编辑手记01|写给专栏读者的一封小信
│   │   │   ├─说点题外话01|好耦和与坏耦和
│   │   │   ├─说点题外话02|模式并不是解决方案
│   │   │   ├─说点题外话03|银弹可以杀死狼人,但你怎么知道狼人不是你呢?
│   │   │   ├─说点题外话03|银弹可以杀死狼人,但你怎么知道狼人不是你呢?
│   │   │   ├─说点题外话04|面向对象的原则适用于RESTfulAPI吗?
│   │   │   └─说点题外话04|面向对象的原则适用于RESTfulAPI吗?
│   │   ├─155讲好故事
│   │   │   ├─01-鸡同鸭讲:说者和听者的认知差异
│   │   │   ├─02-心驰神往:受众到底喜欢怎样的故事?
│   │   │   ├─03-行成于思:你是否有故事思维?
│   │   │   ├─03-行成于思:你是否有故事思维?
│   │   │   ├─04-笔酣墨饱:如何创建你的故事库?
│   │   │   ├─05-直指人心:故事之饵藏在哪里?
│   │   │   ├─06-身临其境:如何把故事写得精彩?
│   │   │   ├─07-入木三分:如何把故事讲得“入味”
│   │   │   ├─08-余音绕梁:故事中容易被忽略的文字魅力
│   │   │   ├─09-无中生有(上):如何讲好短故事
│   │   │   ├─10-无中生有(下):如何编排长故事
│   │   │   ├─11-动静有法:恪守故事的伦理法则
│   │   │   ├─12-职场:用故事呈现你的职业价值
│   │   │   ├─13-公开演讲:用故事吐露你的观点
│   │   │   ├─14-产品运营:用故事包装你的产品
│   │   │   ├─15-交友圈:用故事带动现场气氛
│   │   │   ├─155讲好故事
│   │   │   ├─开篇词-讲好故事是这个时代必备的技能
│   │   │   ├─结束语-人生,本来就是一个好故事
│   │   │   └─结束语-人生,本来就是一个好故事
│   │   ├─156程序员的个人财富课
│   │   │   ├─01-财富框架:建立属于你自己的财富双塔
│   │   │   ├─01-财富框架:建立属于你自己的财富双塔
│   │   │   ├─02|个人发展:你自己的发展才是最大的财富源泉
│   │   │   ├─03|理财金字塔:如何建立稳固的投资理财结构?
│   │   │   ├─04|实战知识:有哪些收益稳健的经典资产配置组合?
│   │   │   ├─05|支点投资法:主动投资是讲逻辑的!
│   │   │   ├─06|不当韭菜:在财富管理的过程中摆正心态,知己知彼
│   │   │   ├─07|职业方向:如何选择一个有前景的职业方向?
│   │   │   ├─08|职业规划:大公司VS小公司,怎样选择更有前途?
│   │   │   ├─08|职业规划:大公司VS小公司,怎样选择更有前途?
│   │   │   ├─09|期权股权:如何正确处理公司的期权、股权?
│   │   │   ├─10|跳槽涨薪:如何规划一条合理的职业道路?
│   │   │   ├─11-财富拓展:35岁失业?程序员如何拓宽财富渠道?
│   │   │   ├─12|房产投资:如何做出理性的买房决策?
│   │   │   ├─13|实战知识:让我们编程计算下怎么还房贷最合适
│   │   │   ├─14|基金投资:如何让专业人士帮你赚钱?
│   │   │   ├─156程序员的个人财富课
│   │   │   ├─15|实战知识:如何选出一只优质的基金?
│   │   │   ├─16|股票投资:最适合散户的股票投资方法是什么?
│   │   │   ├─17|投资闭环:如何成为越来越专业的投资者?
│   │   │   ├─18|技术优势:程序员如何用技术超越其他投资者?
│   │   │   ├─19|量化投资:典型的量化投资系统都包含哪些模块?
│   │   │   ├─20|价值投资:永远不过时的中长期投资策略
│   │   │   ├─21|趋势跟踪:怎样跟着趋势一起赚钱?
│   │   │   ├─22|轮动策略:如何踩准市场变换的节奏?
│   │   │   ├─23|对冲思想:这个世界上有稳赚不赔的生意吗?
│   │   │   ├─24|多因子模型:整合不同策略,形成合力的顶层框架
│   │   │   ├─25|机器学习:我们能用机器学习来建立投资模型吗?
│   │   │   ├─26|量化实战:从0到1搭建起一套简单的量化投资系统(上)
│   │   │   ├─27|量化实战:从0到1搭建起一套简单的量化投资系统(下)
│   │   │   ├─开篇词|为什么说程序员最适合学财富管理?
│   │   │   ├─期末考试|《程序员的个人财富课》满分试卷,等你来挑战!
│   │   │   ├─番外一|王喆对话李腾:程序员对基金经理的灵魂十问(上)
│   │   │   ├─番外三|有哪些能够持续学习的参考资料和相关网站?
│   │   │   ├─番外二|王喆对话李腾:程序员对基金经理的灵魂十问(下)
│   │   │   ├─番外四|知识总结:这门课的全部思维导图
│   │   │   ├─答疑课堂(一)|财富框架篇、个人发展篇思考题集锦
│   │   │   ├─答疑课堂(二)|投资实战篇、投资进阶篇思考题集锦
│   │   │   ├─结束语-知行合一:财富管理是一生的事情
│   │   │   └─结束语-知行合一:财富管理是一生的事情
│   │   ├─157说透区块链
│   │   │   ├─01-回顾前世:解读区块链技术发展三阶段
│   │   │   ├─02-着眼今生:揭秘区块链技术的发展现状
│   │   │   ├─03-技术特性:用“铁锁连环”直观理解区块链特点
│   │   │   ├─04-存储:区块链的存储设计有定式吗?
│   │   │   ├─05-密码学:为什么说区块链站在了巨人肩膀上?
│   │   │   ├─06-网络:先有去中心化还是先有点对点?
│   │   │   ├─07-共识(上):拜占廷将军也讲少数服从多数?
│   │   │   ├─08-共识(下):区块链领域的两类常用算法
│   │   │   ├─09-智能合约:虚拟与现实的价值锚定载体
│   │   │   ├─10-技术迭代:美好背后的遗憾
│   │   │   ├─11-区块链+5G物联网:万物互联不止鸿蒙
│   │   │   ├─12-区块链+数字人民币:怎样理解数字人民币体系架构?
│   │   │   ├─13-区块链+新基建:数字社会的四驾马车
│   │   │   ├─14-区块链+电商:如何实现在线购物新体验?
│   │   │   ├─15-区块链+社会治理:区块链如何为治理提供新方案?
│   │   │   ├─157说透区块链
│   │   │   ├─16-困境与展望:区块链技术如何嵌入未来世界?
│   │   │   ├─开篇词-区块链,一种面向未来的思维方式
│   │   │   ├─结束语-未来已至,赢在区块链思维
│   │   │   ├─结课测试|这些区块链的知识点,你都掌握了么?
│   │   │   └─结课测试|这些区块链的知识点,你都掌握了么?
│   │   ├─158Redis源码剖析与实战
│   │   │   ├─01-带你快速攻略Redis源码的整体架构
│   │   │   ├─02-键值对中字符串的实现,用char-还是结构体?
│   │   │   ├─03-如何实现一个性能优异的Hash表?
│   │   │   ├─04-内存友好的数据结构该如何细化设计?
│   │   │   ├─05-有序集合为何能同时支持点查询和范围查询?
│   │   │   ├─06-从ziplist到quicklist,再到listpack的启发
│   │   │   ├─07-为什么Stream使用了RadixTree?
│   │   │   ├─08-Redisserver启动后会做哪些操作?
│   │   │   ├─09-Redis事件驱动框架(上):何时使用select、poll、epoll?
│   │   │   ├─10-Redis事件驱动框架(中):Redis实现了Reactor模型吗?
│   │   │   ├─11-Redis事件驱动框架(下):Redis有哪些事件?
│   │   │   ├─12-Redis真的是单线程吗?
│   │   │   ├─13-Redis6
│   │   │   ├─14-从代码实现看分布式锁的原子性保证
│   │   │   ├─15-为什么LRU算法原理和代码实现不一样?
│   │   │   ├─158Redis源码剖析与实战
│   │   │   ├─16-LFU算法和其他算法相比有优势吗?
│   │   │   ├─17-LazyFree会影响缓存替换吗?
│   │   │   ├─18-如何生成和解读RDB文件?
│   │   │   ├─19-AOF重写(上):触发时机与重写的影响
│   │   │   ├─20-AOF重写(下):重写时的新写操作记录在哪里?
│   │   │   ├─21-主从复制:基于状态机的设计与实现
│   │   │   ├─22-哨兵也和Redis实例一样初始化吗?
│   │   │   ├─23-从哨兵Leader选举学习Raft协议实现(上)
│   │   │   ├─24-从哨兵Leader选举学习Raft协议实现(下)
│   │   │   ├─25-Pub-Sub在主从故障切换时是如何发挥作用的?
│   │   │   ├─26-从Ping-Pong消息学习Gossip协议的实现
│   │   │   ├─27-从MOVED、ASK看集群节点如何处理命令?
│   │   │   ├─28-RedisCluster数据迁移会阻塞吗?
│   │   │   ├─29-如何正确实现循环缓冲区?
│   │   │   ├─29-如何正确实现循环缓冲区?
│   │   │   ├─30-如何在系统中实现延迟监控?
│   │   │   ├─31-从Module的实现学习动态扩展功能
│   │   │   ├─32-如何在一个系统中实现单元测试?
│   │   │   ├─加餐1-Redis性能测试工具的使用
│   │   │   ├─加餐2-用户Kaito:我是怎么读Redis源码的?
│   │   │   ├─加餐3-从Redis到其他键值数据库的学习体会
│   │   │   ├─加餐4-RDB和AOF文件损坏了咋办?
│   │   │   ├─开篇词-阅读Redis源码能给你带来什么?
│   │   │   ├─期中测试-这些Redis源码知识,你都掌握了吗?
│   │   │   ├─期中测试题答案-这些问题你都答对了吗?
│   │   │   ├─用户故事-曾轼麟:世上无难事,只怕有心人
│   │   │   ├─答疑1-第1~6讲课后思考题答案及常见问题答疑
│   │   │   ├─答疑2-第7~12讲课后思考题答案及常见问题答疑
│   │   │   ├─答疑3-第13~18讲课后思考题答案及常见问题答疑
│   │   │   ├─答疑4-第19~24讲课后思考题答案及常见问题答疑
│   │   │   ├─答疑5-第25~32讲课后思考题答案及常见问题答疑
│   │   │   ├─结束语-Redis源码阅读,让我们从新开始
│   │   │   └─结课测试-一套习题,测测你的Redis源码知识掌握程度
│   │   ├─159数据分析思维课
│   │   │   ├─01-平均值:不要被骗了,它不能代表整体水平
│   │   │   ├─02-大数定律与小数陷阱:生活是随机还是有定数的?
│   │   │   ├─03-数据的期望值:为什么你坐的飞机总是晚点?
│   │   │   ├─04-随机对照试验:章鱼保罗真的是“预言帝”么?
│   │   │   ├─05-直方图与幂分布:为什么全世界1%的人掌握着50%的财富?
│   │   │   ├─06-数据分布:房子应该是买贵的还是买便宜的?
│   │   │   ├─07-散点图和相关性:怎样快速从数据当中找到规律?
│   │   │   ├─08-标准差:这人是不是“靠谱”其实看标准差?
│   │   │   ├─09-数据抽样:大数据来了还需要抽样么?
│   │   │   ├─10-指数和KPI:智商是怎么计算出来的?
│   │   │   ├─11-因果倒置:星座真的可以判定你的性格吗?
│   │   │   ├─12-精确率与置信区间:两种预测,你究竟应该相信哪一个?
│   │   │   ├─13-趋势分析与回归:父母高,孩子一定高么?
│   │   │   ├─13-趋势分析与回归:父母高,孩子一定高么?
│   │   │   ├─14-初识聚类算法:物以类聚,让复杂事物简单化
│   │   │   ├─15-初识分类算法:分而治之,不断进化
│   │   │   ├─159数据分析思维课
│   │   │   ├─16-关联规则:为什么啤酒和尿布一起卖?
│   │   │   ├─17-蒙特卡洛与拉斯维加斯:有限时间内如何获得最优解?
│   │   │   ├─18-马尔可夫链:你的未来,只取决于你当下做什么
│   │   │   ├─19-协同过滤:你看到的短视频都是集体智慧的结晶
│   │   │   ├─20-人工智能初探:阿尔法狗是怎样的一只“狗”?
│   │   │   ├─21-确定问题:与利益无关的问题都不值得数据分析和挖掘
│   │   │   ├─22-采集数据:用好一手数据和二手数据
│   │   │   ├─22-采集数据:用好一手数据和二手数据
│   │   │   ├─23-写好故事线:你能用好数字推翻众人的理解吗?
│   │   │   ├─24-实践你的理论:数据驱动最终就是用结果说话
│   │   │   ├─25-数据分析:15种数据思维图(上)
│   │   │   ├─26-数据分析:15种数据思维图(下)
│   │   │   ├─27-我常用的数据分析工具图谱
│   │   │   ├─28-让你数据分析瞬间提效的18个基础功法(上)
│   │   │   ├─29-让你数据分析瞬间提效的18个基础功法(下)
│   │   │   ├─30-快速实现数据分析基础课中的分析模型
│   │   │   ├─31-最先进的数据分析工具展望
│   │   │   ├─中秋放送-数据分析基础回顾
│   │   │   ├─中秋放送-数据分析基础回顾
│   │   │   ├─中秋放送-数据算法基础回顾
│   │   │   ├─加餐-升级头脑,用数据思维点亮生活
│   │   │   ├─国庆放送-书单推荐
│   │   │   ├─导读-万物背后的规律都是数据
│   │   │   ├─开篇词-数据给你一双看透本质的眼睛
│   │   │   ├─结束语-我们不是神:数据分析既是天使也是魔鬼
│   │   │   ├─编辑手记-让生活多一些科学,少一些神学
│   │   │   └─编辑手记-让生活多一些科学,少一些神学
│   │   ├─160程序员的测试课
│   │   │   ├─01-实战:实现一个ToDo的应用(上)
│   │   │   ├─01-实战:实现一个ToDo的应用(上)
│   │   │   ├─02-实战:实现一个ToDo的应用(下)
│   │   │   ├─03-程序员的测试与测试人员的测试有什么不同?
│   │   │   ├─04-自动化测试:为什么程序员做测试其实是有优势的?
│   │   │   ├─05-一个好的自动化测试长什么样?
│   │   │   ├─06-测试不好做,为什么会和设计有关系?
│   │   │   ├─07-Mock框架:怎么让测试变得可控?
│   │   │   ├─08-单元测试应该怎么写?
│   │   │   ├─09-测试覆盖率:如何找出没有测试到的代码?
│   │   │   ├─10-为什么100%的测试覆盖率是可以做到的?
│   │   │   ├─11-集成测试:单元测试可以解决所有问题吗?
│   │   │   ├─12-实战:将ToDo应用扩展为一个REST服务
│   │   │   ├─13-在Spring项目中如何进行单元测试?
│   │   │   ├─14-在Spring项目如何进行集成测试?
│   │   │   ├─15-测试应该怎么配比?
│   │   │   ├─16-怎么在遗留系统上写测试?
│   │   │   ├─160程序员的测试课
│   │   │   ├─17-TDD就是先写测试后写代码吗?
│   │   │   ├─18-BDD是什么东西?
│   │   │   ├─开篇词-为什么写测试是程序员的本职工作?
│   │   │   ├─答疑解惑-那些东西怎么测?
│   │   │   ├─结束语-对代码的信心要从测试里来
│   │   │   └─结束语-对代码的信心要从测试里来
│   │   ├─161陈天·Rust编程第一课
│   │   │   ├─01|内存:值放堆上还是放栈上,这是一个问题
│   │   │   ├─02|串讲:编程开发中,那些你需要掌握的基本概念
│   │   │   ├─03|初窥门径:从你的第一个Rust程序开始!
│   │   │   ├─04|gethandsdirty:来写个实用的CLI小工具
│   │   │   ├─05|gethandsdirty:做一个图片服务器有多难?
│   │   │   ├─06|gethandsdirty:SQL查询工具怎么一鱼多吃?
│   │   │   ├─06|gethandsdirty:SQL查询工具怎么一鱼多吃?
│   │   │   ├─07|所有权:值的生杀大权到底在谁手上?
│   │   │   ├─08|所有权:值的借用是如何工作的?
│   │   │   ├─09|所有权:一个值可以有多个所有者么?
│   │   │   ├─10|生命周期:你创建的值究竟能活多久?
│   │   │   ├─11|内存管理:从创建到消亡,值都经历了什么?
│   │   │   ├─12|类型系统:Rust的类型系统有什么特点?
│   │   │   ├─13|类型系统:如何使用trait来定义接口?
│   │   │   ├─14|类型系统:有哪些必须掌握的trait?
│   │   │   ├─15|数据结构:这些浓眉大眼的结构竟然都是智能指针?
│   │   │   ├─161陈天·Rust编程第一课
│   │   │   ├─16|数据结构:Vec-T-、&[T]、Box-[T]-,你真的了解集合容器么?
│   │   │   ├─17|数据结构:软件系统核心部件哈希表,内存如何布局?
│   │   │   ├─18|错误处理:为什么Rust的错误处理与众不同?
│   │   │   ├─19|闭包:FnOnce、FnMut和Fn,为什么有这么多类型?
│   │   │   ├─20|4Steps:如何更好地阅读Rust源码?
│   │   │   ├─21|阶段实操(1):构建一个简单的KVserver-基本流程
│   │   │   ├─22|阶段实操(2):构建一个简单的KVserver-基本流程
│   │   │   ├─23|类型系统:如何在实战中使用泛型编程?
│   │   │   ├─24|类型系统:如何在实战中使用traitobject?
│   │   │   ├─24|类型系统:如何在实战中使用traitobject?
│   │   │   ├─25|类型系统:如何围绕trait来设计和架构系统?
│   │   │   ├─26|阶段实操(3):构建一个简单的KVserver-高级trait技巧
│   │   │   ├─27|生态系统:有哪些常有的Rust库可以为我所用?
│   │   │   ├─28|网络开发(上):如何使用Rust处理网络请求?
│   │   │   ├─29|网络开发(下):如何使用Rust处理网络请求?
│   │   │   ├─30|UnsafeRust:如何用C++的方式打开Rust?
│   │   │   ├─31|FFI:Rust如何和你的语言架起沟通桥梁?
│   │   │   ├─32|实操项目:使用PyO3开发Python3模块
│   │   │   ├─33|并发处理(上):从atomics到Channel,Rust都提供了什么工具?
│   │   │   ├─34|并发处理(下):从atomics到Channel,Rust都提供了什么工具?
│   │   │   ├─34|并发处理(下):从atomics到Channel,Rust都提供了什么工具?
│   │   │   ├─35|实操项目:如何实现一个基本的MPSCchannel?
│   │   │   ├─36|阶段实操(4):构建一个简单的KVserver-网络处理
│   │   │   ├─37|阶段实操(5):构建一个简单的KVserver-网络安全
│   │   │   ├─38|异步处理:Future是什么?它和async-await是什么关系?
│   │   │   ├─38|异步处理:Future是什么?它和async-await是什么关系?
│   │   │   ├─39|异步处理:async-await内部是怎么实现的?
│   │   │   ├─40|异步处理:如何处理异步IO?
│   │   │   ├─41|阶段实操(6):构建一个简单的KVserver-异步处理
│   │   │   ├─42|阶段实操(7):构建一个简单的KVserver-如何做大的重构?
│   │   │   ├─43|生产环境:真实世界下的一个Rust项目包含哪些要素?
│   │   │   ├─44|数据处理:应用程序和数据如何打交道?
│   │   │   ├─45|阶段实操(8):构建一个简单的KVserver-配置-测试-监控-CI-CD
│   │   │   ├─46|软件架构:如何用Rust架构复杂系统?
│   │   │   ├─加餐|Rust2021版次问世了!
│   │   │   ├─加餐|代码即数据:为什么我们需要宏编程能力?
│   │   │   ├─加餐|宏编程(上):用最“笨”的方式撰写宏
│   │   │   ├─加餐|宏编程(下):用syn-quote优雅地构建宏
│   │   │   ├─加餐|愚昧之巅:你的Rust学习常见问题汇总
│   │   │   ├─加餐|期中测试:参考实现讲解
│   │   │   ├─加餐|期中测试:来写一个简单的grep命令行
│   │   │   ├─加餐|这个专栏你可以怎么学,以及Rust是否值得学?
│   │   │   ├─大咖助场|开悟之坡(上):Rust的现状、机遇与挑战
│   │   │   ├─大咖助场|开悟之坡(下):Rust的现状、机遇与挑战
│   │   │   ├─开篇词|让Rust成为你的下一门主力语言
│   │   │   ├─特别策划|学习锦囊(一):听听课代表们怎么说
│   │   │   ├─特别策划|学习锦囊(三):听听课代表们怎么说
│   │   │   ├─特别策划|学习锦囊(二):听听课代表们怎么说
│   │   │   ├─用户故事|绝望之谷:改变从学习开始
│   │   │   ├─用户故事|绝望之谷:改变从学习开始
│   │   │   ├─用户故事|语言不仅是工具,还是思维方式
│   │   │   ├─结束语|永续之原:Rust学习,如何持续精进?
│   │   │   └─结束语|永续之原:Rust学习,如何持续精进?
│   │   ├─162手把手带你写一门编程语言
│   │   │   ├─01|实现一门超简单的语言最快需要多久?
│   │   │   ├─02|词法分析:识别Token也可以很简单吗?
│   │   │   ├─03|支持表达式:解析表达式和解析语句有什么不同?
│   │   │   ├─04|如何让我们的语言支持变量和类型?
│   │   │   ├─05|函数实现:是时候让我们的语言支持函数和返回值了
│   │   │   ├─06|怎么支持条件语句和循环语句?
│   │   │   ├─07|怎么设计属于我们自己的虚拟机和字节码?
│   │   │   ├─08|基于TypeScript的虚拟机(一):实现一个简单的栈机
│   │   │   ├─09|基于TypeScript的虚拟机(二):丰富特性,支持跳转语句
│   │   │   ├─10|基于C语言的虚拟机(一):实现一个简单的栈机
│   │   │   ├─11|基于C语言的虚拟机(二):性能增长10倍的秘密
│   │   │   ├─12|物理机上程序运行的硬件环境是怎么样的?
│   │   │   ├─13|物理机上程序运行的软件环境是怎么样的?
│   │   │   ├─14|汇编代码学习(一):熟悉CPU架构和指令集
│   │   │   ├─15|汇编语言学习(二):熟悉X86汇编代码
│   │   │   ├─162手把手带你写一门编程语言
│   │   │   ├─16|生成本地代码第1关:先把基础搭好
│   │   │   ├─17|生成本地代码第2关:变量存储、函数调用和栈帧维护
│   │   │   ├─18|生成本地代码第3关:实现完整的功能
│   │   │   ├─18|生成本地代码第3关:实现完整的功能
│   │   │   ├─19|怎么实现一个更好的寄存器分配算法:原理篇
│   │   │   ├─20|怎么实现一个更好的寄存器分配算法:实现篇
│   │   │   ├─21|加深对栈的理解:实现尾递归和尾调用优化
│   │   │   ├─22|增强编译器前端功能第1步:再识数据流分析技术
│   │   │   ├─23|增强编译器前端功能第2步:增强类型体系
│   │   │   ├─24|增强编译器前端功能第3步:全面的集合运算
│   │   │   ├─25|增强编译器前端功能第4步:综合运用多种语义分析技术
│   │   │   ├─26|增强更丰富的类型第1步:如何支持浮点数?
│   │   │   ├─27|增加更丰富的类型第2步:如何支持字符串?
│   │   │   ├─28|增加更丰富的类型第3步:支持数组
│   │   │   ├─29|面向对象编程第1步:先把基础搭好
│   │   │   ├─30|面向对象编程第2步:剖析一些技术细节
│   │   │   ├─31|面向对象编程第3步:支持继承和多态
│   │   │   ├─32|函数式编程第1关:实现高阶函数
│   │   │   ├─33|函数式编程第2关:实现闭包特性
│   │   │   ├─34|内存管理第1关:Arena技术和元数据
│   │   │   ├─35|内存管理第2关:实现垃圾回收
│   │   │   ├─36|节点之海:怎么生成基于图的IR?
│   │   │   ├─37-从AST到IR:体会数据流和控制流思维
│   │   │   ├─38|中端优化第1关:实现多种本地优化
│   │   │   ├─39|中端优化第2关:全局优化要怎么搞?
│   │   │   ├─40|中端优化第3关:一起来挑战过程间优化
│   │   │   ├─41|后端优化:生成LIR和指令选择
│   │   │   ├─42|到这里,我们的收获和未尽的工作有哪些?
│   │   │   ├─“他山之石”|Sugar:这门课你可以试试这么学
│   │   │   ├─“屠龙之秘”|实现计算机语言这样的技术能用在哪里?(一)
│   │   │   ├─开篇词|让我们来写一门计算机语言吧
│   │   │   ├─期中测试|快来检验你在起步篇的学习成果吧
│   │   │   ├─期末考试|实现编程语言这些核心知识点,你掌握得咋样了?
│   │   │   ├─结束语|等待你大展身手的那些领域
│   │   │   ├─课前热身|开始学习之前我们要准备什么?
│   │   │   └─课前热身|开始学习之前我们要准备什么?
│   │   ├─163零基础实战机器学习
│   │   │   ├─01|打好基础:到底什么是机器学习?
│   │   │   ├─02|工具准备:安装并使用JupyterNotebook
│   │   │   ├─03|实战5步(上):怎么定义问题和预处理数据?
│   │   │   ├─04|实战5步(下):怎么建立估计10万+软文点击率的模型?
│   │   │   ├─05-数据探索:怎样从数据中找到用户的RFM值?
│   │   │   ├─05-数据探索:怎样从数据中找到用户的RFM值?
│   │   │   ├─06-聚类分析:如何用RFM给电商用户做价值分组画像?
│   │   │   ├─07|回归分析:怎样用模型预测用户的生命周期价值?
│   │   │   ├─08-模型优化(上):怎么用特征工程提高模型效率?
│   │   │   ├─09|模型优化(中):防止过拟合,模型也不能太精细
│   │   │   ├─10|模型优化(下):交叉验证,同时寻找最优的参数
│   │   │   ├─11|深度学习(上):用CNN带你认识深度学习
│   │   │   ├─12|深度学习(中):如何用RNN预测激活率走势?
│   │   │   ├─13|深度学习(下):3招提升神经网络预测准确率
│   │   │   ├─14|留存分析:哪些因素会影响用户的留存率?
│   │   │   ├─15|二元分类:怎么预测用户是否流失?从逻辑回归到深度学习
│   │   │   ├─163零基础实战机器学习
│   │   │   ├─16|性能评估:不平衡数据集应该使用何种评估指标?
│   │   │   ├─17|集成学习:机器学习模型如何“博采众长”
│   │   │   ├─18-增长模型:用XGBoost评估裂变海报的最佳受众群体
│   │   │   ├─19-胸有成竹:如何快速定位合适的机器学习算法?
│   │   │   ├─20-模型部署:怎么发布训练好的机器学习模型?
│   │   │   ├─21|持续精进:如何在机器学习领域中找准前进的方向?
│   │   │   ├─一套习题,测出你对机器学习的掌握程度
│   │   │   ├─开篇词|开发者为什么要从实战出发学机器学习?
│   │   │   ├─结束语-可以不完美,但重要的是马上开始
│   │   │   └─结束语-可以不完美,但重要的是马上开始
│   │   ├─164零基础入门Spark
│   │   │   ├─01|Spark:从“大数据的HelloWorld”开始
│   │   │   ├─01|Spark:从“大数据的HelloWorld”开始
│   │   │   ├─02-RDD与编程模型:延迟计算是怎么回事?
│   │   │   ├─03-RDD常用算子(一):RDD内部的数据转换
│   │   │   ├─04-进程模型与分布式部署:分布式计算是怎么回事?
│   │   │   ├─05-调度系统:如何把握分布式计算的精髓?
│   │   │   ├─06-Shuffle管理:为什么Shuffle是性能瓶颈?
│   │   │   ├─07-RDD常用算子(二):Spark如何实现数据聚合?
│   │   │   ├─08-内存管理:Spark如何使用内存?
│   │   │   ├─09-RDD常用算子(三):数据的准备、重分布与持久化
│   │   │   ├─10-广播变量&累加器:共享变量是用来做什么的?
│   │   │   ├─11-存储系统:数据到底都存哪儿了?
│   │   │   ├─12-基础配置详解:哪些参数会影响应用程序稳定性?
│   │   │   ├─13-SparkSQL:让我们从“小汽车摇号分析”开始
│   │   │   ├─14-台前幕后:DataFrame与SparkSQL的由来
│   │   │   ├─15-数据源与数据格式:DataFrame从何而来?
│   │   │   ├─16-数据转换:如何在DataFrame之上做数据处理?
│   │   │   ├─164零基础入门Spark
│   │   │   ├─17-数据关联:不同的关联形式与实现机制该怎么选?
│   │   │   ├─18-数据关联优化:都有哪些Join策略,开发者该如何取舍?
│   │   │   ├─19-配置项详解:哪些参数会影响应用程序执行性能?
│   │   │   ├─20-Hive+Spark强强联合:分布式数仓的不二之选
│   │   │   ├─21|SparkUI(上):如何高效地定位性能问题?
│   │   │   ├─22|SparkUI(下):如何高效地定位性能问题?
│   │   │   ├─23-SparkMLlib:从“房价预测”开始
│   │   │   ├─24-特征工程(上):有哪些常用的特征处理函数?
│   │   │   ├─25-特征工程(下):有哪些常用的特征处理函数?
│   │   │   ├─26-模型训练(上):决策树系列算法详解
│   │   │   ├─26-模型训练(上):决策树系列算法详解
│   │   │   ├─27-模型训练(中):回归、分类和聚类算法详解
│   │   │   ├─28-模型训练(下):协同过滤与频繁项集算法详解
│   │   │   ├─29-SparkMLlibPipeline:高效开发机器学习应用
│   │   │   ├─30|StructuredStreaming:从“流动的WordCount”开始
│   │   │   ├─30|StructuredStreaming:从“流动的WordCount”开始
│   │   │   ├─31|新一代流处理框架:Batchmode和Continuousmode哪家强?
│   │   │   ├─32|Window操作&Watermark:流处理引擎提供了哪些优秀机制?
│   │   │   ├─33|流计算中的数据关联:流与流、流与批
│   │   │   ├─34|Spark+Kafka:流计算中的“万金油”
│   │   │   ├─34|Spark+Kafka:流计算中的“万金油”
│   │   │   ├─开篇词-入门Spark,你需要学会“三步走”
│   │   │   ├─用户故事-小王:保持空杯心态,不做井底之蛙
│   │   │   ├─结束语-进入时间裂缝,持续学习
│   │   │   └─结束语-进入时间裂缝,持续学习
│   │   ├─165手把手带你写一个Web框架
│   │   │   ├─01|net-http:使用标准库搭建Server并不是那么简单
│   │   │   ├─02|Context:请求控制器,让每个请求都在掌控之中
│   │   │   ├─03|路由:如何让请求更快寻找到目标函数?
│   │   │   ├─04|中间件:如何提高框架的可拓展性?
│   │   │   ├─05|封装:如何让你的框架更好用?
│   │   │   ├─06|重启:如何进行优雅关闭?
│   │   │   ├─07|目标:站在巨人肩膀,你的理想框架到底长什么样?
│   │   │   ├─08|自研or借力(上):集成Gin替换已有核心
│   │   │   ├─09|自研or借力(下):集成Gin替换已有核心
│   │   │   ├─10|面向接口编程(上):一切皆服务,服务基于协议
│   │   │   ├─11|面向接口编程(下):一切皆服务,服务基于协议
│   │   │   ├─12|结构:如何系统设计框架的整体目录?
│   │   │   ├─13|交互:可以执行命令行的框架才是好框架
│   │   │   ├─13|交互:可以执行命令行的框架才是好框架
│   │   │   ├─14|定时任务:如何让框架支持分布式定时脚本?
│   │   │   ├─15|配置和环境(上):配置服务中的设计思路
│   │   │   ├─165手把手带你写一个Web框架
│   │   │   ├─16|配置和环境(下):配置服务中的设计思路
│   │   │   ├─17|日志:如何设计多输出的日志服务?
│   │   │   ├─18|一体化:前端和后端一定要项目分开吗
│   │   │   ├─19|提效(上):实现调试模式加速开发效率
│   │   │   ├─20|提效(下):实现调试模式加速开发效率
│   │   │   ├─21|自动化(上):DRY,如何自动化一切重复性劳动?
│   │   │   ├─22|自动化(下):DRY,如何自动化一切重复性劳动?
│   │   │   ├─23|管理接口:如何集成swagger自动生成文件?
│   │   │   ├─24|管理进程:如何设计完善的运行命令?
│   │   │   ├─25|GORM(上):数据库的使用必不可少
│   │   │   ├─26|GORM(下):数据库的使用必不可少
│   │   │   ├─27|缓存服务:如何基于Redis实现封装?
│   │   │   ├─28|SSH:如何生成发布系统让框架发布自动化?
│   │   │   ├─29|周边:框架发布和维护也是重要的一环
│   │   │   ├─30|设计先于实战:需求设计和框架搭建
│   │   │   ├─31|通用模块(上):用户模块开发
│   │   │   ├─32|通用模块(下):用户模块开发
│   │   │   ├─33|业务开发(上):问答业务开发
│   │   │   ├─34|业务开发(下):问答业务开发
│   │   │   ├─加餐|国庆特别放送:什么是业务架构,什么是基础架构?
│   │   │   ├─加餐|阶段答疑:这些代码里的小知识点你都知道吗?
│   │   │   ├─大咖助阵|大明:抽象,抽象,还是抽象
│   │   │   ├─大咖助阵|飞雪无情:十年面试经验忠告,不要被框架所束缚
│   │   │   ├─开篇词|为什么我们要从零开发框架?
│   │   │   ├─结束语|在语言的上升期投入最大热情,是最正确的投资
│   │   │   └─结束语|在语言的上升期投入最大热情,是最正确的投资
│   │   ├─166大数据经典论文解读
│   │   │   ├─01-什么是大数据:从GFS到Dataflow,12年大数据生态演化图
│   │   │   ├─02-学习方法:建立你的大数据知识网络
│   │   │   ├─03-TheGoogleFileSystem(一):Master的三个身份
│   │   │   ├─04-TheGoogleFileSystem(二):如何应对网络瓶颈?
│   │   │   ├─05-TheGoogleFileSystem(三):多写几次也没关系
│   │   │   ├─06-MapReduce(一):源起Unix的设计思想
│   │   │   ├─07-MapReduce(二):不怕失败的计算框架
│   │   │   ├─08-Bigtable(一):错失百亿的Friendster
│   │   │   ├─09-Bigtable(二):不认识“主人”的分布式架构
│   │   │   ├─10-Bigtable(三):SSTable存储引擎详解
│   │   │   ├─11-通过Thrift序列化:我们要预知未来才能向后兼容吗?
│   │   │   ├─12-分布式锁Chubby(一):交易之前先签合同
│   │   │   ├─13-分布式锁Chubby(二):众口铄金的真相
│   │   │   ├─14-分布式锁Chubby(三):移形换影保障高可用
│   │   │   ├─15-Hive:来来去去的DSL,永生不死的SQL
│   │   │   ├─16-从Dremel到Parquet(一):深入剖析列式存储
│   │   │   ├─166大数据经典论文解读
│   │   │   ├─17-从Dremel到Parquet(二):他山之石的MPP数据库
│   │   │   ├─18-Spark:别忘了内存比磁盘快多少
│   │   │   ├─19-Megastore(一):全国各地都能写入的数据库
│   │   │   ├─20-Megastore(二):把Bigtable玩出花来
│   │   │   ├─21-Megastore(三):让Paxos跨越“国界”
│   │   │   ├─22-Spanner(一):“重写”Bigtable和Megastore(1)
│   │   │   ├─22-Spanner(一):“重写”Bigtable和Megastore
│   │   │   ├─23-Spanner(二):时间的悖论
│   │   │   ├─23-Spanner(二):时间的悖论
│   │   │   ├─24-Spanner(三):严格串行化的分布式系统
│   │   │   ├─25-从S4到Storm(一):当分布式遇上实时计算
│   │   │   ├─26-从S4到Storm(二):位运算是个好东西
│   │   │   ├─27-Kafka(一):消息队列的新标准
│   │   │   ├─28-Kafka(二):从Lambda到Kappa,流批一体计算的起源
│   │   │   ├─29-Dataflow(一):正确性、容错和时间窗口
│   │   │   ├─30-Dataflow(二):MillWheel,一个早期实现
│   │   │   ├─31-Dataflow(三):一个统一的编程模型
│   │   │   ├─32-Raft(一):不会背叛的信使
│   │   │   ├─33-Raft(二):服务器增减的“自举”实现
│   │   │   ├─34-Borg(一):当电力成为成本瓶颈
│   │   │   ├─34-Borg(一):当电力成为成本瓶颈
│   │   │   ├─35-Borg(二):互不“信任”的调度系统
│   │   │   ├─36-从Omega到Kubernetes:哺育云原生的开源项目
│   │   │   ├─37-当数据遇上AI,Twitter的数据挖掘实战(一)
│   │   │   ├─38-当数据遇上AI,Twitter的数据挖掘实战(二)
│   │   │   ├─39-十年一梦,一起来看Facebook的数据仓库变迁(一)
│   │   │   ├─40-十年一梦,一起来看Facebook的数据仓库变迁(二)
│   │   │   ├─加餐1-选择和努力同样重要:聊聊如何读论文和选论文
│   │   │   ├─加餐1-选择和努力同样重要:聊聊如何读论文和选论文
│   │   │   ├─加餐2-设置你的学习“母题”:如何选择阅读材料?
│   │   │   ├─加餐3-我该使用什么样的大数据系统?
│   │   │   ├─复习课(一)-TheGoogleFileSystem
│   │   │   ├─复习课(七)-Dremel
│   │   │   ├─复习课(三)-Bigtable
│   │   │   ├─复习课(九)-Megastore
│   │   │   ├─复习课(二)-MapReduce
│   │   │   ├─复习课(五)-Chubby
│   │   │   ├─复习课(八)-ResilientDistributedDatasets
│   │   │   ├─复习课(六)-Hive
│   │   │   ├─复习课(十)-Spanner
│   │   │   ├─复习课(四)-Thrift
│   │   │   ├─开篇词-读论文是成为优秀工程师的成年礼
│   │   │   ├─用户故事-核桃:95后的技术成长之路
│   │   │   ├─用户故事-许灵:不抛弃不放弃
│   │   │   ├─用户故事-许灵:不抛弃不放弃
│   │   │   ├─用户故事-陈煌:唯有自强不息,方能屹立不倒
│   │   │   ├─用户故事-黄涛:水滴石穿、坚持不懈,必能有所精进
│   │   │   ├─结束语-长风破浪会有时,直挂云帆济沧海
│   │   │   └─结束语-长风破浪会有时,直挂云帆济沧海
│   │   ├─167手把手带你搭建秒杀系统
│   │   │   ├─01|直面痛点:秒杀系统的挑战和设计原则
│   │   │   ├─02|蓄势待发:秒杀系统架构设计和环境准备
│   │   │   ├─03-指日可待:一步一步搭建秒杀系统(上)
│   │   │   ├─04-指日可待:一步一步搭建秒杀系统(下)
│   │   │   ├─05|勇于担当:秒杀的隔离策略
│   │   │   ├─06|谋定后动:秒杀的流量管控
│   │   │   ├─07|乾坤大挪移:秒杀的削峰和限流
│   │   │   ├─08|化骨绵掌:降级、热点和容灾处理
│   │   │   ├─09|御敌国门外:黑产对抗——防刷和风控
│   │   │   ├─10|不差毫厘:秒杀的库存与限购
│   │   │   ├─11|高性能优化:物理机极致优化
│   │   │   ├─12|高性能优化:单机Java极致优化
│   │   │   ├─13|优化番外篇:Vertx介绍及快速入门
│   │   │   ├─14|百万级流量秒杀系统的关键总结
│   │   │   ├─167手把手带你搭建秒杀系统
│   │   │   ├─加餐|高并发场景:如何提升对突发事件的应急处理能力?
│   │   │   ├─开篇词|如何设计一个高并发、高可用的秒杀系统?
│   │   │   ├─期末测试|来赴一场满分之约吧!
│   │   │   ├─结束语|秒杀系统之上的业务协同思考
│   │   │   └─结束语|秒杀系统之上的业务协同思考
│   │   ├─168PyTorch深度学习实战
│   │   │   ├─01-PyTorch:网红中的顶流明星
│   │   │   ├─02-NumPy(上):核心数据结构详解
│   │   │   ├─03-NumPy(下):深度学习中的常用操作
│   │   │   ├─04-Tensor:PyTorch中最基础的计算单元
│   │   │   ├─05-Tensor变形记:快速掌握Tensor切分、变形等方法
│   │   │   ├─06-Torchvision(上):数据读取,训练开始的第一步
│   │   │   ├─07-Torchvision(中):数据增强,让数据更加多样性
│   │   │   ├─08-Torchvision(下):其他有趣的功能
│   │   │   ├─09-卷积(上):如何用卷积为计算机“开天眼”?
│   │   │   ├─10-卷积(下):如何用卷积为计算机“开天眼”?
│   │   │   ├─11-损失函数:如何帮助模型学会“自省”?
│   │   │   ├─12-计算梯度:网络的前向与反向传播
│   │   │   ├─13-优化方法:更新模型参数的方法
│   │   │   ├─14-构建网络:一站式实现模型搭建与训练
│   │   │   ├─15-可视化工具:如何实现训练的可视化监控?
│   │   │   ├─168PyTorch深度学习实战
│   │   │   ├─16|分布式训练:如何加速你的模型训练?
│   │   │   ├─17-图像分类(上):图像分类原理与图像分类模型
│   │   │   ├─18-图像分类(下):如何构建一个图像分类模型
│   │   │   ├─19-图像分割(上):详解图像分割原理与图像分割模型
│   │   │   ├─20-图像分割(下):如何构建一个图像分割模型?
│   │   │   ├─20-图像分割(下):如何构建一个图像分割模型?
│   │   │   ├─21-NLP基础(上):详解自然语言处理原理与常用算法
│   │   │   ├─22-NLP基础(下):详解语言模型与注意力机制
│   │   │   ├─23-情感分析:如何使用LSTM进行情感分析?
│   │   │   ├─24-文本分类:如何使用BERT构建文本分类模型?
│   │   │   ├─25-摘要:如何快速实现自动文摘生成?
│   │   │   ├─加餐-机器学习其实就那么几件事
│   │   │   ├─开篇词-如何高效入门PyTorch?
│   │   │   ├─用户故事-Tango:师傅领进门,修行在个人
│   │   │   ├─答疑篇|思考题答案集锦
│   │   │   ├─结束语|人生充满选择,选择与努力同样重要
│   │   │   └─结束语|人生充满选择,选择与努力同样重要
│   │   ├─169TonyBai·Go语言第一课
│   │   │   ├─01|前世今生:你不得不了解的Go的历史和现状
│   │   │   ├─02|拒绝“HelloandBye”:Go语言的设计哲学是怎么一回事?
│   │   │   ├─03|配好环境:选择一种最适合你的Go安装方法
│   │   │   ├─04|初窥门径:一个Go程序的结构是怎样的?
│   │   │   ├─05|标准先行:Go项目的布局标准是什么?
│   │   │   ├─06|构建模式:Go是怎么解决包依赖管理问题的?
│   │   │   ├─07|构建模式:GoModule的6类常规操作
│   │   │   ├─08|入口函数与包初始化:搞清Go程序的执行次序
│   │   │   ├─08|入口函数与包初始化:搞清Go程序的执行次序
│   │   │   ├─09|即学即练:构建一个Web服务就是这么简单
│   │   │   ├─10|变量声明:静态语言有别于动态语言的重要特征
│   │   │   ├─11|代码块与作用域:如何保证变量不会被遮蔽?
│   │   │   ├─12|基本数据类型:Go原生支持的数值类型有哪些?
│   │   │   ├─13|基本数据类型:为什么Go要原生支持字符串类型?
│   │   │   ├─14|常量:Go在“常量”设计上的创新有哪些?
│   │   │   ├─15|同构复合类型:从定长数组到变长切片
│   │   │   ├─169TonyBai·Go语言第一课
│   │   │   ├─16|复合数据类型:原生map类型的实现机制是怎样的?
│   │   │   ├─17|复合数据类型:用结构体建立对真实世界的抽象
│   │   │   ├─18|控制结构:if的“快乐路径”原则
│   │   │   ├─19|控制结构:Go的for循环,仅此一种
│   │   │   ├─20|控制结构:Go中的switch语句有哪些变化?
│   │   │   ├─21|函数:请叫我“一等公民”
│   │   │   ├─21|函数:请叫我“一等公民”
│   │   │   ├─22|函数:怎么结合多返回值进行错误处理?
│   │   │   ├─23|函数:怎么让函数更简洁健壮?
│   │   │   ├─24|方法:理解“方法”的本质
│   │   │   ├─25|方法:方法集合与如何选择receiver类型?
│   │   │   ├─26|方法:如何用类型嵌入模拟实现“继承”?
│   │   │   ├─27|即学即练:跟踪函数调用链,理解代码更直观
│   │   │   ├─28|接口:接口即契约
│   │   │   ├─29|接口:为什么nil接口不等于nil?
│   │   │   ├─30|接口:Go中最强大的魔法
│   │   │   ├─31|并发:Go的并发方案实现方案是怎样的?
│   │   │   ├─32|并发:聊聊Goroutine调度器的原理
│   │   │   ├─33|并发:小channel中蕴含大智慧
│   │   │   ├─34|并发:如何使用共享变量?
│   │   │   ├─35|即学即练:如何实现一个轻量级线程池?
│   │   │   ├─36|打稳根基:怎么实现一个TCP服务器?(上)
│   │   │   ├─37|代码操练:怎么实现一个TCP服务器?(中)
│   │   │   ├─38|成果优化:怎么实现一个TCP服务器?(下)
│   │   │   ├─39-驯服泛型:了解类型参数
│   │   │   ├─40|驯服泛型:定义泛型约束
│   │   │   ├─41-驯服泛型:明确使用时机
│   │   │   ├─元旦快乐|这是一份暂时停更的声明
│   │   │   ├─加餐|作为GoModule的作者,你应该知道的几件事
│   │   │   ├─加餐|如何拉取私有的GoModule?
│   │   │   ├─加餐|我“私藏”的那些优质且权威的Go语言学习资料
│   │   │   ├─加餐|聊聊Go1
│   │   │   ├─加餐|聊聊Go语言的指针
│   │   │   ├─加餐|聊聊最近大热的Go泛型
│   │   │   ├─大咖助阵|叶剑峰:Go语言中常用的那些代码优化点
│   │   │   ├─大咖助阵|大明:Go泛型,泛了,但没有完全泛
│   │   │   ├─大咖助阵|孔令飞:从小白到“老鸟”,我的Go语言进阶之路
│   │   │   ├─大咖助阵|徐祥曦:从销售到分布式存储工程师,我与Go的故事
│   │   │   ├─大咖助阵|曹春晖:聊聊Go语言的GC实现
│   │   │   ├─大咖助阵|海纳:聊聊语言中的类型系统与泛型
│   │   │   ├─开篇词|这样入门Go,才能少走弯路
│   │   │   ├─期中测试|一起检验下你的学习成果吧
│   │   │   ├─用户故事|罗杰:我的Go语言学习之路
│   │   │   ├─结束语|和你一起迎接Go的黄金十年
│   │   │   ├─结课测试|快来检验下你的学习成果吧!
│   │   │   └─结课测试|快来检验下你的学习成果吧!
│   │   ├─170玩转Vue3全家桶
│   │   │   ├─01-宏观视角:从前端框架发展史聊聊为什么要学Vue3?
│   │   │   ├─02-上手:一个清单应用帮你入门Vue
│   │   │   ├─03-新特性:初探Vue3新特性
│   │   │   ├─04-升级:Vue2项目如何升级到Vue3?
│   │   │   ├─05-项目启动:搭建Vue3工程化项目第一步
│   │   │   ├─06-新的代码组织方式:CompositionAPI+-scriptsetup-到底好在哪里?
│   │   │   ├─07-巧妙的响应式:深入理解Vue3的响应式机制
│   │   │   ├─08-组件化:如何像搭积木一样开发网页?
│   │   │   ├─09-动画:Vue中如何实现动画效果?
│   │   │   ├─09-动画:Vue中如何实现动画效果?
│   │   │   ├─10-数据流:如何使用Vuex设计你的数据流
│   │   │   ├─11-路由:新一代vue-router带来什么变化
│   │   │   ├─12-调试:提高开发效率必备的VueDevtools
│   │   │   ├─13-JSX:如何利用JSX应对更灵活的开发场景?
│   │   │   ├─14-TypeScript:Vue3中如何使用TypeScript?
│   │   │   ├─15-实战痛点1:复杂Vue项目的规范和基础库封装
│   │   │   ├─16-实战痛点2:项目开发中的权限系统
│   │   │   ├─17-实战痛点3:Vue3中如何集成第三方框架
│   │   │   ├─170玩转Vue3全家桶
│   │   │   ├─18-实战痛点4:Vue3项目中的性能优化
│   │   │   ├─19-实战痛点5:如何打包发布你的Vue3应用?
│   │   │   ├─20|组件库:如何设计你自己的通用组件库?
│   │   │   ├─21-单元测试:如何使用TDD开发一个组件?
│   │   │   ├─22|表单:如何设计一个表单组件?
│   │   │   ├─23-弹窗:如何设计一个弹窗组件?
│   │   │   ├─24|树:如何设计一个树形组件?
│   │   │   ├─25|表格:如何设计一个表格组件?
│   │   │   ├─26|文档:如何给你的组件库设计一个可交互式文档?
│   │   │   ├─27|自定义渲染器:如何实现Vue的跨端渲染?
│   │   │   ├─28|响应式:万能的面试题,怎么手写响应式系统
│   │   │   ├─29|运行时:Vue在浏览器里是怎么跑起来的?
│   │   │   ├─30|虚拟DOM(上):如何通过虚拟DOM更新页面?
│   │   │   ├─31|虚拟DOM(下):想看懂虚拟DOM算法,先刷个算法题
│   │   │   ├─32|编译原理(上):手写一个迷你Vue3Compiler的入门原理
│   │   │   ├─33-编译原理(中):VueCompiler模块全解析
│   │   │   ├─34-编译原理(下):编译原理给我们带来了什么?
│   │   │   ├─35|Vite原理:写一个迷你的Vite
│   │   │   ├─36|数据流原理:Vuex&Pinia源码剖析
│   │   │   ├─37|前端路由原理:vue-router源码剖析
│   │   │   ├─38|服务端渲染原理:Vue3中的SSR是如何实现的?
│   │   │   ├─加餐01|什么是好的项目?
│   │   │   ├─加餐02|深入TypeScript
│   │   │   ├─开篇词-如何借助Vue3建构你的前端知识体系?
│   │   │   ├─用户故事|有了手感,才能真正把知识学透
│   │   │   ├─结束语|Vue3生态源码到底给我们带来了什么?
│   │   │   └─结束语|Vue3生态源码到底给我们带来了什么?
│   │   ├─171全链路压测实战30讲
│   │   │   ├─01-全链路压测:为什么很多测试人员迷信它?
│   │   │   ├─02-RESAR全链路流程:如何搞定所有容量场景?
│   │   │   ├─03-压测方案:你是否忽略了一个重量级文档?
│   │   │   ├─04-核心链路:如何梳理符合真实业务场景的核心链路?
│   │   │   ├─05-铺底数据:真实的压测数据应该做成什么样子?
│   │   │   ├─06-流量构建:流量平台如何选型?
│   │   │   ├─07-全栈监控:如何设计全栈监控策略?
│   │   │   ├─08-基础设施:全链路压测的环境有什么特点?
│   │   │   ├─09-压测模型:如何建立一套完整的全链路压测模型?
│   │   │   ├─10-场景执行:压测执行过程中的关键步骤是什么?
│   │   │   ├─11-链路追踪:如何选择一款适合自己项目的工具?
│   │   │   ├─12-链路追踪:如何对一个具体的项目进行追踪改造?
│   │   │   ├─13-标记透传:微服务系统如何做标记透传方案选型?
│   │   │   ├─14-标记透传:如何基于微服务技术进行标记透传?
│   │   │   ├─15-流量隔离:MySQL数据库隔离是怎么做的?
│   │   │   ├─16-流量隔离:Redis缓存隔离是怎么做的?
│   │   │   ├─17-流量隔离:MongoDB数据库隔离是怎么做的?
│   │   │   ├─17-流量隔离:MongoDB数据库隔离是怎么做的?
│   │   │   ├─171全链路压测实战30讲
│   │   │   ├─18-流量隔离:RabbitMQ消息隔离是怎么做的?
│   │   │   ├─19|日志隔离:如何落地日志隔离?
│   │   │   ├─20-Mock:如何屏蔽第三方接口的影响?
│   │   │   ├─21-压测平台:高效搭建GoReplay压测平台
│   │   │   ├─22-压测平台:如何解决GoReplay动态数据关联?
│   │   │   ├─23-压测平台:如何改造对象存储和性能监控?
│   │   │   ├─24-压测平台:如何改造分布式调度平台?
│   │   │   ├─25-环境搭建:我们的系统是怎么搭建起来的?
│   │   │   ├─26-全局监控(上):如何快速落地全局监控?
│   │   │   ├─26-全局监控(上):如何快速落地全局监控?
│   │   │   ├─27-全局监控(下):如何快速落地全局监控?
│   │   │   ├─28-定向监控:怎样快速发现业务异常?
│   │   │   ├─29-基准场景:一个案例,带你搞懂基准场景的关键要点
│   │   │   ├─30-预压测:如何基于小流量快速验证容量压测效果?
│   │   │   ├─31-容量场景:决定线上容量场景的关键因素是什么?
│   │   │   ├─32-稳定性场景:怎样搞定线上稳定性场景?
│   │   │   ├─33-异常场景:如何模拟线上不同组件的异常场景?
│   │   │   ├─34-容量规划:如何精准地对生产系统做容量预估?
│   │   │   ├─35-压测报告:怎样写出一份让老板满意的报告?
│   │   │   ├─开篇词-打破认知神话,做接地气的全链路压测
│   │   │   ├─期末考试-《全链路压测实战30讲》满分试卷,等你来挑战!
│   │   │   ├─结束语-做能落地的全链路压测项目
│   │   │   └─结束语-做能落地的全链路压测项目
│   │   ├─172编程高手必学的内存知识
│   │   │   ├─01|虚拟内存:为什么可用内存会远超物理内存?
│   │   │   ├─02|聊聊x86体系架构中的实模式和保护模式
│   │   │   ├─03-内存布局:应用程序是如何安排数据的?
│   │   │   ├─04-深入理解栈:从CPU和函数的视角看栈的管理
│   │   │   ├─05-栈的魔法:从栈切换的角度理解进程和协程
│   │   │   ├─06-静态链接:变量与内存地址是如何映射的?
│   │   │   ├─07-动态链接(上):地址无关代码是如何生成的?
│   │   │   ├─08-动态链接(下):延迟绑定与动态链接器是什么?
│   │   │   ├─09-深入理解堆:malloc和内存池是怎么回事?
│   │   │   ├─10-页中断:fork、mmap背后的保护神
│   │   │   ├─11-即时编译:高性能JVM的核心秘密
│   │   │   ├─12-内存虚拟化:云原生时代的奠基者
│   │   │   ├─12-内存虚拟化:云原生时代的奠基者
│   │   │   ├─13-存储电路:计算机存储芯片的电路结构是怎样的?
│   │   │   ├─14-CPUCache:访存速度是如何大幅提升的?
│   │   │   ├─15-MESI协议:多核CPU是如何同步高速缓存的?
│   │   │   ├─16-内存模型:有了MESI为什么还需要内存屏障?
│   │   │   ├─17-NUMA:非均匀访存带来了哪些提升与挑战?
│   │   │   ├─172编程高手必学的内存知识
│   │   │   ├─18-Java内存模型:Java中的volatile有什么用?
│   │   │   ├─18-Java内存模型:Java中的volatile有什么用?
│   │   │   ├─19-垃圾回收:如何避免内存泄露?
│   │   │   ├─20-Scavenge:基于copy的垃圾回收算法
│   │   │   ├─21-分代算法:基于生命周期的内存管理
│   │   │   ├─22-G1GC:分区回收算法说的是什么?
│   │   │   ├─23-PauselessGC:挑战无暂停的垃圾回收
│   │   │   ├─24-GC实例:Python和Go的内存管理机制是怎样的?
│   │   │   ├─不定期福利第一期-海纳:我是如何学习计算机知识的?
│   │   │   ├─不定期福利第二期-软件篇答疑
│   │   │   ├─导学(一)-拆解CPU的基本结构和运行原理
│   │   │   ├─导学(三)-一个CPU是怎么寻址的?
│   │   │   ├─导学(二)-汇编语言是怎么一回事?
│   │   │   ├─开篇词|为什么你要系统学习计算机的内存知识?
│   │   │   ├─期末测试-来赴一场满分之约吧!
│   │   │   ├─直播加餐|链接器和加载器是如何为你工作的?(合集)
│   │   │   ├─结束语-自主基础软件开发的那片星辰大海
│   │   │   └─结束语-自主基础软件开发的那片星辰大海
│   │   ├─173超级访谈:对话张雪峰
│   │   │   ├─01-收购百度外卖:“土八路”收购“正规军”
│   │   │   ├─02-饿了么上海本土团队和百度外卖北京团队的冲突
│   │   │   ├─03-不够果敢带来的内耗
│   │   │   ├─04-“戏剧性”的裁员,反思组织融合之难“难于上青天”
│   │   │   ├─05-职业成长:从校园到职场的蜕变
│   │   │   ├─06-拆解CTO:CTO的岗位职责
│   │   │   ├─07-对程序员来说,自由价更高
│   │   │   ├─08-50X增长:管理35到1800人团队的难题
│   │   │   ├─09-如何用人?
│   │   │   ├─10-管理的不足:不团建,管理不到毛细血管
│   │   │   ├─11-CTO要给自己找backup
│   │   │   ├─12-CTO的艰难时刻:差点引咎辞职
│   │   │   ├─13-大的决策与难做的决策
│   │   │   ├─14-不够坚定:异地多活没有一步到位的遗憾
│   │   │   ├─15-兴趣与个人认知
│   │   │   ├─173超级访谈:对话张雪峰
│   │   │   ├─有奖征集!你填写毕业问卷了吗?
│   │   │   ├─篇首语-张雪峰:我参与的饿了么成长轨迹中,这些事需要反思
│   │   │   └─篇首语-张雪峰:我参与的饿了么成长轨迹中,这些事需要反思
│   │   ├─174深入剖析Java新特性
│   │   │   ├─01-JShell:怎么快速验证简单的小问题?
│   │   │   ├─02-文字块:怎么编写所见即所得的字符串?
│   │   │   ├─03-档案类:怎么精简地表达不可变数据?
│   │   │   ├─04-封闭类:怎么刹住失控的扩展性?
│   │   │   ├─05-类型匹配:怎么切除臃肿的强制转换?
│   │   │   ├─06-switch表达式:怎么简化多情景操作?
│   │   │   ├─07-switch匹配:能不能适配不同的类型?
│   │   │   ├─08-抛出异常,是不是错误处理的第一选择?
│   │   │   ├─09-异常恢复,付出的代价能不能少一点?
│   │   │   ├─10-Flow,是异步编程的终极选择吗?
│   │   │   ├─11-矢量运算:Java的机器学习要来了吗?
│   │   │   ├─12-外部内存接口:零拷贝的障碍还有多少?
│   │   │   ├─13-外部函数接口,能不能取代Java本地接口?
│   │   │   ├─14-禁止空指针,该怎么避免崩溃的空指针?
│   │   │   ├─15-现代密码:你用的加密算法过时了吗?
│   │   │   ├─16-改进的废弃,怎么避免使用废弃的特性?
│   │   │   ├─17-模块系统:为什么Java需要模块化?
│   │   │   ├─174深入剖析Java新特性
│   │   │   ├─18-模块系统:怎么模块化你的应用程序?
│   │   │   ├─开篇词-拥抱Java新特性,像设计者一样工作和思考
│   │   │   ├─用户故事-与新特性开发者对话
│   │   │   ├─用户故事-保持好奇心,积极拥抱变化
│   │   │   ├─结束语-Java的未来,依然是星辰大海
│   │   │