当前位置: 首页 > article >正文

Unix的工作原理:成为更优秀的软件工程师(一)

网文翻译Unix的工作原理成为更好的软件工程师 |尼尔·卡卡尔Unix很漂亮。让我给你画一些快乐的小树。我不会解释一堆命令——那太无聊了网上已经有无数教程了。我留给你对这个系统进行推理的能力。你想做的每一件花哨的事只要谷歌一下就能完成。但理解为什么解决方案能达到你想要的效果并不相同。这才是真正赋予你力量的是不害怕的力量。既然押韵那一定是真的。假设你是从零开始我会设置足够让我们一起玩的命令。我们会探索概念在 、 中看到它们的实际操作然后大喊“我懂了”在此过程中我们还会弄清楚a到底是什么。shellshell但我们不能不进入创作者的内心探索Unix的理念。目前我们可以假设Linux就是Unix。如果你想知道为什么不是这样可以直接跳到底部再回来。我们将彻底结束Unix与Linux的混淆。理念让我们从核心说起——Unix背后的理念。写出只做一件事并且做得好的程序。编写程序来协同工作。不要额外输出不要强求互动输入写程序处理文本流因为那是一个通用接口。Unix还采纳了“越差越好”的理念。这种思维非常强大。在更深层次上我们在函数式编程中经常看到构建专注于某一事物的原子函数不增加额外输出然后将它们组合起来做复杂的事情。组合中的所有函数都是纯函数。没有全局变量需要跟踪。或许正因如此Unix 的设计侧重于两个主要组成部分进程和文件。Unix中的一切都不是进程就是文件。别无他物。进程和文件之间存在周期性依赖——如果我们深入解释其中一方就需要另一方来支持。为了打破这个循环我们将先简要介绍每个项目然后深入探讨。我们会重复几次以探究底层。进程你运行的浏览器是一个进程。如果你开着终端它也同样重要。2如果没有现在是打开它的好时机。如果你用的是Windowsdocker也表现很好。如果你用的是Mac你可以直接在Mac上用cmd——这是个Unix环境。更抽象地说进程是一个正在运行的代码实例。操作系统会给进程提供资源比如内存然后附加一些元数据比如拥有者是谁然后运行代码。操作系统作为资源的一部分还为每个进程提供3个打开文件、和。stdinstdoutstderr文件所有非过程的都是文件。是的这意味着你的打印机、扫描仪、终端屏幕任何进程的代码都是档案。如果这听起来很困惑请继续阅读。我们会清理的。你在文件系统上的文件就是文件——一串字节串联起来创造出有意义的东西。你的照片是文件。你的目录也是文件它们只是包含当前目录中存在的文件/目录列表就像树一样。它的好处是我还能“打开”目录文件查看内容例如$ vim . Netrw Directory Listing (netrw v162) /Users/Neil/examples Sorted by size Quick Help: F1:help -:go up dir D:delete R:rename s:sort-by x:special ../ ./ git-example/ unix-git/ unix-file-system-example/以前打开过一个叫 .这听起来熟悉吗这是Unix存储当前目录的方式。如你所见它包含当前目录中的文件/目录列表。Vim.文件只是一串数据流。文件与文件系统有了“一切都是文件”和“文件是数据流”的理念我们可以进一步探讨事物的工作原理。在Unix系统中输入和写输出的流是预先定义的。这正是标准输入、标准输出和标准误的意义所在。stdin stdout stderrstdin是输入数据源。stdout是输出数据源。stderr是标准误差的输出源。在shell3输入你的键盘数据和 都是屏幕。stdinstdoutstderr4现在我们可以把这些流重新定向到别处我们的程序也不必知道无论输入来自哪里键盘还是文本文件对于任何正在运行的进程输入都是来自 。同理对于和。当我们谈到与这些流共处的流程时我们会详细讨论。stdinstdoutstderriNode要建立文件系统你需要一个结构来管理文件系统。文件中不仅有数据需要处理还有关于数据本身的信息称为元数据。这包括数据存储地点、谁拥有以及谁能查看数据。这就是inode——你文件元数据的数据结构。每个文件都有唯一的inode编号。这成为文件存在时的唯一标识符。$ ls -li total 0 2015005 drwxr-xr-x 6 neil X 192 23 Oct 07:36 git-example 2514988 drwxr-xr-x 4 neil X 128 9 Oct 11:37 unix-git/ 2020303 drwxr-xr-x 4 neil X 128 23 Sep 11:46 unix-file-system-example/看到第一栏的那些数字了吗那是iNodeiNode 存储所有元数据。 查看这些元数据也很有用。$ stat -LF .drwxrwxrwx 7 A B 224 Oct 28 07:15:48 2018 ./和 分别是用户名和组名。Unix 是一个多用户系统。Unix 就是这样做的—— 用户和组是文件的属性。AB将用户属性设置为X的文件表示X拥有该文件。 用户对Unix来说就只有这个功能。224是文件大小或文件中的字节数。Oct 28 07:15:48 2018是最后修改日期。我这些信息是从哪里来的。man ls现在说说我没提到的有趣数字和字符和。drwxrwxrwx

