netplan是如何操控systemd-networkd的? 笔记250324
netplan是如何操控systemd-networkd的?
netplan通过以下方式操控systemd-networkd:
-
工作原理:netplan读取位于
/etc/netplan/
目录下的YAML格式的配置文件,这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-networkd能够理解的配置格式,然后将这些配置应用到systemd-networkd中。 -
配置文件转换:netplan在
/run/systemd/network/
目录下生成特定于systemd-networkd的配置文件。这些配置文件以.network
为后缀,定义了网络接口的IP地址、网关、DNS等配置。当执行netplan apply
命令时,netplan会读取/etc/netplan/
下的配置文件,生成相应的systemd-networkd配置文件,并通知systemd-networkd重新加载配置。 -
命令执行:通过
netplan apply
命令,netplan会将配置应用到systemd-networkd,使新的网络配置生效。此外,还可以使用netplan get
命令查询当前的配置内容。 -
网络接口管理:systemd-networkd会根据netplan生成的配置文件来管理网络接口,包括配置IP地址、设置路由、管理虚拟网络设备等。
例如,在配置一个网桥时,可以在/etc/netplan/
下创建一个YAML文件,指定要加入网桥的网卡以及网桥的相关配置,然后执行netplan apply
命令,netplan会将这些配置转换为systemd-networkd的配置文件并应用,从而实现网桥的创建和配置。
Netplan 通过 YAML 配置文件与 systemd-networkd
交互,实现网络配置的抽象化管理和动态生成后端服务所需的配置文件。以下是其核心机制和操作流程:
一、配置文件的生成与转换
-
YAML 配置解析
Netplan 读取/etc/netplan/*.yaml
中的 YAML 文件,解析用户定义的高层级网络配置(如接口名称、IP 地址、路由、DNS 等)。 -
生成 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
二、服务控制与配置应用
-
触发 systemd-networkd 重载
执行netplan apply
时,Netplan 自动生成.network
文件,并通过systemctl restart systemd-networkd
重启服务,使新配置生效。
注:netplan try
会在应用后等待用户确认,超时则回滚配置。 -
依赖关系管理
Netplan 自动处理systemd-networkd
与其他服务(如systemd-resolved
)的依赖。例如,配置 DNS 时,Netplan 会同时更新/etc/resolv.conf
的指向,确保systemd-resolved
接管解析。
三、高级配置与扩展
-
补充配置文件
若需添加 Netplan 未直接支持的参数(如mDNS
功能),可手动在/etc/systemd/network/*.network.d/
目录下创建.conf
文件,补充到 Netplan 生成的配置中。
示例:# 补充 mDNS 配置 [Network] MulticastDNS=yes
-
网络接口匹配规则
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 generate
或 netplan apply
时,Netplan 解析 YAML 文件,将其转换为 systemd-networkd
兼容的配置文件。生成的配置文件位于以下路径:
- 临时配置:
/run/systemd/network/
(重启失效) - 持久化配置:
/etc/systemd/network/
(永久生效)
文件名遵循 10-netplan-<接口名>.network
的格式,例如:
10-netplan-eth0.network
。
3. 触发 systemd-networkd 重载
Netplan 通过以下步骤激活新配置:
- 生成配置:将 YAML 转换为
.network
文件。 - 重启服务:调用
systemctl restart systemd-networkd.service
或发送信号通知systemd-networkd
重新加载配置。 - 应用配置:
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-resolved
、systemd-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 会:- 验证配置:检查 YAML 语法和逻辑错误。
- 触发重载:通过
systemctl restart systemd-networkd
或发送SIGHUP
信号使守护进程重新加载配置。 - 状态反馈:显示配置是否成功应用(如
systemd-networkd
日志或networkctl status
输出)。
4. 动态管理
- 运行时更新:修改 YAML 后需重新运行
netplan apply
,systemd-networkd 会无缝应用新配置(无需重启系统)。 - 状态监控:通过
networkctl
命令查看接口状态,依赖 systemd-networkd 的实时反馈。
关键交互点
组件 | 角色 | 交互方式 |
---|---|---|
Netplan | 配置抽象层 | 生成 .network 文件,调用 systemctl |
systemd-networkd | 网络服务守护进程 | 监控 /etc/systemd/network/ 变化 |
systemd | 服务管理器 | 处理重启/信号请求 |
示例流程
- 用户编辑
/etc/netplan/01-netcfg.yaml
定义静态IP。 - 执行
sudo netplan apply
。 - Netplan 生成
/etc/systemd/network/50-static.network
。 - 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. 核心交互流程总结
- 用户配置:编写 Netplan 的 YAML 文件并指定
renderer: networkd
。 - 生成配置:
netplan generate
将 YAML 转换为systemd-networkd
的配置文件。 - 应用配置:
netplan apply
触发systemd-networkd
重新加载配置并生效。 - 服务管理:确保
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
文件。
示例流程
- 用户编辑
/etc/netplan/00-installer-config.yaml
:network:version: 2ethernets:enp0s3:dhcp4: true
- 运行
sudo netplan apply
,Netplan 生成/etc/systemd/network/50-netplan-enp0s3.network
:[Match] Name=enp0s3[Network] DHCP=yes
systemd-networkd
加载新配置,启用 DHCP。
注意
- Netplan 支持多后端(如
systemd-networkd
和NetworkManager
),但默认优先使用systemd-networkd
。 - 若需直接使用
systemd-networkd
,可跳过 Netplan,手动编写.network
文件。
Netplan 是 Ubuntu 系统中用于简化网络配置的工具,它通过 YAML 格式的配置文件抽象底层网络服务(如 systemd-networkd
或 NetworkManager
)。以下分步说明 Netplan 如何操控 systemd-networkd
:
1. 配置文件解析
- 用户层:用户编辑
/etc/netplan/*.yaml
文件(例如01-netcfg.yaml
),定义网络接口、IP 地址、路由、DNS 等配置。 - 示例配置:
network:version: 2ethernets:enp0s3:dhcp4: true
2. 生成底层配置
- 当执行
netplan apply
或netplan 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 通过
- 依赖关系:Netplan 确保生成的配置文件与
systemd-networkd
的单元文件(unit)匹配,避免配置冲突。
4. 底层交互流程
-
配置生成:
netplan generate # 仅生成配置,不应用
- Netplan 调用内部解析器,将 YAML 转换为
systemd-networkd
格式。
- Netplan 调用内部解析器,将 YAML 转换为
-
配置应用:
netplan apply # 生成并立即生效
- 步骤分解:
- 生成配置文件到
/run
或/etc
。 - 执行
systemctl restart systemd-networkd.service
。 - 若涉及 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的详细解释:
-
配置文件解析与转换
- Netplan读取位于
/etc/netplan/
目录下的YAML格式的配置文件(如01-netcfg.yaml
等),这些文件定义了用户想要的网络配置,包括接口名称、IP地址、路由、DNS等信息[1][4]。 - 根据YAML文件中的
renderer: networkd
声明,Netplan将用户定义的高层级网络配置转换为systemd-networkd能够理解的格式,即生成对应的.network
文件和.link
文件(如果需要的话)[1]。
- Netplan读取位于
-
文件生成与存储
- 生成的
.network
文件和.link
文件默认存储在/run/systemd/network/
目录下,这是临时存储路径,重启后文件会丢失;或者存储在/etc/systemd/network/
目录下,这是持久化存储路径,配置会在系统重启后依然生效[1]。
- 生成的
-
服务控制与配置应用
- 当执行
netplan apply
命令时,Netplan会自动触发systemd-networkd服务的重载(reload),使新生成的网络配置立即生效[1]。具体来说,Netplan会调用systemctl restart systemd-networkd.service
或发送信号通知systemd-networkd重新加载配置[1]。 netplan try
命令则提供了一种更安全的配置测试方式,它会在应用配置后等待用户确认,如果超时未确认或网络中断,则会自动回滚到之前的配置状态[1]。
- 当执行
-
依赖关系管理
- Netplan还会自动处理systemd-networkd与其他相关服务(如systemd-resolved)之间的依赖关系[1]。例如,当配置DNS时,Netplan会确保systemd-resolved接管DNS解析,并更新
/etc/resolv.conf
文件的指向[1]。
- Netplan还会自动处理systemd-networkd与其他相关服务(如systemd-resolved)之间的依赖关系[1]。例如,当配置DNS时,Netplan会确保systemd-resolved接管DNS解析,并更新
-
高级配置与扩展
- 如果Netplan本身不支持某些特定的参数或功能(如mDNS),用户可以手动在
/etc/systemd/network/*.network.d/
目录下创建额外的.conf
文件来补充配置,这些配置会被Netplan生成的配置文件所包含[1]。 - Netplan支持通过
match
字段基于MAC地址、驱动类型等条件动态匹配网络接口,并生成对应的systemd-networkd匹配规则[1]。
- 如果Netplan本身不支持某些特定的参数或功能(如mDNS),用户可以手动在
总的来说,Netplan通过解析YAML配置文件、生成systemd-networkd兼容的配置文件、控制服务重载以及管理依赖关系等方式,实现了对systemd-networkd的有效操控,从而简化了网络配置管理的复杂性。
相关文章:
netplan是如何操控systemd-networkd的? 笔记250324
netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd: 工作原理:netplan读取位于/etc/netplan/目录下的YAML格式的配置文件,这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...
[学成在线]06-视频分片上传
上传视频 需求分析 教学机构人员进入媒资管理列表查询自己上传的媒资文件。 点击“媒资管理” 进入媒资管理列表页面查询本机构上传的媒资文件。 教育机构用户在"媒资管理"页面中点击 "上传视频" 按钮。 点击“上传视频”打开上传页面 选择要上传的文件…...
机器视觉场景应用中,有没有超景深的工业镜头
在机器视觉领域,确实存在具有超景深特性的工业镜头,这类镜头通过特殊的光学设计或技术手段,能够显著扩大清晰成像的纵向范围,从而满足复杂检测场景中对多平面物体清晰成像的需求。以下是相关技术要点及典型镜头类型: 1. 远心镜头 远心镜头是超景深镜头的典型代表,其特点包…...
初探 Dubbo Rust SDK打造现代微服务的新可能
一、背景故事:为什么要在微服务中用 Rust? 微服务世界曾是 Java 的天下,后来 Go 异军突起,如今,Rust 凭借其“高性能 安全 零成本抽象”的特性,正在逐步走入服务端核心舞台。 问题随之而来:…...
如何理解响应式编程
思考: 分析Netty与Reactor背压协调策略 用户的问题是关于如何在 Netty 和 Project Reactor 联合使用时处理背压问题,特别是当 Reactor 的处理速度跟不上 Netty 的事件产生速度时该怎么办。这是一个技术性很强的问题,涉及到 Netty 的非阻塞特…...
Python网络编程入门
一.Socket 简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功能组合的导出表格示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功…...
鸿蒙特效教程10-卡片展开/收起效果
鸿蒙特效教程10-卡片展开/收起效果 在移动应用开发中,卡片是一种常见且实用的UI元素,能够将信息以紧凑且易于理解的方式呈现给用户。 本教程将详细讲解如何在HarmonyOS中实现卡片的展开/收起效果,通过这个实例,你将掌握ArkUI中状…...
如何创建一个socket服务器?
1. 导入必要的库 首先,需要导入Python的socket库,它提供了创建和管理socket连接的功能。 python import socket 2. 创建服务器端socket 使用socket.socket()函数创建一个服务器端的socket对象,指定协议族(如socket.AF_INET表示…...
react自定义hook
自定义hook: 用来封装复用的逻辑,,自定义hook是以use开头的普通函数,,将组件中可复用的状态逻辑抽取到自定义的hook中,简化组件代码 常见自定义hook例子: 封装一个简单的计数器 import {useS…...
Android Compose 框架的状态与 ViewModel 的协同(collectAsState)深入剖析(二十一)
Android Compose 框架的状态与 ViewModel 的协同(collectAsState)深入剖析 一、引言 在现代 Android 应用开发中,构建响应式和动态的用户界面是至关重要的。Android Compose 作为新一代的声明式 UI 工具包,为开发者提供了一种简…...
系统与网络安全------网络应用基础(1)
资料整理于网络资料、书本资料、AI,仅供个人学习参考。 TCP/IP协议及配置 概述 TCP/IP协议族 计算机之间进行通信时必须共同遵循的一种通信规定 最广泛使用的通信协议的集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的数据通信 主机…...
linux常用指令(6)
今天我们继续学习一些linux常用指令,丰富我们linux基础知识,那么话不多说,来看. 1.cp指令 功能描述:拷贝文件到指定目录 基本语法:cp [选项] source dest 常用选项:-r:递归复制整个文件夹 拷贝文件: 拷贝文件夹&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) 模式也称单例模式/单态模式,是一种创建型模式,用于创建只能产生 一个对象实例 的类。该模式比较特殊,其实现代码中没有用到设计模式中经常提起的抽象概念,而是使用了一种比较特殊的语法结构&#x…...
C++类与对象的第二个简单的实战练习-3.24笔记
哔哩哔哩C面向对象高级语言程序设计教程(118集全) 实战二 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 是当下主流的分布式版本控制工具,在软件开发、文档管理等方面用处极大。它能自动记录文件改动,简化合并流程,还特别适合多人协作开发。学会 Git,就相当于掌握了一把通往开源世界的钥匙,以后参与…...
前端框架学习路径与注意事项
学习前端框架是一个系统化的过程,需要结合理论、实践和工具链的综合掌握。以下是学习路径的关键方面和注意事项: 一、学习路径的核心方面 1. 基础概念与核心思想 组件化开发:理解组件的作用(复用性、隔离性)、组件通信…...
Apache Hive:基于Hadoop的分布式数据仓库
Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统,支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…...
langgraph简单Demo3(画一个简单的图)
文章目录 画图简单解析再贴结果图 画图 from langgraph.graph import StateGraph, END from typing import TypedDict# 定义状态结构 # (刚入门可能不理解这是什么,可以理解为一个自定义的变量库,你的所有的入参出参都可以定义在这里) # 如下࿱…...
LCR 187. 破冰游戏(python3解法)
难度:简单 社团共有 num 位成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数…...
10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?
文章目录 一、引言云计算平台概览ToDesk云电脑:随时随地用上高性能电脑 二 .云电脑初体验DeekSeek介绍版本参数与特点任务类型表现 1、ToDesk云电脑2、顺网云电脑3、海马云电脑 三、DeekSeek本地化实操和AIGC应用1. ToDesk云电脑2. 海马云电脑3、顺网云电脑 四、结语…...
解决 Element UI 嵌套弹窗显示灰色的问题!!!
解决 Element UI 嵌套弹窗显示灰色的问题 🔍 问题描述 ❌ 在使用 Element UI 开发 Vue 项目时,遇到了一个棘手的问题:当在一个弹窗(el-dialog)内部再次打开另一个弹窗时,第二个弹窗会显示为灰色,影响用户体验。 问题…...
【大模型】DeepSeek攻击原理和效果解析
前几天看到群友提到一个现象,在试图询问知识库中某个人信息时,意外触发了DeepSeek的隐私保护机制,使模型拒绝回答该问题。另有群友提到,Ollama上有人发布过DeepSeek移除模型内置审查机制的版本。于是顺着这条线索,对相…...
AI对软件工程(software engineering)的影响在哪些方面?
AI对软件工程(software engineering)的影响是全方位且深远的,它不仅改变了传统开发流程,还重新定义了工程师的角色和软件系统的构建方式。以下是AI影响软件工程的核心维度: 一、开发流程的智能化重构 需求工程革命 • …...
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集群(14版本)&…...
爬虫案例-爬取某站视频
文章目录 1、下载FFmpeg2、爬取代码3、效果图 1、下载FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 点击下载: ffmpeg 安装并配置 FFmpeg 步骤: 1.下载 FFmpeg: 2.访问 FFmpeg 官网。 3.选择 Wi…...
PV操作指南
🔥《PV操作真香指南——看完就会的祖传攻略》🍵 一、灵魂三问❓ Q1:PV是个啥? • 💡 操作系统界的红绿灯:控制进程"何时走/何时停"的神器 • 🧱 同步工具人:解决多进程&q…...
计算机考研复试机试-考前速记
考前速记 知识点 1. 链表篇 1. 循环链表报数3,输出最后一个报数编号 #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? Next.js 是由 Vercel 开发的基于 React 的现代 Web 应用框架,具备前后端一体的开发能力,广泛用于开发 Server-side Rendering (SSR) 和静态站点生成(SSG)项目。Next.js 支持传统的 Node.js 模式和基于边…...
路由选型终极对决:直连/静态/动态三大类型+华为华三思科配置差异,一张表彻底讲透!
路由选型终极对决:直连/静态/动态三大类型华为华三思科配置差异,一张表彻底讲透! 一、路由:互联网世界的导航系统二、路由类型深度解析三者的本质区别 三、 解密路由表——网络设备的GPS华为(Huawei)华三&a…...
【AI】知识蒸馏-简单易懂版
1 缘起 最近要准备升级材料,里面有一骨碌是介绍LLM相关技术的,知识蒸馏就是其中一个点, 不过,只分享了蒸馏过程,没有讲述来龙去脉,比如没有讲解Softmax为什么引入T、损失函数为什么使用KL散度,…...
uniapp运行到支付宝开发者工具
使用uniapp编写专有钉钉和浙政钉出现的样式问题 在支付宝开发者工具中启用2.0构建的时候,在开发工具中页面样式正常 但是在真机调试和线上的时候不正常 页面没问题,所有组件样式丢失 解决 在manifest.json mp-alipay中加入 "styleIsolation&qu…...
STM32学习笔记之keil使用记录
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
卷积神经网络 - 参数学习
本文我们通过两个简化的例子,展示如何从前向传播、损失计算,到反向传播推导梯度,再到参数更新,完整地描述卷积层的参数学习过程。 一、例子一 我们构造一个非常简单的卷积神经网络,其结构仅包含一个卷积层和一个输出…...
【加密社】币圈合约交易量监控,含TG推送
首先需要在币安的开发者中心去申请自己的BINANCE_API_KEY和BINANCE_API_SECRET 有了这个后,接着去申请一个TG的机器人token和对话chatid 如果不需要绑定tg推送的话,可以忽略这步 接下来直接上代码 引用部分 from os import system from binance.c…...
大模型概述
大模型属于Foundation Model(基础模型)[插图],是一种神经网络模型,具有参数量大、训练数据量大、计算能力要求高、泛化能力强、应用广泛等特点。与传统人工智能模型相比,大模型在参数规模上涵盖十亿级、百亿级、千亿级…...
【CSS3】完整修仙功法
目录 CSS 基本概念CSS 的定义CSS 的作用CSS 语法 CSS 引入方式内部样式表外部样式表行内样式表 选择器基础选择器标签选择器类选择器id 选择器通配符选择器 画盒子文字控制属性字体大小字体粗细字体倾斜行高字体族font 复合属性文本缩进文本对齐文本修饰线文字颜色 复合选择器后…...
C++ 的 if-constexpr
1 if-constexpr 语法 1.1 基本语法 if-constexpr 语法是 C 17 引入的新语法特性,也被称为常量 if 表达式或静态 if(static if)。引入这个语言特性的目的是将 C 在编译期计算和求值的能力进一步扩展,更方便地实现编译期的分支…...
【电气设计】接地/浮地设计
在工作的过程中,遇到了需要测量接地阻抗的情况,组内讨论提到了保护接地和功能接地的相关需求。此文章用来记录这个过程的学习和感悟。 人体触电的原理: 可以看到我们形成了电流回路,导致触电。因此我们需要针对设备做一些保护设计…...
Gone v2 配置管理3:连接 Nacos 配置中心
🚀 发现 gone-io/gone:一个优雅的 Go 依赖注入框架!💻 它让您的代码更简洁、更易测试。🔍 框架轻量却功能强大,完美平衡了灵活性与易用性。⭐ 如果您喜欢这个项目,请给我们点个星!&a…...
深度强化学习中的深度神经网络优化策略:挑战与解决方案
I. 引言 深度强化学习(Deep Reinforcement Learning,DRL)结合了强化学习(Reinforcement Learning,RL)和深度学习(Deep Learning)的优点,使得智能体能够在复杂的环境中学…...
浅拷贝与深拷贝
浅拷贝和深拷贝是对象复制中的两种常见方式,它们在处理对象的属性时有本质的区别。 一. 浅拷贝(Shallow Copy) 浅拷贝是指创建一个新对象,然后将当前对象的非静态字段复制到新对象中。如果字段是值类型的,那么将复制字…...
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 的令牌桶算法实现
分布式限流方案:基于 Redis 的令牌桶算法实现 前言一、原理介绍:令牌桶算法二、分布式限流的设计思路三、代码实现四、方案优缺点五、 适用场景总结 前言 在分布式场景下,接口限流变得更加复杂。传统的单机限流方式难以满足跨节点的限流需求…...
OpenHarmony子系统开发 - 电池管理(二)
OpenHarmony子系统开发 - 电池管理(二) 五、充电限流限压定制开发指导 概述 简介 OpenHarmony默认提供了充电限流限压的特性。在对终端设备进行充电时,由于环境影响,可能会导致电池温度过高,因此需要对充电电流或电…...
Cocos Creator版本发布时间线
官网找不到,DeepSeek给的答案,这里做个记录。 Cocos Creator 1.x 系列 发布时间:2016 年 - 2018 年 1.0(2016 年 3 月): 首个正式版本,基于 Cocos2d-x 的 2D 游戏开发工具链,集成可…...
修形还是需要再研究一下
最近有不少小伙伴问到修形和蜗杆砂轮的问题,之前虽然研究过一段时间,但是由于时间问题放下了,最近想再捡起来。 之前计算的砂轮齿形是一整段的,但是似乎这种对于有些小伙伴来说不太容易接受,希望按照修形的区域进行分…...