作为程序员,你必须理解这些有关计算机的知识存储—-块设备,文献系统,集群文献系统,分布式文献系统,光纤SCSI,iSCSI,RAID 等
网络—-以太网,光纤网,蜂窝网络,WIFI,VLAN 等
计算机体系构造,重要就是 CPU 指令集
x86,ARM 等
USB 协议
需要懂得 URB 包
PCI 协议,PCI-E 协议
现代计算机的外设都是 PCI 协议和 PCI-E 协议的
显卡目前全是通过 PCI-E 协议连接到计算机上的
相对来说减少了诸多需要学习的知识
搞虚拟化就需要深入掌握 PCI 协议
图像处理–图像压缩,视频实时编码等
3D 游戏关系数据库NoSQL 数据库操作系统分布式操作系统编译原理机器学习–目前大数据要用哦
理解这些领域知识,也包括理解该领域既有的商用硬件、商用软件和开源软件
诸多时候,你要完毕的工作,已经有现成的工具了
你只要使用现成的工具就可以完毕任务,不需要进行开发
有时候,只需要组合既有的工具,写某些脚本就可以完毕任务
如,我一次要实现一种双向同步任务
找到了一种优秀的开源软件Unison,编写一下配置文献就圆满地完毕了任务
不需要编写任何代码
尚有一次,要做高可用,用 Python 调用了几种开源软件就轻松实现了
编写安装程序,定制操作系统,懂得了操作系统的领域知识,写几行脚本就可以轻松搞定
不具有领域知识的人,就也许不得不进行大量无谓的开发,甚至开发很久之后才发现,这主线就是一条死路
此外,扎实的领域知识,可以大大提高编程调试、查错的能力
懂得编译器和编程语言运行时工作原理,就能迅速根据编译错误和警告信息修改代码
懂得操作系统底层运行机制,就能迅速找到运行时错误的问题本源
如,有一次我编写一种 windows 升级服务程序
它是一种 windows服务,需要执行 dos 脚本,这个脚本会替代掉这个 windows 服务自身
发既有时脚本执