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

深度学习:自然语言处理

一、引言

自然语言处理作为人工智能领域的关键分支,致力于使计算机能够理解、分析和生成人类语言。近年来,随着深度学习技术的迅猛发展,自然语言处理取得了前所未有的突破,一系列创新技术和应用不断涌现,极大地推动了人机交互、信息检索、智能客服等众多领域的进步。

二、自然语言处理基础任务与传统方法

(一)文本分类

文本分类是 NLP 中的常见任务,例如将新闻文章分类为政治、体育、娱乐等类别。传统的文本分类方法常基于特征工程,如词袋模型(Bag of Words)和 TF-IDF(Term Frequency-Inverse Document Frequency)。以下是一个简单的基于词袋模型和朴素贝叶斯分类器的文本分类代码示例:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score# 示例文本数据
texts = ["这是一篇体育新闻,讲述了一场精彩的足球比赛。","政治新闻:关于国家领导人的重要会议报道。","娱乐新闻:某明星的新电影即将上映。"]
labels = ["体育", "政治", "娱乐"]# 构建词袋模型
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)# 训练朴素贝叶斯分类器
clf = MultinomialNB()
clf.fit(X, labels)# 测试数据
test_text = "今天有一场盛大的演唱会,众多明星齐聚。"
test_X = vectorizer.transform([test_text])
predicted_label = clf.predict(test_X)
print("预测标签:", predicted_label)# 评估模型(在完整数据集上)
# 假设这里有完整的训练集和测试集 X_train, X_test, y_train, y_test
# clf.fit(X_train, y_train)
# y_pred = clf.predict(X_test)
# accuracy = accuracy_score(y_test, y_pred)
# print("准确率:", accuracy)

(二)命名实体识别(NER)

命名实体识别旨在识别文本中的人名、地名、组织机构名等实体。传统方法多采用基于规则和统计的模型,如隐马尔可夫模型(HMM)和条件随机域(CRF)。以下是一个基于 CRF 的命名实体识别代码框架:

import nltk
from sklearn_crfsuite import CRF# 示例句子
sentence = "苹果公司在加利福尼亚州发布了新款 iPhone。"# 定义特征提取函数
def word2features(sent, i):word = sent[i]features = {'word.lower()': word.lower(),'word[-3:]': word[-3:],'word.isupper()': word.isupper(),'word.istitle()': word.istitle()}if i > 0:prev_word = sent[i - 1]features.update({'-1:word.lower()': prev_word.lower(),'-1:word.istitle()': prev_word.istitle()})else:features['BOS'] = True  # 句子开头标记if i < len(sent) - 1:next_word = sent[i + 1]features.update({'+1:word.lower()': next_word.lower(),'+1:word.istitle()': next_word.istitle()})else:features['EOS'] = True  # 句子结尾标记return featuresdef sent2features(sent):return [word2features(sent, i) for i in range(len(sent))]def sent2labels(sent):# 这里假设已经有标注好的标签数据,实际应用中需要标注或使用已有的标注数据集return ["ORG" if word == "苹果公司" else "LOC" if word == "加利福尼亚州" else "O" for word in sent]# 提取特征和标签
X = [sent2features(nltk.word_tokenize(sentence))]
y = [sent2labels(nltk.word_tokenize(sentence))]# 训练 CRF 模型
crf = CRF()
crf.fit(X, y)# 预测
predicted_labels = crf.predict(X)
print("预测的命名实体标签:", predicted_labels)

三、神经网络在自然语言处理中的应用

(一)循环神经网络(RNN)及其变体

循环神经网络在处理序列数据方面具有天然的优势,其能够保留序列中的上下文信息。长短期记忆网络(LSTM)和门控循环单元(GRU)是 RNN 的重要变体,有效解决了传统 RNN 的梯度消失和梯度爆炸问题。以下是一个基于 LSTM 的文本生成代码示例:

