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

LLM:归一化 总结

一、Batch Normalization

原理

Batch Normalization 是一种用于加速神经网络训练并提高稳定性的技术。它通过在每一层网络的激活值上进行归一化处理,使得每一层的输入分布更加稳定,从而加速训练过程,并且减轻了对参数初始化的依赖。

公式

在这里插入图片描述

例子

下面是一个使用 Python 和 NumPy 实现的 Batch Normalization 例子:

import numpy as npclass BatchNormalization:def __init__(self, epsilon=1e-5, momentum=0.9):# 初始化BatchNormalization类,设定epsilon和momentum的默认值self.epsilon = epsilon  # 防止分母为零的小常数self.momentum = momentum  # 用于更新运行中均值和方差的动量self.running_mean = None  # 运行中的均值self.running_var = None  # 运行中的方差self.gamma = None  # 缩放参数self.beta = None  # 平移参数def initialize_params(self, D):# 初始化gamma, beta, running_mean和running_var的参数self.gamma = np.ones(D)  # 初始化缩放参数为1self.beta = np.zeros(D)  # 初始化平移参数为0self.running_mean = np.zeros(D)  # 初始化运行中的均值为0self.running_var = np.ones(D)  # 初始化运行中的方差为1def forward(self, X, training=True):# 前向传播,X是输入数据,training表示是否为训练模式if self.running_mean is None:# 如果是第一次运行,初始化参数self.initialize_params(X.shape[1])  # X.shape[1]是特征的维度if training:# 训练模式下batch_mean = np.mean(X, axis=0)  # 计算mini-batch的均值batch_var = np.var(X, axis=0)  # 计算mini-batch的方差# axis=0 代表沿着第一维,也就是行,可以想象成一个尺子,和每行对齐,依次往下移动,得到所有行在这些列上的均值,因此维度是【5】# axis=1 代表沿着第二维,也就是列。同理,最后维度是行的维度。# 更新运行中的均值self.running_mean = self.momentum * self.running_mean + (1 - self.momentum) * batch_mean# 更新运行中的方差self.running_var = self.momentum * self.running_var + (1 - self.momentum) * batch_var# 标准化输入数据X_normalized = (X - batch_mean) / np.sqrt(batch_var + self.epsilon)else:# 测试模式下,使用运行中的均值和方差进行标准化X_normalized = (X - self.running_mean) / np.sqrt(self.running_var + self.epsilon)# 应用可学习的缩放和平移参数out = self.gamma * X_normalized + self.betareturn outdef __call__(self, X, training=True):# 使类实例可以像函数一样被调用return self.forward(X, training)# 示例数据
np.random.seed(0)  # 设置随机种子以确保结果可重复
X = np.random.randn(10, 5)  # 生成一个随机的10x5的矩阵# 创建BatchNormalization实例
bn = BatchNormalization()# 在训练模式下进行前向传播
output_train = bn(X, training=True)
print("Training Mode Output:\n", output_train)  # 打印训练模式下的输出# 在测试模式下进行前向传播
output_test = bn(X, training=False)
print("Testing Mode Output:\n", output_test)  # 打印测试模式下的输出

维度变化

假设输入数据 X 的形状是 (batch_size, D),其中 D 是特征的维度,batch_size 是 mini-batch 的大小。Batch Normalization 处理后的输出数据形状保持不变,仍然是 (batch_size, D)

应用场景

Batch Normalization 可以应用于网络的任意层,常见的应用包括:

  • 全连接层后的激活值
  • 卷积层后的激活值(在这种情况下,均值和方差是沿着通道维度计算的)

结论

Batch Normalization 是一种强大的正则化和加速训练的方法,通过对 mini-batch 内的数据进行归一化处理,减少了内部协变量偏移,提高了网络的训练效率和稳定性。
BN的基本思想就是:把网络的每个隐含层的分布都归一化到标准正态。其实就是把越来越偏的分布强制拉回到比较标准的分布,这样使得激活函数的输入值落在该激活函数对输入比较敏感的区域,这样一来输入的微小变化就会导致损失函数较大的变化。通过这样的方式可以使梯度变大,就避免了梯度消失的问题,而且梯度变大意味着收敛速度快,能大大加快训练速度。

