这几天看了本书,《码农翻身》 做个笔记总结下
先来个总评 ,很不错的入门书,趣味性比较强, 涉及知识范围比较广
主要有以下几个议题:
- 计算机原理
- java发展历史
- web发展历史
- 其他(代码管理、JavaScript)
计算机原理
线程
线程状态 就绪 运行 等待
锁 获取顺序从大到小
TCP/IP
三次握手建立链接
窗口协议控制速率
确认传达、重传机制
CPU
寄存器 程序计数器
程序都是由顺序、分支、循环组成的
缓存 L1 L2 L3 局部性原理
流水线
进程
冯诺依曼 提出了存储程序->专用计算机 到 通用计算机
运算器 控制器 存储器 输入设备 输出设备
内存
内存分配算法
地址重定位
静态重定位(移动程序,需要重定位)
动态重定向
记录每个程序的起始地址,寄存器(基址寄存器)
记录程序内存长度寄存器 防止越界 (两个寄存器封装为MMU 内存管理单元,完成地址的转换)
分时系统 CPU时间分片
分块装入内存(页框 Page Frame)
虚拟内存(分页Page)
分段(代码段,数据段,堆栈段)+分页
线程
共享进程的所有资源 地址空间、全局变量、文件源
磁盘
文件
文件存放
索引
间接块
日志文件系统 防止系统奔溃
管理空闲块
位图
文件系统
数据库
逻辑层 (查询语句解析、查询执行引擎、缓冲区管理、授权管理、事务管理)->文件的封装
socket
Socket抽象层 封装 TCP UDP和用户线程直接的连接
编译
源程序->词法分析->语法分析->语义分析->中间代码生成->代码优化->代码生成->目标程序
对二进制书的所有位取反,然后加一 补码
在计算机内部,是使用补码来表示二进制的.如果是一个正数,补码就是它本身
如果是一个附属,则需要把除符号位之外的二进制数执行取反加1的操作
java发展历史
持久化
序列化到磁盘
数据库 JDBC接口
EJB ->轻量级O/R框架 Hibernate 、iBatis、Sping JdbcTemplate
EJB3.0
JDBC
简单工厂
数据驱动
工厂方法
分布式
JSP
MVC
消息队列JMS
动态代理
注解
泛型
日志系统
SLF4J API抽象层 LogBack
适配层
Log4j、JDK logging
Web发展历史
web起源
https
对称加密 公钥
非对称加密 RSA
对称加密+非对称加密 (效率低)
中间人劫持
证书
授权
sso
token
从SOA到微服务
HTTP Server
1.0
2.0 多进程
3.0 select模型
4.0 epoll模型
小结
虽然覆盖的知识很广,但其实这些知识点比较零散,而且都比较浅显,都需要深入了解,只能说适合作为一本入门书籍 或者知识大纲用来查漏补缺
技术感悟
最近思考了很多,为思故我在, 偶尔需要给自己点空闲时间思考, 自己到底想要什么,自己经历的问题是不是问题
偶然看到一篇总结的很好的文章, 分享一下
1. 一个人走得快,一群人走得远
2. 当你不舒服,难受或陷于困境时,应该停下来思考
3. 学习能力与思维模式是一个人的核心竞争力
3.1 首先承认自己的不足
Stay foolish, stay hungry.
我们要承认一个基本的逻辑事实是: 任何事情不是天生就能精通,要通过训练才能达到优秀的程度。很多事物的判断能力,要是逐步建立的。只有意识到自己的不足,才能觉悟,去学习进步。
网上看到一张图《how to draw a horse》深有感触:
这个漫画显示的哲理:有时最后一步,你要付出非常多的努力。任何高水平的技术或思维模式,都需要付出努力,并非生而得来。
3.2 掌握优秀的学习方法:
如何证明一个人有比较优秀的学习能力?学习做到目到,口到,心到。
3.3 掌握搜索信息的有效方式
如何提升获取的信息质量,这里有一些建议:
精确定位问题
梳理出关键字与概念
“全网”搜索
分析研究
实践&结论&假设
3.4 具备优秀的批判性思维模型
在《批判性思维工具》一书中,对思维的水平分了三个层次:较差、中等、最佳水平的思考(如下图1)。当前很多同学可能在多数问题上都处于较差水平层次,很多认知来自直觉或者自我视角。最佳水平的思考要做到三点:全局、公正、客观。
文章来源:https://mp.weixin.qq.com/s/LxW4j7JOOrEGYWylP2j9Mg
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951488791@qq.com