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

四、自然语言处理_02RNN基础知识笔记

1、RNN的定义

RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络架构,它与传统的前馈神经网络(Feedforward Neural Network)不同,主要区别在于它能够处理输入数据之间的时间依赖性,这使得它特别适合于处理时间序列数据、自然语言文本、语音信号等类型的数据

2、RNN的工作原理与结构

2.1 工作原理

RNN通过在网络中引入循环结构来处理序列数据,使得网络能够在处理当前输入时考虑到之前的所有输入,这种结构允许信息在网络中持续存在,从而实现对序列数据的动态特征抽取

  • 循环结构:网络中的循环允许信息在时间步之间传递(通过循环的方式来抽取时序信号的特征)
  • 逐个处理:序列中的每个元素都被逐一处理,但每个元素的处理都依赖于前一个元素的处理结果
  • 前后依赖:当前的输出不仅依赖于当前的输入,还依赖于之前所有输入的累积效应(前面的处理会影响后面的处理)
  • 中间隐藏状态:RNN通过隐藏状态来存储和传递之前输入的信息,从而实现对序列的长期依赖关系的捕捉

2.2 工作结构

2.3.1 结构图

上图是RNN的工作结构示意图,包含X、A、h三个主要的模块,其简洁地展示了RNN如何通过循环结构处理序列数据,以及如何通过隐藏状态在时间步之间传递信息:

  • 循环结构:图中显示了RNN的核心特性——循环,每个方框 A 代表网络中的一个重复模块(其实也就是权重矩阵),这个模块在每个时间步都会接收新的输入并产生输出

  • 时间步:图中的 X0​,X1​,X2​,…,Xt​ 表示输入序列在不同时间步的输入,例如,如果处理的是文本数据,则 X0​ 可能是第一个词的向量表示,X1​ 是第二个词的向量表示,以此类推

  • 隐藏状态h0​,h1​,h2​,…,ht​ 表示在每个时间步的隐藏状态,隐藏状态是RNN的“记忆”,它携带了之前时间步的信息,在每个时间步,隐藏状态不仅依赖于当前的输入 Xt​,还依赖于前一个时间步的隐藏状态 ht−1​ ,在序列的末尾,最终的隐藏状态 hn​ 可以作为整个序列的上下文信息,用于分类、情感分析等任务

  • 信息传递:在每个时间步,隐藏状态 ht​ 会作为下一个时间步的输入的一部分,这样信息就可以在时间步之间传递,这种传递是通过循环连接实现的,使得网络能够捕捉到序列中元素之间的依赖关系

  • 输出:在每个时间步,RNN可以产生一个输出,这个输出可以是基于当前隐藏状态的,也可以是整个序列处理完毕后的最终输出

  • 参数共享:在RNN中,所有时间步的重复模块“A”共享相同的参数,这意味着无论序列有多长,网络都使用相同的权重来处理每个元素

  • 训练:RNN的训练通常涉及到反向传播算法的变种,如反向传播通过时间(Backpropagation Through Time, BPTT),以处理序列数据的时序特性

2.3.2 示例

对于句子“宝,你吃饭了吗? ”,分词后得到的结果是['宝', ',', '你', '吃饭', '了', '吗', '?'] ,这些词会被循环地进行处理,具体如下: x0​ = “宝”,x0​ 输入到权重矩阵 A ,得到 h0​ (在实际的RNN实现中,如PyTorch或TensorFlow,h0​ 通常是由用户手动初始化的,以确保网络从一个已知的状态开始学习,这是因为RNN在处理序列的第一个元素之前没有先前的隐藏状态可以依赖。)

x1 = “,”,x1​ 再输入到权重矩阵 A ,并与上一步的 h0 相结合,得到 h1​

x2 = “你”,x2 再输入到权重矩阵 A ,并与上一步的 h1 相结合,得到 h2​

x3 = “吃饭'”,x3 再输入到权重矩阵 A ,并与上一步的 h2 相结合,得到 h3

x4 = “了”,x4 再输入到权重矩阵 A ,并与上一步的 h3 相结合,得到 h4​

x5 = “吗”,x5 再输入到权重矩阵 A ,并与上一步的 h4 相结合,得到 h5​

x6 = “?”,x6 再输入到权重矩阵 A ,并与上一步的 h5 相结合,得到 h6​ 最后得到的h6就是最终隐藏状态​,可以作为整个序列的上下文信息

