极客时间-左耳听风【学习笔记】

news/2025/1/9 12:36:15/

极客时间-左耳听风

  • 开篇词 | 洞悉技术的本质,享受科技的乐趣
  • 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 | 分布式系统架构的冰与火

开篇词 | 洞悉技术的本质,享受科技的乐趣

坚持写博客。
没有速成的东西,一切都要花时间精力

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

写程序是一门 “手艺活” 。
从事编程这个事可以做到完全靠自己的手艺,不依赖任何人或公司去生活。
通过在公司工作提高自己的技能,让自己可以更为独立和自主的生活。
提高工作效率,用更多的时间去研究公司内外哪些更为核心,更有技术含量的技术。
学会使用Linux开源的Valgrind,写公开博客整理。
C/C++ 内存问题检查利器—Purify,写公开博客整理。

经历大多数人经历不到的,把学习时间花在比较难的地方。
写别人没有写过的文章,写别人写过我们写得更好的文章。
技术和知识完全是可以变现的。

makefile,写公开博客整理。
gdb,写公开博客整理。

25岁~35岁时每个人最宝贵的时光,应该用在刀刃上。

感受知识和技术的价值,把时间投入到一些主流、高级和比较有挑战性的技术上。
保持技术和技能的领先,对技术本质和趋势的敏感度。

只要你能帮上大忙就一定会赢得别人的尊重。

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

不积跬步无以至千里。

别人有求与你–>你有别人没有的技术、经验、经历–>你对别人的帮助有效果–>产生效益–>鼓励自己学习和钻研更多。(循环)
关注市场需求:各个公司在做什么?他们的难题是什么?
关注技术趋势:将老技术的本质吃透,看新技术是否顺应技术发展趋势。

关于技术:

  • 这个技术解决了什么问题?
  • 为什么别的同类技术做不到?
  • 为什么是这样解决?有没有更好的方式?
  • 技术有没有大型商业公司的支持?

先到大公司学习技术和方法,再到高速成长的公司实现更多价值。

动手能力很重要:代码细节是魔鬼,只有了解细节才可以提出更好,更靠谱、可以落地的方案。

关注技术付费点:能帮别人挣钱的 / 能帮别人省钱的。

找到有价值的信息源,几乎所有技术都来自于西方世界。

使用Google 提升英文能力。

优质朋友圈的特征:

  • 有想法,有观点,经验丰富。
  • 涉猎面比较广。
  • 有或多或少的成功。
  • 喜欢折腾,喜欢搞事情。
  • 对现状不满并想要做一些改变。
  • 有一定影响力。

会挣钱的人一定是会投资的人。
最宝贵的不是钱,而是你的时间,时间比钱更宝贵。
你把你的时间投资到哪些地方,就意味着你未来会走什么路,利用好时间投到一些有意义的事情上。

03 | Equifax信息泄露始末

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

05 | 何为技术领导力?

技术领导力:

  • 尊重技术,追求核心基础技术。
  • 追逐自动化的高效率工具和技术,避免无效率的组织架构和管理。
  • 开发高质量的可重用的组件技术。
  • 坚持高于社会主流的技术标准和要求。

如何拥有技术领导力:

  • 能发现现有方案的问题。
  • 能够提供解决问题的思路和方案,并能比较这些方案的优缺点。
  • 能够做出正确的技术决定。用什么技术,什么解决方案,怎样实现来完成一个项目。
  • 能够用更优雅,更简单,更容易的方式来解决问题。
  • 能够提高代码的扩展性,重用性和可维护性。
  • 能够用正确的方式管理团队。让正确的人做正确的事,发挥每个人的潜力。
  • 创新能力,能使用新的方法解决问题,追逐新的工具和技术。

总是在提供解决问题的思路和方案的人才是有技术领导力的人。

怎么让自己拥有技术领导力:

  • 扎实的基础知识。
  • 非同一般的学习能力。
  • 坚持做正确的事情。
  • 不断提高对自己要求标准。

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

吃透基础技术,基础技术是各上层技术的公共基础。基础知识越扎实,走的就会越远。

