左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
立即订阅
40357 人已学习
课程目录
已完结 108 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 | 洞悉技术的本质,享受科技的乐趣
免费
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 | Git协同工作流,你该怎么选?
21 | 分布式系统架构的冰与火
22 | 从亚马逊的实践,谈分布式系统的难点
23 | 分布式系统的技术栈
24 | 分布式系统关键技术:全栈监控
25 | 分布式系统关键技术:服务调度
26 | 分布式系统关键技术:流量与数据调度
27 | 洞悉PaaS平台的本质
28 | 推荐阅读:分布式系统架构经典资料
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 | 弹力设计篇之“认识故障和弹力设计”
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 | 程序员练级攻略:开篇词
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 | 高效学习:面对枯燥和量大的知识
左耳听风
登录|注册

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

陈皓 2018-06-14
进入专业的编程领域,算法、数据结构、网络模型、计算机原理等这样的计算机科学专业需要学习的理论知识是必须要学习的。下面我们先来看看数据结构和算法。

数据结构和算法

算法是比较难学习的,而且学习“算法”是需要智商的。数组、链表、哈希表、二叉树、排序算法等一些基础知识,对大多数人来说是没什么问题的。但是一旦进入到路径规划、背包问题、字符串匹配、动态规划、递归遍历等一些比较复杂的问题上,就会让很多人跟不上了,不但跟不上,而且还会非常痛苦。是的,解决算法问题的确是可以区分人类智商的一个比较好的方式,这也是为什么好些公司用算法题当面试题来找到智商比较高的程序员。
然而,在很多时候,我们在工作中却发现根本用不到算法,或是一些基本的算法也没有必要实现,只需要使用一下第三方的库就好了。于是,导致社会上出现很多“算法无用论”的声音。
对此,我想说,算法真的很重要。我这 20 年的经历告诉我,无论是做业务还是做底层系统,经常需要使用算法处理各种各样的问题。比如,业务上我需要用算法比较两个数组中差异的布隆过滤器,或是在做监控系统时实时计算过去一分钟的 P99 统计时的蓄水池算法,或是数据库的 B+ 树索引,还有 Linux 内核中的 epoll 的红黑树,还有在做服务调度里的“背包问题”等都会用算法,真的是会本质上帮助到你,也是会让你瞬间会产生成就感的事情。
虽然算法很难,需要智商,但我还是想鼓励你,这其中是有很多的套路是可以学习的,一旦学会这些套路,你会受益无穷的。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《左耳听风》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(62)

  • 寻路之人
    皓叔,可不可以讲一下如何阅读源码,有没有一些心得方法?求回复

    作者回复: 几个方法:删掉出错处理逻辑,画流程图,Debug跟踪.

    2018-06-14
    20
  • pomysky
    毕业时间越长……越觉得理论基础的重要性
    2018-06-14
    15
  • Dante.Fung
    作者是神一般的存在,男神

    作者回复: 😅😊😘😍😛

    2018-06-14
    13
  • 孙悟空
    深入理解计算机系统 这本书怎么样

    作者回复: 很好,下一篇“系统知识”中会推荐。

    2018-06-14
    10
  • metalmac.kyle
    皓哥,想请教下个问题,个人理解您每一篇应该是一个很好的练级参考攻略及引子,那么我在学习的每一步如何考核和量化自己的学习情况呢?比如我如何衡量自己已经完成入门可以进入下一阶段,每一个阶段的针对个人的晋级标准如何定呢?想看看您怎么建议的

    作者回复: 1)学以致用,在工作场景,开源,个人项目中用起来,2)开始帮助其它人(工作中或网络上),3)面试,通过更好的公司。

    2018-06-14
    10
  • 服务器
    还有一本书,很适合打基础,《Computer systems, a programmer's perspective》
    2018-06-14
    7
  • 萧瑟先生
    耗哥,我本科学的EE,研究生学的CIS,研究生期间重温了C,自学了C++,JAVA,主要就是按照书本码例题,但是因为导师项目是偏硬件底层,用的都是Verilog,所以实践的项目基本都是和芯片打交道,但是因为个人喜欢软件,毕业后跟随工作项目需要学习了Spring,Spring boot,Spring mvc,HTML,CSS,为了探索为什么会出现AOP和IOC,把传统的servlet,jsp又看了一遍,学习这些的过程中顺便学了mysql,数据结构,TCP/IP协议,也看过重构,设计模式,但是现在因为公司需要又被迫转产品,自己总是被打断,不过一直没放弃过自学,今年32了,我感觉自己在软件上貌似还是什么都不会,看过的有印象,但是并不深刻,主要是没有项目经验,最近公司要爬取一些数据,又学了Python,但是目前还是比较迷茫,我自身处于什么阶段,应该从您的程序员修炼的哪一步开始,我是否应该辞去现在的高薪工作,以我目前的水平是否能找到一份值得付出的程序员工作?希望您以过来人身份给一些建议?批评也好,建议也罢,望您不吝赐教,不胜感激!祝您生活愉快,阖家幸福!
    2018-10-30
    6
  • 繁泽
    看耗子叔的这系列文章简直是打鸡血,啊啊啊啊我还有这么多这么多书要看!😂

    作者回复: 我看了20年,你也可以的

    2018-06-14
    6
  • 曾今一家伙对我说,你们技术人员就是死脑子,有技术不知道变现……,看到这篇我想说这是学无止尽,真的一头会钻进技术里了,都学完估计人生已过半,不知道对技术人员是不是悲催的事?
    2018-06-14
    6
  • mingshun
    非科班生感觉这个书单很重要,毕竟大学错过了。
    2018-06-14
    5
  • Mark
    地铁上看到坐过站,膜拜一下!
    2018-06-22
    4
  • 楚晨曦
    另外,编译方面,龙书比较偏理论、一般原理。虎书主要是编译优化,鲸书是设计、实现

    作者回复: 好厉害👍

    2018-06-14
    4
  • 正是那朵玫瑰
    耗子叔,写程序已经7年了,不是计算机专业出身,学历也不高,现在已经感觉到了不知道该怎么走下去了,瓶颈不知道该怎么突破?现在已经计划看耗子叔推荐的书籍,不知道来不来的及?
    2018-09-18
    3
  • Phoenix
    耗子叔,在上上篇程序员修养文章里,您提到,尽量阅读英文教材,是不是可以理解,您上面推荐的书,阅读原版会更好?还是说中文版和原版相差不大?

    作者回复: 你可以根据自己的情况来吧……

    2018-06-14
    3
  • Leven
    想问下作者,这些书在什么阶段读比较好,我目前属于在熟悉JAVA基础阶段。

    作者回复: 那正好,就是这个阶段

    2018-06-14
    3
  • Sawyer
    想问下耗子叔推荐的这些书,你都有阅读过才推荐给大家的吗?因为看到这些书籍的推荐理由好像都是豆瓣上的,如果耗子叔是阅读后推荐的话,那我也可以放心的购买学习了。请耗子叔叔回复一下,谢谢啦。

    作者回复: 是的,我都读过的,放心购买。

    2018-06-14
    3
  • 左耳朵狮子
    算法导论是北美CS本科必学之一
    2018-06-14
    3
  • 赵伟
    干了三年的业务的养身系程序员什么都忘了,重头再来
    2018-06-18
    2
  • Codeblock
    如何进群
    2018-06-15
    2
  • 胖胖的奥利奥
    以前我也是不注重算法,觉得算法没什么用途。后面花时间认真学习之后发现,算法可以锻炼一个程序员的思维逻辑,学好算法可以在解决问题的时候找到最优方案😊
    2018-06-14
    2
收起评论
62
返回
顶部