import torch
import torch.nn as nn# 定义 LSTM 文本生成模型
class LSTMTextGenerator(nn.Module):def __init__(self, vocab_size, embedding_dim, hidden_dim):super(LSTMTextGenerator, self).__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.lstm = nn.LSTM(embedding_dim, hidden_dim, batch_first=True)self.fc = nn.Linear(hidden_dim, vocab_size)def forward(self, x, hidden):x = self.embedding(x)output, hidden = self.lstm(x, hidden)output = self.fc(output)return output, hiddendef init_hidden(self, batch_size):return (torch.zeros(1, batch_size, self.lstm.hidden_size),torch.zeros(1, batch_size, self.lstm.hidden_size))# 示例数据准备(这里简化为一个小的词汇表和文本序列)
vocab = ['我', '爱', '自然', '语言', '处理']
word_to_idx = {word: i for i, word in enumerate(vocab)}
idx_to_word = {i: word for i, word in enumerate(vocab)}
text = "我爱自然语言"
input_sequence = [word_to_idx[word] for word in text]
input_tensor = torch.tensor([input_sequence])# 模型参数设置
vocab_size = len(vocab)
embedding_dim = 10
hidden_dim = 20# 初始化模型
model = LSTMTextGenerator(vocab_size, embedding_dim, hidden_dim)# 训练模型(这里省略训练循环,仅展示前向传播)
hidden = model.init_hidden(1)
output, hidden = model(input_tensor, hidden)# 生成文本
generated_text = []
input_word = input_sequence[-1]
for _ in range(5):  # 生成 5 个单词input_tensor = torch.tensor([[input_word]])output, hidden = model(input_tensor, hidden)# 选择概率最高的单词作为下一个单词topv, topi = output.topk(1)input_word = topi.item()generated_text.append(idx_to_word[input_word])print("生成的文本:", ''.join(generated_text))

(二)卷积神经网络(CNN)在 NLP 中的应用

卷积神经网络在自然语言处理中也有广泛应用,可用于文本分类、情感分析等任务。它通过卷积层提取文本的局部特征,然后通过池化层进行特征融合。以下是一个简单的基于 CNN 的文本分类代码:

import torch
import torch.nn as nn
import torch.optim as optim
from torchtext.legacy.data import Field, TabularDataset, BucketIterator# 定义文本字段和标签字段
TEXT = Field(sequential=True, lower=True, batch_first=True)
LABEL = Field(sequential=False, use_vocab=False, batch_first=True)# 加载数据集(假设已经有数据文件 'data.csv',格式为'text,label')
fields = [('text', TEXT), ('label', LABEL)]
train_data, test_data = TabularDataset.splits(path='.', train='data.csv', test='test.csv', format='csv', fields=fields)# 构建词汇表
TEXT.build_vocab(train_data)# 定义 CNN 模型
class CNNTextClassifier(nn.Module):def __init__(self, vocab_size, embedding_dim, num_filters, filter_sizes, output_dim):super(CNNTextClassifier, self).__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.convs = nn.ModuleList([nn.Conv2d(1, num_filters, (fs, embedding_dim)) for fs in filter_sizes])self.fc = nn.Linear(len(filter_sizes) * num_filters, output_dim)def forward(self, x):x = self.embedding(x)# x: [batch_size, seq_len, embedding_dim]x = x.unsqueeze(1)# x: [batch_size, 1, seq_len, embedding_dim]conved = [F.relu(conv(x)).squeeze(3) for conv in self.convs]# conved: [batch_size, num_filters, seq_len - filter_size + 1]pooled = [F.max_pool1d(conv, conv.shape[2]).squeeze(2) for conv in conved]# pooled: [batch_size, num_filters]cat = torch.cat(pooled, dim=1)# cat: [batch_size, num_filters * len(filter_sizes)]return self.fc(cat)# 模型参数设置
vocab_size = len(TEXT.vocab)
embedding_dim = 100
num_filters = 100
filter_sizes = [3, 4, 5]
output_dim = 2  # 假设二分类任务# 初始化模型
model = CNNTextClassifier(vocab_size, embedding_dim, num_filters, filter_sizes, output_dim)# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())# 训练模型(这里省略完整训练循环)
for epoch in range(10):for batch in BucketIterator(train_data, batch_size=64, shuffle=True):optimizer.zero_grad()text = batch.textlabel = batch.labeloutput = model(text)loss = criterion(output, label)loss.backward()optimizer.step()# 测试模型(这里省略完整测试过程)
# 计算准确率等指标

四、预训练模型:BERT 与 GPT 等