3、RNN的隐藏状态更新公式

上面的公式是RNN中隐藏状态更新的一个常见表达式,它结合了当前时间步的输入和前一时间步的隐藏状态,具体说明如下:

  • xt​:在时间步 t 的输入向量,表示当前输入
  • Wih​:输入到隐藏状态的权重矩阵,用于将当前输入 xt​ 转换为隐藏状态的输入部分
  • Whh​:隐藏状态到隐藏状态的权重矩阵,用于将前一时间步的隐藏状态 ht−1​ 传递到当前时间步
  • bih​ 和 bhh​:分别是输入和隐藏状态的偏置项
  • tanh:激活函数,通常用于引入非线性特性,使模型能够学习复杂的模式
  • ht​:输出结果,即:在时间步 t 的隐藏状态,表示当前时间步的记忆

Tanh激活函数与‌Sigmoid、ReLU的区别:

  • 输出范围

    • Sigmoid函数‌:输出范围在0到1之间,其输出值可以被看作是一个概率值,用于表示某个事件发生的概率‌

    • ReLU函数‌:输出范围在0到正无穷之间,输入小于0时输出为0,输入大于0时输出等于输入值

    • Tanh函数‌:输出范围在-1到1之间

  • 梯度特性

    • Sigmoid函数‌:在输入值较大或较小时,梯度接近于0,导致训练过程中梯度消失的问题;此外,Sigmoid函数的计算开销较大,涉及指数运算,可能会影响大规模数据和深层网络的计算效率‌

    • ReLU函数‌:在正值区间内具有线性特性,解决了梯度消失问题;ReLU函数在负值区间梯度为0,可能导致一些神经元永远不会被激活,从而停止更新‌

    • ‌Tanh函数‌:也存在梯度饱和的问题,但其输出值范围在-1到1之间,相对于Sigmoid函数,其输出值范围更大,可能导致模型学习更快‌

  • 适用场景

    • Sigmoid函数‌:适用于二分类问题或输出概率的场景

    • ReLU函数‌:适用于需要快速计算的场景,特别是在深层网络中,因为它解决了梯度消失问题,并且在正值区间内具有线性特性,所以计算速度很快‌

    • Tanh函数‌:通常用于隐藏层的激活函数,因为其输出范围更广,可以更好地表示数据的分布‌

4、RNN的使用方法及示例

由于时序数据通常需要进行向量转换(如文本词向量),经过训练和预测后,再解析为用户所需内容,所以整个处理过程通常会包含编码器和解码器两部分

在深度学习框架(如PyTorch)中,,RNN可以通过以下两种方式结合使用:

  • nn.RNN:这是一个封装好的RNN层,可以自动处理循环逻辑,通常用于编码器部分
  • nn.RNNCell:这是一个基本的RNN单元,需要手动实现循环逻辑,通常用于解码器部分,特别是在需要更精细控制的场景下

nn.RNN示例:

import torch 
from torch import nn# 定义输入语句和初始隐藏状态h0
# 5表示序列长度(sequence length),3表示批次大小(batch size),10表示每个时间步的输入特征数(input size)
X = torch.randn(5, 3, 10)
# 1表示RNN层的数量(这里只有一层),3表示批次大小,20表示隐藏层的维度(hidden size)
h0 = torch.zeros(1, 3, 20, dtype=torch.float32)# 调用RNN(与input和h0的最后一个参数相对应)
rnn = nn.RNN(input_size=10, hidden_size=20)
# 获得output和hn(output包含了每个时间步的隐藏状态的输出,hn只包含最后一个时间步的隐藏状态)
output, hn = rnn(X, h0)# 查看output和hn的形状和内容
print(output.shape, hn.shape)
print(output)
print(hn)

nn.RNNCell示例:

import torch 
from torch import nnX = torch.randn(5, 3, 10)
hn = torch.zeros(3, 20, dtype=torch.float32)
# 定义一个output空列表,用于存储每个时间步的隐藏状态
output = []# 调用RNN(与input和hn的最后一个参数相对应)
rnn_cell = nn.RNNCell(input_size=10, hidden_size=20)# 循环存储每个时间步的隐藏状态
for x in X:hn = rnn_cell(x, hn)output.append(hn)# 将列表中的所有隐藏状态堆叠成一个张量,形状为 (sequence_length, 3, 20)
output = torch.stack(output)# 查看output的形状和内容
print(output.shape)
print(output)

相关文章:

