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

极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程资源下载点击快速获取相关资源

极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍(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元素?
│ │ │ ├─HTMLARIA:可访问性是只给盲人用的特性么?
│ │ │ ├─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:师傅领进门,修行在个人
│ │ │ ├─答疑篇|思考题答案集锦
│ │ │ ├─结束语|人生充满选择,选择与努力同样重要
│ │ │ └─结束语|人生充满选择,选择与努力同样重要
│ │ ├─169TonyBaiGo语言第一课
│ │ │ ├─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|同构复合类型:从定长数组到变长切片
│ │ │ ├─169TonyBaiGo语言第一课
│ │ │ ├─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镜头的十大理由”
│ │ │ ├─第十封信-阳光之下没什么新鲜事儿(中)
│ │ │ ├─第四十一封信-有意为之的偶然(引子)
│ │ │ ├─第四十七封信-什么照片儿是好照片儿?(引子)
│ │ │ ├─第四十三封信-有意为之的偶然(ImageslaSauvette)
│ │ │ ├─第四十九封信-什么照片儿是好照片儿?(难拍)
│ │ │ ├─第四十二封信-有意为之的偶然(创造画面)
│ │ │ ├─第四十五封信-意欲难平的执念
│ │ │ ├─第四十八封信-什么照片儿是好照片儿?(好看)
│ │ │ ├─第四十六封信-贪嗔痴慢疑
│ │ │ ├─第四十四封信-有意为之的偶然(生活的假象)
│ │ │ ├─第四十封信-拍照片儿如果只是拍照片儿该多好
│ │ │ ├─第四封信-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极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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语言极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-第一模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─02-微服务安全要解决什么问题
│ │ ├─03-白话OAuth2
│ │ ├─04-OAuth2的正式定义
│ │ ├─05-OAuth2有哪些典型模式
│ │ ├─06-OAuth2模式该如何选型
│ │ ├─07-SpringSecurityOAuth2架构简介
│ │ ├─08-【实验】授权码模式授权服务器
│ │ ├─09-【实验】简化模式授权服务器
│ │ ├─10-【实验】密码模式授权服务器
│ │ ├─100-Hystrix生产最佳实践
│ │ ├─101-参考资源和后续课程预览
│ │ ├─102-第六模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-第七模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-第二模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-第三模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-第四模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-第五模块极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍: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-极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ │ ├─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-如何设计课程亮点与互动:锁定学生的注意力
│ │ └─极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ ├─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|再回首:“判断循环”单元小结
│ │ ├─内容综述:明确学习目的
│ │ └─极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍:这次我们都做了哪些升级?
│ ├─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-极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程介绍
│ ├─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-课程总结

点击获取课程资源:极客时间-专栏+视频svip会员|持续更新|重磅首发|2022年12月已更新课程资源下载

https://zy.98ke.com/zyjn/65695.html?ref=9398

0

评论0

没有账号? 注册  忘记密码?