Full Stack Development

全栈

本文主要是看过极客时间“左耳朵耗子”《左耳听风》课程的一篇总结,由于这个课程涵盖的知识面积非常广,所以没有像原课程名字那样富有诗意,姑且这篇总结就叫做全栈开发吧。我这里会将原文内容提炼,有些精华领悟了就没有在这里码字,喜欢的话大家可以去购买课程。

管理

技术领导力

具有技术领导力的工程师所具有的特质:能够发现并简单优雅地解决问题了解不同方案的优缺点代码高性能、可复用、可扩展、易维护能够用正确方式管理团队发挥每个人潜力以及提高团队效能,并具有创新能力

为了具备以上特质需要有扎实的基础技术非同一般的学习能力坚持做正确的事不断提高对自己的要求标准。以上几点中,要做到做正确的事可以包括:提高效率自动化掌握前沿技术知识密集型技术驱动。同时,我认为坚持做正确的事也是最难的,它受到太多外在因素的影响。

对于一个普通的开发人员来说,写代码的过程中,你明明发现有个地方需要重构优化,但是你做了得不到任何利益,不做的话也没有人说你,你愿意花自己的时间加班做这个工作么,我想几十个人里才能挑出一个人愿意这样做的,受益的看起来是公司,其实是你自己。

对于一个管理者,谁都知道代码审核作用很大,但是有几个公司能做到真正的代码审核,不忙的时候什么都可以做,只要一忙起来神马都是浮云,然后进入恶性循环。

领导

让大家追随 Leader 的素质包括:赢得他人的信任开放的心态以身示范保持热情和冲动抓住事物本质描绘令人向往的方向为他人创造机会

分布式技术

高性能:缓存、负载均衡、异步调用(消息队列)、数据镜像(读写分离)、数据分区

高可用:拆分、冗余、限流降级、多活、监控及 DevOps

高可用

可用性 = 平均故障前时间/(平均故障前时间 + 平均修复时间)

系统可用性% 右对齐 宕机时间/月 宕机时间/周 宕机时间/天
90% 36.5天 72小时 16.8小时 2.4小时
99% 3.65天 7.2小时 1.68小时 14.4分
99.9% 8.76小时 43.8分 10.1分 1.44分
99.99% 52.56分 4.38分 1.01分 8.66秒
99.999% 5.26分 25.9分 6.05秒 0.87秒

故障分类:网络问题、性能问题、安全问题、运维问题、管理问题、硬件问题等

“补偿事务”

基于 CAP 理论,分布式不能做到 C(一致性) A(可用性) P(分区容错)三者同时保证,分布式的话必须保证 P,CP 和 AP 的结合时,大多数应用场景都是需要 CP,保证数据一致性。

CAP 理论后又出现了 ACID(“酸”,A 原子性、C 一致性、I 隔离性、D 持久性) 和 BASE(”碱” BA 基本可用、S 软状态、E 最终一致),二者的差别是“酸”强调一致性(C),“碱”强调可用性 (A)

“限流设计”

回顾到这里的时候,正好读到刘超的《趣谈网络协议-云中网络的QoS》讲到网络流量控制技术,再看看限流技术两者惊人相似。实现方式包括队列算法、漏斗算法、令牌桶算法。

“数据库扩展”

数据库扩展的方式有读写分离(CQRS)、分库分表(Sharding),

CQRS(Command and Query Responsibility Segregation 命令与查询职责分离),也就是将命令(写操作,包括增删改)与查询(读操作)做好区分。

分库分表在之前的文章 Architeture 中也有提及,这篇文章提及分片策略,主要通过多租户 ID 来分(如商家ID)、数据种类(如商品库类目)、范围(订单时间)、哈希算法(主键 id % 3 之类)。

高效学习

系统学习模板

  • 技术出现的背景、要解决的问题
  • 技术优势、劣势
  • 技术适用场景
  • 技术组成部分和关键点
  • 技术的底层原理和关键实现
  • 已有的实现和它之间的对比

学习到的知识要能做到举一反三,做到这点需要联想能力,联想到其他事物的应用;抽象能力,找到通用模型;自省能力,即思辨,利用批判性思维进行思考。

推荐书籍

基础知识

《深入理解计算机系统》《计算机的构造和解释》

《算法导论》《算法》《算法图解》《编程珠玑》

《设计模式》《Head First 设计模式》

《领域驱动设计》《Unix 编程艺术》《架构整洁之道》

《设计模式》《重构》《代码整洁之道》《修改代码的艺术》《程序员的职业素养》

《UNIX 环境高级编程》《Windows 核心编程》《鸟哥的 Linux 私房菜》

《UNIX 网络编程》《TCP/IP 详解》

《C 程序设计语言(第 2 版)》《Effective C++》《More Effective C++》

《Java 核心技术(卷1)》《Spring in Action》《Spring Boot 实战》《Effectvie Java》《Java 并发编程实战》《Java 性能权威指南》《深入理解 Java 虚拟机》《Java 编程思想》《精通 Spring 4.x》

《MySQL 必知必会》《高性能 MySQL》《MySQL技术内幕:InnoDB存储引擎》《数据库的索引设计与优化》

《HTML 5 权威指南》

《别让我思考》《简约至上》《认知与设计:理解 UI 设计准则》

《完美软件:对软件测试的各种幻想》《Google 的软件测试之道》

《程序员修炼之道》《人月神话》

《技术领导之路》《卓有成效的管理者》

非技术类

《重来》《清醒思考的艺术》《简单逻辑学》《沟通的艺术》

请我喝汽水儿