(一)BERT(Bidirectional Encoder Representations from Transformers)

BERT 模型基于 Transformer 架构,通过大规模语料库的预训练,学习到了丰富的语言表示。它在多个自然语言处理任务上取得了 state-of-the-art 的成果,如文本分类、问答系统等。以下是一个使用 BERT 进行文本分类的简单示例:

import torch
from transformers import BertTokenizer, BertForSequenceClassification# 加载预训练的 BERT 分词器和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForSequenceClassification.from_pretrained('bert-base-chinese', num_labels=2)# 示例文本
text = "这部电影非常精彩,值得一看。"# 文本预处理
encoded_text = tokenizer.encode_plus(text,add_special_tokens=True,max_length=128,padding='max_length',return_attention_mask=True,return_tensors='pt'
)input_ids = encoded_text['input_ids']
attention_mask = encoded_text['attention_mask']# 模型预测
with torch.no_grad():outputs = model(input_ids, attention_mask=attention_mask)logits = outputs[0]predicted_class = torch.argmax(logits, dim=1).item()print("预测类别:", predicted_class)

(二)GPT(Generative Pretrained Transformer)

GPT 系列模型专注于生成任务,通过自监督学习方式在大规模文本上进行预训练。它能够根据给定的上下文生成连贯的文本。以下是一个使用 GPT-2 生成文本的示例:

import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel# 加载 GPT-2 分词器和模型
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')# 示例上下文
context = "在美丽的森林中,"# 生成文本
input_ids = tokenizer.encode(context, return_tensors='pt')
output = model.generate(input_ids,max_length=50,num_return_sequences=1,no_repeat_ngram_size=2,top_k=50,top_p=0.95
)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print("生成的文本:", generated_text)

相关文章:

深度学习:自然语言处理

一、引言 自然语言处理作为人工智能领域的关键分支&#xff0c;致力于使计算机能够理解、分析和生成人类语言。近年来&#xff0c;随着深度学习技术的迅猛发展&#xff0c;自然语言处理取得了前所未有的突破&#xff0c;一系列创新技术和应用不断涌现&#xff0c;极大地推动了…...

C底层 函数栈帧

文章目录 一&#xff0c;什么是寄存器 二&#xff0c;栈和帧 前言 我们在学习c语言程序的时候&#xff0c;是不是有很多的疑问&#xff0c;如 1&#xff0c;为什么形参不可以改变实参 2&#xff0c;为什么我们编写程序的时候会出现烫烫烫......这个乱码 3&#xff0c;那些局…...

Linux系统编程——进程替换

目录 前言 二、进程程序替换的概念 三、进程程序替换的原理 ​编辑 四、为什么需要进行进程程序替换 五、如何进行进程程序替换 1、进程替换函数&#xff1a; 1)execl()函数 2)execv()函数 3) execlp()函数 4) execvp()函数 5&#xff09;execle函数 6&#xff09;ex…...

PVE中VLAN的设置要点

使用这个拓扑进行连接无法直接访问PVE PVE 设置如下&#xff1a; 核心重点&#xff1a;PVE 的 vmbr0 接口直接绑定了 enp2s0&#xff0c;这会导致 VLAN 流量无法正确处理&#xff0c;因为 PVE 没有专门为 VLAN 3 配置接口。 1.vmbr0 和 vmbr0.3 都是绑定在物理接口 enp2s0 上&…...

零基础Python学习

1.环境搭建 1.1 安装运行环境python3.13 Welcome to Python.org 1.2 安装集成开发环境PyCharm PyCharm: the Python IDE for data science and web development 1.3 创建项目 && 设置字体 2.基础语法 2.1 常量与表达式 在python中整数除整数不会优化&#xff0c;所…...

命令提示符窗口(CMD)控制windows操作系统

一、关于进程 1. 通过进程ID结束进程&#xff1a; taskkill /PID 进程ID 2. 通过进程名称结束进程 taskkill /IM 进程名称.exe 3. 强制结束进程 taskkill /F /IM 进程名称.exe 4. 结束包含特定字符串的全部进程 taskkill /IM 包含字符串* /T 5. 启动一个新的命令行窗口来运行指…...

虚幻引擎5(Unreal Engine 5)高级教程

