极客时间|左耳听风 文章目录
Table of Contents
- 开篇词 | 洞悉技术的本质,享受科技的乐趣
- 01 | 程序员如何用技术变现(上)
- 02 | 程序员如何用技术变现(下)
- 03 | Equifax信息泄露始末
- 04 | 从Equifax信息泄露看数据安全
- 05 | 何为技术领导力
- 06 | 如何拥有技术领导力
- 07 | 推荐阅读:每个程序员都该知道的事
- 08 | Go语言,Docker和新技术
- 09 | 答疑解惑:渴望、热情和选择
- 10 | 如何成为一个大家愿意追随的Leader?
- 11 | 程序中的错误处理:错误返回码和异常捕捉
- 12 | 程序中的错误处理:异步编程和最佳实践
- 13 | 魔数 0x5f3759df
- 14 | 推荐阅读:机器学习101
- 15 | 时间管理:同扭曲时间的事儿抗争
- 16 | 时间管理:投资赚取时间
- 17 | 故障处理最佳实践:应对故障
- 18 | 故障处理最佳实践:故障改进
- 19 | 答疑解惑:我们应该能够识别的表象和本质
- 20 | 分布式系统架构的冰与火
- 21 | 从亚马逊的实践,谈分布式系统的难点
- 22 | 分布式系统的技术栈
- 23 | 分布式系统关键技术:全栈监控
- 24 | 分布式系统关键技术:服务调度
- 25 | 分布式系统关键技术:流量与数据调度
- 26 | 洞悉PaaS平台的本质
- 27 | 推荐阅读:分布式系统架构经典资料
- 28 | 编程范式游记(1)- 起源
- 29 | 编程范式游记(2)- 泛型编程
- 30 | 编程范式游记(3) - 类型系统和泛型的本质
- 31 | Git协同工作流,你该怎样选
- 32 | 推荐阅读:分布式数据调度相关论文
- 33 | 编程范式游记(4)- 函数式编程
- 34 | 编程范式游记(5)- 修饰器模式
- 35 | 编程范式游记(6)- 面向对象编程
- 36 | 编程范式游记(7)- 基于原型的编程范式
- 37 | 编程范式游记(8)- Go 语言的委托模式
- 38 | 编程范式游记(9)- 编程的本质
- 39 | 编程范式游记(10)- 逻辑编程范式
- 40 | 编程范式游记(11)- 程序世界里的编程范式
- 41 | 弹力设计篇之“认识故障和弹力设计”
- 42 | 弹力设计篇之“隔离设计”
- 43 | 弹力设计篇之“异步通讯设计”
- 44 | 弹力设计篇之“幂等性设计”
- 45 | 弹力设计篇之“服务的状态”
- 46 | 弹力设计篇之“补偿事务”
- 47 | 弹力设计篇之“重试设计”
- 48 | 弹力设计篇之“熔断设计”
- 49 | 弹力设计篇之“限流设计”
- 50 | 弹力设计篇之“降级设计”
- 51 | 弹力设计篇之“弹力设计总结”
- 52 | 区块链技术 - 区块链的革命性及技术概要
- 53 | 区块链技术 - 区块链技术细节 - 哈希算法
- 54 | 区块链技术 - 区块链技术细节 - 加密和挖矿
- 55 | 区块链技术 - 去中心化的共识机制
- 56 | 区块链技术 - 智能合约
- 57 | 区块链技术 - 传统金融和虚拟货币
- 58 | 管理设计篇之"分布式锁"
- 59 | 管理设计篇之"配置中心"
- 60 | 管理设计篇之"边车模式"
- 61 | 管理设计篇之"服务网格"
- 62 | 管理设计篇之"网关模式"
- 63 | 管理设计篇之"部署升级策略"
- 64 | 性能设计篇之"缓存"
- 65 | 性能设计篇之"异步处理"
- 66 | 性能设计篇之"数据库扩展"
- 67 | 性能设计篇之"秒杀"
- 68 | 性能设计篇之"边缘计算"
- 69 | 程序员练级攻略(2018):开篇词
- 70 | 程序员练级攻略(2018):零基础启蒙
- 71 | 程序员练级攻略(2018):正式入门
- 72 | 程序员练级攻略(2018):程序员修养
- 73 | 程序员练级攻略(2018):编程语言
- 74 | 程序员练级攻略(2018):理论学科
- 75 | 程序员练级攻略(2018):系统知识
- 76 | 程序员练级攻略(2018):软件设计
- 77 | 程序员练级攻略(2018):Linux系统、内存和网络
- 78 | 程序员练级攻略(2018):异步I/O模型和Lock-Free编程
- 79 | 程序员练级攻略(2018):Java底层知识
- 80 | 程序员练级攻略(2018):数据库
- 81 | 程序员练级攻略(2018):分布式架构入门
- 82 | 程序员练级攻略(2018):分布式架构经典图书和论文
- 83 | 程序员练级攻略(2018):分布式架构工程设计
- 84 | 程序员练级攻略(2018):微服务
- 85 | 程序员练级攻略(2018):容器化和自动化运维
- 86 | 程序员练级攻略(2018):机器学习和人工智能
- 87 | 程序员练级攻略(2018):前端基础和底层原理
- 88 | 程序员练级攻略(2018):前端性能优化和框架
- 89 | 程序员练级攻略(2018):UI/UX设计
- 90 | 程序员练级攻略(2018):技术资源集散地
- 91 | 程序员面试攻略:面试前的准备
- 92 | 程序员面试攻略:面试中的技巧
- 93 | 程序员面试攻略:面试风格
- 94 | 程序员面试攻略:实力才是王中王
- 95 | 高效学习:端正学习态度
- 96 | 高效学习:源头、原理和知识地图
- 97 | 高效学习:深度,归纳和坚持实践
- 98 | 高效学习:如何学习和阅读代码
- 99 | 高效学习:面对枯燥和量大的知识
- 100 | 高效沟通:Talk和Code同等重要
- 101 | 高效沟通:沟通阻碍和应对方法
- 102 | 高效沟通:沟通方式及技巧
- 103 | 高效沟通:沟通技术
- 104 | 高效沟通:好老板要善于提问
- 105 | 高效沟通:好好说话的艺术
- 结束语 | 业精于勤,行成于思
开篇词 | 洞悉技术的本质,享受科技的乐趣
“左耳朵耗子”陈皓,仅在小范围分享的独家秘籍。
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 | 分布式系统架构的冰与火
为什么需要分布式系统,而不是传统的单体架构。主要有两方面原因:增大系统容量和加强系统可用。
21 | 从亚马逊的实践,谈分布式系统的难点
构建分布式服务需要从组织,到软件工程,再到技术上的一次大的改造,需要比较长的时间来磨合和改进,并不断地总…
22 | 分布式系统的技术栈
做分布式系统最大的坑就是,需要具备一个成本巨高无比的技术栈,看着就都头晕。要投入大量的人力、物力和时间才…
23 | 分布式系统关键技术:全栈监控
全栈系统监控尤其重要,它就像是我们的眼睛,没有它,我们根本不知道系统到底发生了什么。
24 | 分布式系统关键技术:服务调度
微服务是服务依赖最优解的上限,而服务依赖的下限是千万不要有依赖环。
25 | 分布式系统关键技术:流量与数据调度
真正完整解决数据 Scale 问题的应该还是数据结点自身。
26 | 洞悉PaaS平台的本质
一个好的 PaaS 平台应该具有分布式、服务化、自动化部署、高可用、敏捷以及分层开放的特征,并可与 IaaS 实…
27 | 推荐阅读:分布式系统架构经典资料
最赞的是,作者将各种各样的技术的本质非常好地关联在一起,帮你触类旁通。
28 | 编程范式游记(1)- 起源
《编程范式游记》系列文章,带你了解各主流编程语言的特性,更启发你深入理解编程的本质。
29 | 编程范式游记(2)- 泛型编程
C++语言是如何通过泛型来解决C语言遇到的问题的?
30 | 编程范式游记(3) - 类型系统和泛型的本质
泛型编程的本质是屏蔽掉数据和操作数据的细节,让算法更为通用,让编程者更多地关注算法的结构,而不是在算法中…
31 | Git协同工作流,你该怎样选
与其花时间在 Git 协同工作流上,还不如把时间花在调整软件架构和自动化软件生产和运维流程上来,这才是真正…
32 | 推荐阅读:分布式数据调度相关论文
这些论文和相关的工程实践以及开源项目,相信可以让你在细节方面对分布式中最难的一块——数据调度方面有更多的…
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 | 区块链技术 - 区块链技术细节 - 加密和挖矿
为了保证每10分钟产生一个区块,当算力不足的时候,挖矿难度下降,当算力充足的时候,难度提高。
55 | 区块链技术 - 去中心化的共识机制
PoW(工作量证明机制)让整个去中心化系统的一致性,不再以人数多认可的数据为准,而是以算力多的人认可的数据…
56 | 区块链技术 - 智能合约
以太坊的智能合约其实就是一段可执行的程序片段。看来,我程序员离统治世界又进了一步。
57 | 区块链技术 - 传统金融和虚拟货币
去中心化就是好吗?我们不需要权威机构了吗?技术可以解决信任问题吗?
58 | 管理设计篇之"分布式锁"
分布式锁服务应该是高可用的,而且是需要持久化的。
59 | 管理设计篇之"配置中心"
配置中心的设计重点应该放在如何统一和标准化软件的配置项,还会涉及软件版本、运行环境、平台、中间件等一系列…
60 | 管理设计篇之"边车模式"
边车模式重点要解决控制和逻辑的分离,以及服务调用中上下文的问题。
61 | 管理设计篇之"服务网格"
在工程中,Service Mesh 基本来说是一组轻量级的服务代理和应用逻辑的服务在一起,并且对于应用服务是透明的…
62 | 管理设计篇之"网关模式"
网关模式可以细到为每个服务的实例配置上一个自己的 Gateway,也可以粗到为一组服务配置一个,甚至粗到为整个…
63 | 管理设计篇之"部署升级策略"
本文讲述了停机、蓝绿、滚动、灰度和AB测试等部署升级策略的含义和优缺点,并放在一起进行了比较,给出了其各自…
64 | 性能设计篇之"缓存"
缓存设计的重点,除了性能之外,在分布式架构下和公网环境下,对缓存集群、一致性、LRU的锁竞争、爬虫等多方面…
65 | 性能设计篇之"异步处理"
异步系统所带来的好处是让我们的系统可以统一调度。
66 | 性能设计篇之"数据库扩展"
请不要走哈希散列的分片方式,除非有个人拿着把刀把你逼到墙角,你马上就有生命危险。
67 | 性能设计篇之"秒杀"
解决秒杀这种特定业务场景,可以使用 CDN 的边缘结点来扛流量,然后过滤用户请求,来保护数据中心的系统。
68 | 性能设计篇之"边缘计算"
数据量越来越大,分析结果的速度需要越来越快,这两个需求,只会把我们逼到边缘计算上去。
69 | 程序员练级攻略(2018):开篇词
《程序员练级攻略(2018)》中的内容会更多也更专业,涵盖入门、程序员修养、专业基础、软件设计、高手成长等五…
70 | 程序员练级攻略(2018):零基础启蒙
推荐Python和JavaScript作为入门语言,让你尽快上手,获得成就感。随后介绍了Linux操作系统、VS Code编程工具…
71 | 程序员练级攻略(2018):正式入门
正式入门,我推荐编程语言里综合实力最强的Java,随后推荐了更为专业使用的编程工具,如编程的IDE、版本管理工…
72 | 程序员练级攻略(2018):程序员修养
有修养的程序员才可能成长为真正的工程师和架构师,而没有修养的程序员只能沦为码农。
73 | 程序员练级攻略(2018):编程语言
一个合格的程序员应该掌握几门语言,不仅会让你对不同的语言进行比较,让你有更多的思考,而且也是一种学习能力…
74 | 程序员练级攻略(2018):理论学科
这些理论知识可以说是计算机科学这门学科最精华的知识了,认真学习,理解其背后的逻辑和思维方式,会令你受益匪…
75 | 程序员练级攻略(2018):系统知识
你至少要掌握三个系统的基础知识——操作系统,网络系统和数据库系统,它们分别代表着计算机基础构架的三大件—…
76 | 程序员练级攻略(2018):软件设计
Linus 说过,这世界程序员之所有高下之分,最大的区别就是程序员的“品味”不一样。而对软件设计的学习是提高…
77 | 程序员练级攻略(2018):Linux系统、内存和网络
你只需要日进一步,3-5 年后,你就会发现,绝大多数人都在你身后很远的地方了。
78 | 程序员练级攻略(2018):异步I/O模型和Lock-Free编程
如果想开发出一个高性能的程序,你非常有必要学习 Lock-Free 的编程方式。
79 | 程序员练级攻略(2018):Java底层知识
Java最黑科技的玩法是字节码编程,从而使得Java这门静态语言在运行时可以进行各种动态的代码修改。
80 | 程序员练级攻略(2018):数据库
数据是整个系统中关键中的关键,程序员不仅需要设计数据模型,还要保证整体系统的稳定性和可用性,所以作为程序…
81 | 程序员练级攻略(2018):分布式架构入门
本文中推荐的资料基本涵盖了所有与系统架构相关的技术,足够这世上90%以上的公司用了,只有超级巨型的公司才有…
82 | 程序员练级攻略(2018):分布式架构经典图书和论文
分布式架构方面的经典图书和论文,涵盖了分布式系统架构方面的所有关键的理论知识,非常重要,请一定要认真学习…
83 | 程序员练级攻略(2018):分布式架构工程设计
要学好分布式架构,首先需要学习一些架构指导性的文章和方法论,即分布式架构设计原则。
84 | 程序员练级攻略(2018):微服务
微服务中有很多很不错的想法和理念,所以学习微服务是每一个技术人员迈向卓越的架构师的必经之路。
85 | 程序员练级攻略(2018):容器化和自动化运维
Docker和Kubernetes已经是分布式架构和自动化运维的必需品了,虽然玩法和传统运维不一样,但技术上并不复杂,只…
86 | 程序员练级攻略(2018):机器学习和人工智能
这篇文章主要给了一些基础性的知识,包括基本原理、图书、课程、文章和相关算法。你顺着我画的这路走,成为一个…
87 | 程序员练级攻略(2018):前端基础和底层原理
本文主要讲述了HTML5、CSS3和JavaScript(ES6)这三大基础核心,并推荐学习浏览器原理和网络协议等基本原理。
88 | 程序员练级攻略(2018):前端性能优化和框架
React.js使用函数式编程方式,更加符合后端程序员的思路,而Vue是更符合前端工程师习惯的框架。
89 | 程序员练级攻略(2018):UI/UX设计
我并不认为UI/UX设计这些内容只是设计师要学习的,如果你要成为一个前端程序员,那么学习这些设计上的东西可以…
90 | 程序员练级攻略(2018):技术资源集散地
学习需要自我驱动,要学会自己“找食物”,而不是“等着喂”。《程序员练级攻略》只是一个起点,引发你去走更远…
91 | 程序员面试攻略:面试前的准备
简历上的信息不要写太多,信息太多相当于没有信息,不要单纯地罗列,要突出自己的长处和技能。
92 | 程序员面试攻略:面试中的技巧
面试中有一些问题很难,但不要放弃。很多时候,面试官只是想看一下你的态度和思维方式。只要你能证明自己解决问…
93 | 程序员面试攻略:面试风格
有些面试官会从一个简单的编码题开始,然后不断地加需求或是改需求。这时,你不要马上实现新的需求,而是停下来…
94 | 程序员面试攻略:实力才是王中王
实力才是王中王,想成功进入BAT,拿到年薪30万、50万、60万的岗位,其实并没有你想的那么难。
95 | 高效学习:端正学习态度
如果你不能克服自己DNA中的弱点,不能端正自己的态度,不能自律,不能坚持,不能举一反三,不能不断追问等,那…
96 | 高效学习:源头、原理和知识地图
学习并不是为了要记忆那些知识点,而是为了要找到一个知识的地图,你在这个地图上能通过关键路径找到你想要的答…
97 | 高效学习:深度,归纳和坚持实践
学习的开始阶段,可以不急于总结归纳,不急于下判断,做结论,而应该保留部分知识的不确定性,保持对知识的开放…
98 | 高效学习:如何学习和阅读代码
如果想了解思想、方法和原理,读书和读文档会更有效率;如果想知道具体细节,还是应该读代码。
99 | 高效学习:面对枯燥和量大的知识
面对如此量大的知识,你一定不要学在表面上,一定要学到本质上、原理上,一定要学那些不容易改变,能经得住时间…
100 | 高效沟通:Talk和Code同等重要
学习能力能让你的根越扎越深,无论遇到什么狂风暴雨,你都可以屹立不倒,而沟通能力则是树杆和枝叶,它们能让你…
101 | 高效沟通:沟通阻碍和应对方法
不要绕弯子,有话直说,这是最高效的沟通方式,既是对对方的一种信任,也是一种对自己的尊重,而且事情往往能得…
102 | 高效沟通:沟通方式及技巧
知道自己要什么和不要什么,你才会表现出有力量的观点和话语。而这些被强化过的观点和话语,只需要一句,就会在…
103 | 高效沟通:沟通技术
在和人争论时,如果要反驳,那一定要低维度反驳,越细节越好。而在说服对方时,则要在高维度说服对方,越宏观越…
104 | 高效沟通:好老板要善于提问
永远不要给员工答案,要让员工给你答案,而且不要只给一个答案,一定要给多个答案。然后让他们比较这些答案,促…
105 | 高效沟通:好好说话的艺术
倾听老板会有一些出乎你的意料的发现,你要能了解老板背后的苦衷,那些才是最重要的。
结束语 | 业精于勤,行成于思
[本文音频由耗子叔倾情录制] 这个世界上的知识就像阳光和空气一样,根本不需要付费,就可以获得的,但问题是,…