编程部分基础知识:

  • C语言。多读一些优秀开源项目的源代码。
  • 汇编语言。
  • 编程范式:面向对象,泛型编程,函数式编程等。培养抽象思维,提高编程效率,提高程序结构合理性、可读性和可维护性。降低代码的冗余度,提高代码的运行效率,了解各种程序设计语言的功能特性。
  • 算法和数据结构。算法是编程中最最重要的东西,也是计算机科学中最重要的基础。

系统部分基础知识:

  • 计算机系统原理:CPU(指令集[CISC/RISC]、分支预测、缓存结构、总线、DMA、中断、陷阱、多任务、虚拟内存、虚拟化。)、内存(原理及特性、SRAM、DRAM、DDR-SDRAM等)、机械硬盘[盘面、磁头臂、磁头、启停区、寻道等]、固态硬盘[页映射、块的合并与回收算法、TRIM指令]、GPU(原理)。推荐:《深入理解计算机系统》
  • 操作系统原理和基础:进程、进程管理、线程、线程调度、多核的缓存一致性、信号量、物理内存管理、虚拟内存管理、内存分配、文件系统、磁盘管理等。推荐:《UNIX 环境高级编程》《UNIX 网络编程》和《Windows 核心编程》。
  • 网络基础:基本的网络层次结构。推荐:《TCP/IP 详解》
  • 数据库原理:SQL(基于B+树,强一致性)和非SQL(较弱的一致性、较高的存取效率、基于哈希表或其他技术。)
  • 分布式技术框架:数据库和应用服务器的横向扩展。(负载均衡、DNS域名解析、多子域名、无状态应用层、缓存层、数据库分片、容错和恢复机制、Paxos、Map/Reduce操作、分布式SQL数据一致性【Google Cloud Spanner 】。)

基础知识不可速成。

提高学习能力:

  • 学习的信息源:Google、Stack Overflow、Quora等。
  • 与高手交流。通过社区和开源项目。
  • 举一反三的思考。
  • 不怕困难的态度:坚持住、多思考、多下功夫,拥有别人不能拥有的能力。
  • 开放的心态。

做正确的事,始终在向目的地靠拢。

什么是正确的事:

  • 提高效率的事,管理实践。提高效率。
  • 自动化的事。
  • 掌握前沿技术的事。
  • 知识密集型的事。
  • 技术驱动的事。

高标准要求自己,越走越高,不断反思、总结和审视自己、不断提高自己。

充分利用信息源,获取新的技术动态,参数社区讨论、丰富自己了解技术的角度,思考自己是否感兴趣,能解决那些实际问题、背后的原因和原理。

强调实践,学以致用。

Lead by Example。

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

每个程序员都应该要读的书:

  • 《代码大全》
  • 《程序员修练之道》
  • 《计算机的构造和解释》
  • 《算法导论》
  • 《设计模式》
  • 《重构》
  • 《人月神话》
  • 《代码整洁之道》
  • 《Effective C++》/《More Effective C++》
  • 《Unix 编程艺术》《Unix 高级环境编程》

每个搞计算专业的学生应有的知识:
点击此处进入:每个搞计算专业的学生应有的知识

作品集比简历更有参考意义,在简历中放一些项目经历,开源软件贡献、完成的软件的网址。
最好有一个自己的个人网站。

计算机专业人士所需要的硬技能:工程类数学、Unix 哲学和实践、系统管理、程序设计语言、离散数学、数据结构与算法、计算机体系结构、操作系统、网络、安全、密码学、软件测试、用户体验、可视化、并行计算、软件工程、形式化方法、图形学、机器人、人工智能、机器学习、数据库等等。

高效的代码复查技巧:
点击此处进入:高效的代码复查技巧

LinkedIn 的代码复查有以下几个特点:

  • Code Review 的一个难点是,Reviewer 可能不了解某块代码修改的背景和目的。所以 LinkedIn 要求代码签入版本管理系统前,就对其做清晰的说明,以便复查者了解其目的,促进 Review 的进行。
  • 好的代码,正面鼓励。
  • 不但要review提交者的代码,还要review提交者做过的测试。

CoolShell:点击此处进入:从CODE REVIEW 谈如何做技术

从CODE REVIEW 谈如何做技术:【阅读笔记】
工程师要有相应的责任心和修养,不是 “做出来”,而是要 “做漂亮”。这就是 “山寨” 和 “工业” 的区别。

“做出来” 和劳动密集型的 “装配生产线” 和 “砌砖头” 没有什么差别。

让代码更好的组织起来,更易读、更搞的可维护性、知识共享。找到bug知识其中的副产品。

代码有这几种级别:1)可编译,2)可运行,3)可测试,4)可读,5)可维护,6)可重用。通过自动化测试的代码只能达到第3)级,而通过Code Review的代码少会在第4)级甚至更高。

重构或写一个模块,把他做成真正的Elegant级别。
与大家分享一篇或几篇技术文章 ,并收获10-30个赞。
降低现有至少20%的重复工作或维护工作。
拒绝或简化一个需求。(需要项目中所有的Stakeholders都同意)

拿到需求之后:
为什么要做?
业务影响有多大?
有多少用户收益?

芝兰生于空谷,不以无人而不芳!君子修身养道,不以穷困而改志!

当你忙得跟牲口一样,你应该停下来,问一下自己,自己成为牲口的原因,是不是就是因为自己做事时候像就牲口一样思考?

如何应对需求变化阅读:
CoolShell:点击此处进入:需求变化与IoC
CoolShell:点击此处进入:Unix的设计思想来应对多变的需求
CoolShell:点击此处进入:CODE REVIEW中的几个提示
什么是效率,什么是T-Shirt Size Estimation 请阅读CoolShell:点击此处进入:加班与效率

电子书:点击此处进入:《C++ 软件性能优化》
Agner Fog 还写了其它几本和性能调优相关的书,你可以到这个网址:几本和性能调优相关的书

08 | Go语言,Docker和新技术

Go成为云计算领域新一代开发语言。
Go 语言和 Docker 这两种技术已经成为新一代的云计算技术,而且可以看到他们的发展态势非常迅猛。

Go语言:

  • 语言简单,上手快。
  • 并行和异步编程几乎无痛点。
  • Go 语言的 Goroutine 和 Channel 这两个神器简直就是并发和异步编程的巨大福音。
  • Go 语言的 lib 库“麻雀虽小,五脏俱全”。
  • C 语言的理念和 Python 的姿态。
  • C 语言的理念是信任程序员,保持语言的小巧,不屏蔽底层且对底层友好,关注语言的执行效率和性能。而 Python 的姿态是用尽量少的代码完成尽量多的事。于是我能够感觉到,Go 语言是想要把 C 和 Python 统一起来,这是多棒的一件事。

一个技术能不能发展的因素:

  • 比较好的社区。
  • 工业化标准。
  • 杀手级应用。
  • 学习难度是否低,上手是否快。(C++做的不好)
  • 提高开发效率的开发框架。(C++:STL,Java:Spring)
  • 是否有巨型技术公司作为后盾。
  • 有没有解决软件开发中的痛点。

Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,他们没有复杂的业务场景,也到不了特别底层(如操作系统)的软件项目或工具。

Kubernetes 作为服务和容器调度的关键技术一定会是最后的赢家。

Docker:云计算中 PaaS 的关键技术。

PaaS 是一个被世界或是被产业界严重低估的平台。

PaaS 层是承上启下的关键技术,任何一个不重视 PaaS 的公司,其技术架构都不可能让这家公司成长为一个大型的公司。因为 PaaS 层的技术主要能解决下面这些问题:

  • 软件生产线的问题:持续集成和持续发布,以及 DevOps 中的技术必须通过 PaaS。
  • 分布式服务化的问题:高可用、服务编排、服务调度、服务发现、服务路由,以及分布式服务化的支撑技术完全是 PaaS 的菜。
  • 提高服务的可用性 SLA。提高服务可用性 SLA 所需要的分布式、高可用的技术架构和运维工具,也是 PaaS 层提供的。
  • 软件能力的复用。软件工程中的核心就是软件能力的复用,这一点也完美地体现在 PaaS 平台的技术上。

Go 语言和 Docker 作为 PaaS 平台的关键技术前途是无限的。

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

加班太多完全没时间怎么办?
时间一定是能找得到的,还是看你的渴望程度和热情。只要你真心想把这个事做成,你就一定能想出各种各样的招儿来挤出时间。

为什么你能写出这么多东西?
第一阶段:学习。
第二阶段:有利益驱动。
第三阶段:记录自己观点打自己脸的阶段。
第四阶段:与他人交互。

怎样选择自己的人生和职业发展?
20-30打基础阶段:开阔视野,把基础打扎实,努力学习和成长。
30-40发展阶段:年富力强,有经验,有精力,敢想敢干。明确奋斗方向,做有挑战的事情,提升自己的技术领导力。

其他角度的思考:

  1. 客观地审视自己,隔三差五出去面试一把,看看自己在市场上是什么级别。如果超过了身边大多数人,激进冒险一些,否则按部就班。
  2. 确定自己想要什么。
  3. 注重长期的可能性,而不是短期的利益。做有挑战的事,选择能给自己带来更多可能性的事,选择让自己成长的事,选择让自己开阔眼界的事。
  4. 尽量关注自己会得到的东西,而不是自己会失去的东西。
  5. 不要和大众的思维方式一样。

编码能力很重要,技术视野,技术洞察力,如何用技术解决问题的能力更重要。

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

帮人解决问题。
被人依赖。

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

C部分函数出错无错误码设置,结果为未定义行为。(像atoi(), atof(), atol() 或是 atoll() 这样的函数是不会设置 errno)

libc库更新,设置全局变量 error。(strtol())

返回值 +错误码 存在问题:
程序员一不小心就会忘记返回值的检查,从而造成代码的 Bug;
函数接口非常不纯洁,正常值和错误值混淆在一起,导致语义有问题。

使用返回值统一错误的返回值:Windows 的系统调用开始使用 HRESULT。
函数的 input 和 output 只能通过函数的参数来完成,于是出现了所谓的 入参 和 出参 这样的区别。

多返回值:Go
参数上基本上就是入参,而返回接口把结果和错误分离,这样使得函数的接口语义清晰;
Go 语言中的错误参数如果要忽略,需要显式地忽略,用 _ 这样的变量来忽略;
返回的 error 是个接口(其中只有一个方法 Error(),返回一个 string ),所以你可以扩展自定义的错误处理。

Go 语言官方文档:点击这里进入:Go 语言官方文档

资源清理:
C语言 goto fail 模式 , 中间 return 会造成内存泄漏。
C++ 的 RAII(Resource Acquisition Is Initialization)机制:在构造函数中分配资源,在析构函数中释放资源。
在 Go 语言中,使用defer关键字也可以做到这样的效果。

异常捕捉处理:
try - catch - finally
把正常的代码、错误处理的代码、资源清理的代码分门别类,看上去非常干净。

好处:

  • 函数接口在 input(参数)和 output(返回值)以及错误处理的语义是比较清楚的。
  • 正常逻辑的代码可以与错误处理和资源清理的代码分开,提高了代码的可读性。
  • 异常不能被忽略(如果要忽略也需要 catch 住,这是显式忽略)。
  • 在面向对象的语言中(如 Java),异常是个对象,所以,可以实现多态式的 catch。

与状态返回码相比,异常捕捉有一个显著的好处是,函数可以嵌套调用,或是链式调用。

异常捕捉的确是对性能有影响的,那是因为一旦异常被抛出,函数也就跟着 return 了。而程序在执行时需要处理函数栈的上下文,这会导致性能变得很慢,尤其是函数栈比较深的时候。

但从另一方面来说,异常的抛出基本上表明程序的错误。程序在绝大多数情况下,应该是在没有异常的情况下运行的,所以,有异常的情况应该是少数的情况,不会影响正常处理的性能问题。

try - catch - finally 有个致命的问题,那就是在异步运行的世界里的问题。try 语句块里的函数运行在另外一个线程中,其中抛出的异常无法在调用者的这个线程中被捕捉。这个问题就比较大了。

点击这里进入:著名的 软件工程师Joel Spolsky

资源错误:退出整个程序。

  • 打开一个没有权限的文件,写文件时出现写错误。
  • 发送文件到网络端发现网络故障的错误。
  • 内存耗尽。
  • 堆栈溢出。
  • 关键资源不能满足。

用户的错误:向用户端报错。

  • Bad Request、Bad Format 等不合法输入。
  • 正常执行,做好错误统计,统计错误率。

程序的错误:写日志,触发监控系统报警。

  • 空指针,非法参数。

对于并不期望会发生的事情,使用异常捕捉。
对于觉得可能会发生的事情,使用返回码。

程序中的错误:异常捕获。
用户的错误:返回错误码。
资源类错误:不应该出现的使用异常捕获,经常出现的使用返回码。

从程序设计的角度考虑哪种情况下使用异常捕获更好,哪种情况使用返回码更好。
异常捕获在编码上的好处比返回码多,使用异常捕获的代码会更易读和更健壮。

某些情况下只能使用一个:
C++重载操作符的情况下,很难使用错误码,只能抛异常。
异常捕捉只能在同步的情况下使用,在异步模式下,抛异常这事就不行了,需要通过检查子进程退出码或是回调函数来解决;
在分布式的情况下,调用远程服务只能看错误返回码,比如 HTTP 的返回码。

这些知识和经验仅在同步编程世界中适用。因为在异步编程世界里,被调用的函数是被放到另外一个线程里运行的,所以本文中的两位主角,不管是错误返回码,还是异常捕捉,都难以发挥其威力。

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

异步编程无法使用返回码和抛异常。

常用方式:callback。
Callback Hell 问题:todo

一般来说,在异步编程的实践里,我们会用 Promise 模式来处理。

错误处理的最佳实践:

  • 统一分类的错误字典。
  • 同类错误的定义最好是可扩展的。
  • 定义错误的严重程度。FATAL(重大错误),ERROR(资源或需求得不到满足),WARNING(并非错误但需要引起注意),INFO(不是一个错误,只是一个信息),DEBUG(内部开发人员调试程序使用)。
  • 错误日志最好使用错误码而不是错误信息,使用同一的格式。错误码不一定是数字,可以是错误字典里面唯一能让人读懂的关键字。有利于日志分析软件进行自动化监控,而不是从错误信息中做语义分析。
  • 忽略错误最好有日志。
  • 对同一个地方不停的报错,最好不要打到日志里面去。应该打印错误及出现的次数。
  • 同类的错误处理用一样的模式。
  • 尽可能在错误发生的地方处理错误。
  • 向上层尽可能返回原始错误。
  • 处理错误时,总要清理已经分配的资源。RAII、try-catch-finally,或是 Go 的 defer 都可以容易地做到。
  • 不推荐在循环体里面处理错误,而是把整个循环放在 try 里面,用 catch 处理错误。
  • 不要把大量的代码都放在一个 try 语句块内。一个 try 语句块内的语句应该是完成一个简单单一的事情。
  • 为你的错误定义提供清楚的文档以及每种错误的代码示例。如果你是做 RESTful API 方面的,使用 Swagger 会帮你很容易搞定这个事。
  • 对于异步的方式,推荐使用 Promise 模式处理错误。
  • 对于分布式的系统,推荐使用 APM 相关的软件。尤其是使用 Zipkin 这样的服务调用跟踪的分析来关联错误。

13 | 魔数 0x5f3759df

关于 平方根倒数速算法的 0x5f3759df

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

监督式学习

提供一组学习样本(样本数据 / 训练数据),包括特征数据和相应的标签。
程序通过样本学习规律和模式。
通过得到的规律和模式来判断没有被打过标签的数据是什么样的数据。

非监督式学习

数据没有被标注过,通过机器学习算法找到这些数据中的共性。

非监督式学习可以找到人类很难发现的数据里面的规律或模型,自动为数据进行分类,找到分类的模型。

如何找到数据的规律和关联

机器学习的基本:在已知的样本数据中寻找数据的规律,在未知的数据中找数据的关系。

数学知识:

  • 高等数学。
  • 线性代数。
  • 概率论。
  • 数据建模。

机器学习基本方法论:

  • 找到数据中的特征点。
  • 把特征抽线成数学中的向量,也就是坐标轴。
  • 通过某种数学公式来表示这类数据,这就是数学建模。
  • 数据公式就是找到的规律,然后通过这个规律关联类似的数据。

机器学习阅读:点击这里进入:机器学习原来这么有趣
机器学习阅读:点击这里进入:机器学习原来这么有趣(中文版)

相关算法

监督式学习经典算法

  • 决策树。自动化放贷、风控。
  • 朴素贝叶斯分类。判断垃圾邮件,对新闻进行分类,判断文字表达的感情是积极的还是消极的,人脸识别等。
  • 最小二乘法。算是一种现行回归。
  • 逻辑回归。一种统计学方法,可以用一个或多个变量来表示一个二项式结果。可以用于信用评分、计算营销活动的成功率、预测某个产品的收入等。
  • 支持向量机(Support Vector Machine,SVM)。可用于基于图像的性别监测,图像分类等。
  • 集成方法。集成方法(Ensemble methods)。通过构建一组分类器,然后根据它们的预测结果进行加权投票来对新的数据点进行分类。原始的集成方法是贝叶斯平均,但是最近的算法包括纠错输出编码、Bagging 和 Boosting。

非监督式学习经典算法

  • 聚类算法。给数据分类。
  • 主成分分析(Principal Component Analysis,PCA)。PCA 的一些应用包括压缩、简化数据,便于学习和可视化等。
  • 奇异值分解(Singular Value Decomposition,SVD)。实际上,PCA 是 SVD 的一个简单应用。在计算机视觉中,第一个人脸识别算法使用 PCA 和 SVD 来将面部表示为“特征面”的线性组合,进行降维,然后通过简单的方法将面部匹配到身份。虽然现代方法更复杂,但很多方面仍然依赖于类似的技术。
  • 独立成分分析(Independent Component Analysis,ICA)。ICA 是一种统计技术,主要用于揭示随机变量、测量值或信号集中的隐藏因素。

点击这里进入:The 10 Algorithms Machine Learning Engineers Need to Know

相关推荐

吴恩达教授(Andrew Ng)点击这里进入:机器学习课程网易公开课上也有该课程。
卡内基梅隆大学计算机科学学院汤姆·米切尔(Tom Mitchell)教授的机器学习课程:点击这里进入:英文原版视频和课件 PDF
汤姆·米切尔(Tom Mitchell)教授撰写了机器学习方面的教科书:点击这里进入:《机器学习》
利福尼亚理工学院亚瑟·阿布·穆斯塔法(Yaser Abu-Mostafa)教授的课程(涵盖机器学习的基本理论和算法,将理论和实践相结合):点击这里进入:Learning from Data 系列课程
YouTube 上的 Google Developers 点击这里进入:Machine Learning Recipes with Josh Gordon
用 Python 带着你玩 Machine Learning 的教程:点击这里进入:用 Python 带着你玩 Machine Learning
机器学习经典算法:点击这里进入:机器学习经典算法
Medium 上的 Machine Learning for Humans 点击这里进入:Machine Learning for Humans 提供入门指导和各种优质的学习资源。
杰森·布朗利(Jason Brownlee)博士的博客:点击这里进入:杰森·布朗利(Jason Brownlee)博士的博客
一个很不错的博客:点击这里进入:一个很不错的博客
Deep Learning 中神经网络的学习:点击这里进入:Deep Learning 中神经网络的学习
用 Python 做自然语言处理:点击这里进入:用 Python 做自然语言处理
GitHub 上的相关课程列表:点击这里进入:GitHub 上的相关课程列表

值得翻阅的图书:

  • 《机器学习》点击这里进入:《机器学习》
  • 马里兰大学哈尔·道姆(Hal Daumé III)副教授著。点击这里进入:《A Course In Machine Learning》
  • 麻省理工学院伊恩·古德费洛(Ian Goodfellow)、友华·本吉奥(Yoshua Benjio)和亚伦·考维尔(Aaron Courville)著。点击这里进入:Deep Learning
  • 安德鲁·巴托(Andrew G.Barto)和理查德·萨顿(Richard S. Sutton)著。点击这里进入:Reinforcement Learning
  • 微软剑桥研究院克里斯托夫·比肖普(Christoph M. Bishop)著。点击这里进入:Pattern Recognition and Machine Learning

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