虚幻引擎5&#xff08;Unreal Engine 5&#xff09;高级教程 引言 虚幻引擎5&#xff08;Unreal Engine 5&#xff0c;简称UE5&#xff09;是Epic Games推出的一款功能强大的游戏引擎&#xff0c;广泛应用于游戏开发、影视制作和虚拟现实等领域。UE5以其先进的图形渲染技术、…...

3DMAX星空图像生成器插件使用方法详解

3DMAX星空图像生成器插件&#xff0c;一键生成星空或夜空的二维图像。它可用于创建天空盒子或空间场景&#xff0c;或作为2D艺术的天空背景。 【主要特点】 -单击即可创建星空图像或夜空。 -星数、亮度、大小、形状等参数。 -支持任何图像大小&#xff08;方形&#xff09;。…...

【QNX+Android虚拟化方案】129 - USB眼图参数配置

【QNX+Android虚拟化方案】129 - USB眼图参数配置 1. 软件侧dts如何配置眼图参数 及 其对应关系2. 硬件 QNX 侧调试眼图命令2.1 High Speed USB2.0 Host2.2 Super Speed USB3.0 Host3. 硬件 Android 侧调试眼图命令基于原生纯净代码,自学总结 纯技术分享,不会也不敢涉项目、不…...

Linux内核4.14版本——ccf时钟子系统(3)——ccf一些核心结构体

目录 1. struct clk_hw 2. struct clk_ops 3. struct clk_core 4. struct clk_notifier 5. struct clk 6. struct clk_gate 7. struct clk_divider 8. struct clk_mux 9. struct clk_fixed_factor 10. struct clk_fractional_divider 11. struct clk_multiplier 12…...

服务器遭受DDoS攻击后如何恢复运行?

当服务器遭受 DDoS&#xff08;分布式拒绝服务&#xff09;攻击 后&#xff0c;恢复运行需要快速采取应急措施来缓解攻击影响&#xff0c;并在恢复后加强防护以减少未来攻击的风险。以下是详细的分步指南&#xff1a; 一、应急处理步骤 1. 确认服务器是否正在遭受 DDoS 攻击 …...

js原型、原型链和继承

文章目录 一、原型1、prototype2、constructor 二、原型链1、字面量原型链2、字面量继承3、构造函数的原型链4、Object.create5、Object.setPrototypeOf 三、继承1、构造函数继承2、原型链继承3、组合继承 四、常见链条1、Function2、Object.prototype 继承是指将特性从父代传递…...

看不见的彼方:交换空间——小菜一碟

有个蓝色的链接&#xff0c;先去看看两年前的题目的write up &#xff08;https://github.com/USTC-Hackergame/hackergame2022-writeups/blob/master/official/%E7%9C%8B%E4%B8%8D%E8%A7%81%E7%9A%84%E5%BD%BC%E6%96%B9/README.md&#xff09; 从别人的write up中了解到&…...

传奇996_38——称号系统

记住&#xff1a; 称号是装备&#xff0c;加属性的 特效是顶戴&#xff0c;加特效的 需要两个命令分开设置&#xff0c;称号和特效不关联 角色-称号栏显示的图标&#xff1a;由装备表字段&#xff0c;背包显示Looks控制&#xff0c;图片位置在&#xff1a;stab\res\private\t…...

C++:异常

---什么是异常&#xff1f; 异常是面向对象语法处理错误的一种方式。 ---C语言传统的处理错误的方式有哪些呢&#xff1f; 1.返回错误码&#xff0c;有些API接口都是把错误码放到errno中。 2.终止程序&#xff0c;比如发生越界等严重问题时&#xff0c;我们也可以主动调用exit…...

winScp连接Ubantu系统,访问拒绝的解决方式

一、原理分析 win10系统能够通过WinScp连接到Ubantu系统的前提是Ubantu系统开启ssh服务 二、解决步骤 1、Ubantu系统开启ssh服务 更新软件列表 sudo apt update安装OpenSSH服务器 sudo apt install openssh-server开启SSH服务 service sshd start到此&#xff0c;winScp…...

Oracle 建表的存储过程