相关文章:

Unix的工作原理:成为更优秀的软件工程师(一)

网文翻译:Unix的工作原理:成为更好的软件工程师 |尼尔卡卡尔 Unix很漂亮。让我给你画一些快乐的小树。我不会解释一堆命令——那太无聊了,网上已经有无数教程了。我留给你对这个系统进行推理的能力。 你想做的每一件花哨的事,只要…...

如何启动MQTT服务器

WINR:1、cd D:\MQTT\Mosquitto2、 "D:\MQTT\mosquitto.exe" -vcd D:\MQTT\Mosquitto .\mosquitto.exe -v...

AI建站工具怎么选?5大维度对比与选型指南

AI建站工具怎么选?5大维度对比与选型指南面对市面上层出不穷的建站工具,很多自媒体人和创业者都犯了难:“都说自己简单、好用,到底哪个更适合我?”“不会代码的我,应该用哪种工具才能少走弯路?”…...

linux的文件目录C语言数据结构

在Linux内核中,文件目录结构并非简单的链表或数组,而是为了极致性能设计的复杂混合数据结构。针对不同的使用场景(小目录、大目录、缓存查找),内核使用了不同的数据结构。以下是从操作系统内核实现角度出发&#xff0c…...

UI-TARS桌面版:智能桌面助手实现零代码GUI自动化操作

UI-TARS桌面版:智能桌面助手实现零代码GUI自动化操作 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop …...

大语言模型动态链接库封装:dllm项目技术解析与实践

1. 项目概述:当大语言模型遇见动态链接库 最近在开源社区里闲逛,发现了一个挺有意思的项目,叫 dllm ,作者是 ZHZisZZ 。光看这个名字,就让人会心一笑——它巧妙地把“动态链接库”(DLL)和“…...

SpeedAI写作降重助手

既能降维普重复率又能消AIGC痕迹的工具推荐 2026年维普检测规则升级后,论文需要同时满足重复率、AIGC疑似率两项达标要求,修改难度大幅提升。从实际对比体验来看,以下几款工具能高效帮你完成双降目标: SpeedAI科研小助手&#x…...

AISMM模型评估可视化效能跃迁路径(工业级部署实测:准确率提升37.6%,耗时压缩至1/5)

更多请点击: https://intelliparadigm.com 第一章:AISMM模型评估数据可视化 AISMM(Adaptive Intelligent Semantic Matching Model)模型在语义匹配任务中依赖多维评估指标,其可视化分析是验证泛化性与鲁棒性的关键环节…...

从零开始:手把手教你为嵌入式设备编写一个简单的Power Supply驱动(基于Linux 4.19.111)

