登录社区云,与社区用户共同成长
邀请您加入社区
历时数月,终于完成了《UNIX环境高级编程》(第3版)全书21章的学习。这本被誉为UNIX系统编程“圣经”的巨著,由W. Richard Stevens和Stephen A. Rago合著,涵盖了UNIX/Linux环境下系统级编程的方方面面。本文是对全书知识体系的系统性总结,按照内容逻辑分为六大模块,提炼核心概念、关键函数、设计模式和实践技巧,并附有代表性的代码片段和架构图,希望能为同样在学习A
摘要: Windows、Android、iOS三大操作系统以不同路径重塑数字时代。Windows凭借图形界面与极致兼容性,成为工业控制、生产力工具的基石;Android通过开源策略降低智能硬件门槛,推动移动设备普惠化;iOS以软硬协同定义流畅体验与隐私安全标准。三者分别解决了通用计算、移动普及和高端体验的痛点:Windows支撑工业自动化生态,Android覆盖碎片化硬件场景,iOS树立封闭优化的
核心功能:基于和TestTime,计算并格式化开始和结束时间(),并比较两者。日期比较使用等运算符比较DateTime。使用TimeSpan计算时间差。确保时区一致(+08)。输出示例开始时间:20250828 17:23:00结束时间:20250828 22:53:00比较结果:结束时间晚于开始时间,差 5.50 小时。扩展:支持自定义格式、毫秒精度、日期部分比较。如果需要更复杂的比较逻辑(例如
通过阅读前面的 EDKII 相关代码实现,我们可以很容易发现其虽使用的是 C 语言语法,但编写规则与我们在 IDE 或者操作系统上运行的 C 语言代码不太一样。以简单的 HelloWorld 程序为例。EDKII 中的代码为:EFI_STATUSEFIAPIUefiMain () {\n");UNIX 风格代码如下:\n");return 0;对比以上两个程序,下面的代码可以使用我们常见的 C 语
本文介绍了专为OpenHarmony平台适配的BusyBox工具集ohos-busybox,详细说明了其在鸿蒙PC上的安装使用方法。项目基于BusyBox 1.37.0版本,采用GPL-2.0许可,为aarch64架构的鸿蒙PC提供交叉编译版本。文档重点阐述了必须使用HNP(HarmonyOS Native Package)格式安装的原因,对比了开发板与容器的不同使用方式,并提供了完整的HNP包打
第十五章讨论的是Unix域协议(Unix Domain Protocol)。Unix域协议并非一个实际的协议族,而是在单台主机上执行客户/服务器通信的一种方法,所用的API与在不同主机上执行客户/服务器通信所用的套接字API完全相同。Unix域提供两类套接字:字节流套接字(SOCK_STREAM,类似TCP)和数据报套接字(SOCK_DGRAM,类似UDP),此外Linux自2.6.4起还支持SO
第十三章聚焦于Unix/Linux系统中不可或缺的守护进程概念。在Unix系统中,用户通常与shell进行交互式会话。然而,许多网络服务需要在后台默默运行,不受用户登录/注销的影响,甚至需要在系统引导时启动。这些服务程序就是守护进程,它们没有控制终端,在后台运行,执行各种管理任务。本章的核心任务是:理解守护进程的本质,掌握将普通进程转化为守护进程的完整步骤,了解syslog日志系统的运作机制,以及
Unix 与 Linux 的关系,如同武学中的正宗门派与开宗立派的传人。Unix 开创了现代操作系统的设计范式,定义了 “一切皆文件”、管道、Shell 等经典思想;Linux 则继承了这些设计哲学,以开源模式重新演绎,并在硬件支持、生态规模和创新速度上实现了全面超越
第十二章深入探讨IPv4向IPv6过渡期的核心问题——互操作性。在向IPv6转换的漫长过渡期内,主机和路由器会同时运行着IPv4协议栈和IPv6协议栈很多年。IPv4客户端如何与IPv6服务器通信?IPv6客户端如何与IPv4服务器通信?本章假设所有讨论的主机都运行着双栈(即同时拥有IPv4和IPv6协议栈),重点讨论客户端与服务器端使用不同类型地址的场景——因为相同类型的地址通信是直截了当的,没
第十一章是《UNIX网络编程》中极其关键的一章。到此为止,书中所有例子都使用数值地址表示主机(如 206.6.226.33),使用数值端口号标识服务器(如端口 13 代表 daytime 服务器)。但出于三个理由,我们应该使用名字而非数值:名字更容易记住;数值地址可以变动而名字保持不变;随着向 IPv6 过渡,数值地址变得非常长,手工键入数值地址更容易出错。本章的核心主题是实现主机名与 IP 地址
本文系统阐述了Linux/Unix操作系统的核心设计哲学,重点剖析了"一切皆文件"和"组合小工具"两大核心理念。"一切皆文件"将硬件设备、进程信息、网络连接等系统资源统一抽象为文件接口,通过标准系统调用实现统一访问,极大降低了学习成本并提升了工具复用性。"组合小工具"原则倡导单一职责,通过管道机制将功能专一的小工具灵活组合,形成强大的数据处理能力。这两种哲学共同构建了Unix/Linux系统的简洁
第十章是对第九章理论的实战验证。第九章详细介绍了SCTP的基本套接字API,本章则运用这些API编写一个完整的一到多式SCTP回射客户/服务器程序。客户从标准输入读入一行文本,格式为[#]text(方括号中的数字表示要在这个流号上发送该文本消息)服务器接收后,将接收消息的流号加1,然后在新流号上发回客户读取回射行并打印,同时列出**流号、流序列号(SSN)**和新流号解决头端阻塞问题。流序列号在每
Codex提示"找不到bubblewrap"是一个环境依赖提示,而非致命错误。bubblewrap是Linux的沙箱工具,用于限制Codex执行命令时的文件访问范围,提供安全边界。当系统PATH中找不到bubblewrap时,Codex会使用内置版本继续工作。 对于Linux/WSL用户,建议通过系统包管理器安装bubblewrap(如apt/dnf/pacman安装)。若Codex能正常执行命令
kalloc()核心判断标准:如果这块物理页是这个映射“拥有”的,删映射时就可以 kfree();如果这块物理页不是这个映射拥有的,或者还会被别处使用,就只能摘掉映射,不能释放物理页。
数据层目标:保障数据流的「4C特性」:正确性(Correctness)、一致性(Consistency)、机密性(Confidentiality)、低延迟(Low Latency,补充特性);管控层目标:实现数据流的全生命周期可观测、可干预、可溯源,支持毫秒级的故障响应;业务层目标:满足合规要求,保障业务SLA,降低Agent集群的运维成本。AI Agent Harness实时数据管控是Agent
为了强制模型吐出我们要的结构,我们引入 Python 极具人气的类型校验库Pydantic。💡BaseModel与Field是什么?BaseModel:Pydantic 的核心基类。只要继承了它,你的 Python 类就自动拥有了强大的数据校验和 JSON 序列化/反序列化能力。(注:Pydantic 极其智能,如果模型输出了字符串'true',它会自动帮你转换为布尔值True,无需担心类型错误
第七章在前六章的基础上,深入探讨套接字编程中的一个重要课题——套接字选项(Socket Options)。前几章学习了套接字的基本API和I/O复用,但这些都是在默认行为下使用套接字。而实际应用中,往往需要调整套接字的行为来满足特定需求。套接字选项是用于控制和获取套接字行为的一系列参数,涵盖了从通用套接字层到协议特定层的各种属性。本章的核心是介绍如何获取和设置这些选项,以及每个重要选项的用途和注意
第六章解决了第五章遗留的核心痛点:当客户同时处理标准输入和TCP套接字时,若阻塞于fgets等待用户输入,而服务器提前终止,客户端直到尝试读取套接字时才能发现EOF,这可能需要漫长的等待。本章引入的I/O复用机制,正是为了解决这一类问题。I/O复用(I/O Multiplexing)是指进程预先告知内核需要监视多个描述符,内核一旦发现其中任何一个描述符就绪(即输入已准备好被读取,或描述符已能承受更
第五章是UNP全书中真正开始“打仗”的一章。编写一个完整的、能在真实网络环境中运行的、能够处理各种异常情况的TCP客户/服务器程序。本章通过一个TCP回射(Echo)服务器僵尸进程问题:并发服务器中fork出的子进程终止后如何被正确回收?信号处理:SIGCHLD信号的正确捕获方式,为什么wait不够而必须使用waitpid?系统调用中断:慢系统调用被信号中断后如何处理EINTR?服务器故障场景分析
第四章是UNP全书的真正编程起点。前一章学习了套接字地址结构和字节序转换这些基础构件,本章将这些概念落到实处——开始编写真正的TCP客户/服务器程序。本章的使命是完整介绍编写一个TCP客户/服务器程序所需要的全部基本套接字函数,包括socket、connect、bind、listen、accept、close和fork等。学完本章,你将能够独立编写一个简单的TCP回射(echo)客户/服务器程序。
第三章真正开始进入套接字API的世界。前一章讲的是TCP、UDP、SCTP这些传输层协议的理论知识,而从本章开始,要学习如何使用套接字来实际编写网络程序。本章不涉及具体的客户/服务器完整实现(那是第四章的内容),而是专注于介绍套接字编程的基础构件——地址结构、字节序转换、地址格式转换等基础函数。如果本章的概念没有吃透,后续的编程将寸步难行。所有套接字函数都依赖于对地址结构和字节序的正确理解。当向套
第二章聚焦于传输层,主要讲解TCP、UDP和SCTP这三个核心协议。绝大多数客户/服务器网络应用都使用TCP或UDP,而SCTP是一个较新的协议,最初设计用于跨因特网传输电话信令。从网络编程角度提供足够的细节以理解如何使用这些协议,同时了解协议的实际设计、实现细节。学完本章后,你应该能够理解TCP的可靠性机制、UDP的简单性、SCTP的多宿特性,以及套接字层提供的缓冲机制。对比维度TCPUDPSC
2023年,一辆自动驾驶汽车在紧急情况下做出了一个决定——它选择撞向一侧的行人,而不是冲向另一侧的墙壁。车内乘客安然无恙,但被撞的行人重伤。这个决策在0.3秒内完成,没有人类干预。这不是科幻小说。这是真实的伦理困境。当技术开始介入生死抉择,我们的道德框架还管用吗?
AI大模型是当代技术革新的前沿,它们通过海量数据训练,具备强大的语言理解、生成和逻辑推理能力,正在深刻地改变信息处理、决策支持、内容创作等多个领域。这些模型不仅提升了效率和准确性,还推动了个性化服务和智能交互的发展,成为推动各行各业数字化转型和智能化升级的关键驱动力。作为人工智能领域的集大成者,AI大模型应用领域广泛而深入,涵盖了从自然语言处理、图像和视频分析、智能助手和聊天机器人的客户服务,到知
Agentic BI 的"Agentic"来自 AI Agent(智能体)的概念。和传统的 LLM 对话不同,AI Agent 具备三个核心特征:感知上下文、使用工具、执行动作。
本文详细介绍了如何在华为昇腾310P NPU上使用mis-tei框架部署BAAI开源的BGE-M3多语言通用嵌入模型。文章从环境校验、镜像拉取、模型下载到容器启动和接口测试,提供了完整的部署流程指南,包含Docker-compose配置示例和Python调用代码。针对生产环境部署,给出了资源限制、自动重启等优化建议,并列出常见问题排查方法。该方案充分发挥了昇腾310P的低功耗高吞吐优势,通过mis
《计算机世界的双向哲学:从Unix管道到变量赋值的逻辑对立与统一》 本文探讨计算机系统中两种核心逻辑范式:Unix管道的「对象优先」与变量赋值的「结果优先」。Unix采用动态流水线思维,数据从左向右流动(推力模型),体现时间维度的过程导向;而编程语言赋值语句遵循静态容器思维,先在左侧确定目标再填充数据(拉力模型),体现空间维度的状态存储。二者在硬件层面统一于「目的地优先」原则:汇编指令的DEST-
本文使用 AI 写了一个很简单的程序代码, 实现了通过 SSH 在同一个 Linux 虚拟机中转发消息的功能.这不仅测试了 AI 写代码的能力, 也了解了 订阅/发布 这种常见的模型. 是一次很愉快的玩耍哟 ~
一、可能感兴趣的一些东西tip01:win10之后,Windows系统加入了powershell,兼容一部分shell命令。tip02:笔记本电脑操作系统的三大阵营MacOS是Unix内核。Windows是自己的WindowNT内核Ubuntu、Redhat等是Linux内核tip03:手机操作系统的两大阵营安卓——Linux内核苹果iOS——Unix内核那么Linux和Unix的关系是怎样的呢?
Harness的本意是“缰绳、管控带”,AI Agent Harness是介于AI Agent与底层数据源之间的统一实时数据管控层,我们可以把它类比为AI Agent的专属“数据管家”:所有Agent的数据请求都必须经过Harness,由Harness统一完成权限校验、数据质量校验、实时性校验、多源一致性校验后再返回给Agent,同时记录全链路数据血缘与访问日志,实现数据全生命周期的可管、可控、可
Linux 统治了服务器(96%+)、超算(100%)、智能手机(Android,72%+)、云计算(99%+)和深度学习(99%+)。但回到 1991 年,Linux 只是芬兰大学生 Linus Torvalds 的一个业余项目——“只是个爱好,不会像 GNU 那样大而专业”。33 年后,这个"爱好"改变了世界。为什么?因为 Linux 站在了 Unix 的肩膀上(哲学),借了 GNU 的东风(
本文探讨了进程间通信(IPC)中消息队列的理论模型与实际实现。传统"消息缓冲队列"理论模型假设队列是进程固有属性,而UNIX SystemV消息队列采用独立内核对象设计,通过显式创建和间接寻址实现进程解耦。文章详细分析了两种机制的核心区别,包括队列所有权、创建方式和生命周期管理,并通过完整代码示例展示了客户端-服务器通信模式。深入解析了UNIX消息队列的动态qid分配、消息结构
AI Agent Harness Engineering是面向AI Agent全生命周期的工程方法论与技术体系,涵盖Agent的开发、测试、部署、监控、调试、安全管控、迭代优化全流程,目标是让Agent系统达到生产级的可靠性、安全性、可扩展性与可观测性。
unix
——unix
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net