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

《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)

在这里插入图片描述

文章目录

  • 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀
    • 9.1.1 基础知识
    • 9.1.2 重点案例:使用 Python 和 MQTT 实现智能家居照明系统
      • 准备工作
      • Python 脚本示例
        • 发布者(灯光控制)
        • 订阅者(灯光状态接收):
    • 9.1.3 拓展案例1:使用 Python 和 CoAP 实现温度监控
      • 准备工作
      • Python 脚本示例
        • CoAP 客户端
        • CoAP 服务器
    • 9.1.4 拓展案例2:利用 Python 和 HTTP/HTTPS 协议集成天气服务
  • 9.2 IoT 安全挑战 - 导航在网络安全的海洋
    • 9.2.1 基础知识
    • 9.2.2 重点案例:使用 Python 实现 MQTT 消息加密
      • 准备工作
      • Python 脚本示例
        • 加密发布者:
        • 解密订阅者:
    • 9.2.3 拓展案例1:使用 Python 实现设备身份验证
      • Python 脚本示例:使用 SSL/TLS 的 MQTT 客户端
    • 9.2.4 拓展案例2:自动化固件更新
      • Python 脚本示例
        • 下载并验证固件包
  • 9.3 IoT 案例研究 - 智能科技的实践场
    • 9.3.1 基础知识
    • 9.3.2 重点案例:智能农业监控系统
      • 准备工作
      • Python 脚本示例
        • 数据收集和传输:
        • 数据处理和决策:
    • 9.3.3 拓展案例1:智能家居安全系统
      • Python 脚本示例 - 数据发送端(模拟传感器)
    • 9.3.4 拓展案例2:远程健康监测系统
      • Python 脚本示例 - 数据发送端(模拟健康监测设备)

9.1 IoT 架构与通信协议 - 打造智能世界的秘诀

物联网(IoT)正在以其独特的方式改变我们的世界,从智能家居到工业自动化,IoT 设备的普及为日常生活和工作带来了前所未有的便利。要理解 IoT 的魔力,首先需要掌握其基础架构和通信协议。

9.1.1 基础知识

  • IoT 架构:通常分为三层:感知层(负责收集数据)、网络层(负责数据传输)和应用层(负责数据处理和展示)。这种分层架构确保了 IoT 系统的灵活性和可扩展性。
  • 通信协议:IoT 设备之间的有效通信依赖于各种协议,包括但不限于:
    • MQTT(消息队列遥测传输):轻量级的发布/订阅网络协议,适用于带宽受限环境。
    • CoAP(受限应用协议):专为小型物联网设备设计的协议,支持 RESTful API。
    • HTTP/HTTPS:虽然不如 MQTT 和 CoAP 轻量,但在互联网应用中广泛使用。

9.1.2 重点案例:使用 Python 和 MQTT 实现智能家居照明系统

在这个案例中,我们将使用 MQTT 协议和 Python 来构建一个简单的智能家居照明控制系统。

准备工作

  1. 安装 Paho-MQTT 客户端库:

    pip install paho-mqtt
    
  2. 准备一个 MQTT 代理/服务器地址(例如使用 Mosquitto 或云MQTT服务)。

Python 脚本示例

发布者(灯光控制)
import paho.mqtt.client as mqttmqtt_broker = "your_mqtt_broker_address"
topic = "home/lighting"def on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))client = mqtt.Client()
client.on_connect = on_connectclient.connect(mqtt_broker, 1883, 60)
client.loop_start()# 发送开灯命令
client.publish(topic, "ON")
print("Light ON command sent.")# 关灯命令可通过发送 "OFF" 来实现
# client.publish(topic, "OFF")
订阅者(灯光状态接收):
import paho.mqtt.client as mqttmqtt_broker = "your_mqtt_broker_address"
topic = "home/lighting"def on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))client.subscribe(topic)def on_message(client, userdata, msg):print(f"Lighting Control Message: {msg.payload.decode()}")client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_messageclient.connect(mqtt_broker, 1883, 60)
client.loop_forever()

9.1.3 拓展案例1:使用 Python 和 CoAP 实现温度监控

由于实现这个案例需要特定的 CoAP 库和环境配置,这里仅概述实现思路:使用 CoAP 协议和 Python,可以创建一个简易的温度监控系统,该系统定期从温度传感器读取数据,并通过 CoAP 发送到中央监控系统。