建表的存储过程 下面是建表的存储过程&#xff0c;用途&#xff1a;通过不同的表&#xff0c;根据不同过滤条件&#xff0c;得到某个字段&#xff0c;例如neid&#xff0c;然后创建一个新表T&#xff0c;表T的表名为拼接XXXX_XXX_neid&#xff0c;表T的字段自行添加 xxx&…...

芯科科技率先支持Matter 1.4,推动智能家居迈向新高度

Matter 1.4引入核心增强功能、支持新设备类型&#xff0c;持续推进智能家居互联互通 近日&#xff0c;连接标准联盟&#xff08;Connectivity Standard Alliance&#xff0c;CSA&#xff09;发布了Matter 1.4标准版本。作为连接标准联盟的重要成员之一&#xff0c;以及Matter标…...

pandas快速解决空列表问题

在使用 Pandas 处理数据时&#xff0c;我们经常会遇到包含空列表&#xff08;即空值或缺失值&#xff09;的问题。Pandas 提供了一些非常有效的方法来处理这些空列表&#xff0c;使得数据清理和预处理变得更加简单和高效。 以下是一个示例&#xff0c;展示如何使用 Pandas 快速…...

sentinel使用手册

1.引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>2.yaml spring:cloud:sentinel:transport:dashboard: localhost:8090 #sentinel控制台地址…...

【继承】—— 我与C++的不解之缘(十九)

前言&#xff1a; 面向对象编程语言的三大特性&#xff1a;封装、继承和多态 本篇博客来学习C中的继承&#xff0c;加油&#xff01; 一、什么是继承&#xff1f; ​ 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段&#xff0c;它允许我们在保持原有类…...

腾讯微众银行大数据面试题(包含数据分析/挖掘方向)面试题及参考答案

为什么喜欢使用 XGBoost,XGBoost 的主要优势有哪些? XGBoost 是一个优化的分布式梯度增强库,在数据科学和机器学习领域应用广泛,深受喜爱,原因主要在于其众多突出优势。 首先,它的精度高,在许多机器学习竞赛和实际应用中,XGBoost 都展现出卓越的预测准确性。其基于决策…...

组合数练习题——c++

题目设置&#xff1a; 现在有x个相同的小球&#xff0c;分给y个人&#xff0c;每个人至少分k个&#xff0c;请问有多少种可能的分发方法&#xff0c;由于结果可能较大&#xff0c;答案对10^97取模。 输入格式&#xff1a; 一行3个整数&#xff1a;x&#xff0c;y, k&#xf…...

Java:JPMS模块化开发

JPMS&#xff08;Java Platform Module System&#xff09;简介 为什么用JPMS&#xff1f; JPMS&#xff08;Java 平台模块系统&#xff09;是 Java 9 引入的模块化系统&#xff0c;也称为 Jigsaw 项目。它为 Java 提供了更精细的模块化机制&#xff0c;用于组织和管理代码&a…...

Spring Boot中配置Flink的资源管理

在 Spring Boot 中配置 Flink 的资源管理&#xff0c;需要遵循以下步骤&#xff1a; 添加 Flink 依赖项 在你的 pom.xml 文件中&#xff0c;添加 Flink 和 Flink-connector-kafka 的依赖项。这里以 Flink 1.14 版本为例&#xff1a; <!-- Flink dependencies --><de…...

【ruby on rails】dup、deep_dup、clone的区别

一、区别 dup 浅复制&#xff1a;dup 方法创建对象的浅复制。 不复制冻结状态&#xff1a;dup 不会复制对象的冻结状态。 不复制单例方法&#xff1a;dup 不会复制对象的单例方法。 deep_dup 深复制&#xff1a;deep_dup 方法创建对象的深复制&#xff0c;递归复制嵌套的对象。…...

鸿蒙开发-HMS Kit能力集(应用内支付、推送服务)

1 应用内支付 开发步骤 步骤一&#xff1a;判断当前登录的华为账号所在服务地是否支持应用内支付 在使用应用内支付之前&#xff0c;您的应用需要向IAP Kit发送queryEnvironmentStatus请求&#xff0c;以此判断用户当前登录的华为帐号所在的服务地是否在IAP Kit支持结算的国…...

springboot中使用mongodb完成评论功能

