LWN:systemd的14年!

DuCut_1794120730156_604.mp4 立即下载

关注了就能看到更多这么棒的文章哦~

14 years of systemd

By Joe Brockmeier
February 17, 2025
FOSDEM
Gemini-1.5-flash translation
https://lwn.net/Articles/1008721/

通常,项目会使用一些里程碑来回顾其取得的成就,例如首次发布或首次提交的周年纪念日。这些纪念日通常以五年或十年为间隔来庆祝,例如 1.0 版本发布的十周年,或首次公开宣布后的 25 周年等等。然而,在 FOSDEM 2025 大会上,Lennart Poettering 采取了一种不同的方式,他发表了主题演讲,纪念 systemd 诞生 14 周年,并简要展望了 systemd 未来的目标和挑战。

他首先提醒听众 systemd 是什么,以便“让大家了解最新情况”,并直接引用了 systemd 首页上的定义:

Systemd is a suite of basic building blocks for building a Linux OS. It provides a system and service manager that runs as PID 1 and starts the rest of the system.

史前史

在 systemd 之前,Linux 已经有了几个先驱,最早的是 System V init。它的设计可以追溯到 1983 年的 System V Unix。Poettering 说,目前在某些 Linux 发行版中仍然可以找到的 System V 风格程序 项目可以追溯到 1992 年,并且他称其既陈旧又晦涩。

接下来是 2006 年的 Upstart。它是由 Canonical 当时的员工 Scott James Remnant 为 Ubuntu 开发的基于事件的 init 守护进程。Upstart 的设计目的是取代传统的 System V init 守护进程。而且它确实在一段时间内取代了。它被 Ubuntu、Fedora、Red Hat Enterprise Linux (RHEL) 以及其他发行版所采用。但最终,它还是被淘汰了,最后一次更新是在 2014 年,寿命只有短短的八年。

他表示,为什么各个发行版没有坚持使用 Upstart 这个问题值得解答。其中一个原因是 Upstart 并没有真正解决服务管理器、init 系统应该解决的问题。它需要“管理员/开发人员类型”的人来弄清楚系统中应该发生的所有事情,“然后将这些事件和这些操作粘合在一起”。他说,这太手动了。另一方面,systemd 允许用户简单地指定目标,“然后计算机来完成剩下的工作”。Poettering 说,Upstart 还有其他问题。他提到了开发缓慢以及由于 Canonical 的版权转让政策而造成的政治障碍。(LWN 在 2009 年 报道 了 Canonical 的版权转让政策。)

Babykit

Poettering 和 Kay Sievers 在 2009 年从 Linux Plumbers Conference 返回的航班上讨论了最初名为 "Babykit" 的基本想法。他说,最初的名字反映了那个时代将守护进程命名为 something-kit 的趋势。“我认为这是我们从 Apple 那里引进的东西。” 他说,大多数这样的命名都已经消失了,尽管我们仍然有 Polkit 和 PackageKit。他和 Sievers 希望做一个真正的开源项目,在开放的环境中进行开发,没有版权转让,并使用 LGPL 协议。

他说,从一开始,它就不仅仅是一个 init 系统,不仅仅是 PID 1。例如,部分目标是处理现代 Linux 系统上的启动工作,这是一个“需要发生的一系列过程”。从一开始,它就不仅仅是一个二进制文件。人们抱怨 systemd 患有“非我发明 (not-invented-here, NIH) 综合症”,“当然,在某种程度上,每个人都是受害者”,他说。“但是,我真的会尽力做好我的功课”。

他所说的“功课”是指在 systemd 实现某些功能之前,研究其他项目在做什么以及现状如何。“我们希望有充分的理由来解释为什么我们要以不同的方式做事”。System V init 和 Upstart 对 systemd 产生了影响,因为这是 Linux 发行版实际使用的东西。但是,他说,Apple 的 launchd 更有趣。他们特别喜欢其中的一个功能,即它的 套接字激活 (socket activation) 概念。互联网服务守护进程 (internet service daemon, inetd) 中也存在类似的概念,它是当时大多数 Linux 和 Unix 类型系统的标准组件。但是,他说,Apple 将其发挥到了极致,这在某种程度上摆脱了“显式的依赖关系配置”。

Solaris 的 服务管理工具 (service management facility, SMF) 是另一个主要的影响因素,“因为它具有所有这些企业级的东西,而且我们想进军企业级市场”。Systemd 也有一些原创的想法——但只是几个。

I mean, I wouldn't claim that the concepts that Systemd is built from are purely ours. They are not. We looked at what's there and then tried to do maybe a little bit better at least.

