《码农翻身2》

第一章 基础知识#

负载均衡原理

图片

负载均衡、水平扩展

使用 DNS 做负载均衡

图片

四层负载均衡、七层负载均衡

图片

开源软件 LVS:NAT、DR

双机热备原理

图片

冗余、监控、主机 A 与主机 B 都做 master,分别为不同的业务做负载均衡,并且分别设置为对方的 backup。

多路复用机制 epoll

图片

单线程,非阻塞 I/O,事件循环

虚拟内存、系统调用

图片

系统调用:涉及用户态切换到和核心态(上下文切换)

图片

read 和 write:操作系统使用 DMA 的方式先把文件的数据从硬盘复制到内核缓冲区,然后复制到用户缓存区。(系统调用代价高)。

图片

sendfile:零拷贝技术,减少上下文切换,避免做无谓的数据搬运,提供系统性能。

图片

内存:大端法、小端法

编译器:高级语言转换为机器语言

信息:位 + 上下文

指针、二级指针、链表、二叉树

第二章 后端风云#

http:无状态通讯,需借助 session

图片

分布式状态同步问题:session 复制、借助 redis 存储 session

时间换空间:token,如何退出,设置有效期,强制退出(设置黑名单)

图片

缓存:缓存容易出现数据不一致的情况

最佳实践:先更新 mysql,再删除缓存 Cache Adise Pattern

redis:缓存穿透、缓存击穿、缓存失效、布隆过滤器、分布式锁

mysql:持久化、读写分离、数据延迟,同步复制

分布式 ID:雪花算法、0 待定 41 时间戳 10 机器 id 12 序列号

幂等性、一个函数只做一件事,并且不保存状态

列式数据库、行式数据库

第三章 著名软件是怎么炼成的#

搜索之路:模糊匹配 like 效率低

倒排索引、搜索架构图

抽象:软件设计就是一个不断抽象的过程

中间层:所有问题,都可以增加一层抽象而得以解决

分布式:索引分片、索引备份

集群:Elasticsearch

HDFS 诞生:日志系统,分布式存储,并行计算,mapReduce

任务调度系统

linux:crontab

正交设计思想:把软件中的概念抽象成 x 轴,y 轴,z 轴这样的维度,让这些概念之间互不影响,可以独立变化,可扩展

持久化、高可用、幂等性

RPC:远程调用过程

GraphQL

zookeeper

选举问题、分布式锁、集群信息同步

第四章 编程语言帝国争斗#

动态一时爽,重构火葬场

泛型、反射、动态代理

GIL 全局解释锁:同一时刻,只有一个线程能运行

单元测试、TDD、重构

面向接口编程而不是面向实现编程;优先使用组合而不是继承。

adapter 模式、单例模式、visitor 模式

面向对象设计的 SOLI 原则和设计模式思想,发现变化并且封装变化。

javascript:原型

c++、go

go 语言:用大小写来实现权限控制

nodejs:非阻塞异步 IO

异步操作:基于事件驱动,都有一个事件循环

垃圾回收:引用计数法、标记清除回收算法

面向对象编程特性:封装、继承、多态

第五章 编程语言的本质#

机器语言可以直接被 CPU 执行,不需要编译器,只有 01

汇编语言虽然只是机器语言的助记符,但是也需要被编译成机器语言才行

编程的关键就是找到、抽象出稳定的接口,并针对这个接口编程,可以让各个模块实现独立变化的目的。

优先使用组合而不是继承

开闭原则:对修改关闭,对扩展开放

元编程:用程序来生成程序

栈、队列、堆、寄存器、数组、条件分支,函数调用(栈帧)

单线程优势:无需加锁,同步状态

归类:数据传输类、算术和逻辑运算类、控制类

CPU:取指执行

第六章 网络安全#

cookie 失窃、浏览器同源策略(protocol,host,port 需一致)

好奇是人类的天性,无论如何也无法改变。

ajax 也需遵循同源策略

CORS(跨域请求):需要服务端设置信任域名

脚本注入、cookie httpOnly 禁止浏览器读取、跨域请求伪造(CSRF)生成随机请求 token、sql 注入(预编译)、彩虹表、加盐、https、验证码、缓存区溢出攻击、

第七章 老司机经验#

凡是我们读懂的东西,把它转换成某种现实中存在的东西,它到底在说什么。

费曼学习法:

  • 1、选择要学习的概念学习;

  • 2、扮演老师,去教授别人;

  • 3、遇到疑问,查找资料学习;

  • 4、简化语言

类比思维

基础知识:C 语言、Linux、面向对象设计和抽象、网络和 web 编程基础、分布式系统的基础知识、计算机基础知识

程序员 7 问:

  1. 我是否在系统的业务有了整体的了解

  2. 系统的整体架构是什么样的

  3. 系统中用到了哪些技术和框架,是不是都已经精通了

  4. 是不是已经精通了多个模块甚至整个系统的代码

  5. 对于系统的非功能性需求,是不是已经掌握

  6. 了解甚至掌握了系统使用的工程实践

  7. 团队地位如何

用技术创造价值

  1. 能通过新的工具、流程、方法来提升开发效率

  2. 熟悉业务,选用最合适的技术实现业务价值

  3. 把技术输出到客户,敏捷类咨询

  4. 设计的系统能直接创造收益

code review:代码的质量由写代码的人和评审代码的人共同负责。

代码量控制、结对编程、测试驱动开发

遇到问题要深度思考,努力看到本质,才能举一反三。
原文链接:码农翻身 2

写的不好,就当是整理下思绪吧。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

如果是走打工路线 真正的翻身是反向选择 是大厂求你去 而不是增加面试筹码求大厂收留

10个月前 评论