pom文件中引入 <!-- mongodb --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> yml中配置连接 data:mongodb:uri: mongodb://admin:1234561…...

南京仁品耳鼻喉专科医院:12月启动公益义诊月

专业医疗资源送至“家门口”&#xff01;南京仁品耳鼻喉专科医院启动公益义诊月 随着2024年即将步入尾声&#xff0c;南京仁品耳鼻喉医院为回馈社会&#xff0c;提升公众健康福祉&#xff0c;将于12月隆重推出“三甲专家公益义诊月”活动。此次活动旨在通过汇聚众多耳鼻喉领域…...

微信小程序首页搜索框的实现教程

微信小程序首页搜索框的实现教程 前言 在现代移动应用中,搜索功能是用户获取信息的主要方式之一。对于购物小程序而言,提供一个美观且高效的搜索框,可以显著提升用户体验,帮助用户快速找到他们想要的商品。本文将详细介绍如何在微信小程序中实现一个样式优美的搜索框,包…...

Educational Codeforces Round 151 (Rated for Div. 2)

题目链接 B. Come Together 题意 输入 输出 思路 可以将B、C坐标作A的变换&#xff0c;将A平移至原点&#xff0c;然后分情况讨论: B、C两点都在轴上&#xff0c;具体分为同向轴和其他情况B、C两点都在象限中&#xff0c;具体分为相同象限、对角象限和相邻象限分别位于象限…...

第二十一天 深度学习简介

深度学习&#xff08;Deep Learning&#xff0c;简称DL&#xff09;是机器学习的一个分支&#xff0c;它通过构建和训练深层神经网络模型&#xff0c;从数据中学习和提取特征&#xff0c;以实现复杂任务的自动化处理和决策。以下是对深度学习的详细介绍&#xff1a; 一、起源与…...

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

随笔 从千万粉丝“何同学”抄袭开源项目说起&#xff0c;为何纯技术死路一条&#xff1f; 数据源的统一与拆分 监控报警系统的指标、规则与执行闭环 我们的系统应该配置哪些监控报警项&#xff1f; 监控报警系统如何实现自监控? java 老矣&#xff0c;尚能饭否&#xff…...

elementUI如何dialog对话框 不设置 点击遮罩层 自动关闭的功能

背景 用户在填写dialog对话框的时候&#xff0c;有时候误触 遮罩层&#xff0c;导致form表单直接关闭&#xff0c;用户的信息丢失 代码 要使对话框在点击遮罩层时关闭&#xff0c;您需要在 el-dialog 组件上将 close-on-click-modal 属性设置为 false。以下是更新后的代码&…...

循环神经网络:从基础到应用的深度解析

&#x1f35b;循环神经网络&#xff08;RNN&#xff09;概述 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种能够处理时序数据或序列数据的深度学习模型。不同于传统的前馈神经网络&#xff0c;RNN具有内存单元&#xff0c;能够捕捉序列中前后信息…...

LeetCode 100.相同的树

题目&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 思路&#xff1a;灵神 代码&#xff1a; class Solution {public boolean…...

序列化与反序列化

序列化是将对象转换为可被存储或传输的格式&#xff0c;例如将对象转换为字节流或字符串。序列化的过程可以将对象的状态保存下来&#xff0c;以便在需要时可以重新创建对象。 反序列化则是将序列化的对象转换回原始的对象形式&#xff0c;以便可以使用和操作这些对象。 序列…...

spring boot打包fat jar

所谓fat jar就是包含所有依赖的jar以及其他开发的代码的jar包。可以通过java -jar xxx.jar直接启动运行&#xff0c;不需要部署到tomcat中间件就能运行。 接下来我们使用maven进行打包&#xff1a; &#xff08;1&#xff09;在需要带包的主模块的pom中添加build依赖&#xf…...

2021年美亚杯电子数据取证大赛-个人赛

资格赛-案件背景 2021年10月某日早上&#xff0c;本市一个名为"大路建设"的高速公路工地主管发现办公室的计算机被加密并无法开启&#xff0c;其后收到了勒索通知。考虑到高速公路的基建安全&#xff0c;主管决定报警。警方调查人员到达现场取证&#xff0c;发现办公…...

用 React 编写一个笔记应用程序

