专题二十二:DHCP协议
一、DHCP简介
HCP是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议。DHCP是一个很重要的局域网的网络协议,DHCP使用UDP封装的67和68端口,DHCP客户端使用68端口,DHCP服务器使用67端口进行回应。
DHCP可以提供两种地址分配机制:
动态分配机制:通过DHCP为主机分配一个有使用期限(这个使用期限通常叫做租期)的IP地址。(常用)
静态分配机制:网络管理员通过DHCP为指定的主机分配固定的IP地址,一般基于MAC地址分配。
二、DHCP报文
2.1 DHCP协议组成
DHCP报文包含以下内容:重点可关注Ciaddr、Giaddr、Chaddr、Options这几个字段。
常见optipn字段:
option43:用于无线网络中AP获取AC的IP地址,AP获取到AC的地址后才可以进行CAPWAP隧道建立;
option82:中继代理信息选项,该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option82,并转发给DHCP服务器。
2.2 DHCP工作原理
1、DHCP客户端发送DHCP Discover广播报文来发现DHCP服务器。(询问谁可以为我分配IP地址。)
2、DHCP服务器在收到DHCP Discover报文后,会选取一个未分配的IP地址,向DHCP客户端发送DHCP提供报文(DHCP Offer),此报文中包含IP地址等配置信息。如果存在多个DHCP服务器,每个DHCP服务器都会响应。(告诉DHCP客户端我可以给你提供服务)
3、如果有多个DHCP服务器向DHCP客户端发送DHCP提供报文,DHCP客户端将会选择收到的第一个DHCP提供报文,然后发送DHCP Request报文,报文中包含请求的IP地址。(告诉所有的DHCP服务器我选择哪个服务器给我分配的地址)
4、DHCP服务器在收到DHCP Request报文后,会回应一个DHCP Ack报文。(告诉DHCP客户端我知道了)
2.3 DHCP报文
报文类型 | 含义 |
DHCP DISCOVER | 客户端用来寻找DHCP服务器。 |
DHCP OFFER | DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。 |
DHCP REQUEST | 客户端请求配置确认,或者续借租期。 |
DHCP ACK | 服务器对REQUEST报文的确认响应, |
DHCP NAK | 服务器对REQUEST报文的拒绝响应。 |
DHCP RELEASE | 客户端要释放地址时用来通知服务器, |
DHCP Discover:由客户端广播查找可用的服务器
DHCP Offer:服务器用来响应客户端的DHCP DIscover报文,并指定相应的配置参数(单播或广播,考试是单播)
DHCP Request:客户端发送给服务器来请求配置参数或者请求配置确认或者续借租期(广播)
DHCP Ack:由服务器到客户端,含有配置参数包括IP地址(单播)
·DHCP Decline:当客户端发现地址已经被使用时,用来通知服务器(通过免费ARP探测IP已经被占用时,主机发送此数据包)(广播)
·DHCP Inform:客户端已经有IP地址时用它来向服务器请求其他的配置参数;
·DHCP NAK:由服务器发送给客户端来表明客户端的地址请求不正确或者租期已经过期;
·DHCP Release:客户端要释放地址时用来通知服务器;
Offer报文扩展:
单独对于dhcp offer来说,到底是单播还是广播,取决于客户端发送的discover报文中的字段“Bootp flags”,它有两个字节,如果最高位为1,代表回复的offer为广播,如果为0,代表回复的offer为单播,其余bits代表reserved,也就是该字段取值为以下时:
1、Bootp flags = 0x8000,offer为广播
2、Bootp flags = 0x0000,offer为单播
其实根据RFC2131可以知道,offer和ack报文广播和单播的出现和client及server端都有关系。
2.4DHCP租期更新
在DHCP(动态主机配置协议)中,地址续租过程确保客户端设备能够继续使用分配的IP地址,从而避免地址冲突和网络中断。续租过程由客户端发起,通过与DHCP服务器通信来延长租约期限。DHCP客户端根据IP地址的剩余租期的不同而产生不同形式的续租请求。下面是DHCP地址续租的详细过程及相关概念
1)租期达到50%时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
2)当租期达到87.5%时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
3)如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址
2.5 DHCP中继
网络规模较大时,网络内存在不同网段,一台DHCP服务器需要对多个网段分配地址。但是DHCP Discover报文时广播报文,无法穿越广播域发送,所以需要一个中继将DHCP广播报文转发到DHCP服务器上,同时将DHCP服务器的应答报文转发给客户端。
DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,主要动作含:检查DHCP报文中的giaddr字段。DHCP报文中的giaddr字段标识客户端网关的IP地址。如果服务器和客户端不在同一个网段且中间存在多个DHCP中继,当客户端发出DHCP请求时,第一个DHCP中继会把自己的IP地址填入此字段,后面的DHCP中继不修改此字段内容。DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而为客户端分配该网段的IP地址。
2.5 DHCP snooping
DHCP Snooping通过在交换机上启用受信任端口和不受信任端口来工作。受信任端口允许DHCP服务器的流量通过,而不受信任端口则限制或过滤DHCP流量,用于连接客户端设备。交换机会检查来自不受信任端口的DHCP消息,并根据预定义的策略决定是否允许这些消息通过。
DHCP Snooping如何防御DHCP攻击
DHCP Snooping通过验证和过滤DHCP消息,确保只有合法的DHCP服务器和客户端能够进行通信,从而有效防止DHCP欺骗和DHCP耗尽攻击。具体来说,DHCP Snooping会创建一个绑定表,记录合法客户端的IP地址、MAC地址和端口信息。每当交换机收到DHCP消息时,它会检查该消息的合法性,并根据绑定表决定是否允许该消息通过。
受信任端口和不受信任端口
在DHCP Snooping中,交换机的端口被划分为受信任端口和不受信任端口:
-
受信任端口:允许DHCP服务器的流量通过的端口,通常用于连接合法的DHCP服务器。
-
不受信任端口:限制或过滤DHCP流量的端口,用于连接客户端设备。来自这些端口的DHCP消息需要经过交换机的验证。
三、DHCP攻击及防范
3.1DHCP饿死攻击
(1)伪造源MAC地址:
攻击原理:攻击者持续大量的向DHCP Server申请IP地址,直至耗尽DHCP Server地址池的IP地址,导致DHCP Server不能给正常的终端分配IP地址。
解决办法:通过DHCP Snooping的MAC地址限制功能,通过限制交换机接口上允许学习到的最多MAC地址数据,防止攻击者发送大量DHCP请求。
(2)伪造Chaddr字段:
攻击原理:攻击者持续大量的向DHCP Server申请IP地址,只在交换机接口上限制MAC地址学习数量无法解决,通过伪造DHCP Discover报文的Chaddr字段(客户端MAC地址),DHCP server针对Chaddr字段分配IP地址,直至DHCP地址池耗尽。
解决办法:通过配置DHCP Snooping,通过DHCP Request报文中的Chaddr资源,如果MAC与Chaddr不一致就丢弃。
3.2 DHCP仿冒者攻击
攻击原理:在网络上随意添加一台DHCP服务器,它可以为客户端分配IP地址以及其他网络参数。如果该DHCP服务器为用户分配错误的IP地址和其他网络参数,将会对网络造成非常大的危害。
解决办法:通过DHCP Snooping功能将接口分为信任接口和非信任接口,信任接口正常接收DHCP ACK、DHCP Offer报文,非信任接口收到DHCP Offer、DHCP ACK、DHCP NACK报文直接丢弃。
3.3DHCP 中间人攻击
攻击原理:利用ARP机制,使DHCP客户端学习到DHCP serve IP与攻击者的MAC地址映射关系,又让DHCP server学习到DHCP客户端与攻击者IP的映射关系(两头欺骗),这样DHCP客户端与服务端之间交互的IP报文都经过攻击者中转。
解决办法:通过DHCP Snooping的绑定表工作模式,使用ARP报文中的“源IP+源MAC”匹配DHCP Snooping绑定表,如果匹配就转发,不匹配就丢弃。
四、DHCP的配置
某企业将DHCP服务器部署在核心层设备上,DHCP服务器与企业内的终端不在同一个网段。企业希望使用该DHCP服务器为终端动态分配IP地址。
配置思路:
配置设备作为DHCP中继的配置思路如下:
在汇聚层设备RouterA(用户网关)上配置DHCP中继,实现设备作为DHCP中继转发终端与DHCP服务器之间的DHCP报文。
在核心层设备RouterB上,配置基于全局地址池的DHCP服务器,实现DHCP服务器从全局地址池中选择IP地址分配给企业终端。
配置步骤:
(1)在RouterB上配置基于全局地址池的DHCP服务器功能
# 使能DHCP服务。
<Huawei> system-view
[Huawei] sysname RouterB
[RouterB] dhcp enable //开启DHCP功能
# 配置接口工作在全局地址池模式。
[RouterB] interface ethernet 2/0/0
[RouterB-Ethernet2/0/0] ip address 10.10.20.2 24
[RouterB-Ethernet2/0/0 dhcp select global //全局地址池
[RouterB-Ethernet2/0/0] quit
# 创建地址池并配置相关属性。
[RouterB] ip pool pool1 //创建名为pool1的地址池
[RouterB-ip-pool-pool1] network 10.20.20.0 mask 24 //分配IP地址网段
[RouterB-ip-pool-pool1] gateway-list 10.20.20.1 //分配网关IP
[RouterB-ip-pool-pool1] dns-list 8.8.8.8 //分配DNS地址
[RouterB-ip-pool-pool1] lease 1 //租期为1天,{ day day [ hour hour [ minute minute ] ] | unlimited }
[RouterB-ip-pool-pool1] quit
(2)在RouterA上配置DHCP中继
# 在接口下使能DHCP中继功能。
[RouterA] dhcp enable //开启DHCP功能
[RouterA] interface ethernet 2/0/0
[RouterA--Ethernet2/0/0] ip address 10.20.20.1 24
[RouterA--Ethernet2/0/0] dhcp select relay //配置DHCP中继
[RouterA--Ethernet2/0/0] dhcp relay server-ip 10.10.20.2 //指向dhcp服务器IP10.10.20.2
[RouterA--Ethernet2/0/0] quit
在RouterA上配置缺省路由
[RouterA] ip route-static 0.0.0.0 0.0.0.0 10.10.20.2
(3)在RouterB上配置缺省路由
[RouterB] ip route-static 0.0.0.0 0.0.0.0 10.10.20.1
验证配置结果
# 在RouterA上执行命令display dhcp relay interface vlanif 100命令用来查看DHCP中继的配置信息。
[RouterA] display dhcp relay interface vlanif 100DHCP relay agent running information of interface Vlanif100 :Server IP address [00] : 10.10.20.2Gateway address in use : 10.20.20.1
# 在RouterB上使用display ip pool name pool1命令用来查看IP地址池的分配情况,“Used”字段表示已经分配出去的IP地址数量
五、软考真题
2021年11月网络工程师:
在大型无线网络中,AP通常通过DHCP Option()来获取AC的地址。
A.43 B.60
C.66 D.138
【解析】A,Option43是用于AP获取AC地址的字段。
2023年11月网络规划设计师:
DHCP协议中,用于客户端向服务器确认分配IP地址的消息是(1),该消息是一个(2)消息
(1)
A.DHCP Discover B.DHCP ACK
C.DHCP Request D.DHCP Offer
(2)
A.组播 B.单播
C.广播 D.多播
【解析】DHCP客户端发送的报文是A和C,其中C选项是确认分配的IP,DHCP客户端向服务端发送的是广播。答案是C、C。
相关文章:
专题二十二:DHCP协议
一、DHCP简介 HCP是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议。DHCP是一个很重要的局域网的网络协议,DHCP使用UDP封装的67和68端口,DHCP客户端使用68端口,DHCP服务器使用67端口进行回应。 DHCP可以提供两种…...
轻量级在线Excel预览工具
轻量级在线Excel预览工具 简介 在日常工作中,我们经常需要快速查看Excel文件的内容,但不一定总是需要打开完整的Excel软件。为了解决这个问题,我开发了一个轻量级的在线Excel预览工具,让您可以通过浏览器快速查看Excel文件内容。…...
【OFDM过程中正交子载波特性的应用及全面解析】
OFDM过程中正交子载波特性的应用及全面解析 一、正交子载波的核心作用 正交子载波是OFDM技术的基石,其特性贯穿整个发送和接收流程: 正交性定义 子载波频率间隔为符号速率的倒数( Δ f 1 T \Delta f \frac{1}{T} ΔfT1)&…...
旧版本NotionNext图片失效最小改动解决思路
旧版本NotionNext图片失效最小改动解决思路 契机 好久没写博客了,最近在notion写博客的时候发现用notionNext同步到个人网站时,图片无法预览。猜测是notion加了防盗链措施,去notionNext官方github上寻找解决方案,需要升级到4.8.…...
4.5 使用busybox制作根文件系统
4.1. 使用busybox制作文件系统 4.1.1 busybox源码下载: 下载地址:Index of /downloads 4.1.2. busybox源码中修改Makefile ARCH arm CROSS_COMPILE /usr/local/arm/arm-2009q3/bin//arm-none-linux-gnueabi-4.1.3. make menuconfig配置busybox &…...
LeetCode[102]二叉树的层序遍历
思路: 题目描述从左到右一层一层的进行遍历,就遍历二叉树的这种题我更喜欢用递归来做, 我使用java来做的,结果集是两个List集合,那么我们是不是应该每到新的一层就给这个结果集添加一个内部的List,那么怎么…...
【C到Java的深度跃迁:从指针到对象,从过程到生态】第五模块·生态征服篇 —— 第二十章 项目实战:从C系统到Java架构的蜕变
一、跨语言重构:用Java重写Redis核心模块 1.1 Redis的C语言基因解析 Redis 6.0源码核心结构: // redis.h typedef struct redisObject { unsigned type:4; // 数据类型(String/List等) unsigned encoding:4; // …...
implement the “pixel-wise difference“
根据在处理图像数据的来源和格式的不同,在具体实现“两幅图像残差比较”的时候,分为两类方法。 类型一:PyTorch 的 Tensor 图像格式 imgs_pil_o [transforms.ToPILImage()(img_o) for img_o in imgs_o] imgs_pil_w [transforms.ToPILImag…...
GoogleTest:TEST_F
GoogleTest:简单示例及ASSERT/EXPECT说明-CSDN博客 介绍了写一个简单的测试用例 如果某些测试用例在开始测试前需要先做一些准备工作,那么如果每次都需要先准备,那么会比较的麻烦,基于这种情况可以使用GoogleTest的TEST_F方法。 简单点说,就是需要先定义一个继承于testin…...
【优选算法 | 位运算】位运算基础:深入理解二进制操作
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和 在本篇文章中,我们将全面解析位运算的基本原理与实际应用。位运算通过直接操作数字的二进制表示,能够在许多计算中提供极大的效率提升。无论是用于加速数学…...
推荐免费的RVC模型下载网站
前沿 近年来,随着人工智能与计算机生成内容(AICG)技术的飞速发展,众多人才纷纷投身于这一领域。从ChatGPT到Stable Diffusion,再到RVC,这些广为人知的AI技术正逐步改变我们的生产方式。众所周知,…...
写了个脚本将pdf转markdown
看到有人需要将扫描pdf文档转markdown,想起之前写的一个小工具。 这个脚本是为了将pdf转成markdown,只需要申请一个智谱的api key,并填到config里,使用的模型是4v flash,免费的,所以可以放心使用。 效果如下…...
Expected SARSA算法详解:python 从零实现
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
SALOME源码分析: JobManager
本文分析SALOME中的JobManager模块。 注1:限于研究水平,分析难免不当,欢迎批评指正。注2:文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 Introduction: What is the JOBMANAGER ?...
冯·诺依曼体系:现代计算机的底层逻辑与百年传承
在智能手机流畅运行复杂游戏、超级计算机模拟气候变化的今天,很少有人会想到,驱动这些神奇机器运转的核心架构,依然遵循着70多年前提出的设计理念。这就是由匈牙利裔美国科学家约翰冯诺依曼(John von Neumann)奠定的冯…...
10 种微服务设计模式
微服务的优势与挑战 在详细介绍设计模式之前,我觉得有必要先重申下微服务的概念以及它带来的挑战。 微服务是大型应用程序的一个小型、可独立部署的组件,专注于特定功能。每个微服务都运行自己的进程,通常通过 API 与其他服务进行通信&…...
深入拆解 MinerU 解析处理流程
概述 MinerU更新频率也相当频繁,在短短一个月内,更新了10个小版本。 本文结合最新版本v1.3.10,深入拆解下它进行文档解析时的内部操作细节。 MinerU仓库地址:https://github.com/opendatalab/MinerU 环境准备 在之前的文章中,已经安装了magic-pdf(MinerU的解析包名),…...
Nginx部署Vue+ElementPlus应用案例(基于腾讯云)
案例代码链接:https://download.csdn.net/download/ly1h1/90735035 1.参考链接: 基于以下两个链接的参考,创建项目 1.1.基于Vue3前端项目创建-CSDN博客 1.2.基于Vue3引入ElementPlus_vue如何引入elementplus-CSDN博客 2.修改main.js&#…...
设计模式简述(十六)门面模式
门面模式 描述基本组件 描述 门面模式是一种概念相对简单的设计模式。 其核心思想就是:封装内部子系统的复杂调用,提供一个门面对象供外部调用。 基本组件 定义子系统对象(这里做了简化,没有声明抽象) public clas…...
云原生后端:构建高效、可扩展的现代后端架构
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 随着云计算技术的迅猛发展,云原生(Cloud Native)架构已经成为现代软件开发的核心趋势。云原生后端指的是在云环境中构建和部署的后端系统,这些系统具有弹性、可扩展性、自动化运维等特性,能够更…...
基于bert的情感分析程序
文章目录 任务介绍数据概览注意事项数据处理代码准备模型构建与训练模型类构建数据集构建数据批处理模型参数查看模型训练结果推理与评估模型推理准确率评估附录任务介绍 在当今信息爆炸的时代,互联网上充斥着海量的文本数据,如社交媒体评论、产品评价、新闻报道等。这些文本…...
情境领导理论——AI与思维模型【89】
一、定义 情境领导理论思维模型是一种强调领导者应根据下属的成熟度(包括工作能力和工作意愿两个方面)来调整领导风格,以实现有效领导的动态理论。该模型认为,没有一种放之四海而皆准的领导方式,领导者的行为要与下属…...
WPF之ProgressBar控件详解
文章目录 1. ProgressBar控件简介2. ProgressBar的基本属性和用法2.1 基本属性2.2 基本用法2.3 代码中修改进度 3. 确定与不确定模式3.1 确定模式(Determinate)3.2 不确定模式(Indeterminate) 4. 在多线程环境中更新ProgressBar4.…...
计算机网络01-网站数据传输过程
局域网: 覆盖范围小,自己花钱买设备,宽带固定,自己维护,,一般长度不超过100米,,,带宽也比较固定,,,10M,,&…...
泰迪杯特等奖案例学习资料:基于边缘计算与多模态融合的温室传感器故障自诊断系统设计
(第十四届泰迪杯数据挖掘挑战赛A题特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 在现代智能温室中,传感器网络是环境调控的核心依据,但其长期运行面临以下挑战: 数据异常频发: 传感器老化:温湿度传感器SHT35的精度在连续使用2年后可能漂移1℃。 环…...
力扣面试150题--分隔链表
day 39 题目描述 思路 遍历链表,每一个点与值比较,比值小就继续,比值大就放到链表尾部即可 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int…...
Shell 脚本基础
一、Shell 简介 1.Shell 的定义与作用 Shell,通常被称为命令行解释器 (Command Line Interpreter),是用户 👤 与 Linux/Unix 操作系统内核进行交互 ↔️ 的“桥梁” 🌉。它扮演着翻译官 🗣️ 的角色: 接…...
【AI面试准备】元宇宙测试:AI+低代码构建虚拟场景压力测试
介绍元宇宙测试:AI低代码构建虚拟场景压力测试(如数字孪生工厂)。如何快速掌握,以及在实际工作中如何运用。 目录 **元宇宙测试:AI低代码构建虚拟场景压力测试****一、元宇宙测试的核心挑战与需求**1. **元宇宙测试的独…...
【网络层】之IP协议
网络层之IP协议 网络层的作用IP地址不足的问题私网IP和公网IP网段划分传统的网段划分的方法CIDR网段划分路由器的角色理解运营商的角色子网划分的过程 路由表IP协议介绍报文如何分离、交付 网络层的作用 IP协议是网络层的一种典型协议,只要弄清楚了IP协议的作用&…...
AI编译器对比:TVM vs MLIR vs Triton在大模型部署中的工程选择
引言:大模型部署的编译器博弈 随着千亿参数大模型成为常态,推理延迟优化成为系统工程的核心挑战。本文基于NVIDIA A100与Google TPUv4平台,通过BERT-base(110M)和GPT-2(1.5B)的实测数据&#x…...
【dify—10】工作流实战——文生图工具
目录 一、创建工作流 应用 二、安装硅基流动 三、配置硅基流动 四、API测试 (1)进入API文档 (2)复制curl代码 (3)Postman测试API 五、 建立文生图工作流 (1)建立http请求 &…...
企业级分布式 MCP 方案
飞书原文档链接地址:https://ik3te1knhq.feishu.cn/wiki/D8kSwC9tFi61CMkRdd8cMxNTnpg 企业级分布式 MCP 方案 [!TIP] 背景:现阶段 MCP Client 和 MCP Server 是一对一的连接方式,若当前 MCP Server 挂掉了,那么 MCP Client 便不…...
玩转Docker(一):基本概念
容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。 本文将对其基本概念和基本使用做出介绍。包括容器生态系统、容器的原理、怎样运行第一个容器、容器技术的概念与实践、Docker镜像等等 目录 一. 鸟瞰容器生态系统 1. 容器…...
Linux系统安装方式+适合初学者的发行版本
Linux系统安装方式适合初学者发行版—目录 一、Linux系统的安装方式1. 物理机直接安装2. 虚拟机安装3. 双系统安装4. Live USB试用5. 云服务器安装 二、适合初学者的Linux发行版1. Ubuntu2. Linux Mint3. Zorin OS4. Pop!_OS5. Elementary OS6. Fedora7. Manjaro 三、选择建议场…...
开启 Spring AI 之旅:从入门到实战
开启 Spring AI 之旅:从入门到实战 引言 在当今人工智能飞速发展的时代,Spring AI 为开发者们提供了一个强大而便捷的工具,用于在 Spring 生态系统中构建 AI 应用程序。本文将为你提供如何开始使用 Spring AI 的详细指南,帮助你…...
python数据分析(七):Pandas 数据变形与重塑
Pandas 数据变形与重塑全面指南 1. 引言 在数据分析过程中,我们经常需要将数据从一种结构转换为另一种结构,以适应不同的分析需求。Pandas 提供了丰富的数据变形与重塑功能,包括旋转(pivot)、堆叠(stack)、融合(melt)等多种操作。本文将详细…...
SX24C01.UG-PXI程控电阻桥板卡
PXI程控电阻桥板卡 概述 简介 程控电阻桥板卡采用4 个可程控精密调节的电阻臂组成桥式电路,通过计算机PXI总线控制继电器通断进行电阻调节;可根据具体情况,方便地选择不同桥路的连接;程控电阻桥板卡支持“1/4 桥”、“半桥”和…...
Python项目源码69:一键解析+csv保存通达信日线数据3.0
Python项目源码39:学生积分管理系统1.0(命令行界面Json) Python项目源码38:模拟炒股系统2.0(tkinterJson) Python项目源码35:音乐播放器2.0(Tkintermutagen) Python项…...
Conda 与 Spyder 环境管理
前言 作为 Python 科学计算领域的黄金搭档,Anaconda 和 Spyder 为研究人员和数据分析师提供了强大的工作环境。本文将详细介绍如何使用 Conda 管理 Python 环境,并在 Spyder IDE 中灵活切换这些环境,助你打造高效的 Python 开发工作流。 一…...
头皮理疗预约小程序开发实战指南
生活服务类小程序开发正成为互联网创业的热点领域,头皮理疗预约小程序作为其中的细分品类,具有广阔的市场前景和用户需求。基于微信小程序原生开发或uniapp框架,结合Java后端和MySQL数据库,可构建一个功能完善、性能稳定且易于维护的头皮理疗预约平台。本文将从零开始,详细…...
cPanel 的 Let’s Encrypt™ 插件
在 cPanel & WHM 中,推出了一个名为 AutoSSL 的功能。可能有些朋友还不了解 AutoSSL,它是一个能够自动为您的网站申请和安装免费 SSL 证书的工具,这些证书由 Comodo 签发,保证网站的安全性。 AutoSSL 与 Let’s Encrypt Let’…...
《Android 应用开发基础教程》——第十一章:Android 中的图片加载与缓存(Glide 使用详解)
目录 第十一章:Android 中的图片加载与缓存(Glide 使用详解) 🔹 11.1 Glide 简介 🔸 11.2 添加 Glide 依赖 🔸 11.3 基本用法 ✦ 加载网络图片到 ImageView: ✦ 加载本地资源 / 文件 / UR…...
MySQL 中的游标(Cursor)
一、游标的作用 逐行处理数据:当需要对查询结果集中的每一行进行特定操作(如计算、条件判断、调用其他过程)时使用。替代集合操作:在无法通过单一 SQL 语句完成复杂逻辑时,游标提供逐行处理的能力。…...
【嵌入式Linux】基于ARM-Linux的zero2平台的智慧楼宇管理系统项目
目录 1. 需求及项目准备(此项目对于虚拟机和香橙派的配置基于上一个垃圾分类项目,如初次开发,两个平台的环境变量,阿里云接入,摄像头配置可参考垃圾分类项目)1.1 系统框图1.2 硬件接线1.3 语音模块配置1.4 …...
记忆翻牌游戏:认知科学与状态机的交响曲
目录 记忆翻牌游戏:认知科学与状态机的交响曲引言第一章 网格空间拓扑学1.1 自适应网格算法1.2 卡片排布原理 第二章 状态机设计2.1 状态跃迁矩阵2.2 时空关联模型 第三章 记忆强化机制3.1 认知衰减曲线3.2 注意力热力图 第四章 动画引擎设计4.1 翻牌运动方程4.2 粒…...
【业务领域】InfiniBand协议总结
InfiniBand协议总结 InfiniBand协议是什么?Infiniband产生的原因Mellanox公司介绍及其新闻基于TCP/IP的网络与IB网络的比较IB标准的优势什么是InfiniBand网络什么是InfiniBand架构Mellanox IB卡介绍InfiniBand速率发展介绍InfiniBand网络主要上层协议InfiniBand管理…...
使用Java正则表达式检查字符串是否匹配
在Java开发中,正则表达式(Regular Expression,简称Regex)是处理字符串的强大工具,广泛应用于模式匹配、数据验证和文本处理。Java通过java.util.regex包提供了对正则表达式的支持,包含Pattern和Matcher两个…...
个人健康中枢的多元化AI硬件革新与精准健康路径探析
在医疗信息化领域,个人健康中枢正经历着一场由硬件技术革新驱动的深刻变革。随着可穿戴设备、传感器技术和人工智能算法的快速发展,新一代健康监测硬件能够采集前所未有的多维度生物数据,并通过智能分析提供精准的健康建议。本文将深入探讨构成个人健康中枢的最新硬件技术,…...
Android基础控件用法介绍
Android基础控件用法详解 Android应用开发中,基础控件是构建用户界面的核心元素。本文将详细介绍Android中最常用的基础控件及其用法。 一、TextView(文本显示控件) TextView用于在界面上显示文本信息。 基本用法 <TextViewandroid:id="@+id/textView"andr…...
iO(不可区分混淆)是Web3隐私的圣杯?
1. 引言 iO 是区块链隐私的圣杯吗?本文将探讨: 不可区分混淆(indistinguishability obfuscation, iO)的局限性iO可能带来的变革iO为何重要?iO是否能真正成为可信硬件的替代方案? 区块链隐私面临的最大挑…...