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

人工智能学习(七)之神经网络

目录

 

一、引言

二、经典神经网络回顾

(一)结构与计算过程

(二)局限性

三、循环神经网络(RNN)原理

(一)基本结构

(二)计算过程

(三)梯度消失与梯度爆炸问题

四、门控循环单元(GRU)原理

(一)结构改进

(二)计算过程

五、长短期记忆网络(LSTM)原理

(一)复杂结构

(二)计算过程

六、双向 RNN 原理

(一)结构特点

(二)输出计算

七、卷积神经网络(CNN)原理

(一)卷积层

(二)池化层

(三)全连接层

八、实际案例编程

(一)使用 RNN 进行时间序列预测

(二)使用 LSTM 进行文本情感分析


 

一、引言

你们的点赞、收藏、评论、关注是我创作的最大动力~

二、经典神经网络回顾

经典神经网络,通常指多层感知机(Multilayer Perceptron,MLP),是一种前馈神经网络。它由输入层、若干隐藏层和输出层组成。每一层包含多个神经元,神经元之间通过带有权重的连接相互关联。

(一)结构与计算过程

(二)局限性

  1. 处理序列数据的局限性:经典神经网络在处理具有序列结构的数据(如时间序列或自然语言)时存在困难,因为它无法有效利用数据中的时间依赖关系。每个输入在处理时被视为独立的,不考虑其在序列中的位置和前后元素的关联。
  2. 参数数量与过拟合问题:在处理图像等具有空间结构的数据时,由于其全连接结构,参数数量会随着输入维度和隐藏层神经元数量的增加而急剧增长。这不仅导致计算成本高昂,还容易引发过拟合问题,使得模型在训练集上表现良好,但在测试集上泛化能力较差。

三、循环神经网络(RNN)原理

循环神经网络(RNN)专为处理序列数据而设计,其核心特点是能够在处理序列时保持对之前信息的 “记忆”。

(一)基本结构

RNN 的核心结构是循环体。在每个时间步,循环体接收当前输入 和上一时刻的隐藏状态 ,并计算当前时刻的隐藏状态

(二)计算过程

  1. 隐藏状态更新

(三)梯度消失与梯度爆炸问题

  1. 问题产生原因:在 RNN 的反向传播过程中,梯度需要沿着时间序列进行反向传播。由于权重矩阵在每个时间步都被重复使用,梯度在时间序列上不断相乘。当 的某些特征值的绝对值大于 1 时,随着时间步的增加,梯度会指数级增长,导致梯度爆炸;当 的某些特征值的绝对值小于 1 时,梯度会指数级衰减,导致梯度消失。
  2. 影响:梯度消失会使得模型在训练过程中难以学习到长距离的依赖关系,因为较早时间步的梯度在反向传播过程中变得极小,对参数更新的贡献几乎可以忽略不计。梯度爆炸则会导致参数更新过大,使得模型无法收敛,甚至出现权重变为无穷大的情况。

四、门控循环单元(GRU)原理

门控循环单元(GRU)是对 RNN 的改进,旨在解决梯度消失问题并更好地处理长序列数据。

(一)结构改进

GRU 引入了两个重要的门控机制:重置门 和更新门。这些门控机制能够动态地控制信息的流动,决定哪些信息需要被保留或丢弃。

(二)计算过程

五、长短期记忆网络(LSTM)原理

长短期记忆网络(LSTM)同样是为解决 RNN 的梯度问题而设计,它具有更复杂但强大的结构,能够更好地处理长序列数据。

(一)复杂结构

LSTM 包含输入门、遗忘门、输出门 和记忆单元。记忆单元 可以看作是一条贯穿时间序列的 “高速公路”,允许信息在序列中长时间流动,而门控机制则控制信息的流入和流出。

(二)计算过程

六、双向 RNN 原理

(一)结构特点

双向 RNN 由两个方向相反的 RNN 组成,一个按顺序处理序列(正向),另一个按逆序处理序列(反向)。这两个 RNN 分别捕捉序列中的过去信息和未来信息。

(二)输出计算

七、卷积神经网络(CNN)原理

