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

netplan是如何操控systemd-networkd的? 笔记250324

netplan是如何操控systemd-networkd的?

netplan通过以下方式操控systemd-networkd:

  1. 工作原理:netplan读取位于/etc/netplan/目录下的YAML格式的配置文件,这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-networkd能够理解的配置格式,然后将这些配置应用到systemd-networkd中。

  2. 配置文件转换:netplan在/run/systemd/network/目录下生成特定于systemd-networkd的配置文件。这些配置文件以.network为后缀,定义了网络接口的IP地址、网关、DNS等配置。当执行netplan apply命令时,netplan会读取/etc/netplan/下的配置文件,生成相应的systemd-networkd配置文件,并通知systemd-networkd重新加载配置。

  3. 命令执行:通过netplan apply命令,netplan会将配置应用到systemd-networkd,使新的网络配置生效。此外,还可以使用netplan get命令查询当前的配置内容。

  4. 网络接口管理:systemd-networkd会根据netplan生成的配置文件来管理网络接口,包括配置IP地址、设置路由、管理虚拟网络设备等。

例如,在配置一个网桥时,可以在/etc/netplan/下创建一个YAML文件,指定要加入网桥的网卡以及网桥的相关配置,然后执行netplan apply命令,netplan会将这些配置转换为systemd-networkd的配置文件并应用,从而实现网桥的创建和配置。










