第一章 计算机的世界你不懂
主要内容: 对计算机的运行、组成等进行了基本介绍,主要有:CPU调用线程进行工作、计算机的组成、数据库、锁、高低级编程语言
学习了解内容如下:
- 从CPU工作内容以及CPU、内存、硬盘三者运行速度的过大差距意识到目前计算机运行的优化其实是两条线:①优化CPU调度②使用缓存弥补不同物理设备的速度差距
- 从数据库并发了解了原子性等概念
- 意识到从机器语言到高级语言,其实是对计算机执行命令的一步步抽象与封装
- 了解到从单线程到并发执行,效率提升的同时必然带来问题,也就有了锁的诞生
第二章 Java帝国
主要内容: 对Java语言的介绍,如:面向对象、标准制定、动态代理、泛型、Spring。因为还未学习,理解可能不是十分准确
学习了解内容如下:
- C语言的难度在于其过于接近底层,指针、内存的管理造成编程难度过大
- Java无需内存管理、带有类库、面向对象的特点大大提高了编程体验
- Java擅长于定义标准,可以完成数据库、网络、页面等等内容(但最适合的还是后端)
- 了解了综合系统中一条消息的处理造成瓶颈引出的消息队列的产生
- 知道了原来Java这一静态语言是通过在内存中生成动态类实现动态代理
- 隐约感觉到是从Java注解开始,Java与XML开始有了更进一步的联系
- 迷迷糊糊感觉Java的泛型是通过类的集成实现
- 从Log4j日志系统接触了正交性这一概念
- 悲观锁:有任务就锁住,其余操作等待唤醒;乐观锁,基于操作原子性,值变化则本次不生效,隐形加锁
- 通过装饰者模式、正交性的理念,实现面向切面的编程(AOP),进而有了Spring
第三章 浪潮之巅的Web
主要内容: HTTPS加密、token等令牌机制、集群带来的问题及解决方案、HTTP Server
学习了解内容如下:
- 程序之间从单机器通信到部署于不同机器交换数据,产生了Web的概念
- 有了通信,就要防止窃听,HTTPS实现了证书–非对称秘钥–对称秘钥这一安全通信的建立
- cookie是发给浏览器的,session是存在后端的,两者对比实现身份验证;JWT等方法把明文密码转变为token,携带在cookie中即可
- 单点登录的解决方案是设立一个认证中心,为每个页面在登录时做验证
- 为了解决瓶颈使用了集群,集群又带出了一致性以及负载均衡问题。均衡算法、一致性hash算法、hash插槽的出现一定程度上解决了均衡性问题;master-slave功能实现了故障转移;数据库读写分离保证了数据的一致性
- SOA是把不同业务进行关联,统一管理;微服务是把庞大的业务进行拆分,独立运行;框架则是一种对于问题的最佳实践经验
- HTTP Server 1.0-3.0实现了从单进程到多进程再到单进程(但通过数组一次服务多个请求–select模型)的变化;HTTP 4.0仅针对数组中变化项进行服务,避免遍历带来的开销–epoll模型
第四章 代码管理那些事
主要内容: SVN、GIT、Ant
学习了解内容如下:
- 代码合作之SVN的版本控制、代码合并
- Git的私人仓库、提交PR
- 手动build到自动化build,Ant约定重于配置的思想
第五章 我的编程语言简史
学习了解内容如下:
- JavaScript+JSON统治前端
- NodeJs将JavaScript跑在了后端
- C和Java都对函数调用做了链接,C是在编译时实现,Java在运行期实现
- 声明式编程只需要描述怎么做,不用给出具体的指令,如SQL
- 命令式编程需要明确每一步做什么,因为冯·诺依曼结构以及cpu基于命令运行的特点,大多语言本质上还是命令式编程