当然,另一个主要的影响因素是 Unix。但是,Poettering 说,他并不真正了解 Unix 是什么,并且进行了一段关于 Linux 和 systemd 是否是“Unix”的哲学上的题外话。最终,他得出结论,“也许在某些方面是。在其他方面,可能不是”。

“全世界都在运行它”

Fedora 是第一个从 Upstart 切换到 systemd 的主要 Linux 发行版,那是 2011 年的 Fedora 15 版本。Poettering 说,默认情况下使用 systemd 对 systemd 来说是一个巨大的胜利,并且从一开始的目标就是使 systemd 成为可以在主流中使用的东西。Arch Linux 和 openSUSE 在一年后效仿了 Fedora 的做法,然后在 2014 年发布的 RHEL 7 中包含了 systemd。“所以那是它开始的时候,就像整个世界都开始在 systemd 上运行一样”。除了 Debian 和 Ubuntu 之外的整个世界。这些发行版在 2015 年转移到了 systemd,他说这是该项目“最复杂的胜利”。

13d2a9443be936a7342e936c7d89a221.png

尽管 systemd 取得了如此大的成功,但在 Tobias Bernard 设计并在 2019 年发布徽标之前,它一直没有徽标。现在 systemd 有了自己的 品牌页面,以及包括“systemd 绿色”在内的配色方案。该项目于 2015 年开始了它自己的会议,最初称为 systemd.conf,该会议扩展了其关注范围,超越了 systemd,并在 2017 年更名为 All Systems Go!。Poettering 为今年的 All Systems Go! 做了一个宣传,并建议“如果你对底层操作系统之类的东西感兴趣,你应该完全去那里。不过仅限于用户空间”。

Poettering 问道:那么,我们今天在哪里?所有主要的 Linux 发行版都使用 systemd,“特别是,商业发行版都默认使用它”,这基本上意味着“世界都在运行它”。

他说,该项目拥有一个充满活力的社区。它由包括 Poettering 在内的六名核心贡献者和 60 名具有提交权限的人员组成。多年来,有超过 2,600 人为 systemd 贡献了代码。他说,该项目可以做得更好的一件事是更频繁地发布版本。Systemd 具有六个月的发布周期,这“实际上并不是很好,我们应该做得更好”,但他说,为一个如此庞大的项目进行发布管理是很困难的。

Systemd 还通过向 公共利益软件 (Software in the Public Interest, SPI) 的捐款以及来自 拨款 获得了“一点资金”,这些资金来自 主权技术机构 (Sovereign Tech Agency)(以前的主权技术基金)。Poettering 说,该项目已将这些资金用于核心开发人员不感兴趣的事情,例如重新设计 systemd 网站。

systemd 有多大?

如今,systemd 是一套大约 150 个独立的二进制文件。Poettering 说,该项目有时会收到关于它过于庞大的抱怨,但他辩称该项目并不是庞大的,实际上“非常模块化”。但这并不意味着项目中的所有内容都是模块化的,或者可以在任何其他环境中使用,但是“它是一套具有中心组件的不同事物”,该中心组件将所有内容组合在一起。“你可以关闭其中的很多内容。不是全部,而是很多”。Poettering 说,它主要是一个 C 项目,但也有一些例外。某些组件是用 Python 编写的,并且该项目已经尝试过 Rust,但它最终还是一个 C 项目。

他说,systemd 核心团队并没有完全相同的看法,但他们确实都认为 systemd 是“基于 Linux 的操作系统需要的共同核心”。它涵盖了从登录、网络名称解析、联网、时间同步以及用户主目录管理的基本功能。每个组件都在某些 Linux 发行版中找到了采用,尽管每个发行版选择采用 systemd 的不同部分。

他还讨论了 systemd 在代码行数和依赖项方面的占用空间。他说,该项目包含 690,000 行代码,而 wpa_supplicant 大约有 460,000 行代码,GNU C 库 (GNU C library, glibc) 超过 140 万行。“这算多还是少?我不知道。” 他过去喜欢将 systemd 与 wpa_supplicant 进行比较,因为它的大小与 systemd 大致相同,但是在过去的三年中,“我们显然加速了”并超过了它。但是,systemd 的大小仍然约为 glibc 的一半。至于磁盘上的大小,Poettering 说,在 Fedora 上完全安装 systemd 大约需要 36MB,而 GNU Bash 大约需要 8MB。他说,如果仅 shell 就需要 8MB,“那么” systemd 需要 36MB “也没那么糟糕”。