参考:https://blog.csdn.net/BXD1314/article/details/120148013
https://zhuanlan.zhihu.com/p/244983042

二、Layer Normalization

原理

Layer Normalization 是一种用于标准化神经网络层输出的技术,它与 Batch Normalization 类似,但不同的是它是沿着每个样本的特征维度进行标准化。Layer Normalization 不依赖于 mini-batch 的统计数据,因此在处理 RNN 等时间序列数据时表现更好。

公式

在这里插入图片描述

例子

下面是一个使用 Python 和 NumPy 实现的 Layer Normalization 例子:

import numpy as npclass LayerNormalization:def __init__(self, epsilon=1e-5):# 初始化LayerNormalization类,设定epsilon的默认值self.epsilon = epsilon  # 防止分母为零的小常数self.gamma = None  # 缩放参数self.beta = None  # 平移参数def initialize_params(self, D):# 初始化gamma和beta的参数self.gamma = np.ones(D)  # 初始化缩放参数为1self.beta = np.zeros(D)  # 初始化平移参数为0def forward(self, X):# 前向传播,X是输入数据if self.gamma is None or self.beta is None:# 如果是第一次运行,初始化参数self.initialize_params(X.shape[1])  # X.shape[1]是特征的维度# 计算每个样本的均值和方差mean = np.mean(X, axis=1, keepdims=True)  # keepdims=True保持结果的维度一致var = np.var(X, axis=1, keepdims=True)  # keepdims=True保持结果的维度一致# 标准化输入数据X_normalized = (X - mean) / np.sqrt(var + self.epsilon)# 应用可学习的缩放和平移参数out = self.gamma * X_normalized + self.betareturn outdef __call__(self, X):# 使类实例可以像函数一样被调用return self.forward(X)# 示例数据
np.random.seed(0)  # 设置随机种子以确保结果可重复
X = np.random.randn(10, 5)  # 生成一个随机的10x5的矩阵# 创建LayerNormalization实例
ln = LayerNormalization()# 进行前向传播
output = ln(X)
print("Layer Normalization Output:\n", output)  # 打印输出

关键点解释

  • 计算每个样本的均值和方差

    • 使用 np.mean(X, axis=1, keepdims=True) 计算每个样本的均值,axis=1 表示沿着特征维度计算,keepdims=True 确保输出的形状与输入一致。
    • 使用 np.var(X, axis=1, keepdims=True) 计算每个样本的方差,axis=1 表示沿着特征维度计算,keepdims=True 确保输出的形状与输入一致。
  • 标准化和应用缩放和平移参数

    • 对输入数据进行标准化,得到 X_normalized
    • 使用可学习的参数 gammabeta 对标准化后的数据进行缩放和平移,得到最终输出 out

总结

Layer Normalization 是一种有效的正则化技术,特别适用于 RNN 和其他不依赖于 mini-batch 统计的模型。它通过对每个样本的特征维度进行标准化,提供了更稳定的训练过程。

参考:https://pytorch.org/docs/stable/generated/torch.nn.LayerNorm.html
https://zhuanlan.zhihu.com/p/54530247

三、RMSNorm

公式

在这里插入图片描述

RMSNorm的思想就是移除层归一化中的均值的计算部分。

代码

import torch
import torch.nn as nn# 假设有一个批次(batch)的嵌入向量
batch, sentence_length, embedding_dim = 20, 5, 10# 生成随机的嵌入向量,形状为 [20, 5, 10]
embedding = torch.randn(batch, sentence_length, embedding_dim)# 创建RMSNorm实例,传入的特征维度是 embedding_dim
rms_norm = nn.RMSNorm(embedding_dim)# 对嵌入向量进行归一化
normalized_embedding = rms_norm(embedding)print("Original Embedding:\n", embedding.shape)
print("Normalized Embedding:\n", normalized_embedding.shape)