由于CoAP(受限应用协议)是专为物联网(IoT)设备设计的轻量级协议,它支持简单的请求/响应模型,类似于HTTP,但是针对低功耗和低带宽环境进行了优化。在Python中使用CoAP通常需要专门的库。一个常用的库是aiocoap,它是基于Python的异步I/O(asyncio)。

准备工作

首先,确保安装了aiocoap库。如果未安装,可以通过以下命令安装:

pip install aiocoap

Python 脚本示例

CoAP 客户端

以下是使用aiocoap库的CoAP客户端示例,用于发送请求到CoAP服务器并接收响应。这个例子假设你有一个运行CoAP服务的服务器,可以处理GET请求。

import asyncio
from aiocoap import *async def main():protocol = await Context.create_client_context()request = Message(code=GET, uri='coap://[服务器地址]/[资源路径]')try:response = await protocol.request(request).responseexcept Exception as e:print('Failed to fetch resource:')print(e)else:print('Result: %s\n%r'%(response.code, response.payload))if __name__ == "__main__":asyncio.get_event_loop().run_until_complete(main())

请将[服务器地址][资源路径]替换成实际的值。这个脚本将发送一个GET请求到指定的CoAP服务器和资源路径,然后输出响应的状态码和负载。

CoAP 服务器

为了完整性,这里也提供一个简单的CoAP服务器示例,它可以响应上述客户端的请求:

import asyncio
from aiocoap import *class CoAPServerResource(Resource):async def render_get(self, request):return Message(payload=b"Hello, CoAP!")async def main():# 创建CoAP服务器root = ResourceSite()root.add_resource(['your', 'resource', 'path'], CoAPServerResource())await Context.create_server_context(root)if __name__ == "__main__":asyncio.get_event_loop().run_until_complete(main())

这个服务器脚本创建了一个简单的CoAP服务器,它在特定的资源路径上监听GET请求,并返回一个简单的文本响应。请将['your', 'resource', 'path']替换为你希望服务器监听的路径。

通过这个拓展案例1的CoAP客户端和服务器示例,我们可以看到如何在Python中使用aiocoap库来实现CoAP通信,这对于开发物联网应用尤其重要,特别是在资源受限的环境中。

9.1.4 拓展案例2:利用 Python 和 HTTP/HTTPS 协议集成天气服务

通过 HTTP/HTTPS 协议,可以轻松地将第三方天气服务(如 OpenWeatherMap)集成到 IoT 应用中,为用户提供实时天气信息。

import requestsdef get_weather(api_key, city):url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}"response = requests.get(url)weather_data = response.json()print(weather_data)api_key = "your_api_key"
city = "Beijing"
get_weather(api_key, city)

通过这些案例,我们可以看到 IoT 架构和通信协议在实现智能设备互联和数据交互中的重要作用。无论是通过 MQTT 实现的轻量级消息传递,还是通过 CoAP 和 HTTP/HTTPS 实现的资源访问,Python 都为 IoT 设备提供了强大的编程支持,使得构建复杂的 IoT 应用变得简单和可行。

在这里插入图片描述


9.2 IoT 安全挑战 - 导航在网络安全的海洋

物联网(IoT)带来了无限的可能性,但同时也引入了许多安全挑战。从智能家居设备到工业传感器,IoT 设备往往是安全攻击的目标,因为它们可能缺乏足够的安全防护措施。让我们深入了解 IoT 安全的基础知识,并通过一些案例学习如何使用 Python 来增强 IoT 设备的安全性。

9.2.1 基础知识

  • 设备身份验证:确保只有授权的设备能够连接到 IoT 网络。
  • 数据加密:对传输和存储的数据进行加密,保护数据不被未授权访问或篡改。
  • 固件更新:定期更新设备固件,修补已知的安全漏洞。
  • 安全通信协议:使用安全的通信协议,如 TLS/SSL,来保护数据传输过程中的安全。
  • 访问控制:限制对设备和数据的访问,确保只有授权用户才能访问重要资源。

9.2.2 重点案例:使用 Python 实现 MQTT 消息加密

在这个案例中,我们将使用 Python 和 paho-mqtt 库来实现 MQTT 消息的加密,以保护 IoT 设备间的通信安全。