Poettering 说,该项目在依赖项方面一直很保守,因为如果它引入一个库作为依赖项,那么它实际上会影响所有 Linux 用户。大约在两年前,该项目已切换为对所有运行基本系统所不需要的依赖项使用 dlopen()。他说,对于不知道这个动作的目的人来说,简单理解就是 dlopen() 代表着直到绝对需要时才加载共享库。

他举了一个例子,即使用 FIDO 密钥进行全盘加密。很多人使用 FIDO,但也有很多人不使用。通过使用 dlopen(),用户仍然可以将全盘加密绑定到其他东西,而无需安装 FIDO 堆栈。“我们已经将 dlopen() 推到了极致,以至于现在只有三个真正需要的依赖项”,Poettering 说:glibc、libmount 和 libcap。Systemd 还有三个构建时可选的依赖项:libselinux、libaudit 和 libseccomp。

在 XZ 后门 事件发生后,Poettering 开始 推动其他人 也采用 dlopen() 方法。Systemd 并不是后门的目标,但是由于某些发行版将 SSH 守护进程链接到 libsystemd,然后 libsystemd 又引入了 liblzma,因此它被用来打开那扇门。“所以,那时,这不是一个 dlopen() 依赖项。这就是发生这种情况的原因。” 他说,Systemd 没有错,但是“也许我们可以为此做些什么”。(LWN 在 2024 年 报道 了这个话题。)

总而言之,他说,systemd 不是那么大,也不是很小。它适合包含在初始内存盘 (initrd) 和容器中。“Systemd 不会给你带来太大的影响,就大小而言”。

什么属于 systemd

Poettering 承认 systemd 存在一些范围蔓延 (scope creep) 的问题,但他说该项目确实有一些要求,可以明确什么属于(以及什么不属于)systemd。其中第一个是它需要解决一个通用问题,而不仅仅是一个用户的问题。它需要具有基础性,并为很多用户解决问题。

另一个经验法则是“它需要有一个未来”,他说该项目不会添加对遗留技术的支持。实现需要干净并遵循通用的风格。“如果你为了快速交付产品而偷工减料,那么你可以快速交付产品,但这不是我们希望 systemd 成为的样子。” 即使某些东西满足了所有条件,他说,这并不意味着它需要放在 systemd 中。它仍然可以在其他地方维护。一项技术还需要适合 systemd 的核心概念。

Poettering 说,没有一个包含项目核心概念的单一列表。可以从 systemd 的手册页和规范中提取它们,但是“我无法给你完整的列表”。但是,他确实提供了一些示例。其中第一个是清楚地分离 /etc=、=/run 和 /usr=; =/etc 用于配置, /run 用于“非持久性的运行时内容”, /usr 用于“来自供应商的内容”。他说,传统上,Linux 上并没有如此严格地遵循这种分离。

Hermetic /usr 是 Poettering 说 systemd 正在尝试推动的另一个概念。简而言之,这意味着 /usr 具有对系统的充分描述,即使没有 /etc=、=/var 等,也可以启动。“这基本上意味着你可以打包整个 /usr,将其放到另一台机器上,我们将启动”,它就可以正常工作。他说,他不想详细介绍每个概念,而是想举例说明这些概念如何“渗透到我们所做的其他事情中”。

Poettering 提到的另一个概念是,systemd 所做的一切都需要具有声明性行为。“你只需写下你想去的地方。你不要编写代码”。例如,他说,启动不应涉及运行 shell 脚本,因为 shell 脚本本质上是命令式的。不应该这样配置。Systemd 还有更多的概念,但重点是拥有这些概念允许 systemd 做以前很难做的事情,例如 ProtectSystem= 和 ProtectHome= 选项,它们为 沙盒 提供了“高级旋钮”。

他说,系统还需要标准,该项目试图通过以“通用方式”编写其做事方式的规范来设置标准。而且 systemd 也采用了许多标准,例如 /etc/os-release,现在大多数 Linux 发行版和基于 BSD 的操作系统都使用它。Poettering 说,该项目甚至创建了一个标准网站,即 Linux 用户空间 API (Linux Userspace API, UAPI) 组,systemd 的人员“和与我们关系密切的人”受邀在此处放置 规范。可发现磁盘映像 (discoverable disk image, DDI) 规范就是一个例子,它提供了一种自描述文件系统映像的方法,这些映像可能包含操作系统映像、系统扩展、容器等的根或 /usr 文件系统。

未来

当 Poettering 讲到 systemd 未来的目标和挑战的幻灯片时,他的时间快用完了。他谨慎地指出,他概述的目标和挑战是他个人的观点,systemd 团队中的其他人可能有不同的优先事项。就他而言,他看到了 systemd 的四个目标和挑战。