从零开始:手把手教你为嵌入式设备编写一个简单的Power Supply驱动(基于Linux 4.19.111) 在嵌入式Linux开发中,电源管理是一个至关重要的环节。无论是智能家居设备、工业控制器还是便携式医疗设备,稳定可靠的电源供应都…...

【AISMM模型实战指南】:3大产品创新瓶颈的精准诊断与7天落地路径

更多请点击: https://intelliparadigm.com 第一章:AISMM模型与产品创新能力 核心构成与创新映射关系 AISMM(Artificial Intelligence Software Maturity Model)并非传统能力成熟度模型的简单延伸,而是将AI工程化实践…...

如何快速掌握数据流同步技术:Lab Streaming Layer完整使用指南

如何快速掌握数据流同步技术:Lab Streaming Layer完整使用指南 【免费下载链接】labstreaminglayer LabStreamingLayer super repository comprising submodules for LSL and associated apps. 项目地址: https://gitcode.com/gh_mirrors/la/labstreaminglayer …...

C++ 虚函数全解:从基础原理到高级特性(多重继承 / 菱形继承 / CRTP 对比)

前言虚函数是 C运行时多态的核心,也是面试、底层开发、嵌入式 C 必考重难点。本文从零梳理:定义、特点、底层原理、覆盖与隐藏、final、纯虚函数、虚析构、构造虚函数、默认参数坑、多重继承内存模型、菱形继承,最后对比 CRTP 静态多态&#…...

避开FPGA实现SoftMax的坑:Verilog浮点运算的精度与资源权衡实战

FPGA实现SoftMax的工程实践:精度与资源的深度博弈 在边缘计算场景下,FPGA部署神经网络时总会遇到一个绕不开的难题——如何用有限的硬件资源实现高精度的SoftMax运算。这个看似简单的归一化函数,却让不少工程师在项目后期陷入时序紧张和资源超…...

保姆级避坑指南:在VMware Workstation 17上搞定macOS Ventura虚拟机(附Intel/AMD配置差异)

VMware Workstation 17上完美运行macOS Ventura虚拟机的终极指南 在Windows环境下运行macOS虚拟机一直是开发者和技术爱好者的热门需求,尤其是对于需要跨平台测试或体验苹果生态的用户。然而,这个过程充满了各种技术陷阱和兼容性问题。本文将深入探讨在V…...

通信工程毕业设计必过课题大全

【单片机毕业设计项目分享系列】 🔥 这里是DD学长,单片机毕业设计及享100例系列的第一篇,目的是分享高质量的毕设作品给大家。 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的单片机项目缺少创新和亮点…...

观察使用 Taotoken 后月度 AI 模型 API 开支的清晰度与预测性变化

观察使用 Taotoken 后月度 AI 模型 API 开支的清晰度与预测性变化 作为项目管理者,协调多个开发团队使用不同的大模型 API 是一项日常工作。过去,每个项目可能使用不同的供应商,账单分散在各个平台,月末汇总成本时总像在拼凑一张…...

如何高效部署RTL8821CU无线网卡驱动:Linux系统完整解决方案

如何高效部署RTL8821CU无线网卡驱动:Linux系统完整解决方案 【免费下载链接】rtl8821CU Realtek RTL8811CU/RTL8821CU USB Wi-Fi adapter driver for Linux 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8821CU 在Linux环境中部署Realtek RTL8811CU/RTL8…...

3分钟解决Blender到Unity的FBX旋转难题:终极坐标转换指南

3分钟解决Blender到Unity的FBX旋转难题:终极坐标转换指南 【免费下载链接】blender-to-unity-fbx-exporter FBX exporter addon for Blender compatible with Unitys coordinate and scaling system. 项目地址: https://gitcode.com/gh_mirrors/bl/blender-to-uni…...

如何用Playnite打造你的终极游戏库:统一管理20+平台游戏

如何用Playnite打造你的终极游戏库:统一管理20平台游戏 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: ht…...

Gemini3.1Pro:HR招聘神器,一键生成专业面试题