准备工作

  1. 安装 paho-mqttcryptography 库:

    pip install paho-mqtt cryptography
    

Python 脚本示例

加密发布者:
from cryptography.fernet import Fernet
import paho.mqtt.client as mqtt# 生成一个密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)mqtt_broker = "your_mqtt_broker_address"
topic = "secure/home/lighting"def on_connect(client, userdata, flags, rc):print(f"Connected with result code {rc}")client = mqtt.Client()
client.on_connect = on_connectclient.connect(mqtt_broker, 1883, 60)
client.loop_start()# 加密消息
message = cipher_suite.encrypt(b"Turn on the light")
client.publish(topic, message)
print("Encrypted message sent.")
解密订阅者:
from cryptography.fernet import Fernet
import paho.mqtt.client as mqttkey = b'your_generated_key_here'
cipher_suite = Fernet(key)mqtt_broker = "your_mqtt_broker_address"
topic = "secure/home/lighting"def on_connect(client, userdata, flags, rc):print(f"Connected with result code {rc}")client.subscribe(topic)def on_message(client, userdata, msg):decrypted_message = cipher_suite.decrypt(msg.payload)print(f"Decrypted message: {decrypted_message}")client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_messageclient.connect(mqtt_broker, 1883, 60)
client.loop_forever()

请将 "your_mqtt_broker_address" 替换为你的 MQTT 代理地址,并确保 "your_generated_key_here" 与发布者使用的密钥相同。

9.2.3 拓展案例1:使用 Python 实现设备身份验证

考虑到篇幅限制,这里简要介绍如何使用 Python 进行基于证书的设备身份验证的概念。在实际应用中,你可以使用 ssl 模块为 MQTT 客户端和服务器之间的连接添加 TLS 支持,从而实现加密通信和设备身份验证。

由于拓展案例提到的概念通常涉及特定环境或框架的复杂配置,直接实施可能超出简单脚本能够覆盖的范围。但我会尽力提供一些概念性的代码示例,以给出一个大概的实现方向。

Python 脚本示例:使用 SSL/TLS 的 MQTT 客户端

对于基于证书的设备身份验证,以下是一个概念性的 Python 示例,展示如何使用 ssl 模块为 MQTT 客户端添加 TLS 支持,实现设备的身份验证。

import paho.mqtt.client as mqtt
import sslmqtt_broker = "your_mqtt_broker_address"
port = 8883  # 通常用于MQTT over SSL的端口
ca_certs = "/path/to/ca_certificate.pem"  # CA证书路径
certfile = "/path/to/client_certificate.pem"  # 客户端证书路径
keyfile = "/path/to/client_key.pem"  # 客户端私钥路径def on_connect(client, userdata, flags, rc):if rc == 0:print("Connected successfully.")else:print(f"Connect failed with error code {rc}")client = mqtt.Client()
client.tls_set(ca_certs, certfile=certfile, keyfile=keyfile, cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2)
client.tls_insecure_set(False)  # 在生产环境中应设置为False
client.on_connect = on_connectclient.connect(mqtt_broker, port, 60)
client.loop_forever()

请替换 mqtt_brokerca_certscertfilekeyfile 的值为你的实际配置。这个脚本创建了一个使用 TLS 加密的 MQTT 客户端,并通过 CA 证书验证 MQTT 服务器的身份,同时使用客户端证书进行自身的身份验证。

9.2.4 拓展案例2:自动化固件更新

通过 Python 脚本自动化固件更新流程,可以有效地减少设备受到已知安全漏洞攻击的风险。这通常涉及到从安全的服务器下载签名的固件更新包,并在设备上进行验证和安装。

Python 脚本示例

由于涉及到设备特定的操作,这里只简单提供代码示例。自动化固件更新通常涉及到从服务器下载固件包、验证签名以及在设备上安装固件的过程。以下是一个概念性的 Python 脚本示例,展示了如何下载并验证固件包的数字签名。

下载并验证固件包
import requests
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import paddingfirmware_url = "https://example.com/firmware/update.bin"
public_key_url = "https://example.com/public_key.pem"
signature_url = "https://example.com/firmware/signature.sig"# 下载固件包
firmware_response = requests.get(firmware_url)
firmware_data = firmware_response.content# 下载公钥
public_key_response = requests.get(public_key_url)
public_key = serialization.load_pem_public_key(public_key_response.content,backend=default_backend()
)# 下载签名
signature_response = requests.get(signature_url)
signature = signature_response.content# 验证签名
try:public_key.verify(signature,firmware_data,padding.PSS(mgf=padding.MGF1(hashes.SHA256()),salt_length=padding.PSS.MAX_LENGTH),hashes.SHA256())print("Firmware signature is valid.")
except Exception as e:print("Firmware signature is invalid.", e)