第一个目标是实现启动和系统完整性,以便更难以对系统进行后门攻击。不是不可能,而是更难。基本上是锁定系统以防止攻击者进入,并使系统具有一个众所周知的状态,以便返回到“你知道那里不会有任何人,因为你可以证明它”的状态。如果有人攻击服务器,他们可以从服务器上删除,因为服务器可以返回到定义的状态,并且可以以安全的方式进行更新。“换句话说,你不必总是把你的笔记本电脑放在枕头底下睡觉”,因为有人可能会修改引导加载程序。

Poettering 说,“所有大型操作系统”都以某种方式解决了启动和系统完整性的问题。但是,默认情况下,没有任何“通用发行版”采用它。他说,这是一个非常重要的可悲情况。实施启动和系统完整性的一个障碍是“它使事情变得更加复杂,因为你需要考虑密码学以及所有这些事情”。

文化问题是另一个障碍,这些问题部分基于 恐惧、不确定和怀疑 (fear, uncertainty, and doubt, FUD),例如可信平台模块 (Trusted Platform Module, TPM) 完全是关于数字版权管理 (digital rights management, DRM),“剥夺你的计算机”的想法。相反,TPM 的设计方式“实际上与我们的目标非常兼容”。基于软件包的系统也使事情变得比需要的更加复杂,但是“我们生活在一个基于软件包的世界”,因为所有主要的 Linux 发行版都默认使用软件包。

目标二是重新思考 systemd 的进程间通信 (interprocess communication, IPC),特别是从 D-Bus 转向 varlink。(LWN 在 12 月的 systemd v257 中 报道 了 varlink。)Poettering 说,虽然 D-Bus “永远不会消失”,但 varlink 允许每个连接在一个服务实例中处理 IPC 请求,这使其更易于使用。他说,编写 D-Bus 守护进程很困难,但是使用 systemd 的套接字激活将命令绑定到 Unix 流套接字以将其转换为 varlink IPC 服务很容易。

Poettering 列表中的第三件事是一个挑战,即 Rust,某种程度上——他认为 systemd 在 C 方面做得很好,至少在漏洞方面是这样。如果无论如何都要接受 CVE 作为指标的话。2023 年有三个针对 systemd 的 CVE,2024 年没有 CVE,并且其 CVE“主要与内存无关”。即便如此,他说,“我们确实认为未来可能会说 Rust”。

但是,systemd 具有复杂的构建以及许多二进制文件和测试。它不适合 Cargo,并且 systemd 当前使用的 Meson 构建系统不喜欢 Rust,尽管它最近获得了一些 Rust 功能。并且 systemd 对占用空间问题很敏感,这就是为什么它严重依赖共享库的原因。对于 150 个二进制文件进行静态链接是不可行的,但是“Rust 中的动态库不存在”。共享库需要成为一等公民。最终,Poettering 说他“很高兴参与其中”,但不希望 systemd 成为解决使用 Rust 需要解决的问题的人。他推测,Rust 和 Zig 之间可能会存在一些竞争,以提供一种内存安全的语言,该语言可以提供稳定的共享库,包括 dlopen() 、对混合代码库的支持等等。

第四个也是最后一个,但太简短了,Poettering 说,systemd 的最后一个挑战是关于基于映像的操作系统,“让我们就此打住”。演示文稿的幻灯片稍有扩展,其中包括呼吁将 Linux 生态系统从基于软件包的部署转移到基于映像的部署。它还建议使用 mkosi 使用软件包管理器构建定制映像。

Poettering 有时间回答几个问题。第一个问题是 systemd 最终是否会取代 GRUB。Poettering 说,正如你可能猜到的那样,他“不相信 GRUB”,并且替换它的所有部件都已就绪。剩下的问题是政治性的。他说,GRUB 试图做太多事情,而这些事情中的大多数都是错误的。如果仅关注 EFI,则大多数发行版都可以切换到 systemd-boot。

另一位听众问,有什么计划可以“修复 resolved 的问题”,systemd 的 DNS 解析守护进程。Poettering 说,它对他来说运行良好,但他知道有些人对“更高级的功能”有疑问,例如 DNSSEC,“并且它不稳定”,因为 DNSSEC “在现实生活中确实很难,因为服务器很糟糕”。他建议听众提交一个错误报告。

主题演讲的视频和幻灯片现在可以从 FOSDEM 网站上的 演讲页面 获得。该主题演讲是 Poettering 在 FOSDEM 期间进行的 四次演讲 之一,所有演讲现在都可以在网上获得,供那些想要更深入地了解特定 systemd 功能的人观看。