卷积神经网络(CNN)主要用于处理具有网格结构的数据,如图像、音频等,其核心在于卷积层和池化层的应用。

(一)卷积层

(二)池化层

(三)全连接层

经过卷积和池化后,数据被展平并输入到全连接层。全连接层的作用是将提取到的特征进行整合,并进行最终的分类或回归任务。全连接层的每个神经元与上一层的所有神经元都有连接,其计算方式与经典神经网络中的隐藏层和输出层类似,通过加权求和和激活函数变换得到输出。

八、实际案例编程

(一)使用 RNN 进行时间序列预测

以预测正弦波序列为例,使用 PyTorch 实现:

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt# 生成正弦波数据
time_steps = 100
data = np.sin(np.linspace(0, 10 * np.pi, time_steps))
data = torch.FloatTensor(data).view(-1, 1)class RNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(RNN, self).__init__()self.hidden_size = hidden_sizeself.rnn = nn.RNN(input_size, hidden_size, batch_first=True)self.fc = nn.Linear(hidden_size, output_size)def forward(self, x, hidden):out, hidden = self.rnn(x, hidden)out = self.fc(out[:, -1, :])return out, hiddeninput_size = 1
hidden_size = 10
output_size = 1
rnn = RNN(input_size, hidden_size, output_size)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(rnn.parameters(), lr=0.01)# 训练
hidden = torch.zeros(1, 1, hidden_size)
for epoch in range(1000):output, hidden = rnn(data.view(1, -1, 1), hidden)loss = criterion(output, data[-1].view(1, -1))optimizer.zero_grad()loss.backward()optimizer.step()if epoch % 100 == 0:print(f'Epoch {epoch}, Loss: {loss.item()}')# 预测
with torch.no_grad():future_steps = 10predictions = []current_data = data[-1].view(1, 1, 1)for _ in range(future_steps):output, hidden = rnn(current_data, hidden)predictions.append(output.item())current_data = output.view(1, 1, 1)plt.plot(range(time_steps), data.numpy(), label='Original')
plt.plot(range(time_steps, time_steps + future_steps), predictions, label='Prediction')
plt.legend()
plt.show()

代码解释

  1. 数据生成:通过np.linspace生成一个包含 100 个点的正弦波序列,并将其转换为 PyTorch 的张量。
  2. 模型定义:定义了一个简单的 RNN 模型,包含一个 RNN 层和一个全连接层。RNN 层用于处理序列数据,全连接层用于将 RNN 的输出转换为预测值。
  3. 训练过程:使用均方误差损失函数(MSE)和 Adam 优化器进行训练。在每个 epoch 中,将数据输入到模型中进行前向传播,计算损失,然后进行反向传播和参数更新。
  4. 预测过程:在训练完成后,使用最后一个时间步的数据作为初始输入,进行未来 10 个时间步的预测。预测结果通过循环不断更新输入,逐步生成。
  5. 可视化:使用matplotlib库将原始序列和预测序列绘制在同一张图上,方便直观观察预测效果。

(二)使用 LSTM 进行文本情感分析

下面是一个使用 PyTorch 实现的基于 LSTM 的文本情感分析示例,使用的数据集为 IMDB 电影评论数据集。

