《码农翻身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

写的不好,就当是整理下思绪吧。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

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

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!