[今年我无法亲自参加 FOSDEM,但我观看了直播的演讲。非常感谢视频团队在直播所有 FOSDEM 会议并提供录音方面所做的工作。]

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

0a6e44745917f9d7fcebb824ce0aa362.jpeg

【教育信息化】基于Java+Vue的微证书可信验证系统设计:职业技能成果数字化管理与防伪溯源 项目介绍 基于java+vue的职业技能微证书颁发与可信验证系统设计与实现(含模型描述及部分示例代码) 内容概要:本文介绍了一个基于Java和Vue的职业技能微证书颁发与可信验证系统的设计与实现,旨在解决传统职业证书管理中存在的信息分散、验证困难、易篡改、互认难等问题。系统通过构建统一的微证书业务管理体系,采用SHA-256摘要算法和RSA数字签名技术保障证书内容完整性与签发主体可信性,并结合二维码实现便捷的社会化验证。平台涵盖证书全生命周期管理,支持学习成果积累、能力画像构建及跨机构成果互认,具备完整的前后端分离架构与安全机制,适用于教育、培训与企业人力资源场景。; 适合人群:具备Java与Vue开发基础的软件工程师、高校计算机相关专业学生、职业教育信息化研究人员以及企业HR技术平台开发者。; 使用场景及目标:①实现职业技能微证书的数字化签发与防伪验证;②构建学习者个人能力档案,支持岗位匹配与人才评价;③推动教育机构、行业协会与企业间的技能成果互认与数据共享;④作为毕业设计或企业级认证平台的技术参考原型。; 阅读建议:此资源包含系统模型描述与核心代码示例,建议结合Spring Boot、MyBatis-Plus、JWT、Redis等技术栈进行实践,重点关注证书摘要生成、数字签名验证、权限控制与数据安全设计,并可通过提供的数据生成代码模拟真实业务场景进行测试。 立即下载

相关推荐

结合混合A全局规划与MPC-iLQR执行器噪声和模型不匹配(MATLAB)的差动驱动机器人导航。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Linux项目开发,你必须了解Systemd服务!

Systemd默认从目录/etc/systemd/system/读取配置文件,但是里面存放的大部分文件都是符号链接,指向目录/lib/systemd/system,配置文件存放于/lib/systemd/system/,开机启动后会在/etc/systemd/system目录建立软链接文件,systemctl enable命令用于在/etc/systemd/system/与/lib/systemd/system/两个目录之间建立符号链接关系。不管服务是如何终止的,系统都会尝试将其重启。

武汉万象奥科的博客 1132

利用systemd部署golang项目的实现方法

主要介绍了利用systemd部署golang项目的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

centos 7安装podman(类似docker)

无守护、开源的 Linux 本地工具使用 open Containers Initiative (OCI) 让容器和镜像更加方便地查找、运行、构建、共享和部署应用程序Podman 依赖于符合 OCI 的容器运行时(runc、cron、runv等) 来与操作系统交互并创建运行的容器。参考一、yum安装(版本低)1.1 安装命令1.2 支持的命令1.3 镜像地址修改当前问题-连不上源网站搜索可以,下载不行。可能是版本太低1.4 卸载二、源码安装centos 7 支持最高版本为 3.4.4。

justlpf的专栏 4245

中国技术大败局TBL-20261107-238深度解剖报告V2.2 决策迭代版【汽车热管理】基于车速的空调内外循环控制装置:公知技术组合型伪创新专利失效分析

中国技术大败局TBL-20261107-238深度解剖报告V2.2 决策迭代版内容概要:本报告对奇瑞汽车股份有限公司申请的“一种汽车空调内外循环的控制装置及其控制方法”(专利号CN201010100392.0)进行了深度技术解剖与专利失效分析。该专利旨在通过车速信号自动切换空调内外循环,实现低速内循环防尾气、高速外循环引入新风的功能。然而,其技术方案被判定为“控制逻辑型伪创新”,核心逻辑“车速信号→阈值比较→内外循环切换”属于公知技术的常规组合,未提出新的空气质量预测模型、多源信息融合算法或预料不到的技术效果,因而不具备创造性,最终被驳回。报告指出,该专利与奇瑞多项同类专利(如184、186、207、228、231、237号)共同构成“公知信号/逻辑→公知执行器”的系统性低质量专利布局,反映出企业在技术创新路径上的重复性投入与创造性缺失。; 适合人群:企业知识产权负责人(IPR)、研发总监/CTO、投资尽调人员、专利代理机构从业者及技术研发团队。; 使用场景及目标:①识别“公知技术常规组合”类专利的创造性风险,避免无效研发投入;②指导高价值专利撰写,强调多源信息融合、动态优化模型与实证数据支撑;③为投资机构提供技术资产估值与风险甄别依据,区分低壁垒“信号替换”与高壁垒“算法创新”。; 阅读建议:此报告适用于研发与知识产权战略复盘,建议结合模块七“行业启示”与模块八“产业链坐标定位”进行系统性反思,重点关注“判距差”指标与“死海区”定位,推动企业从“功能实现”转向“模型创新”的研发范式升级。