import torch
import torch.nn as nn
import torch.optim as optim
from torchtext.legacy import data, datasets# 定义字段
TEXT = data.Field(tokenize='spacy', lower=True)
LABEL = data.LabelField(dtype=torch.float)# 加载数据集
train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)# 构建词汇表
TEXT.build_vocab(train_data, max_size=25000, vectors="glove.6B.100d")
LABEL.build_vocab(train_data)# 创建迭代器
train_iterator, test_iterator = data.BucketIterator.splits((train_data, test_data),batch_size=64,device=torch.device('cuda' if torch.cuda.is_available() else 'cpu')
)# 定义 LSTM 模型
class LSTMClassifier(nn.Module):def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim, n_layers, bidirectional, dropout):super().__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.lstm = nn.LSTM(embedding_dim,hidden_dim,num_layers=n_layers,bidirectional=bidirectional,dropout=dropout)self.fc = nn.Linear(hidden_dim * 2 if bidirectional else hidden_dim, output_dim)self.dropout = nn.Dropout(dropout)def forward(self, text):embedded = self.dropout(self.embedding(text))output, (hidden, cell) = self.lstm(embedded)if self.lstm.bidirectional:hidden = self.dropout(torch.cat((hidden[-2, :, :], hidden[-1, :, :]), dim=1))else:hidden = self.dropout(hidden[-1, :, :])return self.fc(hidden.squeeze(0))# 初始化模型
vocab_size = len(TEXT.vocab)
embedding_dim = 100
hidden_dim = 256
output_dim = 1
n_layers = 2
bidirectional = True
dropout = 0.5model = LSTMClassifier(vocab_size, embedding_dim, hidden_dim, output_dim, n_layers, bidirectional, dropout)# 加载预训练的词向量
pretrained_embeddings = TEXT.vocab.vectors
model.embedding.weight.data.copy_(pretrained_embeddings)# 定义损失函数和优化器
criterion = nn.BCEWithLogitsLoss()
optimizer = optim.Adam(model.parameters())# 训练模型
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = model.to(device)
criterion = criterion.to(device)for epoch in range(5):model.train()for batch in train_iterator:optimizer.zero_grad()predictions = model(batch.text).squeeze(1)loss = criterion(predictions, batch.label)loss.backward()optimizer.step()# 评估模型model.eval()total_correct = 0total_count = 0with torch.no_grad():for batch in test_iterator:predictions = model(batch.text).squeeze(1)rounded_preds = torch.round(torch.sigmoid(predictions))correct = (rounded_preds == batch.label).float().sum()total_correct += correcttotal_count += batch.label.shape[0]accuracy = total_correct / total_countprint(f'Epoch {epoch + 1}, Test Accuracy: {accuracy.item()}')

代码解释

  1. 数据处理:使用torchtext库加载 IMDB 电影评论数据集,并进行分词、构建词汇表等预处理操作。
  2. 模型定义:定义了一个基于 LSTM 的文本分类模型,包含嵌入层、LSTM 层和全连接层。嵌入层将输入的文本转换为词向量,LSTM 层用于捕捉文本中的序列信息,全连接层用于进行情感分类。
  3. 加载预训练词向量:使用预训练的 GloVe 词向量初始化嵌入层的权重,有助于提高模型的性能。
  4. 训练过程:使用二元交叉熵损失函数(BCEWithLogitsLoss)和 Adam 优化器进行训练。在每个 epoch 中,将数据输入到模型中进行前向传播,计算损失,然后进行反向传播和参数更新。
  5. 评估过程:在每个 epoch 结束后,在测试集上评估模型的准确率。通过将预测结果进行四舍五入,与真实标签进行比较,计算正确预测的样本数,从而得到准确率。

 

相关文章:

人工智能学习(七)之神经网络

