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

计算机网络:应用层 —— 动态主机配置协议 DHCP

文章目录

    • 什么是 DHCP?
    • DHCP 的产生背景
    • DHCP 的工作过程
      • 工作流程
      • 地址分配机制
    • DHCP 中继代理
    • 总结

什么是 DHCP?

动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,用于自动分配IP地址及其他网络配置参数(如子网掩码、默认网关、DNS服务器地址等)给网络中的设备。它基于客户端/服务器架构,通过集中管理IP地址池,简化了网络设备的配置过程。

DHCP 协议允许网络管理员通过中央服务器来动态分配和管理 IP 地址以及其他网络配置参数,从而减少了网络管理的复杂性。

在这里插入图片描述

DHCP 的产生背景

DHCP 出现之前,网络管理员需要手动为每台设备配置 IP 地址,这种方式不仅繁琐,还容易导致 IP 地址冲突和资源浪费。随着网络规模的扩大和设备数量的增加,这种手动配置的方式已无法满足需求。因此,IETF 设计了 DHCP 协议,以实现动态、自动化的 IP 地址分配

DHCP 的工作过程

DHCP 使用客户/服务器方式:

  • DHCP 服务器上运行 DHCP 服务器进程,也可简称为 DHCP 服务器

  • 在用户主机上运行 DHCP 客户进程,也可简称为 DHCP 客户。

DHCP 是 TCP/IP 协议体系应用层中的协议,它使用运输层的 UDP 所提供的服务。DHCP报文在运输层会被封装成为 UDP用户数据报DHCP 服务器使用的UDP端口是67DHCP 客户使用的UDP端口是68,这两个 UDP 端口都是熟知端口。

封装有 DHCP 报文的 UDP 用户数据报,在网络层会被封装成 IP 数据报,然后再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送,如封装为以太网帧。

在这里插入图片描述

工作流程

DHCP 的工作流程主要包括以下四个阶段:

  1. 发现阶段(DHCP Discover):客户端以广播方式发送 DHCP Discover 报文,寻找可用的 DHCP 服务器。

  2. 提供阶段(DHCP Offer):服务器收到请求后,从地址池中选择一个可用的IP地址,并向客户端发送 DHCP Offer 报文。

  3. 请求阶段(DHCP Request):客户端收到 Offer 后,选择一个服务器的 Offer,并发送 DHCP Request 报文,请求确认分配的IP地址。

  4. 确认阶段(DHCP Ack):服务器确认客户端的请求,发送 DHCP Ack 报文,正式分配IP地址及其他配置信息。

这是一个四步的交互过程,包括客户端的广播请求、服务器的提供回应、客户端的确认地址和服务器的确认并更新数据库。

在这里插入图片描述

  1. 客户端广播请求(Discover)

    • DHCP 客户端(如计算机、路由器等)启动时,它会在网络上广播一个 DHCP Discover 消息(因为主机现在并不知道网络中有哪几个DHCP服务器),请求可用的 IP 地址和其他网络配置参数。这个广播消息会被网络上的所有设备接收,但只有DHCP服务器会对此作出响应

    • DHCP Discover 消息报文封装有事务ID、DHCP 客户端的 MAC 地址等信息

  2. DHCP服务器提供回应(Offer)

    • 当 DHCP 服务器接收到客户端的 DHCP Discover 广播后,它会从预定义的IP地址池中选择一个未使用的IP地址,根据其中封装的 DHCP 客户端的 MAC 地址实查找自己的数据库,看是否有针对该 MAC 地址的配置信息。

      如果有,则使用这些配置信息来构建并发送 DHCP 提供报文;则采用默认配置信息来构建并发送 DHCP 提供报文。并通过广播或单播方式向客户端发送一个 DHCP Offer 消息

      DHCP 服务器从自己的 IP 地址池中挑选待租用给主机的IP地址时,会使用ARP确保所选IP地址未被网络中其他主机占用

    • 这个 Offer 消息中包含了分配的 IP 地址、子网掩码、地址租期、默认网关、DNS 服务器地址等配置信息。

    • 如果网络中存在多个 DHCP 服务器,客户端可能会收到多个 Offer 消息。在这种情况下,客户端通常会选择第一个收到的Offer或根据其他标准(如服务器优先级)选择一个Offer

  3. DHCP客户端确认地址(Request)

    • 客户端在收到 DHCP Offer 后,DHCP 客户会根据 DHCP 提供报文中的事物 ID,来判断该报文是否是自己所请求的报文,然后发送一个 DHCP Request 消息给选定的 DHCP 服务器,表示它接受该服务器提供的IP地址和其他配置参数。

      这个 Request 消息是一个广播消息(目的IP地址为广播地址),因为首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址。

      DHCP 请求报文中封装有事物 ID、DHCP 客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器端的 IP 地址等信息。

  4. DHCP服务器确认并更新数据库(Ack/Decline)

    • 当 DHCP 服务器收到客户端的 DHCP Request 消息后,它会发送一个 DHCP Ack 消息作为响应(目的IP地址为广播地址),确认客户端可以使用请求的IP地址和其他配置参数。这个 Ack 消息也会更新DHCP服务器的数据库,标记该 IP 地址已经被分配出去。

    • 此时,DHCP 服务器仍会使用 ARP 检测所分配到的 IP 地址是否已被网络中其他主机占用,如果 DHCP 服务器提供的 IP 地址已经被其他客户端使用(由于某种原因),则服务器会发送一个 DHCP DECLINE 消息给客户端,撤销地址租约,表示IP地址分配失败,客户端需要重新发送 DHCP Discover 消息以获取新的IP地址。

      若未被占用,则可以使用租约中的IP地址与网络中其他主机通信了