四、自然语言处理_02RNN基础知识笔记

1、RNN的定义 RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络架构,它与传统的前馈神经网络(Feedforward Neural Network)不同,主要区别在于它能够处理输入数…...

《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《船舶物资与市场》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《船舶物资与市场》级别? 答:国家级。主管单位:中国船舶集团有限公司 主办单…...

【工具变量】上市公司企业所在地城市等级直辖市、副省级城市、省会城市 计划单列市(2005-2022年)

一、包含指标: 股票代码 股票代码 股票简称 年份 所属城市 直辖市:企业所在地是否属于直辖市。1是,0否。 副省级城市:企业所在地是否属于副省级城市。1是,0否。 省会城市&a…...

websocket通信

“WebSocket 允许客户端和服务器在连接建立后随时互相发送数据,而无需每次交互都重新建立连接。”我想请问,第一次前端往后端发送数据时,传递的数据应该满足接口的参数内容,在第一次建立连接后之后的数据传递还是要满足接口的参数…...

数据结构——单调队列

这篇博客我们来讨论一下单调队列的问题,其实和之前学的单调栈都是一种上通过改变操作来解决问题的一种数据结构 我们先来回忆一下单调栈的内容,这样方便将其和单调队列做区分 单调栈:(单调性从栈底到栈顶) 1.单调栈是一种栈数据…...

qt环境 C11thread子线程关闭定时器问题

环境情况:使用的是thread c11线程和qt的定时器 报错: QObject::~QObject: Timers cannot be stopped from another thread 主要原因: 1.开启了一个事件循环线程处理消息类型,但是有一种消息类型需要关闭资源,这就导…...

深入浅出:虚拟化技术及其在现代 IT 中的应用

文章目录 虚拟化的定义与基本原理虚拟机监控程序(Hypervisor) 虚拟化的历史与发展虚拟化的实现方式虚拟化的优势1. 提高资源利用率2. 降低成本3. 提升灵活性和可扩展性4. 加快应用部署和迁移5. 提高安全性和隔离性 不同类型虚拟化技术服务器虚拟化实际应…...

Golang内存模型总结1(mspan、mcache、mcentral、mheap)

1.内存模型 1.1 操作系统存储模型 从上到下分别是寄存器、高速缓存、内存、磁盘,其中越往上速度越快,空间越小,价格越高。 关键词是多级模型和动态切换 1.2 虚拟内存与物理内存 虚拟内存是一种内存管理技术,允许计算机使用比…...

优先算法 —— 滑动窗口系列 - 无重复字符的最长子串

目录 前言 1. 无重复字符的最长子串 2. 题目解析 3. 算法原理 解法1:暴力枚举 哈希表(判断字符是否有重复出现) 解法2:滑动窗口 4. 代码 前言 当我们发现暴力解法两个指针都不回退,都是向同一个方向移动的时候我…...

Python 浏览器自动化新利器:DrissionPage,让网页操作更简单!

Python 浏览器自动化新利器:DrissionPage,让网页操作更简单! 文章目录 Python 浏览器自动化新利器:DrissionPage,让网页操作更简单!🚀 引言🌟 DrissionPage简介🛠️ 三大…...

[Python] 进阶之路:模块、包和异常处理

在掌握了Python的类与对象后,下一步是深入理解模块化开发和异常处理。模块与包帮助我们组织代码,增强代码的可维护性和重用性,而异常处理则是编写健壮代码的重要技能。本文将系统讲解Python中模块、包和异常处理的核心概念与实用技巧。 一、模…...

SpringBoot 整合 Avro 与 Kafka 详解

SpringBoot 整合 Avro 与 Kafka 详解 在大数据处理和实时数据流场景中,Apache Kafka 和 Apache Avro 是两个非常重要的工具。Kafka 作为一个分布式流处理平台,能够高效地处理大量数据,而 Avro 则是一个用于序列化数据的紧凑、快速的二进制数…...

windows C#-使用 Override 和 New 关键字(上)

在 C# 中,派生类中的方法可具有与基类中的方法相同的名称。 可使用 new 和 override 关键字指定方法的交互方式。 override 修饰符用于扩展基类 virtual 方法,而 new 修饰符用于隐藏可访问的基类方法 。 在控制台应用程序中,声明以下两个类…...

FaRM译文