北师大版英语词汇助手练习版-win10-不适用win7

最适合白板下的英语词汇PK工具 【百度网盘APP】北师大版英语词汇助手win10,11版本 3MB 链接:https://pan.baidu.com/s/1VO6vXt-ICCh-kAPstX8LcA  提取码:chen 【百度网盘】北师大版英语词汇助手 win 7,8,10,11可通用 60MB 链接:https://pan.baidu.com/s/15z5YN5GvvAZERqhitQcu1g  提取码:chen

system 后门 php,php-fpm环境的一种后门实现

作者:imbeee@360观星实验室简介目前常见的php后门基本需要文件来维持(常规php脚本后门:一句话、大马等各种变形;WebServer模块:apache扩展等,需要高权限并且需要重启WebServer),或者是脚本运行后删除自身,利用死循环驻留在内存里,不断主动外连获取指令并且执行。两者都无法做到无需高权限、无需重启WeServer、触发后删除脚本自身并驻留内存、无外部进程、能主动发送控制...

weixin_32365483的博客 504

改进差分进化算法及其求解柔性作业车间调度问题(Python代码实现)

内容概要:本文系统探讨了改进差分进化算法在求解柔性作业车间调度问题中的应用,并结合Python代码实现,展示了该算法相较于传统方法在全局搜索能力和收敛速度方面的优势。研究不仅聚焦于算法本身的改进策略,如变异、交叉和选择操作的优化,还深入分析了其在复杂制造环境中应对多目标、多约束调度问题的有效性。文中通过标准测试实例验证了算法性能,并与其他智能优化算法进行了对比分析,体现了其在实际工程应用中的潜力。此外,文档还关联了多无人机路径规划、电力系统状态估计、微电网优化、图像与信号处理等多个前沿技术领域,展现了智能优化算法在跨学科工程仿真与决策支持中的广泛适用性。; 适合人群:具备一定编程基础和工程背景,从事智能制造、自动化、工业工程、电气工程、控制科学与工程、计算机科学及相关领域的科研人员、高校研究生及企业研发技术人员。; 使用场景及目标:①为科研工作者提供可复现的智能优化算法代码框架,支持柔性作业车间调度、多无人机协同路径规划、电力系统优化等复杂工程问题的建模仿真;②辅助完成学术论文复现、课程设计、毕业设计或科研项目开发;③推动智能算法在生产调度、能源管理、交通规划等实际场景中的落地应用。; 阅读建议:建议读者结合文中提供的算法原理与代码实现,动手调试并验证不同参数设置对优化结果的影响,同时可参考荔枝科研社提供的完整资源包进行扩展学习与实践,以加深对算法机制与工程应用的理解。

linux安全及网站后门检测

本文转载自https://www.cnblogs.com/sanduo1314/p/7458415.html一、检查系统日志检查系统错误登陆日志,统计IP重试次数# 这里使用了lastb命令,该命令需要root权限,可以显示所有登陆信息。这里仅仅显示的root用户的,读者可以更具实际情况自行确定,或者直接全部都显示,你会有不一样的收获,每个人的脚本都不一样,更具实际情况自行编...

weixin_33831673的博客 1456

复现基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)

内容概要:本文聚焦于“基于改进秃鹰算法的微电网群经济优化调度”研究,提出一种改进的秃鹰优化算法(IBOA)以解决传统智能优化算法在求解过程中易陷入局部最优、收敛速度慢等问题。通过引入自适应权重、动态搜索机制及种群多样性保持策略,显著增强了算法的全局搜索能力和收敛精度。研究构建了包含光伏发电、风力发电、储能系统、可控负荷及电网交互的微电网群多主体协同调度模型,以系统综合运行成本最小化为目标函数,综合考虑功率平衡、设备出力能力、储能荷电状态、爬坡速率等多种实际约束条件。利用Matlab平台进行仿真验证,并与标准BOA、PSO、GA等经典智能算法进行对比,结果表明所提算法在降低系统运行成本、提高可再生能源消纳率及优化调度效率方面具有明显优势。; 适合人群:适用于具备电力系统基础、优化理论知识及Matlab编程能力的高校研究生、科研人员及从事微电网、综合能源系统优化调度相关工作的工程技术人员。; 使用场景及目标:①用于微电网群或多微网系统的经济调度建模与仿真;②开展新型智能优化算法的设计、改进与性能评估;③支撑含高比例可再生能源的配电系统优化运行决策; 阅读建议:建议结合提供的Matlab代码深入理解算法实现细节与调度模型构建过程,重点分析改进策略对优化性能的影响,并可通过替换场景参数或引入其他算法进行横向对比实验,进一步掌握智能优化在能源系统中的应用方法。【复现】基于改进秃鹰算法的微电网群经济优化调度研究(Matlab代码实现)

