左耳听风 / 洞悉技术的本质,享受科技的乐趣
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
 
  • 课程目录
  • 课程介绍
  • 开篇词 | 洞悉技术的本质,享受科技的乐趣

    “左耳朵耗子”陈皓,仅在小范围分享的独家秘籍。

  • 01 | 程序员如何用技术变现(上)

    “手艺人”陈皓手把手教你如何通过自己的手艺“编程”变现。

  • 02 | 程序员如何用技术变现(下)

    “手艺人”陈皓教你如何让自己的“手艺”更值钱。

  • 03 | Equifax信息泄露始末

    解读Equifax大规模信息泄露始末,并从技术角度分析形成本次安全事件的原因。

  • 04 | 从Equifax信息泄露看数据安全

    分析互联网时代的几次大规模数据泄露事件背后的原因,给出解决这类安全问题的技术手段和方法。

  • 05 | 何为技术领导力?

    技术领导力并不是一个职称,一个人事组织者,而是技术上的领先,技术上的优势。

  • 06 | 如何才能拥有技术领导力?

    吃透基础技术、提高学习能力、坚持做正确的事、高标准要求自己,不仅会让你全面提升技术技能,还能很好地锻炼自己的技术思维,进而形成技术领导力。

  • 07 | 推荐阅读:每个程序员都该知道的知识

    左耳朵耗子推荐的阅读列表,内容涵盖每一个技术人员都需要知道的知识,适合体系化学习和思考。

  • 08 | Go语言,Docker和新技术

    学习关键新技术,收获最大的往往不仅是这些技术本身,而是可以了解一个技术的变迁和行业的发展。

  • 09 | 答疑解惑:渴望、热情和选择

    尽量关注自己会得到的东西,而不是自己会失去的东西。因为无论你怎么选,你都会有得有失的。

  • 10 | 如何成为一个大家愿意追随的Leader?

    做一个好的Leader真的不容易,需要强大和被人信赖,需要保持热情和朝气,需要带领团队守护理想,还需要直面困难迎刃而上……

  • 11 | 程序中的错误处理:错误返回码和异常捕捉

    是返回错误状态,还是用异常捕捉的方式处理错误,不仅要结合使用场景来判断,还要从程序设计的角度进行思考。

  • 12 | 程序中的错误处理:异步编程以及我的最佳实践

    对于同一个地方不停的报错,最好不要都打到日志里。

  • 13 | 魔数 0x5f3759df

    可能是编程世界里最经典的魔数的故事。

  • 14 | 推荐阅读:机器学习101

    左耳朵耗子的机器学习入门“心法”及优质学习资源推荐。

  • 15 | 时间管理:同扭曲时间的事儿抗争

    你要主动管理的不是你的时间,而是管理你的同事,管理你的信息。

  • 16 | 时间管理:如何利用好自己的时间?

    其实,时间就像金钱一样,你得学会投资时间。把时间投资在有价值有意义的地方,你就会有更多的时间。

  • 17 | 故障处理最佳实践:应对故障

    出现故障时,最重要的不是debug故障,而是尽可能地减少故障的影响范围,并尽可能快地修复问题

  • 18 | 故障处理最佳实践:故障改进

    一个技术问题,后面隐藏的是工程能力问题,工程能力问题后面隐藏的是管理问题,管理问题后面隐藏的是一个公司文化的问题……

  • 19 | 答疑解惑:我们应该能够识别的表象和本质

    兴趣只是开始,而能让人不断投入时间和精力的则是正反馈,是成就感。

  • 20 | Git协同工作流,你该怎么选?

    与其花时间在 Git 协同工作流上,还不如把时间花在调整软件架构和自动化软件生产和运维流程上来,这才是真正简化协同工作流程的根本。

  • 21 | 分布式系统架构的冰与火

    为什么需要分布式系统,而不是传统的单体架构。主要有两方面原因:增大系统容量和加强系统可用。

  • 22 | 从亚马逊的实践,谈分布式系统的难点

    构建分布式服务需要从组织,到软件工程,再到技术上的一次大的改造,需要比较长的时间来磨合和改进,并不断地总结教训和成功经验。

  • 23 | 分布式系统的技术栈

    做分布式系统最大的坑就是,需要具备一个成本巨高无比的技术栈,看着就都头晕。要投入大量的人力、物力和时间才能实现。

  • 24 | 分布式系统关键技术:全栈监控

    全栈系统监控尤其重要,它就像是我们的眼睛,没有它,我们根本不知道系统到底发生了什么。

  • 25 | 分布式系统关键技术:服务调度

    微服务是服务依赖最优解的上限,而服务依赖的下限是千万不要有依赖环。

  • 26 | 分布式系统关键技术:流量与数据调度

    真正完整解决数据 Scale 问题的应该还是数据结点自身。

  • 27 | 洞悉PaaS平台的本质

    一个好的 PaaS 平台应该具有分布式、服务化、自动化部署、高可用、敏捷以及分层开放的特征,并可与 IaaS 实现良好的联动。

  • 28 | 推荐阅读:分布式系统架构经典资料

    最赞的是,作者将各种各样的技术的本质非常好地关联在一起,帮你触类旁通。

  • 29 | 推荐阅读:分布式数据调度相关论文

    这些论文和相关的工程实践以及开源项目,相信可以让你在细节方面对分布式中最难的一块——数据调度方面有更多的认识。

  • 30 | 编程范式游记(1)- 起源

    《编程范式游记》系列文章,带你了解各主流编程语言的特性,更启发你深入理解编程的本质。

  • 31 | 编程范式游记(2)- 泛型编程

    C++语言是如何通过泛型来解决C语言遇到的问题的?

  • 32 | 编程范式游记(3) - 类型系统和泛型的本质

    泛型编程的本质是屏蔽掉数据和操作数据的细节,让算法更为通用,让编程者更多地关注算法的结构,而不是在算法中处理不同的数据类型。

  • 33 | 编程范式游记(4)- 函数式编程

    函数式编程的核心思想是将运算过程尽量写成一系列嵌套的函数调用,关注的是做什么而不是怎么做。

  • 34 | 编程范式游记(5)- 修饰器模式

    以Python和Go的Decorator为例,讲述Decorator是如何工作的?

  • 35 | 编程范式游记(6)- 面向对象编程

    面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反。

  • 36 | 编程范式游记(7)- 基于原型的编程范式

    基于原型的编程其实也是面向对象编程的一种方式。没有 class 化的,直接使用对象。

  • 37 | 编程范式游记(8)- Go 语言的委托模式

    Go通过委托扩展原有的功能,不关心里面的数据类型。

  • 38 | 编程范式游记(9)- 编程的本质

    绝大多数程序复杂混乱的根本原因:业务逻辑与控制逻辑的耦合。

  • 39 | 编程范式游记(10)- 逻辑编程范式

    逻辑编程的要点是将正规的逻辑风格带入计算机程序设计之中。

  • 40 | 编程范式游记(11)- 程序世界里的编程范式

    既然函数式编程这么好,为什么函数式编程火不起来呢?

  • 41 | 弹力设计篇之“认识故障和弹力设计”

    在确保系统正确性的前提下,系统的可用性是弹力设计保障的重点。

  • 42 | 弹力设计篇之“隔离设计”

    软件设计当然也“漏水”,所以为了不让这个“故障”蔓延开来,需要使用“隔板”技术,来将架构分隔成多个“船舱”来隔离故障。

  • 43 | 弹力设计篇之“异步通讯设计”

    异步通讯最重要的是解耦服务间的依赖。最佳解耦的方式是通过Broker的机制。

  • 44 | 弹力设计篇之“幂等性设计”

    幂等性的含义是,一个调用被发送多次所产生的总的副作用和被发送一次所产生的副作用是一样的。而服务调用有三种结果:成功、失败和超时,其中超时是我们需要解决的问题。

  • 45 | 弹力设计篇之“服务的状态”

    在容错设计中,服务状态是非常复杂的。尤其对于运维来说,要调度服务就要调度服务的状态,迁移服务的状态就需要迁移服务的数据。在数据量比较大的情况下,就更为困难了。

  • 46 | 弹力设计篇之“补偿事务”

    业务补偿主要做两件事:第一,努力将一个业务流程执行完成;第二,如果执行不下去,需要启动补偿机制,回滚业务流程。

  • 47 | 弹力设计篇之“重试设计”

    " 重试 " 的语义是,我们认为这个故障是暂时的,而不是永久的,所以,我们会去重试。

  • 48 | 弹力设计篇之“熔断设计”

    前面说过重试机制,如果错误太多,或是在短时间内得不到修复,那么重试就没有意义了,此时应该开启熔断操作。尤其是,后端太忙的时候,使用熔断设计可以保护后端不会过载。

  • 49 | 弹力设计篇之“限流设计”

    如何用限流设计确保系统不会在过载的情况下导致问题?

  • 50 | 弹力设计篇之“降级设计”

    降级设计的本质是解决资源不足和访问量过大的问题。

  • 51 | 弹力设计篇之“弹力设计总结”

    这篇文章中有弹力设计总图,带你将各种弹力设计模式融会贯通,并且介绍了分布式系统开发和运维实践。

  • 52 | 管理设计篇之“分布式锁”

    分布式锁服务应该是高可用的,而且是需要持久化的。

  • 53 | 管理设计篇之“配置中心”

    配置中心的设计重点应该放在如何统一和标准化软件的配置项,还会涉及软件版本、运行环境、平台、中间件等一系列配置参数。

  • 54 | 管理设计篇之“边车模式”

    边车模式重点要解决控制和逻辑的分离,以及服务调用中上下文的问题。

  • 55 | 管理设计篇之“服务网格”

    在工程中,Service Mesh 基本来说是一组轻量级的服务代理和应用逻辑的服务在一起,并且对于应用服务是透明的。

  • 56 | 管理设计篇之“网关模式”

    网关模式可以细到为每个服务的实例配置上一个自己的 Gateway,也可以粗到为一组服务配置一个,甚至粗到为整个架构配置一个接入的 Gateway。

  • 57 | 管理设计篇之“部署升级策略”

    本文讲述了停机、蓝绿、滚动、灰度和AB测试等部署升级策略的含义和优缺点,并放在一起进行了比较,给出了其各自适合应用的场景。

  • 58 | 性能设计篇之“缓存”

    缓存设计的重点,除了性能之外,在分布式架构下和公网环境下,对缓存集群、一致性、LRU的锁竞争、爬虫等多方面都需要考虑。

  • 59 | 性能设计篇之“异步处理”

    异步系统所带来的好处是让我们的系统可以统一调度。

  • 60 | 性能设计篇之“数据库扩展”

    请不要走哈希散列的分片方式,除非有个人拿着把刀把你逼到墙角,你马上就有生命危险。

  • 61 | 性能设计篇之“秒杀”

    解决秒杀这种特定业务场景,可以使用 CDN 的边缘结点来扛流量,然后过滤用户请求,来保护数据中心的系统。

  • 62 | 性能设计篇之“边缘计算”

    数据量越来越大,分析结果的速度需要越来越快,这两个需求,只会把我们逼到边缘计算上去。

  • 63 | 区块链技术的本质

    真正让区块链做到非常难篡改的是工作量证明的共识机制。

  • 64 | 区块链技术细节:哈希算法

    哈希算法极大程度地解决了区块链中交易信息不能被篡改的问题。

  • 65 | 区块链技术细节:加密和挖矿

    为了保证每10分钟产生一个区块,当算力不足的时候,挖矿难度下降,当算力充足的时候,难度提高。

  • 66 | 区块链技术细节:去中心化的共识机制

    PoW(工作量证明机制)让整个去中心化系统的一致性,不再以人数多认可的数据为准,而是以算力多的人认可的数据为准。

  • 67 | 区块链技术细节:智能合约

    以太坊的智能合约其实就是一段可执行的程序片段。看来,我程序员离统治世界又进了一步。

  • 68 | 区块链技术 - 传统金融和虚拟货币

    去中心化就是好吗?我们不需要权威机构了吗?技术可以解决信任问题吗?

  • 69 | 程序员练级攻略:开篇词

    《程序员练级攻略(2018)》中的内容会更多也更专业,涵盖入门、程序员修养、专业基础、软件设计、高手成长等五大篇章,让你有更坚固的技术基础,有更高更广泛的提高。

  • 70 | 程序员练级攻略:零基础启蒙

    推荐Python和JavaScript作为入门语言,让你尽快上手,获得成就感。随后介绍了Linux操作系统、VS Code编程工具、Web编程入门等学习资料……

  • 71 | 程序员练级攻略:正式入门

    正式入门,我推荐编程语言里综合实力最强的Java,随后推荐了更为专业使用的编程工具,如编程的IDE、版本管理工具Git、调试前端程序和数据库设计工具……

  • 72 | 程序员练级攻略:程序员修养

    有修养的程序员才可能成长为真正的工程师和架构师,而没有修养的程序员只能沦为码农。

  • 73 | 程序员练级攻略:编程语言

    一个合格的程序员应该掌握几门语言,不仅会让你对不同的语言进行比较,让你有更多的思考,而且也是一种学习能力的培养。

  • 74 | 程序员练级攻略:理论学科

    这些理论知识可以说是计算机科学这门学科最精华的知识了,认真学习,理解其背后的逻辑和思维方式,会令你受益匪浅。

  • 75 | 程序员练级攻略:系统知识

    你至少要掌握三个系统的基础知识——操作系统,网络系统和数据库系统,它们分别代表着计算机基础构架的三大件——计算、存储、网络。

  • 76 | 程序员练级攻略:软件设计

    Linus 说过,这世界程序员之所有高下之分,最大的区别就是程序员的“品味”不一样。而对软件设计的学习是提高“品位”的关键。

  • 77 | 程序员练级攻略:Linux系统、内存和网络

    你只需要日进一步,3-5 年后,你就会发现,绝大多数人都在你身后很远的地方了。

  • 78 | 程序员练级攻略:异步I/O模型和Lock-Free编程

    如果想开发出一个高性能的程序,你非常有必要学习 Lock-Free 的编程方式。

  • 79 | 程序员练级攻略:Java底层知识

    Java最黑科技的玩法是字节码编程,从而使得Java这门静态语言在运行时可以进行各种动态的代码修改。

  • 80 | 程序员练级攻略:数据库

    数据是整个系统中关键中的关键,程序员不仅需要设计数据模型,还要保证整体系统的稳定性和可用性,所以作为程序员的你必须要了解最重要的数据存储——数据库。

  • 81 | 程序员练级攻略:分布式架构入门

    本文中推荐的资料基本涵盖了所有与系统架构相关的技术,足够这世上90%以上的公司用了,只有超级巨型的公司才有可能使用更高层次的技术。

  • 82 | 程序员练级攻略:分布式架构经典图书和论文

    分布式架构方面的经典图书和论文,涵盖了分布式系统架构方面的所有关键的理论知识,非常重要,请一定要认真学习。

  • 83 | 程序员练级攻略:分布式架构工程设计

    要学好分布式架构,首先需要学习一些架构指导性的文章和方法论,即分布式架构设计原则。

  • 84 | 程序员练级攻略:微服务

    微服务中有很多很不错的想法和理念,所以学习微服务是每一个技术人员迈向卓越的架构师的必经之路。

  • 85 | 程序员练级攻略:容器化和自动化运维

    Docker和Kubernetes已经是分布式架构和自动化运维的必需品了,虽然玩法和传统运维不一样,但技术上并不复杂,只要你花上一点时间,一定会学好的。

  • 86 | 程序员练级攻略:机器学习和人工智能

    这篇文章主要给了一些基础性的知识,包括基本原理、图书、课程、文章和相关算法。你顺着我画的这路走,成为一个机器学习的高级工程师甚至准专家还是可能的。

  • 87 | 程序员练级攻略:前端基础和底层原理

    本文主要讲述了HTML5、CSS3和JavaScript(ES6)这三大基础核心,并推荐学习浏览器原理和网络协议等基本原理。

  • 88 | 程序员练级攻略:前端性能优化和框架

    React.js使用函数式编程方式,更加符合后端程序员的思路,而Vue是更符合前端工程师习惯的框架。

  • 89 | 程序员练级攻略:UI/UX设计

    我并不认为UI/UX设计这些内容只是设计师要学习的,如果你要成为一个前端程序员,那么学习这些设计上的东西可以让你有更好的成长空间。

  • 90 | 程序员练级攻略:技术资源集散地

    学习需要自我驱动,要学会自己“找食物”,而不是“等着喂”。《程序员练级攻略》只是一个起点,引发你去走更远的路。

  • 91 | 程序员面试攻略:面试前的准备

    简历上的信息不要写太多,信息太多相当于没有信息,不要单纯地罗列,要突出自己的长处和技能。

  • 92 | 程序员面试攻略:面试中的技巧

    面试中有一些问题很难,但不要放弃。很多时候,面试官只是想看一下你的态度和思维方式。

  • 93 | 程序员面试攻略:面试风格

    有些面试官会从一个简单的编码题开始,然后不断地加需求或是改需求。这时,你不要马上实现新的需求,而是应该和面试官讨论需求。

  • 94 | 程序员面试攻略:实力才是王中王

    实力才是王中王,想成功进入BAT,拿到年薪30万、50万、60万的岗位,其实并没有你想的那么难。

  • 95 | 高效学习:端正学习态度

    如果你不能克服自己DNA中的弱点,不能端正自己的态度,不能坚持不能不断追问等,那么,无论有多好的方法,你都不可能学好。

  • 96 | 高效学习:源头、原理和知识地图

    学习并不是为了要记忆那些知识点,而是为了要找到一个知识的地图,你在这个地图上能通过关键路径找到你想要的答案。

  • 97 | 高效学习:深度,归纳和坚持实践

    学习的开始阶段,可以不急于总结归纳,不急于下判断,做结论,而应该保留部分知识的不确定性,保持对知识的开放状态。

  • 98 | 高效学习:如何学习和阅读代码

    如果想了解思想、方法和原理,读书和读文档会更有效率;如果想知道具体细节,还是应该读代码。

  • 99 | 高效学习:面对枯燥和量大的知识

    面对如此量大的知识,你一定不要学在表面上,一定要学到本质上、原理上,一定要学那些不容易改变,能经得住时间考验的东西。

  • 100 | 高效沟通:Talk和Code同等重要

    学习能力能让你的根越扎越深,无论遇到什么狂风暴雨,你都可以屹立不倒,而沟通能力则是树杆和枝叶,它们能让你伸展到更高更远的天空。

  • 101 | 高效沟通:沟通阻碍和应对方法

    不要绕弯子,有话直说,这是最高效的沟通方式,既是对对方的一种信任,也是一种对自己的尊重,而且事情往往能得到更好的解决。

  • 102 | 高效沟通:沟通方式及技巧

    知道自己要什么和不要什么,你才会表现出有力量的观点和话语。而这些被强化过的观点和话语,只需要一句,就会在对方脑子里形成一个小爆点。

  • 103 | 高效沟通:沟通技术

    在和人争论时,如果要反驳,那一定要低维度反驳,越细节越好。而在说服对方时,则要在高维度说服对方,越宏观越好。

  • 104 | 高效沟通:好老板要善于提问

    永远不要给员工答案,要让员工给你答案,而且不要只给一个答案,一定要给多个答案。然后让他们比较这些答案,促使他们深入地进行思考。

  • 105 | 高效沟通:好好说话的艺术

    倾听老板会有一些出乎你的意料的发现,你要能了解老板背后的苦衷,那些才是最重要的。

  • 结束语 | 业精于勤,行成于思

    [本文音频由耗子叔倾情录制] 这个世界上的知识就像阳光和空气一样,根本不需要付费,就可以获得的,但问题是,大多数人都失去了获取知识的能力,需要人喂……

  • 加餐 | 谈谈我的“三观”

    世界观代表你是怎么看这个世界的,人生观代表你想成为什么样的人,价值观则代表你觉得什么对你来说更重要。