学会说不

做不到的需求,给出另一个你可以做到的解决方案,而不是把对方的方案直接回绝掉。
面对复杂的需求,不说不能完全满足你,但是可以部分满足。
面对时间不够的需求时,可能不保证质量。能保证质量能不能减少需求。能保证需求和质量,能不能加时间。

不说不,有条件的说是。

加班和开会

加班

如果怎么做都要受伤害,那么两害相权取其轻。你要学会比较是项目延期的伤害大,还是线上故障的伤害大,是先苦后甜好,还是积压问题好,聪明的你应该能作出正确的判断。

开会

开会,不是讨论问题,而是讨论方案,开会不是要有议题,而是要有议案。

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

投资自己的时间

花时间学习基础知识,花时间读文档。
系统的学习一门技术非常关键,这个时间是值得投资的。

花时间在解放自己生产力的事情上:自动化、可配置、可重用、可扩展上多花时间。

花时间在让自己成长的事情上,成长不应该只看在一个公司内,而是要看在行业内。
花在让自己成长、有更强的竞争力、有更大的视野、有更多可能性的事情上。

花时间在建立高效的环境上:做事情之前把自己的工作环境整理到趁手的开发工具,趁手的设备。

规划自己的时间

定义好优先级。
相同优先级的事情,最短作业优先。
想清楚再做,避免返工。
关注长期利益规划,宁可短期延期,不要透支未来。不关注长期利益的人,很难有成长。

用好自己的时间

将军赶路不追小兔。确定目标,专注目标。

形成习惯,“做” 比 “做好” 更重要,形成习惯通常需要30天左右的时间,尤其在最初的几天尤为重要。
结合自己的情况,适当做出调整。

形成正反馈。

反思和举一反三。
反思:

  1. 本周做了什么?
  2. 时间安排是否合理?
  3. 哪里可以优化提高?
  4. 做后续的规划并进行排序。

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

故障发生时

在故障发生时,最重要的是快速恢复故障。

前提:快速定位故障源。

常见系统恢复手段:

  1. 重启和限流。
  2. 回滚操作。
  3. 降级操作。
  4. 紧急更新。

故障前的准备工作

  • 以用户功能为索引的服务和资源的全视图:自动化监控视图。
  • 为地图中的各个服务定制关键指标,一套运维流程和工具,包括应急方案。制定服务故障检测、处理和恢复手册,相关检测、差错和恢复的运维工具。
  • 设定故障等级,并设定不同故障等级的处理方式,根据影响用户的程度及用户量来定义。
  • 故障演练。
  • 灰度发布系统。

自动地图生成一般用APM式的系统。开源的可以看看zipkin。

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

故障复盘过程

CEO文档:

  1. 故障处理的整个过程,记录故障从发生到解决的全部细节。
  2. 故障发生的原因及分析报告。
  3. Ask 5 why 。反思并范围至少 5 个问题,并找到答案。
  4. 故障后续整改计划,针对Ask 5 why 说明后续如何举一反三从根本上解决所有问题。

故障整改办法

第一:优化故障获知和故障定位时间:

  • 从故障发生到我们知道的时间是否可以优化的更短?
  • 定位故障的时间是否可以缩短?
  • 有哪些地方可以做到自动化?

第二:优化故障的处理方式:

  • 故障处理时判断和章法是否科学,是否正确?
  • 故障处理时的信息是否透明?
  • 故障处理时人员是否安排得当?

第三:优化开发过程中的问题:

  • Code Review 和测试中的问题和优化点。
  • 软件架构和设计是否可以更好。
  • 对于技术欠缺或是相关的隐患问题是否被记录下来,是否有风险计划?

第四:优化团队能力:

  • 如何提高团队的技能能力。
  • 如何让团队有严谨的工程意识。

找到问题的本质

  1. 举一反三解决当前的故障,为自己赢得更多时间。
  2. 简化复杂、不合理的技术架构、流程和组织。
  3. 全面改善和优化整个系统,包括组织。改善和调整整体架构,只有简单优雅的东西才有被改善和优化的可能。

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