改进-基于新扩展移相角下的双有源桥DAB变换器仿真(EPS调制、软开关、最小应力优化)(Simulink仿真实现)

内容概要:本文系统阐述了基于新扩展移相角的双有源桥(DAB)DC-DC变换器的先进仿真研究,聚焦于EPS调制策略、软开关技术实现及最小应力优化控制目标的协同设计。通过Matlab/Simulink平台构建双闭环控制系统模型,深入剖析变换器在高频隔离、双向功率传输场景下的动态响应特性与效率优化机制。该仿真方案复现了顶级EI期刊研究成果,具备高学术参考价值,并集成于一套完整的电力电子与新能源系统仿真资源体系中,涵盖微电网、PWM整流器、LLC谐振变换器、储能管理等多个关键技术方向,配套完整的仿真代码、设计文档与理论资料,支持深度学习与二次开发; 适合人群:面向电力电子、电气工程及其自动化、新能源科学与工程等领域的研究生、科研人员以及从事高性能DC-DC变换器研发的工程师,要求具备扎实的电路理论基础、电力电子拓扑分析能力及一定的Matlab/Simulink仿真实践经验; 使用场景及目标:①深入掌握DAB变换器的核心工作原理及其在EPS调制与软开关协同下的最优控制策略;②支撑高水平科研论文的复现、改进与创新性研究;③服务于硕士课题、博士研究或企业级新能源变换器产品的前期验证与算法开发; 阅读建议:建议结合文中提供的Simulink模型与引用的权威文献进行系统学习,重点理解控制架构设计、参数整定方法与优化算法实现路径,同时可横向对比其他电力电子变换器案例,拓展系统级工程思维与科研创新能力。

LWN: systemd代为受过,增加bind事件支持!

关注了就能看到更多这么棒的文章哦~Systemd catches up with bind eventsBy Jonathan CorbetNovember 13, 2020DeepL ...

Linux News搬运工 175

多目标进化算法——NSGA-II(python实现)

NSGA-II(python实现)--最全注释,痴呆能懂--

no___good的博客 5279

linux&内核收集录

进程 systemd:浅析 Linux 初始化 init 系统 锁 Linux 死锁检测模块 Lockdep 简介 其余内核资料网站 内核杂志:https://lwn.net/ 内核Documentation:https://www.kernel.org/doc/html/latest/

m0_37797953的博客 160

别再为reg2icg的setup违例头疼了!手把手教你用ICC2/Innovus这3招搞定(附实战数据对比)

本文详细介绍了在ICC2/Innovus中解决reg2icg的setup违例的三种高效方法,包括早期时钟树预估、精准控制时钟延迟与门控检查以及ICG专用优化选项组合。通过实战数据对比,展示了不同策略的效果差异,帮助工程师快速优化时序路径,提升芯片性能。

weixin_42569329的博客 404

分布式数据采集框架openclaw-worker:模块化设计与实战指南

数据采集是获取网络信息、实现自动化处理的基础技术,其核心原理是通过模拟HTTP请求从目标源提取结构化数据。在工程实践中,传统单体脚本面临维护困难、扩展性差等挑战。分布式采集架构通过解耦任务定义与执行,结合消息队列实现水平扩展,显著提升了系统的弹性与可靠性。openclaw-worker作为模块化的工作节点,将采集流程配置化,支持CSS选择器、XPath等多种提取规则,并集成请求速率控制、代理IP池等反爬策略,适用于竞品监控、内容聚合等需要高效、稳定获取数据的应用场景。

weixin_28706423的博客 299

网页加载失败先别急重启!多半 DNS 摆烂了

谁愿意背一串枯燥 IP 上网?DNS 就是网络专属翻译员。本文通俗拆解域名系统底层逻辑,讲清递归查询、迭代查询的区别,盘点 A、CNAME、PTR 等常见解析记录;手把手演示 dig、nslookup 排查命令,完整实操 BIND 搭建私有 DNS 服务器,搞定内网域名解析,轻松搞定各类域名解析疑难杂症。

cyw_lesson的博客 311

