极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新

极客时间-专栏+视频Svip会员|持续更新|重磅首发|2022年12月已更新
极客时间-专栏+视频Svip会员|持续更新|重磅首发|2022年12月已更新 1

课程介绍(A001078):

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

2022年12月已 更新!!

2022年九月已 更新!!

2022年八月已 更新!!

2022年七月已 更新!!

2022年六月已 更新!!

2022年五月已 更新!!

2022年四月已 更新!!

2022年三月已 更新!!

2022年1月已 更新!!

(专栏+视频课262门课)

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

极客时间-专栏+视频Svip会员|持续更新|重磅首发|2022年12月已更新
极客时间-专栏+视频Svip会员|持续更新|重磅首发|2022年12月已更新 2
极客时间-专栏+视频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的未来,依然是星辰大海
│   │   │   └─结束语-Java的未来,依然是星辰大海
│   │   ├─175攻克视频技术
│   │   │   ├─01|基本概念:从参数的角度看视频图像
│   │   │   ├─02|YUV&RGB:原来图像是这么丰富多彩的
│   │   │   ├─02|YUV&RGB:原来图像是这么丰富多彩的
│   │   │   ├─03|缩放算法:如何高质量地缩放图像?
│   │   │   ├─04|编码原理:视频究竟是怎么编码压缩的?
│   │   │   ├─05|码流结构:原来你是这样的H264
│   │   │   ├─06|帧内预测:如何减少空间冗余?
│   │   │   ├─07|帧间预测:如何减少时间冗余?
│   │   │   ├─08|变换量化:如何减少视觉冗余?
│   │   │   ├─09|RTP&RTCP:如何正确地将视频装进RTP中?
│   │   │   ├─10|带宽预测:3大算法准确预估网络带宽
│   │   │   ├─10|带宽预测:3大算法准确预估网络带宽
│   │   │   ├─11|码控算法:如何控制视频的编码码率?
│   │   │   ├─12|JitterBuffer:拿什么拯救你,花屏卡顿问题
│   │   │   ├─13|SVC:如何实现视频编码可伸缩?
│   │   │   ├─14|MP4&FLV:不要再说AVI了
│   │   │   ├─15|音画同步:如何让声音和画面手拉手前进?
│   │   │   ├─175攻克视频技术
│   │   │   ├─加餐|基于纯浏览器的视频会议方案探究
│   │   │   ├─开篇词|为什么说视频开发是程序员的一片蓝海?
│   │   │   ├─结束语|信心比黄金更重要
│   │   │   └─结束语|信心比黄金更重要
│   │   ├─176搞定音频技术
│   │   │   ├─01|声音是如何保存成数字信号的?
│   │   │   ├─02|如何量化分析语音信号?
│   │   │   ├─03|如何分析与处理音乐信号?
│   │   │   ├─04|如何评价音频质量的好与坏?
│   │   │   ├─05|音频降噪如何对症下药?
│   │   │   ├─06|如何将AI技术运用到降噪中?
│   │   │   ├─07|如何通过算法自动快速地消除回声?
│   │   │   ├─08|回声消除算法实践指南
│   │   │   ├─09|音频编解码器是如何工作的?
│   │   │   ├─09|音频编解码器是如何工作的?
│   │   │   ├─10|如何选择一个适合你的编解码器?
│   │   │   ├─11|网络差怎么办?音频网络传输与抗弱网策略
│   │   │   ├─12|空间音频入门:如何实现“声临其境”?
│   │   │   ├─13|如何利用HRTF实现听音辨位?
│   │   │   ├─14|音效三剑客:变调、均衡器、混响
│   │   │   ├─15|AI变声:音频AI技术的集大成者
│   │   │   ├─176搞定音频技术
│   │   │   ├─加餐|音频技术漫谈之好声音是怎么炼成的?
│   │   │   ├─开篇词|实时互动强势发展,如何快速入门音频技术?
│   │   │   ├─结束语|选择比努力更重要
│   │   │   └─结束语|选择比努力更重要
│   │   ├─177郭东白的架构课
│   │   │   ├─01|模块导学:是什么在影响架构活动的成败?
│   │   │   ├─02|法则一:为什么有些架构活动会没有正确的目标?
│   │   │   ├─03|法则一:如何找到唯一且正确的架构目标?
│   │   │   ├─04|法则二:架构师为什么要学习马斯洛的需求理论?
│   │   │   ├─05|法则二:研发人员的人性需求是如何影响架构活动成败的?
│   │   │   ├─06|法则二:拼多多是如何通过洞察用户人性脱颖而出的?
│   │   │   ├─07|法则三:架构师如何找到自己的商业模式?
│   │   │   ├─07|法则三:架构师如何找到自己的商业模式?
│   │   │   ├─08|法则三:架构师如何在一定时间内最大化自己的增量价值?
│   │   │   ├─09|法则四:为什么要顺应技术的生命周期?
│   │   │   ├─10|法则四:架构设计中怎么判断和利用技术趋势?
│   │   │   ├─11|法则五:架构师为什么要关注技术体系的外部适应性?
│   │   │   ├─12|法则五:如何提升一个架构设计的外部适应性?
│   │   │   ├─13|法则六:如何鉴别文化环境是否有利于架构师的生存?
│   │   │   ├─14|模块小结:这些生存法则的逻辑是什么?
│   │   │   ├─15|模块导读:互联网时代架构师都面临哪些新挑战?
│   │   │   ├─16|通用技能(上):如何帮助团队达成共识与控制风险?
│   │   │   ├─177郭东白的架构课
│   │   │   ├─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|职业成长(下):架构师成长的充分条件是什么?
│   │   │   ├─42|职业选择:我应该去哪种类型的公司工作?
│   │   │   ├─43|模块小结:什么是架构师成长的关键能力?
│   │   │   ├─44|模块导读:假如我只能向上帝要一个技能
│   │   │   ├─45|思维定势(上):价值思维和实证思维
│   │   │   ├─46|思维定势(下):去中心化思维和成长思维
│   │   │   ├─47|架构活动中的思维模式(上):协同式的全方位思维和批判思维
│   │   │   ├─48|架构活动中的思维模式(下):实用主义和反思思维
│   │   │   ├─49|往来无白丁:如何判断一个人的思考质量?
│   │   │   ├─50|思考实例(上):探险家Amundson是凭什么胜出的?
│   │   │   ├─51|思考实例(下):南极探险的第一性要素是什么?
│   │   │   ├─52|思考实例(上):中台既不是银弹,也不是哑弹
│   │   │   ├─53|思考实例(下):到底是什么因素左右了中台的成败?
│   │   │   ├─54|模块小结:如何进一步提升自己的思考力?
│   │   │   ├─对话于冰(上)|怎样成为那个有准备的人?
│   │   │   ├─对话于冰(下)|架构师如何为企业创造商业价值?
│   │   │   ├─对话于冰(中)|一个具有更高职业天花板的技术人,是怎样的?
│   │   │   ├─对话陈华良(上)|跳槽时的决策逻辑是什么?
│   │   │   ├─对话陈华良(下)|成长快的那些人,都有什么特性?
│   │   │   ├─开篇词|没有战略意图,就成不了一个顶尖的架构师
│   │   │   ├─春节快乐|一篇暂停更新的说明
│   │   │   ├─期末测试|赴一场100分之约!
│   │   │   ├─直播加餐01|技术战略到底是什么?
│   │   │   ├─直播加餐02|阿里速卖通是如何在竞争变化中做技术战略的?
│   │   │   ├─结束语|在小行星撞击地球之前为恐龙装上翅膀
│   │   │   ├─编辑加餐|六张图,带你回顾架构师的六条生存法则
│   │   │   ├─编辑加餐|十张图,带你回顾架构活动的完整过程
│   │   │   └─编辑加餐|十张图,带你回顾架构活动的完整过程
│   │   ├─178深入C语言和程序运行原理
│   │   │   ├─01|快速回顾:一个C程序的完整生命周期
│   │   │   ├─02|程序基石:数据与量值是如何被组织的?
│   │   │   ├─03|计算单元:运算符是如何工作的?
│   │   │   ├─04|控制逻辑:表达式和语句是如何协调程序运行的?
│   │   │   ├─05|代码封装(上):函数是如何被调用的?
│   │   │   ├─06|代码封装(下):函数是如何被调用的?
│   │   │   ├─07|整合数据:枚举、结构与联合是如何实现的?
│   │   │   ├─08|操控资源:指针是如何灵活使用内存的?
│   │   │   ├─08|操控资源:指针是如何灵活使用内存的?
│   │   │   ├─09|编译准备:预处理器是怎样处理程序代码的?
│   │   │   ├─10|标准库:字符、字符串处理与数学计算
│   │   │   ├─11|标准库:深入理解标准IO
│   │   │   ├─12|标准库:非本地跳转与可变参数是怎样实现的?
│   │   │   ├─13|标准库:你需要了解的C并发编程基础知识有哪些?
│   │   │   ├─14|标准库:如何使用互斥量等技术协调线程运行?
│   │   │   ├─15|标准库:信号与操作系统软中断有什么关系?
│   │   │   ├─16|标准库:日期、时间与实用函数
│   │   │   ├─178深入C语言和程序运行原理
│   │   │   ├─17|标准库:断言、错误处理与对齐
│   │   │   ├─18|极致优化(上):如何实现高性能的C程序?
│   │   │   ├─19|极致优化(下):如何实现高性能的C程序?
│   │   │   ├─20|生产加速:C项目需要考虑的编码规范有哪些?
│   │   │   ├─21|生产加速:如何使用自动化测试确保C项目质量?
│   │   │   ├─22|生产加速:如何使用结构化编译加速C项目构建?
│   │   │   ├─22|生产加速:如何使用结构化编译加速C项目构建?
│   │   │   ├─23|实战项目(上):一个简单的高性能HTTPServer
│   │   │   ├─24|实战项目(下):一个简单的高性能HTTPServer
│   │   │   ├─25|可执行二进制文件里有什么?
│   │   │   ├─26|进程是如何使用操作系统内存的?
│   │   │   ├─27|编译器在链接程序时发生了什么?
│   │   │   ├─28|程序可以在运行时进行链接吗?
│   │   │   ├─29|C程序的入口真的是main函数吗?
│   │   │   ├─30|ABI与API究竟有什么区别?
│   │   │   ├─31|程序如何与操作系统交互?
│   │   │   ├─加餐-和C语言相比,C++有哪些不同的语言特性?
│   │   │   ├─大咖助阵|LMOS:为什么说C语言是一把瑞士军刀?
│   │   │   ├─大咖助阵|LMOS:用面向对象的思想开发C语言程序
│   │   │   ├─大咖助阵|TonyBai:Go程序员拥抱C语言简明指南
│   │   │   ├─大咖助阵|海纳:C语言是如何编译执行的?(一)
│   │   │   ├─大咖助阵|海纳:C语言是如何编译执行的?(三)
│   │   │   ├─大咖助阵|海纳:C语言是如何编译执行的?(二)
│   │   │   ├─大咖助阵|罗剑锋:为什么NGINX是C编程的经典范本?
│   │   │   ├─开篇词|时至今日,如何更好地拥抱现代C语言?
│   │   │   ├─春节策划一-构建自己的知识体系,让学习的“飞轮”持续转动
│   │   │   ├─春节策划一-构建自己的知识体系,让学习的“飞轮”持续转动
│   │   │   ├─春节策划三-JITCompilation:一种特殊的程序执行方式
│   │   │   ├─春节策划二-关于C语言,我有这些书籍想推荐给你
│   │   │   ├─期中测试|来检验下你的学习成果吧!
│   │   │   ├─期末考试|来赴一场满分之约吧!
│   │   │   ├─结束语|工业4
│   │   │   ├─课前热身|学习这门课前,你需要了解哪些知识?
│   │   │   ├─课堂答疑(一)|前置篇、C核心语法实现篇问题集锦
│   │   │   ├─课堂答疑(二)|C工程实战篇问题集锦
│   │   │   └─课堂答疑(二)|C工程实战篇问题集锦
│   │   ├─179业务开发算法50讲
│   │   │   ├─01|动态数组:按需分配的vector为什么要二倍扩容?
│   │   │   ├─02|双向链表:list如何实现高效地插入与删除?
│   │   │   ├─03|双端队列:并行计算中的工作窃取算法如何实现?
│   │   │   ├─04|栈:函数调用的秘密究竟是什么?
│   │   │   ├─05|HashMap:一个优秀的散列表是怎么来的?
│   │   │   ├─06|TreeMap:红黑树真的有那么难吗?
│   │   │   ├─06|TreeMap:红黑树真的有那么难吗?
│   │   │   ├─07|堆:如何实现一个高效的优先队列?
│   │   │   ├─08|外部排序:如何为TB级数据排序?
│   │   │   ├─09|二分:如何高效查询Kafka中的消息?
│   │   │   ├─10|搜索算法:一起来写一个简单的爬虫?
│   │   │   ├─11|字符串匹配:如何实现最快的grep工具
│   │   │   ├─12|拓扑排序:Webpack是如何确定构建顺序的?
│   │   │   ├─13|哈夫曼树:HTTP2
│   │   │   ├─14|调度算法:操作系统中的进程是如何调度的?
│   │   │   ├─15|LRU:在虚拟内存中页面是如何置换的?
│   │   │   ├─16|日志型文件系统:写入文件的时候断电了会发生什么?
│   │   │   ├─179业务开发算法50讲
│   │   │   ├─17|选路算法:Dijkstra是如何解决最短路问题的?
│   │   │   ├─18|选路算法:链路状态算法是如何分发全局信息的
│   │   │   ├─19|选路算法:距离矢量算法为什么会产生无穷计算问题?
│   │   │   ├─20|滑动窗口:TCP是如何进行流量控制和拥塞控制的?
│   │   │   ├─21|分而治之:MapReduce如何解决大规模分布式计算问题
│   │   │   ├─22|PageRank:谷歌是如何计算网页排名的
│   │   │   ├─23|Raft:分布式系统间如何达成共识?
│   │   │   ├─24|UUID:如何高效生成全局的唯一ID?
│   │   │   ├─25|一致性哈希:如何在集群上合理分配流量?
│   │   │   ├─26|B+Tree:PostgreSQL的索引是如何建立的?
│   │   │   ├─27|LSMTree:LevelDB的索引是如何建立的?
│   │   │   ├─28|MVCC:如何突破数据库并发读写性能瓶颈?
│   │   │   ├─29|位图:如何用更少空间对大量数据进行去重和排序?
│   │   │   ├─30|布隆过滤器:如何解决Redis缓存穿透问题?
│   │   │   ├─31|跳表:Redis是如何存储有序集合的?
│   │   │   ├─32|时间轮:Kafka是如何实现定时任务的?
│   │   │   ├─33|限流算法:如何防止系统过载?
│   │   │   ├─33|限流算法:如何防止系统过载?
│   │   │   ├─34|前缀树:Web框架中如何实现路由匹配?
│   │   │   ├─35|洗牌算法:随机的哲学,如何用程序来洗一副牌?
│   │   │   ├─35|洗牌算法:随机的哲学,如何用程序来洗一副牌?
│   │   │   ├─36|分布式事务:如何理解两阶段提交?
│   │   │   ├─37|Thrift编码方法:为什么RPC往往不采用JSON作为网络传输格式?
│   │   │   ├─38|倒排索引:搜索引擎是如何做全文检索的?
│   │   │   ├─39|Geohash:点外卖时我们是如何查找到附近餐厅的?
│   │   │   ├─40|垃圾回收:现代语言是如何自动管理回收内存的?
│   │   │   ├─先导篇|诶,这个gitdiff好像不是很直观?
│   │   │   ├─即学即练|分布式篇:复习卡一键直达
│   │   │   ├─即学即练|基础数据结构篇:复习卡&算法题特训
│   │   │   ├─即学即练|基础算法思想篇:复习卡&算法题特训
│   │   │   ├─即学即练|工程实战篇:复习卡一键直达
│   │   │   ├─即学即练|操作系统篇:复习卡&算法题特训
│   │   │   ├─即学即练|计算机网络篇:复习卡&算法题特训
│   │   │   ├─开篇词|真实世界的算法,和你想的不一样
│   │   │   ├─特别策划|面试:BAT面试三关准备方法大揭秘
│   │   │   ├─结束语|在技术的世界里享受思维的乐趣
│   │   │   └─结束语|在技术的世界里享受思维的乐趣
│   │   ├─180SpringCloud微服务项目实战
│   │   │   ├─01-是什么推动了单体应用到微服务架构的演进?
│   │   │   ├─01-是什么推动了单体应用到微服务架构的演进?
│   │   │   ├─02-微服务全家桶:走进SpringCloud的世界
│   │   │   ├─03-初窥门径:我们要搭建一个怎样的微服务实战项目?
│   │   │   ├─04-十八般兵器:如何搭建项目所需的开发环境?
│   │   │   ├─05-牛刀小试:如何搭建优惠券模板服务?
│   │   │   ├─06-牛刀小试:如何搭建优惠券计算服务和用户服务?
│   │   │   ├─07-Nacos体系架构:什么是服务治理?
│   │   │   ├─08-服务治理:Nacos集群环境搭建
│   │   │   ├─08-服务治理:Nacos集群环境搭建
│   │   │   ├─09-集成Nacos:如何将服务提供者注册到Nacos服务器?
│   │   │   ├─10-集成Nacos:如何通过服务发现机制向服务提供者发起调用?
│   │   │   ├─11-Loadbalancer实战:通过自定义负载均衡策略实现金丝雀测试
│   │   │   ├─12-OpenFeign:服务间调用组件OpenFeign是怎么“隔空取物”的?
│   │   │   ├─13-OpenFeign实战:如何实现服务间调用功能?
│   │   │   ├─14-OpenFeign实战:OpenFeign组件有哪些高级玩法?
│   │   │   ├─14-OpenFeign实战:OpenFeign组件有哪些高级玩法?
│   │   │   ├─15-配置中心在微服务中发挥着怎样的作用?
│   │   │   ├─16-如何集成NacosConfig实现配置项动态刷新?
│   │   │   ├─17-Sentinel体系结构:什么是服务容错(降级熔断、流量整形)
│   │   │   ├─18-Sentinel实战:如何实施流量整形与限流策略?
│   │   │   ├─180SpringCloud微服务项目实战
│   │   │   ├─19-Sentinel实战:如何为项目添加异常降级方案?
│   │   │   ├─20-Sentinel实战:如何接入Nacos实现规则持久化?
│   │   │   ├─21-Sleuth体系架构:为什么微服务架构需要链路追踪?
│   │   │   ├─22-调用链追踪:集成Sleuth和Zipkin,实现链路打标
│   │   │   ├─22-调用链追踪:集成Sleuth和Zipkin,实现链路打标
│   │   │   ├─23-调用链追踪:如何通过ELK实现日志检索?
│   │   │   ├─24-为什么微服务架构少不了微服务网关?
│   │   │   ├─25-微服务网关:Gateway中的路由和谓词有何应用?
│   │   │   ├─26-微服务网关:如何设置请求转发、跨域和限流规则?
│   │   │   ├─27-微服务网关:如何借助Nacos实现动态路由规则?
│   │   │   ├─28-消息驱动:谁说消息队列只能削峰填谷?
│   │   │   ├─29-消息驱动:如何集成Stream实现消息驱动?
│   │   │   ├─30-消息驱动:如何高效处理Stream中的异常?
│   │   │   ├─31-消息驱动:如何通过RabbitMQ插件实现延迟消息?
│   │   │   ├─32-AlibabaSeata框架:什么是分布式事务?
│   │   │   ├─33-分布式事务:搭建Seata服务器
│   │   │   ├─34-分布式事务:使用Nacos+Seata实现AT模式
│   │   │   ├─35-分布式事务:使用Nacos+Seata实现TCC补偿模式
│   │   │   ├─加餐:说透微服务-什么是主链路规划?
│   │   │   ├─开篇词-跟着学,你也能成为微服务高手
│   │   │   ├─结束语-站在聚光灯下
│   │   │   └─结束语-站在聚光灯下
│   │   ├─181Web漏洞挖掘实战
│   │   │   ├─01|失效的访问控制:攻击者如何获取其他用户信息?
│   │   │   ├─02|路径穿越:你的Web应用系统成了攻击者的资源管理器?
│   │   │   ├─03-敏感数据泄露:攻击者如何获取用户账户?
│   │   │   ├─04|权限不合理:攻击者进来就是root权限?
│   │   │   ├─05|CSRF:为什么用户的操作他自己不承认?
│   │   │   ├─06|加密失败:使用了加密算法也会被破解吗?
│   │   │   ├─07|弱编码:程序之间的沟通语言安全吗?
│   │   │   ├─08|数字证书:攻击者可以伪造证书吗?
│   │   │   ├─09|密码算法问题:数学知识如何提高代码可靠性?
│   │   │   ├─10|弱随机数生成器:攻击者如何预测随机数?
│   │   │   ├─10|弱随机数生成器:攻击者如何预测随机数?
│   │   │   ├─11|忘记加“盐”:加密结果强度不够吗?
│   │   │   ├─12|注入(上):SQL注入起手式
│   │   │   ├─12|注入(上):SQL注入起手式
│   │   │   ├─13|注入(下):SQL注入技战法及相关安全实践
│   │   │   ├─14|自动化注入神器(一):sqlmap的设计思路解析
│   │   │   ├─15|自动化注入神器(二):sqlmap的设计架构解析
│   │   │   ├─16|自动化注入神器(三):sqlmap的核心实现拆解
│   │   │   ├─17|自动化注入神器(四):sqlmap的核心功能解析
│   │   │   ├─17|自动化注入神器(四):sqlmap的核心功能解析
│   │   │   ├─18-命令注入:开发的Web应用为什么成为了攻击者的bash?
│   │   │   ├─181Web漏洞挖掘实战
│   │   │   ├─19-失效的输入检测(上):攻击者有哪些绕过方案?
│   │   │   ├─20-失效的输入检测(下):攻击者有哪些绕过方案?
│   │   │   ├─21|XSS(上):前端攻防的主战场
│   │   │   ├─21|XSS(上):前端攻防的主战场
│   │   │   ├─22|XSS(中):跨站脚本攻击的危害性
│   │   │   ├─23|XSS(下):检测与防御方案解析
│   │   │   ├─24|资源注入:攻击方式为什么会升级?
│   │   │   ├─25|业务逻辑漏洞:好的开始是成功的一半
│   │   │   ├─26|包含敏感信息的报错:将安全开发标准应用到项目中
│   │   │   ├─27|用户账户安全:账户安全体系设计方案与实践
│   │   │   ├─28|安全配置错误:安全问题不只是代码安全
│   │   │   ├─29|Session与Cookie:账户体系的安全设计原理
│   │   │   ├─30|HTTPHeader安全标志:协议级别的安全支持
│   │   │   ├─31|易受攻击和过时的组件:DevSecOps与依赖项安全检查
│   │   │   ├─32|软件和数据完整性故障:SolarWinds事件的幕后??
│   │   │   ├─33|SSRF:穿越边界防护的利刃
│   │   │   ├─34|CrawlerVSFuzzing:DAST与机器学习
│   │   │   ├─35|自动化攻防:低代码驱动的渗透工具积累
│   │   │   ├─36|智能攻防:构建个性化攻防平台
│   │   │   ├─大咖助场|数字证书,困境与未来
│   │   │   ├─导读|解读OWASPTop102021
│   │   │   ├─开篇词|从黑客的视角找漏洞,从安全的角度优雅coding
│   │   │   ├─春节策划(一)|视频课内容精选:Web渗透测试工具教学
│   │   │   ├─春节策划(一)|视频课内容精选:Web渗透测试工具教学
│   │   │   ├─春节策划(三)-一套测试题,看看对课程内容的掌握情况
│   │   │   ├─春节策划(二)|给你推荐4本Web安全图书
│   │   │   ├─结束语|无畏前行
│   │   │   └─结束语|无畏前行
│   │   ├─182去无方向的信
│   │   │   ├─182去无方向的信
│   │   │   ├─回信|编辑手记
│   │   │   ├─布步佐的年终小记(2021
│   │   │   ├─杳无音信-停更
│   │   │   ├─第一封信-去无方向的信
│   │   │   ├─第七封信-闹饥荒的时候,总有人是要挨饿的
│   │   │   ├─第三十一封信-什么相机是最好的相机?(卡片机&手机相机)
│   │   │   ├─第三十七封信|应该看的和最好别碰的
│   │   │   ├─第三十三封信-NOMO
│   │   │   ├─第三十九封信-看完照片儿以后我们要干什么?
│   │   │   ├─第三十二封信-其实,手机相机就挺好用的
│   │   │   ├─第三十五封信-颜色对是错的
│   │   │   ├─第三十八封信-看照片儿的时候我们要看什么?
│   │   │   ├─第三十六封信-那什么颜色才是对的?
│   │   │   ├─第三十四封信-我为什么喜欢NOMO?
│   │   │   ├─第三十封信-什么相机是最好的相机?(全宇宙最好用的相机)
│   │   │   ├─第三封信-我们坚决拥护大而少
│   │   │   ├─第九封信-阳光之下没什么新鲜事儿(上)
│   │   │   ├─第二十一封信-“要么横着涂,要么竖着涂”(下)
│   │   │   ├─第二十七封信-什么相机是最好的相机?(引子)
│   │   │   ├─第二十三封信-还是不对焦比较快(上)
│   │   │   ├─第二十九封信-什么相机是最好的相机?(成像质量)
│   │   │   ├─第二十二封信-还是不对焦比较快(引子)
│   │   │   ├─第二十五封信-还是不对焦比较快(下)
│   │   │   ├─第二十八封信-什么相机是最好的相机?(等效焦距)
│   │   │   ├─第二十六封信-还是不对焦比较快(附录)
│   │   │   ├─第二十四封信-还是不对焦比较快(中)
│   │   │   ├─第二十封信-“要么横着涂,要么竖着涂”(中)
│   │   │   ├─第二封信-能拍清楚就已经很好了
│   │   │   ├─第五十一封信-那我们应该从哪儿开始?(逼近-溜缝)
│   │   │   ├─第五十七封信-距离,关键是距离!
│   │   │   ├─第五十三封信-那我们应该从哪儿开始?(三角)
│   │   │   ├─第五十九封信-这些照片儿是不是出事儿了?
│   │   │   ├─第五十二封信-那我们应该从哪儿开始?(天空)
│   │   │   ├─第五十五封信-那我们应该从哪儿开始?(知其所以然)
│   │   │   ├─第五十八封信-你拍得不够好,是因为你离得不够远
│   │   │   ├─第五十六封信-什么照片儿是烂照片儿?
│   │   │   ├─第五十四封信-那我们应该从哪儿开始?(五彩斑斓的黑)
│   │   │   ├─第五十封信-那我们应该从哪儿开始?(横竖-边角-空区)
│   │   │   ├─第五封信-基本上一个有用的都没有
│   │   │   ├─第八封信-没有感情的拍照机器
│   │   │   ├─第六十一封信-谁认识你是谁啊
│   │   │   ├─第六十一封信-谁认识你是谁啊
│   │   │   ├─第六十七封信-一切都是为了不拍
│   │   │   ├─第六十三封信-看不懂就看不懂
│   │   │   ├─第六十九封信|周五三
│   │   │   ├─第六十二封信-万能的画册
│   │   │   ├─第六十五封信-心理障碍和道德困境
│   │   │   ├─第六十八封信-AllThatIsSolidMeltsintoAir
│   │   │   ├─第六十六封信-怪地球没有吸引力
│   │   │   ├─第六十四封信-遗憾的是,如果你真能拍清楚了,你可能就很难拍不清楚了
│   │   │   ├─第六十封信-是什么让我们有底气连脸都不要了?
│   │   │   ├─第六封信-副作用比药效更值得让人留心
│   │   │   ├─第十一封信-阳光之下没什么新鲜事儿(下)
│   │   │   ├─第十七封信-拧来拧去地你就完蛋了
│   │   │   ├─第十三封信-35mm的进退两难
│   │   │   ├─第十九封信-“要么横着涂,要么竖着涂”(上)
│   │   │   ├─第十二封信-我们坚决拥护我们坚决拥护的
│   │   │   ├─第十五封信-28mm是全宇宙最好用的镜头!
│   │   │   ├─第十八封信-“要么横着涂,要么竖着涂”(引子)
│   │   │   ├─第十六封信-28mm是全宇宙最好用的镜头?
│   │   │   ├─第十四封信-“必须拥有一支50mm镜头的十大理由”
│   │   │   ├─第十封信-阳光之下没什么新鲜事儿(中)
│   │   │   ├─第四十一封信-有意为之的偶然(引子)
│   │   │   ├─第四十七封信-什么照片儿是好照片儿?(引子)
│   │   │   ├─第四十三封信-有意为之的偶然(ImagesàlaSauvette)
│   │   │   ├─第四十九封信-什么照片儿是好照片儿?(难拍)
│   │   │   ├─第四十二封信-有意为之的偶然(创造画面)
│   │   │   ├─第四十五封信-意欲难平的执念
│   │   │   ├─第四十八封信-什么照片儿是好照片儿?(好看)
│   │   │   ├─第四十六封信-贪嗔痴慢疑
│   │   │   ├─第四十四封信-有意为之的偶然(生活的假象)
│   │   │   ├─第四十封信-拍照片儿如果只是拍照片儿该多好
│   │   │   ├─第四封信-0+0+0=0
│   │   │   └─第四封信-0+0+0=0
│   │   ├─183朱涛·Kotlin编程第一课
│   │   │   ├─01-Kotlin基础语法:正式开启学习之旅
│   │   │   ├─02-面向对象:理解Kotlin设计者的良苦用心
│   │   │   ├─02-面向对象:理解Kotlin设计者的良苦用心
│   │   │   ├─03-Kotlin原理:编译器在幕后干了哪些“好事”?
│   │   │   ├─04-实战:构建一个Kotlin版本的四则运算计算器
│   │   │   ├─05-object关键字:你到底有多少种用法?
│   │   │   ├─06-扩展:你的能力边界到底在哪里?
│   │   │   ├─07-高阶函数:为什么说函数是Kotlin的“一等公民”?
│   │   │   ├─08-实战:用Kotlin写一个英语词频统计程序
│   │   │   ├─09-委托:你为何总是被低估?
│   │   │   ├─10-泛型:逆变or协变,傻傻分不清?
│   │   │   ├─11-注解与反射:进阶必备技能
│   │   │   ├─11-注解与反射:进阶必备技能
│   │   │   ├─12-实战:用Kotlin实现一个网络请求框架KtHttp
│   │   │   ├─13-什么是“协程思维模型”?
│   │   │   ├─14-如何启动协程?
│   │   │   ├─14-如何启动协程?
│   │   │   ├─15-挂起函数:Kotlin协程的核心
│   │   │   ├─16-Job:协程也有生命周期吗?
│   │   │   ├─17-Context:万物皆为Context?
│   │   │   ├─18-实战:让KtHttp支持挂起函数
│   │   │   ├─183朱涛·Kotlin编程第一课
│   │   │   ├─19-Channel:为什么说Channel是“热”的?
│   │   │   ├─20-Flow:为什么说Flow是“冷”的?
│   │   │   ├─21-select:到底是在选择什么?
│   │   │   ├─22-并发:协程不需要处理同步吗?
│   │   │   ├─23-异常:try-catch居然会不起作用?坑!
│   │   │   ├─24-实战:让KtHttp支持Flow
│   │   │   ├─25-集合操作符:你也会“看完就忘”吗?
│   │   │   ├─26-协程源码的地图:如何读源码才不会迷失?
│   │   │   ├─26-协程源码的地图:如何读源码才不会迷失?
│   │   │   ├─27-图解挂起函数:原来你就是个状态机?
│   │   │   ├─28-launch的背后到底发生了什么?
│   │   │   ├─29-Dispatchers是如何工作的?
│   │   │   ├─30-CoroutineScope是如何管理协程的?
│   │   │   ├─31-图解Channel:如何理解它的CSP通信模型?
│   │   │   ├─32-图解Flow:原来你是只纸老虎?
│   │   │   ├─33-JavaAndroid开发者还会有未来吗?
│   │   │   ├─34-Kotlin与Jetpack简直是天生一对!
│   │   │   ├─35-用Kotlin写一个GitHubTrendingApp
│   │   │   ├─加餐一-初识Kotlin函数式编程
│   │   │   ├─加餐三-什么是“不变性思维”?
│   │   │   ├─加餐二-什么是“表达式思维”?
│   │   │   ├─加餐五-深入理解协程基础元素
│   │   │   ├─加餐四-什么是“空安全思维”?
│   │   │   ├─开篇词-入门Kotlin有多容易,精通Kotlin就有多难
│   │   │   ├─春节刷题计划(一)-当Kotlin遇上LeetCode
│   │   │   ├─春节刷题计划(三)-一题双解,搞定求解方程
│   │   │   ├─春节刷题计划(二)-一题三解,搞定版本号判断
│   │   │   ├─春节刷题计划(四)-一题三解,搞定分式加减法
│   │   │   ├─期中考试-用Kotlin实现图片处理程序
│   │   │   ├─答疑(一)-Java和Kotlin到底谁好谁坏?
│   │   │   ├─结束语-不忘初心
│   │   │   ├─结课测试-“Kotlin编程第一课”100分试卷等你来挑战!
│   │   │   ├─题目解答-期中考试版本参考实现
│   │   │   └─题目解答-期中考试版本参考实现
│   │   ├─184网络排查案例课
│   │   │   ├─01-网络模型和工具:网络为什么要分层?
│   │   │   ├─02-抓包分析技术初探:你会用tcpdump和Wireshark吗?
│   │   │   ├─03-握手:TCP连接都是用TCP协议沟通的吗?
│   │   │   ├─04-挥手:Nginx日志报connectionresetbypeer是怎么回事?
│   │   │   ├─05-定位防火墙(一):传输层的对比分析
│   │   │   ├─06-定位防火墙(二):网络层的精确打击
│   │   │   ├─07-保活机制:心跳包异常导致应用重启?
│   │   │   ├─07-保活机制:心跳包异常导致应用重启?
│   │   │   ├─08-分段:MTU引发的血案
│   │   │   ├─09-长肥管道:为何文件传输速度这么慢?
│   │   │   ├─10-窗口:TCPWindowFull会影响传输效率吗?
│   │   │   ├─11-拥塞:TCP是如何探测到拥塞的?
│   │   │   ├─12-重传的认识:重传到底是怎么回事?
│   │   │   ├─12-重传的认识:重传到底是怎么回事?
│   │   │   ├─13-重传的再认识:没有任何丢包却也一直重传?
│   │   │   ├─14-安全:用Wireshark把DDoS攻击照出原形
│   │   │   ├─15-Nginx的499状态码是怎么回事?
│   │   │   ├─16-服务器为什么回复HTTP400?
│   │   │   ├─17-为什么前端页面里多选一个城市就报错?
│   │   │   ├─18-偶发性问题如何排查?
│   │   │   ├─184网络排查案例课
│   │   │   ├─19-TLS的各种特性:TLS握手为什么会失败?
│   │   │   ├─20-TLS加解密:如何解密HTTPS流量?
│   │   │   ├─21-为什么用了负载均衡更加不均衡?
│   │   │   ├─22-为什么压力测试TPS总是上不去?
│   │   │   ├─23-路径排查:没有网络设备权限要如何做排查?
│   │   │   ├─24-丢包:如何确定丢包的存在及其程度?
│   │   │   ├─25-抓包分析的回顾、拾遗,和提高
│   │   │   ├─不定期加餐(一)-八仙过海,各显神通:透传真实源IP的各种方法
│   │   │   ├─开篇词-网络排查是工程师的必备能力
│   │   │   ├─春节特别放送(一)-书单推荐
│   │   │   ├─春节特别放送(三)-我的学习资料和工具
│   │   │   ├─春节特别放送(二)-聊聊能力陷阱和终身学习
│   │   │   ├─春节特别放送(四)-测一测你的网络排查能力
│   │   │   ├─用户故事-小S:学习是人生路上生生不息的活泉
│   │   │   ├─用户故事-王未:网络排查能力是一名合格运维工程师的必备技能
│   │   │   ├─答疑(一)-第1~5讲思考题答案
│   │   │   ├─答疑(三)-第11~15讲思考题答案
│   │   │   ├─答疑(二)-第6~10讲思考题答案
│   │   │   ├─答疑(四)-第16~20讲思考题答案
│   │   │   ├─结束语-珍惜握手,难说再见
│   │   │   └─结课测试-“网络排查案例课”100分试卷等你来挑战!
│   │   ├─185反爬虫兵法演绎20讲
│   │   │   ├─01-爬虫需求的诞生:我们是正经的软件工程师
│   │   │   ├─02-爬虫的内卷和黑化:我们变得不正经啦
│   │   │   ├─03-反爬虫的发展以及展望:我们也不是什么正经工程师
│   │   │   ├─03-反爬虫的发展以及展望:我们也不是什么正经工程师
│   │   │   ├─04-爬虫的首轮攻势:如何低调地拿到自己想要的数据?
│   │   │   ├─05-反爬虫的应对之策:通用且基本的检测规则是什么?
│   │   │   ├─06|爬虫攻势升级:分布式的意义在哪里?
│   │   │   ├─07-反爬虫升级:如何判定你是个真人?
│   │   │   ├─08-博弈的均衡:如何对抗道德的沦丧和人性的扭曲?
│   │   │   ├─09-反爬虫概述(一):高收益的后端能做哪些基本的事情?
│   │   │   ├─10-反爬虫概述(二):无收益的前端是怎么进行key处理的呢?
│   │   │   ├─11|反爬虫概述(三):前端反爬虫是怎么做信息收集的?
│   │   │   ├─12-反爬虫概述(四):前后端都不合适的时候如何进行处理?
│   │   │   ├─13-反爬虫基础理论:这是唯一一节严肃的纯理论课
│   │   │   ├─14-低耦合:如何快速下线反爬虫系统?
│   │   │   ├─15-规则引擎:如何快速响应突发的爬虫需求?
│   │   │   ├─16-验证爬虫:我到底要不要百分百投入?
│   │   │   ├─17-招聘篇:如何写一个合适的JD?
│   │   │   ├─18-如何搞定老板(上):如何编造虚无缥缈的OKR?
│   │   │   ├─185反爬虫兵法演绎20讲
│   │   │   ├─19-如何搞定老板(中):如何组建团队
│   │   │   ├─20-如何搞定老板(下):团队考核怎么做?
│   │   │   ├─加餐|反爬虫的专家级鉴别力:用户习惯检测
│   │   │   ├─开篇词-如何突破“爬虫反爬虫”内卷之怪现状?
│   │   │   ├─春节加餐01-破解还是不破解,这是一个问题
│   │   │   ├─春节加餐02-真实世界里,小心屠龙勇士变恶龙
│   │   │   ├─春节加餐03-低调驶得万年船
│   │   │   ├─答疑课堂|爬虫反爬虫调试对抗技巧以及虚拟机详解
│   │   │   ├─结束语|达到理想不太易
│   │   │   ├─结课测试|反爬虫的“反人类”测试题,你能答对多少?
│   │   │   └─结课测试|反爬虫的“反人类”测试题,你能答对多少?
│   │   ├─186eBPF核心技术与实战
│   │   │   ├─01|技术概览:eBPF的发展历程及工作原理
│   │   │   ├─02-先利其器:如何高效学习eBPF?
│   │   │   ├─03-初窥门径:开发并运行你的第一个eBPF程序
│   │   │   ├─03-初窥门径:开发并运行你的第一个eBPF程序
│   │   │   ├─04-运行原理:eBPF是一个新的虚拟机吗?
│   │   │   ├─05-编程接口:eBPF程序是怎么跟内核进行交互的?
│   │   │   ├─06-事件触发:各类eBPF程序的触发机制及其应用场景
│   │   │   ├─07-内核跟踪(上):如何查询内核中的跟踪点?
│   │   │   ├─08|内核跟踪(下):开发内核跟踪程序的进阶方法
│   │   │   ├─09-用户态跟踪:如何使用eBPF排查应用程序?
│   │   │   ├─10-网络跟踪:如何使用eBPF排查网络问题?
│   │   │   ├─11-容器安全:如何使用eBPF增强容器安全?
│   │   │   ├─12|高性能网络实战(上):如何开发一个负载均衡器?
│   │   │   ├─13|高性能网络实战(下):如何完善负载均衡器?
│   │   │   ├─186eBPF核心技术与实战
│   │   │   ├─加餐|李程远:谈谈eBPF在云原生中的纵与横
│   │   │   ├─开篇词-想要洞悉系统底层的黑盒?先掌握eBPF!
│   │   │   ├─未来可期|邀你与eBPF共赴一场技术革新之约
│   │   │   ├─用户故事|eBPF从入门到放弃?在实践中找到突破口
│   │   │   ├─用户故事|eBPF从入门到放弃?在实践中找到突破口
│   │   │   ├─阶段总结|实用eBPF工具及最新开源项目总结
│   │   │   ├─难点解析|eBPF多内核版本兼容详解
│   │   │   ├─难点解析|eBPF开发环境搭建及内核编译详解
│   │   │   └─难点解析|eBPF开发环境搭建及内核编译详解
│   │   ├─187深入浅出分布式技术原理
│   │   │   ├─01|导读:以前因后果为脉络,串起网状知识体系
│   │   │   ├─02|新的挑战:分布式系统是银弹吗?我看未必!
│   │   │   ├─03|CAP理论:分布式场景下我们真的只能三选二吗?
│   │   │   ├─04|注册发现:AP系统和CP系统哪个更合适?
│   │   │   ├─05|负载均衡:从状态的角度重新思考负载均衡
│   │   │   ├─06|配置中心:如何确保配置的强一致性呢?
│   │   │   ├─07|分布式锁:所有的分布式锁都是错误的?
│   │   │   ├─08|重试幂等:让程序Exactly-once很难吗?
│   │   │   ├─09-雪崩(一):熔断,让故障自适应地恢复
│   │   │   ├─10-雪崩(二):限流,抛弃超过设计容量的请求
│   │   │   ├─11|雪崩(三):降级,无奈的丢车保帅之举
│   │   │   ├─11|雪崩(三):降级,无奈的丢车保帅之举
│   │   │   ├─12|雪崩(四):扩容,没有用钱解决不了的问题
│   │   │   ├─13|可观测性(一):如何监控一个复杂的分布式系统?
│   │   │   ├─14|可观测性(二):如何设计一个高效的告警系统?
│   │   │   ├─15|故障(一):预案管理竟然能让被动故障自动恢复?
│   │   │   ├─16|故障(二):变更管理,解决主动故障的高效思维方式
│   │   │   ├─17|分片(一):如何选择最适合的水平分片方式?
│   │   │   ├─187深入浅出分布式技术原理
│   │   │   ├─18|分片(二):垂直分片和混合分片的trade-off
│   │   │   ├─19|复制(一):主从复制从副本的数据可以读吗?
│   │   │   ├─20|复制(二):多主复制的多主副本同时修改了怎么办?
│   │   │   ├─21|复制(三):最早的数据复制方式竟然是无主复制?
│   │   │   ├─22|事务(一):一致性,事务的集大成者
│   │   │   ├─23|事务(二):原子性,对应用层提供的完美抽象
│   │   │   ├─24|事务(三):隔离性,正确与性能之间权衡的艺术
│   │   │   ├─25|事务(四):持久性,吃一碗粉就付一碗粉的钱
│   │   │   ├─26|一致性与共识(一):数据一致性都有哪些级别?
│   │   │   ├─27|一致性与共识(二):它们是鸡生蛋还是蛋生鸡?
│   │   │   ├─28|一致性与共识(三):共识与事务之间道不明的关系
│   │   │   ├─29|分布式计算技术的发展史:从单进程服务到ServiceMesh
│   │   │   ├─30|分布式存储技术的发展史:从ACID到NewSQL
│   │   │   ├─开篇词|掌握好学习路径,分布式系统原来如此简单
│   │   │   ├─春节加餐|技术债如房贷,是否借贷怎样取舍?
│   │   │   ├─春节加餐|深入聊一聊计算机系统的时间
│   │   │   ├─春节加餐|系统性思维,高效学习和工作的利器
│   │   │   ├─期中测试答案|这些问题你都答对了吗?
│   │   │   ├─期中测试|IM系统设计实战
│   │   │   ├─结束语|在分布式技术的大潮流中自由冲浪吧!
│   │   │   └─课后彩蛋|完整版思考题答案
│   │   ├─188李智慧·高并发架构实战课
│   │   │   ├─01-软件建模与文档:架构师怎样绘制系统架构蓝图?
│   │   │   ├─02-高并发架构设计方法:面对高并发,怎么对症下药?
│   │   │   ├─03-短URL生成器设计:百亿短URL怎样做到无冲突?
│   │   │   ├─04-网页爬虫设计:如何下载千亿级网页?
│   │   │   ├─04-网页爬虫设计:如何下载千亿级网页?
│   │   │   ├─05-网盘系统设计:万亿GB网盘如何实现秒传与限速?
│   │   │   ├─06-短视频系统设计:如何支持三千万用户同时在线看视频?
│   │   │   ├─07-海量数据处理技术回顾:为什么分布式会遇到CAP难题?
│   │   │   ├─08-秒杀系统设计:你的系统可以应对万人抢购盛况吗?
│   │   │   ├─09-交友系统设计:哪种地理空间邻近算法更快?
│   │   │   ├─10-搜索引擎设计:信息搜索怎么避免大海捞针?
│   │   │   ├─11-反应式编程框架设计:如何使方法调用无阻塞等待?
│   │   │   ├─12-高性能架构的三板斧:分析系统性能问题从哪里入手?
│   │   │   ├─13-微博系统设计:怎么应对热点事件的突发访问压力?
│   │   │   ├─14-百科应用系统设计:机房被火烧了系统还能访问吗?
│   │   │   ├─15-限流器设计:如何避免超预期的高并发压力压垮系统?
│   │   │   ├─16-高可用架构的十种武器:怎么度量系统的可用性?
│   │   │   ├─17-Web应用防火墙:怎样拦截恶意用户的非法请求?
│   │   │   ├─18-加解密服务平台:如何让敏感数据存储与传输更安全?
│   │   │   ├─188李智慧·高并发架构实战课
│   │   │   ├─19-许可型区块链重构:无中心的区块链怎么做到可信任?
│   │   │   ├─20-网约车系统设计:怎样设计一个日赚5亿的网约车系统?
│   │   │   ├─21-网约车系统重构:如何用DDD重构网约车系统设计?
│   │   │   ├─22-大数据平台设计:如何用数据为用户创造价值?
│   │   │   ├─开篇词-“附身”大厂架构师,身临其境设计高并发系统
│   │   │   ├─期中测试-动手写一篇你自己的设计文档吧!
│   │   │   ├─期中测试获奖用户名单及参考答案:通达系统架构设计
│   │   │   ├─结束语-一个架构师的一天
│   │   │   └─结束语-一个架构师的一天
│   │   ├─189大厂广告产品心法
│   │   │   ├─01|业务逻辑:广告产品的前世今生和商业模式是怎样的?
│   │   │   ├─02|业务链条:广告主、媒体、第三方等分别如何看待广告产品?
│   │   │   ├─03|头部玩家:从BAT到跳动的字节,广告产品有哪些变化与发展趋势?
│   │   │   ├─04|产品体系:互联网大厂的广告产品存在哪些共性和区别?
│   │   │   ├─05|变现模式:什么样的产品适合采用广告模式变现?
│   │   │   ├─06|产品路线:大厂和小厂的广告产品发展路线有什么区别?
│   │   │   ├─07|计价与效果(上):如何制定合理的计价方式?
│   │   │   ├─08|计价与效果(下):如何制定合理的效果评估指标?
│   │   │   ├─09|效果优化:如何一步步从提升曝光量深入到提升销量?
│   │   │   ├─10|流量优化:如何兼顾广告收入和用户体验?
│   │   │   ├─11|物料生产:如何满足广告主的创意需求?
│   │   │   ├─12|精准定向:如何建立一个成熟的用户标签体系?
│   │   │   ├─13|转化优化:互联网大厂如何利用算法优化广告效果?
│   │   │   ├─14|程序化交易:程序化交易是否可以提升广告效果?
│   │   │   ├─15|需求调研:广告产品潜在需求的调研流程是怎样的?
│   │   │   ├─16|平台建设:如何从0到1建立一个完整的广告产品平台?
│   │   │   ├─17|职业发展:新人入行,如何判断自己是否适合做广告产品?
│   │   │   ├─189大厂广告产品心法
│   │   │   ├─18|团队建设:如何搭建一个高效的广告产品团队?
│   │   │   ├─19|跨团队合作:产研团队和销售端、媒体端、市场端如何合作?
│   │   │   ├─20|产品运营:不同发展阶段如何制定业务目标和运营策略?
│   │   │   ├─20|产品运营:不同发展阶段如何制定业务目标和运营策略?
│   │   │   ├─21|广告产品彩蛋:课程答疑与推荐书目
│   │   │   ├─开篇词|作为一名互联网人,你为什么必须了解广告产品?
│   │   │   ├─结束语|你想要成为什么样的互联网广告产品人?
│   │   │   ├─结课测试|展现你真正的实力吧!
│   │   │   └─结课测试|展现你真正的实力吧!
│   │   ├─190说透低代码
│   │   │   ├─01|低代码平台到底是什么样的?
│   │   │   ├─02|低代码到底是银弹,还是行业毒瘤?
│   │   │   ├─03|低代码的天花板:一个完备的低代码平台应该具备哪些条件?
│   │   │   ├─04|演进策略:先发展通用能力还是先满足业务需求?
│   │   │   ├─05|基础设施:启动低代码平台研发之前,你需要有什么家底?
│   │   │   ├─06|踏出新手村便遭遇大Boss:如何架构低代码的引擎?
│   │   │   ├─07|结构化代码生成法:代码如何生成代码?
│   │   │   ├─07|结构化代码生成法:代码如何生成代码?
│   │   │   ├─08|布局编辑器:如何做到鱼和熊掌兼得?
│   │   │   ├─09|属性编辑器:如何解除Web组件属性与编辑器的耦合?
│   │   │   ├─10-可视化编程:如何有效降低App前后端逻辑开发的技能门槛?
│   │   │   ├─11|亦敌亦友:LowCode与ProCode混合使用怎样实现?
│   │   │   ├─12-业务数据:再好的App,没有数据也是白搭
│   │   │   ├─13|多人协同编辑:野百合的春天为啥来得这么晚?
│   │   │   ├─14|编辑历史:是对Git做改造,还是另辟蹊径?
│   │   │   ├─15|低代码平台应该优先覆盖应用研发生命周期中的哪些功能?
│   │   │   ├─16|扩展与定制:如何实现插件系统并形成生态圈?
│   │   │   ├─17|兼容性问题:如何有效发现兼容性问题?
│   │   │   ├─18|兼容性问题:如何有效解决兼容性问题?
│   │   │   ├─190说透低代码
│   │   │   ├─开篇词|抛开争论,先来看看真正的低代码
│   │   │   ├─总结与展望|低代码之路,我们才刚刚开始
│   │   │   ├─阶段测试|这些低代码的知识,你都掌握了吗?
│   │   │   └─阶段测试|这些低代码的知识,你都掌握了吗?
│   │   ├─191自动化测试高手课
│   │   │   ├─01|ROI价值内核:自动化测试的价值可以量化么?
│   │   │   ├─02|3KU法则:如何找出最优自动化实施截面?
│   │   │   ├─03|工具选择:什么工具框架值得用?
│   │   │   ├─04|脚本复用:什么样的代码才值得写?
│   │   │   ├─05|AutoGenAuto:所有测试工作即代码
│   │   │   ├─06|左移&右移:测试如何在Dev和Ops领域大展身手?
│   │   │   ├─07|需求提炼(一):单体应用要测什么?
│   │   │   ├─08|需求提炼(二):微服务集群要测什么?
│   │   │   ├─09|3KU法则:为一个订餐系统设计全栈测试方案
│   │   │   ├─10|单元测试(一):原来测试可以这么高效
│   │   │   ├─11|单元测试(二):四象限法让你的单测火力全开
│   │   │   ├─12|集成测试(一):一条HappyPath扫天下
│   │   │   ├─13|集成测试(二):携手开发,集测省力又省心
│   │   │   ├─14|集成测试(三):护航微服务集群迭代升级
│   │   │   ├─15|UI测试:如何让UI测试更轻快便捷?
│   │   │   ├─16|概念重识:如何用3KU为端到端&验收测试赋能?
│   │   │   ├─17|元数据模型(一):小Job模型构建大蓝图
│   │   │   ├─18|元数据模型(二):小Job模型构建大蓝图
│   │   │   ├─191自动化测试高手课
│   │   │   ├─19|排兵布阵:自动化测试的编排、扩展与重构
│   │   │   ├─20|链接工具:要驱动工具,不要被工具驱动
│   │   │   ├─21|设计实战(一):一个金融交易业务的自动化测试设计
│   │   │   ├─22|设计实战(二)-一个全周期自动化测试Pipeline的设计
│   │   │   ├─23|设计实战(三)-一个分布式多端视频会议自动化测试设计
│   │   │   ├─24|启动运行:基于Job模型的框架实现和运行
│   │   │   ├─25|找准方向:如何建立有效的测试度量体系?
│   │   │   ├─26|见微知著:单元测试度量避坑
│   │   │   ├─27|眼见为实:如何用数据描述你的自动化测试ROI?
│   │   │   ├─28|解决问题:如何保证自动化测试的可信性?
│   │   │   ├─29|落地实践:搭建可持续度量的技术平台
│   │   │   ├─开篇词-做性价比最高的自动化测试
│   │   │   ├─开篇词-做性价比最高的自动化测试
│   │   │   ├─用户故事|我的自动化学习之路
│   │   │   ├─结束语|测试有终点,成长无边界
│   │   │   └─结束语|测试有终点,成长无边界
│   │   ├─192徐昊·TDD项目实战70讲
│   │   │   ├─01|TDD演示(1):任务分解法与整体工作流程
│   │   │   ├─02|TDD演示(2):识别坏味道与代码重构
│   │   │   ├─03|TDD演示(3):按测试策略重组测试
│   │   │   ├─04|TDD演示(4):实现对于列表参数的支持
│   │   │   ├─05|TDD中的测试(1):状态验证为什么是主要的使用方式?
│   │   │   ├─06|TDD中的测试(2):行为验证为什么应该尽量避免使用?
│   │   │   ├─07|TDD中的测试(3):集成测试还是单元测试?
│   │   │   ├─08|TDD中的驱动(1):驱动的极限是什么?
│   │   │   ├─09|TDD中的驱动(2):重构发挥了什么作用?
│   │   │   ├─10|TDD中的驱动(3):何为经典学派?何为伦敦学派?
│   │   │   ├─11|作为工程化方法的TDD:更低的成本与更高的效能
│   │   │   ├─12|实战中的TDD:RESTfulAPI的开发框架
│   │   │   ├─13|DIContainer(1):如何实现基本的DI容器结构?
│   │   │   ├─14|DIContainer(2):如何通过SadPath为容器增加功能?
│   │   │   ├─15|DIContainer(3):如何重构已有的代码?
│   │   │   ├─16|DIContainer(4):如何实现对循环依赖的处理?
│   │   │   ├─17|DIContainer(5):API接口该怎么设计?
│   │   │   ├─18|DIContainer(6):如何实现循环依赖的检查?
│   │   │   ├─192徐昊·TDD项目实战70讲
│   │   │   ├─19|DIContainer(7):如何实现FieldInjection部分的功能?
│   │   │   ├─20|DIContainer(8):如何实现MethodInjection部分的功能?
│   │   │   ├─21|DIContainer(9):怎样重构测试代码?
│   │   │   ├─22|DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?
│   │   │   ├─23|DIContainer(11):如何对ContainerTest进行文档化改造?
│   │   │   ├─24|DIContainer(12):如何增补功能?
│   │   │   ├─25|DIContainer(13):任务上的遗漏该怎么处理?
│   │   │   ├─26|DIContainer(14):如何重构对Type类型判断的逻辑?
│   │   │   ├─27|DIContainer(15):如何封装类型判断逻辑?
│   │   │   ├─28|DIContainer(16):行为封装会对测试产生什么影响?
│   │   │   ├─29|DIContainer(17):如何重构ContextConfig内部的实现?
│   │   │   ├─30|DIContainer(18):如何增补依赖缺失和循环依赖的测试?
│   │   │   ├─31|DIContainer(19):Qualifier部分的功能要如何完成?
│   │   │   ├─32|DIContainer(20):如何对代码和测试进行重构?
│   │   │   ├─32|DIContainer(20):如何对代码和测试进行重构?
│   │   │   ├─33|DIContainer(21):如何处理Singleton生命周期部分的功能?
│   │   │   ├─34|DIContainer(22):如何对Bind的逻辑进行重构?
│   │   │   ├─35|DIContainer(23):项目回顾与总结
│   │   │   ├─36|实战中的TDD:RESTfulWebServices
│   │   │   ├─36|实战中的TDD:RESTfulWebServices
│   │   │   ├─37|RESTfulWebServices(1):明确架构愿景与架构组件间的交互
│   │   │   ├─38|RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?
│   │   │   ├─39|RESTfulWebServices(3):明确架构愿景与调用栈顺序
│   │   │   ├─40|RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?
│   │   │   ├─41|RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?
│   │   │   ├─42|RESTfulWebServices(6):如何处理JAX-RS定义的异常类?
│   │   │   ├─43|RESTfulWebServices(7):剩下两个SadPath场景该如何处理?
│   │   │   ├─44|RESTfulWebServices(8):如何在现有代码的基础上构造测试?
│   │   │   ├─45|RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?
│   │   │   ├─46|RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?
│   │   │   ├─47|RESTfulWebServices(11):如何通过Spike来验证架构愿景?
│   │   │   ├─47|RESTfulWebServices(11):如何通过Spike来验证架构愿景?
│   │   │   ├─48|RESTfulWebServices(12):如何调整接口和架构愿景?
│   │   │   ├─49|RESTfulWebService(13):如何SpikeSub-ResourceLocator?
│   │   │   ├─50|RESTfulWebServices(14):分解任务与Setup测试
│   │   │   ├─51|RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?
│   │   │   ├─52|RESTfulWebServices(16):重构手法之设计方法名的名称
│   │   │   ├─53|RESTfulWebServices(17):如何进行Spike的架构愿景细化?
│   │   │   ├─54|RESTfulWebServices(18):如何实现UriTemplate的主要功能?
│   │   │   ├─54|RESTfulWebServices(18):如何实现UriTemplate的主要功能?
│   │   │   ├─55|RESTfulWebServices(19):如何更有效地构造测试数据?
│   │   │   ├─56|RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?
│   │   │   ├─57|RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?
│   │   │   ├─58|RESTfulWebServices(22):重构还是继续完成功能?
│   │   │   ├─59|RESTfulWebServices(23):如何构造测试数据?
│   │   │   ├─60|RESTfulWebServices(24):RootResource的测试要如何改造?
│   │   │   ├─61|RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?
│   │   │   ├─62|RESTfulWebServices(26):如何继续划分ResourceLocator的任务?
│   │   │   ├─63|RESTfulWebServices(27):如何通过重构修改接口?
│   │   │   ├─64|RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?
│   │   │   ├─65|RESTfulWebServices(29):后续任务将要如何划分与实现?
│   │   │   ├─66|RESTfulWebServices(30):什么情况下应该使用行为验证?
│   │   │   ├─67|RESTfulWebServices(31):对于option的测试策略应该是怎样的?
│   │   │   ├─68|RESTfulWebServices(32):目前代码中的一个重大Bug是什么?
│   │   │   ├─69|RESTfulWebServices(33):如何拆分对于injection部分的需求?
│   │   │   ├─70|RESTfulWebServices(34):在当前代码结构下,要如何进行重构?
│   │   │   ├─71|RESTfulWebServices(35):如何将测试改为动态测试?
│   │   │   ├─72|RESTfulWebServices(36):在现有结构下,如何支持转换构造函数?
│   │   │   ├─73|RESTfulWebServices(37):再增加converter方法时,步骤有什么不同?
│   │   │   ├─74|RESTfulWebServices(38):如何提取方法调用部分?
│   │   │   ├─75|RESTfulWebServices(39):如何使用继承的方式来复用测试?
│   │   │   ├─76|RESTfulWebServices(40):如何开展有效的集成测试?
│   │   │   ├─77|RESTfulWebServices(41):对于资源的访问,我们需要补充哪些相关功能?
│   │   │   ├─78|RESTfulWebServices(42):项目总结与回顾
│   │   │   ├─79|线段编辑器:架构思路与任务拆分
│   │   │   ├─80|LineEditor(2):如何重构生成与更新锚点控制点的逻辑?
│   │   │   ├─81|结束语:掌握TDD的那天,我才成为了可靠高效的职业程序员
│   │   │   ├─代码评点01|不同语言TDD的节奏有何不同?
│   │   │   ├─代码评点02|什么是合适TDD的语言和IDE?
│   │   │   ├─开篇词|为什么TDD是当前最具工程效能的研发流程?
│   │   │   ├─用户故事01|aoe:如果把《重构》这本书拍成电视剧
│   │   │   ├─课前必读01|20年前的“老古董”技术,为什么还值得开个课?
│   │   │   ├─课前必读02|程序员究竟是搞技术的,还是做工程的?
│   │   │   └─课前必读02|程序员究竟是搞技术的,还是做工程的?
│   │   ├─193超级访谈:对话汤峥嵘
│   │   │   ├─01-看似理性的程序员为什么可能是最不讲理的?
│   │   │   ├─02-个人性格影响“企业性格”,企业文化离不开人
│   │   │   ├─03-闲话家常(一):半工半读的留学生活
│   │   │   ├─04-闲话家常(二):匹兹堡6年与硅谷4年工作经历
│   │   │   ├─05-从排斥到拥护,我眼中的阿里文化
│   │   │   ├─06-怎样才能遇到自己的“贵人”?
│   │   │   ├─07-选行业秘诀:技术是否能发挥重要作用?
│   │   │   ├─08-途牛野蛮生长,也促使CTO“野蛮生长”
│   │   │   ├─09-闲话家常(三):纽约打工故事续集
│   │   │   ├─10-管理的本质:如何把硬性政策柔性执行?
│   │   │   ├─11-为什么建议技术团队的组织架构按系统划分?
│   │   │   ├─12-技术、产品、业务三方关系?谁水平高听谁的
│   │   │   ├─13-CTO直接下属有60个总监,怎么管理?
│   │   │   ├─14-无边界访谈:创业思考与高手视角
│   │   │   ├─193超级访谈:对话汤峥嵘
│   │   │   ├─有奖征集-邀请你填写问卷反馈
│   │   │   ├─篇首语-认识汤峥嵘
│   │   │   ├─结束语-给技术人的一封信
│   │   │   └─结束语-给技术人的一封信
│   │   ├─194ReactNative新架构实战课
│   │   │   ├─01|学习ReactNative,你需要掌握哪些知识?
│   │   │   ├─02|Component:搭建静态页面的正确思路是什么?
│   │   │   ├─03|Style:关于样式你需要知道的三件事
│   │   │   ├─04|State:如何让页面“动”起来?
│   │   │   ├─05|Image:选择适合你的图片加载方式
│   │   │   ├─06|Pressable:如何实现一个体验好的点按组件?
│   │   │   ├─07|TextInput:如何实现一个体验好的输入框?
│   │   │   ├─08|List:如何实现高性能的无限列表?
│   │   │   ├─08|List:如何实现高性能的无限列表?
│   │   │   ├─09|FastRefresh:提高UI调试效率神器
│   │   │   ├─10|Debug:解决BUG思路有哪些?
│   │   │   ├─11|组件实战:如何实现瀑布流?
│   │   │   ├─12|页面实战:如何搭建一个电商首页?
│   │   │   ├─13|生态:ReactNativeAwesome
│   │   │   ├─13|生态:ReactNativeAwesome
│   │   │   ├─14|Reanimated:如何让动画变得更流畅?
│   │   │   ├─15|Gesture(上):如何实现一个拖拽动效?
│   │   │   ├─16|Gesture(中):如何解决单视图多手势的冲突问题?
│   │   │   ├─17|Gesture(下):如何解决多视图多手势的冲突问题?
│   │   │   ├─18|Navigation:页面之间怎么跳转?
│   │   │   ├─194ReactNative新架构实战课
│   │   │   ├─19|Redux:大型应用应该如何管理状态?
│   │   │   ├─20|Sentry:线上错误与性能监控怎么处理?
│   │   │   ├─21|混合应用:如何从零开始集成ReactNative?
│   │   │   ├─21|混合应用:如何从零开始集成ReactNative?
│   │   │   ├─22|自定义组件:如何满足业务的个性化需求?
│   │   │   ├─23|热更新:如何搭建一个热更新平台?
│   │   │   ├─24|拆包:Metro拆包的工作原理是什么?
│   │   │   ├─25|性能优化:如何设计一个合适的性能优化方案?
│   │   │   ├─26|客户端优化:如何把性能提升到极致?
│   │   │   ├─27|跨端的机遇:小程序、Flutter和ReactNative原理对比
│   │   │   ├─28|追本溯源:从第一版ReactNative开始学会读懂源码
│   │   │   ├─29|弄清现状:新架构预览版究竟长什么样?
│   │   │   ├─30|JavaScript引擎:双向通讯底层原理是什么?
│   │   │   ├─开篇词|为什么要选择ReactNative做你的跨端方案?
│   │   │   ├─总结与展望|新架构探索之旅,马上开始
│   │   │   ├─直播加餐|七年,我的跨端实践和探索
│   │   │   ├─阶段测试|ReactNative的这些核心知识,你都掌握了吗?
│   │   │   └─阶段测试|ReactNative的这些核心知识,你都掌握了吗?
│   │   ├─195遗留系统现代化实战
│   │   │   ├─01|遗留系统之殇:为什么要对遗留系统进行现代化?
│   │   │   ├─02-遗留系统现代化:遗留系统的四化建设
│   │   │   ├─03|以降低认知负载为前提:为什么遗留系统这么难搞?
│   │   │   ├─04-如何降低认知负载:活的文档能救命
│   │   │   ├─05-以假设驱动为指引:如何评价遗留系统的现代化成果?
│   │   │   ├─06-以增量演进为手段:为什么历时一年的改造到头来是一场空?
│   │   │   ├─07-遗留系统现代化的五种策略:重构还是重写?这是一个问题
│   │   │   ├─08-代码现代化:你的代码可测吗?
│   │   │   ├─09-代码现代化:如何将一个300行的方法重构为3行?
│   │   │   ├─10-代码现代化:代码的分层重构
│   │   │   ├─11-架构现代化:在气泡上下文中打造你的新城区
│   │   │   ├─12-架构现代化:微服务,你准备好了吗?
│   │   │   ├─13-架构现代化:如何改造老城区前端?
│   │   │   ├─14-架构现代化:如何改造老城区后端?
│   │   │   ├─15-架构现代化:如何拆分数据?
│   │   │   ├─16|DevOps现代化:从持续构建到持续集成
│   │   │   ├─17-DevOps现代化:从持续集成到持续部署
│   │   │   ├─18-团队结构现代化:从组件团队到Spotify模型
│   │   │   ├─19-团队结构现代化:团队拓扑学
│   │   │   ├─195遗留系统现代化实战
│   │   │   ├─20|启动:如何开启一个遗留系统现代化项目?
│   │   │   ├─21|微服务拆分(一):迈出遗留系统现代化第一步
│   │   │   ├─22|微服务拆分(二):三招搞定数据库表解耦
│   │   │   ├─23|微服务拆分(三):如何拆分存储过程?
│   │   │   ├─24|微服务拆分(四):其他话题
│   │   │   ├─25|成果验证:如何评价遗留系统现代化项目的成败?
│   │   │   ├─大咖助阵|存储过程的拆分锦囊
│   │   │   ├─开篇词|你现在所写的每一行代码,都是未来的遗留系统
│   │   │   ├─结束语|技术终将老去,但好在你还年轻
│   │   │   └─结束语|技术终将老去,但好在你还年轻
│   │   ├─196林外·专利写作第一课
│   │   │   ├─01-为什么我推荐互联网人要积极写专利?
│   │   │   ├─02-奖金是专利写作中最不值得一提的事儿
│   │   │   ├─03-找到KeyPerson利益点,提升专利通过率
│   │   │   ├─04-像写PRD一样,撰写专利交底书(一)
│   │   │   ├─05-像写PRD一样,撰写专利交底书(二)
│   │   │   ├─06-如何把常见的生活问题变成专利?
│   │   │   ├─07-专利创新的步伐不必迈得特别大
│   │   │   ├─08-那些异想天开的专利是怎么诞生的?
│   │   │   ├─196林外·专利写作第一课
│   │   │   ├─开篇词-写专利,将是知识工作者的核心产出
│   │   │   ├─答疑-专利申请十大常见问题
│   │   │   ├─答疑-专利申请十大常见问题
│   │   │   ├─结束语-用出世的心态,来入世工作
│   │   │   └─结束语-用出世的心态,来入世工作
│   │   ├─197说透元宇宙
│   │   │   ├─01-互联网科技巨头与资本追逐元宇宙,他们在追逐什么?
│   │   │   ├─02-元宇宙简史:能看到多远的过去,就能看到多远的未来
│   │   │   ├─03-元宇宙=立体互联网:当我们的手和眼摆脱屏幕的束缚
│   │   │   ├─04-元宇宙=价值互联网:当我们在数字空间能拥有物品
│   │   │   ├─05-扫描实体世界:将真实的世界数字化
│   │   │   ├─06-渲染数字世界:“欺骗”你的眼睛与大脑
│   │   │   ├─06-渲染数字世界:“欺骗”你的眼睛与大脑
│   │   │   ├─07-操控数字世界:用手与身体取代键盘
│   │   │   ├─08-数字财产确权:用区块链建立数字所有权管理系统
│   │   │   ├─09-数字交易协议:在数字空间“复制”社会经济活动
│   │   │   ├─10-数字治理协议:数字世界中的人如何组织与大规模协作
│   │   │   ├─11-走向元宇宙:元宇宙的四大应用象限
│   │   │   ├─12-走向元宇宙:数字化工作与生活
│   │   │   ├─197说透元宇宙
│   │   │   ├─开篇词-为什么我们应关注元宇宙?
│   │   │   ├─期末测试-来赴一场满分之约!
│   │   │   ├─结束语-迎接下一代互联网的无限可能
│   │   │   └─结束语-迎接下一代互联网的无限可能
│   │   ├─198人人都用得上的数字化思维课
│   │   │   ├─01-全局视角:如何看待数字化是一种必然趋势?
│   │   │   ├─02-数字化与信息化,为啥一定要去刻意区分呢?
│   │   │   ├─03-数据:用数据思考问题,到底是什么意思?
│   │   │   ├─04-软件:数据定义和数据工具,才是用好数据的关键
│   │   │   ├─05-网络:重视协作,构建属于自己的生态
│   │   │   ├─06-看时代:重新定义数字人才
│   │   │   ├─06-看时代:重新定义数字人才
│   │   │   ├─07-如何避免陷入学乱了、学杂了的窘境?
│   │   │   ├─08-如何从架构的视角去解读数字化相关政策?
│   │   │   ├─09-数字经济:数字化会带来哪些变化?
│   │   │   ├─10-未来15年,数字化会给我们带来哪些变化?
│   │   │   ├─198人人都用得上的数字化思维课
│   │   │   ├─开篇词-揭开数字化的神秘面纱,这次咱这么学
│   │   │   ├─结束语-你的变化,就是数字时代的一个缩影
│   │   │   └─结束语-你的变化,就是数字时代的一个缩影
│   │   ├─199中间件核心技术与实战
│   │   │   ├─01|中间件生态(上):有哪些类型的中间件?
│   │   │   ├─02|中间件生态(下):同类型的中间件如何进行选型?
│   │   │   ├─03-数组与链表:存储设计的基石有哪些?
│   │   │   ├─04-红黑树:图解红黑树的构造过程与应用场景
│   │   │   ├─05-多线程:多线程编程有哪些常见的设计模式?
│   │   │   ├─05-多线程:多线程编程有哪些常见的设计模式?
│   │   │   ├─06-锁:如何理解锁的同步阻塞队列与条件队列?
│   │   │   ├─07-NIO:手撸一个简易的主从多Reactor线程模型
│   │   │   ├─08-Netty:如何优雅地处理网络读写,制定网络通信协议?(1)
│   │   │   ├─08-Netty:如何优雅地处理网络读写,制定网络通信协议?
│   │   │   ├─09|技术选型:如何选择微服务框架和注册中心?
│   │   │   ├─10|设计原理:Dubbo核心设计原理剖析
│   │   │   ├─11|案例:如何基于Dubbo进行网关设计?
│   │   │   ├─12|案例:如何实现蓝绿发布?
│   │   │   ├─13-技术选型:如何根据应用场景选择合适的消息中间件?
│   │   │   ├─14|性能之道:RocketMQ与Kafka高性能设计对比
│   │   │   ├─15|案例:消息中间件如何实现蓝绿?
│   │   │   ├─16|案例:如何提升RocketMQ顺序消费性能?
│   │   │   ├─17|运维:如何运维日均亿级的消息集群?
│   │   │   ├─18|案例:如何排查RocketMQ消息发送超时故障?
│   │   │   ├─199中间件核心技术与实战
│   │   │   ├─19|案例:如何排查RocketMQ消息消费积压问题?
│   │   │   ├─20|技术选型:分布式定时调度框架的功能和未来
│   │   │   ├─21|设计理念:如何基于ZooKeeper设计准实时架构?
│   │   │   ├─22|案例:使用分布式调度框架该考虑哪些问题?
│   │   │   ├─23|案例:如何在生产环境进行全链路压测?
│   │   │   ├─23|案例:如何在生产环境进行全链路压测?
│   │   │   ├─加餐-中间件底层的通用设计理念
│   │   │   ├─大咖助阵-高楼:我们应该如何学习中间件?
│   │   │   ├─开篇词|为什么中间件对分布式架构体系来说这么重要?
│   │   │   ├─期中测试-来检验一下你的学习成果吧!
│   │   │   ├─期中测试答案-这些问题,你都答对了吗?
│   │   │   ├─期中测试答案-这些问题,你都答对了吗?
│   │   │   ├─用户故事-学而时习之,不亦乐乎
│   │   │   ├─用户故事-愿做技术的追梦人
│   │   │   ├─用户故事-浪费时间也是为了珍惜时间
│   │   │   ├─结束语|坚持不懈,越努力越幸运
│   │   │   └─结束语|坚持不懈,越努力越幸运
│   │   ├─200Kubernetes入门实战课
│   │   │   ├─01|初识容器:万事开头难
│   │   │   ├─02|被隔离的进程:一起来看看容器的本质
│   │   │   ├─03|容器化的应用:会了这些你就是Docker高手
│   │   │   ├─04|创建容器镜像:如何编写正确、高效的Dockerfile
│   │   │   ├─05|镜像仓库:该怎样用好DockerHub这个宝藏
│   │   │   ├─06|打破次元壁:容器该如何与外界互联互通
│   │   │   ├─07|实战演练:玩转Docker
│   │   │   ├─08|视频:入门篇实操总结
│   │   │   ├─09|走近云原生:如何在本机搭建小巧完备的Kubernetes环境
│   │   │   ├─10|自动化的运维管理:探究Kubernetes工作机制的奥秘
│   │   │   ├─10|自动化的运维管理:探究Kubernetes工作机制的奥秘
│   │   │   ├─11|YAML:Kubernetes世界里的通用语
│   │   │   ├─12|Pod:如何理解这个Kubernetes里最核心的概念?
│   │   │   ├─13|Job-CronJob:为什么不直接用Pod来处理业务?
│   │   │   ├─14|ConfigMap-Secret:怎样配置、定制我的应用
│   │   │   ├─15|实战演练:玩转Kubernetes(1)
│   │   │   ├─16|视频:初级篇实操总结
│   │   │   ├─17|更真实的云原生:实际搭建多节点的Kubernetes集群
│   │   │   ├─17|更真实的云原生:实际搭建多节点的Kubernetes集群
│   │   │   ├─18|Deployment:让应用永不宕机
│   │   │   ├─19|Daemonset:忠实可靠的看门狗
│   │   │   ├─200Kubernetes入门实战课
│   │   │   ├─20|Service:微服务架构的应对之道
│   │   │   ├─21|Ingress:集群进出流量的总管
│   │   │   ├─22|实战演练:玩转Kubernetes(2)
│   │   │   ├─23|视频:中级篇实操总结
│   │   │   ├─24|PersistentVolume:怎么解决数据持久化的难题?
│   │   │   ├─25|PersistentVolume+NFS:怎么使用网络共享存储?
│   │   │   ├─26|StatefulSet:怎么管理有状态的应用?
│   │   │   ├─27|滚动更新:如何做到平滑的应用升级降级?
│   │   │   ├─28|应用保障:如何让Pod运行得更健康?
│   │   │   ├─29|集群管理:如何用名字空间分隔系统资源?
│   │   │   ├─30|系统监控:如何使用MetricsServer和Prometheus?
│   │   │   ├─31|网络通信:CNI是怎么回事?又是怎么工作的?
│   │   │   ├─32|实战演练:玩转Kubernetes(3)
│   │   │   ├─33|视频:高级篇实操总结
│   │   │   ├─加餐|docker-compose:单机环境下的容器编排工具
│   │   │   ├─加餐|Kubernetes“弃用Docker”是怎么回事?
│   │   │   ├─开篇词|迎难而上,做云原生时代的弄潮儿
│   │   │   ├─结束语|是终点,更是起点
│   │   │   ├─课前准备|动手实践才是最好的学习方式
│   │   │   └─课前准备|动手实践才是最好的学习方式
│   │   ├─201大厂设计进阶实战课
│   │   │   ├─01|业务周期:0-1-10-100-N的发展策略
│   │   │   ├─02|商战模式:如何在商业竞争下突出重围?
│   │   │   ├─03|市场洞察:如何找寻差异化撬动支点?
│   │   │   ├─04|用户洞察:不懂用研的设计师不是好职场人
│   │   │   ├─05|用户画像:是形式主义还是真的有效?
│   │   │   ├─06|用户旅程:挖掘不同用户的核心机会点
│   │   │   ├─07|职场晋升:看懂晋升的“游戏规则”
│   │   │   ├─08|设计价值升级:五层进阶突破成长
│   │   │   ├─09基础价值|核心三原力:如何将需求转化为设计稿?
│   │   │   ├─10基础价值|第一性原理:从问题本质解决问题
│   │   │   ├─11基础价值|设计复盘:只是量化设计结果吗?
│   │   │   ├─12二级价值|负向网兜:如何全面发现负向问题?
│   │   │   ├─13二级价值|设计自驱:如何做好项目Owner?
│   │   │   ├─14二级价值|自驱合作:如何反内卷处理合作关系?
│   │   │   ├─15三级价值|增长误区:思维惯性陷阱和虚荣数据
│   │   │   ├─16三级价值|用户增长历程:AARRR是万能的吗?
│   │   │   ├─17三级价值|产品增长:如何做好产品创新?
│   │   │   ├─18三级价值|运营增长:如何自驱营销活动和投放?
│   │   │   ├─19三级价值|品牌增长-抢占心智,赢得人心红利
│   │   │   ├─201大厂设计进阶实战课
│   │   │   ├─20三级价值|增长实操:如何“步步为营”推动落地?
│   │   │   ├─21四级价值|L型赋能:让T型人才发挥更大价值
│   │   │   ├─21四级价值|L型赋能:让T型人才发挥更大价值
│   │   │   ├─22四级价值|“网状对比”解决共性痛点
│   │   │   ├─23五级价值|商业画布:设计师可以担任业务方吗?
│   │   │   ├─24五级价值|共创洞察:如何做好一次完善的workshop?
│   │   │   ├─25五级价值|领导力觉醒:写给新晋管理者
│   │   │   ├─26|工作选择(上):2Bor2C设计师?如何规划领域?
│   │   │   ├─27|工作选择(下):大厂or小厂?如何选择赛道?
│   │   │   ├─28|人才地图:认知自我,成为高潜力人才
│   │   │   ├─29|成长历程:如何从设计小白成长为团队负责人?
│   │   │   ├─30|冰山模型:如何成为让面试官欣赏的“面霸”?
│   │   │   ├─31|作品集指导:什么是面试官喜欢的作品集?
│   │   │   ├─开篇词|升维思考,是设计师有效成长的第一步
│   │   │   ├─用户故事|什么是职场设计师进阶的正确姿势?
│   │   │   ├─结束语|突破自我,成人达己
│   │   │   └─结束语|突破自我,成人达己
│   │   ├─202快手·音视频技术入门课
│   │   │   ├─01|如何从色彩格式、帧率等参数角度看视频图像?
│   │   │   ├─01|如何从色彩格式、帧率等参数角度看视频图像?
│   │   │   ├─02|音频从采集到输出涉及哪些关键参数?
│   │   │   ├─03|如何做音视频的封装与转码?
│   │   │   ├─03|如何做音视频的封装与转码?
│   │   │   ├─04|直播行业的发展概况与技术迭代
│   │   │   ├─05|如何使用FFmpeg与OBS进行直播推流?
│   │   │   ├─06|如何使用ffprobe分析音视频参数与内容?
│   │   │   ├─06|如何使用ffprobe分析音视频参数与内容?
│   │   │   ├─07-如何高效查找并使用FFmpeg常用参数?
│   │   │   ├─08|FFmpeg和它的朋友们是怎么处理MP4的?
│   │   │   ├─09|如何使用FFmpeg与Handbrake做转码?
│   │   │   ├─10-FFmpeg基础模块(一):容器相关的API操作
│   │   │   ├─11-FFmpeg基础模块(二):AVIO、AVDictionary与AVOption
│   │   │   ├─12-FFmpeg基础模块(三):AVCodec
│   │   │   ├─12-FFmpeg基础模块(三):AVCodec
│   │   │   ├─13-FFmpeg有哪些常见的应用场景?
│   │   │   ├─14|如何在FFmpeg中定制一个自己专属的模块?
│   │   │   ├─15|如何参与到FFmpeg社区交流中?
│   │   │   ├─202快手·音视频技术入门课
│   │   │   ├─开篇词|想快速入门音视频技术,你得这么学
│   │   │   ├─结束语|音视频技术更宠爱脚踏实地的人
│   │   │   └─结束语|音视频技术更宠爱脚踏实地的人
│   │   ├─203快手·移动端音视频开发实战
│   │   │   ├─01|iOS平台音频渲染(一):使用AudioQueue渲染音频
│   │   │   ├─02|iOS平台音频渲染(二):使用AudioUnit渲染音频
│   │   │   ├─03|Android平台音频渲染与技术选型
│   │   │   ├─04|移动平台的视频渲染(一):OpenGLES基础
│   │   │   ├─05|移动平台的视频渲染(二):OpenGLES上下文环境搭建
│   │   │   ├─06|移动平台的视频渲染(三):OpenGLES实操
│   │   │   ├─07|播放器项目实战(一):场景分析与架构设计
│   │   │   ├─08|播放器项目实战(二):底层核心模块的实现
│   │   │   ├─09|播放器项目实践(三):让你的播放器跑起来
│   │   │   ├─10|iOS平台音频采集:如何使用AudioQueue和AudioUnit采集音频?
│   │   │   ├─11|Android平台音频采集:如何使用AudioRecord和Oboe采集音频?
│   │   │   ├─12|如何编码出一个AAC文件?
│   │   │   ├─13|如何使用硬件编码器来编码AAC?
│   │   │   ├─14|iOS平台如何采集视频画面?
│   │   │   ├─15|Android平台是如何采集视频画面的?
│   │   │   ├─16|视频编码的工作原理与H
│   │   │   ├─17|如何用软件编码器来编码H264?
│   │   │   ├─18|如何使用移动平台的硬件编码器?
│   │   │   ├─19|视频录制项目实战:场景分析与架构设计
│   │   │   ├─203快手·移动端音视频开发实战
│   │   │   ├─20|如何实现视频录制器的底层模块?(上)
│   │   │   ├─21|如何实现视频录制器的底层模块?(下)
│   │   │   ├─22|视频录制项目实战:让你的录制器运行起来
│   │   │   ├─开篇词|系统学习移动端音视频开发技术,为业务赋能
│   │   │   ├─结束语|跳出舒适区,拥抱变化
│   │   │   └─结束语|跳出舒适区,拥抱变化
│   │   ├─204商业思维案例笔记
│   │   │   ├─01-导读:我们说商业思维时,到底在说什么?
│   │   │   ├─02-成本:马斯克的猎鹰火箭为什么可以这么便宜?
│   │   │   ├─02-成本:马斯克的猎鹰火箭为什么可以这么便宜?
│   │   │   ├─03-效率:为什么Facebook的客户以中小为主?
│   │   │   ├─04-收益(上):阳光养猪场等网赚游戏为什么在19年后突然火了?
│   │   │   ├─05-收益(下):阳光养猪场等网赚游戏为什么在19年后突然火了?
│   │   │   ├─06-体验:链家为什么可以从线下起家反超所有互联网房企?
│   │   │   ├─07-练习课:如何判断自己的业务是否靠谱?
│   │   │   ├─08-二维解构:社区团购为什么成为20年巨头必争的赛道?
│   │   │   ├─09-二八法则:为什么Flipboard等免费精品阅读领域做不大呢?
│   │   │   ├─10-盐铁官营:手机厂商为什么可以在移动互联网时代闷声发大财?
│   │   │   ├─11-分层运营:外卖市场上为什么美团可以后发制人?
│   │   │   ├─12-时间刻度(上):为什么优酷土豆会从行业第一下滑到行业第三?
│   │   │   ├─13-时间刻度(下):为什么优酷土豆会从行业第一下滑到行业第三?
│   │   │   ├─14-练习课(上):如何用结构性思考去理解20多年中国互联网发展的变化?
│   │   │   ├─15-练习课(下):如何用结构性思考去理解20多年中国互联网发展的变化?
│   │   │   ├─16|权限:为什么360在移动端没有延续PC端的辉煌?
│   │   │   ├─17|环境:为什么百度在移动时代坐视字节的崛起?
│   │   │   ├─18|规则:豌豆荚做不起来应用内搜索?
│   │   │   ├─19|资本(上):为什么杨浩涌二次创业一定要融大钱?
│   │   │   ├─204商业思维案例笔记
│   │   │   ├─20|资本(下):为什么杨浩涌二次创业一定要融大钱?
│   │   │   ├─21|角色(上):失败的来往和成功的钉钉后面为什么都是陈航(无招)?
│   │   │   ├─22|角色(下):失败的来往和成功的钉钉后面为什么都是陈航(无招)?
│   │   │   ├─23|练习课:如何在实际工作中规避方法论的过度影响?
│   │   │   ├─24|错位:拼多多缘何在电商市场的红海中再杀出一片天?
│   │   │   ├─25|玩法:大逃杀电影出了那么多年,为什么才诞生绝地求生?
│   │   │   ├─26|边界(上):没有任何硬件基础的小米,为什么可以成为国内第一手机厂商?
│   │   │   ├─27|边界(下):没有任何硬件基础的小米,为什么可以成为国内第一手机厂商?
│   │   │   ├─28|练习课:如何用开放的心态来挖掘非共识机会?
│   │   │   ├─29|平台:91手机助手卖掉为什么是明智的选择?
│   │   │   ├─30|盈利:哈啰单车为什么可以在一地鸡毛的共享单车中逆势杀出?
│   │   │   ├─31|基础:WiFi万能钥匙为什么崛起又为什么落寞?
│   │   │   ├─32|需求:为什么大部分O2O项目都是漫天烟花?
│   │   │   ├─33|竞争:为什么共享充电宝不是一个好生意?
│   │   │   ├─34|练习课:终局思维还可以运用在日常生活哪些方面?
│   │   │   ├─35|行业:如何在一周内快速了解一个行业?
│   │   │   ├─36|呈现:对上汇报方案什么样的结构最有效?
│   │   │   ├─37|目标:如果目标是让猪上树,最好的方式是什么?
│   │   │   ├─中秋加餐|《商业思维案例笔记》推荐书单
│   │   │   ├─中秋加餐|《商业思维案例笔记》推荐书单
│   │   │   ├─中秋加餐|直播回顾:B站的商业化之路到底难在哪?
│   │   │   ├─双周行业热点评论|字节去肥增瘦,抖音爱奇艺联姻,每日优鲜破产
│   │   │   ├─双周行业热点追踪|字节去肥增瘦,抖音爱奇艺联姻,每日优鲜破产
│   │   │   ├─复习加餐|3组图探寻非共识机会!
│   │   │   ├─复习加餐|4组图看懂价值创造!
│   │   │   ├─复习加餐|5组图摸透非规律世界!
│   │   │   ├─复习加餐|5组图收获终局思维!
│   │   │   ├─复习加餐|5组图读懂商业洞察!
│   │   │   ├─大咖助阵|演进:YY诞生17年,微信诞生11年,为什么语音类产品依旧层出不穷?
│   │   │   ├─开篇词|商业思维是每个互联网人都应具备的升维能力
│   │   │   ├─热点速递|《羊了个羊》原来根本没想让我过关!
│   │   │   ├─结束语|橘子不是唯一的水果
│   │   │   └─结束语|橘子不是唯一的水果
│   │   ├─205计算机基础实战课
│   │   │   ├─01|CISC&RISC:从何而来,何至于此
│   │   │   ├─02|RISC特性与发展:RISC-V凭什么成为“半导体行业的Linux”?
│   │   │   ├─03|硬件语言筑基(一):从硬件语言开启手写CPU之旅
│   │   │   ├─04|硬件语言筑基(二)-代码是怎么生成具体电路的?
│   │   │   ├─05|指令架构:RISC-V在CPU设计上到底有哪些优势?
│   │   │   ├─06|手写CPU(一):迷你CPU架构设计与取指令实现
│   │   │   ├─06|手写CPU(一):迷你CPU架构设计与取指令实现
│   │   │   ├─07|手写CPU(二):如何实现指令译码模块?
│   │   │   ├─08|手写CPU(三):如何实现指令执行模块?
│   │   │   ├─09|手写CPU(四):如何实现CPU流水线的访存阶段?
│   │   │   ├─10|手写CPU(五):CPU流水线的写回模块如何实现?
│   │   │   ├─11|手写CPU(六):如何让我们的CPU跑起来?
│   │   │   ├─11|手写CPU(六):如何让我们的CPU跑起来?
│   │   │   ├─12|QEMU:支持RISC-V的QEMU如何构建?
│   │   │   ├─13|小试牛刀:跑通RISC-V平台的HelloWorld程序
│   │   │   ├─14|走进C语言:高级语言怎样抽象执行逻辑?
│   │   │   ├─15|C与汇编:揭秘C语言编译器的“搬砖”日常
│   │   │   ├─16|RISC-V指令精讲(一):算术指令实现与调试
│   │   │   ├─17|RISC-V指令精讲(二):算术指令实现与调试
│   │   │   ├─18|RISC-V指令精讲(三):跳转指令实现与调试
│   │   │   ├─19|RISC-V指令精讲(四):跳转指令实现与调试
│   │   │   ├─205计算机基础实战课
│   │   │   ├─20|RISC-V指令精讲(五):原子指令实现与调试
│   │   │   ├─21|RISC-V指令精讲(六):加载指令实现与调试
│   │   │   ├─22|RISC-V指令精讲(七):访存指令实现与调试
│   │   │   ├─23|内存地址空间:程序中地址的三种产生方式
│   │   │   ├─24|虚实结合:虚拟内存和物理内存
│   │   │   ├─25|堆&栈:堆与栈的区别和应用
│   │   │   ├─26|延迟分配:提高内存利用率的三种机制
│   │   │   ├─27|应用内存管理:Linux的应用与内存管理
│   │   │   ├─28|进程调度:应用为什么能并行执行?
│   │   │   ├─29|应用间通信(一):详解Linux进程IPC
│   │   │   ├─30|应用间通信(二):详解Linux进程IPC
│   │   │   ├─31|外设通信:IOCache与IO调度
│   │   │   ├─32|IO管理:Linux如何管理多个外设?
│   │   │   ├─33|lotop与lostat命令:聊聊命令背后的故事与工作原理
│   │   │   ├─34|文件仓库:初识文件与文件系统
│   │   │   ├─35|Linux文件系统(一):Linux如何存放文件?
│   │   │   ├─36|Linux文件系统(二):Linux如何存放文件?
│   │   │   ├─37|浏览器原理(一):浏览器为什么要用多进程模型?
│   │   │   ├─38|浏览器原理(二):浏览器进程通信与网络渲染详解
│   │   │   ├─39|源码解读:V8执行JS代码的全过程
│   │   │   ├─40|内功心法(一):内核和后端通用的设计思想有哪些?
│   │   │   ├─41|内功心法(二):内核和后端通用的设计思想有哪些?
│   │   │   ├─42|性能调优:性能调优工具eBPF和调优方法
│   │   │   ├─先睹为快:迷你CPU项目效果演示
│   │   │   ├─国庆策划01|知识挑战赛:检验一下学习成果吧!
│   │   │   ├─国庆策划02|来自课代表的学习锦囊
│   │   │   ├─国庆策划03|揭秘代码优化操作和栈保护机制
│   │   │   ├─开篇词|练好基本功,优秀工程师成长第一步
│   │   │   ├─用户故事|我是怎样学习Verilog的?
│   │   │   ├─用户故事|我是怎样学习Verilog的?
│   │   │   ├─结束语|心若有所向往,何惧道阻且长
│   │   │   └─结束语|心若有所向往,何惧道阻且长
│   │   ├─206Web3
│   │   │   ├─01-我们为什么需要Web3
│   │   │   ├─02-公链:从计算分层开始
│   │   │   ├─03-继续分层:身份和激励
│   │   │   ├─04-NFT(一):数据确权及其文化和商业价值的发现
│   │   │   ├─05-NFT(二):数据确权及其文化和商业价值的发现
│   │   │   ├─06-边玩边赚能给游戏和电商带来新的商业模式吗?
│   │   │   ├─07-Web3
│   │   │   ├─08-区块链:从底层重构金融
│   │   │   ├─09-DeFi:“三无模式”开辟金融新蓝海
│   │   │   ├─09-DeFi:“三无模式”开辟金融新蓝海
│   │   │   ├─10-关于DAO的七个真相和两个趋势(一)
│   │   │   ├─11-关于DAO的七个真相和两个趋势(二)
│   │   │   ├─12-DeFi的空中楼阁能盖多高?
│   │   │   ├─13-代码和法律,哪个更强?
│   │   │   ├─14-Web3
│   │   │   ├─206Web3
│   │   │   ├─开篇词-Web3
│   │   │   ├─特别放送-YugaLabs:Web3
│   │   │   ├─结束语-Web3
│   │   │   └─结束语-Web3
│   │   ├─207现代ReactWeb开发实战
│   │   │   ├─01|身为Web前端工程师,我都在开发什么?
│   │   │   ├─02|开发前端有哪些要点?React框架是如何应对的?
│   │   │   ├─03|看板应用:从零开始快速搭建一个React项目
│   │   │   ├─04|JSX:如何理解这种声明式语法糖?
│   │   │   ├─05|前端组件化:如何将完整应用拆分成React组件?
│   │   │   ├─06|虚拟DOM:为什么要关心React组件的渲染机制?
│   │   │   ├─07|组件样式:聊聊CSS-in-JS的特点和典型使用场景
│   │   │   ├─08|组件生命周期:React新老版本中生命周期的演化
│   │   │   ├─09|ReactHooks(上):为什么说在React中函数组件和Hooks是绝配?
│   │   │   ├─10|ReactHooks(下):用Hooks处理函数组件的副作用
│   │   │   ├─11|事件处理:React合成事件是什么?为什么不用原生DOM事件?
│   │   │   ├─12|组件表与里(上):数据是如何在React组件之间流转的?
│   │   │   ├─13|组件表与里(下):用接口的思路设计开发React组件
│   │   │   ├─14|现代化React:现代工程化技术下的React项目
│   │   │   ├─15|不可变数据:为什么对React这么重要?
│   │   │   ├─16|应用状态管理(上):应用状态管理框架Redux
│   │   │   ├─17|应用状态管理(下):该用React组件状态还是Redux?
│   │   │   ├─18|数据类型:活用TypeScript做类型检查
│   │   │   ├─19|代码复用:如何设计开发自定义Hooks和高阶组件?
│   │   │   ├─207现代ReactWeb开发实战
│   │   │   ├─20|大型项目:源码越来越多,项目该如何扩展?
│   │   │   ├─20|大型项目:源码越来越多,项目该如何扩展?
│   │   │   ├─21|性能优化:保证优秀的用户体验
│   │   │   ├─22|质量保证(上):每次上线都出Bug?你需要E2E测试
│   │   │   ├─23|质量保证(下):测试金字塔与React单元测试
│   │   │   ├─24|工程化与团队协作:让我们合作开发一个大型React项目
│   │   │   ├─24|工程化与团队协作:让我们合作开发一个大型React项目
│   │   │   ├─加餐01|留言区心愿单:真·子组件以及jsx-runtime
│   │   │   ├─加餐02|留言区心愿单:Fiber协调引擎
│   │   │   ├─开篇词|ReactWeb开发这样学,才能独当一面!
│   │   │   ├─直播加餐01|前端开发为什么要工程化?
│   │   │   ├─直播加餐02|Freewheel前端工程化的演进和最佳实践
│   │   │   ├─结束语|对React和前端技术未来的展望
│   │   │   └─结束语|对React和前端技术未来的展望
│   │   ├─208Serverless进阶实战课
│   │   │   ├─01-生命周期:函数计算的基本流程是如何执行的?
│   │   │   ├─02|触发器:如何构建事件源与函数计算的纽带?
│   │   │   ├─03-高级属性:应对生产级别的应用,你需要掌握哪些技能?
│   │   │   ├─04|冷启动:如何加快函数的第一次调用过程?
│   │   │   ├─05|扩缩容:如何应对流量的波峰波谷?
│   │   │   ├─06-流量转发:函数在不同情形下是如何执行的?
│   │   │   ├─07-运行时(上):不同语言形态下的函数在容器中是如何执行的?
│   │   │   ├─08-运行时(下):不同语言形态下的函数在容器中是如何执行的?
│   │   │   ├─08-运行时(下):不同语言形态下的函数在容器中是如何执行的?
│   │   │   ├─09-小试牛刀(一):如何利用函数之间的调用解决业务问题?
│   │   │   ├─10|小试牛刀(二):如何突破VPC网络的速度限制?
│   │   │   ├─11-WebIDE:如何让函数远离繁琐的本地开发模式?
│   │   │   ├─12|编排:如何协调多任务的运行?
│   │   │   ├─13-可观测(上):如何构建多维度视角下的Serverless监测体系?
│   │   │   ├─14-可观测(下):如何构建多维度视角下的Serverless监测体系?
│   │   │   ├─15-选型:不同阶段的数据应如何存储?
│   │   │   ├─16-动手体验(一):如何实现业务高效率地开发上线?
│   │   │   ├─17-动手体验(二):如何在云函数场景下实现一个有状态的服务?
│   │   │   ├─18|实战指南:Serverless沙场老兵的一线使用经验
│   │   │   ├─19-实战进阶(一):Serverless“连接器”的能力到底有多大?
│   │   │   ├─208Serverless进阶实战课
│   │   │   ├─20|实战进阶(二):如何基于智能音箱开发一个BOT技能?
│   │   │   ├─21|实战进阶(三):传统的服务如何迁移到Serverless平台?
│   │   │   ├─22|私有云:赛马时代的Serverless核心引擎谁能胜出?
│   │   │   ├─23|实战进阶(四):如何从0到1进阶一个开源引擎?
│   │   │   ├─24-实战进阶(五):如何从Serverless引擎蜕变成一个Serverless平台?
│   │   │   ├─开篇词|Serverless是降本增效浪潮下的必然选择
│   │   │   ├─思维构建|如何在新赛道下进阶Serverless能力?
│   │   │   ├─结束语|在实战中把握事物本质,不断革新
│   │   │   └─结束语|在实战中把握事物本质,不断革新
│   │   ├─209技术领导力实战笔记2022【更新中】
│   │   │   ├─01|研发团队绩效考核:Leader如何做到赏罚分明?
│   │   │   ├─02|如何打造一个“无需激励”自运转的技术团队?
│   │   │   ├─03|技术型创业公司如何把握发展与管理的节奏感?
│   │   │   ├─04|能力构建(上):如何从做技术转变到做技术决策?
│   │   │   ├─05|能力构建(下):从管事到管人,需要迈过的坎
│   │   │   ├─06|技术领导者如何“修炼”管理的艺术?
│   │   │   ├─07|从员工批量离职中,认识管理的价值
│   │   │   ├─08|技术分担产品之忧(上):挑选有业务专家潜力的人
│   │   │   ├─09|技术分担产品之忧(下):产研如何融合?
│   │   │   ├─10|技术管理者如何获得下属的认同?
│   │   │   ├─10|技术管理者如何获得下属的认同?
│   │   │   ├─11|用规则来搭建团队:写周报不一定是坏事
│   │   │   ├─12|从任务分配角度来看管理
│   │   │   ├─209技术领导力实战笔记2022【更新中】
│   │   │   ├─开篇词|他山之石:带你直面技术管理者的真实困局
│   │   │   └─开篇词|他山之石:带你直面技术管理者的真实困局
│   │   ├─210深入浅出可观测性
│   │   │   ├─01-以史鉴今:监控是如何一步步发展而来的?
│   │   │   ├─02-基本概念:指标+日志+链路追踪=可观测性?
│   │   │   ├─03-相互对比:可观测性和传统监控有什么区别?
│   │   │   ├─04-OpenTelemetry:如何利用OpenTelemetry采集可观测数据?
│   │   │   ├─04-OpenTelemetry:如何利用OpenTelemetry采集可观测数据?
│   │   │   ├─05-构建可观测平台:应该购买商业产品还是自己搭建?
│   │   │   ├─06-团队合作:不同团队如何高效共建可观测性?
│   │   │   ├─06-团队合作:不同团队如何高效共建可观测性?
│   │   │   ├─07-软件开发:如何利用可观测性进行驱动?
│   │   │   ├─08-建立SLO:如何为系统可靠性的量化提供依据?
│   │   │   ├─09-跟踪SLO:如何基于错误预算采取行动?
│   │   │   ├─10-实战1:从0到1建立系统应用的可观测性
│   │   │   ├─11-实战2:基于可观测性数据进行问题分析和根因定位
│   │   │   ├─12-实战3:构建基于Kubernetes的系统可观测性
│   │   │   ├─13-实战4:建立软件持续集成和发布的可观测性
│   │   │   ├─14-文化建设:如何构建可观测性的文化和框架
│   │   │   ├─15-展望未来:可观测性在未来的发展趋势是什么?
│   │   │   ├─210深入浅出可观测性
│   │   │   ├─开篇词-可观测性,让开发和维护系统的你每晚都能睡个好觉!
│   │   │   ├─期末考试-来赴一场满分之约吧~
│   │   │   ├─结束语-在实践中,用科学的方法分析和解决问题
│   │   │   └─结束语-在实践中,用科学的方法分析和解决问题
│   │   ├─211JavaScript进阶实战课【更新中】
│   │   │   ├─01-函数式vs
│   │   │   ├─02-如何通过闭包对象管理程序中状态的变化?
│   │   │   ├─03-如何通过部分应用和柯里化让函数具象化?
│   │   │   ├─04-如何通过组合、管道和reducer让函数抽象化?
│   │   │   ├─05|map、reduce和monad如何围绕值进行操作?
│   │   │   ├─06-如何通过模块化、异步和观察做到动态加载?
│   │   │   ├─07-深入理解对象的私有和静态属性
│   │   │   ├─08|深入理解继承、Delegation和组合
│   │   │   ├─09|面向对象:通过词法作用域和调用点理解this绑定
│   │   │   ├─10|JS有哪8种数据类型,你需要注意什么?
│   │   │   ├─11|通过JS引擎的堆栈了解闭包原理
│   │   │   ├─12|JS语义分析该用迭代还是递归?
│   │   │   ├─13-JS引擎如何实现数组的稳定排序?
│   │   │   ├─14-通过SparkPlug深入了解调用栈
│   │   │   ├─15-如何通过哈希查找JS对象内存地址?
│   │   │   ├─16-为什么环形队列适合做Node数据流缓存?
│   │   │   ├─17-如何通过链表做LRU-LFU缓存?
│   │   │   ├─18-TurboFan如何用图做JS编译优化?
│   │   │   ├─19-通过树和图看如何在无序中找到路径和秩序
│   │   │   ├─20-算法思想:JS中分治、贪心、回溯和动态规划
│   │   │   ├─21-创建型:为什么说Redux可以替代单例状态管理
│   │   │   ├─211JavaScript进阶实战课【更新中】
│   │   │   ├─22|结构型:Vue
│   │   │   ├─23-结构型:通过jQuery看结构型模式
│   │   │   ├─24-行为型:通过观察者、迭代器模式看JS异步回调
│   │   │   ├─25-行为型:模版、策略和状态模式有什么区别?
│   │   │   ├─25-行为型:模版、策略和状态模式有什么区别?
│   │   │   ├─26|特殊型:前端有哪些处理加载和渲染的特殊“模式”?
│   │   │   ├─27|性能:如何理解JavaScript中的并行、并发?(上)
│   │   │   ├─28|性能:如何理解JavaScript中的并行、并发?(下)
│   │   │   ├─29|性能:通过Orinoco、JankBusters看垃圾回收
│   │   │   ├─30|网络:从HTTP-1到HTTP-3,你都需要了解什么?
│   │   │   ├─31|安全:JS代码和程序都需要注意哪些安全问题?
│   │   │   ├─开篇词-JavaScript的进阶之路
│   │   │   └─开篇词-JavaScript的进阶之路
│   │   ├─212Go进阶·分布式爬虫实战【更新中】
│   │   │   ├─01|知识回顾:Go基础知识你真的掌握了吗?
│   │   │   ├─02|内有乾坤:Go语言六大基础知识体系
│   │   │   ├─03|进阶路线:如何深入学习Go语言?
│   │   │   ├─04|敏捷之道:大型Go项目的开发流程是怎样的?
│   │   │   ├─04|敏捷之道:大型Go项目的开发流程是怎样的?
│   │   │   ├─05|全局视野:洞悉项目开发流程与规范
│   │   │   ├─06|免费的宝库-什么是网络爬虫?
│   │   │   ├─07|冰川之下:深入Go高并发网络模型
│   │   │   ├─08|高性能设计:自顶向下的高性能Go程序设计与优化
│   │   │   ├─09|破解性能谜题:性能优化的五层境界
│   │   │   ├─10|微服务设计:微服务架构与演进
│   │   │   ├─11|微服务挑战:微服务治理体系与实践
│   │   │   ├─12|分布式系统设计:数据一致性与故障容错的纠葛
│   │   │   ├─13|智慧之火:详解分布式容错共识算法
│   │   │   ├─14|谋定而动:爬虫项目需求分析与架构设计
│   │   │   ├─15|众人拾柴:高效团队的Go编码规范
│   │   │   ├─16|网络爬虫:一次HTTP请求的魔幻旅途
│   │   │   ├─17|巨人的肩膀:HTTP协议与Go标准库原理
│   │   │   ├─18|依赖管理:GoModule用法与原理
│   │   │   ├─19|从正则表达式到CSS选择器:4种网页文本处理手段
│   │   │   ├─20|面向组合:接口的使用场景与底层原理
│   │   │   ├─212Go进阶·分布式爬虫实战【更新中】
│   │   │   ├─21|采集引擎:实战接口抽象与模拟浏览器访问
│   │   │   ├─22|优雅的离场-Context超时控制与原理
│   │   │   ├─开篇词|聚沙成塔,构建高性能、分布式爬虫项目
│   │   │   └─开篇词|聚沙成塔,构建高性能、分布式爬虫项目
│   │   ├─213超级访谈:对话毕玄
│   │   │   ├─00|番外:一位险些没上得了大学的青年,如何开启计算机征程
│   │   │   ├─01|小厂项目:做程序员不难,难的是做职业程序员
│   │   │   ├─02|小厂创业:做出一个产品,卖给所有人
│   │   │   ├─03|淘宝HSF:能让淘宝出重大故障的就那批人
│   │   │   ├─04|淘宝消防队:真正最优秀的程序员不应该是英雄
│   │   │   ├─05|HBase-T4:Leader最重要的,说白了是要赌未来
│   │   │   ├─06|异地多活:技术圈子的人,见过猪跑很重要
│   │   │   ├─07|运维团队:我能干,只是我不想干而已
│   │   │   ├─08|基础团队:研发效能部门,解决不了研发效能问题
│   │   │   ├─08|基础团队:研发效能部门,解决不了研发效能问题
│   │   │   ├─09|统一调度:只是问题非常多而已,摔出来就行了
│   │   │   ├─10|出走大厂:离职?还是不离职?这是一个问题
│   │   │   ├─11|CEO心得:大厂出来创业,最大问题是对钱没概念
│   │   │   ├─213超级访谈:对话毕玄
│   │   │   ├─团队:在人身上,你到底愿意花多大精力?
│   │   │   ├─开篇词|这一次,我们来采访毕玄
│   │   │   ├─成事:技术人最大的问题就是情怀化
│   │   │   ├─文化:你所在的团队,有多少人敢讲真话?
│   │   │   ├─方向:技术演进,到底该怎么思考未来?
│   │   │   ├─架构:架构师只是个角色,不是个岗位
│   │   │   └─架构:架构师只是个角色,不是个岗位
│   │   ├─214超级访谈:对话玉伯
│   │   │   ├─01-从页面仔到工程师,前端到底在发挥什么价值
│   │   │   ├─02-何为体验:把简单留给用户,也把简单留给自己
│   │   │   ├─03-终端技术:浅谈小程序与客户端的发展
│   │   │   ├─04-开源三大收获:异步协同、文档优先与快乐工作
│   │   │   ├─05-蚂蚁内部开源:迈出第一步,但还有很长路要走
│   │   │   ├─06-从淘宝到支付宝:几次项目失利,但创新产品之心未死
│   │   │   ├─07-产品故事:语雀两度生死局
│   │   │   ├─08-产品经理能力进阶:用户洞察、抽象设计到看到远方
│   │   │   ├─09-个人成长关键词一:全情投入
│   │   │   ├─10-个人成长关键词二:守正出奇
│   │   │   ├─11-个人成长关键词三:愿等花开
│   │   │   ├─12-作为创新产品聚集地,体验技术部成长土壤从何来
│   │   │   ├─13-行业内口碑第一的前端团队,如何打造文化
│   │   │   ├─14-管理能力提升:曾经影响过的书籍和启发过我的人
│   │   │   ├─15-从浆手、掌舵人到兜底人,管理者进阶的三阶段
│   │   │   ├─214超级访谈:对话玉伯
│   │   │   ├─开篇词-蚂蚁集团玉伯:人生不设限
│   │   │   ├─结束语-我想聊的一些与技术无关的话
│   │   │   └─结束语-我想聊的一些与技术无关的话
│   │   ├─215高并发系统实战课
│   │   │   ├─01|结构梳理:大并发下,你的数据库表可能成为性能隐患
│   │   │   ├─02|缓存一致:读多写少时,如何解决数据更新缓存不同步?
│   │   │   ├─02|缓存一致:读多写少时,如何解决数据更新缓存不同步?
│   │   │   ├─03|Token:如何降低用户身份鉴权的流量压力?
│   │   │   ├─04|同城双活:如何实现机房之间的数据同步?
│   │   │   ├─05|共识Raft:如何保证多机房数据的一致性?
│   │   │   ├─06|领域拆分:如何合理地拆分系统?
│   │   │   ├─07|强一致锁:如何解决高并发下的库存争抢问题?
│   │   │   ├─08|系统隔离:如何应对高并发流量冲击?
│   │   │   ├─09|分布式事务:多服务的2PC、TCC都是怎么实现的?
│   │   │   ├─10|稀疏索引:为什么高并发写不推荐关系数据库?
│   │   │   ├─11|链路追踪:如何定制一个分布式链路跟踪系统?
│   │   │   ├─12|引擎分片:Elasticsearch如何实现大数据检索?
│   │   │   ├─13-实时统计:链路跟踪实时计算中的实用算法
│   │   │   ├─14|跳数索引:后起新秀ClickHouse
│   │   │   ├─15|实践方案:如何用C++自实现链路跟踪?
│   │   │   ├─16|本地缓存:用本地缓存做服务会遇到哪些坑?
│   │   │   ├─17|业务脚本:为什么说可编程订阅式缓存服务更有用?
│   │   │   ├─215高并发系统实战课
│   │   │   ├─开篇词|高并发系统,技术实力的试金石
│   │   │   └─开篇词|高并发系统,技术实力的试金石
│   │   ├─216Vue3企业级项目实战课【更新中】
│   │   │   ├─01|编译和非编译模式:离开Vue工具,你还知道怎么用Vue3吗?
│   │   │   ├─02|Webpack编译搭建:如何用Webpack初构建Vue3项目?
│   │   │   ├─03|从Rollup到Vite:如何用Vite构建你的Vue3项目?
│   │   │   ├─04|模版语法和JSX语法:你知道Vue可以用JSX写吗?
│   │   │   ├─05|响应式开发操作:如何理解和使用Vue3的响应式数据?
│   │   │   ├─216Vue3企业级项目实战课【更新中】
│   │   │   ├─开篇词|为何掌握了技术API,依然在项目中处处掣肘?
│   │   │   └─开篇词|为何掌握了技术API,依然在项目中处处掣肘?
│   │   └─217-手把手教你落地DDD【更新中】
│   │         ├─01|DDD小传:领域驱动设计为什么这么火?
│   │         ├─02|迭代一概述:怎样开启一个麻雀虽小五脏俱全的项目?
│   │         ├─217-手把手教你落地DDD【更新中】
│   │         ├─开篇词|带你吃透DDD
│   │         └─开篇词|带你吃透DDD
│   └─2、视频
│         ├─1-微服务架构核心20讲
│         │   ├─01-什么是微服务架构?
│         │   ├─02-架构师如何权衡微服务的利弊?
│         │   ├─03-康威法则和微服务给架构师怎样的启示?
│         │   ├─04-企业应该在什么时候开始考虑引入微服务?
│         │   ├─05-什么样的组织架构更适合微服务?
│         │   ├─06-如何理解阿里巴巴提出的微服务中台战略?
│         │   ├─07-如何给出一个清晰简洁的服务分层方式?
│         │   ├─08-微服务总体技术架构体系是怎样设计的?
│         │   ├─09-微服务最经典的三种服务发现机制
│         │   ├─10-微服务API服务网关(一)原理
│         │   ├─11-微服务API服务网关(二)开源网关Zuul
│         │   ├─12-跟Netflix学习微服务路由发现体系
│         │   ├─13-集中式配置中心的作用和原理是什么?
│         │   ├─14-微服务通讯方式RPCvsREST
│         │   ├─15-微服务框架需要考虑哪些治理环节?
│         │   ├─16-微服务监控系统分层和监控架构
│         │   ├─17-微服务的调用链监控该如何选型?
│         │   ├─18-微服务的容错限流是如何工作的?
│         │   ├─19-Docker容器部署技术&持续交付流水线
│         │   └─20-容器集群调度和基于容器的发布体系&结课测试
│         ├─10-玩转Spring全家桶
│         │   ├─01-Spring课程介绍
│         │   ├─02-一起认识Spring家族的主要成员
│         │   ├─03-跟着Spring了解技术趋势
│         │   ├─04-编写你的第一个Spring程序
│         │   ├─05-如何配置单数据源
│         │   ├─06-如何配置多数据源
│         │   ├─07-那些好用的连接池们:HikariCP
│         │   ├─08-那些好用的连接池们:AlibabaDruid
│         │   ├─09-如何通过SpringJDBC访问数据库
│         │   ├─10-什么是Spring的事务抽象(上)
│         │   ├─100-使用Hystrix实现服务熔断(上)
│         │   ├─101-使用Hystrix实现服务熔断(下)
│         │   ├─102-如何观察服务熔断
│         │   ├─103-使用Resilience4j实现服务熔断
│         │   ├─104-使用Resilience4j实现服务限流(上)
│         │   ├─105-使用Resilience4j实现服务限流(下)
│         │   ├─106-SpringBucks实战项目进度小结
│         │   ├─107-基于Git的配置中心(上)
│         │   ├─108-基于Git的配置中心(下)
│         │   ├─109-基于Zookeeper的配置中心
│         │   ├─11-什么是Spring的事务抽象(下)
│         │   ├─110-深入理解SpringCloud的配置抽象
│         │   ├─111-基于Consul的配置中心
│         │   ├─112-基于Nacos的配置中心
│         │   ├─113-SpringBucks实战项目进度小结
│         │   ├─114-认识SpringCloudStream
│         │   ├─115-通过SpringCloudStream访问RabbitMQ
│         │   ├─116-通过SpringCloudStream访问Kafka
│         │   ├─117-SpringBucks实战项目进度小结
│         │   ├─118-通过Dapper理解链路治理
│         │   ├─119-使用SpringCloudSleuth实现链路追踪
│         │   ├─12-了解Spring的JDBC异常抽象
│         │   ├─120-如何追踪消息链路
│         │   ├─121-除了链路还要治理什么
│         │   ├─122-SpringBucks实战项目进度小结
│         │   ├─123-结课测试&结束语
│         │   ├─13-课程答疑(上)
│         │   ├─14-课程答疑(下)
│         │   ├─15-认识SpringDataJPA
│         │   ├─16-定义JPA的实体对象
│         │   ├─17-开始我们的线上咖啡馆实战项目:SpringBucks
│         │   ├─18-通过SpringDataJPA操作数据库
│         │   ├─19-SpringDataJPA的Repository是怎么从接口变成Bean的
│         │   ├─20-通过MyBatis操作数据库
│         │   ├─21-让MyBatis更好用的那些工具:MyBatisGenerator
│         │   ├─22-让MyBatis更好用的那些工具:MyBatisPageHelper
│         │   ├─23-SpringBucks实战项目进度小结
│         │   ├─24-通过Docker辅助开发
│         │   ├─25-在Spring中访问MongoDB
│         │   ├─26-在Spring中访问Redis
│         │   ├─27-Redis的哨兵与集群模式
│         │   ├─28-了解Spring的缓存抽象
│         │   ├─29-Redis在Spring中的其他用法
│         │   ├─30-SpringBucks实战项目进度小结
│         │   ├─31-ProjectReactor介绍(上)
│         │   ├─32-ProjectReactor介绍(下)
│         │   ├─33-通过Reactive的方式访问Redis
│         │   ├─34-通过Reactive的方式访问MongoDB
│         │   ├─35-通过Reactive的方式访问RDBMS
│         │   ├─36-通过AOP打印数据访问层的摘要(上)
│         │   ├─37-通过AOP打印数据访问层的摘要(下)
│         │   ├─38-SpringBucks实战项目进度小结
│         │   ├─39-编写第一个SpringMVCController
│         │   ├─40-理解Spring的应用上下文
│         │   ├─41-理解请求的处理机制
│         │   ├─42-如何定义处理方法(上)
│         │   ├─43-如何定义处理方法(下)
│         │   ├─44-SpringMVC中的视图解析机制(上)
│         │   ├─45-SpringMVC中的视图解析机制(下)
│         │   ├─46-SpringMVC中的常用视图(上)
│         │   ├─47-SpringMVC中的常用视图(下)
│         │   ├─48-静态资源与缓存
│         │   ├─49-SpringMVC中的异常处理机制
│         │   ├─50-了解SpringMVC的切入点
│         │   ├─51-SpringBucks实战项目进度小结
│         │   ├─52-课程答疑
│         │   ├─53-通过RestTemplate访问Web资源
│         │   ├─54-RestTemplate的高阶用法
│         │   ├─55-简单定制RestTemplate
│         │   ├─56-通过WebClient访问Web资源
│         │   ├─57-SpringBucks实战项目进度小结
│         │   ├─58-设计好的RESTfulWebService(上)
│         │   ├─59-设计好的RESTfulWebService(下)
│         │   ├─60-什么是HATEOAS
│         │   ├─61-使用SpringDataREST实现简单的超媒体服务(上)
│         │   ├─62-使用SpringDataREST实现简单的超媒体服务(下)
│         │   ├─63-分布式环境中如何解决Session的问题
│         │   ├─64-使用WebFlux代替SpringMVC(上)
│         │   ├─65-使用WebFlux代替SpringMVC(下)
│         │   ├─66-SpringBucks实战项目进度小结(1)
│         │   ├─66-SpringBucks实战项目进度小结
│         │   ├─67-认识SpringBoot的组成部分(1)
│         │   ├─67-认识SpringBoot的组成部分
│         │   ├─68-了解自动配置的实现原理(1)
│         │   ├─68-了解自动配置的实现原理
│         │   ├─69-动手实现自己的自动配置
│         │   ├─70-如何在低版本Spring中快速实现类似自动配置的功能
│         │   ├─71-了解起步依赖及其实现原理
│         │   ├─72-定制自己的起步依赖
│         │   ├─73-深挖SpringBoot的配置加载机制
│         │   ├─74-理解配置背后的PropertySource抽象
│         │   ├─75-认识SpringBoot的各类ActuatorEndpoint
│         │   ├─76-动手定制自己的HealthIndicator
│         │   ├─77-通过Micrometer获取运行数据
│         │   ├─78-通过SpringBootAdmin了解程序的运行状态
│         │   ├─79-如何定制Web容器的运行参数
│         │   ├─80-如何配置容器支持HTTP-2(上)
│         │   ├─81-如何配置容器支持HTTP-2(下)
│         │   ├─82-如何编写命令行运行的程序
│         │   ├─83-了解可执行Jar背后的秘密
│         │   ├─84-如何将SpringBoot应用打包成Docker镜像文件
│         │   ├─85-SpringBucks实战项目进度小结
│         │   ├─86-简单理解微服务
│         │   ├─87-如何理解云原生(CloudNative)
│         │   ├─88-12-FactorApp(上)
│         │   ├─89-12-FactorApp(下)
│         │   ├─90-认识SpringCloud的组成部分
│         │   ├─91-使用Eureka作为服务注册中心
│         │   ├─92-使用SpringCloudLoadbalancer访问服务
│         │   ├─93-使用Feign访问服务
│         │   ├─94-深入理解服务发现背后的DiscoveryClient
│         │   ├─95-使用Zookeeper作为服务注册中心
│         │   ├─96-使用Consul作为服务注册中心
│         │   ├─97-使用Nacos作为服务注册中心
│         │   ├─98-如何定制自己的DiscoveryClient
│         │   └─99-SpringBucks实战项目进度小结
│         ├─11-Go语言从入门到实战
│         │   ├─01-Go语言课程介绍
│         │   ├─02-内容综述
│         │   ├─03-Go语言简介:历史背景、发展现状及语言特性
│         │   ├─04-编写第一个Go程序
│         │   ├─05-变量、常量以及与其他语言的差异
│         │   ├─06-数据类型
│         │   ├─07-运算符
│         │   ├─08-条件和循环
│         │   ├─09-数组和切片
│         │   ├─10-Map声明、元素访问及遍历
│         │   ├─11-Map与工厂模式,在Go语言中实现Set
│         │   ├─12-字符串
│         │   ├─13-Go语言的函数
│         │   ├─14-可变参数和defer
│         │   ├─15-行为的定义和实现
│         │   ├─16-Go语言的相关接口
│         │   ├─17-扩展与复用
│         │   ├─18-不一样的接口类型,一样的多态
│         │   ├─19-编写好的错误处理
│         │   ├─20-panic和recover
│         │   ├─21-构建可复用的模块(包)
│         │   ├─22-依赖管理
│         │   ├─23-协程机制
│         │   ├─24-共享内存并发机制
│         │   ├─25-CSP并发机制
│         │   ├─26-多路选择和超时
│         │   ├─27-channel的关闭和广播
│         │   ├─28-任务的取消
│         │   ├─29-Context与任务取消
│         │   ├─30-只运行一次
│         │   ├─31-仅需任意任务完成
│         │   ├─32-所有任务完成
│         │   ├─33-对象池
│         │   ├─34-sync
│         │   ├─35-单元测试
│         │   ├─36-Benchmark
│         │   ├─37-BDD
│         │   ├─38-反射编程
│         │   ├─39-万能程序
│         │   ├─40-不安全编程
│         │   ├─41-实现pipe-filterframework
│         │   ├─42-实现micro-kernelframework
│         │   ├─43-内置JSON解析
│         │   ├─44-easyjson
│         │   ├─45-HTTP服务
│         │   ├─46-构建RESTful服务
│         │   ├─47-性能分析工具
│         │   ├─48-性能调优示例
│         │   ├─49-别让性能被锁住
│         │   ├─50-GC友好的代码
│         │   ├─51-高效字符串连接
│         │   ├─52-面向错误的设计
│         │   ├─53-面向恢复的设计
│         │   ├─54-ChaosEngineering
│         │   └─55-结课测试&结束语
│         ├─12-Vue开发实战
│         │   ├─01-课程介绍
│         │   ├─02-Vue简介
│         │   ├─03-内容综述
│         │   ├─04-第一个Vue程序
│         │   ├─05-组件基础及组件注册
│         │   ├─06-Vue组件的核心概念:事件
│         │   ├─07-Vue组件的核心概:插槽
│         │   ├─08-理解单文件组件
│         │   ├─09-双向绑定和单向数据流不冲突
│         │   ├─10-理解虚拟DOM及key属性的作用
│         │   ├─11-如何触发组件的更新
│         │   ├─12-合理应用计算属性和侦听器
│         │   ├─13-生命周期的应用场景和函数式组件
│         │   ├─14-指令的本质是什么
│         │   ├─15-常用高级特性provide-inject
│         │   ├─16-如何优雅地获取跨层级组件实例(拒绝递归)
│         │   ├─17-template和JSX的对比以及它们的本质
│         │   ├─18-为什么需要Vuex
│         │   ├─19-如何在Vue中使用Vuex
│         │   ├─20-Vuex核心概念及底层原理
│         │   ├─21-Vuex最佳实践
│         │   ├─22-VueRouter的使用场景
│         │   ├─23-选择何种模式的路由及底层原理
│         │   ├─24-Nuxt解决了哪些问题?
│         │   ├─25-Nuxt核心原理是什么?
│         │   ├─26-UI组件库对比:ElementUI、AntDesignVue、iView
│         │   ├─27-提升开发效率和体验的常用工具:ESLint、Prettier、vue-devtools
│         │   ├─28-单元测试的重要性及其使用
│         │   ├─29-生态篇习题解答(上)
│         │   ├─30-生态篇习题解答(下)
│         │   ├─31-AntDesignPro介绍
│         │   ├─32-使用VueCLI3快速创建项目
│         │   ├─33-如何自定义Webpack和Babel配置
│         │   ├─34-如何设计一个高扩展性的路由
│         │   ├─35-实现一个可动态改变的页面布局
│         │   ├─36-如何将菜单和路由结合
│         │   ├─37-如何使用路由管理用户权限
│         │   ├─38-更加精细化的权限设计(权限组件、权限指令)
│         │   ├─39-如何在组件中使用ECharts、Antv等其他第三方库
│         │   ├─40-如何高效地使用Mock数据进行开发
│         │   ├─41-如何与服务端进行交互(Axios)
│         │   ├─42-创建一个普通表单
│         │   ├─43-初始数据、自动校验、动态赋值
│         │   ├─44-创建一个分步表单
│         │   ├─45-自己封装一个支持自动校验的表单项
│         │   ├─46-如何管理系统中使用的图标
│         │   ├─47-如何定制主题及动态切换主题
│         │   ├─48-如何做好国际化
│         │   ├─49-如何高效地构建打包发布
│         │   ├─50-如何构建可交互的组件文档
│         │   ├─51-如何做好组件的单元测试
│         │   ├─52-如何发布组件到npm
│         │   └─53-结课测试&GitHub相关生态应用(持续集成、单测覆盖率、文档发布、issue管理)
│         ├─13-从0开发一款iOSApp
│         │   ├─03-常见App类型及技术栈浅析
│         │   ├─04-使用Xcode创建第一个工程
│         │   ├─05-MVC模式:iOS中的架构基石
│         │   ├─06-iOS中的视图UIView
│         │   ├─07-了解UIView的生命周期
│         │   ├─08-视图的控制器UIViewController
│         │   ├─09-结合视图和控制器构建Tabbar样式页面
│         │   ├─10-使用Navigation构建App的基础交互
│         │   ├─100-使用UITextView实现输入框
│         │   ├─101-复杂列表页实现方案及IGListKit浅析
│         │   ├─102-复杂内容页展示逻辑及实现方案浅析
│         │   ├─103-App的签名原理和证书申请
│         │   ├─104-常用iOS唯一标识符
│         │   ├─105-App的打包和上架流程
│         │   ├─106-结课测试&结束语
│         │   ├─11-iOS基本页面框架的构成和实现
│         │   ├─12-系统函数中常见模式Delegate
│         │   ├─13-UITableView简介
│         │   ├─14-UITableView中Delegate和Datasource的使用
│         │   ├─15-UITableViewCell的复用及原理
│         │   ├─16-结合子视图实现完整的列表界面
│         │   ├─17-UICollectionView的基本应用和实现
│         │   ├─18-UICollectionViewLayout的应用
│         │   ├─19-基本列表视图的选择和使用
│         │   ├─20-滚动视图的基类UIScrollView简介
│         │   ├─21-应用UIScrollViewDelegate实现复杂逻辑
│         │   ├─22-iOS中滚动视图对比及App内应用场景浅析
│         │   ├─23-iOS中文字的展示:UILabel的使用与布局
│         │   ├─24-iOS中图片的展示:UIImage与UIImageView的应用
│         │   ├─25-iOS中按钮的实现:UIButton的使用
│         │   ├─26-UIControl以及Target-Action模式
│         │   ├─27-使用UIGestureRecognizer实现自定义点击与手势
│         │   ├─28-通过UIAlertView了解UIKit系统函数的设计和使用
│         │   ├─29-Web基础知识及WKWebView介绍
│         │   ├─30-使用WKWebView及Delgate实现简单的页面加载
│         │   ├─31-认识观察者模式KVO并展示页面加载进度
│         │   ├─32-iOS开发中的Web应用浅析
│         │   ├─33-使用UIView动画完善界面的交互
│         │   ├─34-动画背后的CALayer基本应用
│         │   ├─35-CoreAnimation及开源动画框架介绍
│         │   ├─36-常用代码规范和重构方式
│         │   ├─37-结合UIKit分析常用App的页面结构
│         │   ├─38-网络基础及请求的封装
│         │   ├─39-NSURLSession基础原理、组织和使用
│         │   ├─40-使用系统网络架构NSURLSession加载网络数据
│         │   ├─41-常用框架集成方式Submodule、Carthage和CocoaPods对比和使用
│         │   ├─42-集成和使用开源网络框架
│         │   ├─43-iOS中的JSON解析
│         │   ├─44-使用结构化的数据进行解析和展示
│         │   ├─45-实现列表数据加载、解析和展示的完整流程
│         │   ├─46-iOS沙盒机制和文件结构
│         │   ├─47-使用NSFileManager操作和管理文件
│         │   ├─48-iOS中的序列化NSCoding
│         │   ├─49-开源存储方案对比与分析
│         │   ├─50-缓存新闻列表数据及已读状态
│         │   ├─51-iOS中线程的基础知识及NSThread
│         │   ├─52-GCD的常用方法分析和使用
│         │   ├─53-了解Operation、Runloop以及多线程开发总结
│         │   ├─54-如何管理App中的图片下载与存储
│         │   ├─55-开源图片框架接触的架构和使用
│         │   ├─56-了解iOS系统的音视频框架
│         │   ├─57-重构视频列表展示视频
│         │   ├─58-实现简单视频播放器AVPlayer
│         │   ├─59-iOS消息机制NSNotification简介
│         │   ├─60-使用Notification接收和处理播放状态通知
│         │   ├─61-使用KVO监听和处理播放资源的状态变化
│         │   ├─62-CMTime及播放缓冲进度的获取和使用
│         │   ├─63-使用单例模式重构播放器业务逻辑
│         │   ├─64-常用App视频业务及流程浅析
│         │   ├─65-AutoLayout简介
│         │   ├─66-使用AutoLayout实现通用ToolBar视图
│         │   ├─67-iOS常用布局方式选择
│         │   ├─68-逻辑分辨率适配
│         │   ├─69-物理分辨率适配
│         │   ├─70-使用ImageAsset管理图片资源
│         │   ├─71-iPhoneX适配
│         │   ├─72-iOS开发适配常用方法总结
│         │   ├─73-App启动过程及生命周期分析
│         │   ├─74-通过App生命周期回调实现启动页
│         │   ├─75-使用URLScheme进行App间的唤起和通信
│         │   ├─76-UniversalLink简介
│         │   ├─77-常用组件化Target-Action方案
│         │   ├─78-常用组件化URLScheme方案
│         │   ├─79-常用组件化Protocol-Class方案
│         │   ├─80-实现简单的第三方登录和分享功能
│         │   ├─81-iOS中静态库的制作和使用
│         │   ├─82-iOS当中Framework的制作和使用
│         │   ├─83-OAuth和OpenID原理和使用
│         │   ├─84-集成QQSDK实现登录和分享功能
│         │   ├─85-iOS中常用日志和上报系统浅析
│         │   ├─86-类CocoaLumberjack日志框架架构浅析
│         │   ├─87-Crash的类型介绍和常用收集方案
│         │   ├─88-常用上报技术方案对比和分析
│         │   ├─89-iOS中定位和定位权限
│         │   ├─90-定位功能实现和位置信息的获取
│         │   ├─91-iOS中推送和推送权限
│         │   ├─92-使用UserNotifications实现本地推送
│         │   ├─93-远程推送与APNs简介
│         │   ├─94-使用UserNotifications接收远程推送
│         │   ├─95-iOS图标管理和动态更新
│         │   ├─96-iOSAppExtension简介
│         │   ├─97-实现TodayExtension以及数据共享
│         │   ├─98-UITextField和UITextView
│         │   └─99-使用UITextField实现搜索条
│         ├─14-Web协议详解与抓包实战
│         │   ├─03-浏览器发起HTTP请求的典型场景
│         │   ├─04-基于ABNF语义定义的HTTP消息格式
│         │   ├─05-网络为什么要分层:OSI模型与TCP-IP模型
│         │   ├─06-HTTP解决了什么问题?
│         │   ├─07-评估Web架构的七大关键属性
│         │   ├─08-从五种架构风格推导出HTTP的REST架构
│         │   ├─09-如何用Chrome的Network面板分析HTTP报文
│         │   ├─10-URI的基本格式以及与URL的区别
│         │   ├─100-拥塞控制(3):快速重传与快速恢复
│         │   ├─101-SACK与选择性重传算法
│         │   ├─102-从丢包到测量驱动的拥塞控制算法
│         │   ├─103-GoogleBBR拥塞控制算法原理
│         │   ├─104-关闭连接过程优化
│         │   ├─105-优化关闭连接时的TIME-WAIT状态
│         │   ├─106-keepalive、校验和及带外数据
│         │   ├─107-面向字节流的TCP连接如何多路复用
│         │   ├─108-四层负载均衡可以做什么
│         │   ├─109-网络层与链路层的功能
│         │   ├─11-为什么要对URI进行编码?
│         │   ├─110-IPv4分类地址
│         │   ├─111-CIDR无分类地址
│         │   ├─112-IP地址与链路地址的转换:ARP与RARP协议
│         │   ├─113-NAT地址转换与LVS负载均衡
│         │   ├─114-IP选路协议
│         │   ├─115-MTU与IP报文分片
│         │   ├─116-IP协议的助手:ICMP协议
│         │   ├─117-多播与IGMP协议
│         │   ├─118-支持万物互联的IPv6地址
│         │   ├─119-IPv6报文及分片
│         │   ├─12-详解HTTP的请求行
│         │   ├─120-从wireshark报文统计中找规律
│         │   ├─121-结课测试&结束语
│         │   ├─13-HTTP的正确响应码
│         │   ├─14-HTTP的错误响应码
│         │   ├─15-如何管理跨代理服务器的长短连接?
│         │   ├─16-HTTP消息在服务器端的路由
│         │   ├─17-代理服务器转发消息时的相关头部
│         │   ├─18-请求与响应的上下文
│         │   ├─19-内容协商与资源表述
│         │   ├─20-HTTP包体的传输方式(1):定长包体
│         │   ├─21-HTTP包体的传输方式(2):不定长包体
│         │   ├─22-HTMLform表单提交时的协议格式
│         │   ├─23-断点续传与多线程下载是如何做到的?
│         │   ├─24-Cookie的格式与约束
│         │   ├─25-Session及第三方Cookie的工作原理
│         │   ├─26-浏览器为什么要有同源策略?
│         │   ├─27-如何“合法”地跨域访问?
│         │   ├─28-条件请求的作用
│         │   ├─29-缓存的工作原理
│         │   ├─30-缓存新鲜度的四种计算方式
│         │   ├─31-复杂的Cache-Control头部
│         │   ├─32-什么样的响应才会被缓存
│         │   ├─33-多种重定向跳转方式的差异
│         │   ├─34-如何通过HTTP隧道访问被限制的网络
│         │   ├─35-网络爬虫的工作原理与应对方式
│         │   ├─36-HTTP协议的基本认证
│         │   ├─37-Wireshark的基本用法
│         │   ├─38-如何通过DNS协议解析域名?
│         │   ├─39-Wireshark的捕获过滤器
│         │   ├─40-Wireshark的显示过滤器
│         │   ├─41-Websocket解决什么问题
│         │   ├─42-Websocket的约束
│         │   ├─43-WebSocket协议格式
│         │   ├─44-如何从HTTP升级到WebSocket
│         │   ├─45-传递消息时的编码格式
│         │   ├─46-掩码及其所针对的代理污染攻击
│         │   ├─47-如何保持会话心跳
│         │   ├─48-如何关闭会话
│         │   ├─49-HTTP-1
│         │   ├─50-HTTP-2特性概述
│         │   ├─51-如何使用Wireshark解密TLS-SSL报文?
│         │   ├─52-h2c:在TCP上从HTTP-1升级到HTTP-2
│         │   ├─53-h2:在TLS上从HTTP-1升级到HTTP-2
│         │   ├─54-帧、消息、流的关系
│         │   ├─55-帧格式:Stream流ID的作用
│         │   ├─56-帧格式:帧类型及设置帧的子类型
│         │   ├─57-HPACK如何减少HTTP头部的大小?
│         │   ├─58-HPACK中如何使用Huffman树编码?
│         │   ├─59-HPACK中整型数字的编码
│         │   ├─60-HPACK中头部名称与值的编码格式
│         │   ├─61-服务器端的主动消息推送
│         │   ├─62-Stream的状态变迁
│         │   ├─63-RSTSTREAM帧及常见错误码
│         │   ├─64-我们需要Stream优先级
│         │   ├─65-不同于TCP的流量控制
│         │   ├─66-HTTP-2与gRPC框架
│         │   ├─67-HTTP-2的问题及HTTP-3的意义
│         │   ├─68-HTTP-3-QUIC协议格式
│         │   ├─69-七层负载均衡做了些什么?
│         │   ├─70-TLS协议的工作原理
│         │   ├─71-对称加密的工作原理(1):XOR与填充
│         │   ├─72-对称加密的工作原理(2):工作模式
│         │   ├─73-详解AES对称加密算法
│         │   ├─74-非对称密码与RSA算法
│         │   ├─75-基于openssl实战验证RSA
│         │   ├─76-非对称密码应用:PKI证书体系
│         │   ├─77-非对称密码应用:DH密钥交换协议
│         │   ├─78-ECC椭圆曲线的特性
│         │   ├─79-DH协议升级:基于椭圆曲线的ECDH协议
│         │   ├─80-TLS1
│         │   ├─81-握手的优化:session缓存、ticket票据及TLS1
│         │   ├─82-TLS与量子通讯的原理
│         │   ├─83-量子通讯BB84协议的执行流程
│         │   ├─84-TCP历史及其设计哲学
│         │   ├─85-TCP解决了哪些问题
│         │   ├─86-TCP报文格式
│         │   ├─87-如何使用tcpdump分析网络报文
│         │   ├─88-三次握手建立连接
│         │   ├─89-三次握手过程中的状态变迁
│         │   ├─90-三次握手中的性能优化与安全问题
│         │   ├─91-数据传输与MSS分段
│         │   ├─92-重传与确认
│         │   ├─93-RTO重传定时器的计算
│         │   ├─94-滑动窗口:发送窗口与接收窗口
│         │   ├─95-窗口的滑动与流量控制
│         │   ├─96-操作系统缓冲区与滑动窗口的关系
│         │   ├─97-如何减少小报文提高网络效率
│         │   ├─98-拥塞控制(1):慢启动
│         │   └─99-拥塞控制(2):拥塞避免
│         ├─15-零基础学Java
│         │   ├─03-开发环境搭建(macOS)
│         │   ├─04-HelloWorld程序编译和运行(macOS)
│         │   ├─05-开发环境搭建(Windows)
│         │   ├─06-HelloWorld程序编译和运行(Windows)
│         │   ├─07-详解HelloWorld程序
│         │   ├─08-IntelliJIDEA集成开发环境的安装和使用(macOS)
│         │   ├─09-IntelliJIDEA集成开发环境的安装和使用(Windows)
│         │   ├─10-从加减乘除到变量
│         │   ├─100-局部内部类
│         │   ├─101-匿名类
│         │   ├─102-特殊类的总结
│         │   ├─103-让我们的超市运转起来:设计篇
│         │   ├─104-让我们的超市运转起来:代码篇
│         │   ├─105-初识异常:trycatch
│         │   ├─106-Java中异常的分类
│         │   ├─107-抛出异常的语法
│         │   ├─108-Java异常的传递
│         │   ├─109-自定义异常
│         │   ├─11-再探计算加减乘除的程序
│         │   ├─110-异常传递不是凌波微步
│         │   ├─111-trycatchfinally语句
│         │   ├─112-自动回收资源的try语句
│         │   ├─113-Java中的常见异常
│         │   ├─114-Collection类族简介
│         │   ├─115-Collection中的List(上)
│         │   ├─116-Collection中的List(下)
│         │   ├─117-Collection中的Set
│         │   ├─118-泛型简析(上)
│         │   ├─119-泛型简析(下)
│         │   ├─12-Java中的基本数据类型
│         │   ├─120-再探泛型
│         │   ├─121-Iterator接口
│         │   ├─122-Map:key和value的映射
│         │   ├─123-定义自己的注解
│         │   ├─124-LambdaV
│         │   ├─125-LambdaV
│         │   ├─126-基本类型的自动装箱和拆箱
│         │   ├─127-Java中的File类
│         │   ├─128-JavaI-O简介
│         │   ├─129-写文件内容小程序
│         │   ├─13-Java中的运算符
│         │   ├─130-读文件内容小程序
│         │   ├─131-网络通讯名词简介
│         │   ├─132-简单的网络通讯小程序(上)
│         │   ├─133-简单的网络通讯小程序(下)
│         │   ├─134-简单的抓取网页内容的程序
│         │   ├─135-JDK和JRE
│         │   ├─136-初识线程
│         │   ├─137-创建自己的线程
│         │   ├─138-再探线程
│         │   ├─139-多线程:混乱开始了
│         │   ├─14-Java中的位运算符
│         │   ├─140-同步控制之synchronized
│         │   ├─141-同步控制之waitnotify
│         │   ├─142-多线程经典模型:生产者消费者
│         │   ├─143-线程同步之join
│         │   ├─144-死锁
│         │   ├─145-ThreadLocal线程专属的变量
│         │   ├─146-定时任务
│         │   ├─147-volatile关键字的作用
│         │   ├─148-concurrent包基本原理
│         │   ├─149-concurrent包中的Atomic类族
│         │   ├─15-基本数据类型的更多语法点
│         │   ├─150-concurrent包中的锁
│         │   ├─151-concurrent包中的数据结构
│         │   ├─152-concurrent包中的线程池
│         │   ├─153-聊天室开张喽(上)
│         │   ├─154-聊天室开张喽(下)
│         │   ├─155-什么是学习一门语言
│         │   ├─156-Java平台简介
│         │   ├─157-Maven概念简介
│         │   ├─158-Maven的安装和配置
│         │   ├─159-创建一个简单的Maven项目(1)
│         │   ├─159-创建一个简单的Maven项目
│         │   ├─16-字符集编码和字符串
│         │   ├─160-一个从pptx文件中抽取文字的小工具
│         │   ├─161-Maven常用命令和插件
│         │   ├─162-Intellij更多功能介绍
│         │   ├─163-值得学习的类库简介
│         │   ├─164-如何在StackOverflow上提问才不会被骂
│         │   ├─165-浅谈程序设计
│         │   ├─166-游戏小程序功能定义
│         │   ├─167-游戏小程序设计和模块划分
│         │   ├─168-游戏小程序代码分析
│         │   ├─169-使用Swagger创建一个SpringBoot的Web服务
│         │   ├─17-操作符和数据类型总结
│         │   ├─170-结课测试&结束语
│         │   ├─18-程序执行流程之if-else语句(上)
│         │   ├─19-程序执行流程之if-else语句(下)
│         │   ├─20-程序循环之for语句
│         │   ├─21-代码块和变量的作用域
│         │   ├─22-程序循环之while语句
│         │   ├─23-程序执行流程之switch语句
│         │   ├─24-循环和判断的总结(上)
│         │   ├─25-循环和判断的总结(下)
│         │   ├─26-用数组保存成绩
│         │   ├─27-认识变量和数组(上)
│         │   ├─28-认识变量和数组(下)
│         │   ├─29-多维数组
│         │   ├─30-用数组灵活处理程序
│         │   ├─31-类(class)
│         │   ├─32-初探类和对象
│         │   ├─33-认识引用类型(上)
│         │   ├─34-认识引用类型(下)
│         │   ├─35-类、对象和引用的关系
│         │   ├─36-认识数组类型
│         │   ├─37-引用的缺省值null
│         │   ├─38-像自定义类型一样使用类
│         │   ├─39-Java中的包和访问修饰符(上)
│         │   ├─40-Java中的包和访问修饰符(下)
│         │   ├─41-打造一个小超市
│         │   ├─42-IntelliJ调试程序初探
│         │   ├─43-方法:让Merchandise对象有行为
│         │   ├─44-返回值:让Merchandise计算毛利润
│         │   ├─45-参数:让Merchandise计算多件商品的总价
│         │   ├─46-参数和返回值是怎么传递的
│         │   ├─47-分清参数、局部变量和实例的地盘
│         │   ├─48-隐藏的this自引用
│         │   ├─49-理解方法:一种特殊的代码块
│         │   ├─50-理解方法的调用:代码的一种特殊跳转
│         │   ├─51-给类和方法加Java注释
│         │   ├─52-成熟的类的对象要自己做事情
│         │   ├─53-方法的签名和重载
│         │   ├─54-重载的参数匹配规则
│         │   ├─55-构造方法:构造实例的方法
│         │   ├─56-构造方法的重载和互相调用
│         │   ├─57-静态变量
│         │   ├─58-静态方法
│         │   ├─59-静态方法的重载
│         │   ├─60-static代码块和static变量初始化
│         │   ├─61-方法和属性的可见性修饰符
│         │   ├─62-重新认识老朋友:Math和Scanner(上)
│         │   ├─63-重新认识老朋友:Math和Scanner(下)
│         │   ├─64-最熟悉的陌生人:String(上)
│         │   ├─65-最熟悉的陌生人:String(下)
│         │   ├─66-重新认识老朋友:main方法和System类
│         │   ├─67-String类的好兄弟
│         │   ├─68-继承:方便让商品增加新的类别
│         │   ├─69-子类对象里藏着一个父类对象
│         │   ├─70-覆盖:子类想要一点不一样
│         │   ├─71-super:和父类对象沟通的桥梁
│         │   ├─72-super:调用父类的构造方法
│         │   ├─73-父类和子类的引用赋值关系
│         │   ├─74-多态:到底调用的哪个方法?(上)
│         │   ├─75-多态:到底调用的哪个方法?(下)
│         │   ├─76-多态里更多的语法点(上)
│         │   ├─77-多态里更多的语法点(下)
│         │   ├─78-instanceof操作符
│         │   ├─79-继承专属的访问控制:protected
│         │   ├─80-final修饰符(上)
│         │   ├─81-final修饰符(下)
│         │   ├─82-继承里的静态方法
│         │   ├─83-插曲:for循环的另一种写法
│         │   ├─84-万类之祖:Object类
│         │   ├─85-hashCode和equals方法(上)
│         │   ├─86-hashCode和equals方法(下)
│         │   ├─87-toString方法
│         │   ├─88-初探Class类
│         │   ├─89-初探反射(上)
│         │   ├─90-初探反射(下)
│         │   ├─91-面向对象三要素:封装、继承和多态
│         │   ├─92-枚举:定义商品的门类
│         │   ├─93-接口:让商品类型更丰富(上)
│         │   ├─94-接口:让商品类型更丰富(下)
│         │   ├─95-抽象类:接口和类的混合体
│         │   ├─96-有方法代码的接口
│         │   ├─97-接口内代码的更多内容
│         │   ├─98-静态内部类
│         │   └─99-成员内部类
│         ├─16-玩转webpack
│         │   ├─03-为什么需要构建工具
│         │   ├─04-前端构建演变之路
│         │   ├─05-为什么选择webpack
│         │   ├─06-初识webpack
│         │   ├─07-环境搭建:安装webpack
│         │   ├─08-webpack初体验:一个最简单的例子
│         │   ├─09-通过npmscript运行webpack
│         │   ├─10-webpack核心概念之entry
│         │   ├─11-webpack核心概念之output
│         │   ├─12-webpack核心概念之loaders
│         │   ├─13-webpack核心概念之plugins
│         │   ├─14-webpack核心概念之mode
│         │   ├─15-解析ECMASCript6和ReactJSX
│         │   ├─16-解析CSS、Less和Sass
│         │   ├─17-解析图片和字体
│         │   ├─18-webpack中的文件监听
│         │   ├─19-webpack中的热更新及原理分析
│         │   ├─20-文件指纹策略:chunkhash、contenthash和hash
│         │   ├─21-HTML、CSS和JavaScript代码压缩
│         │   ├─22-自动清理构建目录产物
│         │   ├─23-PostCSS插件autoprefixer自动补齐CSS3前缀
│         │   ├─24-移动端CSSpx自动转换成rem
│         │   ├─25-静态资源内联
│         │   ├─26-多页面应用打包通用方案
│         │   ├─27-使用sourcemap
│         │   ├─28-提取页面公共资源
│         │   ├─29-TreeShaking的使用和原理分析
│         │   ├─30-ScopeHoisting使用和原理分析
│         │   ├─31-代码分割和动态import
│         │   ├─32-在webpack中使用ESLint
│         │   ├─33-webpack打包组件和基础库
│         │   ├─34-webpack实现SSR打包(上)
│         │   ├─35-webpack实现SSR打包(下)
│         │   ├─36-优化构建时命令行的显示日志
│         │   ├─37-构建异常和中断处理
│         │   ├─38-构建配置包设计
│         │   ├─39-功能模块设计和目录结构
│         │   ├─40-使用ESLint规范构建脚本
│         │   ├─41-冒烟测试介绍和实际运用
│         │   ├─42-单元测试和测试覆盖率
│         │   ├─43-持续集成和TravisCI
│         │   ├─44-发布构建包到npm社区
│         │   ├─45-GitCommit规范和changelog生成
│         │   ├─46-语义化版本(SemanticVersioning)规范格式
│         │   ├─47-初级分析:使用webpack内置的stats
│         │   ├─48-速度分析:使用speed-measure-webpack-plugin
│         │   ├─49-体积分析:使用webpack-bundle-analyzer
│         │   ├─50-使用高版本的webpack和Node
│         │   ├─51-多进程-多实例构建
│         │   ├─52-多进程并行压缩代码
│         │   ├─53-进一步分包:预编译资源模块
│         │   ├─54-充分利用缓存提升二次构建速度
│         │   ├─55-缩小构建目标
│         │   ├─56-使用TreeShaking擦除无用的JavaScript和CSS
│         │   ├─57-使用webpack进行图片压缩
│         │   ├─58-使用动态Polyfill服务
│         │   ├─59-webpack启动过程分析
│         │   ├─60-webpack-cli源码阅读
│         │   ├─61-Tapable插件架构与Hooks设计
│         │   ├─62-Tapable是如何和webpack进行关联起来的?
│         │   ├─63-webpack流程篇:准备阶段
│         │   ├─64-webpack流程篇:模块构建和chunk生成阶段
│         │   ├─65-webpack流程篇:文件生成
│         │   ├─66-动手编写一个简易的webpack(上)
│         │   ├─67-动手编写一个简易的webpack(下)
│         │   ├─68-loader的链式调用与执行顺序
│         │   ├─69-使用loader-runner高效进行loader的调试
│         │   ├─70-更复杂的loader的开发场
│         │   ├─71-实战开发一个自动合成雪碧图的loader
│         │   ├─72-插件基本结构介绍
│         │   ├─73-更复杂的插件开发场景
│         │   ├─74-实战开发一个压缩构建资源为zip包的插件
│         │   ├─75-商城技术栈选型和整体架构
│         │   ├─76-商城界面UI设计与模块拆分
│         │   ├─77-React全家桶环境搭建
│         │   ├─78-数据库实体和表结构设计
│         │   ├─79-登录注册模块开发
│         │   ├─80-商品模块开发
│         │   ├─81-订单模块开发
│         │   ├─82-谈谈Web商城的性能优化策略
│         │   ├─83-功能开发总结
│         │   ├─84-玩转webpack&结课测试
│         │   ├─加餐:bundle和bundless的差异
│         │   ├─加餐:Vite的构建原理
│         │   └─加餐:webpack5新特性解析
│         ├─17-Linux实战技能100讲
│         │   ├─03-什么是Linux
│         │   ├─04-Linux的内核版本及常见发行版
│         │   ├─05-安装VirtualBox虚拟机
│         │   ├─06-在虚拟机中安装Linux系统
│         │   ├─07-第一次启动Linux
│         │   ├─08-万能的帮助命令:man、help、info
│         │   ├─09-初识pwd和ls命令
│         │   ├─10-详解ls命令
│         │   ├─100-awk函数
│         │   ├─101-防火墙概述
│         │   ├─102-iptables规则的基本使用演示
│         │   ├─103-iptables过滤规则的使用
│         │   ├─104-iptablesnat表的使用
│         │   ├─105-firewalld
│         │   ├─106-SSH介绍之Telnet明文漏洞
│         │   ├─107-SSH服务演示
│         │   ├─108-FTP服务器vsftpd介绍与软件包安装
│         │   ├─109-vsftpd配置文件介绍
│         │   ├─11-详解cd命令
│         │   ├─110-vsftp虚拟用户
│         │   ├─111-samba服务演示
│         │   ├─112-NFS服务
│         │   ├─113-Nginx基本配置文件
│         │   ├─114-使用Nginx配置域名虚拟主机
│         │   ├─115-LNMP环境搭建
│         │   ├─116-DNS服务的原理
│         │   ├─117-NAS演示
│         │   ├─118-结课测试&结束语
│         │   ├─12-创建和删除目录
│         │   ├─13-复制和移动目录
│         │   ├─14-如何在Linux下进行文本查看
│         │   ├─15-打包压缩和解压缩
│         │   ├─16-Vim的四种模式
│         │   ├─17-Vim的正常模式
│         │   ├─18-Vim的命令模式
│         │   ├─19-Vim的可视模式
│         │   ├─20-用户和用户组管理及密码管理
│         │   ├─21-su和sudo命令的区别和使用方法
│         │   ├─22-用户和用户组的配置文件介绍
│         │   ├─23-文件与目录权限的表示方法
│         │   ├─24-文件权限的修改方法和数字表示方法
│         │   ├─25-权限管理以及文件的特殊权限
│         │   ├─26-网络管理
│         │   ├─27-查看网络配置
│         │   ├─28-修改网络配置
│         │   ├─29-网络故障排除命令
│         │   ├─30-网络管理和配置文件
│         │   ├─31-软件包管理器的使用(1)
│         │   ├─31-软件包管理器的使用
│         │   ├─32-使用rpm命令安装软件包
│         │   ├─33-使用yum包管理器安装软件包
│         │   ├─34-通过源代码编译安装软件包(1)
│         │   ├─34-通过源代码编译安装软件包
│         │   ├─35-如何进行内核升级
│         │   ├─36-grub配置文件介绍
│         │   ├─37-使用ps和top命令查看进程
│         │   ├─38-进程的控制与进程之间的关系
│         │   ├─39-进程的通信方式与信号:kill命令
│         │   ├─40-守护进程
│         │   ├─41-screen命令和系统日志
│         │   ├─42-服务管理工具systemctl
│         │   ├─43-SELinux简介
│         │   ├─44-内存与磁盘管理
│         │   ├─45-内存查看命令
│         │   ├─46-磁盘分区和文件大小查看
│         │   ├─47-文件系统管理
│         │   ├─48-i节点和数据块操作
│         │   ├─49-分区和挂载
│         │   ├─50-分区和挂载磁盘配额
│         │   ├─51-交换分区swap的查看与创建
│         │   ├─52-软件RAID的使用
│         │   ├─53-逻辑卷LVM的用途与创建
│         │   ├─54-系统综合状态查看命令sar以及第三方命令
│         │   ├─55-什么是Shell
│         │   ├─56-Linux的启动过程
│         │   ├─57-Shell脚本的格式
│         │   ├─58-脚本不同执行方式的影响
│         │   ├─59-管道
│         │   ├─60-重定向
│         │   ├─61-变量赋值
│         │   ├─62-变量引用及作用范围
│         │   ├─63-环境变量、预定义变量与位置变量
│         │   ├─64-环境变量配置文件
│         │   ├─65-数组
│         │   ├─66-转义和引用
│         │   ├─67-运算符
│         │   ├─68-特殊字符大全
│         │   ├─69-test比较
│         │   ├─70-if判断的使用
│         │   ├─71-if-else判断的使用
│         │   ├─72-嵌套if的使用
│         │   ├─73-case分支
│         │   ├─74-for的基本使用
│         │   ├─75-C语言风格的for
│         │   ├─76-while循环和until循环
│         │   ├─77-循环的嵌套和break、continue语句
│         │   ├─78-使用循环处理位置参数
│         │   ├─79-自定义函数
│         │   ├─80-系统函数库介绍
│         │   ├─81-脚本资源控制
│         │   ├─82-信号
│         │   ├─83-一次性计划任务
│         │   ├─84-周期性计划任务
│         │   ├─85-为脚本加锁
│         │   ├─86-元字符介绍
│         │   ├─87-find演示
│         │   ├─88-sed和awk介绍
│         │   ├─89-sed替换命令讲解
│         │   ├─90-sed的替换指令加强版
│         │   ├─91-sed的其他常用命令
│         │   ├─92-sed多行模式空间
│         │   ├─93-什么是sed的保持空间
│         │   ├─94-认识awk
│         │   ├─95-awk的字段
│         │   ├─96-awk表达式
│         │   ├─97-awk判断和循环
│         │   ├─98-awk数组
│         │   └─99-awk数组功能的使用
│         ├─18-Elasticsearch核心技术与实战
│         │   ├─02-内容综述及学习建议
│         │   ├─03-Elasticsearch简介及其发展历史
│         │   ├─04-ElasticStack家族成员及其应用场景
│         │   ├─05-Elasticsearch的安装与简单配置
│         │   ├─06-Kibana的安装与界面快速浏览
│         │   ├─07-在Docker容器中运行ElasticsearchKibana和Cerebro
│         │   ├─08-Logstash安装与导入数据
│         │   ├─09-基本概念:索引、文档和RESTAPI
│         │   ├─10-基本概念:节点、集群、分片及副本
│         │   ├─100-结课测试&结束语
│         │   ├─11-文档的基本CRUD与批量操作
│         │   ├─12-倒排索引介绍
│         │   ├─13-通过Analyzer进行分词
│         │   ├─14-SearchAPI概览
│         │   ├─15-URISearch详解
│         │   ├─16-RequestBody与QueryDSL简介
│         │   ├─17-QueryString&SimpleQueryString查询
│         │   ├─18-DynamicMapping和常见字段类型
│         │   ├─19-显式Mapping设置与常见参数介绍
│         │   ├─20-多字段特性及Mapping中配置自定义Analyzer
│         │   ├─21-IndexTemplate和DynamicTemplate
│         │   ├─22-Elasticsearch聚合分析简介
│         │   ├─23-第一部分总结
│         │   ├─24-基于词项和基于全文的搜索
│         │   ├─25-结构化搜索
│         │   ├─26-搜索的相关性算分
│         │   ├─27-Query&Filtering与多字符串多字段查询
│         │   ├─28-单字符串多字段查询:DisMaxQuery
│         │   ├─29-单字符串多字段查询:MultiMatch
│         │   ├─30-多语言及中文分词与检索
│         │   ├─31-SpaceJam,一次全文搜索的实例
│         │   ├─32-使用SearchTemplate和IndexAlias查询
│         │   ├─33-综合排序:FunctionScoreQuery优化算分
│         │   ├─34-Term&PhraseSuggester
│         │   ├─35-自动补全与基于上下文的提示
│         │   ├─36-配置跨集群搜索
│         │   ├─37-集群分布式模型及选主与脑裂问题
│         │   ├─38-分片与集群的故障转移
│         │   ├─39-文档分布式存储
│         │   ├─40-分片及其生命周期
│         │   ├─41-剖析分布式查询及相关性算分
│         │   ├─42-排序及DocValues&Fielddata
│         │   ├─43-分页与遍历:From,Size,SearchAfter&ScrollAPI
│         │   ├─44-处理并发读写操作
│         │   ├─45-Bucket&Metric聚合分析及嵌套聚合
│         │   ├─46-Pipeline聚合分析
│         │   ├─47-作用范围与排序
│         │   ├─48-聚合分析的原理及精准度问题
│         │   ├─49-对象及Nested对象
│         │   ├─50-文档的父子关系
│         │   ├─51-UpdateByQuery&ReindexAPI
│         │   ├─52-IngestPipeline&PainlessScript
│         │   ├─53-Elasticsearch数据建模实例
│         │   ├─54-Elasticsearch数据建模最佳实践
│         │   ├─55-第二部分总结回顾
│         │   ├─56-集群身份认证与用户鉴权
│         │   ├─57-集群内部安全通信
│         │   ├─58-集群与外部间的安全通信
│         │   ├─59-常见的集群部署方式
│         │   ├─60-Hot&Warm架构与ShardFiltering
│         │   ├─61-分片设计及管理
│         │   ├─62-如何对集群进行容量规划
│         │   ├─63-在私有云上管理Elasticsearch集群的一些方法
│         │   ├─64-在公有云上管理与部署Elasticsearch集群
│         │   ├─65-生产环境常用配置与上线清单
│         │   ├─66-监控Elasticsearch集群
│         │   ├─67-诊断集群的潜在问题
│         │   ├─68-解决集群Yellow与Red的问题
│         │   ├─69-提升集群写性能
│         │   ├─70-提升集群读性能
│         │   ├─71-集群压力测试
│         │   ├─72-段合并优化及注意事项
│         │   ├─73-缓存及使用Breaker限制内存使用
│         │   ├─74-一些运维的相关建议
│         │   ├─75-使用Shrink与RolloverAPI有效管理时间序列索引
│         │   ├─76-索引全生命周期管理及工具介绍
│         │   ├─77-Logstash入门及架构介绍
│         │   ├─78-利用JDBC插件导入数据到Elasticsearch
│         │   ├─79-Beats介绍
│         │   ├─80-使用IndexPattern配置数据
│         │   ├─81-使用KibanaDiscover探索数据
│         │   ├─82-基本可视化组件介绍
│         │   ├─83-构建Dashboard
│         │   ├─84-用Monitoring和Alerting监控Elasticsearch集群
│         │   ├─85-用APM进行程序性能监控
│         │   ├─86-用机器学习实现时序数据的异常检测(上)
│         │   ├─87-用机器学习实现时序数据的异常检测(下)
│         │   ├─88-用ELK进行日志管理
│         │   ├─89-用Canvas做数据演示
│         │   ├─90-项目需求分析及架构设计
│         │   ├─91-将电影数据导入Elasticsearch
│         │   ├─92-搭建你的电影搜索服务
│         │   ├─93-需求分析及架构设计
│         │   ├─94-数据Extract&Enrichment
│         │   ├─95-构建InsightsDashboard
│         │   ├─96-Elastic认证介绍
│         │   ├─97-考点梳理
│         │   ├─98-集群数据备份
│         │   └─99-基于Java和Elasticseach构建应用
│         ├─19-SpringBoot与Kubernetes云原生微服务实践
│         │   ├─02-背景说明
│         │   ├─03-课程目标和主要内容
│         │   ├─04-课程案例需求
│         │   ├─05-课程补充说明
│         │   ├─06-为何采用微服务架构?
│         │   ├─07-架构设计和技术栈选型
│         │   ├─08-数据和接口模型设计:账户服务
│         │   ├─09-数据和接口模型设计:业务服务
│         │   ├─10-Dubbo、SpringCloud和Kubernetes该如何选型(上)
│         │   ├─11-Dubbo、SpringCloud和Kubernetes该如何选型(中)
│         │   ├─12-Dubbo、SpringCloud和Kubernetes该如何选型(下)
│         │   ├─13-技术中台到底讲什么?
│         │   ├─14-Staffjoy项目结构组织
│         │   ├─15-谷歌为何采用单体仓库(Mono-Repo)?
│         │   ├─16-微服务接口参数校验为何重要?
│         │   ├─17-如何实现统一异常处理?
│         │   ├─18-DTO和DMO为什么要互转?
│         │   ├─19-如何实现基于Feign的强类型接口?
│         │   ├─20-为什么框架层就要考虑分环境配置?
│         │   ├─21-异步处理为何要复制线程上下文信息?
│         │   ├─22-为你的接口添加Swagger文档
│         │   ├─23-主流微服务框架概览
│         │   ├─24-网关和BFF是如何演化出来的(上)
│         │   ├─25-网关和BFF是如何演化出来的(下)
│         │   ├─26-网关和反向代理是什么关系?
│         │   ├─27-网关需要分集群部署吗?
│         │   ├─28-如何设计一个最简网关?
│         │   ├─29-Faraday网关代码解析(上)
│         │   ├─30-Faraday网关代码解析(下)
│         │   ├─31-生产级网关需要考虑哪些环节?
│         │   ├─32-主流开源网关概览
│         │   ├─33-安全认证架构演进:单块阶段(上)
│         │   ├─34-安全认证架构演进:单块阶段(下)
│         │   ├─35-安全认证架构演进:微服务阶段
│         │   ├─36-基于JWT令牌的安全认证架构
│         │   ├─37-JWT的原理是什么?
│         │   ├─38-JWT有哪两种主要流程?
│         │   ├─39-Staffjoy安全认证架构和SSO
│         │   ├─40-用户认证代码剖析
│         │   ├─41-服务调用鉴权代码剖析
│         │   ├─42-如何设计用户角色鉴权?
│         │   ├─43-SpringBoot微服务测试该如何分类?
│         │   ├─44-什么是契约驱动测试?
│         │   ├─45-什么是测试金字塔?
│         │   ├─46-单元测试案例分析
│         │   ├─47-集成测试案例分析
│         │   ├─48-组件测试案例分析
│         │   ├─49-MockvsSpy
│         │   ├─50-何谓生产就绪(ProductionReady)?
│         │   ├─51-SpringBoot如何实现分环境配置
│         │   ├─52-ApollovsSpringCloudConfigvsK8sConfigMap
│         │   ├─53-CATvsZipkinvsSkywalking(上)
│         │   ├─54-CATvsZipkinvsSkywalking(下)
│         │   ├─55-结构化日志和业务审计日志
│         │   ├─56-集中异常监控和Sentry
│         │   ├─57-EFK&Prometheus&Skywalking+Kubernetes集成架构
│         │   ├─58-本地开发部署架构和软件需求
│         │   ├─59-手工服务部署和测试(上)
│         │   ├─60-手工服务部署和测试(中)
│         │   ├─61-手工服务部署和测试(下)
│         │   ├─62-SkyWalking调用链监控实验
│         │   ├─63-Docker和DockerCompose简介
│         │   ├─64-容器镜像构建Dockerfile解析
│         │   ├─65-DockerCompose服务部署文件剖析
│         │   ├─66-将Staffjoy部署到本地DockerCompose环境(上)
│         │   ├─67-将Staffjoy部署到本地DockerCompose环境(下)
│         │   ├─68-到底什么是云原生架构?
│         │   ├─69-Kubernetes背景和架构
│         │   ├─70-Kubernetes有哪些基本概念(上)
│         │   ├─71-Kubernetes有哪些基本概念(下)
│         │   ├─72-理解Kubernetes节点网络和Pod网络
│         │   ├─73-深入理解Service和ServiceDiscovery
│         │   ├─74-NodePortvsLoadBalancervsIngress
│         │   ├─75-本地测试Kubernetes部署文件剖析
│         │   ├─76-本地测试Kubernetes环境搭建
│         │   ├─77-将Staffjoy部署到本地Kubernetes环境(上)
│         │   ├─78-将Staffjoy部署到本地Kubernetes环境(下)
│         │   ├─79-生产环境Kubernetes部署文件剖析
│         │   ├─80-阿里云Kubernetes环境创建
│         │   ├─81-将Staffjoy部署到阿里云Kubernetes环境
│         │   ├─82-Kubernetes应用动态配置实验
│         │   ├─83-Kubernetes应用金丝雀发布实验
│         │   ├─84-阿里云资源释放
│         │   ├─85-课程复盘
│         │   ├─86-项目扩展和应用
│         │   ├─87-Account服务
│         │   ├─88-Company服务
│         │   ├─89-Mail、SMS和Bot服务
│         │   ├─90-Faraday服务
│         │   ├─91-WhoAmI服务
│         │   ├─92-WWW服务
│         │   ├─93-前端应用
│         │   └─94-结课测试&结束语
│         ├─2-微服务架构实战160讲
│         │   ├─01-第一模块课程介绍
│         │   ├─02-微服务安全要解决什么问题
│         │   ├─03-白话OAuth2
│         │   ├─04-OAuth2的正式定义
│         │   ├─05-OAuth2有哪些典型模式
│         │   ├─06-OAuth2模式该如何选型
│         │   ├─07-SpringSecurityOAuth2架构简介
│         │   ├─08-【实验】授权码模式授权服务器
│         │   ├─09-【实验】简化模式授权服务器
│         │   ├─10-【实验】密码模式授权服务器
│         │   ├─100-Hystrix生产最佳实践
│         │   ├─101-参考资源和后续课程预览
│         │   ├─102-第六模块课程介绍
│         │   ├─103-服务发现需求和模式(上)
│         │   ├─104-服务发现需求和模式(下)
│         │   ├─105-NetflixEureka和Ribbon背景介绍
│         │   ├─106-Eureka和Ribbon架构设计原理
│         │   ├─107-【实验】SpringCloudEureka和Ribbon基础实战
│         │   ├─108-【实验】SpringCloudEureka和Ribbon高级实验
│         │   ├─109-SpringCloudEureka和Ribbon主要配置项
│         │   ├─11-【实验】客户端模式授权服务器
│         │   ├─110-Eureka进阶:自保护模式
│         │   ├─111-Eureka进阶:健康检查和蓝绿部署
│         │   ├─112-【实验】SpringCloudZuul、Eureka和Ribbon集成实验(上)
│         │   ├─113-【实验】SpringCloudZuul、Eureka和Ribbon集成实验(下)
│         │   ├─114-常用服务发现组件比较
│         │   ├─115-ServiceMesh和Istio简介
│         │   ├─116-基于Eureka、Zuul和容器云的持续交付架构
│         │   ├─117-参考资源和后续课程预览
│         │   ├─118-第七模块课程介绍
│         │   ├─119-监控模式分类
│         │   ├─12-实验一扩展环节
│         │   ├─120-BusDevOps和测量驱动开发MDD
│         │   ├─121-Prometheus简介
│         │   ├─122-Prometheus架构设计
│         │   ├─123-Prometheus基本概念
│         │   ├─124-【实验】Prometheus起步查询实验(上)
│         │   ├─125-【实验】Prometheus起步查询实验(中)
│         │   ├─126-【实验】Prometheus起步查询实验(下)
│         │   ├─127-【实验】Prometheus+Grafana展示实验(上)
│         │   ├─128-【实验】Prometheus+Grafana展示实验(下)
│         │   ├─129-【实验】Prometheus+Alertmanager告警实验(上)
│         │   ├─13-【实验】Web应用接入授权服务器
│         │   ├─130-【实验】Prometheus+Alertmanager告警实验(下)
│         │   ├─131-【实验】Java应用埋点和监控实验
│         │   ├─132-【实验】NodeExporter系统监控实验
│         │   ├─133-【实验】SpringBootActuator监控实验
│         │   ├─134-Prometheus监控最佳实践
│         │   ├─135-主流开源时序数据库比较
│         │   ├─136-开源分布式监控平台ZMon简介
│         │   ├─137-微服务监控体系总结
│         │   ├─138-参考资源和后续课程预览
│         │   ├─139-课程概述和背景
│         │   ├─14-实验二扩展环节
│         │   ├─140-架构和设计
│         │   ├─141-开发环境搭建
│         │   ├─142-基础代码(codereview)
│         │   ├─143-数据访问模块(codereview)
│         │   ├─144-OAuth2服务模块(codereview)
│         │   ├─145-Web服务模块(codereview)
│         │   ├─146-启动流程(codereview)
│         │   ├─147-起步准备实验(lab02)
│         │   ├─148-OAuth2授权码模式实验(lab03)
│         │   ├─149-OAuth2简化模式实验(lab04)
│         │   ├─15-什么是JWT令牌
│         │   ├─150-OAuth2用户名密码模式实验(lab05)
│         │   ├─151-OAuth2客户端模式实验(lab06)
│         │   ├─152-OAuth2令牌校验实验(lab07)
│         │   ├─153-OAuth2令牌刷新实验(lab08)
│         │   ├─154-项目复盘和扩展环节
│         │   ├─155-参考资源和后续课程预览
│         │   ├─156-课程概述和背景
│         │   ├─157-需求和架构设计
│         │   ├─158-开发环境搭建(lab01)(上)
│         │   ├─159-开发环境搭建(lab01)(下)
│         │   ├─16-【实验】授权服务器支持JWT令牌
│         │   ├─160-项目业务代码(CodeReview)
│         │   ├─161-Apollo配置中心集成(lab02)
│         │   ├─162-Zuul-Eureka-Ribbon-Hystrix集成(CodeReview)
│         │   ├─163-GraviteeOAuth2集成(lab03)
│         │   ├─164-Zuul网关集中令牌校验(CodeReview)
│         │   ├─165-CAT调用链集成(lab04)(上)
│         │   ├─166-CAT调用链集成(lab04)(下)
│         │   ├─167-Demo展示(lab05)(上)
│         │   ├─168-Demo展示(lab05)(下)
│         │   ├─169-Prometheus监控集成(CodeReview)
│         │   ├─17-实验三扩展环节
│         │   ├─170-生产扩展环节
│         │   ├─171-课程复盘总结&结课测试
│         │   ├─18-【实验】Android无线应用接入授权服务器
│         │   ├─19-【实验】AngularJS单页应用实验和课后扩展
│         │   ├─20-【实验】GitHub社交登录实验和课后扩展
│         │   ├─21-【实验】OAuth2安全风险CSRF实验
│         │   ├─22-OpenIdConnect简介
│         │   ├─23-下一代微服务安全架构
│         │   ├─24-参考资源和后续课程预览
│         │   ├─25-Apollo作者的产品介绍
│         │   ├─26-第二模块课程介绍
│         │   ├─27-课程概述
│         │   ├─28-业务需求
│         │   ├─29-配置定义和场景
│         │   ├─30-开关驱动开发原理
│         │   ├─31-携程Apollo配置中心介绍
│         │   ├─32-Apollo核心概念
│         │   ├─33-Apollo快速起步(Lab01)
│         │   ├─34-Apollo快速起步扩展实验
│         │   ├─35-Apollo架构设计之服务器端
│         │   ├─36-Apollo架构设计之客户端
│         │   ├─37-Apollo架构设计之高可用和监控
│         │   ├─38-Apollo分布式部署指南
│         │   ├─39-ApolloJava客户端和多语言接入
│         │   ├─40-ApolloClientAPI实操(Lab02)
│         │   ├─41-ApolloClient和Spring集成~XML方式(Lab03)
│         │   ├─42-ApolloClient和Spring集成~代码方式(Lab04)
│         │   ├─43-ApolloClient和SpringBoot集成(Lab05)
│         │   ├─44-Apollo开放平台接入实操(Lab06)
│         │   ├─45-SpringCloudConfig简介
│         │   ├─46-ApollovsSpringCloudConfig
│         │   ├─47-ApolloFAQ和开发常见问题
│         │   ├─48-参考资源和后续课程预览
│         │   ├─49-第三模块课程介绍
│         │   ├─50-Zuul网关和基本应用场景
│         │   ├─51-Zuul网关高级应用场景
│         │   ├─52-Zuul网关架构剖析
│         │   ├─53-Zuul网关代码剖析(CodeReview)
│         │   ├─54-Zuul网关过滤器管理工具(CodeReview)
│         │   ├─55-前置过滤器实验(Lab01)
│         │   ├─56-路由过滤器实验(Lab02)
│         │   ├─57-后置过滤器实验(Lab03)
│         │   ├─58-Zuul网关对接Apollo(Lab04)
│         │   ├─59-Zuul网关生产部署实践
│         │   ├─60-Zuul网关路由管理实践
│         │   ├─61-基于网关的两层路由体系
│         │   ├─62-SpringCloudZuul(Lab05)
│         │   ├─63-Zuul2
│         │   ├─64-Zuul网关生产最佳实践
│         │   ├─65-参考资源和后续课程预览
│         │   ├─66-第四模块课程介绍
│         │   ├─67-调用链监控业务需求
│         │   ├─68-调用链监控原理
│         │   ├─69-调用链监控产品和比较
│         │   ├─70-点评CAT背景介绍
│         │   ├─71-CAT典型报表
│         │   ├─72-CAT告警简介
│         │   ├─73-CAT架构设计
│         │   ├─74-【实验】CAT本地部署
│         │   ├─75-CAT埋点案例和代码剖析(CodeReview)
│         │   ├─76-【实验】CAT埋点案例
│         │   ├─77-Zuul网关集成CAT代码剖析(CodeReview)
│         │   ├─78-【实验】Zuul网关集成CAT
│         │   ├─79-CAT生产埋点实践
│         │   ├─80-CAT生产部署实践
│         │   ├─81-CAT生产治理实践
│         │   ├─82-SpringCloudSleuth简介
│         │   ├─83-【实验】SpringCloudSleuth
│         │   ├─84-参考资源和后续课程预览
│         │   ├─85-第五模块课程介绍
│         │   ├─86-容错限流需求
│         │   ├─87-容错限流原理
│         │   ├─88-NetflixHystrix背景介绍
│         │   ├─89-Hystrix设计原理
│         │   ├─90-Hystrix主要概念
│         │   ├─91-信号量vs线程池隔离
│         │   ├─92-Hystrix主要配置项
│         │   ├─93-【实验】Hystrix基础实验
│         │   ├─94-Hystrix模拟案例分析(CodeReview)
│         │   ├─95-【实验】Hystrix+Dashboard实验(上)
│         │   ├─96-【实验】Hystrix+Dashboard实验(下)
│         │   ├─97-网关集成Hystrix(CodeReview)
│         │   ├─98-【实验】SpringCloudHystrix实验
│         │   └─99-NetflixTurbine简介
│         ├─20-TypeScript开发实战
│         │   ├─01-重塑“类型思维”
│         │   ├─02-类型基础(1):强类型与弱类型
│         │   ├─03-类型基础(2):动态类型与静态类型
│         │   ├─04-编写你的第一个TypeScript程序
│         │   ├─05-基本类型
│         │   ├─06-枚举类型
│         │   ├─07-接口(1):对象类型接口
│         │   ├─08-接口(2):函数类型接口
│         │   ├─09-函数相关知识点梳理
│         │   ├─10-类(1):继承和成员修饰符
│         │   ├─11-类(2):抽象类与多态
│         │   ├─12-类与接口的关系
│         │   ├─13-泛型(1):泛型函数与泛型接口
│         │   ├─14-泛型(2):泛型类与泛型约束
│         │   ├─15-类型检查机制(1):类型推断
│         │   ├─16-类型检查机制(2):类型兼容性
│         │   ├─17-类型检查机制(3):类型保护
│         │   ├─18-高级类型(1):交叉类型与联合类型
│         │   ├─19-高级类型(2):索引类型
│         │   ├─20-高级类型(3):映射类型
│         │   ├─21-高级类型(4):条件类型
│         │   ├─22-ES6与CommonJS的模块系统
│         │   ├─23-使用命名空间
│         │   ├─24-理解声明合并
│         │   ├─25-如何编写声明文件
│         │   ├─26-配置tsconfig
│         │   ├─27-配置tsconfig
│         │   ├─28-配置tsconfig
│         │   ├─29-编译工具:从ts-loader到Babel
│         │   ├─30-代码检查工具:从TSLint到ESLint
│         │   ├─31-使用Jest进行单元测试
│         │   ├─32-创建项目
│         │   ├─33-组件与类型(1):函数组件与类组件
│         │   ├─34-组件与类型(2):高阶组件与Hooks
│         │   ├─35-事件处理与数据请求
│         │   ├─36-列表渲染与路由
│         │   ├─37-Redux与类型
│         │   ├─38-搭建服务端开发环境
│         │   ├─39-列表的CRUD
│         │   ├─40-导出Excel
│         │   ├─41-搭建Vue开发环境
│         │   ├─42-组件封装
│         │   ├─43-组件发布
│         │   ├─44-共存策略
│         │   ├─45-宽松策略
│         │   ├─46-严格策略
│         │   └─47-结课测试&结束语
│         ├─21-Swift核心技术与实战
│         │   ├─03-Swift版本历史和各版本特性快览
│         │   ├─04-Swift和Objective-C的主要区别
│         │   ├─05-swiftc:强大的命令行工具
│         │   ├─06-REPL:Swift交互式解释器
│         │   ├─07-Playground:Swift学习的乐园
│         │   ├─08-如何在Swift中定义常量和变量
│         │   ├─09-Swift中的数值类型
│         │   ├─10-如何使用Tuple组合多个值
│         │   ├─100-没有最方便,只有更方便:对Swift标准库的一些扩展
│         │   ├─101-如何在Swift中进行自动布局
│         │   ├─102-如何进行图片加载和缓存
│         │   ├─103-以一种优雅安全的方式使用资源文件
│         │   ├─104-如何在项目中将内容分享到社交平台
│         │   ├─105-Swift和Objective-C的运行时简介
│         │   ├─106-桥接问题
│         │   ├─107-如何在Swift和Objective-C中相互调用
│         │   ├─108-Swift和Objective-C混合编程踩坑指南
│         │   ├─109-如何搭建一个iOSSwift工程
│         │   ├─11-如何在Swift中使用Optional
│         │   ├─110-商城整体架构、UI设计和模块拆分
│         │   ├─111-编写mockAPI
│         │   ├─112-登录注册页模块开发
│         │   ├─113-商城列表页模块开发
│         │   ├─114-商城详情页模块开发
│         │   ├─115-商城个人中心页模块开发
│         │   ├─116-商城订单页模块开发
│         │   ├─117-结束语
│         │   ├─118|加餐1:可选链
│         │   ├─119|加餐2:SwiftKVC
│         │   ├─12-Optional实现原理探究
│         │   ├─120|加餐3:Swift面试中的要点注意事项&结课测试
│         │   ├─13-如何在Swift中创建和初始化字符串
│         │   ├─14-Swift字符串的常见操作
│         │   ├─15-如何使用索引访问和修改字符串
│         │   ├─16-如何在Swift中获取子串和进行字符串比较
│         │   ├─17-赋值和算数运算符
│         │   ├─18-在Swift里如何处理算术结果溢出
│         │   ├─19-为了Optional:合并空值运算符
│         │   ├─20-Swift的新宠:区间运算符
│         │   ├─21-强大的位运算符
│         │   ├─22-位运算符应用举例(1)
│         │   ├─23-位运算符应用举例(2)
│         │   ├─24-运算符优先级和结合性
│         │   ├─25-如何为类和结构体自定义运算符实现
│         │   ├─26-如在Swift中定义自己的运算符
│         │   ├─27-如何在Swift里进行循环控制
│         │   ├─28-更加强大的switch
│         │   ├─29-如何在Swift里进行控制转移
│         │   ├─30-如何使用guard来改善你的条件判断
│         │   ├─31-Swift中的模式和模式匹配
│         │   ├─32-在Swift中创建数组的N种方式
│         │   ├─33-访问和操作数组:遍历和索引
│         │   ├─34-访问和操作数组:查找操作
│         │   ├─35-访问和操作数组:添加和删除
│         │   ├─36-访问和操作数组:ArraySlice
│         │   ├─37-访问和操作数组:重排操作
│         │   ├─38丨访问和操作数组:拼接操作
│         │   ├─39丨深入理解数组:底层实现探究
│         │   ├─40丨如何用数组来实现栈和队列
│         │   ├─41丨Set:定义和创建
│         │   ├─42丨Set:访问和修改
│         │   ├─43丨Set:执行Set计算和判断
│         │   ├─44-实现自己的集合算法
│         │   ├─45-深入理解集合:底层实现探究
│         │   ├─46-Dictionary:Swift中的字典类型
│         │   ├─47-字典的常见操作
│         │   ├─48-深入理解字典:底层实现探究
│         │   ├─49-Swift中如何定义和使用函数
│         │   ├─50-函数的形式参数和返回值
│         │   ├─51-函数类型和内嵌函数
│         │   ├─52-闭包和闭包表达式
│         │   ├─53-闭包捕获值
│         │   ├─54-逃逸闭包和自动闭包
│         │   ├─55-如何使用Swift中的高阶函数
│         │   ├─56-函数式编程(1)
│         │   ├─57-函数式编程(2)
│         │   ├─58-Swift面向对象概述
│         │   ├─59-枚举从此站起来了
│         │   ├─60-如何为类、结构体以及枚举添加属性
│         │   ├─61-如何为类、结构体以及枚举添加方法
│         │   ├─62-像访问数组和字典一样访问类和结构体:下标和下标重载
│         │   ├─63-如何进行类的初始化和反初始化
│         │   ├─64-如何在Swift中实现继承
│         │   ├─65-如何在Swift中实现多态和进行类型转换
│         │   ├─66-如何为现有的类、结构体、枚举或协议添加新功能
│         │   ├─67丨Swift中的协议
│         │   ├─68丨协议和扩展
│         │   ├─69丨面向协议编程初探(1)
│         │   ├─70丨面向协议编程初探(2)
│         │   ├─71丨泛型的发展历史与泛型的概述
│         │   ├─72丨如何在Swift中定义泛型函数
│         │   ├─73丨如何在Swift中定义泛型类型
│         │   ├─74丨Swift泛型中的类型约束
│         │   ├─75-为了协议:关联类型
│         │   ├─76-如何为泛型定义要求:where字句
│         │   ├─77-泛型下标
│         │   ├─78丨泛型编程思想浅谈
│         │   ├─79-如何在Swift中创建一个线程
│         │   ├─80-更高级的抽象:CocoaOperation
│         │   ├─81丨多线程编程新思路:GCD概览
│         │   ├─82-如何使用GCD:基本操作指南
│         │   ├─83-深度使用GCD:高级特性指南
│         │   ├─84-深入理解GCD:源码剖析
│         │   ├─85-如何保证线程安全和同步
│         │   ├─86-实践出真知:多线程典型应用场景分析
│         │   ├─87-拓宽思路:其他常见的多线程编程模式
│         │   ├─88-SwiftUI:Apple全新的UI框架
│         │   ├─89-SwiftUI设计工具使用指南
│         │   ├─90-如何使用SwiftUI构建可复用的组件
│         │   ├─91-如何用SwiftUI实现动画
│         │   ├─92-深入理解SwiftUI:实现原理探秘
│         │   ├─93-如何在Swift里进行错误处理
│         │   ├─94-Swift中代码访问权限控制
│         │   ├─95-不透明类型
│         │   ├─96-Swift中的自动引用计数
│         │   ├─97-Swift中的内存安全性
│         │   ├─98-如何在项目中进行网络请求
│         │   └─99-如何进行JSON的序列化和反序列化
│         ├─22-ZooKeeper实战与源码剖析
│         │   ├─03-什么是ZooKeeper?
│         │   ├─04-ZooKeeper提供什么服务?
│         │   ├─05-开始使用ZooKeeper
│         │   ├─06-使用ZooKeeper实现Master-Worker协同
│         │   ├─07-ZooKeeper架构解析
│         │   ├─08-ZooKeeperAPI简介
│         │   ├─09-ZooKeeperAPI:Watch示例
│         │   ├─10-使用ZooKeeper实现分布式队列
│         │   ├─11-使用ZooKeeper实现分布式锁
│         │   ├─12-使用ZooKeeper实现选举
│         │   ├─13-使用ApacheCurator简化ZooKeeper开发
│         │   ├─14-如何安装配置一个ZooKeeper生产环境?
│         │   ├─15-如何进行ZooKeeper的监控?
│         │   ├─16-通过ZooKeeperObserver实现跨区域部署
│         │   ├─17-通过动态配置实现不中断服务的集群成员变更
│         │   ├─18-ZooKeeper节点是如何存储数据的
│         │   ├─19-使用ZooKeeper实现服务发现(1)
│         │   ├─20-使用ZooKeeper实现服务发现(2)
│         │   ├─21-使用ZooKeeper实现服务发现(3)
│         │   ├─22-Kafka是如何使用ZooKeeper的
│         │   ├─23-什么是Paxos协议
│         │   ├─24-对比Chubby和ZooKeeper
│         │   ├─25-Raft协议解析
│         │   ├─26-什么是etcd?
│         │   ├─27-etcdAPI:KV部分
│         │   ├─28-etcdAPI:Watch和Lease部分
│         │   ├─29-使用etcd实现分布式队列
│         │   ├─30-使用etcd实现分布式锁
│         │   ├─31-如何搭建一个etcd生产环境?
│         │   ├─32-存储数据结构之B+tree
│         │   ├─33-存储数据结构之LSM
│         │   ├─34-本地存储技术总结
│         │   ├─35-ZooKeeper本地存储源码解析
│         │   ├─36-网络编程基础
│         │   ├─37-事件驱动的网络编程
│         │   ├─38-Java的事件驱动网络编程
│         │   ├─39-ZooKeeper的客户端网络通信源码解读
│         │   ├─40-ZooKeeper的服务器网络通信源码解读
│         │   ├─41-ZooKeeper的RequestProcessor源码解读
│         │   ├─42-Standalone的ZooKeeper是如何处理客户端请求的?
│         │   ├─43-Quorum模式下ZooKeeper节点的RequestProcessorPipeline
│         │   ├─44-ZooKeeper的LeaderElection
│         │   ├─45-ZooKeeper的Zab协议
│         │   ├─46-客户端和服务器端交互:Watch和Session
│         │   └─47-结课测试&结束语
│         ├─23-Node
│         │   ├─03-Node
│         │   ├─04-Node
│         │   ├─05-课程实战项目介绍
│         │   ├─06-什么是技术预研?
│         │   ├─07-Node
│         │   ├─08-第一个Node
│         │   ├─09-模块:CommonJS规范
│         │   ├─10-模块:使用模块规范改造石头剪刀布游戏
│         │   ├─11-模块:npm
│         │   ├─12-模块:Node
│         │   ├─13-异步:非阻塞I-O
│         │   ├─14-异步:异步编程之callback
│         │   ├─15-异步:事件循环
│         │   ├─16-异步:异步编程之Promise
│         │   ├─17-异步:异步编程之async-await
│         │   ├─18-HTTP:什么是HTTP服务器?
│         │   ├─19-HTTP:简单实现一个HTTP服务器
│         │   ├─20-HTTP:实现网页版石头剪刀布
│         │   ├─21-HTTP:用express优化石头剪刀布游戏
│         │   ├─22-HTTP:用koa优化石头剪刀布游戏
│         │   ├─23-RPC调用:什么是RPC调用?
│         │   ├─24-RPC调用:Node
│         │   ├─25-RPC调用:Node
│         │   ├─26-项目启动:整体需求分析
│         │   ├─27-项目启动:极客时间App下载页开发
│         │   ├─28-课程详情页:极客时间详情页需求解构
│         │   ├─29-课程详情页:将ES6模版字符串改造成模板引擎
│         │   ├─30-课程详情页:极客时间详情页需求实现
│         │   ├─31-课程播放页:极客时间播放页需求解构
│         │   ├─32-课程播放页:GraphQLAPI服务
│         │   ├─33-课程播放页:极客时间播放页需求实现
│         │   ├─34-课程列表页:极客时间列表页需求解构
│         │   ├─35-课程列表页:用Vue-React进行服务端渲染
│         │   ├─36-课程列表页:极客时间列表页需求实现
│         │   ├─37-性能工具:HTTP服务的性能测试
│         │   ├─38-性能工具:Node
│         │   ├─39-代码优化:JavaScript代码性能优化
│         │   ├─40-代码优化:内存管理优化
│         │   ├─41-代码优化:Node
│         │   ├─42-多进程优化:Node
│         │   ├─43-多进程优化:Node
│         │   ├─44-多进程优化:进程守护与管理
│         │   ├─45-架构优化:动静分离
│         │   ├─46-架构优化:反向代理与缓存服务
│         │   ├─47-概念:框架设计和工程化
│         │   ├─48-概念:设计模式
│         │   ├─49-概念:Serverless
│         │   ├─50-服务端框架搭建:koaless
│         │   ├─51-服务端框架搭建:屏蔽请求细节
│         │   ├─52-服务端框架搭建:完成服务端框架
│         │   ├─53-云函数式工程实现:服务端代码
│         │   ├─54-云函数式工程实现:工具端代码
│         │   ├─55-加餐:调试Node
│         │   ├─56-结课测试&结束语
│         │   └─57-彩蛋:这是一个严肃的课程
│         ├─24-Netty源码剖析与实战
│         │   ├─03-揭开Netty面纱
│         │   ├─04-为什么舍近求远:不直接用JDKNIO?
│         │   ├─05-为什么孤注一掷:独选Netty?
│         │   ├─06-Netty的前尘往事
│         │   ├─07-Netty的现状与趋势
│         │   ├─08-Netty怎么切换三种I-O模式?
│         │   ├─09-源码剖析:Netty对I-O模式的支持
│         │   ├─10-Netty如何支持三种Reactor?
│         │   ├─11-源码剖析:Netty对Reactor的支持
│         │   ├─12-TCP粘包-半包Netty全搞定
│         │   ├─13-源码剖析:Netty对处理粘包-半包的支持
│         │   ├─14-常用的“二次”编解码方式
│         │   ├─15-源码剖析:Netty对常用编解码的支持
│         │   ├─16-keepalive与idle监测
│         │   ├─17-源码剖析:Netty对keepalive与idle监测的支持
│         │   ├─18-Netty的那些“锁”事
│         │   ├─19-Netty如何玩转内存使用
│         │   ├─20-源码解析:Netty对堆外内存和内存池的支持
│         │   ├─21-Netty代码编译与总览
│         │   ├─22-源码剖析:启动服务
│         │   ├─23-源码剖析:构建连接
│         │   ├─24-源码剖析:接收数据
│         │   ├─25-源码剖析:业务处理
│         │   ├─26-源码剖析:发送数据
│         │   ├─27-源码剖析:断开连接
│         │   ├─28-源码剖析:关闭服务
│         │   ├─29-编写网络应用程序的基本步骤
│         │   ├─30-案例介绍和数据结构设计
│         │   ├─31-实现服务器端编解码
│         │   ├─32-实现一个服务器端
│         │   ├─33-实现客户端编解码
│         │   ├─34-完成一个客户端雏形
│         │   ├─35-引入-响应分发-完善客户端
│         │   ├─36-Netty编码中易错点解析
│         │   ├─37-调优参数:调整System参数夯实基础
│         │   ├─38-调优参数:权衡Netty核心参数
│         │   ├─39-调优参数:图解费脑的三个参数
│         │   ├─40-跟踪诊断:如何让应用易诊断?
│         │   ├─41-跟踪诊断:应用能可视,心里才有底
│         │   ├─42-跟踪诊断:让应用内存不“泄露”?
│         │   ├─43-优化使用:用好自带注解省点心
│         │   ├─44-优化使用:“整改”线程模型让-响应-健步如飞
│         │   ├─45-优化使用:增强写,延迟与吞吐量的抉择
│         │   ├─46-优化使用:如何让应用丝般“平滑”?
│         │   ├─47-优化使用:为不同平台开启native
│         │   ├─48-安全增强:设置“高低水位线”等保护好自己
│         │   ├─49-安全增强:启用空闲监测
│         │   ├─50-安全增强:简单有效的黑白名单
│         │   ├─51-安全增强:少不了的自定义授权
│         │   ├─52-安全增强:拿来即用的SSL-对话呈现表象
│         │   ├─53-安全增强:拿来即用的SSL-抓包暴露本质
│         │   ├─54-安全增强:拿来即用的SSL-轻松融入案例
│         │   ├─55-Cassandra如何使用Netty?
│         │   ├─56-Dubbo如何使用Netty?
│         │   ├─57-Hadoop如何使用Netty?
│         │   ├─58-赏析Netty之美
│         │   ├─59-如何给Netty贡献代码?
│         │   └─60-结课测试&结束语
│         ├─25-移动端自动化测试实战
│         │   ├─03-自动化测试的价值
│         │   ├─04-自动化测试常见误区
│         │   ├─05-自动化测试的技术体系
│         │   ├─06-UI分层测试体系
│         │   ├─07-AndroidApp的常见概念
│         │   ├─08-Android调试桥adb命令详解
│         │   ├─09-自动化测试常用命令
│         │   ├─10-Appium架构介绍
│         │   ├─11-AppiumDesktop安装
│         │   ├─12-AppiumServer安装
│         │   ├─13-AppiumDesktop用例录制
│         │   ├─14-用例结构解析
│         │   ├─15-使用隐式等待让用例更稳定
│         │   ├─16-控件定位方法
│         │   ├─17-常用自动化API
│         │   ├─18-长按-滑动等TouchAction应用
│         │   ├─19-测试用例的改造
│         │   ├─20-capability使用进阶
│         │   ├─21-Appium设备交互API
│         │   ├─22-使用显式等待处理复杂等待条件
│         │   ├─23-高级XPath定位
│         │   ├─24-AndroidToast识别
│         │   ├─25-使用断言验证预期结果(1)
│         │   ├─25-使用断言验证预期结果
│         │   ├─26-参数化与数据驱动
│         │   ├─27-Native原生App的自动化测试
│         │   ├─28-Hybrid混合App的自动化测试
│         │   ├─29-纯HTML5站自动化测试
│         │   ├─30-小程序自动化测试
│         │   ├─31-iOS测试工具体系
│         │   ├─32-AppStore与苹果证书体系
│         │   ├─33-iOS模拟器自动化测试
│         │   ├─34-iOS真机测试
│         │   ├─35-iOSWebView测试
│         │   ├─36-Safari测试
│         │   ├─37-PageObject设计模式
│         │   ├─38-PageObject六大设计原则
│         │   ├─39-PageObject第一个例子
│         │   ├─40-基于PageObject模式的移动自动化测试实战
│         │   ├─41-BasePage封装改进
│         │   ├─42-Appium错误排查与日志分析
│         │   ├─43-Appium原理与JSONWP协议分析
│         │   ├─44-Appium源代码分析
│         │   ├─45-Appium二次封装实战
│         │   ├─46-自动遍历测试方法与常见技术介绍
│         │   ├─47-MonkeyMaxim遍历测试工具
│         │   ├─48-AppCrawler跨平台自动遍历测试
│         │   ├─49-移动自动化测试平台价值
│         │   ├─50-技术架构与智能设备选型
│         │   ├─51-多设备管理平台STF
│         │   ├─52-SeleniumGrid方案剖析
│         │   ├─53-基于Jenkins的自动化调度详解
│         │   ├─54-多设备回归测试
│         │   ├─55-多设备多分辨率的兼容性测试方法
│         │   ├─56-测试用例调度
│         │   ├─57-手机等智能设备调度
│         │   ├─58-测试报告定制
│         │   └─59-结课测试&结束语
│         ├─26-MongoDB高手课
│         │   ├─03-认识文档数据库MongoDB
│         │   ├─04-MongoDB特色及优势
│         │   ├─05-实验:安装MongoDB
│         │   ├─06-MongoDB基本操作
│         │   ├─07-实验:HelloWorld程序开发
│         │   ├─08-聚合查询
│         │   ├─09-实验:聚合查询
│         │   ├─10-复制集机制及原理
│         │   ├─11-实验:搭建MongoDB复制集
│         │   ├─12-MongoDB全家桶
│         │   ├─13-模型设计基础
│         │   ├─14-JSON文档模型设计特点
│         │   ├─15-文档模型设计之一:基础设计
│         │   ├─16-文档模型设计之二:工况细化
│         │   ├─17-文档模型设计之三:模式套用
│         │   ├─18-设计模式集锦
│         │   ├─19-事务开发:写操作事务
│         │   ├─20-事务开发:读操作事务之一
│         │   ├─21-事务开发:读操作事务之二
│         │   ├─22-事务开发:多文档事务
│         │   ├─23-ChangeStream
│         │   ├─24-MongoDB开发最佳实践
│         │   ├─25-分片集群机制及原理
│         │   ├─26-分片集群设计
│         │   ├─27-实验:分片集群搭建及扩容
│         │   ├─28-MongoDB监控最佳实践
│         │   ├─29-MongoDB备份与恢复
│         │   ├─30-备份与恢复操作
│         │   ├─31-MongoDB安全架构
│         │   ├─32-MongoDB安全加固实践
│         │   ├─33-MongoDB索引机制(一)
│         │   ├─34-MongoDB索引机制(二)
│         │   ├─35-MongoDB读写性能机制
│         │   ├─36-性能诊断工具
│         │   ├─37-高级集群设计:两地三中心
│         │   ├─38-实验:搭建两地三中心集群
│         │   ├─39-高级集群设计:全球多写
│         │   ├─40-MongoDB上线及升级
│         │   ├─41-MongoDB应用场景及选型
│         │   ├─42-MongoDB典型案例(一)
│         │   ├─43-MongoDB典型案例(二)
│         │   ├─44-关系型数据库迁移
│         │   ├─45-数据库迁移方式及工具
│         │   ├─46-Oracle迁移实战
│         │   ├─47-MongoDB+Spark实时大数据
│         │   ├─48-MongoDB+Spark连接实战
│         │   ├─49-MongoDBSQL套接件
│         │   ├─50-MongoDB与微服务
│         │   ├─51-MongoDB与数据中台
│         │   ├─52-MongoDB数据中台案例
│         │   └─53-结果测试&结束语
│         ├─27-小马哥讲Spring核心编程思想
│         │   ├─02-内容综述
│         │   ├─03-课前准备:学习三件套(工具、代码与大脑)
│         │   ├─04-特性总览:核心特性、数据存储、Web技术、框架整合与测试
│         │   ├─05-Spring版本特性:Spring各个版本引入了哪些新特性?
│         │   ├─06-Spring模块化设计:Spring功能特性如何在不同模块中组织?
│         │   ├─07-Java语言特性运用:各种Java语法特性是怎样被Spring各种版本巧妙运用的?
│         │   ├─08-JDKAPI实践:Spring怎样取舍JavaI-O、集合、反射、动态代理等API的使用?
│         │   ├─09-JavaEEAPI整合:为什么Spring要与“笨重”的JavaEE共舞?
│         │   ├─10-Spring编程模型:Spring实现了哪些编程模型?
│         │   ├─100-SpringBean初始化后阶段:BeanPostProcessor
│         │   ├─101-SpringBean初始化完成阶段:SmartInitializingSingleton
│         │   ├─102-SpringBean销毁前阶段:DestructionAwareBeanPostProcessor用在怎样的场景
│         │   ├─103-SpringBean销毁阶段:@PreDestroy、DisposableBean以及自定义方法
│         │   ├─104-SpringBean垃圾收集(GC):何时需要GCSpringBean?
│         │   ├─105-面试题精选
│         │   ├─106-Spring配置元信息:Spring存在哪些配置元信息?它们分别用在什么场景?
│         │   ├─107-SpringBean配置元信息:BeanDefinition
│         │   ├─108-SpringBean属性元信息:PropertyValues
│         │   ├─109-Spring容器配置元信息
│         │   ├─11-Spring核心价值:我们能从SpringFramework中学到哪些经验和教训呢?
│         │   ├─110-基于XML资源装载SpringBean配置元信息
│         │   ├─111-基于Properties资源装载SpringBean配置元信息:为什么Spring官方不推荐?
│         │   ├─112-基于Java注解装载SpringBean配置元信息
│         │   ├─113-SpringBean配置元信息底层实现之XML资源
│         │   ├─114-SpringBean配置元信息底层实现之Properties资源
│         │   ├─115-SpringBean配置元信息底层实现之Java注解
│         │   ├─116-基于XML资源装载SpringIoC容器配置元信息
│         │   ├─117-基于Java注解装载SpringIoC容器配置元信息
│         │   ├─118-基于ExtensibleXMLauthoring扩展SpringXML元素
│         │   ├─119-ExtensibleXMLauthoring扩展原理
│         │   ├─12-面试题精选
│         │   ├─120-基于Properties资源装载外部化配置
│         │   ├─121-基于YAML资源装载外部化配置
│         │   ├─122-面试题
│         │   ├─123-引入动机:为什么Spring不使用Java标准资源管理,而选择重新发明轮子?
│         │   ├─124-Java标准资源管理:JavaURL资源管理存在哪些潜规则?
│         │   ├─125-Spring资源接口:Resource接口有哪些语义?它是否“借鉴”了SUN的实现呢?
│         │   ├─126-Spring内建Resource实现:Spring框架提供了多少种内建的Resource实现呢?
│         │   ├─127-SpringResource接口扩展:Resource能否支持写入以及字符集编码?
│         │   ├─128-Spring资源加载器:为什么说Spring应用上下文也是一种Spring资源加载器?
│         │   ├─129-Spring通配路径资源加载器:如何理解路径通配Ant模式?
│         │   ├─13-IoC发展简介:你可能对IoC有些误会?
│         │   ├─130-Spring通配路径模式扩展:如何扩展路径匹配的规则?
│         │   ├─131-依赖注入SpringResource:如何在XML和Java注解场景注入Resource对象?
│         │   ├─132-依赖注入ResourceLoader:除了ResourceLoaderAware回调注入,还有哪些注入方法?
│         │   ├─133-面试题精选
│         │   ├─134-Spring国际化使用场景
│         │   ├─135-Spring国际化接口:MessageSource不是技术的创造者,只是技术的搬运工?
│         │   ├─136-层次性MessageSource:双亲委派不是ClassLoader的专利吗?
│         │   ├─137-Java国际化标准实现:ResourceBundle潜规则多?
│         │   ├─138-Java文本格式化:MessageFormat脱离Spring场景,能力更强大?
│         │   ├─139-MessageSource开箱即用实现:ResourceBundle+MessageFormat组合拳?
│         │   ├─14-IoC主要实现策略:面试官总问IoC和DI的区别,他真的理解吗?
│         │   ├─140-MessageSource内建依赖:到底“我”是谁?
│         │   ├─141-课外资料:SpringBoot为什么要新建MessageSourceBean?
│         │   ├─142-面试题精选
│         │   ├─143-Spring校验使用场景:为什么Validator并不只是Bean的校验?
│         │   ├─144-Validator接口设计:画虎不成反类犬?
│         │   ├─145-Errors接口设计:复杂得没有办法理解?
│         │   ├─146-Errors文案来源:Spring国际化充当临时工?
│         │   ├─147-自定义Validator:为什么说Validator容易实现,却难以维护?
│         │   ├─148-Validator的救赎:如果没有BeanValidation,Validator将会在哪里吗?
│         │   ├─149-面试题精选
│         │   ├─15-IoC容器的职责:IoC除了依赖注入,还涵盖哪些职责呢?
│         │   ├─150-Spring数据绑定使用场景:为什么官方文档描述一笔带过?
│         │   ├─151-Spring数据绑定组件:DataBinder
│         │   ├─152-DataBinder绑定元数据:PropertyValues不是SpringBean属性元信息吗?
│         │   ├─153-DataBinder绑定控制参数:ignoreUnknownFields和ignoreInvalidFields有什么作用?
│         │   ├─154-Spring底层JavaBeans替换实现:BeanWrapper源于JavaBeans而高于JavaBeans?
│         │   ├─155-BeanWrapper的使用场景:Spring数据绑定只是副业?
│         │   ├─156-课外资料:标准JavaBeans是如何操作属性的
│         │   ├─157-DataBinder数据校验:又见Validator
│         │   ├─158-面试题精选
│         │   ├─159-Spring类型转换的实现:Spring提供了哪几种类型转换的实现?
│         │   ├─16-除了Spring,还有其它的IOC容器实现吗?
│         │   ├─160-使用场景:Spring类型转换各自的使用场景以及发展脉络是怎样的?
│         │   ├─161-基于JavaBeans接口的类型转换:Spring是如何扩展PropertyEditor接口实现类型转换的?
│         │   ├─162-Spring内建PropertyEditor扩展:哪些常见类型被Spring内建PropertyEditor实现?
│         │   ├─163-自定义PropertyEditor扩展:不尝试怎么知道它好不好用?
│         │   ├─164-SpringPropertyEditor的设计缺陷:为什么基于PropertyEditor扩展并不适合作为类型转换?
│         │   ├─165-Spring3通用类型转换接口:为什么Converter接口设计比PropertyEditor更合理?
│         │   ├─166-Spring内建类型转换器:Spring的内建类型转换器到底有多丰富?
│         │   ├─167-Converter接口的局限性:哪种类型转换场景Converter无法满足?有什么应对之策?
│         │   ├─168-GenericConverter接口:为什么GenericConverter比Converter更通用?
│         │   ├─169-优化GenericConverter接口:为什么GenericConverter需要补充条件判断?
│         │   ├─17-传统IoC容器实现:JavaBeans也是IoC容器吗?
│         │   ├─170-扩展Spring类型转换器:为什么最终注册的都是ConditionalGenericConverter?
│         │   ├─171-统一类型转换服务:ConversionService足够通用吗?
│         │   ├─172-ConversionService作为依赖-能够同时作为依赖查找和依赖注入的来源吗?
│         │   ├─173-面试题精选
│         │   ├─174-Java泛型基础:泛型参数信息在擦写后还会存在吗?
│         │   ├─175-Java5类型接口-Type:Java类型到底是Type还是Class?
│         │   ├─176-Spring泛型类型辅助类:GenericTypeResolver
│         │   ├─177-Spring泛型集合类型辅助类:GenericCollectionTypeResolver
│         │   ├─178-Spring方法参数封装-MethodParameter:不仅仅是方法参数
│         │   ├─179-Spring4
│         │   ├─18-轻量级IoC容器:如何界定IoC容器的“轻重”?
│         │   ├─180-ResolvableType的局限性:形式比人强?
│         │   ├─181-面试题精选
│         │   ├─182-Java事件-监听器编程模型:为什么Java中没有提供标准实现?
│         │   ├─183-面向接口的事件-监听器设计模式:单事件监听和多事件监听怎么选?
│         │   ├─184-面向注解的事件-监听器设计模式:便利也会带来伤害?
│         │   ├─185-Spring标准事件-ApplicationEvent:为什么不用EventObject?
│         │   ├─186-基于接口的Spring事件监听器:ApplicationListener为什么选择单事件监听模式?
│         │   ├─187-基于注解的Spring事件监听器:@EventListener有哪些潜在规则?
│         │   ├─188-注册SpringApplicationListener:直接注册和间接注册有哪些差异?
│         │   ├─189-Spring事件发布器:Spring4
│         │   ├─19-依赖查找VS
│         │   ├─190-Spring层次性上下文事件传播:这是一个Feature还是一个Bug?
│         │   ├─191-Spring内建事件(Built-inEvents):为什么ContextStartedEvent和ContextStoppedEvent是鸡肋事件?-深入剖析源码,掌握核心编程特性
│         │   ├─192-Spring4
│         │   ├─193-自定义Spring事件:自定义事件业务用得上吗?
│         │   ├─194-依赖注入ApplicationEventPublisher:事件推送还会引起Bug?
│         │   ├─195-依赖查找ApplicationEventPublisher:ApplicationEventPublisher从何而来?
│         │   ├─196-ApplicationEventPublisher底层实现:ApplicationEventMulticaster也是JavaObservable的延伸?
│         │   ├─197-同步和异步Spring事件广播:Spring对J
│         │   ├─198-Spring4
│         │   ├─199-Spring事件-监听器实现原理:面向接口和注解的事件-监听器实现有区别吗?
│         │   ├─20-构造器注入VS
│         │   ├─200-课外资料:SpringBoot和SpringCloud事件也是Spring事件?
│         │   ├─201-面试题精选
│         │   ├─202-Spring注解驱动编程发展历程
│         │   ├─203-Spring核心注解场景分类
│         │   ├─204-Spring注解编程模型
│         │   ├─205-Spring元注解(Meta-Annotations)
│         │   ├─206-Spring模式注解(StereotypeAnnotations)
│         │   ├─207-Spring组合注解(ComposedAnnotations)
│         │   ├─208-Spring注解属性别名(AttributeAliases)
│         │   ├─209-Spring注解属性覆盖(AttributeOverrides)
│         │   ├─21-面试题精选
│         │   ├─210-Spring@Enable模块驱动
│         │   ├─211-Spring条件注解
│         │   ├─212-课外资料:SpringBoot和SpringCloud是怎样在Spring注解内核上扩展的
│         │   ├─213-面试题精选
│         │   ├─214-理解SpringEnvironment抽象
│         │   ├─215-SpringEnvironment接口使用场景
│         │   ├─216-Environment占位符处理
│         │   ├─217-理解条件配置SpringProfiles
│         │   ├─218-Spring4重构@Profile
│         │   ├─219-依赖注入Environment
│         │   ├─22-SpringIoC依赖查找:依赖注入还不够吗?依赖查找存在的价值几何?
│         │   ├─220-依赖查找Environment
│         │   ├─221-依赖注入@Value
│         │   ├─222-Spring类型转换在Environment中的运用
│         │   ├─223-Spring类型转换在@Value中的运用
│         │   ├─224-Spring配置属性源PropertySource
│         │   ├─225-Spring內建的配置属性源
│         │   ├─226-基于注解扩展Spring配置属性源
│         │   ├─227-基于API扩展Spring外部化配置属性源
│         │   ├─228-课外资料:Spring4
│         │   ├─229-面试题精选
│         │   ├─23-SpringIoC依赖注入:Spring提供了哪些依赖注入模式和类型呢?
│         │   ├─230-Spring应用上下文启动准备阶段
│         │   ├─231-BeanFactory创建阶段
│         │   ├─232-BeanFactory准备阶段
│         │   ├─233-BeanFactory后置处理阶段
│         │   ├─234-BeanFactory注册BeanpostProcessor阶段
│         │   ├─235-初始化内建Bean:MessageSource
│         │   ├─236-初始化内建Bean:Spring事件广播器
│         │   ├─237-Spring应用上下文刷新阶段
│         │   ├─238-Spring事件监听器注册阶段
│         │   ├─239-BeanFactory初始化完成阶段
│         │   ├─24-SpringIoC依赖来源:依赖注入和查找的对象来自于哪里?
│         │   ├─240-Spring应用上下刷新完成阶段
│         │   ├─241-Spring应用上下文启动阶段
│         │   ├─242-Spring应用上下文停止阶段
│         │   ├─243-Spring应用上下文关闭阶段
│         │   ├─244-面试题精选
│         │   ├─245-结束语
│         │   ├─25-SpringIoC配置元信息:SpringIoC有哪些配置元信息?它们的进化过程是怎样的?
│         │   ├─26-SpringIoC容器:BeanFactory和ApplicationContext谁才是SpringIoC容器?
│         │   ├─27-Spring应用上下文:ApplicationContext除了IoC容器角色,还提供哪些特性?
│         │   ├─28-使用SpringIoC容器:选BeanFactory还是ApplicationContext?
│         │   ├─29-SpringIoC容器生命周期:IoC容器启停过程中发生了什么?
│         │   ├─30-面试题精选
│         │   ├─31-定义Bean:什么是BeanDefinition?
│         │   ├─32-BeanDefinition元信息:除了Bean名称和类名,还有哪些Bean元信息值得关注?
│         │   ├─33-命名SpringBean:id和name属性命名Bean,哪个更好?
│         │   ├─34-SpringBean的别名:为什么命名Bean还需要别名?
│         │   ├─35-注册SpringBean:如何将BeanDefinition注册到IoC容器?
│         │   ├─36-实例化SpringBean:Bean实例化的姿势有多少种?
│         │   ├─37-初始化SpringBean:Bean初始化有哪些方式?
│         │   ├─38-延迟初始化SpringBean:延迟初始化的Bean会影响依赖注入吗?
│         │   ├─39-销毁SpringBean:销毁Bean的基本操作有哪些?
│         │   ├─40-回收SpringBean:SpringIoC容器管理的Bean能够被垃圾回收吗?
│         │   ├─41-面试题精选
│         │   ├─42-依赖查找的今世前生:SpringIoC容器从Java标准中学到了什么?
│         │   ├─43-单一类型依赖查找:如何查找已知名称或类型的Bean对象?
│         │   ├─44-集合类型依赖查找:如何查找已知类型多个Bean集合?
│         │   ├─45-层次性依赖查找:依赖查找也有双亲委派?
│         │   ├─46-延迟依赖查找:非延迟初始化Bean也能实现延迟查找?
│         │   ├─47-安全依赖查找
│         │   ├─48-内建可查找的依赖:哪些SpringIoC容器内建依赖可供查找?
│         │   ├─49-依赖查找中的经典异常:Bean找不到?Bean不是唯一的?Bean创建失败?
│         │   ├─50-面试题精选
│         │   ├─51-依赖注入的模式和类型:Spring提供了哪些依赖注入的模式和类型?
│         │   ├─52-自动绑定(Autowiring):为什么Spring会引入Autowiring?
│         │   ├─53-自动绑定(Autowiring)模式:各种自动绑定模式的使用场景是什么?
│         │   ├─54-自动绑定(Autowiring)限制和不足:如何理解和挖掘官方文档中深层次的含义?
│         │   ├─55-Setter方法依赖注入:Setter注入的原理是什么?
│         │   ├─56-构造器依赖注入:官方为什么推荐使用构造器注入?
│         │   ├─57-字段注入:为什么Spring官方文档没有单独列举这种注入方式?
│         │   ├─58-方法注入:方法注入是@Autowired专利吗?
│         │   ├─59-接口回调注入:回调注入的使用场景和限制有哪些?
│         │   ├─60-依赖注入类型选择:各种依赖注入有什么样的使用场景?
│         │   ├─61-基础类型注入:String和Java原生类型也能注入Bean的属性,它们算依赖注入吗?
│         │   ├─62-集合类型注入:注入Collection和Map类型的依赖区别?还支持哪些集合类型?
│         │   ├─63-限定注入:如何限定Bean名称注入?如何实现Bean逻辑分组注入?
│         │   ├─64-延迟依赖注入:如何实现延迟执行依赖注入?与延迟依赖查找是类似的吗?
│         │   ├─65-依赖处理过程:依赖处理时会发生什么?其中与依赖查找的差异在哪?
│         │   ├─66-@Autowired注入:@Autowired注入的规则和原理有哪些?
│         │   ├─67-JSR-330@Inject注入:@Inject与@Autowired的注入原理有怎样的联系?
│         │   ├─68-Java通用注解注入原理:Spring是如何实现@Resource和@EJB等注解注入的?
│         │   ├─69-自定义依赖注入注解:如何最简化实现自定义依赖注入注解?
│         │   ├─70-面试题精选
│         │   ├─71-依赖查找的来源:除容器内建和自定义SpringBean之外,还有其他来源提供依赖查找吗?
│         │   ├─72-依赖注入的来源:难道依赖注入的来源与依赖查找的不同吗?
│         │   ├─73-Spring容器管理和游离对象:为什么会有管理对象和游离对象?
│         │   ├─74-SpringBeanDefinition作为依赖来源:SpringBean的来源
│         │   ├─75-单例对象作为依赖来源:单体对象与普通SpringBean存在哪些差异?
│         │   ├─76-非Spring容器管理对象作为依赖来源:如何理解ResolvableDependency?
│         │   ├─77-外部化配置作为依赖来源:@Value是如何将外部化配置注入SpringBean的?
│         │   ├─78-面试题精选
│         │   ├─79-SpringBean作用域:为什么SpringBean需要多种作用域?
│         │   ├─80-singleton-Bean作用域:单例Bean在当前Spring应用真是唯一的吗?
│         │   ├─81-prototype-Bean作用域:原型Bean在哪些场景下会创建新的实例?
│         │   ├─82-request-Bean作用域:requestBean会在每次HTTP请求创建新的实例吗?
│         │   ├─83-session-Bean作用域:sessionBean在SpringMVC场景下存在哪些局限性?
│         │   ├─84-application-Bean作用域:applicationBean是否真的有必要?
│         │   ├─85-自定义Bean作用域:设计Bean作用域应该注意哪些原则?
│         │   ├─86-课外资料:SpringCloudRefreshScope是如何控制Bean的动态刷新?
│         │   ├─87-面试题精选
│         │   ├─88-SpringBean元信息配置阶段:BeanDefinition配置与扩展
│         │   ├─89-SpringBean元信息解析阶段:BeanDefinition的解析
│         │   ├─90-SpringBean注册阶段:BeanDefinition与单体Bean注册
│         │   ├─91-SpringBeanDefinition合并阶段:BeanDefinition合并过程是怎样出现的?
│         │   ├─92-SpringBeanClass加载阶段:BeanClassLoader能够被替换吗
│         │   ├─93-SpringBean实例化前阶段:Bean的实例化能否被绕开?
│         │   ├─94-SpringBean实例化阶段:Bean实例是通过Java反射创建吗?
│         │   ├─95-SpringBean实例化后阶段:Bean实例化后是否一定被是使用吗?
│         │   ├─96-SpringBean属性赋值前阶段:配置后的PropertyValues还有机会修改吗?
│         │   ├─97-Aware接口回调阶段:众多Aware接口回调的顺序是安排的?
│         │   ├─98-SpringBean初始化前阶段:BeanPostProcessor
│         │   ├─99-SpringBean初始化阶段:@PostConstruct、InitializingBean以及自定义方法
│         │   ├─加餐1:为什么说ObjectFactory提供的是延迟依赖查找
│         │   ├─加餐2-依赖查找(注入)的Bean会被缓存吗?
│         │   ├─加餐3-@Bean的处理流程是怎样的?
│         │   ├─加餐4-BeanFactory如何处理循环依赖的?
│         │   └─加餐5-MyBatis与SpringFramework是如何集成的?
│         ├─28-Electron开发实战
│         │   ├─02-内容综述:学完这门课程你能得到什么?
│         │   ├─03-Electron介绍:为什么Electron这么火?
│         │   ├─04-揭秘Electron架构原理:Chromium+Node
│         │   ├─05-桌面端技术选型:如何选择合适的桌面端技术?
│         │   ├─06-Electron开发准备:环境搭建及前期准备
│         │   ├─07-第一个Electron应用:开发一个简单版的番茄钟(上)
│         │   ├─08-第一个Electron应用:开发一个简单版的番茄钟(下)
│         │   ├─09-与Web开发不同(一):主进程与渲染进程
│         │   ├─10-与Web开发不同(二):进程间通信
│         │   ├─11-与Web开发不同(三):Native能力及原生GUI
│         │   ├─12-与Web开发不同(四):释放前端想象力,基于Electron能做什么?
│         │   ├─13-实战项目综述:整体需求分析
│         │   ├─14-设计思路:做远程控制有几步?
│         │   ├─15-项目架构与基础业务:Electron与React框架结合
│         │   ├─16-主页面基础业务:RealWorldIPC
│         │   ├─17-傀儡端实现(一):基于Electron能力捕获桌面视频流
│         │   ├─18-傀儡端实现(二):如何接收&响应指令?
│         │   ├─19-傀儡端实现(三):基于WebRTC传输视频流(上)
│         │   ├─20-傀儡端实现(四):基于WebRTC传输视频流(下)
│         │   ├─21-信令服务:如何连接两端(上)
│         │   ├─22-信令服务:如何连接两端(下)
│         │   ├─23-指令传输实现:如何建立数据传输?
│         │   ├─24-项目完善与总结(上):App特性
│         │   ├─25-项目完善与总结(下):原生GUI
│         │   ├─26-Electron应用打包:从HTML到安装包
│         │   ├─27-Electron应用更新(一):软件更新的痛点
│         │   ├─28-Electron应用更新(二):线上项目如何更新?
│         │   ├─29-Electron质量监控:桌面端的质量抓手是什么?
│         │   ├─30-使用原生能力:如何集成C++能力?
│         │   ├─31-Electron自动化测试:如何编写端到端测试?
│         │   ├─32-Electron体验优化:如何优化白屏问题?
│         │   ├─33-Electron客户端的安全:从XSS到RCE
│         │   ├─34-Electronbadparts:辩证看待Electron技术
│         │   └─35-结课测试&结束语
│         ├─29-NETCore开发实战
│         │   ├─03-
│         │   ├─04-Startup:掌握ASP
│         │   ├─05-依赖注入:良好架构的起点
│         │   ├─06-作用域与对象释放行为:你知道IDisposable对象释放的时机和坑吗?
│         │   ├─07-用Autofac增强容器能力:引入面向切面编程(AOP)的能力
│         │   ├─08-配置框架:让服务无缝适应各种环境
│         │   ├─09-命令行配置提供程序:最简单快捷的配置注入方法
│         │   ├─10-环境变量配置提供程序:容器环境下配置注入的最佳途径
│         │   ├─11-文件配置提供程序:自由选择配置的格式
│         │   ├─12-配置变更监听:配置热更新能力的核心
│         │   ├─13-配置绑定:使用强类型对象承载配置数据
│         │   ├─14-自定义配置数据源:低成本实现定制化配置方案
│         │   ├─15-选项框架:服务组件集成配置的最佳实践
│         │   ├─16-选项数据热更新:让服务感知配置的变化
│         │   ├─17-为选项数据添加验证:避免错误配置的应用接收用户流量
│         │   ├─18-日志框架:聊聊记日志的最佳姿势
│         │   ├─19-日志作用域:解决不同请求之间的日志干扰
│         │   ├─20-结构化日志组件Serilog:记录对查询分析友好的日志
│         │   ├─21-中间件:掌控请求处理过程的关键
│         │   ├─22-异常处理中间件:区分真异常与逻辑异常
│         │   ├─23-静态文件中间件:前后端分离开发合并部署骚操作
│         │   ├─24-文件提供程序:让你可以将文件放在任何地方
│         │   ├─25-路由与终结点:如何规划好你的WebAPI
│         │   ├─26-工程结构概览:定义应用分层及依赖关系
│         │   ├─27-定义Entity:区分领域模型的内在逻辑和外在行为
│         │   ├─28-工作单元模式(UnitOfWork):管理好你的事务
│         │   ├─29-定义仓储:使用EFCore实现仓储层
│         │   ├─30-领域事件:提升业务内聚,实现模块解耦
│         │   ├─31-APIController:定义API的最佳实践
│         │   ├─32-集成事件:解决跨微服务的最终一致性
│         │   ├─33-集成事件:使用RabbitMQ来实现EventBus
│         │   ├─34-MediatR:轻松实现命令查询职责分离模式(CQRS)
│         │   ├─35-MediatR:让领域事件处理更加优雅
│         │   ├─36-HttpClientFactory:管理向外请求的最佳实践
│         │   ├─37-gRPC:内部服务间通讯利器
│         │   ├─38-gRPC:用代码生成工具提高生产效率
│         │   ├─39-Polly:用失败重试机制提升服务可用性
│         │   ├─40-Polly:熔断慢请求避免雪崩效应
│         │   ├─41-网关与BFF:区分场景与职责
│         │   ├─42-网关与BFF:使用JWT来实现身份认证与授权
│         │   ├─43-安全:反跨站请求伪造
│         │   ├─44-安全:防开放重定向攻击
│         │   ├─45-安全:防跨站脚本
│         │   ├─46-安全:跨域请求
│         │   ├─47-缓存:为不同的场景设计合适的缓存策略
│         │   ├─48-部署:演示一个部署流程
│         │   ├─49-ConfigMap:实现基本配置方案
│         │   ├─50-配置:使用分布式配置中心方案版本化管理配置
│         │   ├─51-健康检查:与Liveness、Readiness、Startup探测集成实现高可用
│         │   ├─52-健康检查:搭建全量健康检查探针和看板
│         │   ├─53-ForwardedHeaders:确保服务在负载均衡下正常工作
│         │   ├─54-安全:介绍强制HTTPS的两种方式
│         │   ├─55-日志:与EFK日志三件套集成
│         │   ├─56-日志:Exceptionless日志系统
│         │   ├─57-追踪:集成SkyWalking
│         │   ├─58-监控与告警:Prometheus与AlertManager
│         │   ├─59-监控与告警:用Granfana实现监控看板
│         │   ├─60-prometheus-net:自定义监控指标利器
│         │   └─61-结课测试&结束语
│         ├─3-零基础学Python(2018版)
│         │   ├─01-Python语言的特点
│         │   ├─02-Python的发展历史与版本
│         │   ├─03-Python的安装
│         │   ├─04-Python程序的书写规则
│         │   ├─05-基础数据类型
│         │   ├─06-变量的定义和常用操作
│         │   ├─07-序列的概念
│         │   ├─08-字符串的定义和使用
│         │   ├─09-字符串的常用操作
│         │   ├─10-元组的定义和常用操作
│         │   ├─11-列表的定义和常用操作
│         │   ├─12-条件语句
│         │   ├─13-for循环
│         │   ├─14-while循环
│         │   ├─15-for循环语句中的if嵌套
│         │   ├─16-while循环语句中的if嵌套
│         │   ├─17-字典的定义和常用操作
│         │   ├─18-列表推导式与字典推导式
│         │   ├─19-文件的内建函数
│         │   ├─20-文件的常用操作
│         │   ├─21-异常的检测和处理
│         │   ├─22-函数的定义和常用操作
│         │   ├─23-函数的可变长参数
│         │   ├─24-函数的变量作用域
│         │   ├─25-函数的迭代器与生成器
│         │   ├─26-Lambda表达式
│         │   ├─27-Python内建函数
│         │   ├─28-闭包的定义
│         │   ├─29-闭包的使用
│         │   ├─30-装饰器的定义
│         │   ├─31-装饰器的使用
│         │   ├─32-自定义上下文管理器
│         │   ├─33-模块的定义
│         │   ├─34-PEP8编码规范(1)
│         │   ├─34-PEP8编码规范
│         │   ├─35-类与实例
│         │   ├─36-如何增加类的属性和方法
│         │   ├─37-类的继承
│         │   ├─38-类的使用-自定义with语句
│         │   ├─39-多线程编程的定义
│         │   ├─40-经典的生产者和消费者问题
│         │   ├─41-Python标准库的定义
│         │   ├─42-正则表达式库re
│         │   ├─43-正则表达式的元字符
│         │   ├─44-正则表达式分组功能实例
│         │   ├─45-正则表达式库函数match与search的区别
│         │   ├─46-正则表达式库替换函数sub()的实例
│         │   ├─47-日期与时间函数库
│         │   ├─48-数学相关库
│         │   ├─49-使用命令行对文件和文件夹操作
│         │   ├─50-文件与目录操作库
│         │   ├─51-机器学习的一般流程与NumPy安装
│         │   ├─52-NumPy的数组与数据类型
│         │   ├─53-NumPy数组和标量的计算
│         │   ├─54-NumPy数组的索引和切片
│         │   ├─55-pandas安装与Series结构
│         │   ├─56-Series的基本操作
│         │   ├─57-Dataframe的基本操作
│         │   ├─58-层次化索引
│         │   ├─59-Matplotlib的安装与绘图
│         │   ├─60-机器学习分类的原理
│         │   ├─61-Tensorflow的安装
│         │   ├─62-根据特征值分类的模型和代码
│         │   ├─63-网页数据的采集与urllib库
│         │   ├─64-网页常见的两种请求方式get和post
│         │   ├─65-HTTP头部信息的模拟
│         │   ├─66-requests库的基本使用
│         │   ├─67-结合正则表达式爬取图片链接
│         │   ├─68-BeautifulSoup的安装和使用
│         │   ├─69-使用爬虫爬取新闻网站
│         │   ├─70-使用爬虫爬取图片链接并下载图片
│         │   └─71-如何分析源代码并设计合理的代码结构&结课测试
│         ├─30-NLP实战高手课
│         │   ├─03-AI概览:宣传片外的人工智能
│         │   ├─04-AI项目流程:从实验到落地
│         │   ├─05-NLP领域简介:NLP基本任务及研究方向
│         │   ├─06-NLP应用:智能问答系统
│         │   ├─07-NLP应用:文本校对系统
│         │   ├─08-NLP的学习方法:如何在AI爆炸时代快速上手学习?
│         │   ├─09-深度学习框架简介:如何选择合适的深度学习框架?
│         │   ├─10-深度学习与硬件:CPU
│         │   ├─100-WikiSQL任务简介
│         │   ├─101-ASDL和AST
│         │   ├─102-Tranx简介
│         │   ├─103-LambdaCaculus概述
│         │   ├─104-Lambda-DCS概述
│         │   ├─105-InductiveLogicProgramming:基本设定
│         │   ├─106-InductiveLogicProgramming:一个可微的实现
│         │   ├─107-增强学习的基本设定:增强学习与传统的预测性建模有什么区别?
│         │   ├─108-最短路问题和DijkstraAlgorithm
│         │   ├─109-Q-learning:如何进行Q-learning算法的推导?
│         │   ├─11-深度学习与硬件:GPU
│         │   ├─110-Rainbow:如何改进Q-learning算法?
│         │   ├─111-PolicyGradient:如何进行PolicyGradient的基本推导?
│         │   ├─112-A2C和A3C:如何提升基本的PolicyGradient算法
│         │   ├─113-Gumbel-trick:如何将离散的优化改变为连续的优化问题?
│         │   ├─114-MCTS简介:如何将“推理”引入到强化学习框架中
│         │   ├─115-DirectPolictyGradient:基本设定及Gumbel-trick的使用
│         │   ├─116-DirectPolictyGradient:轨迹生成方法
│         │   ├─117-AutoML及NeuralArchitectureSearch简介
│         │   ├─118-AutoML网络架构举例
│         │   ├─119-RENAS:如何使用遗传算法和增强学习探索网络架构
│         │   ├─12-深度学习与硬件:TPU
│         │   ├─120-DifferentiableSearch:如何将NAS变为可微的问题
│         │   ├─121-层次搜索法:如何在模块之间进行搜索?
│         │   ├─122-LeNAS:如何搜索搜索space
│         │   ├─123-超参数搜索:如何寻找算法的超参数
│         │   ├─124-Learningtooptimize:是否可以让机器学到一个新的优化器
│         │   ├─125-遗传算法和增强学习的结合
│         │   ├─126-使用增强学习改进组合优化的算法
│         │   ├─127-多代理增强学习概述:什么是多代理增强学习?
│         │   ├─128-AlphaStar介绍:AlphaStar中采取了哪些技术?
│         │   ├─129-IMPALA:多Agent的Actor-Critic算法
│         │   ├─13-AI项目部署:基本原则
│         │   ├─130-COMA-Agent之间的交流
│         │   ├─131-多模态表示学习简介
│         │   ├─132-知识蒸馏:如何加速神经网络推理
│         │   ├─133-DeepGBM:如何用神经网络捕捉集成树模型的知识
│         │   ├─134-文本推荐系统和增强学习
│         │   ├─135-RL训练方法集锦:简介
│         │   ├─136-RL训练方法-RL实验的注意事项
│         │   ├─137-PPO算法
│         │   ├─138-Reward设计的一般原则
│         │   ├─139-解决SparseReward的一些方法
│         │   ├─14-AI项目部署:框架选择
│         │   ├─140-ImitationLearning和Self-imitationLearning
│         │   ├─141-增强学习中的探索问题
│         │   ├─142-Model-basedReinforcementLearning
│         │   ├─143-TransferReinforcementLearning和Few-shotReinforcementLearning
│         │   ├─144-Quora问题等价性案例学习:预处理和人工特征
│         │   ├─145-Quora问题等价性案例学习:深度学习模型
│         │   ├─146-文本校对案例学习
│         │   ├─147-微服务和Kubernetes简介
│         │   ├─148-Docker简介
│         │   ├─149-Docker部署实践
│         │   ├─15-AI项目部署:微服务简介
│         │   ├─150-Kubernetes基本概念
│         │   ├─151-Kubernetes部署实践
│         │   ├─152-Kubernetes自动扩容
│         │   ├─153-Kubernetes服务发现
│         │   ├─154-KubernetesIngress
│         │   ├─155-Kubernetes健康检查
│         │   ├─156-Kubernetes灰度上线
│         │   ├─157-KubernetesStatefulSets
│         │   ├─158-Istio简介:Istio包含哪些功能?
│         │   ├─159-Istio实例和CircuitBreaker
│         │   ├─16-统计学基础:随机性是如何改变数据拟合的本质的?
│         │   ├─160-结束语
│         │   ├─17-神经网络基础:神经网络还是复合函数
│         │   ├─18-神经网络基础:训练神经网络
│         │   ├─19-神经网络基础:神经网络的基础构成
│         │   ├─20-Embedding简介:为什么Embedding更适合编码文本特征?
│         │   ├─21-RNN简介:马尔可夫过程和隐马尔可夫过程
│         │   ├─22-RNN简介:RNN和LSTM
│         │   ├─23-CNN:卷积神经网络是什么?
│         │   ├─24-环境部署:如何构建简单的深度学习环境?
│         │   ├─25-PyTorch简介:Tensor和相关运算
│         │   ├─26-PyTorch简介:如何构造Dataset和DataLoader?
│         │   ├─27-PyTorch简介:如何构造神经网络?
│         │   ├─28-文本分类实践:如何进行简单的文本分类?
│         │   ├─29-文本分类实践的评价:如何提升进一步的分类效果?
│         │   ├─30-经典的数据挖掘方法:数据驱动型开发早期的努力
│         │   ├─31-表格化数据挖掘基本流程:看看现在的数据挖掘都是怎么做的?
│         │   ├─32-Pandas简介:如何使用Pandas对数据进行处理?
│         │   ├─33-Matplotlib简介:如何进行简单的可视化分析?
│         │   ├─34-半自动特征构建方法:TargetMeanEncoding
│         │   ├─35-半自动特征构建方法:CategoricalEncoder
│         │   ├─36-半自动特征构建方法:连续变量的离散化
│         │   ├─37-半自动特征构建方法:EntityEmbedding
│         │   ├─38-半自动构建方法:EntityEmbedding的实现
│         │   ├─39-半自动特征构建方法:连续变量的转换
│         │   ├─40-半自动特征构建方法:缺失变量和异常值的处理
│         │   ├─41-自动特征构建方法:Symboliclearning和AutoCross简介
│         │   ├─42-降维方法:PCA、NMF和tSNE
│         │   ├─43-降维方法:DenoisingAutoEncoders
│         │   ├─44-降维方法:VariationalAutoEncoder
│         │   ├─45-变量选择方法
│         │   ├─46-集成树模型:如何提升决策树的效果
│         │   ├─47-集成树模型:GBDT和XgBoost的数学表达
│         │   ├─48-集成树模型:LightGBM简介
│         │   ├─49-集成树模型:CatBoost和NGBoost简介
│         │   ├─50-神经网络建模:如何让神经网络实现你的数据挖掘需求
│         │   ├─51-神经网络的构建:ResidualConnection和DenseConnection
│         │   ├─52-神经网络的构建:NetworkinNetwork
│         │   ├─53-神经网络的构建:GatingMechanism和Attention
│         │   ├─54-神经网络的构建:Memory
│         │   ├─55-神经网络的构建:ActivationFunction
│         │   ├─56-神经网络的构建:Normalization
│         │   ├─57-神经网络的训练:初始化
│         │   ├─58-神经网络的训练:学习率和Warm-up
│         │   ├─59-神经网络的训练:新的PyTorch训练框架
│         │   ├─60-Transformer:如何通过Transformer榨取重要变量?
│         │   ├─61-Transformer代码实现剖析
│         │   ├─62-xDeepFM:如何用神经网络处理高维的特征?
│         │   ├─63-xDeepFM的代码解析
│         │   ├─64-时序建模:如何用神经网络解决时间序列的预测问题?
│         │   ├─65-图嵌入:如何将图关系纳入模型?
│         │   ├─66-图网络简介:如何在图结构的基础上建立神经网络?
│         │   ├─67-模型融合基础:如何让你所学到的模型方法一起发挥作用?
│         │   ├─68-高级模型融合技巧:Metades是什么?
│         │   ├─69-挖掘自然语言中的人工特征:如何用传统的特征解决问题?
│         │   ├─70-重新审视WordEmbedding:NegativeSampling和ContextualEmbedding
│         │   ├─71-深度迁移学习模型:从ELMo到BERT
│         │   ├─72-深度迁移学习模型:RoBERTa、XLNet、ERNIE和T5
│         │   ├─73-深度迁移学习模型:ALBERT和ELECTRA
│         │   ├─74-深度迁移学习模型的微调:如何使用TensorFlow在TPU对模型进行微调
│         │   ├─75-深度迁移学习模型的微调:TensorFlowBERT代码简析
│         │   ├─76-深度迁移学习的微调:如何利用PyTorch实现深度迁移学习模型的微调及代码简析
│         │   ├─77-优化器:Adam和AdamW
│         │   ├─78-优化器:Lookahead,Radam和Lamb
│         │   ├─79-多重loss的方式:如何使用多重loss来提高模型准确率?
│         │   ├─80-数据扩充的基本方法:如何从少部分数据中扩充更多的数据并避免过拟合?
│         │   ├─81-UDA:一种系统的数据扩充框架
│         │   ├─82-LabelSmoothing和LogitSqueezing
│         │   ├─83-底层模型拼接:如何让不同的语言模型融合在一起从而达到更好的效果?
│         │   ├─84-上层模型拼接:如何在语言模型基础上拼接更多的模型?
│         │   ├─85-长文本分类:截取、关键词拼接和预测平均
│         │   ├─86-VirtualAdverserialTraining:如何减少一般对抗训练难收敛的问题并提高结果的鲁棒性?
│         │   ├─87-其他Embedding的训练:还有哪些Embedding方法?
│         │   ├─88-训练预语言模型
│         │   ├─89-多任务训练:如何利用多任务训练来提升效果?
│         │   ├─90-DomainAdaptation:如何利用其它有标注语料来提升效果?
│         │   ├─91-Few-shotLearning:是否有更好的利用不同任务的方法?
│         │   ├─92-半监督学习:如何让没有标注的数据也派上用场?
│         │   ├─93-依存分析和SemanticParsing概述
│         │   ├─94-依存分析和UniversalDepdencyRelattions
│         │   ├─95-如何在Stanza中实现DependencyParsing
│         │   ├─96-ShiftReduce算法
│         │   ├─97-基于神经网络的依存分析算法
│         │   ├─98-树神经网络:如何采用TreeLSTM和其它拓展方法?
│         │   └─99-SemanticParsing基础:SemanticParsing的任务是什么?
│         ├─31-ServiceMesh实战
│         │   ├─03-ServiceMesh的起源:为什么会出现ServiceMesh技术?
│         │   ├─04-ServiceMesh的发展:ServiceMesh技术是如何演进的?
│         │   ├─05-微服务通信的济世良方:什么是ServiceMesh?它能帮你做什么?
│         │   ├─06-列王的纷争:市面上有哪些主流的ServiceMesh产品?
│         │   ├─07-王者的诞生:为什么Istio有如此高的呼声?
│         │   ├─08-Istio的自我救赎:为什么Istio发生了两次重大的架构变更?
│         │   ├─09-核心功能之流量控制:Istio是如何实现流量控制功能的?
│         │   ├─10-服务的可观察性:如何理解服务可视化的重要性?
│         │   ├─11-保卫你的网格:Istio是如何设计安全架构的?
│         │   ├─12-安装与部署:如何安装Istio?它都支持哪些环境和部署方式?
│         │   ├─13-动态路由:用VirtualService和DestinationRule设置路由规则
│         │   ├─14-网关:用Gateway管理进入网格的流量
│         │   ├─15-服务入口:用ServiceEntry扩展你的网格服务
│         │   ├─16-流量转移:灰度发布是如何实现的?
│         │   ├─17-Ingress:控制进入网格的请求
│         │   ├─18-Egress:用Egress实现访问外部服务
│         │   ├─19-超时重试:提升系统的健壮性和可用性
│         │   ├─20-熔断:“秒杀”场景下的过载保护是如何实现的?
│         │   ├─21-故障注入:在Istio中实现一个“ChaosMonkey”
│         │   ├─22-流量镜像:解决线上问题排查的难题
│         │   ├─23-洞察你的服务:使用Kiali观测你的微服务应用
│         │   ├─24-指标:使用Prometheus收集指标
│         │   ├─25-监控:使用Grafana查看系统的整体状态
│         │   ├─26-日志:如何获取Envoy的日志并进行调试
│         │   ├─27-分布式追踪:使用Jeager对应用进行分布式追踪
│         │   ├─28-守卫网格:配置TLS安全网关
│         │   ├─29-双重保障:为应用设置不同级别的双向TLS
│         │   ├─30-授权策略:如何实现JWT身份认证与授权?
│         │   ├─31-实战演练(一):项目准备和构建过程
│         │   ├─32-实战演练(二):实现自动化灰度发布
│         │   ├─33-实战演练(三):提升系统的弹性能力
│         │   ├─34-实战演练(四):配置安全策略
│         │   ├─35-实战演练(五):收集指标并监控应用
│         │   ├─36-实战演练(六):集成ELKStack日志套件
│         │   ├─37-实战演练(七):集成分布式追踪工具
│         │   ├─38-调试工具和方法:调试网格的工具和方法有哪些?
│         │   ├─39-实践经验总结:实际落地中的常见问题有哪些?
│         │   ├─40-未来架构——从ServiceMesh迈向云原生
│         │   └─41-结果测试&结束语
│         ├─32-微信小程序全栈开发实战
│         │   ├─03-小程序的特点及开发能力
│         │   ├─04-新的一年,微信小程序开放了哪些新功能?
│         │   ├─05-小程序运行机制简介:从零构建一个WebApp需要做哪些事情?
│         │   ├─06-开发环境配置:创建你的第一个小程序项目
│         │   ├─07-icon组件:关于图标的4个实现方案
│         │   ├─08-progress组件:如何自定义实现一个环形进度条?
│         │   ├─09-rich-text组件:如何单击预览rich-text中的图片并保存?
│         │   ├─10-view容器组件及Flex布局(一):学习容器组件view及其重要属性
│         │   ├─100-购物车页面:实现向购物车添加商品的接口
│         │   ├─101-购物车页面:实现“加入购物车”功能
│         │   ├─102-购物车页面:实现购物车拉取接口
│         │   ├─103-购物车页面:调用购物车列表接口与绑定页面数据
│         │   ├─104-购物车页面:实现改变购物车商品数量的接口
│         │   ├─105-购物车页面:实现商品增减
│         │   ├─106-购物车页面:实现批量删除
│         │   ├─107-确认订单页面:实现地址项与商品列表UI
│         │   ├─108-确认订单页面:绑定商品列表数据
│         │   ├─109-确认订单页面:实现确认订单页面其它UI
│         │   ├─11-view容器组件及Flex布局(二):介绍flex布局中常用的样式及样式值
│         │   ├─110-购物车页面:尝试使用计算属性
│         │   ├─111-快递地址列表页面:创建快递列表页面UI
│         │   ├─112|新增地址页:创建新增收货地址页面UI与双向绑定
│         │   ├─113|微信接口:验证接口是否可用
│         │   ├─114|收货地址列表页:从微信获取预存的收货地址
│         │   ├─115|后端:创建address模型与列表接口
│         │   ├─116|后端:创建新增收货地址接口、添加索引
│         │   ├─117|新增地址页:实现收货地址新增功能
│         │   ├─118|收货地址列表页:拉取真是收货地址并渲染
│         │   ├─119|收货地址列表页:优化微信收货地址获取的逻辑
│         │   ├─12-可移动容器及可移动区域(一):学习使用movable-view与movable-area组件
│         │   ├─120|后端:实现收货地址编辑接口
│         │   ├─121|新增编辑地址页:实现前端编辑功能
│         │   ├─122|地址列表页:实现滑动删除功能的UI
│         │   ├─123|地址列表页:实现地址删除接口及前端删除功能
│         │   ├─124|微信支付:申请微信认证及微信支付
│         │   ├─125|微信支付:登录商户平台作支付开发准备
│         │   ├─126|微信支付:安装微信支付模块koa3-wechat
│         │   ├─127|微信支付:初始化koa3-wechat支付模块
│         │   ├─128|微信支付:使用koa3-wechat调用统一下单接口准备支付参数
│         │   ├─129|微信支付:使用wx
│         │   ├─13-可移动容器及可移动区域(二):如何实现侧滑删除功能
│         │   ├─130|微信支付:确认支付订单状态
│         │   ├─131|微信支付:在云服务器上部署测试代码与配置nginx
│         │   ├─132|微信支付:测试支付确认接口是否可用
│         │   ├─133|确认下单页:清空已经下单的购物车商品
│         │   ├─134|微信支付:实现退款接口
│         │   ├─135|微信支付:尝试使用weixin-pay调用统一下单接口准备支付参数
│         │   ├─136|微信支付:解决weixin-pay退款失败的问题
│         │   ├─137|小微商户:申请帐号与支付测试
│         │   ├─138|小微商户:试用小微商户
│         │   ├─139|小微商户:实现下单接口
│         │   ├─14-scroll-view介绍:在小程序中如何实现滚动锚定?
│         │   ├─140|小微商户:在手机上测试支付功能
│         │   ├─141|小微商户:解决商户ID不能为空等问题
│         │   ├─142|小微商户:实现支付结果回调的接口
│         │   ├─143|小微商户:实现退款接口
│         │   ├─144|公众号:公众号开发接入配置
│         │   ├─145|公众号:接管公众号消息并作应答
│         │   ├─146|微信认证:关于小程序公众号开放平台等帐号认证
│         │   ├─147|服务号:网页授权的两种方式
│         │   ├─148|云数据库:将线下数据库同步至线上
│         │   ├─149|网页授权:通过测试号拉取用户信息
│         │   ├─15-scroll-view介绍:如果渲染一个滚动的长列表?
│         │   ├─150|网页授权:在微信开发者工具中测试网页授权代码
│         │   ├─151|测试:使用内网穿透服务ngrok
│         │   ├─152|微页面:如何实现JS-SDK的初始化
│         │   ├─153|云开发:创建第一个小程序云开发项目
│         │   ├─154|云开发:创建第一个云开发环境
│         │   ├─155|云开发:创建第一个云函数login
│         │   ├─156|云函数:如何获取用户的openid
│         │   ├─157|微信支付:基于云函数实现微信支付
│         │   ├─158|云数据库:如何创建集合并实现数据的基本操作
│         │   ├─159|云函数:如何在本地调试云函数
│         │   ├─16-滚动选择器(一):学习使用选择器组件
│         │   ├─160|云数据库:如何在小程序中操作云数据库
│         │   ├─161|TCB:小程序与公众号共享云环境
│         │   ├─162|云开发:使用实时数据监听实现多端信息同步
│         │   ├─163|云数据库与云存储:使用事务与图片的上传下载功能
│         │   ├─164|云环境:通过安装扩展应用快速实现功能
│         │   ├─165|广告:创建与展示Banner广告
│         │   ├─166|广告:创建与使用视频激励广告
│         │   ├─167|广告:使用封面广告与自定义模板广告
│         │   ├─168|插件开发:关于微信小程序插件的基础介绍
│         │   ├─169|插件开发:创建第一个插件项目
│         │   ├─17-滚动选择器(二):使用两种方式自定义实现省、市、区三级联动的选择器
│         │   ├─170|插件开发:实现“每日天气”第一个版本的功能
│         │   ├─171|插件开发:插件的提交审核与使用
│         │   ├─172|插件开发:实现第二个版本的功能“每日微报”
│         │   ├─173|插件开发:在插件中调用云函数
│         │   ├─174|订阅与通知:实现消息订阅功能
│         │   ├─175|插件开发:转发插件内页面
│         │   ├─176|在小程序中使用Vue:使用kbone创建同构项目
│         │   ├─177|Webpack构建小程序项目的示例:支持原生混合开发与云开发
│         │   ├─178|课程答疑:如何使用源码
│         │   ├─179|课程回顾及结束语
│         │   ├─18-滑动选择器表单组件:如何基于wxs自定义一个竖向的slider?
│         │   ├─19-页面链接组件:如何自定义一个导航栏?
│         │   ├─20-image媒体组件(上):如何实现图片的懒加载?
│         │   ├─21-image媒体组件(下):开发中经常遇到的问题?
│         │   ├─22-如何实现直播间功能?(一):了解live-pusher、live-player组件的主要属性及使用限制
│         │   ├─23-如何实现直播间功能?(二):如何开启、使用腾讯云的云直播功能
│         │   ├─24-如何实现直播间功能?(三):安装与使用ffmepg,及使用ffmpeg进行推拉流验证
│         │   ├─25-如何实现直播间功能?(四):使用live-pusher、live-player组件在小程序中实现直播功能
│         │   ├─26-如何实现直播间功能?(五):同层渲染
│         │   ├─27-如何实现直播间功能?(六):live-pusher、live-player组件在开发中的常见问题
│         │   ├─28-web-view(一):了解session、cookie等相关基本概念
│         │   ├─29-web-view(二):了解常见的四种鉴权方式
│         │   ├─30-web-view(三):如何使用koa框架,及如何进行热加载?
│         │   ├─31-web-view(四):如何在服务器端实现cookie与sesson的生成?
│         │   ├─32-web-view(五):如何将session存储到服务器端,及如何实现token验证?
│         │   ├─33-web-view(六):基于koa中间件,实现微信一键登录的后端接口
│         │   ├─34-web-view(七):实现微信用户一键登录
│         │   ├─35-web-view(八):了解正确的微信登录姿势
│         │   ├─36-web-view(九):web-view组件在开发的常见问题讲解
│         │   ├─37-WebGL介绍(一):了解WebGL相关的基础概念
│         │   ├─38-WebGL介绍(二):如何在小程序中取到WebGL上下文环境对象
│         │   ├─39-WebGL介绍(三):了解WebGL的世界坐标系
│         │   ├─40-WebGL介绍(四):重新认识右手坐标系及如何编写顶点着色器代码
│         │   ├─41-WebGL介绍(五):学习片断着色器编写,了解变量修饰变型uniform与attribute
│         │   ├─42-WebGL介绍(六):了解在WebGL中裁剪空间是如何裁剪出来的
│         │   ├─43-WebGL介绍(七):了解着色器变量值的绑定及三种三角形绘制模式之间的差异
│         │   ├─44-WebGL介绍(八):在着色器中使用共享变量,绘制一个颜色渐变的正方形
│         │   ├─45-WebGL介绍(九):完成动画
│         │   ├─46-WebGL介绍(十):绘制一个旋转的立方体
│         │   ├─47-WebGL介绍(十一):在3D绘制中使用纹理材质
│         │   ├─48-WebGL介绍(十二):如何创建相机、场景及光源
│         │   ├─49-WebGL介绍(十三):创建加载器、渲染器与控制器,完成3D模型文件的加载与展示
│         │   ├─50-网络接口简介(一):如何使用wx
│         │   ├─51-网络接口简介(二):将登录代码模块化封装
│         │   ├─52-网络接口简介(三):Promise介绍及6个常用方法
│         │   ├─53-网络接口简介(四):Promise三个方法any、all与race的使用介绍
│         │   ├─54-网络接口简介(五):基于Promise+await、async关键字改写登录模块
│         │   ├─55-网络接口简介(六):关于Page页面隐藏代码执行及Promise对象的catch处理的补充
│         │   ├─56-网络接口简介(七):学习EventChannel对象
│         │   ├─57-网络接口简介(八):观察者模式介绍及Event模块实现
│         │   ├─58-网络接口简介(九):扩展wxp模块的request3方法,实现用户登录的自动融合
│         │   ├─59-tabBar组件(一):系统默认的tabBar组件如何开启及使用
│         │   ├─60-tabBar组件(二):基于系统提供的自定义方式,实现一个tabBar组件
│         │   ├─61-tabBar组件(三):通过自定义组件扩展的方式,给任意组件添加通用方法
│         │   ├─62-开放接口(一):如何对Page进行全局扩展
│         │   ├─63-开放接口(二):优化前后端登录代码,解决后端解密错误
│         │   ├─64-设备能力:如何实现扫码连WiFi功能?
│         │   ├─65-前期留言集中答疑(一)
│         │   ├─66-前期留言集中答疑(二)
│         │   ├─67-搭建UI框架(一):如何基于Vant快速创建小程序页面?
│         │   ├─68-搭建UI框架(二):使用art-template模板引擎
│         │   ├─69-搭建UI框架(三):规整后端koa项目结构
│         │   ├─70-用户登录(一):创建与使用数据库
│         │   ├─71-用户登录(二):创建sessionKeymodel并完善用户登录
│         │   ├─72-商品列表页:创建分类模型
│         │   ├─73-商品列表页:使用存储过程初始化分类表
│         │   ├─74-商品列表页:创建商品表、品牌表
│         │   ├─75-商品列表页:创建商品描述表
│         │   ├─76-商品列表页:创建商品SKU表
│         │   ├─77-商品列表页:初始化SKU表数据
│         │   ├─78-商品列表页:创建商品列表接口
│         │   ├─79-商品列表页:关联查询
│         │   ├─80-商品列表页:实现vtabs侧边栏导航
│         │   ├─81-商品列表页:调用商品分类分页列表接口
│         │   ├─82-商品列表页:实现延迟加载
│         │   ├─83-商品列表页:修改vtabs组件算法
│         │   ├─84-商品列表页:实现分页加载
│         │   ├─85-商品列表页:使用骨架屏
│         │   ├─86-商品详情页:创建商品详情接口
│         │   ├─87-商品详情页:使用EventChannel
│         │   ├─88-商品详情页:显示标题与价格
│         │   ├─89-商品详情页:使用Sketch
│         │   ├─90-商品详情页:使用蓝湖
│         │   ├─91-商品详情页:实现选择商品规格的UI
│         │   ├─92-商品详情页:在底部添加商品导航组件
│         │   ├─93-商品详情页:实现商品规格接口
│         │   ├─94-商品详情页:展示商品规格以供选择
│         │   ├─95-购物车页面:整合用户自动登录功能
│         │   ├─96-购物车页面:添加tabBar导航
│         │   ├─97-购物车页面:构建商品列表
│         │   ├─98-购物车页面:实现编辑模式与正常模式切换
│         │   └─99-购物车页面:创建购物车模型
│         ├─33-TensorFlow2项目进阶实战
│         │   ├─01-课程介绍:AI进阶需要落地实战
│         │   ├─02-内容综述:如何快速?效学习AI与TensorFlow2
│         │   ├─03-TensorFlow2新特性
│         │   ├─04-TensorFlow2核心模块
│         │   ├─05-TensorFlow2vsTensorFlow1
│         │   ├─06-TensorFlow2落地应?
│         │   ├─07-TensorFlow2开发环境搭建
│         │   ├─08-TensorFlow2数据导入与使?
│         │   ├─09-使用tf
│         │   ├─10-使用tf
│         │   ├─11-使用tf
│         │   ├─12-FashionMNIST数据集介绍
│         │   ├─13-使用TensorFlow2训练分类网络
│         │   ├─14-行业背景:AI新零售是什么
│         │   ├─15-用户需求:线下门店业绩如何提升?
│         │   ├─16-长期?标:货架数字化与业务智能化
│         │   ├─17-短期目标:自动化陈列审核和促销管理
│         │   ├─18-方案设计:基于深度学习的检测-分类的AI流水线
│         │   ├─19-方案交付:支持在线识别和API调用的AISaaS
│         │   ├─20-基础:目标检测问题定义与说明
│         │   ├─21-基础:深度学习在目标检测中的应用(1)
│         │   ├─21-基础:深度学习在目标检测中的应用
│         │   ├─22-理论:R-CNN系列二阶段模型综述
│         │   ├─23-理论:YOLO系列一阶段模型概述(1)
│         │   ├─23-理论:YOLO系列一阶段模型概述
│         │   ├─24-应用:RetinaNet与FacolLoss带来了什么
│         │   ├─25-应用:检测数据标注方法与流程
│         │   ├─26-应用:划分检测训练集与测试集
│         │   ├─27-应用:生成CSV格式数据集与标注
│         │   ├─28-应用:使用TensorFlow2训练RetinaNet
│         │   ├─29-应用:使用RetinaNet检测货架商品
│         │   ├─30-扩展:目标检测常用数据集综述
│         │   ├─31-扩展:目标检测更多应用场景介绍
│         │   ├─32-基础:图像分类问题定义与说明
│         │   ├─33-基础:越来越深的图像分类网络
│         │   ├─34-应?:检测SKU抠图与分类标注流程
│         │   ├─35-应?:分类训练集与验证集划分
│         │   ├─36-应?:使?TensorFlow2训练ResNet
│         │   ├─37-应用:使用ResNet识别货架商品
│         │   ├─38-扩展:图像分类常用数据集综述
│         │   ├─39-扩展:图像分类更多应?场景介绍
│         │   ├─40-串联AI流程理论:商品检测与商品识别
│         │   ├─41-串联AI流程实战:商品检测与商品识别
│         │   ├─42-展现AI效果理论:使用OpenCV可视化识别结果
│         │   ├─43-展现AI效果实战:使用OpenCV可视化识别结果
│         │   ├─44-搭建AISaaS理论:Web框架选型
│         │   ├─45-搭建AISaaS理论:数据库ORM选型
│         │   ├─46-搭建AISaaS理论:10分钟快速开发AISaaS
│         │   ├─47-搭建AISaaS实战:10分钟快速开发AISaaS
│         │   ├─48-交付AISaaS:10分钟快速掌握容器部署
│         │   ├─49-交付AISaaS:部署和测试AISaaS
│         │   ├─50-使?TensorFlow2实现图像数据增强
│         │   ├─51-使?TensorFlow2实现分布式训练
│         │   ├─52-使?TensorFlowHub迁移学习
│         │   ├─53-使?@tf
│         │   ├─54-使?TensorFlowServing部署云端服务
│         │   ├─55-使?TensorFlowLite实现边缘智能
│         │   └─56-结束语
│         ├─34-分布式系统案例课
│         │   ├─03-需求收集和总体架构设计
│         │   ├─04-存储设计
│         │   ├─05-计数服务设计(上)
│         │   ├─06-计数服务设计(下)
│         │   ├─07-查询服务设计
│         │   ├─08-技术栈选型
│         │   ├─09-进一步考量和总结
│         │   ├─10-PMQ2
│         │   ├─10-PMQ2
│         │   ├─11-PMQ2
│         │   ├─12-PMQ2
│         │   ├─13-PMQ2
│         │   ├─14-PMQ3
│         │   ├─15-Kafka的动态重平衡是如何工作的?(上)
│         │   ├─16-Kafka的动态重平衡是如何工作的?(下)
│         │   ├─17-消息队列设计和治理最佳实践
│         │   ├─18-第四章目录和大纲
│         │   ├─19-微服务的四大技术难题是什么?
│         │   ├─20-如何解决微服务的数据一致性分发问题?
│         │   ├─21-如何解决微服务的数据聚合Join问题?
│         │   ├─22-如何解决微服务的分布式事务问题?(上)
│         │   ├─23-如何解决微服务的分布式事务问题?(下)
│         │   ├─24-阿里分布式事务中间件Seata解析
│         │   ├─25-Uber微服务编排引擎Cadence解析
│         │   ├─26-如何理解UberCadence的架构设计?
│         │   ├─27-如何实现遗留系统的解耦拆分?
│         │   ├─28-拍拍贷系统拆分项目案例
│         │   ├─29-CQRS-CDC技术在Netflix的实践
│         │   ├─30-第四章总结
│         │   ├─31-SessionServer项目背景
│         │   ├─32-总体架构设计
│         │   ├─33-如何设计一个高性能基于内存的LRUCache?
│         │   ├─34-如何设计一个高性能大容量持久化的ConcurrentHashmap?
│         │   ├─35-设计评估和总结
│         │   ├─36-SaaS项目healthchecks
│         │   ├─37-SaaS项目healthchecks
│         │   ├─38-如何设计一个轻量级的基于DB的延迟任务队列?
│         │   ├─39-如何设计一把轻量级的锁?
│         │   ├─40-如何设计一个分布式限流系统?
│         │   ├─41-如何设计一个分布式TopK系统实现实时防爬虫?
│         │   ├─42-第七章目标和大纲
│         │   ├─43-为什么说ServiceMesh是微服务的未来(上)
│         │   ├─44-为什么说ServiceMesh是微服务的未来(下)
│         │   ├─45-解析EnvoyProxy(上)
│         │   ├─46-解析EnvoyProxy(下)
│         │   ├─47-Envoy在Lyft的实践
│         │   ├─48-解析Istio
│         │   ├─49-K8sIngress、IstioGateway和APIGateway该如何选择?(上)
│         │   ├─50-K8sIngress、IstioGateway和APIGateway该如何选择?(下)
│         │   ├─51-SpringCloud、K8s和Istio该如何集成?
│         │   ├─52-第八章目标和大纲
│         │   ├─53-拍拍贷案例:大型网站架构是如何演进的?
│         │   ├─54-最小可用架构:MinimumViableArchitecture(上)
│         │   ├─55-最小可用架构:MinimumViableArchitecture(下)
│         │   ├─56-如何构建基于OAuth2-JWT的微服务架构?(上)
│         │   ├─57-如何构建基于OAuth2-JWT的微服务架构?(下)
│         │   ├─58-拍拍贷案例:如何实现数据中心机房的迁移?
│         │   ├─59-携程-Netflix案例:如何实现同城双活和异地多活?
│         │   ├─60-第九章大纲
│         │   ├─61-学习开源项目的6个层次和8种方法(上)
│         │   ├─62-学习开源项目的6个层次和8种方法(中)
│         │   ├─63-学习开源项目的6个层次和8种方法(下)
│         │   ├─64-百万年薪架构师是如何炼成的?
│         │   ├─65-解读一份大厂的研发岗职级体系
│         │   └─66-结课测试&结束语
│         ├─35-Web安全攻防实战
│         │   ├─03-Web安全前端基础:HTML
│         │   ├─04-Web安全前端基础:CSS、JavaScript
│         │   ├─05-探究网站的运作原理:用Python写一个简单的WebApp
│         │   ├─06-Web框架的运作原理:用Django快速搭建一个网站
│         │   ├─07-HTTP协议是怎么工作的?
│         │   ├─08-常见的Web安全漏洞都有哪些?
│         │   ├─09-Web渗透工具入门:BurpSuite、cURL、Postman
│         │   ├─10-Web渗透插件入门:Wappalyzer、HackBar
│         │   ├─100-如何做好用户隐私保护?——开发者视角
│         │   ├─101-如何做好用户隐私保护?——用户体验及产品设计视角
│         │   ├─102-网络钓鱼防范:钓鱼网站、邮件钓鱼的防控
│         │   ├─103-怎样建立安全开发流程(SDL)?
│         │   ├─104-漏洞修补应当遵循怎样的流程?
│         │   ├─105-如何建立安全监控规范?
│         │   ├─106-结束语
│         │   ├─11-文件上传漏洞:漏洞原理&一句话木马
│         │   ├─12-文件上传漏洞初阶:后缀名绕过&原理探究
│         │   ├─13-文件上传漏洞中阶:前端验证绕过、
│         │   ├─14-文件上传漏洞高阶:文件流绕过、字符串截断绕过、文件头检测绕过
│         │   ├─15-文件上传漏洞:初探源码审计
│         │   ├─16-文件上传漏洞:初探Fuzz
│         │   ├─17-Web安全后端基础:数据库的基本概念
│         │   ├─18-Web安全后端基础:极简MySQL入门
│         │   ├─19-SQL注入漏洞的原理及其危害
│         │   ├─20-从协议视角看注入:GET型注入攻击及防御
│         │   ├─21-从协议视角看注入:POST型注入攻击及防御
│         │   ├─22-SQL注入实战:判断SQL注入点&防御方式
│         │   ├─23-宏观视角看注入:5种不同的SQL注入类型
│         │   ├─24-SQL注入实战:利用时间盲注绕过无报错无回显场景
│         │   ├─25-SQL注入实战:隐蔽的HTTP头盲注
│         │   ├─26-SQL注入实战:利用数据库的bug进行报错注入
│         │   ├─27-SQL注入实战:实施报错注入攻击
│         │   ├─28-SQL注入实战:威力巨大的堆叠注入
│         │   ├─29-SQL注入实战:游离在常规分类外的OOB注入
│         │   ├─30-SQL注入实战:浅谈OOB注入原理
│         │   ├─31-SQL注入实战:OOB注入之环境准备
│         │   ├─32-SQL注入实战:OOB注入关键函数解析之loadfile
│         │   ├─33-SQL注入实战:实施OOB注入攻击
│         │   ├─34-SQL注入实战:如何绕过WAF之混淆注入原理
│         │   ├─35-SQL注入实战:如何绕过WAF之union、where、limit过滤绕过
│         │   ├─36-SQL注入实战:如何绕过WAF之groupby、select、单引号、hex、unhex、substr绕过
│         │   ├─37-SQL注入实战:如何绕过WAF之空格、等号、双写、双重编码绕过
│         │   ├─38-SQL注入实战:如何绕过WAF之数据库底层编码注入攻击
│         │   ├─39-SQL注入实战:如何绕过WAF之二次注入攻击
│         │   ├─40-SQL注入实战:激动人心的命令执行
│         │   ├─41-SQL注入实战:webshell类型命令执行与交互
│         │   ├─42-SQL注入实战:UDF类型命令执行与交互
│         │   ├─43-SQL注入实战:玩转Linux权限管理之用户和组
│         │   ├─44-SQL注入实战:玩转Linux权限管理之文件权限
│         │   ├─45-SQL注入实战:自动化注入攻击之了解sqlmap
│         │   ├─46-SQL注入实战:玩转sqlmap之携带cookie
│         │   ├─47-SQL注入实战:玩转sqlmap之通过level设定检测深度
│         │   ├─48-SQL注入实战:玩转sqlmap之读写server文件
│         │   ├─49-SQL注入实战:玩转sqlmap之实战脱库
│         │   ├─50-SQL注入实战:自动化注入攻击之FuzzDB+Burp组合拳
│         │   ├─51-SQL注入实战:欣赏优秀的Web后门之核心功能
│         │   ├─52-SQL注入实战:欣赏优秀的Web后门之免杀
│         │   ├─53-SQL注入实战:面向NoSQL数据库的注入攻击
│         │   ├─54-SQL注入实战:浅谈SQL注入防御方式及原理之预编译
│         │   ├─55-SQL注入实战:浅谈SQL注入防御方式及原理之过滤
│         │   ├─56-加密算法与随机数
│         │   ├─57-Spring框架安全攻击和防御-什么是框架级漏洞
│         │   ├─58-Spring框架安全攻击和防御-CVE-2017-8046利用
│         │   ├─59-Spring框架安全攻击和防御-CVE-2017-8046分析
│         │   ├─60-反射型XSS漏洞原理、案例及防御措施
│         │   ├─61-存储型XSS漏洞原理、案例及防御措施
│         │   ├─62-DOM型XSS漏洞原理、案例及防御措施
│         │   ├─63-伪协议与编码绕过
│         │   ├─64-XSS蠕虫实战案例分析
│         │   ├─65-XSS混淆编码
│         │   ├─66-CSRF跨站请求伪造漏洞原理、攻击演练
│         │   ├─67-同源策略及跨源访问
│         │   ├─68-XSS及CSRF综合利用案例分析:点击劫持
│         │   ├─69-HTML5新标签及相应的安全分析(一)
│         │   ├─70-HTML5新标签及相应的安全分析(二)
│         │   ├─71-XSS之模板注入-初探Node
│         │   ├─72-XSS之模板注入-模板引擎与XSS的关系
│         │   ├─73-XSS之模板注入-经典注入手法
│         │   ├─74-Javascript与RCE(远程代码执行)
│         │   ├─75-BlackHat议题追踪:XSS的危害不够大?-构造攻击链
│         │   ├─76-BlackHat议题追踪:XSS的危害不够大?-CSRF到XSS
│         │   ├─77-BlackHat议题追踪:XSS的危害不够大?-XSS到RCE
│         │   ├─78-SSRF服务端请求伪造
│         │   ├─79-Apache安全专题-配置错误诱发的漏洞
│         │   ├─80-Apache安全专题-CVE-2017-15715
│         │   ├─81-Nginx安全专题-CRLF注入攻击
│         │   ├─82-Nginx安全专题-CVE-2017-7529
│         │   ├─83-Tomcat安全专题
│         │   ├─84-PHP安全专题:了解PHP环境
│         │   ├─85-PHP安全专题:远程(本地)文件包含
│         │   ├─86-PHP安全专题:学习黑魔法函数
│         │   ├─87-PHP安全专题:序列化及反序列化漏洞
│         │   ├─88-PHP安全专题:浅谈PHP安全编码
│         │   ├─89-JavaWeb安全专题:JavaWeb基础
│         │   ├─90-JavaWeb安全专题:浅谈代码审计思路
│         │   ├─91-Node
│         │   ├─92-Node
│         │   ├─93-Node
│         │   ├─94-Node
│         │   ├─95-DDoS之协议层拒绝服务攻击:SYN泛洪、UDP泛洪、ICMP泛洪
│         │   ├─96-DDoS之应用层拒绝服务攻击:Slowloris攻击、HTTPPostDoS
│         │   ├─97-如何做好认证与会话管理?
│         │   ├─98-访问控制:水平权限&垂直权限
│         │   └─99-互联网公司运营安全、业务安全、业务逻辑安全策略规范
│         ├─36-Selenium自动化测试实战
│         │   ├─03-聊聊Web自动化测试:黑盒、白盒、α测试、β测试、冒烟测试、回归测试
│         │   ├─04-Selenium三剑客:WebDriver、IDE、Grid一网打尽
│         │   ├─05-Selenium开发环境搭建
│         │   ├─06-下载安装浏览器驱动:教你解决最麻烦的版本匹配问题
│         │   ├─07-第一个Selenium测试:Selenium测试流程、源码分析
│         │   ├─08-实现元素定位:掌握Selenium八大定位方法
│         │   ├─09-通过打车生活案例,深入剖析WebDriver运行原理
│         │   ├─10-掌握WebDriver核心方法和属性的使用
│         │   ├─11-掌握WebElement核心方法和属性的使用
│         │   ├─12-form表单:熟练掌握form表单操作步骤
│         │   ├─13-掌握checkbox和radiobutton的定位技巧
│         │   ├─14-下拉列表:熟练使用Select类,来实现下拉列表定位
│         │   ├─15-弹框处理:掌握alert、confirm、prompt三种弹出的用法
│         │   ├─16-Selenium三种等待方式:剖析原理、用法和应用场景
│         │   ├─17-Selenium等待条件:掌握17种元素等待条件
│         │   ├─18-掌握鼠标单击、双击、右击,键盘输入、键盘组合键的应用
│         │   ├─19-熟练执行JavaScript的方法和技巧,掌握JavaScript操作滚动条
│         │   ├─20-Selenium屏幕截图:实现屏幕截屏、按照日期时间格式保存图片
│         │   ├─21-掌握frame、iframe定位,熟练frame的切入和切出
│         │   ├─22-下载安装SeleniumIDE:下载安装Chrome、Firefox插件IDE
│         │   ├─23-熟练SeleniumIDE菜单栏、工具类、命令窗口的使用
│         │   ├─24-SeleniumIDE实现录制和回放及脚本导出
│         │   ├─25-项目环境搭建:安装JDK、MySQL、Tomcat和测试系统
│         │   ├─26-需求分析和用例设计:深度挖掘需求,掌握测试用例设计范式
│         │   ├─27-项目架构设计:掌握分层设计思想,合理设计目录和包结构
│         │   ├─28-解决验证码问题-方案一:使用pytesseract和Pillow实现验证码识别
│         │   ├─29-解决验证码问题-方案二:通过第三方AI库识别验证码
│         │   ├─30-实现工具类:设计获得验证码、随机字符串生成、cookie操作工具类
│         │   ├─31-完成用户注册测试用例:解决验证码、等待弹框等复杂内容
│         │   ├─32-完成用户登录测试用例:实现登录成功和失败测试
│         │   ├─33-完成管理员登录测试用例:完成验证码正确和错误测试用例
│         │   ├─34-完成文章分类测试用例:解决测试用例依赖问题
│         │   ├─35-完成添加、删除文章测试用例
│         │   ├─36-unittest简介:测试用例、测试套件、测试运行器、测试加载器
│         │   ├─37-unittest中的方法:掌握各种setup、teardown和断言方法
│         │   ├─38-测试用例、测试套件和测试加载器:掌握加载测试用例的四种方法
│         │   ├─39-使用unittest重构测试用例:掌握使用unittest模块的方法和技巧
│         │   ├─40-为项目添加测试报告:使用第三方模块实现测试报告
│         │   ├─41-pytest框架简介:pytest安装、用例编写规则、执行用例
│         │   ├─42-pytest标记:查找测试策略、标记测试函数
│         │   ├─43-pytest参数化处理:使用参数化装饰器、解析列表、元组、字典等数据
│         │   ├─44-pytestFixture:使用fixture实现用例之间的调用
│         │   ├─45-pytestsetup和teardown
│         │   ├─46-pytestallure生成测试报告
│         │   ├─47-使用pytest重构项目:实现用例依赖、测试报告、数据参数化
│         │   ├─48-logging模块简介:日志的作用、等级和常用函数
│         │   ├─49-logging日志格式输出:日志发生的时间、文件、模块、行号等信息格式输出
│         │   ├─50-logging模块四大组件:Logger、Handler、Formatter、Filter的用法
│         │   ├─51-为项目添加日志:将日志应用到项目
│         │   ├─52-使用csv模块读取CSV文件,使用pytest参数化实现DDT
│         │   ├─53-使用json模块读取json文件,使用pytest参数化实现DDT
│         │   ├─54-使用xlrd模块读取excel文件,使用pytest参数化实现DDT
│         │   ├─55-Selenium读取数据库数据:将数据保存到数据库,实现数据驱动的测试
│         │   ├─56-SeleniumDDT:使用DDT模块实现数据驱动的测试
│         │   ├─57-使用DDT思想重构项目:使用数据库保存数据,将数据驱动思想应用到项目
│         │   ├─58-POM设计模式简介:理解页面-对象-模型设计模式,实现代码的松耦合
│         │   ├─59-设计BasePage类:设计基类,提高项目的代码重用性
│         │   ├─60-设计项目页面对应的PO类:使用POM设计模式设计PO类
│         │   ├─61-设计项目测试用例:将POM设计模式应用到项目
│         │   ├─62-SeleniumGrid下载安装:配置Java运行环境,下载安装SeleniumGrid
│         │   ├─63-Selenium注册node节点
│         │   ├─64-使用Selenium执行远程测试
│         │   ├─65-Jenkins环境搭建:下载安装Jenkins
│         │   ├─66-在Jenkins中运行项目
│         │   ├─67-邮件通知:实现邮件通知功能
│         │   ├─68-定时运行项目,实现真正的自动化测试
│         │   └─69-结课测试&结束语
│         ├─37-Flink核心技术与实战
│         │   ├─03-流处理技术概览
│         │   ├─04-Flink发展历史与应用场景
│         │   ├─05-Flink核心特性
│         │   ├─06-Flink集群架构
│         │   ├─07-Flink集群运行模式
│         │   ├─08-Flink集群资源管理器支持
│         │   ├─09-Standalone原理讲解与实操演示
│         │   ├─10-FlinkOnYarn部署讲解
│         │   ├─11-FlinkOnYarn实操演示
│         │   ├─12-FlinkOnKubernetes部署讲解
│         │   ├─13-FlinkOnKubernetes实操:Session模式
│         │   ├─14-FlinkOnKubernetes实操:Per-job模式
│         │   ├─15-FlinkOnKubernetesNative部署讲解
│         │   ├─16-FlinkOnKubernetesNative实操演示
│         │   ├─17-Flink高可用配置原理讲解
│         │   ├─18-Flink高可用配置实操演示
│         │   ├─19-分布式流处理模型
│         │   ├─20-DataStreamAPI实践原理
│         │   ├─21-Flink时间概念
│         │   ├─22-Watermark实践原理
│         │   ├─23-Watermark与Window的关系
│         │   ├─24-WatermarkGenerator
│         │   ├─25-Windows窗口计算
│         │   ├─26-WindowAssigner
│         │   ├─27-WindowTrigger
│         │   ├─28-WindowEvictors
│         │   ├─29-WindowFunction
│         │   ├─30-Windows多流合并
│         │   ├─31-ProcessFunction应用
│         │   ├─32-SideOutput旁路输出
│         │   ├─33-AsynchronousI-O异步操作
│         │   ├─34-Pipeline与StreamGraph转换
│         │   ├─35-Flink类型系统
│         │   ├─36-自定义SourceFunction
│         │   ├─37-项目实战:基于DataStreamAPI实现PV,UV统计
│         │   ├─38-有状态计算概念
│         │   ├─39-状态类型及应用
│         │   ├─40-KeyedState介绍与使用
│         │   ├─41-OperatorState介绍与使用
│         │   ├─42-BroadcastState介绍与使用
│         │   ├─43-Checkpoint实现原理
│         │   ├─44-Savepoint与Checkpoint
│         │   ├─45-StateBackends状态管理器
│         │   ├─46-StateSchemaEvolution
│         │   ├─47-State序列化与反序列化
│         │   ├─48-QueryableState介绍与使用
│         │   ├─49|项目实战:实时交易反欺诈项目介绍
│         │   ├─50|项目实战:实时交易反欺诈项目演示
│         │   ├─51|FlinkTableAPI-SQL介绍与使用
│         │   ├─52|TableAPI-SQL核心概念
│         │   ├─53|DataStream&DataSet与Table相互转换
│         │   ├─54|TableConnector介绍与使用
│         │   ├─55|QueryingDynamicTables
│         │   ├─56|TimeStamp与Watermark时间属性定义
│         │   ├─57|QueryWithTemporalCondition
│         │   ├─58|JoinWithDynamicTable
│         │   ├─59|JoinWithTemporalFunction
│         │   ├─60|JoinWithTemporalTables
│         │   ├─61|Catalog原理与使用
│         │   ├─62|ApacheHive集成
│         │   ├─63|SQLClient介绍与使用
│         │   ├─64|FlinkSQLTable数据类型
│         │   ├─65|自定义Function
│         │   ├─66|TableConnector使用
│         │   ├─67|自定义Connector
│         │   ├─68|newtablesource&tablesinkapi
│         │   ├─69|项目实战:基于FlinkSQL实现Top10商品统计
│         │   ├─70|Runtime整体架构
│         │   ├─71|FlinkClient实现原理
│         │   ├─72|ResourceManager资源管理
│         │   ├─73|Dispatcher任务分发器
│         │   ├─74|JobGraph提交与运行(上)
│         │   ├─75|JobGraph提交与运行(下)
│         │   ├─76|Task执行与调度
│         │   ├─77|Task重启和容错策略
│         │   ├─78|集群组件RPC通信机制
│         │   ├─79|NetworkStatck实现原理
│         │   ├─80|Flink内存管理
│         │   ├─81|Metric指标分类与采集
│         │   ├─82|FlinkRESTAPI介绍与使用
│         │   ├─83|Checkpoint监控与调优
│         │   ├─84|反压监控与原理
│         │   ├─85|Flink内存配置与调优
│         │   ├─86|PyFlink实践与应用
│         │   ├─87|Flink复杂事件处理:Complexeventprocess(1)
│         │   ├─87|Flink复杂事件处理:Complexeventprocess
│         │   ├─88|Alink机器学习框架介绍与使用
│         │   ├─89|StatefulFunction介绍与使用
│         │   ├─90|实时推荐系统项目设计与实现
│         │   └─91|结束语
│         ├─38-张汉东的Rust实战课
│         │   ├─03-Rust语言学习观
│         │   ├─04-Rust语言概览
│         │   ├─05-语法面面观:词法结构
│         │   ├─06-语法面面观:面向表达式(上)
│         │   ├─07-语法面面观:面向表达式(中)
│         │   ├─08-语法面面观:面向表达式(下)
│         │   ├─09-语法面面观:数据类型(上)
│         │   ├─10-语法面面观:数据类型(下)
│         │   ├─100-Rust异步编程之编写异步echo服务(下)
│         │   ├─101-Rust异步编程之深入理解异步Task模型
│         │   ├─102-Rust异步编程之Waker实现
│         │   ├─103-Rust异步编程之Futures库源码导读(一)
│         │   ├─104-Rust异步编程之Futures库源码导读(二)
│         │   ├─105-Rust异步编程之Futures库源码导读(三)
│         │   ├─106-Rust异步编程之Futures库源码导读(四)
│         │   ├─107-Rust异步编程之async-await语法背后
│         │   ├─108-Rust异步编程之生成器(上)
│         │   ├─109-Rust异步编程之生成器(下)
│         │   ├─11-语法面面观:函数与闭包(上)
│         │   ├─110-Rust异步编程之Pin与Unpin(一)
│         │   ├─111-Rust异步编程之Pin与Unpin(二)
│         │   ├─112-Rust异步编程之Pin与Unpin(三)
│         │   ├─113-Rust异步编程之Pin与Unpin(四)
│         │   ├─114-Rust异步编程之no-std异步生态介绍
│         │   ├─115-Rust异步编程之实现异步缓存(上)
│         │   ├─116-Rust异步编程之实现异步缓存(下)
│         │   ├─117-Rust异步编程之异步运行时生态介绍
│         │   ├─118-Rust异步编程之smol运行时(一)
│         │   ├─119-Rust异步编程之smol运行时(二)
│         │   ├─12-语法面面观:函数与闭包(中)
│         │   ├─120-Rust异步编程之smol运行时(三)
│         │   ├─121-Rust异步编程之smol运行时(四)
│         │   ├─122-Rust异步编程之smol运行时(五)
│         │   ├─123-Rust异步编程之smol运行时(六)
│         │   ├─124-Rust异步编程之smol运行时(七)
│         │   ├─125-Rust异步编程之smol运行时(八)
│         │   ├─126-Rust异步编程之smol运行时(九)
│         │   ├─127-Rust异步编程之smol运行时(十)
│         │   ├─128-Rust异步编程之async-std运行时(一)
│         │   ├─129-Rust异步编程之async-std运行时(二)
│         │   ├─13-语法面面观:函数与闭包(下)
│         │   ├─130-Rust异步编程之tokio运行时(一)
│         │   ├─131-Rust异步编程之tokio运行时(二)
│         │   ├─132-Rust异步编程之tokio运行时(三)
│         │   ├─133-Rust异步编程之tokio运行时(四)
│         │   ├─134-Rust异步编程之tokio运行时(五)
│         │   ├─135-Rust异步编程之tokio运行时(六)
│         │   ├─136-Rust异步编程之tokio运行时(七)
│         │   ├─137-Rust异步编程之tokio运行时(八)
│         │   ├─138-Rust异步编程之tokio运行时(九)
│         │   ├─139-Rust异步编程之tokio运行时(十)
│         │   ├─14-语法面面观:模式匹配
│         │   ├─140-Rust异步Web框架开篇
│         │   ├─141-Rust异步Web框架之Rocket(一)
│         │   ├─142-Rust异步Web框架之Rocket(二)
│         │   ├─143-Rust异步Web框架之Rocket(三)
│         │   ├─144-Rust异步Web框架之tide
│         │   ├─145-Rust异步Web框架之actix-web(一)
│         │   ├─146-Rust异步Web框架之actix-web(二)
│         │   ├─147-Rust异步Web框架之gotham-and-thruster
│         │   ├─148-Rust异步Web框架之tower(一)
│         │   ├─149-Rust异步Web框架之tower(二)
│         │   ├─15-语法面面观:智能指针(上)
│         │   ├─150-Rust异步Web框架之hyper(一)
│         │   ├─151-Rust异步Web框架之hyper(二)
│         │   ├─152-Rust异步Web框架之hyper(三)
│         │   ├─153-Rust异步Web框架之warp
│         │   ├─154-Web框架实战之http库介绍
│         │   ├─155-Web框架实战之了解hyper-towerhttp-http-body之间的层次关系
│         │   ├─156-Web框架实战之创建初始项目
│         │   ├─157-Web框架实战之设计框架接口
│         │   ├─158-Web框架实战之实现路由结构
│         │   ├─159-Web框架实战之实现路由结构(二)
│         │   ├─16-语法面面观:智能指针(下)
│         │   ├─160-Web框架实战之实现路由结构(三)
│         │   ├─161-Web框架实战之实现路由结构(四)
│         │   ├─162-Web框架实战之实现路由结构(五)
│         │   ├─163-Web框架实战之实现Handler(一)
│         │   ├─164-Web框架实战之实现Handler(二)
│         │   ├─165-Web框架实战之实现Handler(三)
│         │   ├─166-Web框架实战之实现Handler(四)
│         │   ├─167-Web框架实战之添加tracing打印
│         │   ├─168-Web框架实战之实现提取器(一)
│         │   ├─169-Web框架实战之实现提取器(二)
│         │   ├─17-语法面面观:字符与字符串(上)
│         │   ├─170-Web框架实战之实现提取器(三)
│         │   ├─171-Web框架实战之实现提取器和中间件(四)
│         │   ├─172-Web框架实战之错误处理支持
│         │   ├─173-课程完结回顾
│         │   ├─18-语法面面观:字符与字符串(下)
│         │   ├─19-语法面面观:集合容器(上)
│         │   ├─20-语法面面观:集合容器(下)
│         │   ├─21-语法面面观:迭代器(上)
│         │   ├─22-语法面面观:迭代器(下)
│         │   ├─23-Rust语法面面观:模块
│         │   ├─24-Rust语法面面观:Cargo包管理器(上)
│         │   ├─25-Rust语法面面观:Cargo包管理器(下)
│         │   ├─26-语法面面观:实际项目的组织结构(上)
│         │   ├─27-语法面面观:实际项目的组织结构(下)
│         │   ├─28-语法面面观:定义自己的Crate(上)
│         │   ├─29-语法面面观:定义自己的Crate(中)
│         │   ├─30-语法面面观:定义自己的Crate(下)
│         │   ├─31-作业&第二章预告
│         │   ├─32-本章内容介绍:Rust语言架构
│         │   ├─33-所有权:内存管理基础知识
│         │   ├─34-所有权:安全管理之内存安全
│         │   ├─35-所有权:Copy语义和Copytrait
│         │   ├─36-所有权:深入理解Copy行为
│         │   ├─37-所有权:深入理解Move语义
│         │   ├─38-所有权:Move与析构
│         │   ├─39-借用检查:完全理解Scope和NLL
│         │   ├─40-借用检查:深入理解生命周期和生命周期参数
│         │   ├─41-借用检查:深入理解生命周期参数Earlybound
│         │   ├─42-借用检查:深入理解生命周期参数Tvs&T
│         │   ├─43-借用检查:深入理解生命周期参数:trait对象的生命周期参数
│         │   ├─44-借用检查:深入理解生命周期参数:高阶生命周期(上)
│         │   ├─45-借用检查:深入理解生命周期参数:高阶生命周期(中)
│         │   ├─46-借用检查:深入理解生命周期参数:高阶生命周期(下)
│         │   ├─47-线程与并发:理解线程与并发
│         │   ├─48-线程与并发:线程间安全共享数据
│         │   ├─49-线程与并发:构建「无悔」并发系统(一)
│         │   ├─50-线程与并发:构建「无悔」并发系统(二)
│         │   ├─51-线程与并发:构建「无悔」并发系统(三)
│         │   ├─52-线程与并发:构建「无悔」并发系统(四)
│         │   ├─53-线程与并发:无锁并发(上)
│         │   ├─54-线程与并发:无锁并发(中)
│         │   ├─55-线程与并发:无锁并发(下)
│         │   ├─56-trait与泛型:trait静态分发
│         │   ├─57-trait与泛型:认识trait对象
│         │   ├─58-trait与泛型:泛型和trait实现模板方法
│         │   ├─59-trait与泛型:trait对象本质
│         │   ├─60-trait与泛型:对象安全本质
│         │   ├─61-trait与泛型:利用Enum代替trait对象
│         │   ├─62-trait与泛型:trait覆盖实现的一个解决方案
│         │   ├─63-trait与泛型:trait对象与Sized
│         │   ├─64-trait与泛型:trait对象与BoxSelf
│         │   ├─65-编程范式:Rust语言编程范式讨论(上)
│         │   ├─66-编程范式:Rust语言编程范式讨论(下)
│         │   ├─67-Rust错误处理概要
│         │   ├─68-Rust错误处理:Option
│         │   ├─69-Rust错误处理:Result(上)
│         │   ├─70-Rust错误处理:Result(下)
│         │   ├─71-Rust错误处理:try
│         │   ├─72-Rust错误处理:Panic
│         │   ├─73-Rust元编程之反射
│         │   ├─74-Rust元编程之反射的两种应用思路
│         │   ├─75-Rust元编程之编译过程与宏展开概述
│         │   ├─76-Rust元编程之声明宏上
│         │   ├─77-Rust元编程之声明宏下
│         │   ├─78-Rust元编程之过程宏三件套介绍
│         │   ├─79-Rust元编程之过程宏之Bang宏实现原理
│         │   ├─80-Rust元编程之过程宏-使用配置文件动态生成代码
│         │   ├─81-Rust元编程之过程宏Derive宏案例
│         │   ├─82-Rust元编程之过程宏属性宏
│         │   ├─83-客观理解UnsafeRust
│         │   ├─84-UnsafeRust之安全抽象
│         │   ├─85-UnsafeRust安全抽象之Drop检查
│         │   ├─86-UnsafeRust安全抽象之型变
│         │   ├─87-UnsafeRust之其他
│         │   ├─88-Rust异步编程之IO模型
│         │   ├─89-Rust异步编程之epoll和iouring
│         │   ├─90-Rust异步编程之事件驱动编程模型
│         │   ├─91-Rust异步编程之epoll代码实践
│         │   ├─92-Rust异步编程之Reactor代码实践
│         │   ├─93-Rust异步编程之MiniMio代码实践
│         │   ├─94-Rust异步编程之Mio代码实践(上)
│         │   ├─95-Rust异步编程之Mio代码实践(下)
│         │   ├─96-Rust异步编程之异步编程模型概要
│         │   ├─97-Rust异步编程之Future和Futures-rs介绍
│         │   ├─98-Rust异步编程之编写异步echo服务(上)
│         │   ├─99-Rust异步编程之编写异步echo服务(中)
│         │   └─学习方法推荐与课程组织逻辑
│         ├─39-Django快速开发实战
│         │   ├─03-初识Django:Django适合做什么?
│         │   ├─04-用2个命令创建一个包含用户管理功能的后台
│         │   ├─05-开始Django之旅:10分钟如何创建一个可以管理职位的后台
│         │   ├─06-产品体验优化:快速迭代完善应用
│         │   ├─07-添加自定义页面:让匿名用户可以浏览职位列表页
│         │   ├─08-添加自定义页面:让匿名用户可以查看职位详情
│         │   ├─09-开始一个正式的产品:产品背景、迭代思维与MVP产品规划
│         │   ├─10-唯快不破:在产品中使用产品迭代思维
│         │   ├─11-数据建模&企业级数据库设计原则
│         │   ├─12-创建应用和模型,分组展示页面内容
│         │   ├─13-产品新需求:如何批量从Excel文件导入候选人数据(命令行工具)
│         │   ├─14-产品体验优化:候选人列表筛选和查询
│         │   ├─15-省去单独的账号管理工作:企业域账号集成
│         │   ├─16-批量设置面试官:面试官的导入、授权
│         │   ├─17-产品新需求:如何导出候选人的数据到CSV(增加自定义的数据操作菜单)
│         │   ├─18-如何记录日志方便排查问题
│         │   ├─19-生产环境的配置如何管理更安全:生产环境与开发环境配置分离
│         │   ├─20-产品细节完善
│         │   ├─21-定制更美观的主题
│         │   ├─22-定制面试官权限
│         │   ├─23-系统报错功能:钉钉群消息集成&通知一面面试官
│         │   ├─24-允许候选人注册登录-集成Registration
│         │   ├─25-候选人简历存储:创建简历Model
│         │   ├─26-让候选人可以在线投递简历
│         │   ├─27-使用Bootstrap来定制页面样式
│         │   ├─28-简历评估&安排一面面试官
│         │   ├─29-定制列表字段,查看简历详情
│         │   ├─30-遗留系统集成:为已有系统数据库生成管理后台
│         │   ├─31-Django的中间件(Middleware)
│         │   ├─32-创建请求日志、性能日志记录中间件
│         │   ├─33-在Django中支持多语言
│         │   ├─34-错误和异常日志上报:Sentry集成
│         │   ├─35-错误和异常日志上报:捕获异常上报到Sentry并发送钉钉群通知
│         │   ├─36-Django安全防护:防止XSS跨站脚本攻击
│         │   ├─37-Django安全防护:CSRF跨站请求伪造和SQL注入攻击
│         │   ├─38-DjangoRestFramework开放API
│         │   ├─39-在Django中使用缓存&Redis的使用
│         │   ├─40-Django与Celery集成:Celery的使用
│         │   ├─41-Django与Celery集成:异步任务
│         │   ├─42-Django与Celery集成:定时任务
│         │   ├─43-文件和图片上传功能
│         │   ├─44-实践中的问题:多数据库路由
│         │   ├─45-Django之美:3行代码支持大数据量的关联外键(autocompletefields)
│         │   ├─46-Django之美:20行代码实现只读站点ReadOnlyAdmin
│         │   ├─47-Django之美:10行代码自动注册所有Model到Admin管理后台
│         │   ├─48-Django之美:Signals信号及其使用场景
│         │   ├─49-Django之美:优雅的架构设计-CSR架构总结之Celery
│         │   ├─50-Django之美:优雅的架构设计-CSR架构总结之Sentry&DjangoRestFramework
│         │   ├─51-Django之美:Django的常用插件
│         │   ├─52-生产环境要注意哪些事项:生产环境的应用部署
│         │   ├─53-应用水平扩展:使用负载均衡
│         │   ├─54-让网站访问更快:使用CDN加速
│         │   ├─55-让故障在第一时间被感知到:接入监控告警
│         │   ├─56-生产环境中的安全:生产环境的安全设计
│         │   ├─57-生产环境中的安全:应用安全
│         │   ├─58-生产环境中的安全:架构安全
│         │   ├─59-生产环境中的安全:数据安全
│         │   ├─60-生产环境中的安全:密码安全与业务安全
│         │   ├─61-云环境中的部署:Docker容器的基础用法
│         │   ├─62-云环境中的部署:如何像分发集装箱一样发布应用
│         │   ├─63-云环境中的部署:开发环境的容器化&构建小镜像
│         │   ├─64-云环境中的部署:什么时候需要容器编排
│         │   ├─65-云环境中的部署:阿里云上搭建Kubernetes集群
│         │   ├─66-云环境中的部署:管理监控容器中的Django应用
│         │   ├─67-云环境中的部署:应用日志收集与查询
│         │   ├─68-云环境中的持续集成:CI-CD的工作流程
│         │   ├─69-云环境中的持续集成:CI-CD的基本使用
│         │   ├─70-快速迭代的价值与挑战
│         │   ├─71-使用OOPD方法识别产品核心功能
│         │   ├─72-如何做技术方案设计与工作拆解
│         │   ├─73-如何保证交付质量和持续迭代
│         │   ├─74-如何更高效地寻求帮助?
│         │   ├─75-一名Hacker的成长之路
│         │   └─76-结束语
│         ├─4-React实战进阶45讲
│         │   ├─01-课程介绍
│         │   ├─02-React出现的历史背景及特性介绍
│         │   ├─03-以组件方式考虑UI的构建
│         │   ├─04-JSX的本质-不是模板引擎,而是语法糖
│         │   ├─05-React组件的生命周期及其使用场景
│         │   ├─06-理解VirtualDOM及key属性的作用
│         │   ├─07-组件设计模式-高阶组件和函数作为子组件
│         │   ├─08-理解新的ContextAPI及其使用场景
│         │   ├─09-使用脚手架工具创建React项目
│         │   ├─10-打包和部署
│         │   ├─11-Redux(1)-前端为何需要状态管理库
│         │   ├─12-Redux(2)-深入理解Store、Action、Reducer
│         │   ├─13-Redux(3)-在React中使用Redux
│         │   ├─14-Redux(4)-理解异步Action、Redux中间件
│         │   ├─15-Redux(5)-如何组织Action和Reducer
│         │   ├─16-Redux(6)-理解不可变数据(Immutability)
│         │   ├─17-ReactRouter(1):路由不只是页面切换,更是代码组织方式
│         │   ├─18-ReactRouter(2):参数定义,嵌套路由的使用场景
│         │   ├─19-UI组件库对比和介绍:Ant
│         │   ├─20-使用Next
│         │   ├─21-使用Jest、Enzyme等工具进行单元测试
│         │   ├─22-常用开发调试工具:ESLint、Prettier、ReactDevTool、ReduxDevTool
│         │   ├─23-前端项目的理想架构:可维护、可扩展、可测试、易开发、易建构
│         │   ├─24-拆分复杂度(1):按领域模型(feature)组织代码,降低耦合度
│         │   ├─25-拆分复杂度(2):如何组织component、action和reducer
│         │   ├─26-拆分复杂度(3):如何组织ReactRouter的路由配置
│         │   ├─27-使用Rekit(1):创建项目,代码生成和重构
│         │   ├─28-使用Rekit(2):遵循最佳实践,保持代码一致性
│         │   ├─29-使用ReactRouter管理登录和授权
│         │   ├─30-实现表单(1):初始数据,提交和跳转
│         │   ├─31-实现表单(2):错误处理,动态表单元素,内容动态加载
│         │   ├─32-列表页(1):搜索,数据缓存和分页
│         │   ├─33-列表页(2):缓存更新,加载状态,错误处理
│         │   ├─34-页面数据需要来源多个请求的处理
│         │   ├─35-内容页的加载与缓存
│         │   ├─36-基于ReactRouter实现分步操作
│         │   ├─37-常见页面布局的实现
│         │   ├─38-使用ReactPortals实现对话框,使用antd对话框
│         │   ├─39-集成第三方JS库:以d3
│         │   ├─40-基于路由实现菜单导航
│         │   ├─41-React中拖放的实现
│         │   ├─42-性能永远是第一需求:时刻考虑性能问题
│         │   ├─43-网络性能优化:自动化按需加载
│         │   ├─44-使用Reselect避免重复计算
│         │   ├─45-下一代React:异步渲染
│         │   └─46-使用ChromeDevTool进行性能调优&结课测试
│         ├─40-小马哥讲SpringAOP编程思想
│         │   ├─03-知识储备:基础、基础,还是基础!
│         │   ├─04-AOP引入:OOP存在哪些局限性?
│         │   ├─05-AOP常见使用场景
│         │   ├─06-AOP概念:Aspect、JoinPoint和Advice等术语应该如何理解?
│         │   ├─07-JavaAOP设计模式:代理、判断和拦截器模式
│         │   ├─08-JavaAOP代理模式(Proxy):Java静态代理和动态代理的区别是什么?
│         │   ├─09-JavaAOP判断模式(Predicate):如何筛选JoinPoint?
│         │   ├─10-JavaAOP拦截器模式(Interceptor):拦截执行分别代表什么?
│         │   ├─100-代理模式(Proxy)实现
│         │   ├─101-模板方法模式(TemplateMethod)实现
│         │   ├─102-责任链模式(ChainofResponsibility)实现
│         │   ├─103-观察者模式(Observer)实现
│         │   ├─104-策略模式(Strategy)实现
│         │   ├─105-命令模式(Command)实现
│         │   ├─106-状态模式(State)实现
│         │   ├─107-面试题精选
│         │   ├─108-SpringAOP在Spring事件(Events)
│         │   ├─109-SpringAOP在Spring事务(Transactions)理论基础
│         │   ├─11-SpringAOP功能概述:核心特性、编程模型和使用限制
│         │   ├─110-SpringAOP在Spring事务(Transactions)源码分析
│         │   ├─111-SpringAOP在Spring缓存(Caching)
│         │   ├─112-SpringAOP在Spring本地调度(Scheduling)
│         │   ├─113-面试题精选
│         │   ├─114-结束语
│         │   ├─12-SpringAOP编程模型:注解驱动、XML配置驱动和底层API
│         │   ├─13-SpringAOP设计目标:SpringAOP与AOP框架之间的关系是竞争还是互补?
│         │   ├─14-SpringAOPAdvice类型:SpringAOP丰富了哪些AOPAdvice呢?
│         │   ├─15-SpringAOP代理实现:为什么SpringFramework选择三种不同AOP实现?
│         │   ├─16-JDK动态代理:为什么Proxy
│         │   ├─17-CGLIB动态代理:为什么Java动态代理无法满足AOP的需要?
│         │   ├─18-AspectJ代理代理:为什么Spring推荐AspectJ注解?
│         │   ├─19-AspectJ基础:Aspect、JoinPoints、Pointcuts和Advice语法和特性
│         │   ├─20-AspectJ注解驱动:注解能完全替代AspectJ语言吗?
│         │   ├─21-面试题精选
│         │   ├─22-Spring核心基础:《小马哥讲Spring核心编程思想》还记得多少?
│         │   ├─23-@AspectJ注解驱动
│         │   ├─24-编程方式创建@AspectJ代理
│         │   ├─25-XML配置驱动-创建AOP代理
│         │   ├─26-标准代理工厂API-ProxyFactory
│         │   ├─27-@AspectJPointcut指令与表达式:为什么Spring只能有限支持?
│         │   ├─28-XML配置Pointcut
│         │   ├─29-API实现Pointcut
│         │   ├─30-@AspectJ拦截动作:@Around与@Pointcut有区别吗?
│         │   ├─31-XML配置AroundAdvice
│         │   ├─32-API实现AroundAdvice
│         │   ├─33-@AspectJ前置动作:@Before与@Around谁优先级执行?
│         │   ├─34-XML配置BeforeAdvice
│         │   ├─35-API实现BeforeAdvice
│         │   ├─36-@AspectJ后置动作-三种AfterAdvice之间的关系?
│         │   ├─37-XML配置三种AfterAdvice
│         │   ├─38-API实现三种AfterAdvice
│         │   ├─39-自动动态代理
│         │   ├─40-替换TargetSource
│         │   ├─42-SpringAOPAPI整体设计
│         │   ├─43-接入点接口-Joinpoint
│         │   ├─44-Joinpoint条件接口-Pointcut
│         │   ├─45-Pointcut操作-ComposablePointcut
│         │   ├─46-Pointcut便利实现
│         │   ├─47-PointcutAspectJ实现-AspectJExpressionPointcut
│         │   ├─48-Joinpoint执行动作接口-Advice
│         │   ├─49-JoinpointBeforeAdvice标准实现
│         │   ├─50-JoinpointBeforeAdviceAspectJ实现
│         │   ├─51-JoinpointAfterAdvice标准实现
│         │   ├─52-JoinpointAfterAdviceAspectJ实现
│         │   ├─53-Advice容器接口-Advisor
│         │   ├─54-Pointcut与Advice连接器-PointcutAdvisor
│         │   ├─55-Introduction与Advice连接器-IntroductionAdvisor
│         │   ├─56-Advisor的Interceptor适配器-AdvisorAdapter
│         │   ├─57-AdvisorAdapter实现
│         │   ├─58-AOP代理接口-AopProxy
│         │   ├─59-AopProxy工厂接口与实现
│         │   ├─60-JDKAopProxy实现-JdkDynamicAopProxy
│         │   ├─61-CGLIBAopProxy实现-CglibAopProxy
│         │   ├─62-AopProxyFactory配置管理器-AdvisedSupport
│         │   ├─63-Advisor链工厂接口与实现-AdvisorChainFactory
│         │   ├─64-目标对象来源接口与实现-TargetSource
│         │   ├─65-代理对象创建基础类-ProxyCreatorSupport
│         │   ├─66-AdvisedSupport事件监听器-AdvisedSupportListener
│         │   ├─67-ProxyCreatorSupport标准实现-ProxyFactory
│         │   ├─68-ProxyCreatorSupportIoC容器实现-ProxyFactoryBean
│         │   ├─69-ProxyCreatorSupportAspectJ实现-AspectJProxyFactory
│         │   ├─70-IoC容器自动代理抽象-AbstractAutoProxyCreator
│         │   ├─71-IoC容器自动代理标准实现
│         │   ├─72-IoC容器自动代理AspectJ实现-AspectJAwareAdvisorAutoProxyCreator
│         │   ├─73-AOPInfrastructureBean接口-AopInfrastructureBean
│         │   ├─74-AOP上下文辅助类-AopContext
│         │   ├─75-代理工厂工具类-AopProxyUtils
│         │   ├─76-AOP工具类-AopUtils
│         │   ├─77-AspectJEnable模块驱动实现-@EnableAspectJAutoProxy
│         │   ├─78-AspectJXML配置驱动实现-aop-aspectj-autoproxy
│         │   ├─79-AOP配置Schema-based实现-aop-config
│         │   ├─80-AspectSchema-based实现-aop-aspect
│         │   ├─81-PointcutSchema-based实现-aop-pointcut
│         │   ├─82-AroundAdviceSchema-based实现-aop-around
│         │   ├─83-BeforeAdviceSchema-based实现-aop-before
│         │   ├─84-AfterAdviceSchema-based实现-aop-after
│         │   ├─85-AfterReturningAdviceSchema-based实现-aop-after-returning
│         │   ├─86-AfterThrowingAdviceSchema-based实现-aop-after-throwing
│         │   ├─87-AdviserSchema-based实现-aop-advisor
│         │   ├─88-IntroductionSchema-based实现-aop-declare-parents
│         │   ├─89-作用域代理Schema-based实现-aop-scoped-proxy
│         │   ├─90-面试题精选
│         │   ├─91-抽象工厂模式(Abstractfactory)实现
│         │   ├─92-构建器模式(Builder)实现
│         │   ├─93-工厂方法模式(Factorymethod)实现
│         │   ├─94-原型模式(Prototype)实现
│         │   ├─95-单例模式(Singleton)实现
│         │   ├─96-适配器模式(Adapter)实现
│         │   ├─97-组合模式(Composite)实现
│         │   ├─98-装饰器模式(Decorator)实现
│         │   └─99-享元模式(Flyweight)实现
│         ├─41-爆款文案修炼手册
│         │   ├─01-关于这门课程:爆款文案的6项核心技能是什么?
│         │   ├─02-商人还是艺人?职业文案的三观
│         │   ├─03-月薪3万的文案,哪些是必备的独门技能?
│         │   ├─04-5条路径,爆款标题不求人
│         │   ├─05-5个标准,起个响亮好名字
│         │   ├─06-6重境界,轻松写出广告语
│         │   ├─07-文字传播力:案例揭秘
│         │   ├─08-4W原则:如何寻找你的沟通指南针?
│         │   ├─09-WHY:如何瞄准文案的传播目标?
│         │   ├─10-WHO:如何圈定文案的接收人群?
│         │   ├─11-WHAT:如何用文案诠释产品的卖点?
│         │   ├─12-HOW:如何设计文案的沟通语感?
│         │   ├─13-向经典致敬:为什么说现在的刷屏级创意,都是它们的二手货?
│         │   ├─14-哪些广告,只用文案就够了?
│         │   ├─15-哪些广告,不用文案也可以?
│         │   ├─16-容易得奖的创意,都在用这6大模板(上)
│         │   ├─17-容易得奖的创意,都在用这6大模板(下)
│         │   ├─18-阅读心理学:如何打造文案的黄金结构?
│         │   ├─19-克服冷脑:如何开始你的第一句?
│         │   ├─20-5个结尾技巧,精彩不重样
│         │   ├─21-8种方法,让长文案更好读
│         │   ├─22-变废为宝:不放过任何边角料
│         │   ├─23-刷牙测试法:如何修订你的文案
│         │   ├─24-如何选择字体,让阅读成为悦读?
│         │   ├─25-如何编排版式,建立视觉流通的秩序?
│         │   ├─26-如何运用图片,让读者的眼睛乖乖听话?
│         │   ├─27-如何制造文与图的化学反应?
│         │   ├─28-文稿管理:公司没空教你的4个基本动作
│         │   ├─29-创意,是个什么玩意?
│         │   ├─30-5步秘笈,掌握创意诞生的规律
│         │   ├─31-3种动脑游戏,学会“多快好省”
│         │   ├─32-迷宫理论:创意的评判法则
│         │   └─33-如何找到最难的核心创意,并延展成系列广告
│         ├─42-如何讲好一堂课
│         │   ├─01-以学生为中心的课程设计底层逻辑
│         │   ├─02-如何准备课程内容与素材
│         │   ├─03-如何设计课程结构与逻辑
│         │   ├─04-如何包装课程形式与呈现
│         │   ├─05-还原一个真实的课堂:教学七步法
│         │   ├─06-教学工作的基本环节与优秀课堂的标准
│         │   ├─07-教学与备课进阶过程:七步迭代法打磨课程
│         │   ├─08-如何设计课程亮点与互动:锁定学生的注意力
│         │   └─课程介绍
│         ├─43-HarmonyOS快速入门与实战
│         │   ├─01|如何快速上手HarmonyOS实践?
│         │   ├─02|宝宝巴士:HarmonyOS如何让亲子互动更有趣?
│         │   ├─03|宝宝巴士:全场景分布式的亲子乐园是怎么实现的?
│         │   ├─04|如何用Cocos引擎开启你HarmonyOS游戏之旅?
│         │   ├─05|在线教育和小游戏在HarmonyOS上有什么解决方案?
│         │   ├─06|HarmonyOS是怎么让多设备融合成一个“超级终端”的?
│         │   ├─07|如何在HarmonyOS上做在线教育和游戏开发?
│         │   ├─08|商家直播:如何实现互动跨端迁移流转?
│         │   └─09|商家直播:如何实现多设备协同的开播方案?
│         ├─44-云计算必修小课
│         │   ├─01|拨云见日——云上架构一点儿也不神秘
│         │   ├─02|飞云掣电——澎湃算力的云中服务器
│         │   ├─03|青云万里——10分钟带你了解Serverless平台
│         │   ├─05|风轻云淡——如何用好对象存储(下)?
│         │   ├─06|云净天空——谈云中负载均衡器(上)
│         │   ├─07|云净天空——谈云中负载均衡器(下)
│         │   ├─08|云合景从——弹性扩展,永无止境的伸缩
│         │   ├─09|风虎云龙——云端存储十大技巧
│         │   └─10|行云流水——如何选择合适的方式迁移上云?
│         ├─45-零基础学Python(2022版)【更新中】
│         │   ├─01|如何配置Python开发环境?
│         │   ├─02-常用IDE:如何提高开发效率?
│         │   ├─03-如何站在官方文档的肩膀上自己“造轮子”?
│         │   ├─04-怎样运行你的第一行代码?
│         │   ├─05-怎样使用Gitee管理你的代码?
│         │   ├─06-学习编程有问题?去这里找答案!
│         │   ├─07|跨越门槛:Python开发环境总结及实现原理
│         │   ├─08-修炼基本功:浅析输入输出
│         │   ├─09-变量:如何让计算机临时存储数据?
│         │   ├─10|字符串(上):Python是如何处理单词的?
│         │   ├─11|字符串(下):Python是如何处理单词的?
│         │   ├─12|存储数字应该采用哪种数据类型?
│         │   ├─13|何时使用数,何时使用字符串?
│         │   ├─14|注释:如何写程序的说明书?
│         │   ├─15|小试牛刀:如何制作简单计算器?
│         │   ├─16|变量命名规范:如何编写优雅的程序?
│         │   ├─17|告别新手村:Python编程基础知识
│         │   ├─18|内置数据类型包括哪几种?
│         │   ├─19|列表如何处理同类数据?
│         │   ├─20|常见常新:列表的常见操作
│         │   ├─21|元组:如何处理一次性数据?
│         │   ├─22|常见常新:集合的常见操作
│         │   ├─23|字典:如何处理映射类型的数据?
│         │   ├─24|常见常新:字典的常见操作(上)
│         │   ├─25|常见常新:字典的常见操作(下)
│         │   ├─26|小试牛刀:如何利用类型转换实现手机通讯录?(上)
│         │   ├─27|小试牛刀:如何利用类型转换实现手机通讯录?(下)
│         │   ├─28|常见的内置数据类型都何时使用?
│         │   ├─29|避坑指南:内置数据类型的常见错误
│         │   ├─30|内置数据类型参考:如何使用官方文档与帮助?
│         │   ├─31|再回首:“内置数据类型”单元小结
│         │   ├─32|if语句:数据流程出现分支时,怎样编写程序?
│         │   ├─33|match语句:如何通过match关键字来处理程序的分支逻辑?
│         │   ├─34|while循环:需要多次重复执行某段程序时,怎么做?
│         │   ├─35|for循环:如何遍历一个对象里的所有元素?
│         │   ├─36|语句嵌套:如何处理多重循环的问题?
│         │   ├─37|小试牛刀:如何设计一个飞机大战的程序?
│         │   ├─38|避坑指南:判断和循环中的常见错误
│         │   ├─39|再回首:“判断循环”单元小结
│         │   ├─内容综述:明确学习目的
│         │   └─课程介绍:这次我们都做了哪些升级?
│         ├─5-快速上手Kotlin开发
│         │   ├─01-讲给你的Kotlin快速上手课程
│         │   ├─02-Kotlin最基础语法
│         │   ├─03-Kotlin与Java完全兼容,就可以随便调用了吗?
│         │   ├─04-新手使用Kotlin常碰到的问题
│         │   ├─05-函数也能嵌套?这个特性要注意
│         │   ├─06-用扩展函数简化代码调用
│         │   ├─07-DSL的基础-Lambda闭包的语法
│         │   ├─08-函数的参数是函数-高阶函数的注意事项
│         │   ├─09-创建对象的关键-Kotlin的构造函数
│         │   ├─10-伴生对象-Kotlin特有的单例对象
│         │   ├─11-by关键字的使用
│         │   ├─12-Kotlin独有的特殊类
│         │   ├─13-解构-特殊的数据拆箱方式
│         │   ├─14-Kotlin的循环语法
│         │   ├─15-Kotlin海量的集合操作符
│         │   ├─16-作用域函数-你会爱上的自带函数
│         │   ├─17-运算符与中缀-定义你的专有运算符
│         │   ├─18-神奇的符号-Kotlin的反引号
│         │   ├─19-DSL是什么,原来早就用过了
│         │   ├─20-构建DSL的常用方式
│         │   ├─21-定义自己的DSL
│         │   ├─22-理解Kotlin中的常量与只读
│         │   ├─23-Kotlin的空安全是如何实现的
│         │   ├─24-Kotlin内联-noinline与crossinline
│         │   ├─25-Kotlin的真泛型与实现方式
│         │   ├─26-协程-提升性能的利器
│         │   ├─27-在Kotlin中使用协程
│         │   ├─28-协程的启动参数
│         │   ├─29-协程的语法糖
│         │   ├─30-suspend-知其然知其所以然
│         │   ├─31-协程的内部实现原理
│         │   ├─32-动手设计Kotlin协程的yield
│         │   ├─33-协程通信:Channel的使用
│         │   ├─34-小结-动手设计Channel版的EventBus
│         │   ├─35-NIO与BIO
│         │   ├─36-Kotlinx-io的对象缓存池
│         │   ├─37-Google推出KTX的目的
│         │   ├─38-KTX的实现
│         │   ├─39-KTX小结
│         │   ├─40-在团队中使用Kotlin
│         │   ├─41-用Kotlin改写现有工程
│         │   ├─42-滥用特性的后果:没人懂的代码
│         │   ├─43-Kotlin服务端开发框架
│         │   ├─44-HttpServlet创建Kotlin版Web应用
│         │   ├─45-SpringBoot创建RESTfulWeb服务
│         │   ├─46-Kotlin开发Web前端
│         │   ├─47-KotlinNative开发
│         │   ├─48-创建KotlinNative基础库
│         │   ├─49-如何用Kotlin实现AndroidMVP
│         │   └─50-AndroidMVP的Kotlin代码&结课测试
│         ├─6-算法面试通关40讲
│         │   ├─01-合格程序员的第一步:算法与数据结构
│         │   ├─02-如何事半功倍地学习算法与数据结构
│         │   ├─03-如何计算算法的复杂度
│         │   ├─04-如何通过LeetCode来进行算法题目练习
│         │   ├─05-理论讲解:数组&链表
│         │   ├─06-面试题:反转一个单链表&判断链表是否有环
│         │   ├─07-理论讲解:堆栈&队列
│         │   ├─08-面试题:判断括号字符串是否有效
│         │   ├─09-面试题:用队列实现栈&用栈实现队列
│         │   ├─10-理论讲解:优先队列
│         │   ├─11-面试题:返回数据流中的第K大元素
│         │   ├─12-面试题:返回滑动窗口中的最大值
│         │   ├─13-理论讲解:哈希表
│         │   ├─14-面试题:有效的字母异位词
│         │   ├─15-面试题:两数之和
│         │   ├─16-面试题:三数之和
│         │   ├─17-理论讲解:树&二叉树&二叉搜索树
│         │   ├─18-面试题:验证二叉搜索树
│         │   ├─19-面试题:二叉树&二叉搜索树的最近公共祖先
│         │   ├─20-理论讲解:二叉树遍历
│         │   ├─21-理论讲解:递归&分治
│         │   ├─22-面试题:Pow(x,n)
│         │   ├─23-面试题:求众数
│         │   ├─24-理论讲解:贪心算法
│         │   ├─25-面试题:买卖股票的最佳时机
│         │   ├─26-理论讲解:广度优先搜索
│         │   ├─27-理论讲解:深度优先搜索
│         │   ├─28-面试题:二叉树层次遍历
│         │   ├─29-面试题:二叉树的最大和最小深度
│         │   ├─30-面试题:生成有效括号组合
│         │   ├─31-理论讲解:剪枝
│         │   ├─32-面试题:N皇后问题
│         │   ├─33-面试题:数独问题
│         │   ├─34-理论讲解:二分查找
│         │   ├─35-面试题:实现一个求解平方根的函数
│         │   ├─36-理论讲解:字典树
│         │   ├─37-面试题:实现一个字典树
│         │   ├─38-面试题:二维网格中的单词搜索问题
│         │   ├─39-理论讲解:位运算
│         │   ├─40-面试题:统计位1的个数
│         │   ├─41-面试题:2的幂次方问题&比特位计数问题
│         │   ├─42-面试题:N皇后问题的另一种解法
│         │   ├─43-理论理解:动态规划(上)
│         │   ├─44-理论理解:动态规划(下)
│         │   ├─45-面试题:爬楼梯
│         │   ├─46-面试题:三角形的最小路径和
│         │   ├─47-面试题:乘积最大子序列
│         │   ├─48-面试题:股票买卖系列
│         │   ├─49-面试题:最长上升子序列
│         │   ├─50-面试题:零钱兑换
│         │   ├─51-面试题:编辑距离
│         │   ├─52-理论讲解:并查集
│         │   ├─53-面试题:岛屿的个数&朋友圈(上)
│         │   ├─54-面试题:岛屿的个数&朋友圈(下)
│         │   ├─55-理论讲解:LRUCache
│         │   ├─56-面试题:设计和实现一个LRUCache缓存机制
│         │   ├─57-理论讲解:布隆过滤器
│         │   ├─58-课程重点回顾
│         │   ├─59-FAQ答疑&面试中切题四件套
│         │   ├─60-回到起点:斐波拉契数列
│         │   ├─61-白板实战番外篇:斐波拉契数列
│         │   └─62-结课测试&最后的一些经验分享
│         ├─7-Nginx核心知识150讲
│         │   ├─01-课程综述
│         │   ├─02-Nginx适用于哪些场景?
│         │   ├─03-Nginx出现的历史背景
│         │   ├─04-为什么用Nginx:它的5个主要优点
│         │   ├─05-Nginx的四个主要组成部分
│         │   ├─06-Nginx的版本发布历史
│         │   ├─07-选择哪一个Nginx发行版本?
│         │   ├─08-编译出适合自己的Nginx
│         │   ├─09-Nginx配置文件的通用语法介绍
│         │   ├─10-Nginx命令行及演示:重载、热部署、日志切割
│         │   ├─100-对客户端请求的缓存处理流程
│         │   ├─101-接收上游响应的缓存处理流程
│         │   ├─102-如何减轻缓存失效时上游服务的压力
│         │   ├─103-及时清除缓存
│         │   ├─104-uwsgi、fastcgi、scgi指令的对照表
│         │   ├─105-memcached反向代理的用法
│         │   ├─106-搭建websocket反向代理
│         │   ├─107-用分片提升缓存效率
│         │   ├─108-openfilecache提升系统性能
│         │   ├─109-HTTP-2协议介绍
│         │   ├─11-用Nginx搭建一个可用的静态资源Web服务器
│         │   ├─110-搭建HTTP-2服务并推送资源
│         │   ├─111-gRPC反向代理
│         │   ├─112-stream四层反向代理的7个阶段及常用变量
│         │   ├─113-proxyprotocol协议与realip模块
│         │   ├─114-限并发连接、限IP、记日志
│         │   ├─115-stream四层反向代理处理SSL下游流量
│         │   ├─116-streampreread模块取出SSL关键信息
│         │   ├─117-streamproxy四层反向代理的用法
│         │   ├─118-UDP反向代理
│         │   ├─119-透传IP地址的3个方案
│         │   ├─12-用Nginx搭建一个具备缓存功能的反向代理服务
│         │   ├─120-性能优化方法论
│         │   ├─121-如何高效使用CPU
│         │   ├─122-多核间的负载均衡
│         │   ├─123-控制TCP三次握手参数
│         │   ├─124-建立TCP连接的优化
│         │   ├─125-滑动窗口与缓冲区
│         │   ├─126-优化缓冲区与传输效率
│         │   ├─127-慢启动与拥塞窗口
│         │   ├─128-TCP协议的keepalive功能
│         │   ├─129-减少关闭连接时的timewait端口数量
│         │   ├─13-用GoAccess实现可视化并实时监控access日志
│         │   ├─130-lingeringclose延迟关闭TCP连接
│         │   ├─131-应用层协议的优化
│         │   ├─132-磁盘IO的优化
│         │   ├─133-减少磁盘读写次数
│         │   ├─134-零拷贝与gzipstatic模块
│         │   ├─135-用tcmalloc优化内存分配
│         │   ├─136-使用GooglePerfTools分析Nginx
│         │   ├─137-使用stubstatus模块监控Nginx的状态
│         │   ├─138-第三方模块源码的阅读
│         │   ├─139-Nginx的启动流程
│         │   ├─14-从网络原理来看SSL安全协议
│         │   ├─140-HTTP第三方模块的初始化
│         │   ├─141-if指令是邪恶的吗?
│         │   ├─142-解读Nginx的核心转储文件
│         │   ├─143-通过debug日志定位问题
│         │   ├─144-OpenResty概述
│         │   ├─145-OpenResty中的Nginx模块与Lua模块
│         │   ├─146-如何在Nginx中嵌入Lua代码
│         │   ├─147-OpenResty中Lua与C代码交互的原理
│         │   ├─148-获取、修改请求与响应的SDK
│         │   ├─149-工具类型的SDK
│         │   ├─15-对称加密与非对称加密各自的应用场景
│         │   ├─150-同步且非阻塞的底层SDK:cosocket
│         │   ├─151-基于协程的并发编程SDK
│         │   ├─152-定时器及时间相关的SDK
│         │   ├─153-share
│         │   ├─154-子请求的使用方法
│         │   ├─155-基于OpenResty的WAF防火墙&结课测试
│         │   ├─16-SSL证书的公信力是如何保证的?
│         │   ├─17-SSL协议握手时Nginx的性能瓶颈在哪里?
│         │   ├─18-用免费SSL证书实现一个HTTPS站点
│         │   ├─19-基于OpenResty用Lua语言实现简单服务
│         │   ├─20-Nginx的请求处理流程
│         │   ├─21-Nginx的进程结构
│         │   ├─22-Nginx的进程结构实例演示
│         │   ├─23-使用信号管理Nginx的父子进程
│         │   ├─24-reload重载配置文件的真相
│         │   ├─25-热升级的完整流程
│         │   ├─26-优雅地关闭worker进程
│         │   ├─27-网络收发与Nginx事件间的对应关系
│         │   ├─28-Nginx网络事件实例演示
│         │   ├─29-Nginx的事件驱动模型
│         │   ├─30-epoll的优劣及原理
│         │   ├─31-Nginx的请求切换
│         │   ├─32-同步&异步、阻塞&非阻塞之间的区别
│         │   ├─33-Nginx的模块究竟是什么?
│         │   ├─34-Nginx模块的分类
│         │   ├─35-Nginx如何通过连接池处理网络请求
│         │   ├─36-内存池对性能的影响
│         │   ├─37-所有worker进程协同工作的关键:共享内存
│         │   ├─38-用好共享内存的工具:Slab管理器
│         │   ├─39-哈希表的maxsize与bucketsize如何配置
│         │   ├─40-Nginx中最常用的容器:红黑树
│         │   ├─41-使用动态模块来提升运维效率
│         │   ├─42-第三章内容介绍
│         │   ├─43-冲突的配置指令以谁为准?
│         │   ├─44-Listen指令的用法
│         │   ├─45-处理HTTP请求头部的流程
│         │   ├─46-Nginx中的正则表达式
│         │   ├─47-如何找到处理请求的server指令块
│         │   ├─48-详解HTTP请求的11个阶段
│         │   ├─49-11个阶段的顺序处理
│         │   ├─50-postread阶段:获取真实客户端地址的realip模块
│         │   ├─51-rewrite阶段的rewrite模块:return指令
│         │   ├─52-rewrite阶段的rewrite模块:重写URL
│         │   ├─53-rewrite阶段的rewrite模块:条件判断
│         │   ├─54-findconfig阶段:找到处理请求的location指令块
│         │   ├─55-preaccess阶段:对连接做限制的limitconn模块
│         │   ├─56-preaccess阶段:对请求做限制的limitreq模块
│         │   ├─57-access阶段:对ip做限制的access模块
│         │   ├─58-access阶段:对用户名密码做限制的authbasic模块
│         │   ├─59-access阶段:使用第三方做权限控制的authrequest模块
│         │   ├─60-access阶段的satisfy指令
│         │   ├─61-precontent阶段:按序访问资源的tryfiles模块
│         │   ├─62-实时拷贝流量:precontent阶段的mirror模块
│         │   ├─63-content阶段:详解root和alias指令
│         │   ├─64-static模块提供的3个变量
│         │   ├─65-static模块对url不以斜杠结尾却访问目录的做法
│         │   ├─66-index和autoindex模块的用法
│         │   ├─67-提升多个小文件性能的concat模块
│         │   ├─68-access日志的详细用法
│         │   ├─69-HTTP过滤模块的调用流程
│         │   ├─70-用过滤模块更改响应中的字符串:sub模块
│         │   ├─71-用过滤模块在http响应的前后添加内容:addition模块
│         │   ├─72-Nginx变量的运行原理
│         │   ├─73-HTTP框架提供的请求相关的变量
│         │   ├─74-HTTP框架提供的其他变量
│         │   ├─75-使用变量防盗链的referer模块
│         │   ├─76-使用变量实现防盗链功能实践:securelink模块
│         │   ├─77-为复杂的业务生成新的变量:map模块
│         │   ├─78-通过变量指定少量用户实现AB测试:splitclient模块
│         │   ├─79-根据IP地址范围的匹配生成新变量:geo模块
│         │   ├─80-使用变量获得用户的地理位置:geoip模块
│         │   ├─81-对客户端使用keepalive提升连接效率
│         │   ├─82-反向代理与负载均衡原理
│         │   ├─83-负载均衡策略:round-robin
│         │   ├─84-负载均衡哈希算法:iphash与hash模块
│         │   ├─85-一致性哈希算法:hash模块
│         │   ├─86-最少连接算法以及如何跨worker进程生效
│         │   ├─87-upstream模块提供的变量
│         │   ├─88-proxy模块处理请求的流程
│         │   ├─89-proxy模块中的proxypass指令
│         │   ├─90-根据指令修改发往上游的请求
│         │   ├─91-接收用户请求包体的方式
│         │   ├─92-与上游服务建立连接
│         │   ├─93-接收上游的响应
│         │   ├─94-处理上游的响应头部
│         │   ├─95-上游出现失败时的容错方案
│         │   ├─96-对上游使用SSL连接
│         │   ├─97-用好浏览器的缓存
│         │   ├─98-Nginx决策浏览器过期缓存是否有效
│         │   └─99-缓存的基本用法
│         ├─8-玩转Git三剑客
│         │   ├─02-安装Git
│         │   ├─03-使用Git之前需要做的最小配置
│         │   ├─04-创建第一个仓库并配置local用户信息
│         │   ├─05-通过几次commit来认识工作区和暂存区
│         │   ├─06-给文件重命名的简便方法
│         │   ├─07-通过gitlog查看版本演变历史
│         │   ├─08-gitk:通过图形界面工具来查看版本历史
│         │   ├─09-探密
│         │   ├─10-commit、tree和blob三个对象之间的关系
│         │   ├─11-小练习:数一数tree的个数
│         │   ├─12-分离头指针情况下的注意事项
│         │   ├─13-进一步理解HEAD和branch
│         │   ├─14-怎么删除不需要的分支?
│         │   ├─15-怎么修改最新commit的message?
│         │   ├─16-怎么修改老旧commit的message?
│         │   ├─17-怎样把连续的多个commit整理成1个?
│         │   ├─18-怎样把间隔的几个commit整理成1个?
│         │   ├─19-怎么比较暂存区和HEAD所含文件的差异?
│         │   ├─20-怎么比较工作区和暂存区所含文件的差异?
│         │   ├─21-如何让暂存区恢复成和HEAD的一样?
│         │   ├─22-如何让工作区的文件恢复为和暂存区一样?
│         │   ├─23-怎样取消暂存区部分文件的更改?
│         │   ├─24-消除最近的几次提交
│         │   ├─25-看看不同提交的指定文件的差异
│         │   ├─26-正确删除文件的方法
│         │   ├─27-开发中临时加塞了紧急任务怎么处理?
│         │   ├─28-如何指定不需要Git管理的文件?
│         │   ├─29-如何将Git仓库备份到本地?
│         │   ├─30-注册一个GitHub账号
│         │   ├─31-配置公私钥
│         │   ├─32-在GitHub上创建个人仓库
│         │   ├─33-把本地仓库同步到GitHub
│         │   ├─34-不同人修改了不同文件如何处理?
│         │   ├─35-不同人修改了同文件的不同区域如何处理?
│         │   ├─36-不同人修改了同文件的同一区域如何处理?
│         │   ├─37-同时变更了文件名和文件内容如何处理?
│         │   ├─38-把同一文件改成了不同的文件名如何处理?
│         │   ├─39-禁止向集成分支执行push-f操作
│         │   ├─40-禁止向集成分支执行变更历史的操作
│         │   ├─41-GitHub为什么会火?
│         │   ├─42-GitHub都有哪些核心功能?
│         │   ├─43-怎么快速淘到感兴趣的开源项目
│         │   ├─44-怎样在GitHub上搭建个人博客
│         │   ├─45-开源项目怎么保证代码质量?
│         │   ├─46-为何需要组织类型的仓库?
│         │   ├─47-创建团队的项目
│         │   ├─48-怎样选择适合自己团队的工作流?
│         │   ├─49-如何挑选合适的分支集成策略?
│         │   ├─50-启用issue跟踪需求和任务
│         │   ├─51-如何用project管理issue?
│         │   ├─52-项目内部怎么实施codereview?
│         │   ├─53-团队协作时如何做多分支的集成?
│         │   ├─54-怎样保证集成的质量?
│         │   ├─55-怎样把产品包发布到GitHub上?
│         │   ├─56-怎么给项目增加详细的指导文档?
│         │   ├─57-国内互联网企业为什么喜欢GitLab?
│         │   ├─58-GitLab有哪些核心的功能?
│         │   ├─59-GitLab上怎么做项目管理?
│         │   ├─60-GitLab上怎么做codereview?
│         │   ├─61-GitLab上怎么保证集成的质量?
│         │   └─62-怎么把应用部署到AWS上?
│         └─9-TensorFlow快速入门与实战
│               ├─01-课程介绍
│               ├─02-课程内容综述
│               ├─03-第一章内容概述
│               ├─04-TensorFlow产生的历史必然性
│               ├─05-TensorFlow与JeffDean的那些事
│               ├─06-TensorFlow的应用场景
│               ├─07-TensorFlow的落地应用
│               ├─08-TensorFlow的发展现状
│               ├─09-第二章内容概述
│               ├─10-搭建你的TensorFlow开发环境
│               ├─11-HelloTensorFlow
│               ├─12-在交互环境中使用TensorFlow
│               ├─13-在容器中使用TensorFlow
│               ├─14-第三章内容概述
│               ├─15-TensorFlow模块与架构介绍
│               ├─16-TensorFlow数据流图介绍
│               ├─17-张量(Tensor)是什么(上)
│               ├─18-张量(Tensor)是什么(下)
│               ├─19-变量(Variable)是什么(上)
│               ├─20-变量(Variable)是什么(下)
│               ├─21-操作(Operation)是什么(上)
│               ├─22-操作(Operation)是什么(下)
│               ├─23-会话(Session)是什么
│               ├─24-优化器(Optimizer)是什么
│               ├─25-第四章内容概述
│               ├─26-房价预测模型的前置知识
│               ├─27-房价预测模型介绍
│               ├─28-房价预测模型之数据处理
│               ├─29-房价预测模型之创建与训练
│               ├─30-TensorBoard可视化工具介绍
│               ├─31-使用TensorBoard可视化数据流图
│               ├─32-实战房价预测模型:数据分析与处理
│               ├─33-实战房价预测模型:创建与训练
│               ├─34-实战房价预测模型:可视化数据流图
│               ├─35-第五章内容概述
│               ├─36-手写体数字数据集MNIST介绍(上)
│               ├─37-手写体数字数据集MNIST介绍(下)
│               ├─38-MNISTSoftmax网络介绍(上)
│               ├─39-MNISTSoftmax网络介绍(下)
│               ├─40-实战MNISTSoftmax网络(上)
│               ├─41-实战MNISTSoftmax网络(下)
│               ├─42-MNISTCNN网络介绍
│               ├─43-实战MNISTCNN网络
│               ├─44-第六章内容概述
│               ├─45-准备模型开发环境
│               ├─46-生成验证码数据集
│               ├─47-输入与输出数据处理
│               ├─48-模型结构设计
│               ├─49-模型损失函数设计
│               ├─50-模型训练过程分析
│               ├─51-模型部署与效果演示
│               ├─52-第七部分内容介绍
│               ├─53-人脸识别问题概述
│               ├─54-典型人脸相关数据集介绍
│               ├─55-人脸检测算法介绍
│               ├─56-人脸识别算法介绍
│               ├─57-人脸检测工具介绍
│               ├─58-解析FaceNet人脸识别模型
│               ├─59-实战FaceNet人脸识别模型
│               ├─60-测试与可视化分析
│               ├─61-番外篇内容介绍
│               ├─62-TensorFlow社区介绍
│               ├─63-TensorFlow生态:TFX
│               ├─64-TensorFlow生态:Kubeflow
│               ├─65-如何参与TensorFlow社区开源贡献
│               ├─66-MLGDE是TensorFlow社区与开发者的桥梁
│               └─67-课程总结

本站所有资源均来自网络,版权归原作者所有,本站仅提供收集与推荐,若侵犯到您的权益,请【给我们反馈】,我们将在24小时内处理!

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

查看演示

  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余

给TA打赏
共{{data.count}}人
人已打赏
16 条回复 A文章作者 M管理员
  1. xiaorenwuz

    伤心桥下春波绿,曾是惊鸿照影来。

  2. xiaorenwuz

    如果圆规的两只脚都动,永远也画不出一个圆。

  3. 麦奇

    明月松间照,清泉石上流。

  4. 十七

    不敢打开信封啊。因为,打开了就结束了啊。

  5. 枫

    我要这天再遮不住我眼,要这地再埋不了我心.

  6. nice

    很不错

  7. jinrong

    希望继续更新更新

  8. rfree520

    “像你这样的白痴是怎么活过来的?”“因为我很自信。

  9. rfree520

    每个人都在自己的生命中频繁地抛弃着自己的过去。

  10. rfree520

    齿轮也有齿轮的志气!

  11. findmoon

    你依然让我觉得美好且心动,但我已经没有力气和勇气再去拥抱。

  12. zj

    生来一人,去时孤身,便是江澄其人

  13. 额vantis

    因为不可能,所以才值得相信。

  14. zj

    自责要短暂,不过要长久铭记。

  15. spark001

    趁着年轻,好好犯病。

  16. ht

    这瓜多少钱一斤?

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索