对 HR 来说,招聘最花时间的,往往不是发职位,而是出题、筛选、追问、比对、整理面试记录。尤其是技术岗、产品岗、运营岗、设计岗这些岗位,面试题如果出得不准,就会出现两个问题:要么问得太浅,看…...

2026年学AI必看:从零到项目实战路线图,小白也能轻松掌握(收藏版)

随着AI技术的快速发展,学习AI已成为大学生的必修课。本文提供了一份从零到项目的完整学习路线图,帮助读者了解2026年学AI的新趋势和实用技能。文章分为六个阶段,包括认知建立、工具上手、编程入门、核心技能、项目实战和持续进阶,…...

如何用Python的SALib库在10分钟内完成模型敏感性分析

如何用Python的SALib库在10分钟内完成模型敏感性分析 【免费下载链接】SALib Sensitivity Analysis Library in Python. Contains Sobol, Morris, FAST, and other methods. 项目地址: https://gitcode.com/gh_mirrors/sa/SALib 你是否曾经面对复杂的数学模型&#xff0…...

大模型应用开发火了?小白程序员如何入行?收藏这份岗位解析与学习指南!

大模型应用开发岗位在招聘市场上需求旺盛,引发广泛关注。本文解析了该岗位的核心内容,指出其与传统开发(C/Java/Go)及算法岗的并列关系而非替代关系。文章详细区分了算法工程师(改模型)、LLM应用工程师&…...

Java老兵转型AI开发:小白必备实战指南,收藏版!

本文为Java程序员提供一份AI开发实战指南,从Java技能的复用到Python学习,再到机器学习、深度学习和大模型API调用,详细阐述了转型AI开发的学习路径和实用技巧。文章强调边做边学,理解核心概念,避免陷入数学难题和过早购…...

BepInEx架构解析:解锁Unity游戏插件开发的无限可能

BepInEx架构解析:解锁Unity游戏插件开发的无限可能 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一个专为Unity和.NET游戏设计的现代化插件框架&#xff0c…...

别再乱写版本号了!从Android到华为,聊聊SemVer、VRC那些事儿(附实战避坑指南)

版本号管理的艺术:从SemVer到VRC的工程实践指南 在软件开发的世界里,版本号就像产品的身份证,看似简单的数字组合背后隐藏着团队协作的智慧结晶。我曾见过一个中型SaaS团队因为版本号混乱导致生产环境部署错乱,最终不得不回滚三天…...

奇点大会独家披露:AISMM认证体系背后的NIST AI RMF 2.0对齐矩阵(含5大能力域+17项可量化评估指标)

更多请点击: https://intelliparadigm.com 第一章:2026奇点智能技术大会:AISMM培训认证 2026奇点智能技术大会(Singularity Intelligence Summit 2026)正式发布全新一代人工智能系统管理与建模(AISMM&…...

手把手教你用devmem2工具直接读写PCIe设备配置空间(附ARM64/X86实战命令)

实战指南:用devmem2工具直接操作PCIe设备配置空间 在嵌入式开发和硬件验证领域,快速访问PCIe设备配置空间是一项基础但关键的技能。当我们需要验证新硬件是否被正确识别,或者调试驱动问题时,往往需要在编写完整内核驱动前先进行一…...

SITS2026正式落地:3大颠覆性变化、5类高危误判场景及2026年合规自检清单(立即下载)

更多请点击: https://intelliparadigm.com 第一章:SITS2026正式落地:AISMM行业基准数据 SITS2026(Software Intelligence Testing Standard 2026)作为首个面向AI系统可信性验证的国家级测试标准,已于2024年…...

构建工业级AI平台的关键技术和难点

构建工业级 AI 平台,本质上是在解决“AI 算法的随机性”与“工业生产的确定性”之间的矛盾。在「资产数字化 → 互联 → 共享 → 共生」框架下,通过系统工程,搭建一个具备“工业龙虾”特质的 AI 仿真环境。一、 关键技术:构建平台…...