计算机基础作用
举例1:若是我们要开发大规模应用系统,如电商服务系统,要考虑很多
1. 这个服务应用要用什么语言来编写?
2. 是采用单体进程,还是用多个进程来协同工作?
3. 如何管理长期使用的内存空间?如何避免系统 IO 抖动?
4. 如何处理网络带来的各种问题,比如通信拥堵、拒绝请求,甚至掉线?
这些问题,显然不是我们知道这些方面的几个接口函数就能解决的
举例2:在往生产数据库中导入部分数据时,会造成客户端的访问超时
如果你没能掌握文件系统、Cache、IO 等基础的话,就很难想到用 iotop、iostat 等工具去查看 IO 操作,也就无从发现 MySQL 在导入数据时还会产生大量的日志,而这些日志也需要存盘引发大量 IO 操作,导致 IO 带宽爆满,造成访问超时。更不用说想到可以用 MySQL 的 innodb_flush_log_at_trx_commit 来控制 MySQL 的 log 行为了
举例3:
如果你不知道操作系统与 CPU、RAM 等硬件的交互原理,就很难理解 JVM 为啥要抽象出堆、虚拟机栈和本地方法栈、程序计数器、方法区之类的概念来屏蔽硬件差异,更别说理解 JVM、JUC 中的内存管理、多线程安全的核心设计思想了。你看,写不出高并发、安全可靠程序的瓶颈,深究起来欠缺的竟然是底层基础知识。
想要成为优秀工程师,就需要你深入芯片、内存、语言、应用、IO 与文件等这些基础组件学习研究,甚至还要钻研语言指令的运转,搞懂芯片尤其是 CPU 的机制原理。这些基础,不仅仅是对计算机本身很重要,对从事计算机的任何细分行业的每个人都很重要。
计算机基础要怎么学?
一个人的自我学习能力和态度决定着技术成就,不然只会陷入 CRUD Boy 或者 API Caller 的圈子里,终日忙忙碌碌却依旧原地踏步。IT 人就是要时刻保持学习,才能不会被淘汰。
此文章为4月Day25学习笔记,内容来源于极客时间《计算机基础实战课》