参考:
https://mltalks.medium.com/rmsnorm%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB-bfae83f6d464
https://blog.csdn.net/yjw123456/article/details/138139970
https://blog.csdn.net/qq_43814415/article/details/136985115
https://pytorch.org/docs/stable/generated/torch.nn.RMSNorm.html#torch.nn.RMSNorm

四、区别

Batch Normalization (BatchNorm) vs. Layer Normalization (LayerNorm)

Batch Normalization

原理:Batch Normalization 对 mini-batch 内的激活值进行标准化处理,使得每一层的输入分布更稳定。

适用场景

  • 适用于卷积神经网络(CNN),尤其在计算机视觉任务中效果显著。
  • 对于大型批次训练效果更好。

缺陷

  • 在小批量训练或在线学习(batch size=1)时表现不佳。
  • 依赖于 mini-batch 的统计数据,在循环神经网络(RNN)等序列模型中效果不佳。
Layer Normalization

原理:Layer Normalization 对每个样本的特征维度进行标准化,使得每层的输入特征分布更加稳定。

适用场景

  • 适用于循环神经网络(RNN)和变压器(Transformer)等模型。
  • 适合小批量或在线学习,因为不依赖于 mini-batch 的统计数据。

缺陷

  • 计算量较大,增加了训练时间。
  • 在某些特定任务中,效果可能不如 Batch Normalization。

Layer Normalization vs. RMS Normalization (RMSNorm)

Layer Normalization

优点

  • 稳定训练过程,适用于各种深度神经网络。

缺陷

  • 计算量较大,因为需要计算均值和方差。
RMS Normalization

原理:RMSNorm 通过计算均方根值对输入进行归一化,而不需要计算均值和方差。

适用场景

  • 适用于不需要偏置项的模型。
  • 在处理变压器和RNN等序列模型时表现良好。

优点

  • 计算简便,仅需计算均方根值,计算量小。
  • 在一些任务中表现与 LayerNorm 相当,但训练速度更快。

缺陷

  • 在某些特定任务中可能不如 LayerNorm 稳定。

总结

  • Batch Normalization 更适合卷积神经网络和大型批量训练,但不适用于小批量训练和序列模型。
  • Layer Normalization 更适用于序列模型和小批量训练,虽然计算量较大,但能提供稳定的训练效果。
  • RMS Normalization 通过简化计算实现了高效的归一化,适用于需要快速训练且不需要偏置项的模型。

相关文章:

LLM:归一化 总结

一、Batch Normalization 原理 Batch Normalization 是一种用于加速神经网络训练并提高稳定性的技术。它通过在每一层网络的激活值上进行归一化处理,使得每一层的输入分布更加稳定,从而加速训练过程,并且减轻了对参数初始化的依赖。 公式 …...

蓝桥杯 2024 年第十五届省赛真题 —— 最大异或结点

目录 1. 最大异或结点1. 问题描述2. 输入格式3. 输出格式4. 样例输入5. 样例输出6. 样例说明7. 评测用例规模与约定 2. 解题思路1. 解题思路2. AC_Code 1. 最大异或结点 1. 问题描述 小蓝有一棵树,树中包含 N N N 个结点,编号为 0 , 1 , 2 , ⋯ , N − 1 0,1,2,…...

AV1技术学习:Loop Restoration Filter

环路恢复滤波器(restoration filter)适用于64 64、128 128 或 256 256 像素块单元,称为 loop restoration units (LRUs)。每个单元可以独立选择是否跳过滤波、使用维纳滤波器(Wiener filter)或使用自导滤波器&#…...

如何使用python实现自动化办公?干货满满!

Python作为一种简单而强大的编程语言,不仅在数据科学和软件开发领域广受欢迎,还在办公自动化方面发挥了巨大作用。通过Python,我们可以编写脚本来自动执行各种重复性任务,从而提高工作效率并减少错误。在本文中,我们将…...