关于兴趣的投入

兴趣是需要保持的。
兴趣是可以培养的。
兴趣只是开始,能让人不断投入时间和精力的则是正反馈,是成就感。

关于学习和工作

带着问题去学习,带着场景去解决问题,的确是一种高效的学习方式。
通过解决实际问题,在和他人讨论,获得高手帮助的环境中,才能更快更有效率地学习和成长。
在一些开源社区内,有助于学习的场景会更多,要解决的实际问题也更多,同时你能接触到的牛人也更多。
一些有大量公司和几万、几十万甚至上百万的开发人员在贡献代码的项目,我认为可以让人成长很快。
找到学习的方法,提升自己对新事物学习的能力,才是学习和成长的关键。

关于技术和价值

要用什么技术解决什么样的问题,场景非常重要。
如何降低技术的学习成本,提高易用性,从而可以让技术更为普及。

有价值的技术:

  • 是否低成本高效率的解决实际问题,一定是自动化的技术,软件天生就是用来完成重复劳动的,天生就是用来做自动化的。
  • 是不是众多产品的基础技术。基础技术总是枯燥和有价值的,数学、算法、网络、存储等。
  • 是不是可以支持规模化的技术。PaaS的相关技术。

关于趋势和未来

这个世界的技术趋势和未来其实是被人控制的。就是被那些有权有势有钱的公司或国家来控制的。

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

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


http://www.ppmy.cn/news/455877.html

相关文章

0003-TIPS-2020-hxp-kernel-rop : bypass-KPTI-with-trampoline

KPTI KPTI描述内容摘录自ctf wiki KPTI 机制最初的主要目的是为了缓解 KASLR 的绕过以及 CPU 侧信道攻击。 在 KPTI 机制中,内核态空间的内存和用户态空间的内存的隔离进一步得到了增强。 内核态中的页表包括用户空间内存的页表和内核空间内存的页表。 用户态的页…

简历---久远银海

笔试主要是java基础、js、数据库的题目,前面是选择题,单选多选都有,有一个写代码的题,最后一个大题是数据库,有几个小题,根据要求写SQL语句。然后根据笔试试卷问一些问题,再看简历问一下问题。 …

大蒜种子的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

本文研究全球与中国市场大蒜种子的发展现状及未来发展趋势,分别从生产和消费的角度分析大蒜种子的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的…

有效沟通bic法则_如何改变命运?这里有一份人生终极成功的规律-《种子法则》...

曾经日本量子物理学家江本胜博士,做过一则跟水有关的试验:让水在接受不同信息之后,并在零下5度的冷室中以高速摄影的方式,拍下水结晶的照片。 他分别让水听音乐、读文字、看图片和接受人的意识,得出的结论让人震惊:当水在接受正面的信息的时候,拍出的水结晶照片是非常漂…

全球及中国运动草坪草种子行业投资潜力及市场现状调研报告2021-2027年版

全球及中国运动草坪草种子行业投资潜力及市场现状调研报告2021-2027年版 目录 2020年,全球运动草坪草种子市场规模达到了 百万美元,预计2027年可以达到 百万美元,年复合增长率(CAGR)为 % (2021-2027)。中国市场规模增长快速,预计将…

环洋市场调研-2022年全球杂交水稻种子市场总体规模及应用细分研究报告

本文研究全球市场、主要地区和主要国家杂交水稻种子的销量、销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,杂交水稻种子销量、价格、收入和市场份额等。 针对过去五年(2017-2021)年的历史情…

痛失阵地,又一家热门BT种子观影网站关停

对于全球大部分观众来说,盗版影视剧一直都是生活中不可或缺的刚需。 受限于发行渠道、版权限制等种种原因,许多影视剧我们无法从当地的正规渠道——电影院或各大视频平台上观看。 所以,无论在国内还是国外,盗版都是群众们喜闻乐…

2022-2028年全球与中国杂交种子产业市场前瞻与投资战略规划分析

本文研究全球与中国市场杂交种子的发展现状及未来发展趋势,分别从生产和消费的角度分析杂交种子的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的…