前言

一个Java程序员和Linux有什么关系哪,是否需要系统的学习下linux哪

以前专注于开发功能,增删改查,都是在桌面云工作,从来不考虑OS问题,因为有专门的的运维人员做服务器运维,就算CICD也是自动化系统,只需要浏览器点一点。

有一天做感知项目,从OA转向平台开发,发现一切都变了。什么Java,go,python,lua,shell,powershell,经常和Openresty打交道,ECS部署系统,虽然有自己的logkit,还是喜欢OS直接看服务器健康状况,上线发包部署。

如果有出海项目,远程部署运维升级更是家常便饭。

另外,常见的业务开发似乎忘记了计算机世界的本质,计算机只有01的二进制世界,而我们看到的都是假象,本质上不存在什么文本,音频,视频,图片。

看到的内存,cpu资源也都是虚拟的,在加上连OS都是虚拟的,很多东西都想沙滩上建房子,忘记了根基,从事心慌。

所有当你解决海外无镜像的前提下安装ansible的问题时才知道操作系统基础知识的重要,当你发现centos部署的openresty好好的,为啥远程suse或者欧拉系统不适配时迷茫时才知道操作系统的重要。

大多程序员都是用户态的程序员,我们似乎忘记了程序都是运行在内存上的数据和算法,本质都是cpu等指令集的调用而已,更是忘记了你预计的内存空间未必够用,IO也不是你想的那样,还有个内核态的资源消耗。

挂载了nas盘本以为自己动了挂载,结果reboot后导致所有服务消失慌得一批,原以为从go开发的agent完美无瑕,结果发现俄罗斯电信服务器却不支持,原来crontab未必都自带。

我们的程序是运行在操作系统上的,操作系统是一切硬件资源的管理者,同时也是屏蔽者,linux操作系统知识同C语言、编译原理,数据结构和算法一样重要,否则我们连Java IO的框架都看不懂,就算你看了很多博客背下来,一样不了解read0到底怎么实现,怎么就能从磁盘读出来的。

操作系统是一个Java工程师的基本功,这年代就是这么内卷。

posted @ 2023-03-21 08:46  红尘过客2022  阅读(12)  评论(0编辑  收藏  举报