《码农翻身》

第一章 计算机的世界你不懂

我是一个线程

线程状态:创建、就绪、运行、阻塞、结束。

图片

线程调度:优先级调度、中断、时钟周期

线程池:避免频繁创建线程

锁:多线程编程、临界区

死锁:顺序加锁、可有效避免死锁

TCP/IP

协议:可靠、稳定、失败重传、窗口滑动

两端维持状态:中间节点并不承诺提供可靠的连接通道,信息完全可能失序、重复、丢失。可靠传输完全由两个端点来实现。

TCP连接:是虚拟的,连接的状态信息并不会在路上保存;相反,连接的状态信息是在两端维持的。

三次握手:是为了验证双方都具备收发信息的能力。

图片

四次挥手:双方确保断开连接。

图片

ack:应答机制。

滑动窗口协议:动态维持平衡。

CPU

CPU:取指执行,速度贼快。指令保存在内存中。

CPU组成:程序计数器、寄存器、运算器、控制器。

图片

抽象:程序都是由顺序、分支、循环组成的

缓存:提速

图片

程序局部性原理:空间局部性、时间局部性

流水线:提效

我是一个进程

冯若依曼体:运算器、控制器、存储器、输入设备、输出设备。

进程控制块PCB:保存进程信息

MMU:内存管理单元

分时系统:CPU与IO之间存在巨大速度差异,提效

虚拟内存:分页、页表、缺页中断

图片

分段:段表

进程:空间完全隔离、是资源分配的基本单位

我是一块硬盘

硬盘:盘片、磁道、扇区(512B)。

图片

文件存放方式:连续分配、链式分配、索引式、间接式

管理文件空闲块:位图

我是一个键盘

分类:块设备、字符设备

I/O总线、端口

轮询、中断

中断:一种异步、事件驱动的处理思想

DMA:直接内存访问

数据库之旅

数据的冗余和不一致

并发访问

原子性问题:事务

幂等性

持久化

安全:权限控制系统

undo log、redo log、binlog、mvvc

搞清楚socket

两台主机进程之间通过失败重传来实现可靠性传输

socket抽象层:用户进程 -> socket抽象层 -> TCP/IP

socket建立链接

图片

四元组:客户端IP+端口、服务端IP+端口

五元组:协议、客户端IP+端口、服务端IP+端口

一个翻译家族发家史

机器语言、汇编语言、高级语言

编译器、链接器

编程世界的那把锁

共享变量问题

test and set :硬件支持

自旋锁:需避免死锁问题

信号量

元器件:加法器

递归:函数栈、栈帧

互斥锁(悲观锁)、CAS(乐观锁)、分布式锁、死锁

第二章 JAVA帝国

C语言:贴近硬件、运行快、效率高。

C语言特权:指针和内存管理。

C++:C语言基础上,支持面向对象特性。

java虚拟机:跨平台

栈、堆

垃圾回收:可达性分析

面向接口编程AOP、反射、IOC 与 DI

设计模式:简单工厂、工程方法、模版方法、装饰器

数据驱动、领域驱动

事务:原子性、一致性、隔离性、持久性

两阶段提交,分布式事务

强一致性、最终一致性

事务同时操作了数据库和一个消息队列,这个两个东西完全不同,如何保持一致。异步处理:同个库中新增另外一种状态表,保持事务一致性,后续队列从任务表中读取(定时任务)。

MVC、模板引擎、前后端分离

消息队列:异步操作、次序、持久化、生成者、消费者,主题模型、消息订阅模型

抽象:不要被现象迷住,要看到背后的本质,做适当的抽象才行。

动态代理、注解、泛型、日志、正交性、序列化与反序列化。

低耦合、高内聚、分而治之

第三章 浪潮之巅的web

http:超文本传输协议

https:RSA非对称加密、对称加密、中间人劫持、数字证书

图片

服务器:apache、nginx、防火墙

单点登录:SSO

OAuth:密码凭证许可、隐私许可、授权码许可

mysql、redis、kafka、es

算法:余数算法、一致性hash算法

故障转移:master-slave模式

高可用nginx:keepalived

数据库读写分离、mysql proxy

rpc、restful、docker

select模型、epoll模型

第四章 代码管理那些事儿

svn、git、代码发布。

大部分人只会抱怨项目无趣、没有挑战,遇到问题也只会安于现状。只有少数人会发现工作的痛点,并且真正动手解决它,给公司带来价值。这是提高自己,让自己和别人区分开的重要方法。

约定重于配置。

单元测试、功能测试:想要重构必须有测试。

异步调用、javascript、json、xml、nodejs、c语言

命令式编程、声明式编程(sql)

第六章 老司机精进

勇敢一点、积极一点、敢于担当。

基本准备好就可以出发,路上持续进化。

局部性原理、缓存、抽象、分层、异步调用、分治、数据结构与算法、正交性。

只是学会使用是不行的,不但需要知道how,而且还得知道why。停下来,思考,才是进步的本质。

抽象能力的训练没有捷径,就是经验的积累,勤于思考和学习。

如果你能把一门技术通熟易懂地别人讲明白,就要说明你已经掌握了。

把思路理清楚,尤其要写出为什么要有这门技术,解决了什么问题,然后才是这门技术是怎么使用的。不写出来,很容易放弃深度思考。

数据思维、数据模型。

输出推进输入,梳理知识体系。

优秀和平庸的差别可能就是那一点点坚持把。坚持不懈地坐一件事,每天进步一点点,最后量变会发生质变。

每个季度定一个小目标,努力达成,获得成就感,就能刺激自己更进一步。
原文链接:码农翻身

写的不好,就当是整理下思绪吧。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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