ARTS打卡限时福利,全年大专栏《左耳听风》原价¥299,团购价¥199,点击按钮“去参团”加入。

参团后可联系管理员加入 ARTS 打卡读者群。

《左耳听风 | ARTS 打卡召集令》

专栏介绍

“左耳听风”专栏是由陈皓(网名“左耳朵耗子”)贡献和维护的全年付费专栏。

陈皓,人称耗子叔,是一位四十多岁的中年老男人,体型肥胖,白发苍苍,观点鲜明,个性十足。

他有20年软件开发及相关工作经验,先后在阿里巴巴、亚马逊、汤森路透等知名公司任职,对IT底层技术平台有深入的了解,尤其在大规模分布式系统的基础架构方面颇有研究。此外,他在团队管理、项目管理,以及程序员个人成长等方面也有自己一套独特的见解和方法。

从2002年开始写技术博客,到2009年左右在独立域名 CoolShell.cn(酷壳)上分享技术观点和实践总结,陈皓通过一篇篇观点鲜明、文风犀利的文章吸引了大量IT从业人员的关注,影响了成千上万程序员在技术选型、求职就业、个人成长等方面的思考和发展。

虽然有些会被读者认同,有些则会引来争议,但他一直坚持观点鲜明的写作风格,并希望这些观点能引起大家的讨论和点评。他认为,只有这样,分享才更有意义,也能让大家都能从中收获更多。

除了继续保持观点鲜明、犀利的行文风格,在“左耳听风”专栏中的每篇文章都是陈皓对自己多年“堵过的枪眼儿”“填过的坑儿”的深入思考和凝练,是一些与个人或企业切身利益相关的内容,或者说是更具指导性、更为商业化的内容。用他自己的话说,是一些非常来之不易的宝贵经验。

全年目录

unpreview

左耳资料库(持续更新中)

你觉得怎么样?期待您评价: