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

机器学习05-CNN

CNN(卷积神经网络)学习文档

一、引言

卷积神经网络(Convolutional Neural Network,CNN)是深度学习中的一种重要网络结构,在图像识别、计算机视觉等领域取得了巨大成功。CNN 的设计灵感来源于生物视觉系统的研究,通过构建多层神经网络,能够自动学习图像中的特征层次结构,从而实现高效的图像分类、目标检测等任务。

二、CNN 的基本结构

  1. 卷积层

    • 卷积层是 CNN 的核心组成部分,其主要功能是对输入图像进行卷积操作,提取图像中的局部特征。卷积操作通过一组可学习的卷积核(filter)与输入图像的局部区域进行逐元素相乘并求和,得到卷积后的特征图(feature map)。卷积核的大小、数量以及步长(stride)等参数决定了卷积层的输出特征图的大小和数量。
    • 例如,假设输入图像大小为 28×28,卷积核大小为 3×3,步长为 1,且不进行填充(padding),则输出特征图的大小为(28 - 3 + 1)×(28 - 3 + 1)=26×26。若使用多个卷积核,每个卷积核对应一个特征图,则输出特征图的数量等于卷积核的数量。
  2. 激活层

    • 激活层通常紧接在卷积层之后,用于引入非线性因素,使网络能够学习更复杂的特征表示。常见的激活函数包括 ReLU(Rectified Linear Unit)、Sigmoid 和 Tanh 等。
    • ReLU 函数因其计算简单、训练速度快且能有效缓解梯度消失问题而被广泛应用,其数学表达式为 f(x)=max(0,x)。当输入 x 大于 0 时,输出为 x;否则输出为 0。
  3. 池化层

    • 池化层的主要作用是对卷积层提取的特征进行降采样,降低特征图的尺寸,从而减少计算量和参数数量,同时提高模型对图像的平移、缩放和旋转等变化的不变性。
    • 常见的池化方法有最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化是取池化窗口内的最大值作为输出,而平均池化则是取池化窗口内的平均值。例如,使用 2×2 的池化窗口,步长为 2,对大小为 4×4 的特征图进行最大池化后,输出特征图的大小将变为 2×2。
  4. 全连接层

    • 全连接层位于 CNN 的末端,通常用于将前面卷积层和池化层提取到的特征进行整合,并输出最终的分类结果。全连接层中的每个神经元与前一层的所有神经元相连,通过学习权重矩阵和偏置项,将输入特征映射到输出类别空间。
    • 例如,在一个图像分类任务中,若输入图像有 10 个类别,则全连接层的输出节点数为 10,每个节点对应一个类别的概率值,通常使用 softmax 函数对输出进行归一化处理,使其表示为概率分布。

三、CNN 的训练过程

  1. 前向传播

    • 前向传播是将输入图像依次通过 CNN 的各个层,计算每一层的输出特征图或向量,直到得到最终的输出结果。在这个过程中,卷积层的卷积核参数、全连接层的权重和偏置等网络参数是预先初始化的,并在训练过程中不断更新优化。
  2. 损失函数计算

    • 损失函数用于衡量模型预测结果与真实标签之间的差异,常见的损失函数有交叉熵损失(Cross-Entropy Loss)、均方误差损失(Mean Squared Error Loss)等。在分类任务中,交叉熵损失函数常被用来衡量预测概率分布与真实标签分布之间的差异,其表达式为:
      • L=-1/N∑(yi log yi+(1-yi)log(1-yi))
      • 其中,N 为样本数量,yi 为真实标签,yi^ 为模型预测的概率值。
  3. 反向传播与参数更新

    • 反向传播算法是 CNN 训练的核心,它通过计算损失函数对网络参数的梯度,利用梯度下降法来更新网络参数,从而最小化损失函数。具体来说,从输出层开始,逐层向前计算梯度,并根据学习率调整网络参数。例如,对于卷积层的卷积核参数 W,其更新公式为:
      • W=W-η∂L/∂W
      • 其中,η 为学习率,∂L/∂W 表示损失函数对卷积核参数的梯度。

四、CNN 的应用案例

  1. 图像分类

    • MNIST 手写数字识别是 CNN 在图像分类领域的经典应用之一。MNIST 数据集包含 60000 张训练图像和 10000 张测试图像,每张图像为 28×28 的灰度图像,对应 10 个数字类别(0-9)。通过构建一个简单的 CNN 模型,包括卷积层、激活层、池化层和全连接层,可以实现对 MNIST 手写数字的高效分类,准确率可达 99% 以上。
  2. 目标检测

    • 在目标检测任务中,CNN 可以用于提取图像中的目标特征,并结合区域 proposal 网络(Region Proposal Network,RPN)等技术,实现对图像中目标物体的定位和分类。例如,Faster R-CNN 是一种基于 CNN 的目标检测算法,它通过 RPN 生成候选区域,然后利用 CNN 提取候选区域的特征,并通过全连接层进行分类和回归,从而实现对图像中多个目标的检测和识别。

五、CNN 的优化与改进

  1. 深度可分离卷积

    • 深度可分离卷积是将标准卷积分解为深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)两步操作,从而减少计算量和参数数量。深度卷积是对每个输入通道单独进行卷积操作,而逐点卷积则是使用 1×1 的卷积核将深度卷积后的特征图进行组合,实现通道间的特征融合。例如,MobileNet 是一种基于深度可分离卷积的轻量级 CNN 架构,它在保证模型性能的同时,大大降低了计算复杂度,适用于移动设备和嵌入式系统。
  2. 残差网络(ResNet)

    • 残差网络通过引入残差连接(Residual Connection)来解决深层网络训练时的梯度消失和梯度爆炸问题。残差连接是将输入直接加到输出上,形成一个残差块,其表达式为:
      • F(x)+x
      • 其中,F(x) 表示残差块中的卷积操作和激活操作等。这种结构使得网络能够更容易地学习恒等映射,从而加深网络的深度,提高模型的性能。ResNet 在图像分类等任务中取得了显著的性能提升,例如,ResNet-50 模型在 ImageNet 数据集上的分类准确率达到了较高水平。

六、实验与代码演示

以下是基于 TensorFlow 框架实现一个简单的 CNN 模型对 MNIST 数据集进行分类的代码示例:

import tensorflow as tf
from tensorflow.keras import datasets, layers, models# 加载 MNIST 数据集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()# 对数据进行预处理
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255# 构建 CNN 模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(train_images, train_labels, epochs=5, validation_data=(test_images, test_labels))# 测试模型
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)

该代码首先加载 MNIST 数据集,并对数据进行预处理,将像素值归一化到 [0,1] 范围。然后构建一个包含三个卷积层、两个池化层和两个全连接层的 CNN 模型,使用 ReLU 激活函数和 softmax 分类器。通过编译模型并指定优化器、损失函数和评估指标,进行模型的训练和测试,输出测试集上的准确率。

七、总结与展望

CNN 在图像处理领域展现了强大的性能,但其应用也存在一些局限,如对数据量要求较高、模型结构复杂导致计算资源消耗大等。未来,随着硬件技术的不断发展和新算法的提出,如更高效的网络架构搜索方法、更精准的特征提取技术等,CNN 将在更多领域发挥更大的作用,为人工智能的发展提供更有力的支持。同时,研究人员也在探索如何将 CNN 与其他技术(如生成对抗网络、Transformer 等)相结合,以进一步提升模型的性能和泛化能力。

相关文章:

机器学习05-CNN

CNN(卷积神经网络)学习文档 一、引言 卷积神经网络(Convolutional Neural Network,CNN)是深度学习中的一种重要网络结构,在图像识别、计算机视觉等领域取得了巨大成功。CNN 的设计灵感来源于生物视觉系统…...

Java Web 之 Servlet 100问

Filter 是什么? 在Java Web开发中,Filter(过滤器)是一种用于在请求到达目标资源(如Servlet、JSP)之前或响应返回客户端之前进行预处理和后处理的组件。Filter可以拦截请求和响应,执行特定的操作…...

z-library电子图书馆最新地址的查询方法

对于喜欢读书的伙伴们,应该都听说过z站(z-library),优点多多,缺点就是地址不稳定,经常会变化网站地址。然后我最近发现了一个工具,可以不间断更新官方可用的z站地址:电子书最新地址...

PyCharm入门导览

一、项目视图 项目视图位置如下所示: 项目视图是主要工具窗口之一。它包含项目目录、SDK特定的外部库和临时文件。点击带条纹的按 钮可以预览演示项目。也可以按Alt 1 打开。 二、Python解释器 点击右下角项目的名字,可以快速进入【Python解释器】界面…...

算法题(127):最大子段和

审题: 本题需要我们找到n个整数中连续且非空的最大子段和 思路: 方法一:前缀和 我们的思路是将每个索引位置的最大子段和求出,然后用answer进行max维护,最后输出answer即可 最大子段和怎么求? 子段和 f[i]…...

物联网分层架构全解析:从感知到应用的智能生态构建

物联网分层架构一般可细分为感知层、网络层、平台层和应用层,以下是各层更详细的介绍: 一、感知层 1.功能 数据采集:利用各类传感器对物理世界的各种信息进行采集,包括环境参数(如温度、湿度、光照、气压等&#xf…...

系统架构师2025年论文通用模板

搭建自己的模板 1、项目选择与实施建议整理 ‌一、项目选择标准‌ ‌金额与周期要求‌:优先选择金额在 ‌200万以上‌ 的中大型商业项目,研发周期建议 ‌不少于8个月‌‌。避免选择小型项目(如金额低于100万、周期短于1年)‌。 …...

Flink 2.0 编译

文章目录 Flink 2.0 编译第一个问题 java 版本太低maven 版本太低maven 版本太高开始编译扩展多版本jdk 配置 Flink 2.0 编译 看到Flink2.0 出来了,想去玩玩,看看怎么样,当然第一件事,就是编译代码,但是没想到这么多问…...

Java线程的几种状态

线程状态我们在此介绍六种线程状态 1.NEW 2.RUNNABLE 3.TIMED_WAITING 4.BLOCKED 5.WAITING 6.TERMINATED 1.初始状态 (NEW) 当一个线程对象被创建但尚未调用 start() 方法时,线程处于初始状态。此时,线程还没有开始执行。 通俗的讲就是安排了工作但是…...

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(一级)真题

青少年软件编程(Python)等级考试试卷(一级) 分数:100 题数:37 答案解析:https://blog.csdn.net/qq_33897084/article/details/147335019?spm1001.2014.3001.5501 一、单选题(共25题&#xff0…...

「数据可视化 D3系列」入门第十章:饼图绘制详解与实现

饼图绘制详解与实现 一、饼图绘制核心知识1. d3.arc() 弧形生成器2. d3.pie() 布局函数3. arc.centroid() 中心点计算4. 颜色方案 二、饼图实现代码小结核心知识点下章预告:力导向图 一、饼图绘制核心知识 1. d3.arc() 弧形生成器 功能: 生成圆形、扇形…...

三维点拟合平面ransac c++

理论 平面的一般定义 在三维空间中,一个平面可以由两个要素唯一确定: 法向量 n(a,b,c):垂直于平面的方向 平面上一点 平面上任意一点 p(x,y,z) 满足: ( p − p 0 ) ∗ n 0 (p - p0) * n 0 (p−p0)∗n0 即 a ( x − x 0 ) …...

第六章:6.6输入以下的杨辉三角形,要求输出10行

//输入以下的杨辉三角形&#xff0c;要求输出10行 #include<stdio.h> int main() {int a[10][10] { 0 };int i 0, j 0;for (i 0; i < 10; i){for (j 0; j < 10; j){if (j 0){a[i][j] 1;}else if (i j){a[i][j] 1;}else{a[i][j] a[i - 1][j - 1] a[i - …...

初识Redis · C++客户端string

目录 前言&#xff1a; string的API使用 set get&#xff1a; expire: NX XX: mset,mget&#xff1a; getrange setrange: incr decr 前言&#xff1a; 在前文&#xff0c;我们已经学习了Redis的定制化客户端怎么来的&#xff0c;以及如何配置好Redis定制化客户端&…...

React 事件处理基础

React 中最常见的两个需求&#xff0c;一个是列表渲染&#xff0c;另一个就是绑定点击事件。 这一篇就是从最基础的按钮点击开始&#xff0c;分四个阶段&#xff0c;逐步理解 React 中事件的写法和参数传递方式。 &#x1f4cd;阶段一&#xff1a;最简单的点击事件 function A…...

插入排序和希尔排序

今天给小伙伴们分享两个比较基础的排序算法&#xff0c;插入排序和希尔排序&#xff0c;这两个排序算法之间联系还是挺多的&#xff0c;所以放在一起。希尔排序可以看作是插入排序的升级版&#xff0c;在面对一些更为复杂的场景时&#xff0c;希尔排序的效率往往要比插入排序高…...

Model Context Protocol (MCP) 开放协议对医疗多模态数据整合的分析路径【附代码】

Model Context Protocol (MCP) 作为一种革命性的开放协议,正在重塑医疗领域多模态数据整合的方式。本文将深入分析MCP协议在医疗多模态数据整合中的具体路径、技术实现、应用场景及未来发展方向,揭示这一协议如何成为连接AI与医疗数据的关键桥梁。 MCP协议概述及其在医疗多模…...

Oracle 11g通过dg4odbc配置dblink连接PostgreSQL

1、安装unixodbc 2、安装postgresql yum install -y postgresql17-odbc 3、配置postgresqlodbc数据源 vim /usr/local/etc/odbcinst.ini##添加如下 [mypg] Driver /usr/lib64/psqlodbcw.so Servername localhost Port 5432 Database postgres Username postgres Pas…...

docker 安装prometheus普罗米修斯

prometheus&#xff08;普罗米修斯&#xff09;&#xff1a;天生为采集存储监控数据而生的时序数据库。prometheus通过各种Exporter采集到监控数据&#xff0c;然后存储进prometheus中&#xff0c;以供查询展示 grafana&#xff1a;一个监控仪表系统。grafana的数据来源可以有…...

Ubuntu上安装Mysql

步骤 1&#xff1a;安装 MySQL Server sudo apt update sudo apt install mysql-server -y这将安装最新版本的 MySQL 8.0 以及所有依赖组件。 步骤 2&#xff1a;检查安装是否成功 mysql --version sudo systemctl status mysql如果状态是 active (running)&#xff0c;说明成…...

Spring Boot启动流程深度解析:从main()到应用就绪的完整旅程

&#x1f331; Spring Boot启动流程深度解析&#xff1a;从main()到应用就绪的完整旅程 #SpringBoot核心 #启动原理 #自动配置 #源码解析 一、启动流程图解 (1) 启动类执行 → (2) SpringApplication初始化 → (3) 事件驱动模型启动 ↓ …...

2025TGCTF Web WP复现

AAA 偷渡阴平 <?php$tgctf2025$_GET[tgctf2025];if(!preg_match("/0|1|[3-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\&#xff08;|\&#xff09;|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $tgctf2025)){//hint&#xff1a;你可以对着键盘…...

交叉注意力层的实质作用:连接编码器和解码器

交叉注意力层的实质作用 在Transformer架构里,交叉注意力层主要作用是连接编码器和解码器,让解码器能够利用编码器输出的上下文信息 。具体来说: 聚焦相关信息:以机器翻译任务为例,在将源语言句子翻译成目标语言时,交叉注意力能使解码器生成的每个词,都聚焦于源语言序列…...

conversation_template | conversation_actors | conversation_line_template

目录 conversation_template conversation_actors conversation_line_template 实例应用 conversation_template id&#xff1a;某段谈话的唯一编号FirstLineId&#xff1a;谈话开始的第一段话的编号&#xff0c;取值来源 ConversationLine.db2 的 ID 字段TextureKitId&am…...

C++ `shared_ptr` 多线程使用

C shared_ptr 多线程使用 一、核心结论 引用计数&#xff1a;shared_ptr 的引用计数操作是原子的&#xff0c;线程安全控制块修改&#xff1a;修改 shared_ptr 指向的对象需要同步被管理对象&#xff1a;若对象本身非线程安全&#xff0c;访问时仍需加锁 二、分场景详解 场景…...

十天借助 Trae 实现 “幸运塔塔屋” 小程序时光记忆功能之旅

在软件开发的广阔天地中&#xff0c;创新与效率始终是开发者们不懈追求的目标。近期&#xff0c;我成功完成了一次极具挑战性与创新性的实践 —— 仅用十天时间&#xff0c;借助 Trae 这款强大的 AI 工具&#xff0c;开发出了 “幸运塔塔屋” 小程序&#xff0c;其中的 “时光记…...

WiFi“管家”------hostapd的工作流程

目录 1. 启动与初始化 1.1 解析命令行参数 1.2 读取配置文件 1.3 创建接口和 BSS 数据结构 1.4 初始化驱动程序 2. 认证和关联处理 2.1 监听认证请求 2.2 处理认证请求 2.3 处理关联请求 3. 数据转发 3.1 接收客户端数据 3.2 转发数据 4. 断开连接处理 4.1 处理客…...

计算机视觉——基于使用 OpenCV 与 Python 实现相机标定畸变校正

概述 相机标定是一种旨在通过确定相机的内参&#xff08;焦距、光学中心、畸变系数&#xff09;和外参&#xff08;相机的位置和方向&#xff09;&#xff0c;提高图像在现实世界中的几何精度的过程。该过程可以纠正相机拍摄的图像中的畸变&#xff0c;使相机能够准确感知现实…...

OOM 未触发 JVM 崩溃的可能原因

1. OOM 未触发 JVM 崩溃的可能原因‌ (1) 未配置 JVM 参数强制崩溃‌ 关键参数缺失‌&#xff1a; 若未添加 -XX:CrashOnOutOfMemoryError&#xff0c;JVM 在 OOM 时可能仅抛出异常并正常退出&#xff0c;而非崩溃&#xff0c;因此不会生成 hs_err_pid.log。 # 正确配置示例&…...

计算机视觉cv2入门之车牌号码识别

前边我们已经讲解了使用cv2进行图像预处理与边缘检测等方面的知识&#xff0c;这里我们以车牌号码识别这一案例来实操一下。 大致思路 车牌号码识别的大致流程可以分为这三步&#xff1a;图像预处理-寻找车牌轮廓-车牌OCR识别 接下来我们按照这三步来进行讲解。 图像预处理 …...

xml+html 概述

1.什么是xml xml 是可扩展标记语言的缩写&#xff1a; Extensible Markup Language。 <root><h1> text 1</h1> </root> web 应用开发&#xff0c;需要配置 web.xml&#xff0c;就是个典型的 xml文件 <web-app><servlet><servlet-name&…...

C++数据结构与二叉树详解

前言&#xff1a; 在C编程的世界里&#xff0c;数据结构是构建高效程序的基石&#xff0c;而二叉树则是其中最优雅且应用广泛的数据结构之一。本文将带你深入理解二叉树的本质、实现与应用&#xff0c;助你在算法设计中游刃有余。 一、二叉树的基本概念 1. 什么是二叉树 二叉树…...

解决6栈6层码头集装箱堆栈翻箱最优解问题

‘’’ con 1 origin_stack = [ [4, 4, 1, 0, 0, 0], # 第一栈 [4, 3, 2, 1, 0, 0], # 第二栈 [4, 2, 2, 1, 0, 0], # 第三栈 [3, 3, 3, 1, 0, 0], # 第四栈 [3, 4, 2, 1, 0, 0], # 第五栈 [4, 2, 3, 2, 0, 0] # 第六栈 ] con 2 origin_stack = [ [4, 4, 3, 0, 0, 0], # 第一栈…...

Java 序列化与反序列化终极解析

Java 序列化与反序列化终极解析 1. 核心概念 (1) 什么是序列化&#xff1f; 定义&#xff1a;将对象转换为字节流的过程&#xff08;对象 → 字节&#xff09; 目的&#xff1a; 持久化存储&#xff08;如保存到文件&#xff09; 网络传输&#xff08;如RPC调用&#xff09…...

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12的网络结构图

文章目录 一、YOLOv5二、YOLOv6三、YOLOv7四、YOLOv8五、YOLOv9六、YOLOv10七、YOLOv11八、YOLOv12九、目标检测系列文章 本文将给出YOLO各版本&#xff08;YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12&#xff09;网络结构图的绘制方法及图。本文所展…...

leetcode0145. 二叉树的后序遍历-easy

1 题目&#xff1a;二叉树的后序遍历 官方标定难度&#xff1a;易 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1] 解释&#xff1a; 示例 2&#xff1a; 输入…...

【Leetcode 每日一题】2364. 统计坏数对的数目

问题背景 给你一个下标从 0 0 0 开始的整数数组 n u m s nums nums。如果 i < j i < j i<j 且 j − i ≠ n u m s [ j ] − n u m s [ i ] j - i \ne nums[j] - nums[i] j−inums[j]−nums[i]&#xff0c;那么我们称 ( i , j ) (i, j) (i,j) 是一个 坏数对 。…...

完整的 .NET 6 分布式定时任务实现(Hangfire + Redis 分布式锁)

完整的 .NET 6 分布式定时任务实现&#xff08;Hangfire Redis 分布式锁&#xff09; 以下是完整的解决方案&#xff0c;包含所有必要组件&#xff1a; 1. 基础设施层 1.1 分布式锁服务 // IDistributedLockService.cs public interface IDistributedLockService {ValueTa…...

人脸识别联合行为检测的办公管理新模式

基于人脸识别与行为检测的办公智能化解决方案 一、背景 在传统办公场景中&#xff0c;员工考勤管理、工位使用情况统计、安全监控等环节存在诸多痛点。例如&#xff0c;传统考勤方式如指纹打卡、刷卡等存在代打卡现象&#xff0c;考勤数据不准确&#xff1b;对于员工是否在工…...

鸿蒙NEXT开发键盘工具类(ArkTs)

export declare type KeyboardCallBack (show: boolean, height: number) > void; import { AppUtil } from ./AppUtil; import { LogUtil } from ./LogUtil; import { ArrayUtil } from ./ArrayUtil;/*** 键盘工具类* author 鸿蒙布道师* since 2025/04/18*/ export class…...

Python爬虫第17节-动态渲染页面抓取之Selenium使用下篇

目录 引言 一、获取节点信息 1.1 获取属性 1.2 获取文本值 1.3 获取ID、位置、标签名、大小 二、切换Frame 三、延时等待 3.1 隐式等待 3.2 显式等待 四、前进后退 五、Cookies 六、选项卡管理 七、异常处理 引言 这一节我们继续讲解Selenium的使用下篇&#xff0…...

【数据结构】第四弹——LinkedList与链表

文章目录 一. ArrayList 的缺陷二.链表2.1 链表的概念及结构2.2 链表的结构2.2.1 单向或者双向2.2.2 带头或者不带头2.2.3 循环非循环 2.3 链表的实现1. IList接口2. MySingleList 类中具体实现(不带头单向非循环链表)1. 节点抽象成内部类手搓一个链表2. 头插法3. 尾插法4. 指定…...

设计模式从入门到精通之(五)观察者模式

观察者模式&#xff1a;实现高效事件通知的秘诀 在日常生活中&#xff0c;我们经常需要同步通知多方的信息变更。比如天气预报系统、股票价格波动提醒、社交媒体的点赞通知等。这些场景中&#xff0c;通知机制需要高效、灵活&#xff0c;而不会因为通知方的变化影响系统整体。 …...

chili3d调试笔记3 加入c++ 大模型对话方法 cmakelists精读

加入 #include <emscripten/bind.h> #include <emscripten/val.h> #include <nlohmann/json.hpp> 怎么加包 函数直接用emscripten::function&#xff0c;如&#xff1a; emscripten::function("send_to_llm", &send_to_llm); set (CMAKE_C…...

使用人工智能大模型kimi,如何免费制作PPT?

使用人工智能大模型kimi&#xff0c;如何免费制作PPT&#xff1f; 手把手操作视频https://edu.csdn.net/learn/40406/666573...

ModbusTCP 转 Profinet 主站网关

一、 功能概述 1.1 设备简介 本产品是 ModbusTCP 和 Profinet(M) 网关&#xff08;以下简称网关&#xff09;&#xff0c;使用数据映射 方式工作。 本产品在 ModbusTCP 侧作为 ModbusTCP 从站&#xff0c;接 PLC 、上位机、 wincc 屏 等&#xff1b;在 Profin…...

进阶篇|CAN FD 与性能优化

引言 1. CAN vs. CAN FD 对比 2. CAN FD 帧结构详解...

6.6 “3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化“

3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化 关键词:ChatGPT代码生成、Python调度器设计、定时任务自动化、异常处理机制、日志监控系统 需求分析与技术选型 GitHub Sentinel 需要实现两种定时任务模式: #mermaid-svg-prOScv2NNhn6w90N {font-family:…...

HarmonyOS 基础语法概述 UI范式

ArkUI框架 - UI范式 ArkTS的基本组成 装饰器&#xff1a; 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器&#xff0c;Component表示自定义组件&#xff0c;Entry表示该自定义组件为入口组件&#xff0c;Stat…...

23种设计模式-创建型模式之建造者模式(Java版本)

Java 建造者模式&#xff08;Builder Pattern&#xff09;详解 &#x1f9f1; 什么是建造者模式&#xff1f; 建造者模式用于将一个复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 适用于创建过程复杂、构造顺序稳定但组件变化的对象。…...