地址分配机制

DHCP 提供了两种主要的地址分配机制:

  • 动态分配:为客户端分配一个有使用期限的IP地址(租期)。租期到期前,客户端需要续租。这种方式适用于临时接入网络的设备。

  • 静态分配:网络管理员可以为特定设备分配固定的IP地址,避免手动配置错误

在工作过程中:

  1. DHCP客户端更新租约(Request/Discover)

    • 当 DHCP 客户端已经和某个 IP 地址绑定后,经过 0.5 倍的租用期时间后,为了更新 IP 地址的租约,它会发送 DHCP REQUEST 单播报文。在这种情况下,客户端知道服务器的具体地址,因此可以直接向该地址发送单播请求。

    • DHCP 服务器若同意,则发回 DHCP ACK 确认报文,这样,DHCP 客户就得到了新的租用期。

    • DHCP 服务器若不同意,则发回DHCP NACK否认报文,这时,DHCP 客户必须立即停止使用之前租用的IP地址,并重新发送 DHCP Discover 发现报文来重新申请IP地址

    • DHCP 服务器者未做出响应,则在租用期过了 87.5% 时,DHCP 客户必须重新发送 DHCP REQUEST 请求报文,然后继续等待 DHCP 服务器可能做出的反应。

    • 若 DHCP 仍未做出响应,当租用期到期后,DHCP 客户必须立即停止使用之前租用的 IP 地址,并重新发送 DHCP 发现报文来重新申请 IP 地址。

  2. DHCP客户终止租用期(Release)

    • DHCP 客户可以随时提前终止 DHCP 服务器所提供的租用期,这时只需向 DHCP 服务器发送 DHCP RELEASE 释放报文段即可。

DHCP 中继代理

在每一个网络上都设置一个 DHCP 服务器会使 DHCP 服务器的数量太多。因此,在实际应用中,是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了 DHCP 服务器的 IP 地址信息,作为各网络中计算机与 DHCP 服务器的桥梁。

在这里插入图片描述

总结

DHCP 是一种高效的网络管理协议,通过自动分配 IP 地址和网络配置信息,极大地简化了网络管理流程,提高了网络的灵活性和可扩展性。它在现代网络中扮演着不可或缺的角色,尤其是在局域网、无线网络和云计算环境中。

相关文章:

计算机网络:应用层 —— 动态主机配置协议 DHCP

文章目录 什么是 DHCP?DHCP 的产生背景DHCP 的工作过程工作流程地址分配机制 DHCP 中继代理总结 什么是 DHCP? 动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,用于自动分…...

基于Spring Boot,结合Redis缓存和RabbitMQ消息队列的站内信系统设计

1. 添加依赖 在pom.xml中添加必要的依赖&#xff1a; <dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependen…...

【JAVA:list中再定义一个list对象,循环赋值不同的list数据,出现追加重复数据问题】

问题描述&#xff1a; list中再定义一个list对象&#xff0c;循环赋值不同的list数据&#xff0c;结果全部都累加到每条数据中了&#xff0c;每条数据中都出现重复数据。 问题解决&#xff1a; 1.创建树结构方法信息 2.创建一个新的 List 对象&#xff0c;避免引用问题 3.使…...