No compromises: distributed transactions with consistency, availability, and performance Aleksandar Dragojevic, Dushyanth Narayanan, Edmund B. Nightingale, Matthew Renzelmann, Alex Shamis, Anirudh Badam, Miguel Castro Microsoft Research 摘要 具有强一致…...

大数据新视界 -- Hive 元数据管理:核心元数据的深度解析(上)(27 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

大数据项目-Django基于聚类算法实现的房屋售房数据分析及可视化系统

《[含文档PPT源码等]精品Django基于聚类算法实现的房屋售房数据分析及可视化系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程课程答疑等! 数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog 后台管理系统涉及技术: 后台使…...

当大的div中有六个小的div,上面三个下面三个,当外层div高变大的时候我希望里面的小的div的高也变大

问: 当大的div中有六个小的div,上面三个下面三个,当外层div高变大的时候我希望里面的小的div的高也变大 回答: 这时候我们就不能写死六个小的div的高度,否则上下的小的div的间距就会变大,因为他们的高度…...

使用 Postman 上传二进制类型的图片到后端接口写法

我们有的时候会有需求,就是通过 postman 传递二进制图片到后端接口,如下图: 那我们的 Java 接口需要怎么写呢? Spring Boot 接收这些数据的方式需要使用 RequestBody 注解来处理原始的二进制数据(byte[])。…...

字符串函数和内存函数

字符串函数 1、strlcpy 【字符串拷贝】 (将原字符串中的字符拷贝到目标字符数组中,包括终止符号\0,并在这里停止;为了避免越界,目标字符串数组应该足够大去接收)👆 (返回值是 dest…...

uC/OSII学习笔记(一)任务的增删改查

使用天玛智控的控制器,基础工程文件已移植ucosii。 正常的任务创建流程为: 1.OSInit(); 2.OSTaskCreate(); 3.OSStart(); 但是天玛对其有做修改,任务创建直接调用OSTaskCreate()函数即可,不用在…...

如何搭建JMeter分布式集群环境来进行性能测试

在性能测试中,当面对海量用户请求的压力测试时,单机模式的JMeter往往力不从心。如何通过分布式集群环境,充分发挥JMeter的性能测试能力?这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么,如何轻松搭建…...

蓝桥杯准备训练(lesson2 ,c++)

3.1 字符型 char //character的缩写在键盘上可以敲出各种字符,如: a , q , , # 等,这些符号都被称为字符,字符是⽤单引号括 起来的,如: ‘a’ , ‘b’ &…...

【踩坑】Collectors.toMap 抛出 NullPointerException 异常

1. 场景重现 public class Test01 {public static void main(String[] args) {List<Person> list Arrays.asList(new Person("anna", 17, 0), new Person("bob", 18, 1), new Person("jack", 20, null));Map<String, Integer> nam…...

泷羽sec专题课笔记-- Linux作业--开机自启动方法以及破解

本笔记为 泷羽sec 《红队全栈课程》学习笔记&#xff0c;课程请可自行前往B站学习&#xff0c;课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等&#xff0c;请使用该课程、本笔记以及课程和笔记中提及工具的读者&#xff0c;遵守网络安全相关法律法规&#xff0c;切勿…...

OpenCV

MFC&#xff08;C&#xff09;的使用 1、官网下载 https://opencv.org/ 选 Library - Release - 选择你需要的版本 2、安装 3、配置环境变量 将 OpenCV 的bin目录 C:\Program Files\OpenCV481\opencv\build\bin添加到系统的PATH环境变量中。这使得在运行程序时能够找到 Open…...

Wwise 使用MIDI文件、采样音频

第一种&#xff1a;当采样音频只有一个文件的时候 1.拖入MIDI文件到Interactive Music Hierarchy层级 2.拖入采样音频到Actor-Mixer Hierarchy层级 3.勾选MIDI显示出面板&#xff0c;设置Root Note与采样音频音高相同&#xff0c;这里是C#5 4.播放测试&#xff0c;成功&…...

OpenStack-Glance组件

Glance Glance使用磁盘格式和容器格式基础配置镜像转换 Glance 是 OpenStack 的镜像服务&#xff0c;负责存储、发现和管理虚拟机镜像。它允许用户创建和共享镜像&#xff0c;用于启动虚拟机实例。 Glance 的主要功能 &#xff08;1&#xff09;虚拟机镜像的管理 支持镜像的上…...

写译热点单词 | 50篇文章整理 | 手敲自用

目录 文化类 政治类 经济类 教育类 科技类 健康类 安全类 体育类 第二版 删去了部分不太常用的 文化类 1. 阴历: lunar calendar 2. 阳历: solar calendar 3. 春节: the Spring Festival 4. 除夕: Chinese New Year’s Eve 5. 清明节: Tomb Sweeping Day 6. 重阳…...

【UE5 C++】判断两点连线是否穿过球体

目录 前言 方法一 原理 代码 测试 结果 方法二 原理 一、检查连线与球体的相交情况 二、检查距离与球体半径的关系 三、检查连线与球体的相交 代码 前言 通过数学原理判断空间中任意两点的连线是否穿过球体&#xff0c;再通过射线检测检验算法的正确性。 方法一 …...

A1228 php+Mysql旅游供需平台的设计与实现 导游接单 旅游订单 旅游分享网站 thinkphp框架 源码 配置 文档 全套资料

旅游供需平台 1.项目描述2. 开发背景与意义3.项目功能4.界面展示5.源码获取 1.项目描述 随着社会经济的快速发展&#xff0c;生活水平的提高&#xff0c;人们对旅游的需求日益增强&#xff0c;因此&#xff0c;为给用户提供一个便利的查看导游信息&#xff0c;进行导游招募的平…...

【linux】服务器Ubuntu20.04安装cuda11.8教程

【linux】服务器Ubuntu20.04安装cuda11.8教程 文章目录 【linux】服务器Ubuntu20.04安装cuda11.8教程到官网找到对应版本下载链接终端操作cudnn安装到官网下载下载后解压进入解压后的目录&#xff1a;将头文件复制到 /usr/local/cuda/include/ 目录&#xff1a;将库文件复制到 …...

SpringMVC其他扩展

一、全局异常处理机制: 1.异常处理两种方式: 开发过程中是不可避免地会出现各种异常情况的&#xff0c;例如网络连接异常、数据格式异常、空指针异常等等。异常的出现可能导致程序的运行出现问题&#xff0c;甚至直接导致程序崩溃。因此&#xff0c;在开发过程中&#xff0c;…...

用“*”构成一个倒三角形:JAVA

输入&#xff1a;5 输出&#xff1a; ******* ***** *** * 代码&#xff1a; import java.util.Scanner; //倒三角 public class FF6 {public static void main(String[] args) {Scanner scannernew Scanner(System.in);while (scanner.hasNextInt()){int nscanner…...

洛谷P2670扫雷游戏(Java)

三.P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。玩…...

Windows 11 环境下 条码阅读器输入到记事本的内容不完整

使用Windows11时&#xff0c;为什么记事本应用程序中的扫描数据被截断或不完整?为什么sdo 特殊字符的显示与Windows 10 记事本应用程序不同? 很多人认为和中文输入法有关&#xff0c;其实主要问题出在这个windows11下的记事本程序上&#xff0c;大家知道这个就可以了&#x…...

C# 动态类型 Dynamic

文章目录 前言1. 什么是 Dynamic&#xff1f;2. 声明 Dynamic 变量3. Dynamic 的运行时类型检查4. 动态类型与反射的对比5. 使用 Dynamic 进行动态方法调用6. Dynamic 与 原生类型的兼容性7. 动态与 LINQ 的结合8. 结合 DLR 特性9. 动态类型的性能考虑10. 何时使用 Dynamic&…...

设计模式10:观察者模式(订阅-发布)

系列总链接&#xff1a;《大话设计模式》学习记录_net 大话设计-CSDN博客 参考&#xff1a;简说设计模式——工厂方法模式 - JAdam - 博客园 参考&#xff1a;简单工厂模式(Simple Factory Pattern) - 回忆酿的甜 - 博客园 一&#xff1a;概述 观察者模式&#xff0…...

2020 年 12 月青少年软编等考 C 语言四级真题解析

目录 T1. 开餐馆思路分析T2. 邮票收集思路分析T3. 带通配符的字符串匹配思路分析T4. 删除数字思路分析T1. 开餐馆 北大信息学院的同学小明毕业之后打算创业开餐馆。现在共有 n n n 个地点可供选择。小明打算从中选择合适的位置开设一些餐馆。这 n n n 个地点排列在同一条直线…...

高级java每日一道面试题-2024年12月03日-JVM篇-什么是Stop The World? 什么是OopMap? 什么是安全点?

如果有遗漏,评论区告诉我进行补充 面试官: 什么是Stop The World? 什么是OopMap? 什么是安全点? 我回答: 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;Stop The World、OopMap 和 安全点 是与垃圾回收&#xff08;GC&#xff09;和性能优化密切相关的概念。理…...

探索 Apache Commons Collections 4:Java 集合框架的强大扩展

在 Java 开发中&#xff0c;集合框架是处理数据的核心工具。然而&#xff0c;标准 Java 集合框架虽然功能强大&#xff0c;但在某些场景下仍显得不够灵活。Apache Commons Collections 4&#xff08;以下简称 commons-collections4&#xff09;作为一个强大的工具库&#xff0c…...

NIO(New IO)和BIO(Blocking IO)的区别

Java中的NIO&#xff08;New IO&#xff09;和BIO&#xff08;Blocking IO&#xff09;的区别及NIO的核心组件 Java中的NIO&#xff08;New IO&#xff09;和BIO&#xff08;Blocking IO&#xff09;是两种不同的网络通信模型&#xff0c;各自具有独特的特性和适用场景。下面将…...

【串口助手开发】visual studio 使用C#开发串口助手,生成在其他电脑上可执行文件,可运行的程序

1、改成Release&#xff0c;生成解决方案 串口助手调试成功后&#xff0c;将Debug改为Release&#xff0c;点击生成解决方案 2、运行exe文件 生成解决方案后&#xff0c;在bin文件夹下&#xff0c; Release文件夹下&#xff0c;生成相关文件 复制一整个Release文件夹&#xf…...

Linux 编译 convert_geotiff 时遇到的几个问题

步骤1&#xff1a;安装libgeotiff-dev 在ubuntu上&#xff0c;安装命令为&#xff1a; sudo apt-get install libgeotiff-dev在macos上&#xff0c;安装命令为&#xff1a; brew install libgeotiff在Linux上安装命令为&#xff1a; sudo yum install libgeotiff-devel注意…...

执行存储过程报:This function has none of DETERMINISTIC, NO SQL ???

执行存储过程时报如下错你该怎么整&#xff1f; [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)来…...

JAVA |日常开发中Servlet详解

JAVA &#xff5c;日常开发中Servlet详解 前言一、Servlet 概述1.1 定义1.2 历史背景 二、Servlet 的生命周期2.1 加载和实例化2.2 初始化&#xff08;init 方法&#xff09;2.3 服务&#xff08;service 方法&#xff09;2.4 销毁&#xff08;destroy 方法&#xff09; 三、Se…...

Spring Cloud Alibaba 之 “Sentinel”

从网上下载好sentinel-dashboard-1.6.3.jar&#xff0c;然后执行 java -jar sentinel-dashboard-1.6.3.jar,执行成功之后在浏览器输入localhost:8080&#xff0c;Sentinel的登录名和密码都是sentinel,登陆成功之后看到只有一个首页。 接下来开始整合Spring Cloud Alibaba Sen…...

UE4外挂实现分析-PC端-附源码

UE4外挂实现分析-PC端 游戏分析 分析工具&#xff1a; Cheat Engine 7.5 x64dbg IDA Pro 参考文章&#xff1a; UE4逆向笔记之GWORLD GName GameInstance - 小透明‘s Blog 【项目源码下载】https://download.csdn.net/download/Runnymmede/90079718 本次分析的游戏使用UE4.2…...

力扣88题:合并两个有序数组

力扣88题&#xff1a;合并两个有序数组 题目描述 给定两个按非递减顺序排列的整数数组 nums1 和 nums2&#xff0c;以及它们的长度 m 和 n&#xff0c;要求将 nums2 合并到 nums1&#xff0c;使得合并后的数组仍按非递减顺序排列。 输入与输出 示例 1&#xff1a; 输入&am…...

Lua面向对象实现

Lua中的面向对象是通过表&#xff08;table&#xff09;来模拟类实现的&#xff0c;通过setmetatable(table,metatable)方法&#xff0c;将一个表设置为当前表的元表&#xff0c;之后在调用当前表没有的方法或者键时&#xff0c;会再查询元表中的方法和键&#xff0c;以此来实现…...

小程序 模版与配置

WXML模版语法 一、数据绑定 1、数据绑定的基本原则 &#xff08;1&#xff09;在data中定义数据 &#xff08;2&#xff09;在WXML中使用数据 2、在data中定义页面的数据 3、Mustache语法的格式&#xff08;双大括号&#xff09; 4、Mustache语法的应用场景 &#xff08;…...