目录 一、引言 二、经典神经网络回顾 (一)结构与计算过程 (二)局限性 三、循环神经网络(RNN)原理 (一)基本结构 (二)计算过程 (三&#xf…...

LeetCode --- 435周赛

题目列表 3442. 奇偶频次间的最大差值 I 3443. K 次修改后的最大曼哈顿距离 3444. 使数组包含目标值倍数的最少增量 3445. 奇偶频次间的最大差值 II 一、奇偶频次间的最大差值I 统计字母出现次数,然后分别统计出现偶数次的最小值和出现奇数次的最大值,…...

算法 ST表

目录 前言 一,暴力法 二,打表法 三,ST表 四,ST表的代码实现 总结 前言 ST表的主要作用是在一个区间里面寻找最大值,具有快速查找的功能,此表有些难,读者可以借助我的文章和网上的课程结…...

【AI论文】使用滑动磁贴注意力实现快速视频生成

摘要:扩散变换器(DiTs)凭借3D全局注意力机制在视频生成领域达到了最先进水平,但其计算成本高昂——生成一段仅5秒的720P视频时,仅注意力计算就占用了总推理时间的945秒中的800秒。本文引入了滑动磁贴注意力&#xff08…...

MAAS | Ollama 搭建本地 AI 大模型 deepseekWeb 界面调用

目录 一、环境准备二、安装 Ollama三、下载并部署 DeepSeek 模型四、简单交互五、通过 Web 界面调用大模型 在当今人工智能快速发展的时代,本地部署大语言模型赋予了用户更高的灵活性和个性化服务体验。本文介绍了如何准备环境、安装Ollama框架、下载并部署DeepSeek…...

Arduino 第十一章:温度传感器

Arduino 第十一章:LM35 温度传感器 一、LM35 简介 LM35 是美国国家半导体公司(现德州仪器)生产的一款精密集成电路温度传感器。与基于热力学原理的传统温度传感器不同,LM35 能直接将温度转换为电压输出,且输出电压与…...

普通用户授权docker使用权限

1、检查docker用户组 sudo cat /etc/group |grep docker 若显示:docker:x:999: # 表示存在否则创建docker用户组: sudo groupadd docker2、查看 /var/run/docker.sock 的属性 ll /var/run/docker.sock 显示: srw-rw---- 1 root root 0 1月…...

嵌入式软件C语言面试常见问题及答案解析(四)

嵌入式软件C语言面试常见问题及答案解析(四) 原本打算将链表相关的面试题整合到一个文档中,奈何写着写着就发现题目比较多,题型也比较丰富,所以导致上一篇已经足够长了,再长也就有点不礼貌了。 所以在这儿继续来总结分享那个面试中遇到的题目,文中的问题和提供的答案或者…...

Python中是否有类似R语言中rds的功能,可将对象保存为文件?

在数据分析和科学计算领域,R语言和Python都是极为流行的编程语言。它们各自拥有独特的优势和丰富的库资源,使得数据科学家们能够高效地处理和分析数据。在R语言中,RDS(R Data Serialization)格式是一种非常方便的方式&…...

LabVIEW无人机飞行状态监测系统

近年来,无人机在农业植保、电力巡检、应急救灾等多个领域得到了广泛应用。然而,传统的目视操控方式仍然存在以下三大问题: 飞行姿态的感知主要依赖操作者的经验; 飞行中突发的姿态异常难以及时发现; 飞行数据缺乏系统…...

车联网安全入门一:了解CAN总线及环境模拟

准备打工了,工作内容和车联网安全相关,本来想着和app分析有较大关系,但是还涉及到很多关于汽车渗透测试相关的知识,由于之前并没有接触过,就借此机会和大家来学习一下。 ## CAN基础知识 ### CAN(Controller…...

hive spark读取hive hbase外表报错分析和解决

问题现象 使用Spark shell 操作hive关联Hbase的外表导致报错;hive使用tez引擎操作关联Hbase的外表时报错。 问题1:使用tez或spark引擎,在hive查询时只要关联hbase的hive表就会有问题其他表正常。 “org.apache.hadoop.hbase.client.RetriesExhaustedException:Can’t get …...

【MQ】RabbitMQ 高可用延时功能的探究

延迟消息如果使用延时交换机来实现,如果数据量过大,就会很占 CPU 资源,轻则时间误差大,重则 RabbitMQ 宕机 一、针对一个 RabbitMQ 节点 (1)利用队列 ttl,将延迟消息根据 delay 的时间进行分级…...

网络安全讲座之一:网络安全的重要性

第一讲内容主要对于安全的发展以及其重要性作了简明的阐述,并介绍了一些国内外知名的网络安全相关网站,并对于如何建立有效的安全策略给出了很好的建议,并让大家了解几种安全标准。   媒体经常报道一些有关网络安全威胁的令人震惊的事件&am…...

flutter ListView Item复用源码解析

Flutter 的 ListView 的 Item 复用机制是其高性能列表渲染的核心,底层实现依赖于 Flutter 的渲染管线、Element 树和 Widget 树的协调机制。以下是 ListView 复用机制的源码级解析,结合关键类和核心逻辑进行分析。 1. ListView 的底层结构 ListView 的复…...

基于java手机销售网站设计和实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

HTML 左右联动高亮示例

HTML 左右联动高亮示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>左右联动高亮示例</titl…...

如何本地部署DeepSeek

第一步&#xff1a;安装ollama https://ollama.com/download 打开官网&#xff0c;选择对应版本 第二步&#xff1a;选择合适的模型 https://ollama.com/ 模型名称中的 1.5B、7B、8B 等数字代表模型的参数量&#xff08;Parameters&#xff09;&#xff0c;其中 B 是英文 B…...

虚拟机+Docker配置主机代理和常见配置

完整配置流程如下&#xff1a; 配置虚拟机使用宿主机代理&#xff1a; # 设置环境变量&#xff08;宿主机IP为192.168.100.1&#xff0c;代理端口7890&#xff09; export http_proxyhttp://192.168.100.1:7890 export https_proxyhttp://192.168.100.1:7890# 测试代理是否生…...

996引擎-问题处理:盟重传送石问题

996引擎-问题处理:盟重传送石问题 问题解决方案补充:回城卷参考资料问题 今天添加了个新地图,由于这个版本只有盟重传送石没设计回城卷。 所以怎么搞都回不到新地图的回城点。(当时也是懵逼了都忘记它叫 盟重 传送石`) 分析 先看一下道具表的配置。 [@StdModeFuncX] 表示…...

从零到一学习c++(基础篇--筑基期七-vector与迭代器)

从零到一学习C&#xff08;基础篇&#xff09; 作者&#xff1a;羡鱼肘子 温馨提示1&#xff1a;本篇是记录我的学习经历&#xff0c;会有不少片面的认知&#xff0c;万分期待您的指正。 温馨提示2&#xff1a;本篇会尽量用更加通俗的语言介绍c的基础&#xff0c;用通俗的语言去…...

PKI及SSL协议分析

PKI的基本组成&#xff0c;完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口&#xff08;API&#xff09;等基本构成部分&#xff0c;构建PKI也将围绕着这五大系统来着手构建。 任务一&#xff1a;搭建CA服务器 本任务初步了…...

请解释 JavaScript 中的函数式编程,优缺点是什么?

一、对JavaScript函数式编程的理解 函数式编程&#xff08;Functional Programming&#xff0c;FP&#xff09;是一种编程范式&#xff0c;它将计算视为数学函数的求值&#xff0c;并避免改变状态和可变数据。 在JavaScript中&#xff0c;函数式编程具有以下几个关键特性&…...

WPS接入DeepSeek模型

1.wps 下载安装 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 &#xff08;最好是安装最新的wps&#xff09; 2.offieceAi工具下载安装 软件下载 | OfficeAI助手 下载后安装下载下来的两个工具。安装路径可以自行修改 3.打开WPS,点击文件-》 选项-》信任中心 勾…...

头条百度批量采集软件说明文档

旧版说明文档《头条号文章批量采集软件4.0版本说明文档&#xff01;头条/微头条文章批量采集》 头条的采集软件已经更新了好多个版本了&#xff0c;一直没有做详细的介绍文档&#xff0c;最近更新了一些功能进去&#xff0c;一块来写一下说明文档。 1、主界面 2、头条作者采集…...

网络安全架构师怎么考 网络安全 架构

安全通信网络 随着现代技术的不断发展&#xff0c;等级保护对象通常通过网络实现资源共享和数据交互&#xff0c;当大量的设备连成网络后&#xff0c;网络安全成了最为关注的问题。按照“一个中心&#xff0c;三重防御”的纵深防御思想&#xff0c;边界外部通过广域网或城域网…...

Vue 3 30天精进之旅:Day 21 - 项目实践:打造功能完备的Todo应用

前言 经过前20天的学习&#xff0c;我们已经掌握了Vue 3的核心概念、组合式API、路由、状态管理等关键技术。今天将通过一个完整的项目实践——Todo应用&#xff0c;将所学知识融会贯通。我们将为Todo应用添加编辑、删除、过滤等进阶功能&#xff0c;并优化代码结构。 一、项目…...

2025年02月11日Github流行趋势

项目名称&#xff1a;unsloth 项目地址url&#xff1a;https://github.com/unslothai/unsloth项目语言&#xff1a;Python历史star数&#xff1a;27175今日star数&#xff1a;1024项目维护者&#xff1a;danielhanchen, shimmyshimmer, Erland366, Datta0, xyangk项目简介&…...

嵌入式硬件篇---原码、补码、反码

文章目录 前言简介八进制原码、反码、补码1. 原码规则示例问题 2. 反码规则示例问题 3. 补码规则示例优点 4. 补码的运算5. 总结 十六进制原码、反码、补码1. 十六进制的基本概念2. 十六进制的原码规则示例 3. 十六进制的反码规则示例 4. 十六进制的补码规则示例 5. 十六进制补…...

PCM与G711A互转

PCM与G711A互转 工具类&#xff08;Java&#xff09;调用方法&#xff08;Kotlin&#xff09; 工具类&#xff08;Java&#xff09; public class G711Code {private final static int SIGN_BIT 0x80;private final static int QUANT_MASK 0xf;private final static int SEG…...

MapReduce简单应用(三)——高级WordCount

目录 1. 高级WordCount1.1 IntWritable降序排列1.2 输入输出格式1.3 处理流程 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 高级WordCount2.4 结果 参考 本文引用的Apache Hadoop源代码基于Apache许可证 2.0&#xff0c;详情请参阅 Apache许可证2.0。 1. 高级WordCo…...

C# 数据验证Regex

Regular Expression&#xff0c;简称 Regex,是一种用于匹配和处理文本的强大工具。它通过定义特定的模式&#xff0c;可以用来搜索、替换或提取字符串中的特定内容。 先引入命名空间 using System.Text.RegularExpressions; Intege(整数) 必须是正整数 //必须是正整数publi…...

Jenkins+gitee 搭建自动化部署

Jenkinsgitee 搭建自动化部署 环境说明&#xff1a; 软件版本备注CentOS8.5.2111JDK1.8.0_211Maven3.8.8git2.27.0Jenkins2.319最好选稳定版本&#xff0c;不然安装插件有点麻烦 一、安装Jenkins程序 1、到官网下载相应的版本war或者直接使用yum安装 Jenkins官网下载 直接…...

C/C++混合读入cin与scanf问题

因为C/C在某些时候是如此的融洽&#xff0c;以至于很多时候可能会混用&#xff0c;就比如 scanf与cin或getline(cin, ..)这是一个严肃的问题。因为随意混用&#xff0c;可能导致&#xff0c;在某些特殊时刻&#xff0c;读取混乱。所以本篇的意义就是为了缕清混用机制 一、scan…...

矩阵 NFC 碰一碰发视频源码搭建技术解析,支持OEM

一、引言 在移动互联与物联网飞速发展的当下&#xff0c;NFC&#xff08;Near Field Communication&#xff0c;近场通信&#xff09;技术凭借其便捷、快速的数据传输特性&#xff0c;在众多领域得到广泛应用。本文将深入探讨如何搭建矩阵 NFC 碰一碰发视频的源码&#xff0c;…...

Log4j定制JSON格式日志输出

1.前言 log4j是Java中一个强大的日志记录框架&#xff0c;通过简单的配置便可以在程序中进行日志打印与记录。关于log4j博主最近碰到一个需求&#xff0c;需要将程序运行过程中的日志按给定的json模板输出&#xff0c;本文记录一下log4j如何配置json格式的日志打印。 2.日志配…...

Spring依赖注入方式

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…...

【C++八股】什么是函数指针,如何定义和使⽤场景

函数指针是指向函数的指针变量&#xff0c;它存储的是一个函数的地址&#xff0c;允许通过指针间接调用函数。使用函数指针可以动态地选择和调用函数&#xff0c;或者将函数作为参数传递给其他函数。 1. 函数指针的定义 函数指针的定义与普通指针稍有不同。它需要声明指向特定…...

DeepSeek 入驻 Cursor —— 表现能否超越 Claude?

DeepSeek 刚刚在 Cursor 平台上线了它的两款模型&#xff1a;DeepSeek V3 和 R1。目前&#xff0c;许多开发者&#xff08;包括我们在内&#xff09;主要依赖 Claude 3.5 Sonnet&#xff08;最新版本 claude-3-5-sonnet-20241022&#xff09;作为主要语言模型&#xff0c;因此我…...

skynet-src/atomic.h:25:23: 致命错误:stdatomic.h:没有那个文件或目录

skynet-src/atomic.h:25:23: 致命错误&#xff1a;stdatomic.h&#xff1a;没有那个文件或目录 故事背景&#xff0c;又接了一个新项目&#xff0c;要搞开发环境啊。skyent的框架。ubuntu已经跑起来了&#xff0c;但是内网是centos的跑不起来。只能怀疑是环境问题了&#xff0…...

docker compose部署nexus

整个工具的代码都在Gitee或者Github地址内 gitee&#xff1a;solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github&#xff1a;GitHub - ZeroNing/solomon-parent: 这个项目主要是…...

IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统

案例:刀箱某一blade,例如 blade 5 安装 Hyper-V Server 2019 操作系统(安装进硬盘) 刀箱USB插入安装系统U盘,登录192.168... IBM BlandeCenter Restart Blande 5,如果Restart 没反应,那就 Power Off Blade 然后再 Power On 重启后进入BIOS界面设置usb存储为开机启动项 …...

Python的顺序结构和循环结构

文章目录 一、条件语句&#xff08;1&#xff09;条件语句的定义&#xff08;2&#xff09;条件语句的语法&#xff08;a&#xff09;单分支 if&#xff08;b&#xff09;双分支 if-else&#xff08;c&#xff09;多分支 if-elif-elif-...-else &#xff08;3&#xff09;注意事…...

[python SQLAlchemy数据库操作入门]-30.掌握 SQLAlchemy:优雅应对数据库异常的艺术

哈喽,大家好,我是木头左! 捕获和处理 SQLAlchemy 异常 在实际应用中,需要根据不同的异常类型采取不同的处理策略。下面是一个示例,展示了如何捕获和处理 SQLAlchemy 的异常。 from sqlalchemy import create_engine, Column, Integer, String, exc from sqlalchemy.ext.…...

编译和链接【三】

文章目录 编译和链接【三】前言系列文章入口编译过程词法分析语法分析语义分析生成中间代码汇编链接 编译和链接【三】 前言 在我大一的时候&#xff0c; 我使用VC6.0对C语言程序进行编译链接和运行 &#xff0c; 然后我接触了VS&#xff0c; Qt creator等众多IDE&#xff0c…...

11苍穹外卖之Apache ECharts(数据可视化图表、后端传数据)

课程内容 Apache ECharts 营业额统计 用户统计 订单统计 销量排名Top10 功能实现&#xff1a;数据统计 数据统计效果图&#xff1a; 1. Apache ECharts 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#…...

Grafana-使用Button修改MySQL数据库

背景 众所周知&#xff0c;Grafana是一个用来展示数据的平台&#xff0c;但是有时候还是会有需求说能不能有一个按钮&#xff0c;点击的时候再对数据库进行修改&#xff0c;从而达到更新数据的效果 经过多方查证&#xff0c;终于实现了一个简单的&#xff0c;点击button执行sq…...

C++11语法及库详解

目录 一、c11语法 1. 自动类型推导 (auto) 2. 基于范围的 for 循环 3. Lambda 表达式 4. 智能指针 5. 右值引用和移动语义 6. nullptr 关键字 7. constexpr 关键字 8. 初始化列表 9. std::thread 多线程支持 10. std::function 和 std::bind 11. std::unordered_map…...

数据库,数据表的增删改查操作

一.数据库的基本操作 &#xff08;1&#xff09;创建数据库 创建数据库就是在数据库系统中划分一块存储数据的空间&#xff0c;方便数据的分配、放置和管理。在MySQL中使用CREATE DATABASE命令创建数据库&#xff0c;语法格式如下: CREATE DATABASE数据库名称; 注&#xff1a…...

Python——批量图片转PDF(GUI版本)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…...