系统思考—价格策略

“我们之所以犯错&#xff0c;是因为我们没有意识到自己处在错误的思维模式中。” —— 卡尔波普尔&#xff08;哲学家&#xff0c;批判理性主义的创始人&#xff09; 最近和小伙伴们聊到定价这个变量&#xff0c;深刻感受到系统思考的强大力量。记得在MIT经典沙盘《人民航空经…...

提升信息检索准确性和效率的搜索技巧

一、基础技巧 精准关键词 避免长句子&#xff0c;提取核心关键词&#xff08;如用“光合作用 步骤”代替“请告诉我光合作用的具体过程”&#xff09;。 同义词替换&#xff1a;尝试不同表达&#xff08;如“AI 发展史” vs “人工智能 历史”&#xff09;。 排除干扰词 使用…...

第3章:在LangChain中如何设置模型参数

本章主要介绍了如何在LangChain4j中配置和调整模型参数&#xff0c;以满足不同的需求和优化模型的表现&#xff1b; 在Java开发框架中通过LangChain4j调用LLM&#xff0c;可以如何设置模型参数&#xff0c;以及对应参数的详细说明&#xff0c;如此以来你可以掌握在智能体开发过…...

java | MyBatis-plus映射和golang映射对比

文章目录 Java实体类和数据库的映射1.默认驼峰命名规则2.自定义字段映射3.关闭驼峰命名规则4.JSON序列化映射 Golang1. 结构体与表的映射2. 字段与列的映射3. 关联关系映射4. 其他映射相关标签 这篇也是做数据库映射方面的对比&#xff1a; Java 实体类和数据库的映射 1.默认…...

CMDB与ITIL的关系:如何通过CMDB实现IT服务管理?

在数字化转型的浪潮中&#xff0c;企业IT系统的复杂性呈指数级增长。如何高效管理海量IT资源、快速响应业务需求&#xff0c;成为每个企业必须面对的挑战。而CMDB&#xff08;配置管理数据库&#xff09;和ITIL&#xff08;信息技术基础设施库&#xff09;的结合&#xff0c;正…...

【python】网页批量转PDF

安装wkhtmltopdf 网站&#xff1a;wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…...

开题报告——基于Spring Boot的垃圾分类预约回收系统

关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...

第1章大型互联网公司的基础架构——1.10 其他NoSQL数据库

这里我们简单介绍一下其他常见的NoSQL数据库及其适用的场景&#xff0c;其中部分数据库会在后续服务设计章节中正式使用时再做详细介绍。 1.10.1 文档数据库 文档数据库的典型代表是MongoDB和CouchDB。**文档数据库普遍采用JSON格式来存储数据&#xff0c;而不是采用僵硬的行…...

大数据治理之solr的体现

大数据治理之solr的体现 一&#xff0c;大数据治理下Solr的作用 在大数据治理的背景下&#xff0c;Solr作为一个高性能的搜索平台&#xff0c;发挥这重要的作用&#xff0c;下面是Solr在大数据治理中的几个关键作用和体现&#xff1a; 数据索引与检索&#xff1a; 高效检索&a…...

【微信小程序开发】元素顶部重叠

微信小程序开发-顶部元素重叠 原因是开启了自定义导航栏&#xff0c;navigationStyle“custom”&#xff08;app.json) 把这行删掉就好了...

Spring框架基本使用(Maven详解)

前言&#xff1a; 当我们创建项目的时候&#xff0c;第一步少不了搭建环境的相关准备工作。 那么如果想让我们的项目做起来方便快捷&#xff0c;应该引入更多的管理工具&#xff0c;帮我们管理。 Maven的出现帮我们大大解决了管理的难题&#xff01;&#xff01; Maven&#xf…...

Hadoop一 HDFS分布式文件系统

一 分布式文件存储 了解为什么海量数据需要使用分布式存储技术 100T数据太大&#xff0c;单台服务器无法承担。于是&#xff1a; 分布式服务器集群 靠数量取胜&#xff0c;多台服务器组合&#xff0c;才能Hold住&#xff0c;如下 分布式不仅仅是解决了能存的问题&#xff…...

Windows 图形显示驱动开发-驱动驻留的供应和回收更改