Netplan 通过 YAML 配置文件与 systemd-networkd 交互,实现网络配置的抽象化管理和动态生成后端服务所需的配置文件。以下是其核心机制和操作流程:


     一、配置文件的生成与转换

  1. YAML 配置解析
    Netplan 读取 /etc/netplan/*.yaml 中的 YAML 文件,解析用户定义的高层级网络配置(如接口名称、IP 地址、路由、DNS 等)。

  2. 生成 systemd-networkd 配置
    根据 YAML 文件中的 renderer: networkd 声明,Netplan 将配置转换为 systemd-networkd 兼容的 .network 文件。这些文件默认存储在 /run/systemd/network/ 目录下(临时生成)或 /etc/systemd/network/(需手动指定持久化路径)。

    示例:

    # Netplan YAML 配置
    ethernets:enp0s3:addresses: [192.168.1.10/24]gateway4: 192.168.1.1
    
    # 生成的 systemd-networkd .network 文件
    [Match]
    Name=enp0s3[Network]
    Address=192.168.1.10/24
    Gateway=192.168.1.1
    

     二、服务控制与配置应用

  1. 触发 systemd-networkd 重载
    执行 netplan apply 时,Netplan 自动生成 .network 文件,并通过 systemctl restart systemd-networkd 重启服务,使新配置生效。
    注:netplan try 会在应用后等待用户确认,超时则回滚配置。

  2. 依赖关系管理
    Netplan 自动处理 systemd-networkd 与其他服务(如 systemd-resolved)的依赖。例如,配置 DNS 时,Netplan 会同时更新 /etc/resolv.conf 的指向,确保 systemd-resolved 接管解析。


     三、高级配置与扩展

  1. 补充配置文件
    若需添加 Netplan 未直接支持的参数(如 mDNS 功能),可手动在 /etc/systemd/network/*.network.d/ 目录下创建 .conf 文件,补充到 Netplan 生成的配置中。
    示例:

    # 补充 mDNS 配置
    [Network]
    MulticastDNS=yes
    
  2. 网络接口匹配规则
    Netplan 支持通过 match 字段基于 MAC 地址、驱动类型等条件动态匹配接口,并生成对应的 systemd-networkd 匹配规则。


     四、调试与日志
查看生成文件
通过 ls /run/systemd/network/ 可检查 Netplan 生成的临时配置文件。

服务日志查询
使用 journalctl -u systemd-networkd 查看 systemd-networkd 的运行日志,排查配置错误。


     总结
Netplan 通过 YAML 配置抽象动态生成后端文件服务状态管理 实现对 systemd-networkd 的操控。其设计兼顾了易用性与灵活性,既简化了基础网络配置,又允许通过补充文件或直接修改后端配置实现高级功能。










Netplan 通过将用户定义的 YAML 配置文件转换为 systemd-networkd 的原生配置格式,并触发 systemd-networkd 服务重新加载配置来实现网络管理。以下是详细流程:


     1. 配置文件定义
用户通过编辑 /etc/netplan/ 目录下的 YAML 文件(如 00-config.yaml)定义网络配置。需明确指定 renderer: networkd,例如:

network:version: 2renderer: networkdethernets:eth0:dhcp4: true

     2. 配置转换
当执行 netplan generatenetplan apply 时,Netplan 解析 YAML 文件,将其转换为 systemd-networkd 兼容的配置文件。生成的配置文件位于以下路径:

  • 临时配置/run/systemd/network/(重启失效)
  • 持久化配置/etc/systemd/network/(永久生效)

文件名遵循 10-netplan-<接口名>.network 的格式,例如:
10-netplan-eth0.network


     3. 触发 systemd-networkd 重载
Netplan 通过以下步骤激活新配置:

  1. 生成配置:将 YAML 转换为 .network 文件。
  2. 重启服务:调用 systemctl restart systemd-networkd.service 或发送信号通知 systemd-networkd 重新加载配置。
  3. 应用配置systemd-networkd 读取新配置并更新网络接口状态。

     4. 底层交互工具

  • networkctl:Netplan 可能间接使用 networkctl 查询或控制接口状态。
  • systemd 单元依赖:确保 systemd-networkd 与其他服务(如 systemd-resolved 处理 DNS)协同工作。

     5. 调试与验证

  • 检查生成文件
    cat /etc/systemd/network/10-netplan-eth0.network
    
  • 查看服务状态
    systemctl status systemd-networkd
    
  • 接口状态检查
    networkctl status eth0
    

     示例:YAML 到 systemd-networkd 的转换
Netplan YAML:

network:version: 2renderer: networkdethernets:eth0:addresses: [192.168.1.10/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]

生成的 /etc/systemd/network/10-netplan-eth0.network:

[Match]
Name=eth0[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8 8.8.4.4

     关键点总结

  • 配置抽象层:Netplan 提供简化的 YAML 接口,隐藏 systemd-networkd 的底层复杂性。
  • 动态生效:通过服务重启或重载实现配置实时更新。
  • 依赖 systemd 生态:与 systemd-resolvedsystemd-timesyncd 等服务深度集成。

通过这种设计,Netplan 在保持易用性的同时,充分利用了 systemd-networkd 的高效性和稳定性。










Netplan 通过以下步骤操控 systemd-networkd 实现网络配置管理:

     1. 配置文件解析

  • YAML 定义:用户通过 /etc/netplan/*.yaml 文件定义网络需求(如静态IP、DHCP、VLAN等)。
  • 生成器选择:Netplan 根据文件顶部的 network: 键选择后端(如 networkd 对应 systemd-networkd)。

     2. 配置转换

  • 模板渲染:Netplan 使用 Jinja2 模板将 YAML 转换为 systemd-networkd 可识别的配置文件(如 .network 文件)。
  • 文件生成:生成的配置文件保存在 /etc/systemd/network/ 目录下,例如:
    # /etc/systemd/network/50-static.network
    [Match]
    Name=eth0[Network]
    Address=192.168.1.100/24
    Gateway=192.168.1.1
    

     3. 服务控制

  • 应用配置:执行 netplan apply 时,Netplan 会:
    1. 验证配置:检查 YAML 语法和逻辑错误。
    2. 触发重载:通过 systemctl restart systemd-networkd 或发送 SIGHUP 信号使守护进程重新加载配置。
    3. 状态反馈:显示配置是否成功应用(如 systemd-networkd 日志或 networkctl status 输出)。

     4. 动态管理

  • 运行时更新:修改 YAML 后需重新运行 netplan apply,systemd-networkd 会无缝应用新配置(无需重启系统)。
  • 状态监控:通过 networkctl 命令查看接口状态,依赖 systemd-networkd 的实时反馈。

     关键交互点

组件角色交互方式
Netplan配置抽象层生成 .network 文件,调用 systemctl
systemd-networkd网络服务守护进程监控 /etc/systemd/network/ 变化
systemd服务管理器处理重启/信号请求

     示例流程

  1. 用户编辑 /etc/netplan/01-netcfg.yaml 定义静态IP。
  2. 执行 sudo netplan apply
  3. Netplan 生成 /etc/systemd/network/50-static.network
  4. systemd-networkd 检测到新文件,重新加载配置并更新网络接口。

此设计实现了声明式配置与 systemd 服务的解耦,同时保持配置的动态可管理性。










Netplan 通过以下步骤与 systemd-networkd 进行交互和控制:


     1. 配置文件定义
用户通过编写 YAML 格式的 Netplan 配置文件(通常位于 /etc/netplan/ 目录下),指定网络设置(如静态IP、DHCP、路由、DNS等)。关键点:

  • renderer 参数:必须明确指定 renderer: networkd,以告知 Netplan 将配置传递给 systemd-networkd
  • 配置示例
    network:version: 2renderer: networkdethernets:enp0s3:dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]
    

     2. 生成后端配置文件
当用户执行 sudo netplan generate 时:

  • Netplan 解析 YAML 配置,并将其转换为 systemd-networkd 的原生配置格式。
  • 生成的文件路径:配置文件会被输出到 /etc/systemd/network/ 目录下,通常以 .network 为扩展名(如 10-netplan-enp0s3.network)。
  • 生成的配置内容:例如,上述 YAML 配置会被转换为类似以下内容:
    [Match]
    Name=enp0s3[Network]
    Address=192.168.1.100/24
    Gateway=192.168.1.1
    DNS=8.8.8.8
    DNS=8.8.4.4
    

     3. 应用配置
执行 sudo netplan apply 后:

  • 触发 systemd-networkd 重新加载配置:Netplan 会通知 systemd-networkd 重新读取 /etc/systemd/network/ 目录下的配置文件。
  • 动态应用网络设置systemd-networkd 会根据新生成的配置文件动态更新网络接口(如分配 IP、设置路由、DNS 等),无需重启系统。

     4. 服务依赖与状态管理

  • 确保 systemd-networkd 启用并运行
    sudo systemctl enable systemd-networkd.service --now
    
  • 禁用冲突的网络管理工具:若同时安装了 NetworkManager,需禁用它以避免冲突:
    sudo systemctl stop NetworkManager
    sudo systemctl disable NetworkManager
    

     5. 核心交互流程总结

  1. 用户配置:编写 Netplan 的 YAML 文件并指定 renderer: networkd
  2. 生成配置netplan generate 将 YAML 转换为 systemd-networkd 的配置文件。
  3. 应用配置netplan apply 触发 systemd-networkd 重新加载配置并生效。
  4. 服务管理:确保 systemd-networkd 正在运行,且无其他网络管理工具干扰。

     注意事项

  • YAML 语法正确性:Netplan 对缩进和格式敏感,错误会导致配置失败。可使用 netplan --debug apply 调试。
  • 优先级与覆盖:Netplan 按文件名排序(如 01-netcfg.yaml 优先于 02-netcfg.yaml),相同键的配置会被后续文件覆盖。
  • 动态更新:修改配置后需手动执行 netplan apply,或重启服务以生效。

     示例流程

# 1. 编写配置文件(如 /etc/netplan/01-netcfg.yaml)
network:version: 2renderer: networkdethernets:enp0s3:dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8]# 2. 生成并应用配置
sudo netplan generate
sudo netplan apply# 3. 验证 systemd-networkd 是否生效
systemctl status systemd-networkd
networkctl

通过这一流程,Netplan 作为中间层,将用户友好的 YAML 配置转化为 systemd-networkd 可执行的网络设置,实现对网络的灵活管理。










Netplan 通过以下方式操控 systemd-networkd

     1. 配置转换

  • Netplan 读取用户定义的 YAML 配置文件(位于 /etc/netplan/),将其转换为 systemd-networkd 所需的 .network 格式配置文件。
  • YAML 中的参数(如静态 IP、DHCP、DNS 等)会被映射到 systemd-networkd 的配置语法。

     2. 生成配置文件

  • 运行 sudo netplan apply 时,Netplan 会生成 .network 文件并保存到 /etc/systemd/network/ 目录。
  • 这些文件会覆盖或新增网络配置,供 systemd-networkd 加载。

     3. 触发服务重载

  • Netplan 自动触发 systemd-networkd 重新加载配置,执行以下操作:
    systemctl restart systemd-networkd
    
  • 确保新配置生效。

     4. 管理生命周期

  • Netplan 负责维护 .network 文件的状态,避免手动修改冲突。
  • 用户应通过 Netplan YAML 文件管理网络配置,而非直接编辑生成的 .network 文件。

     示例流程

  1. 用户编辑 /etc/netplan/00-installer-config.yaml
    network:version: 2ethernets:enp0s3:dhcp4: true
    
  2. 运行 sudo netplan apply,Netplan 生成 /etc/systemd/network/50-netplan-enp0s3.network
    [Match]
    Name=enp0s3[Network]
    DHCP=yes
    
  3. systemd-networkd 加载新配置,启用 DHCP。

     注意

  • Netplan 支持多后端(如 systemd-networkdNetworkManager),但默认优先使用 systemd-networkd
  • 若需直接使用 systemd-networkd,可跳过 Netplan,手动编写 .network 文件。










Netplan 是 Ubuntu 系统中用于简化网络配置的工具,它通过 YAML 格式的配置文件抽象底层网络服务(如 systemd-networkdNetworkManager)。以下分步说明 Netplan 如何操控 systemd-networkd


     1. 配置文件解析

  • 用户层:用户编辑 /etc/netplan/*.yaml 文件(例如 01-netcfg.yaml),定义网络接口、IP 地址、路由、DNS 等配置。
  • 示例配置
    network:version: 2ethernets:enp0s3:dhcp4: true
    

     2. 生成底层配置

  • 当执行 netplan applynetplan generate 时,Netplan 将 YAML 配置转换为 systemd-networkd 能识别的配置文件:
    • 生成路径:配置文件默认输出到 /run/systemd/network/(临时)或 /etc/systemd/network/(持久化)。
    • 文件类型
      • .network:定义接口的 IP、路由等。
      • .link:定义接口的 MAC 地址、MTU 等(可选)。
      • .netdev:定义虚拟设备(如 VLAN、网桥等,可选)。

     3. 操控 systemd-networkd 服务

  • 触发服务更新
    • Netplan 通过 systemctl 命令重启 systemd-networkd.service,使新配置生效。
    • 同时通知 systemd-resolved.service 更新 DNS 配置(若涉及 DNS 设置)。
  • 依赖关系:Netplan 确保生成的配置文件与 systemd-networkd 的单元文件(unit)匹配,避免配置冲突。

     4. 底层交互流程

  1. 配置生成

    netplan generate  # 仅生成配置,不应用
    
    • Netplan 调用内部解析器,将 YAML 转换为 systemd-networkd 格式。
  2. 配置应用

    netplan apply     # 生成并立即生效
    
    • 步骤分解:
      1. 生成配置文件到 /run/etc
      2. 执行 systemctl restart systemd-networkd.service
      3. 若涉及 DNS,执行 systemctl restart systemd-resolved.service

     5. 关键技术点

  • 优先级控制/run/systemd/network/ 中的配置优先级高于 /etc/systemd/network/,确保临时配置可覆盖持久配置。
  • 原子性操作:Netplan 通过生成临时文件再重命名的方式,避免配置应用过程中出现中间状态。
  • 日志与调试:若配置失败,可通过以下命令排查:
    journalctl -u systemd-networkd  # 查看 networkd 日志
    netplan debug                   # 检查 Netplan 自身逻辑
    

     6. 与 NetworkManager 的对比

  • 若 Netplan 后端设为 NetworkManager,配置会通过 nmcli 或 D-Bus 接口传递。
  • systemd-networkd 的操控更直接,适合服务器等无 GUI 环境。

     总结
Netplan 通过 YAML 配置抽象生成 systemd-networkd 文件服务重启 的流程,实现了对 systemd-networkd 的操控。其核心优势在于简化了网络配置的复杂性,同时保持与 systemd 生态的无缝集成。










Netplan通过一系列步骤来操控systemd-networkd,以实现网络配置的管理和自动化。以下是Netplan如何操控systemd-networkd的详细解释:

  1. 配置文件解析与转换

    • Netplan读取位于/etc/netplan/目录下的YAML格式的配置文件(如01-netcfg.yaml等),这些文件定义了用户想要的网络配置,包括接口名称、IP地址、路由、DNS等信息[1][4]。
    • 根据YAML文件中的renderer: networkd声明,Netplan将用户定义的高层级网络配置转换为systemd-networkd能够理解的格式,即生成对应的.network文件和.link文件(如果需要的话)[1]。
  2. 文件生成与存储

    • 生成的.network文件和.link文件默认存储在/run/systemd/network/目录下,这是临时存储路径,重启后文件会丢失;或者存储在/etc/systemd/network/目录下,这是持久化存储路径,配置会在系统重启后依然生效[1]。
  3. 服务控制与配置应用

    • 当执行netplan apply命令时,Netplan会自动触发systemd-networkd服务的重载(reload),使新生成的网络配置立即生效[1]。具体来说,Netplan会调用systemctl restart systemd-networkd.service或发送信号通知systemd-networkd重新加载配置[1]。
    • netplan try命令则提供了一种更安全的配置测试方式,它会在应用配置后等待用户确认,如果超时未确认或网络中断,则会自动回滚到之前的配置状态[1]。
  4. 依赖关系管理

    • Netplan还会自动处理systemd-networkd与其他相关服务(如systemd-resolved)之间的依赖关系[1]。例如,当配置DNS时,Netplan会确保systemd-resolved接管DNS解析,并更新/etc/resolv.conf文件的指向[1]。
  5. 高级配置与扩展

    • 如果Netplan本身不支持某些特定的参数或功能(如mDNS),用户可以手动在/etc/systemd/network/*.network.d/目录下创建额外的.conf文件来补充配置,这些配置会被Netplan生成的配置文件所包含[1]。
    • Netplan支持通过match字段基于MAC地址、驱动类型等条件动态匹配网络接口,并生成对应的systemd-networkd匹配规则[1]。

总的来说,Netplan通过解析YAML配置文件、生成systemd-networkd兼容的配置文件、控制服务重载以及管理依赖关系等方式,实现了对systemd-networkd的有效操控,从而简化了网络配置管理的复杂性。



















相关文章:

netplan是如何操控systemd-networkd的? 笔记250324

netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd&#xff1a; 工作原理&#xff1a;netplan读取位于/etc/netplan/目录下的YAML格式的配置文件&#xff0c;这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...

[学成在线]06-视频分片上传

上传视频 需求分析 教学机构人员进入媒资管理列表查询自己上传的媒资文件。 点击“媒资管理” 进入媒资管理列表页面查询本机构上传的媒资文件。 教育机构用户在"媒资管理"页面中点击 "上传视频" 按钮。 点击“上传视频”打开上传页面 选择要上传的文件…...

机器视觉场景应用中,有没有超景深的工业镜头

在机器视觉领域,确实存在具有超景深特性的工业镜头,这类镜头通过特殊的光学设计或技术手段,能够显著扩大清晰成像的纵向范围,从而满足复杂检测场景中对多平面物体清晰成像的需求。以下是相关技术要点及典型镜头类型: 1. 远心镜头 远心镜头是超景深镜头的典型代表,其特点包…...

初探 Dubbo Rust SDK打造现代微服务的新可能

一、背景故事&#xff1a;为什么要在微服务中用 Rust&#xff1f; 微服务世界曾是 Java 的天下&#xff0c;后来 Go 异军突起&#xff0c;如今&#xff0c;Rust 凭借其“高性能 安全 零成本抽象”的特性&#xff0c;正在逐步走入服务端核心舞台。 问题随之而来&#xff1a;…...

如何理解响应式编程

思考&#xff1a; 分析Netty与Reactor背压协调策略 用户的问题是关于如何在 Netty 和 Project Reactor 联合使用时处理背压问题&#xff0c;特别是当 Reactor 的处理速度跟不上 Netty 的事件产生速度时该怎么办。这是一个技术性很强的问题&#xff0c;涉及到 Netty 的非阻塞特…...

Python网络编程入门

一.Socket 简称套接字&#xff0c;是进程之间通信的一个工具&#xff0c;好比现实生活中的插座&#xff0c;所有的家用电器要想工作都是基于插座进行&#xff0c;进程之间要想进行网络通信需要Socket&#xff0c;Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功能组合的导出表格示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功…...

鸿蒙特效教程10-卡片展开/收起效果

鸿蒙特效教程10-卡片展开/收起效果 在移动应用开发中&#xff0c;卡片是一种常见且实用的UI元素&#xff0c;能够将信息以紧凑且易于理解的方式呈现给用户。 本教程将详细讲解如何在HarmonyOS中实现卡片的展开/收起效果&#xff0c;通过这个实例&#xff0c;你将掌握ArkUI中状…...

如何创建一个socket服务器?

1. 导入必要的库 首先&#xff0c;需要导入Python的socket库&#xff0c;它提供了创建和管理socket连接的功能。 python import socket 2. 创建服务器端socket 使用socket.socket()函数创建一个服务器端的socket对象&#xff0c;指定协议族&#xff08;如socket.AF_INET表示…...

react自定义hook

自定义hook&#xff1a; 用来封装复用的逻辑&#xff0c;&#xff0c;自定义hook是以use开头的普通函数&#xff0c;&#xff0c;将组件中可复用的状态逻辑抽取到自定义的hook中&#xff0c;简化组件代码 常见自定义hook例子&#xff1a; 封装一个简单的计数器 import {useS…...

Android Compose 框架的状态与 ViewModel 的协同(collectAsState)深入剖析(二十一)

Android Compose 框架的状态与 ViewModel 的协同&#xff08;collectAsState&#xff09;深入剖析 一、引言 在现代 Android 应用开发中&#xff0c;构建响应式和动态的用户界面是至关重要的。Android Compose 作为新一代的声明式 UI 工具包&#xff0c;为开发者提供了一种简…...

系统与网络安全------网络应用基础(1)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 TCP/IP协议及配置 概述 TCP/IP协议族 计算机之间进行通信时必须共同遵循的一种通信规定 最广泛使用的通信协议的集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的数据通信 主机…...

linux常用指令(6)

今天我们继续学习一些linux常用指令,丰富我们linux基础知识,那么话不多说,来看. 1.cp指令 功能描述&#xff1a;拷贝文件到指定目录 基本语法&#xff1a;cp [选项] source dest 常用选项&#xff1a;-r&#xff1a;递归复制整个文件夹 拷贝文件&#xff1a; 拷贝文件夹&am…...

EasyUI数据表格中嵌入下拉框

效果 代码 $(function () {// 标记当前正在编辑的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …...

【设计模式】单件模式

七、单件模式 单件(Singleton) 模式也称单例模式/单态模式&#xff0c;是一种创建型模式&#xff0c;用于创建只能产生 一个对象实例 的类。该模式比较特殊&#xff0c;其实现代码中没有用到设计模式中经常提起的抽象概念&#xff0c;而是使用了一种比较特殊的语法结构&#x…...

C++类与对象的第二个简单的实战练习-3.24笔记

哔哩哔哩C面向对象高级语言程序设计教程&#xff08;118集全&#xff09; 实战二 Cube.h #pragma once class Cube { private:double length;double width;double height; public:double area(void);double Volume(void);//bool judgement(double L1, double W1, double H1);…...

【视频】m3u8相关操作

1、视频文件转m3u8 1.1 常用命令 1)默认只保留 5 个ts文件 ffmpeg -i input.mp4 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls stream1.m3u82)去掉音频 -an,保留全部ts文件 ffmpeg -i input.mp4 -vf scale=640:480 -an -start_number 0 -hls_time 10 -hls_lis…...

G-Star 校园开发者计划·黑科大|开源第一课之 Git 入门

万事开源先修 Git。Git 是当下主流的分布式版本控制工具&#xff0c;在软件开发、文档管理等方面用处极大。它能自动记录文件改动&#xff0c;简化合并流程&#xff0c;还特别适合多人协作开发。学会 Git&#xff0c;就相当于掌握了一把通往开源世界的钥匙&#xff0c;以后参与…...

前端框架学习路径与注意事项

学习前端框架是一个系统化的过程&#xff0c;需要结合理论、实践和工具链的综合掌握。以下是学习路径的关键方面和注意事项&#xff1a; 一、学习路径的核心方面 1. 基础概念与核心思想 组件化开发&#xff1a;理解组件的作用&#xff08;复用性、隔离性&#xff09;、组件通信…...

Apache Hive:基于Hadoop的分布式数据仓库

Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统&#xff0c;支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…...

langgraph简单Demo3(画一个简单的图)

文章目录 画图简单解析再贴结果图 画图 from langgraph.graph import StateGraph, END from typing import TypedDict# 定义状态结构 # (刚入门可能不理解这是什么&#xff0c;可以理解为一个自定义的变量库&#xff0c;你的所有的入参出参都可以定义在这里) # 如下&#xff1…...

LCR 187. 破冰游戏(python3解法)

难度&#xff1a;简单 社团共有 num 位成员参与破冰游戏&#xff0c;编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target&#xff0c;从 0 号成员起开始计数&#xff0c;排在第 target 位的成员离开圆桌&#xff0c;且成员离开后从下一个成员开始计数…...

10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

文章目录 一、引言云计算平台概览ToDesk云电脑&#xff1a;随时随地用上高性能电脑 二 .云电脑初体验DeekSeek介绍版本参数与特点任务类型表现 1、ToDesk云电脑2、顺网云电脑3、海马云电脑 三、DeekSeek本地化实操和AIGC应用1. ToDesk云电脑2. 海马云电脑3、顺网云电脑 四、结语…...

解决 Element UI 嵌套弹窗显示灰色的问题!!!

解决 Element UI 嵌套弹窗显示灰色的问题 &#x1f50d; 问题描述 ❌ 在使用 Element UI 开发 Vue 项目时&#xff0c;遇到了一个棘手的问题&#xff1a;当在一个弹窗(el-dialog)内部再次打开另一个弹窗时&#xff0c;第二个弹窗会显示为灰色&#xff0c;影响用户体验。 问题…...

【大模型】DeepSeek攻击原理和效果解析

前几天看到群友提到一个现象&#xff0c;在试图询问知识库中某个人信息时&#xff0c;意外触发了DeepSeek的隐私保护机制&#xff0c;使模型拒绝回答该问题。另有群友提到&#xff0c;Ollama上有人发布过DeepSeek移除模型内置审查机制的版本。于是顺着这条线索&#xff0c;对相…...

AI对软件工程(software engineering)的影响在哪些方面?

AI对软件工程&#xff08;software engineering&#xff09;的影响是全方位且深远的&#xff0c;它不仅改变了传统开发流程&#xff0c;还重新定义了工程师的角色和软件系统的构建方式。以下是AI影响软件工程的核心维度&#xff1a; 一、开发流程的智能化重构 需求工程革命 • …...

K8S学习之基础四十五:k8s中部署elasticsearch

k8s中部署elasticsearch 安装并启动nfs服务yum install nfs-utils -y systemctl start nfs systemctl enable nfs.service mkdir /data/v1 -p echo /data/v1 *(rw,no_root_squash) >> /etc/exports exports -arv systemctl restart nfs创建运行nfs-provisioner需要的sa账…...

部署高可用PostgreSQL14集群

目录 基础依赖包安装 consul配置 patroni配置 vip-manager配置 pgbouncer配置 haproxy配置 验证 本文将介绍如何使用Patroni、Consul、vip-manager、Pgbouncer、HaProxy组件来部署一个3节点的高可用、高吞吐、负载均衡的PostgresSQL集群&#xff08;14版本&#xff09;&…...

爬虫案例-爬取某站视频

文章目录 1、下载FFmpeg2、爬取代码3、效果图 1、下载FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。 点击下载: ffmpeg 安装并配置 FFmpeg 步骤&#xff1a; 1.下载 FFmpeg&#xff1a; 2.访问 FFmpeg 官网。 3.选择 Wi…...

PV操作指南

&#x1f525;《PV操作真香指南——看完就会的祖传攻略》&#x1f375; 一、灵魂三问❓ Q1&#xff1a;PV是个啥&#xff1f; • &#x1f4a1; 操作系统界的红绿灯&#xff1a;控制进程"何时走/何时停"的神器 • &#x1f9f1; 同步工具人&#xff1a;解决多进程&q…...

计算机考研复试机试-考前速记

考前速记 知识点 1. 链表篇 1. 循环链表报数3&#xff0c;输出最后一个报数编号 #include <iostream> using namespace std;typedef struct Node {int no;struct Node* next; }Node, *NodeList;void createNodeListTail(NodeList&L, int n) {L (Node*)malloc(siz…...

【漏洞复现】Next.js中间件权限绕过漏洞 CVE-2025-29927

什么是Next.js&#xff1f; Next.js 是由 Vercel 开发的基于 React 的现代 Web 应用框架&#xff0c;具备前后端一体的开发能力&#xff0c;广泛用于开发 Server-side Rendering (SSR) 和静态站点生成&#xff08;SSG&#xff09;项目。Next.js 支持传统的 Node.js 模式和基于边…...

路由选型终极对决:直连/静态/动态三大类型+华为华三思科配置差异,一张表彻底讲透!

路由选型终极对决&#xff1a;直连/静态/动态三大类型华为华三思科配置差异&#xff0c;一张表彻底讲透&#xff01; 一、路由&#xff1a;互联网世界的导航系统二、路由类型深度解析三者的本质区别 三、 解密路由表——网络设备的GPS华为&#xff08;Huawei&#xff09;华三&a…...

【AI】知识蒸馏-简单易懂版

1 缘起 最近要准备升级材料&#xff0c;里面有一骨碌是介绍LLM相关技术的&#xff0c;知识蒸馏就是其中一个点&#xff0c; 不过&#xff0c;只分享了蒸馏过程&#xff0c;没有讲述来龙去脉&#xff0c;比如没有讲解Softmax为什么引入T、损失函数为什么使用KL散度&#xff0c;…...

uniapp运行到支付宝开发者工具

使用uniapp编写专有钉钉和浙政钉出现的样式问题 在支付宝开发者工具中启用2.0构建的时候&#xff0c;在开发工具中页面样式正常 但是在真机调试和线上的时候不正常 页面没问题&#xff0c;所有组件样式丢失 解决 在manifest.json mp-alipay中加入 "styleIsolation&qu…...

STM32学习笔记之keil使用记录

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

卷积神经网络 - 参数学习

本文我们通过两个简化的例子&#xff0c;展示如何从前向传播、损失计算&#xff0c;到反向传播推导梯度&#xff0c;再到参数更新&#xff0c;完整地描述卷积层的参数学习过程。 一、例子一 我们构造一个非常简单的卷积神经网络&#xff0c;其结构仅包含一个卷积层和一个输出…...

【加密社】币圈合约交易量监控,含TG推送

首先需要在币安的开发者中心去申请自己的BINANCE_API_KEY和BINANCE_API_SECRET 有了这个后&#xff0c;接着去申请一个TG的机器人token和对话chatid 如果不需要绑定tg推送的话&#xff0c;可以忽略这步 接下来直接上代码 引用部分 from os import system from binance.c…...

大模型概述

大模型属于Foundation Model&#xff08;基础模型&#xff09;[插图]&#xff0c;是一种神经网络模型&#xff0c;具有参数量大、训练数据量大、计算能力要求高、泛化能力强、应用广泛等特点。与传统人工智能模型相比&#xff0c;大模型在参数规模上涵盖十亿级、百亿级、千亿级…...

【CSS3】完整修仙功法

目录 CSS 基本概念CSS 的定义CSS 的作用CSS 语法 CSS 引入方式内部样式表外部样式表行内样式表 选择器基础选择器标签选择器类选择器id 选择器通配符选择器 画盒子文字控制属性字体大小字体粗细字体倾斜行高字体族font 复合属性文本缩进文本对齐文本修饰线文字颜色 复合选择器后…...

C++ 的 if-constexpr

1 if-constexpr 语法 1.1 基本语法 ​ if-constexpr 语法是 C 17 引入的新语法特性&#xff0c;也被称为常量 if 表达式或静态 if&#xff08;static if&#xff09;。引入这个语言特性的目的是将 C 在编译期计算和求值的能力进一步扩展&#xff0c;更方便地实现编译期的分支…...

【电气设计】接地/浮地设计

在工作的过程中&#xff0c;遇到了需要测量接地阻抗的情况&#xff0c;组内讨论提到了保护接地和功能接地的相关需求。此文章用来记录这个过程的学习和感悟。 人体触电的原理&#xff1a; 可以看到我们形成了电流回路&#xff0c;导致触电。因此我们需要针对设备做一些保护设计…...

Gone v2 配置管理3:连接 Nacos 配置中心

&#x1f680; 发现 gone-io/gone&#xff1a;一个优雅的 Go 依赖注入框架&#xff01;&#x1f4bb; 它让您的代码更简洁、更易测试。&#x1f50d; 框架轻量却功能强大&#xff0c;完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目&#xff0c;请给我们点个星&#xff01;&a…...

深度强化学习中的深度神经网络优化策略:挑战与解决方案

I. 引言 深度强化学习&#xff08;Deep Reinforcement Learning&#xff0c;DRL&#xff09;结合了强化学习&#xff08;Reinforcement Learning&#xff0c;RL&#xff09;和深度学习&#xff08;Deep Learning&#xff09;的优点&#xff0c;使得智能体能够在复杂的环境中学…...

浅拷贝与深拷贝

浅拷贝和深拷贝是对象复制中的两种常见方式&#xff0c;它们在处理对象的属性时有本质的区别。 一. 浅拷贝&#xff08;Shallow Copy&#xff09; 浅拷贝是指创建一个新对象&#xff0c;然后将当前对象的非静态字段复制到新对象中。如果字段是值类型的&#xff0c;那么将复制字…...

macOS 安装 Miniconda

macOS 安装 Miniconda 1. Quickstart install instructions2. 执行3. shell 上初始化 conda4. 关闭 终端登录用户名前的 base参考 1. Quickstart install instructions mkdir -p ~/miniconda3 curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o…...

分布式限流方案:基于 Redis 的令牌桶算法实现

分布式限流方案&#xff1a;基于 Redis 的令牌桶算法实现 前言一、原理介绍&#xff1a;令牌桶算法二、分布式限流的设计思路三、代码实现四、方案优缺点五、 适用场景总结 前言 在分布式场景下&#xff0c;接口限流变得更加复杂。传统的单机限流方式难以满足跨节点的限流需求…...

OpenHarmony子系统开发 - 电池管理(二)

OpenHarmony子系统开发 - 电池管理&#xff08;二&#xff09; 五、充电限流限压定制开发指导 概述 简介 OpenHarmony默认提供了充电限流限压的特性。在对终端设备进行充电时&#xff0c;由于环境影响&#xff0c;可能会导致电池温度过高&#xff0c;因此需要对充电电流或电…...

Cocos Creator版本发布时间线

官网找不到&#xff0c;DeepSeek给的答案&#xff0c;这里做个记录。 Cocos Creator 1.x 系列 发布时间&#xff1a;2016 年 - 2018 年 1.0&#xff08;2016 年 3 月&#xff09;&#xff1a; 首个正式版本&#xff0c;基于 Cocos2d-x 的 2D 游戏开发工具链&#xff0c;集成可…...

修形还是需要再研究一下

最近有不少小伙伴问到修形和蜗杆砂轮的问题&#xff0c;之前虽然研究过一段时间&#xff0c;但是由于时间问题放下了&#xff0c;最近想再捡起来。 之前计算的砂轮齿形是一整段的&#xff0c;但是似乎这种对于有些小伙伴来说不太容易接受&#xff0c;希望按照修形的区域进行分…...