QT Creator下载安装详细教程(保姆级教程)

qt下载安装 1.下载网址 通过清华大学开源软件镜像站进行下载:链接: https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/online_installers/ 这里我选的是4.4版本的,也可以选择4.7版本,问题不大。 根据电脑系统选择下载linux…...

无人机公司销售需要什么资质

国家民航局于2024年1月1日实施了《无人驾驶航空器飞行管理暂行条例》,根据这个管理条例里面的 第十一条 使用除微型以外的民用无人驾驶航空器从事飞行活动的单位应当具备下列条件,并向国务院民用航空主管部门或者地区民用航空管理机构申请取得民用无人驾…...

代码自动化重构工具OpenRewrite介绍

OpenRewrite 是一个用于大规模自动化代码重构的开源框架,它极大地提升了开发人员的研发效率,通过自动化地进行代码重构和转换,帮助开发人员消除代码库中的技术债务。 通过 LST、访问器和配方的结合,OpenRewrite 能够实现准确的代…...

Win11安装Docker

下载Docker Desktop for Windows 下载 下载连接:Install Docker Desktop on Windows | Docker Docs 地址在国外,需要科学上网。也可使用我提供的,百度网盘:https://pan.baidu.com/s/1232TTkkzLsoZyFjC3bmgiQ 安装 下载完成之后…...

Windows电脑如何启动RTSP服务实现本地摄像头数据共享

技术背景 提起Windows共享本地摄像头,好多人想到的是通过ffmepg或vlc串流到服务器,实际上,用轻量级RTSP服务更简单,本文就介绍下,如何用大牛直播SDK的Windows轻量级RTSP服务,采集摄像头,生成本…...

探索 Spring WebFlux:构建响应式 Web 应用

探索 Spring WebFlux:构建响应式 Web 应用 随着互联网的发展,传统的同步编程模型已经难以应对高并发和高吞吐量的需求。为了解决这些问题,响应式编程逐渐成为主流。Spring WebFlux 是 Spring 5 引入的一个响应式 Web 框架,它基于…...

C# 植物大战僵尸

Winform 版本开发 高效率、流畅植物大战僵尸 git地址:冯腾飞/植物大战僵尸...

css 作业 2

文章目录 前言第四题第五题第六题第七题第八题第九题第十题(子标签) 前言 昨天写了前面三次作业,今天把剩下的七个作业写完 第四题 http://127.0.0.1:5500/index1.html,就用这个网址查看代码在网页的展示效果 代码评测过不了&…...

axios在vue中的使用

文章目录 一、axios是什么?二、使用步骤2.1 下载2.2 引入2.3 使用Get请求Post请求Forms 三、封装 一、axios是什么? Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和no…...

FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 课程编辑 先来看下课程编辑 1.判断是否登录 2.判断课程是否存在 3.是否有权限(只有自己可以修改自己的课程) 4.名称是否重复…...

【JavaEE初阶】线程的概念及创建

目录 📕 前言 📕 认识线程(Thread) 🚩 概念 😊线程是什么 🙂 为啥要有线程 😭 进程和线程的区别(面试题重点) 🤭 Java的线程和操作系统线程…...

0727,学什么学,周六就应该休息!!!!!

周六就应该休息,一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01:使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器!!! 今天到此为止&#x…...

【C#】获取DICOM图像像素的像素值

8位像素深度的像素值 public byte GetGreyValue(int x, int y) {x Math.Min(x, m_nWidth - 1);y Math.Min(y, m_nHeight - 1);unsafe{byte* greyValue (byte*)m_pDicomData.ToPointer() y * m_nWidth x;return *greyValue;} } 16位像素深度的像素值 public ushort GetG…...

k8s多集群管理工具kubecm

