根据当周学习情况,完成一篇学习总结
本周的课程主题依旧是“性能优化是架构师展现自己技能全面性的时刻”,第一次课的主要内容是数据结构与算法,第二次课的主要内容是网络与数据库。这些内容无疑是每个与程序打交道的人都必须深刻掌握与理解的!
数据结构与算法,是每个人的积累与内功的体现,也是大厂面试的重中之重。正如李老师说,算法与数据结构是进入大厂的门槛,在实际工作里不直接体现,却是个很好的筛选工具。这里呢,首先要搞明白的是时间复杂度与空间复杂度的计算,基于这个理论,我们才能评判出算法设计的优劣。其次呢,是熟悉各种常见的数据结构,包括数组、链表、哈希表、栈、队列、树(二叉排序树、红黑树)、跳表等,明白其结构的特点与适用场景、适用原因等等。最后呢,是熟悉一些经典的算法,包括穷举算法、递归算法、贪心算法、动态规划等等。明白了这些知识,有利于我们更好地去理解一些中间件的设计,按照实际情况作出更好地选择等等。
网络与数据库部分,也是很基础的、每个从业者都应该掌握的内容。首先讲解的是网络部分,涉及内容包括 OSI 七层模型与 TCP/IP 四层模型、TCP/IP 协议、HTTP 协议等。我们要熟悉每一层都进行了哪些操作,涉及到了哪些协议。后面重点介绍了非阻塞网络 IO,对比了传统的 Java IO 与 NIO 的处理差别。最后一部分内容是数据架构原理与性能优化,包括数据库的架构及各个组成、PrepareStatement 的优势,B 树与 B+树,索引与事务等。在答疑阶段,印象比较深刻的一个问题是关于分布式事务的处理的,李老师建议采用主动的异常补偿的方法来进行,通过这种方式来保证事务。
最后,课程里我印象很深刻的一点是,李老师分享的个人学习方法论——每个知识点都去设身处地的猜想,如果是自己去设计、去实现,自己会怎么去设计与实现。毕竟每个人的精力有限,很难去钻各种技术的细节,要学会从宏观角度把握!
以上!