访问非用户分配 对于 Windows 显示驱动程序模型 (WDDM) v2&#xff0c;有关 套餐 和 回收 的要求正在放宽。 用户模式驱动程序不再需要在内部分配上使用套餐和回收。 空闲/挂起的应用程序将使用 Microsoft DirectX 11.1 中引入的 TrimAPI 删除驱动程序内部资源。 API 级别将继…...

【含文档+PPT+源码】基于Python的图书推荐系统的设计与实现

课程简介&#xff1a; 本课程演示的是一款基于python的图书推荐系统的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行…...

glob 用法技巧

目录 处理大量文件节省内存 匹配多个文件扩展名 遍历多种格式文件 遍历某一个文件&#xff1a; 查找当前目录和子目录 6. 排除特定文件 7. 大小写不敏感匹配 8. 获取绝对路径 9. 处理特殊字符 处理大量文件节省内存 技巧&#xff1a;用 iglob 替代 glob&#xff0c;逐…...

Windows 启动 SSH 服务

Windows 启动 SSH 服务 一、OpenSSH Server 安装 以 Win10 系统为例 打开设置 -> 系统 -> 可选功能 在 添加的功能 查看是否安装了 OpenSSH 服务 或者 OpenSSH Server 如果没有安装&#xff0c;找到 系统->添加可选功能 -> 查看功能->搜索 OpenSSH 服务 ->…...

基于Llama 3.2-Vision的医学报告生成

记录运用大模型解决医学报告实例&#xff0c;仅介绍本地调用的情况。 前情提要 已安装 Python 显存不少于8G&#xff08;8G设备上测试成功&#xff0c;其他环境可以自行测试&#xff09;。 需要安装Ollama (Ollama 是一个允许在本地运行多模态模型的平台)。 方式1&#xff1…...

Freertos学习第一篇-总体概述

目录 1、基础概念1.1、FreeRTOS概念 2、模块学习2.1、任务2.2、调度&#xff08;Scheduling&#xff09;2.3、任务间通讯2.4、时间管理2.5、内存管理 3、各模块串联逻辑3.1、任务创建与调度3.2、任务间通讯3.3、时间管理3.4、内存管理 4、示例代码4.1、代码说明 5、学习路线建议…...

Windows系统安装GPU驱动/CUDA/cuDNN

1、驱动安装步骤 1.1下载驱动 通过浏览器访问Download The Official NVIDIA Drivers | NVIDIA 1.2安装驱动 1.3检查 打开【设备管理器】—【显示适配器】 2、CUDA安装步骤 2.1下载CUDA 官网链接CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA 开发者 2.2安装CUDA 3、cuDN…...

Nginx 安装及配置教程(Windows)【安装】

文章目录 一、 Nginx 下载 1. 官网下载2. 其它渠道 二、 Nginx 安装三、 配置四、 验证五、 其它问题 1. 常用命令2. 跨域问题 软件 / 环境安装及配置目录 一、 Nginx 下载 1. 官网下载 安装地址&#xff1a;https://nginx.org/en/download.html 打开浏览器输入网址 htt…...

一只企鹅如何改变世界

一、历史的转折点:一只企鹅如何改变世界 1991年,芬兰大学生Linus Torvalds在邮件列表中写道:“我正在做一个自由的操作系统(只是爱好,不会像GNU那样庞大专业)”。这个后来被称为Linux内核的项目,与GNU项目的结合,点燃了开源运动的燎原之火。 关键演化: 1996年:Tux企…...

linux进程的内存空间映射(段)

Linux进程的内存空间映射 在 Linux 中&#xff0c;每个进程的内存空间是一个虚拟地址空间&#xff0c;操作系统通过内存映射机制&#xff08;Memory Mapping&#xff09;将不同的内存区域分配给不同类型的资源和需求。内存空间映射决定了进程如何访问不同类型的内存&#xff0…...

前端导出word文件,并包含导出Echarts图表等