这个脚本首先从指定的 URL 下载固件包、公钥和签名文件。然后,使用下载的公钥验证固件包的签名。这确保了固件包的真实性和完整性,是自动化固件更新过程中的关键安全步骤。

以上示例仅提供了概念性的代码框架,具体实现将需要根据实际的环境和需求进行调整。

通过这些案例,我们可以看到,增强 IoT 设备的安全性需要综合考虑多个方面,包括加密通信、设备身份验证和及时的固件更新等。使用 Python 为 IoT 设备和应用实现安全措施,不仅可以保护数据的安全和隐私,还可以增强整个 IoT 系统的可靠性。

在这里插入图片描述


9.3 IoT 案例研究 - 智能科技的实践场

物联网(IoT)的兴起,为各行各业带来了革命性的变化。通过将传感器、设备和人连接起来,IoT 解锁了大量的新应用场景,从而极大地提高了效率、安全性和用户体验。让我们深入探讨几个具体的 IoT 应用案例,了解它们是如何在现实世界中发挥作用的。

9.3.1 基础知识

  • 数据收集:IoT 设备通过传感器收集各种数据,如温度、湿度、位置等。
  • 数据通信:收集的数据通过网络传输到服务器或云平台,使用各种通信协议如 MQTT、CoAP 等。
  • 数据处理和分析:通过软件应用对数据进行处理和分析,提取有价值的信息。
  • 智能决策和控制:基于分析结果,自动或人工做出决策,并控制 IoT 设备执行特定任务。

9.3.2 重点案例:智能农业监控系统

在这个案例中,我们将构建一个简单的智能农业监控系统,使用 Python 收集温度和湿度数据,并基于这些数据自动控制灌溉系统。

准备工作

  1. 安装必要的 Python 库:paho-mqtt用于 MQTT 通信。

    pip install paho-mqtt
    

Python 脚本示例

数据收集和传输:

假设温度和湿度传感器数据通过 MQTT 发布:

import paho.mqtt.publish as publishmqtt_broker = "your_mqtt_broker_address"
topic = "farm/sensor/data"# 假设的温度和湿度值
temperature = 25.5  # 摄氏度
humidity = 60  # 百分比# 发布传感器数据
publish.single(topic, f"temperature:{temperature},humidity:{humidity}", hostname=mqtt_broker)
print("Sensor data published.")
数据处理和决策:

这部分通常在服务器或云端进行,这里简化为一个接收 MQTT 消息并做出决策的脚本:

import paho.mqtt.client as mqttdef on_connect(client, userdata, flags, rc):print("Connected with result code "+str(rc))client.subscribe("farm/sensor/data")def on_message(client, userdata, msg):print(f"Received data: {msg.payload.decode()}")# 简化的决策逻辑:如果温度高于24度且湿度低于65%,则启动灌溉temperature, humidity = map(float, msg.payload.decode().split(',')[0].split(':')[1]), float(msg.payload.decode().split(',')[1].split(':')[1])if temperature > 24 and humidity < 65:print("Activating irrigation system...")# 这里可以添加控制灌溉系统的代码client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_messageclient.connect("your_mqtt_broker_address", 1883, 60)
client.loop_forever()

9.3.3 拓展案例1:智能家居安全系统

利用 IoT 设备和传感器监测家庭安全,如门窗状态、烟雾报警等,并通过手机应用实时接收通知。

由于直接实现完整的拓展案例可能需要复杂的设备配置和较长的代码,我将提供概念性的 Python 代码示例,展示如何使用 Python 进行数据收集、发送和简单处理,以概括拓展案例的实现思路。

假设我们有一个智能家居安全系统,它包括门窗传感器和烟雾探测器。当门窗被非法打开或检测到烟雾时,系统将通过 MQTT 协议发送警报信息。

Python 脚本示例 - 数据发送端(模拟传感器)

import paho.mqtt.publish as publishmqtt_broker = "your_mqtt_broker_address"
topics = ["home/security/door", "home/security/smoke"]# 模拟传感器触发
door_open = True
smoke_detected = Falseif door_open:publish.single(topics[0], "Door opened", hostname=mqtt_broker)print("Door opened alert sent.")if smoke_detected:publish.single(topics[1], "Smoke detected", hostname=mqtt_broker)print("Smoke alert sent.")

9.3.4 拓展案例2:远程健康监测系统

通过穿戴设备收集健康数据(如心率、血压等),并将数据发送到医疗中心,医生可以实时监控患者的健康状况。

假设我们有一个远程健康监测系统,它包括心率和血压监测。这些数据将定期收集并发送到医疗中心进行监控。

Python 脚本示例 - 数据发送端(模拟健康监测设备)

import paho.mqtt.publish as publishmqtt_broker = "your_mqtt_broker_address"
topic = "health/monitoring"# 模拟监测数据
heart_rate = 75  # bpm
blood_pressure = "120/80"  # 假设的血压值message = f"Heart Rate: {heart_rate}, Blood Pressure: {blood_pressure}"publish.single(topic, message, hostname=mqtt_broker)
print("Health data sent.")

在这两个拓展案例中,我们模拟了传感器/设备端通过 MQTT 协议发送数据的过程。在实际应用中,数据接收端(如智能家居的中央控制系统或医疗中心的服务器)将需要实现相应的 MQTT 客户端来订阅主题并处理收到的消息,如触发警报、通知医生等。

请注意,为了简化示例,这里没有展示数据接收和处理的代码。在实际部署时,你需要结合具体的业务逻辑和需求,设计和实现数据的接收、处理和响应机制。

由于篇幅限制,这里不提供拓展案例的具体代码实现。然而,实现这些案例的基本思路与主案例相似:收集数据、通过网络发送数据、在服务器或云端处理数据,并根据数据做出智能决策。使用 Python 和适当的通信协议,我们可以轻松地构建起这样一个系统的原型,无论是在智能农业、智能家居安全,还是远程健康监测方面。

相关文章:

《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)

文章目录 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 和 MQTT 实现智能家居照明系统准备工作Python 脚本示例发布者&#xff08;灯光控制&#xff09;订阅者&#xff08;灯光状态接收&#xff09;&#xff1a; 9.1.3 拓…...

开源博客项目Blog .NET Core源码学习(8:EasyCaching使用浅析)

开源博客项目Blog使用EasyCaching模块实现缓存功能&#xff0c;主要是在App.Framwork项目中引用了多类包&#xff0c;包括内存缓存&#xff08;EasyCaching.InMemory&#xff09;、Redis缓存&#xff08;EasyCaching.CSRedis&#xff09;&#xff0c;同时支持多种序列化方式&am…...

windows下docker的使用

目录 1&#xff1a;docker是什么&#xff0c;能干什么&#xff1f; 2&#xff1a;docker下初始化一个容器 1&#xff1a;工具支持 2&#xff1a;运行装载docker镜像 a&#xff1a;在docker toolbox底下有个start.sh&#xff0c;我们进去里面修改里面路径配置&#xff1a; …...

C语言——R/预处理详解

一、预定义符号 C语⾔设置了⼀些预定义符号&#xff0c;可以直接使⽤&#xff0c;预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循ANSI C&a…...

Unity_PackageManager缺失

Unity_PackageManager缺失 Unity早期版本不带PakageManager&#xff0c;或是人为因素造成PakageManager缺失。 关闭Unity工程&#xff0c;在项目文件下Packages文件夹里打开manifest.json&#xff0c;修改添加一行&#xff1a; "com.unity.package-manager-ui": &q…...

Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2

1. 使用入口 DistributedOptimizer类定义在megatron/optimizer/distrib_optimizer.py文件中。创建的入口是在megatron/optimizer/__init__.py文件中的get_megatron_optimizer函数中。根据传入的args.use_distributed_optimizer参数来判断是用DistributedOptimizer还是Float16O…...

[SWPUCTF 2021 新生赛]ez_unserialize

根据下面的user_agent和Disallow可以判断这个是在robots.txt 我们看的出来这是一个反序列化需要我们adminadmin passwdctf construct 构造方法&#xff0c;当一个对象被创建时调用此方法&#xff0c;不过unserialize()时却不会被调用 destruct 析构方法&#xff0c;PHP将在对象…...