文章目录 一、概述二、安装1、官网链接2、各平台安装2.1、MacOS2.2、Linux2.3、Windows 三、实例1、验证2、配置kubecm自动补全(选做)2.1、Bash2.2、Zsh2.3、fish2.4、PowerShell 3、创建存放kubeconfig文件的目录4、添加到 $HOME/.kube/config4.1、kube…...

通过 WSL 2 在Windows 上挂载 Linux 磁盘

原文查看 曾为了传输或者共享不同系统的文件频繁地在 Windows 和 Linux 系统之间切换,效率过低,所以尝试通过 WSL 2 在Windows 上挂载 Linux 磁盘。 先决条件 需要在Windows 10 2004 及更高版本(Build 19041 及更高版本)或 Win…...

【C#】在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合?

问题点 使用C#语言在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合? 这个多边形可能存在交叉及互相重叠部分 图像的宽、高可以定义为:2000*2000 多边形坐标集合:Point[] polygon_points new Point[] { new Point…...

json的数据结构

JSON 的数据结构 JSON 由两种数据结构组成:对象(字典)和数组。 一、对象 对象(object)是由键值对组成的无序集合。 键是字符串,值可以是任何类型,包括对象和数组;对象由一对花括…...

html-docx-js和file-saver实现html导出word

依赖html-docx-js,file-saver,html2canvas import { asBlob } from html-docx-js/dist/html-docx; import { saveAs } from file-saver; import html2Canvas from html2canvas;const handleImageToBase64 (cloneEle) > {let imgElements cloneEle.…...

三维影像系统PACS源码,图像存储与传输系统,应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统

PACS,即图像存储与传输系统,是应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动,集成了医疗设备,图像存储和分发,数字图像在重要诊断和会诊时的显示&a…...

Golang | Leetcode Golang题解之第292题Nim游戏

题目: 题解: func canWinNim(n int) bool {return n%4 ! 0 }...

Redis在SpringBoot中配置

lettuce redis的使用方法有两种&#xff0c;jedis和lecttuce&#xff0c;jedis用的不是很多&#xff0c;下面讲解用lettuce的使用方法。 首先导包&#xff1a; <!--redis依赖--> <dependency><groupId>org.springframework.boot</groupId><artif…...

linux 网络子系统

__netif_receive_skb_core 是 Linux 内核网络子系统中一个非常重要的函数&#xff0c;它负责将网络设备驱动层接收到的数据包传递到上层协议栈进行处理。以下是对该函数的一些关键点的详细解析&#xff1a; 一、函数作用 __netif_receive_skb_core 函数是处理接收到的网络数据…...

JVM:垃圾回收器演进

文章目录 一、演进二、Shenandoah三、ZGC 一、演进 二、Shenandoah Shenandoah是由Red Hat开发的一款低延迟的垃圾收集器&#xff0c;Shenandoah并发执行大部分GC工作&#xff0c;包括并发的整理&#xff0c;堆大小对STW的时间基本没有影响。 三、ZGC ZGC是一种可扩展的低延…...

全新微软语音合成网页版源码,短视频影视解说配音网页版系统-仿真人语音

源码介绍 最新微软语音合成网页版源码&#xff0c;可以用来给影视解说和短视频配音。它是TTS文本转语言&#xff0c;API接口和PHP源码。 这个微软语音合成接口的源码&#xff0c;超级简单&#xff0c;就几个文件搞定。用的是官方的API&#xff0c;试过了&#xff0c;合成速度…...

大语言模型-对比学习-Contrastive Learning

一、对比学习概念 对比学习是一种特殊的无监督学习方法。 旨在通过拉近相关样本的距离并且推远不相关样本的距离&#xff0c;来学习数据表示。 通常使用一种高自由度、自定义的规则来生成正负样本。在模型预训练中有着广泛的应用。 二、对比学习小案例 对比学习主要分为三个…...

C++ 封装的用法

C(七)封装 封装&#xff0c;可以达到&#xff0c;对外提供接口&#xff0c;屏蔽数据&#xff0c;对内开放数据。 权限控制 struct 中所有行为和属性都是 public 的(默认)&#xff0c;此举也是为了 C兼容 C 语言&#xff0c; 因为 C 语言中没有权限的概念。 C中的 class 可以…...

【C++11:异常】

目录 抛异常标准书写格式 抛异常如何执行&#xff1f; 指定抛出异常类型&#xff1a; noexcept 关键字&#xff1a;throw 抛异常标准书写格式 抛异常如何执行&#xff1f; 当212行的异常被抛出&#xff0c;程序会重新返回函数func中&#xff0c;在函数中去寻找catch 语句的…...

Dify中HTTP请求节点的常见操作

HTTP节点包括API请求类型&#xff08;GET、POST、HEAD、PATCH、PUT、DELETE&#xff09;&#xff0c;鉴权类型&#xff08;无、API-Key基础、API-Key Bearer、API-Key自定义&#xff09;&#xff0c;HEADERS键值设置&#xff0c;PARAMS键值设置&#xff0c;BODY&#xff08;non…...

《大语言模型(赵鑫)》知识框图

...

【Android】性能实践—编码优化与布局优化学习笔记

编码优化 使用场景 如果需要拼接字符串&#xff0c;优先使用StringBuffer和StringBuilder进行凭借&#xff0c;他们的性能优于直接用加号进行拼接&#xff0c;因为使用加号连接符会创建多余的对象一般情况下使用基本数据类来代替封装数据类型&#xff08;比如int优于Integer&…...

如何合规与安全地利用专业爬虫工具,构建企业数据竞争优势

摘要&#xff1a; 本文深入探讨了在当今大数据时代&#xff0c;企业如何通过合规且安全的方式运用专业爬虫工具&#xff0c;有效收集并分析海量信息&#xff0c;进而转化为企业独有的数据优势。我们不仅会介绍最佳实践&#xff0c;还会讨论关键技术和策略&#xff0c;帮助企业…...

自动驾驶三维车道线检测系列—OpenLane数据集介绍

文章目录 1. 背景介绍2. OpenLane数据集详细描述2.1 数据集特点2.2 坐标系定义 3. 使用方法4. 结论 1. 背景介绍 自动驾驶技术的发展日新月异&#xff0c;而3D车道感知是其核心之一。本文将深入介绍OpenLane数据集——迄今为止规模最大、最接近真实世界的3D车道数据集。我们将…...

CMakeList学习笔记

设置项目&#xff1a;project project(planning VERSION 1.0.0 LANGUAGES CXX) # 项目的名字 版本 1.1.0 编程语言 CXX 设置包含目录&#xff1a;include_directories、targer_include_directories 设置编译类型&#xff1a;add_executable、add_library add_executable(demo d…...

将git默认的编辑器设置为vin

git默认编辑器现状 如下&#xff0c;很多linux发行版&#xff0c;未加修改的情况下&#xff0c;git的默认编辑器使用起来不太方便 Signed-off-by: root <rootxxx.COM># Please enter the commit message for your changes. Lines starting # with # will be ignored, a…...

ros2_control 6 自由度机械臂

系列文章目录 前言 ros2_control 是一个实时控制框架&#xff0c;专为普通机器人应用而设计。标准的 c 接口用于与硬件交互和查询用户定义的控制器命令。这些接口增强了代码的模块化和与机器人无关的设计。具体的应用细节&#xff0c;例如使用什么控制器、机器人有多少个关节以…...

Python 在自动化中的实际应用:用 Python 简化繁琐任务

文章目录 1、概述2、自动化文件和目录管理3.数据处理与分析4.网页爬虫5. 系统管理6。定时任务7.结语 1、概述 这篇文章将深入探讨Python在自动化中的实际应用&#xff0c;帮助您用Python简化繁琐任务。 我们将从多个方面入手&#xff0c;展示如何利用Python进行文件管理、数据…...

解释 Spring 框架的核心模块(如 IoC 容器、AOP )及其工作原理。描述如何使用 Spring Boot 快速搭建一个 RESTful Web服务?

Spring框架是一个广泛使用的Java企业级应用程序开发框架&#xff0c;它提供了一系列的模块来帮助开发者构建健壮、可测试、可维护的应用程序。 其中&#xff0c;最核心的模块包括IoC容器和AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;。 …...

数据分析详解

一、数据分析教程 1. 入门教程 在线课程&#xff1a;如Coursera、Udemy、网易云课堂等平台提供了大量数据分析的入门课程&#xff0c;涵盖统计学基础、Python/R语言编程、数据可视化等内容。书籍推荐&#xff1a;《Python数据分析实战》、《R语言实战》等书籍是数据分析入门的…...

SpringCloud之@FeignClient()注解的使用方式

FeignClient介绍 FeignClient 是 Spring Cloud 中用于声明一个 Feign 客户端的注解。由于SpringCloud采用分布式微服务架构&#xff0c;难免在各个子模块下存在模块方法互相调用的情况。比如订单服务要调用库存服务的方法&#xff0c;FeignClient()注解就是为了解决这个问题的…...

20.rabbitmq插件实现延迟队列

问题 前面谈到基于死信的延迟队列&#xff0c;存在的问题&#xff1a;如果第一个消息延时时间很长&#xff0c;而第二个消息延时时间很短&#xff0c;第二个消息并不会优先得到执行。 下载插件 地址&#xff1a;https://github.com/rabbitmq/rabbitmq-delayed-message-excha…...

TS如何处理js模块的类型?

现在很多插件都直接用ts开发了&#xff0c;本身包含了类型定义常见的第三方插件&#xff0c;都有’types/xxx’包&#xff0c;安装即可使用其他的&#xff0c;可通过declare module定义类型 比如&#xff1a; // someModule.js export function greet(name) {return Hello, $…...

GPS定位系统(VUE框架)

源码下载&#xff1a;小宅博客网 博主之前写的《GPS定位系统&#xff08;MVC框架&#xff09;》版本&#xff0c;并没有做到前后端分离&#xff0c;不太适合多人协作开发&#xff0c;这边博主分享一个基于asp.net web api vue3的GPS定位系统框架&#xff0c;本框架继承了MVC框…...

分布式光伏并网AM5SE-IS防孤岛保护装置介绍——安科瑞 叶西平

产品简介 功能&#xff1a; AM5SE-IS防孤岛保护装置主要适用于35kV、10kV及低压380V光伏发电、燃气发电等新能源并网供电系统。当发生孤岛现象时&#xff0c;可以快速切除并网点&#xff0c;使本站与电网侧快速脱离&#xff0c;保证整个电站和相关维护人员的生命安全。 应用…...

神奇的方法解决Navicat闪退

原因 打开Navicat操作上面的工具等就会闪退&#xff0c;原因竟然是屏幕划词&#xff01;&#xff01;&#xff01; 解决方法 看别人提到有道词典的划词功能的原因 我没有安装有道词典&#xff0c;但我安装豆包&#xff0c;它也有划词翻译的功能&#xff0c;关闭即可...

openmv学习笔记(24电赛笔记)

感光元件 openmv采用小孔摄像模式&#xff0c;将图像映射到感光原件上面&#xff0c;来传递图片&#xff0c;通过图片快速的刷新行成视频&#xff0c;在IDE中通过对感光原件的编辑可以控制视频的效果。 重置感光元件到默认状态 import sensor #导入感光元件这个库sensor.res…...

Linux shell编程学习笔记67: tracepath命令 追踪数据包的路由信息

0 前言 网络信息是电脑网络信息安全检查中的一块重要内容&#xff0c;Linux和基于Linux的操作系统&#xff0c;提供了很多的网络命令&#xff0c;今天我们研究tracepath命令。 Tracepath 在大多数 Linux 发行版中都是可用的。如果在你的系统中没有预装&#xff0c;请根据你的…...