基础导出模板 const html <html><head><style>body {font-family: Times New Roman;}h1 {text-align: center;}table {border-collapse: collapse;width: 100%;color: #1118FF;font-weight: 600;}th,td {border: 1px solid black;padding: 8px;text-align: …...

武汉火影数字|VR大空间内容制作:开启沉浸式体验新时代

近年来&#xff0c;随着VR技术的飞速发展&#xff0c;VR大空间制作逐渐成为行业的热门话题。它突破传统VR的空间限制&#xff0c;为用户带来了更加自由、沉浸的体验。无论是娱乐、教育还是工业领域&#xff0c;VR大空间制作都在悄然改变我们的生活和工作方式。 什么是VR大空间制…...

【拥抱AI】GPT Researcher的诞生

一、GPT Researcher 研究过程总结 GPT Researcher 是一个开源的自主智能体&#xff0c;旨在通过利用人工智能技术实现高效、全面且客观的在线研究。它通过一系列创新的设计和优化&#xff0c;解决了传统研究工具&#xff08;如 AutoGPT&#xff09;中存在的问题&#xff0c;如…...

Mac端homebrew安装配置

拷打了一下午o3-mini-high&#xff0c;不如这位博主的超强帖子&#xff0c;10分钟结束战斗 跟随该文章即可&#xff0c;2025/2/19亲测可行 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客文章浏览阅读10w次&#xff0c;点赞258次&#xff0c;收藏837次。一直觉得自己写…...

第四篇:开源生态与蒸馏模型的价值

开篇:从单体模型到生态赋能 DeepSeek-R1 的发布不仅是一款推理模型的亮相,更是一个全新生态的起点。在前三篇中,我们剖析了 R1 的诞生背景、技术核心和性能实力,但它的意义远不止于此。2024 年末,DeepSeek 团队不仅开源了 R1-Zero 和 R1 的完整权重,还推出了基于 Qwen 和…...

C语言——深入理解指针(3)

文章目录 字符指针变量数组指针变量数组指针变量是什么&#xff1f;数组指针变量怎么初始化 二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用两段关于函数的有趣代码typedef关键字 函数指针数组转移表第一种写法&#xff1a;第二种写法&#xff08;函数指…...

CentOS 7 企业级Redis 7部署指南

CentOS 7 企业级Redis 7部署指南 目录导航 一、环境准备 1.1 依赖管理 二、离线安装 2.1 源码编译安装2.2 目录结构规范 三、生产配置 3.1 主配置文件3.2 配置生成脚本 四、系统集成 4.1 Systemd服务文件4.2 服务管理命令 五、安全加固 5.1 网络安全配置5.2 审计配置 六、性能…...

Linux-C/C++《C++/1、C++基础》(C++语言特性、面向对象等)

这里主要介绍概念为主&#xff0c;主要介绍 C与 C 语言中常用的不同点&#xff0c;和一些新的变化。其中不会去说指针、数据类型、变量类型、判断和循环等这些知识&#xff0c;这些和C 语言基本是一样使用的。我们主要学习 C的面向对象编程&#xff0c;对学习 Qt 有很大的帮助。…...

Java-11

淘天集团2025届春季校园招聘在线笔试-研发 1。设有一个顺序共享栈storageArray[70]&#xff0c;其中栈X的栈顶指针top1的初值为-1&#xff0c;栈Y的栈顶指针top2的初值为70&#xff0c;通过不断进行入栈操作&#xff0c;直到storageArray数组已满&#xff0c;此时top1 top2 …...

第4章 信息系统架构(四)

4.6 网络架构 网络是信息技术架构中的基础&#xff0c;不仅是用户请求和获取IT信息资源服务的通道&#xff0c;同时也是 信息系统架构中各类资源融合和调度的枢纽。特别是云计算、大数据和移动互联网技术飞速发 展的今天&#xff0c;网络更加成为实现这些技术跨越的重要环节。…...

用C++ Qt实现安卓电池充电动效 | 打造工业级电量控件

一、为什么需要自定义电池控件&#xff1f; 在工业控制、车机系统、智能硬件等领域的UI开发中&#xff0c;电池状态显示是高频出现的UI组件。通过实现一个支持颜色渐变、动态充电动画、警戒阈值提示的电池控件&#xff0c;开发者可以系统掌握以下核心能力&#xff1a; Qt绘图…...

【第二节】C++设计模式(创建型模式)-抽象工厂模式

目录 引言 一、抽象工厂模式概述 二、抽象工厂模式的应用 三、抽象工厂模式的适用场景 四、抽象工厂模式的优缺点 五、总结 引言 抽象工厂设计模式是一种创建型设计模式&#xff0c;旨在解决一系列相互依赖对象的创建问题。它与工厂方法模式密切相关&#xff0c;但在应用…...

自用题库---面试使用

1、css中如何实现水平垂直居中 方法一&#xff1a;flex&#xff1a; display: flex; justify-content: center; align-item: center;方法二&#xff1a;绝对定位margin:auto: position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin:auto;方法三&#xff1a;已…...

【Mysql】我在广州学Mysql 系列—— 有关日志管理的示例

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天星期四了&#xff0c;明天周五&#xff0c;美好的周末又要到了&#xff01;&#xff01;&#x1f606; 本文是对MySQL日志管理内容进行练习&#xff0c;后续将添加更多相关知识噢&#xff0c;谢谢各位的支持&#x1f64f; 复习…...

dify如何升级到0.15.3(目前最新版本)

Docker Compose 部署 警告 docker-legacy 目录中的文件将很快停止维护&#xff0c;并将从存储库中删除。如果您仍在使用它们&#xff0c;请尽快切换到新版本。 备份自定义的 docker-compose YAML 文件&#xff08;可选&#xff09; cd docker cp docker-compose.yaml docker-c…...

UNIAPP开发之利用阿里RTC服务实现音视频通话后端THINKPHP5

下面是一个使用ThinkPHP 5实现后端逻辑的示例。我们将创建一个简单的ThinkPHP 5项目来处理生成推流和播流地址的请求。 后端部分&#xff08;ThinkPHP 5&#xff09; 1. 初始化ThinkPHP 5项目 首先&#xff0c;确保你已经安装了Composer。然后使用Composer创建一个新的Think…...

使用JWT实现微服务鉴权

目录 一、微服务鉴权 1、思路分析 2、系统微服务签发token 3、网关过滤器验证token 4、测试鉴权功能 前言&#xff1a; 随着微服务架构的广泛应用&#xff0c;服务间的鉴权与安全通信成为系统设计的核心挑战之一。传统的集中式会话管理在分布式场景下面临性能瓶颈和扩展性…...

基于WOA鲸鱼优化的WSN网络最优节点部署算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 鲸鱼优化算法&#xff08;WOA&#xff09;是一种模拟座头鲸捕食行为的元启发式优化算法。其主要原理基于座头鲸独特的 “气泡网” 捕食策略&#xff0c;通过数学模…...

TikTok账户安全指南:如何取消两步验证?

TikTok账户安全指南&#xff1a;如何取消两步验证&#xff1f; 在这个数字化的时代&#xff0c;保护我们的在线账户安全变得尤为重要。TikTok&#xff0c;作为全球流行的社交媒体平台&#xff0c;其账户安全更是不容忽视。两步验证作为一种增强账户安全性的措施&#xff0c;虽…...

将 Type Code 替换为 State/Strategy 模式

Replace Type Code with State/Strategy 要将 Type Code 替换为 State/Strategy 模式&#xff0c;你的目的是通过将行为分离到独立的类中来消除使用类型代码&#xff08;如整数、字符串或枚举类型&#xff09;来决定行为的需要。这种做法能够让系统变得更加灵活和易于维护。 …...

c#爬取数据并解析json

安装 Newtonsoft.Json Install-Package Newtonsoft.Json代码 HttpClient client new HttpClient();// 获取网页内容HttpResponseMessage response client.GetAsync("https://opentdb.com/api.php?amount10&category18&difficultyeasy&typemultiple"…...

Spring Boot 内置工具类

ObjectUtils // 获取对象的类名。参数为 null 时&#xff0c;返回字符串&#xff1a;"null" String nullSafeClassName(Object obj) // 参数为 null 时&#xff0c;返回 0 int nullSafeHashCode(Object object) // 参数为 null 时&#xff0c;返回字符串&#xff1…...

蓝桥杯15 填空题

1.握手问题&#xff1a; 思路&#xff1a;首先当所有人都握过手&#xff0c;由于一次握手相当于两个人都握手过&#xff0c;所以容易发现这是一个组合问题&#xff0c;为&#xff08;50*49&#xff09;/2&#xff0c;而其中有7个人没有相互握过手&#xff0c;那么减去&#xff…...

分布式光纤声波振动技术在钻井泄漏检测中的应用

在石油天然气的钻井作业中&#xff0c;及时发现并定位泄漏点对于保障开采安全、降低环境污染以及避免经济损失至关重要。传统的泄漏检测方法往往存在局限性&#xff0c;而分布式光纤声波振动技术凭借其独特的优势&#xff0c;正逐渐成为钻井过程中寻找泄漏的有力工具。 技术原理…...

0081.基于springboot+uni-app的垃圾分类小程序+论文

一、系统说明 基于springbootuni-app的垃圾分类小程序,系统功能齐全, 代码简洁易懂&#xff0c;适合小白学编程。 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本…...