android tv开发-1,leanback 2

目录 presenter太多,如何理清关系 动画与点击 tv的登录与设置 搜索功能 带二级菜单的页面 presenter太多,如何理清关系 leanback里面已经定义好了adapter与presenter,直接继承它就可以了 private DefaultObjectAdapter mVideoAdapter; private VideoCardPresenter mCardP…...

Spring Boot注解

Spring Boot提供了许多常用的注解&#xff0c;用于简化开发过程和配置管理。以下是一些常用的Spring Boot注解&#xff1a; SpringBootApplication: 标记一个类为Spring Boot应用程序的入口点&#xff0c;同时也是一个组合注解&#xff0c;包括了Configuration、EnableAutoConf…...

JavaWeb中的Filter(过滤器)和 Listener(监听器)

提示&#xff1a;这两个东西听起来似乎很难&#xff0c;实际上是非常简单的&#xff0c;按照要求写就行了&#xff0c;一定不要被新名词给吓到了。 JavaWeb中的Filter&#xff08;过滤器&#xff09; 一、Filter&#xff08;过滤器&#xff09;1.如何编写 Filter2.Filter 中的细…...

mybatis查询修改mysql的json字段

前言&#xff1a; mysql5.7版本之后支持json字段类型&#xff0c;推荐mysql8版本&#xff0c;适用于属性不确定的个性化字段&#xff0c;比如: 身份信息{“职业”,“学生”,“兴趣”:“打乒乓球”,“特长”:“跳高&#xff0c;书法”}; 图片信息{“日期”:“2023-12-12 22:12”…...

实时聊天系统

这个系统可以用于网站的即时通讯&#xff0c;比如客服系统、在线社区等。这个功能不仅对用户友好&#xff0c;而且也是检验技术实现能力的一个很好的案例。 ### 功能概述 该系统允许用户在网站上实时发送和接收消息。为了保持实时性&#xff0c;我们将使用PHP进行服务器端的逻…...

Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP

1. 问题描述 Spring-mvc和Spring-boot中aop可以实现代理的功能&#xff0c;我们可以借此实现事务和日志记录或者限流等多种操作。但是&#xff0c;如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。 2. 原因 AIOP的本质是…...

幻兽帕鲁服务器自动重启备份-python

幻兽帕鲁服务器自动重启备份-python 1. 前置知识点2. 目录结构3. 代码内容4. 原理解释5. 额外备注 基于python编写的服务器全自动管理工具&#xff0c;能够实现自动定时备份存档&#xff0c;以及在检测到服务器崩溃之后自动重新启动&#xff0c;并且整合了对于frp端口转发工具的…...

C# Onnx yolov8 水表读数检测

目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-01-31T10:18:10.141465 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…...

负载均衡下webshell连接

目录 一、什么是负载均衡 分类 负载均衡算法 分类介绍 分类 均衡技术 主要应用 安装docker-compose 2.1上传的文件丢失 2.2 命令执行时的漂移 2.3 大工具投放失败 2.4 内网穿透工具失效 3.一些解决方案 总结 一、什么是负载均衡 负载均衡&#xff08;Load Balanc…...

Spring面试大全-基础知识01

1.什么是Spring Spring框架是用于构建企业级Java的开源框架&#xff0c;他通过依赖注入和IOC容器帮我我们管理对象&#xff1b;支持AOP&#xff0c;将非业务功能&#xff08;日志&#xff0c;事务等&#xff09;从我们业务代码中分离出来&#xff0c;提高了代码的可维护性&…...

Transformer实战-系列教程4:Vision Transformer 源码解读2

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 4、Embbeding类 self.embeddings Embeddings(config, img_sizeimg_size) class Embeddings(nn.…...

cesium-水平测距

cesium测量两点间的距离 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><el-breadcrumb-item&…...

【Android-Compose】手势检测实现按下、单击、双击、长按事件,以及避免频繁单击事件的简单方法

目录&#xff1a; 1 不需要双击事件 规避频繁单击事件2 需要双击事件&#xff08;常规写法&#xff09;3 后记&#xff1a;不建议使用上面的代码自定义按钮 1 不需要双击事件 规避频繁单击事件 var firstClickTime by remember { mutableStateOf(System.currentTimeMillis()…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...