ORACLE 12C RAC 启动报错,错误代码 ORA-27300,ORA-27301,ORA-27302

非一体机,12.2 无任何补丁,2套X86服务器,1节点集群异常(数据库正常,还有会话),2节点正常工作,负载不高,硬件、空间均未检查到异常,多路径存在掉线的情况,但通过Mulitpath -ll 看又是正常的,2根私有网络,其中一根不同,sysctl中配置的稀疏模式。5、再次加成crs alert ohas等集群日志,以及根据现象和错误再次到后台sr中查找可用信息,发现有一个类似问题,12.2 RAC 无任何补丁,报同样错误,解决方案为重启两套服务器。查询MOS文档以及后台文档,排除上面指出的问题。

weixin_42344665的博客 1463

Linux进程优先级与系统调优实战指南

进程优先级是操作系统资源分配的核心机制,Linux通过PRI和NI值实现动态调整。理解进程调度原理有助于优化系统性能,特别是在高负载场景下。通过nice和renice命令可以调整普通进程的CPU占用,而实时任务则需要chrt工具配置。实际应用中,结合top监控和cgroup限制分析,能有效解决MySQL等服务的性能瓶颈问题。本文以电商系统优化为例,展示如何通过优先级调整、InnoDB参数优化等手段将查询耗时降低90%,为运维人员提供可直接复用的技术方案。

weixin_34279579的博客 389

华为OD机试双机位A卷 - VLAN资源池 (C++ & Python & JAVA & JS & GO)

华为OD机试2025双机位A卷 VLAN资源池,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 878

【AutoCAD中实现双击文本编辑功能】

例如:以下是官方博客例子浅析先加入相关的头文件和库文件。在AutoCAD中有一个很重要的功能,就是双击图形尺寸或文本后会出现一个文本编辑框,用户可在该编辑框中修改文字。本文介绍了如何使用AcEdInplaceTextEditor来实现该功能。实现cad的消息监听。创建一个消息监听的类并在cad中注册来实现消息监听。主要是监听键盘输入。提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了的函数和方法。

我的博客 1148

Linux服务--3.DNS 服务

在/etc/named.conf文件的开头,可以使用acl指令定义地址匹配列表。acl指令不是用于控制客户端对服务器的访问,而是使用它们来定义IP地址和网络列表。把一组IP 地址 / 网段定义成一个名字(给 IP 段起别名,方便 DNS 权限控制),它们提供别名,可以与访问控制指令和其他配置选项一起使用,并使更新配置文件更加容易。后面在 named.conf 里可以直接用这个名字控制:谁能查询DNS谁能递归查询谁能同步区域数据。

fengkai4545的博客 465

uniapp(全端兼容) - 实现点击输入框时完美顶起键盘,获取键盘高度动态计算顶起距离,解决软键盘弹出时输入框被覆盖问题,uniapp微信小程序/移动端h5网页/安卓苹果app(示例代码,一键复制

uniapp,支付宝微信小程序,移动端H5网页网站,软键盘弹出位置不对,软键盘挡住了输入框怎么办,获取键盘高度计算弹出距离,uniapp如何解决输入框input激活后键盘弹出遮挡问题,uniapp输入框偶尔被键盘遮挡,解决uniapp在App环境下输入框被软键盘遮挡的问题,uniapp 完美解决苹果和安卓input框遮挡兼容问题,uniapp输入框拉起软键盘时,输入框显示不全,被软键盘挡住一半,input被键盘遮挡的解决方案,软键盘遮挡输入框,uniapp软键盘顶不起来输入框,输入框没有被软键盘弹出来怎么办

✅ 精选推荐文章 1万+

Linux后门推荐

Basic reverse shell ncat --udp -lvp 4242 ncat --sctp -lvp 4242 ncat --tcp -lvp 4242 Suid Binary TMPDIR2="/var/tmp" echo 'int main(void){setresuid(0, 0, 0);system("/bin/sh");}' > $TMP...

weixin_30726161的博客 271

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

前程算法屋的博客 625

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Systemd这个有争议的项目正在接管你身边的Linux发行版

本文转载至:http://linux.cn/article-4336-1-rss.html Systemd 是目前为止在Linux平台上最有争议的项目之一。它到底有多大的争议?它的争议大到systemd的开发者之一Lennart Poettering 声称有人使用比特币雇佣职业杀手要干掉他。但是还是有比较理智的做法的,有一个抵制systemd网站在技术角度上提出了

闲云孤鹤 2266

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: LWN:两种方式来创建multi-size THP透明巨页!
下一篇: LWN:跟AI网页爬虫灾害作斗争!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值