这篇文章会教大家用 React 编写一个笔记应用程序。用户可以创建、编辑、和切换 Markdown 笔记。 1. nanoid nanoid 是一个轻量级和安全的唯一字符串ID生成器&#xff0c;常用于JavaScript环境中生成随机、唯一的字符串ID&#xff0c;如数据库主键、会话ID、文件名等场景。 …...

泛型擦除是什么?

泛型擦除(Type Erasure)是Java编译器在编译泛型代码时的一种机制&#xff0c;它的目的是确保泛型能够与JAVA的旧版本(即不支持泛型的版本)兼容。泛型擦除会在编译时移除泛型类型信息&#xff0c;并将泛型类型替换为其非泛型的上限类型(通常是Object) 详细解释 在Java中&#…...

鸿蒙Next星河版基础代码

目录&#xff1a; 1、鸿蒙箭头函数的写法2、鸿蒙数据类型的定义3、枚举的定义以及使用4、position绝对定位及层级zIndex5、字符串的拼接转换以及数据的处理(1)字符串转数字(2)数字转字符串(3)布尔值转换情况(4)数组的增删改查 6、三元表达式7、鸿蒙for循环的几种写法7.1、基本用…...

物联网智能项目:智能家居系统的设计与实现

物联网(Internet of Things,IoT)技术正在迅速改变我们的生活方式,特别是在智能家居、工业自动化、环境监控等领域。物联网智能项目通过将设备、传感器、控制器等通过互联网连接,实现设备间的智能交互,带来高效、便捷和智能的体验。本文将介绍一个典型的物联网智能家居项目…...

STL算法之set相关算法

STL一共提供了四种与set(集合)相关的算法&#xff0c;分别是并集(union)、交集(intersection)、差集(difference)、对称差集(symmetric difference)。 目录 set_union set_itersection set_difference set_symmetric_difference 所谓set&#xff0c;可细分为数学上定义的和…...

STM32主要功能

STM32 是由意法半导体&#xff08;STMicroelectronics&#xff09;推出的一系列基于 ARM Cortex-M 内核的微控制器&#xff08;MCU&#xff09;。STM32 微控制器广泛应用于嵌入式系统中&#xff0c;因其高性能、低功耗、丰富的外设接口和多种封装形式而被广泛采用。其主要功能和…...

【数据结构】--ArrayList与顺序表

文章目录 1. 线性表2. 顺序表3. ArrayList简介4. MyArrayList的实现5. ArrayList使用5.1 ArrayList的构造5.2 ArrayList常见操作5.3 ArrayList的遍历5.4 ArrayList的扩容机制 6. ArrayList的具体使用6.1 简单的洗牌算法6.2 杨辉三角 1. 线性表 线性表&#xff08;linear list&…...

多线程篇-3--java内存模型(主内存,共享内存,三大特性,指定重排)

Java内存模型 Java Memory Model&#xff0c;简称JMM&#xff0c;本身是一种抽象的概念&#xff0c;实际上并不存在&#xff0c;它描述的是一组规范&#xff0c;通过这组规范定义了程序中各个变量&#xff08;包括实例字段&#xff0c;静态字段和构成数组对象的元素&#xff0…...

Android Studio的AI工具插件使用介绍

Android Studio的AI工具插件使用介绍 一、前言 Android Studio 的 AI 工具插件具有诸多重要作用&#xff0c;以下是一些常见的方面&#xff1a; 代码生成与自动补全 代码优化与重构 代码解读 学习与知识获取 智能搜索与资源推荐实际使用中可以添加注释&#xff0c;解读某段代…...

【Yarn Bug】 yarn 安装依赖出现的网络连接问题

最近&#xff0c;在初始化 Ant Design Pro 前端脚手架过程中&#xff0c;使用 yarn 安装依赖时遇到了网络连接问题&#xff0c;具体错误信息提示为 info There appears to be trouble with your network connection. Retrying...。通过百度查询&#xff0c;得知出现这种问题的原…...

Vue3的Setup语法动态获取Dom或调用子组件方法

官方文档&#xff1a;https://cn.vuejs.org/api/composition-api-setup.html#composition-api-setup 获取Dom <template><div class"todo" ref"todoDom" click"handleClick"></div> </template><script lang"t…...