梯度(Gradient)和 雅各比矩阵(Jacobian Matrix)的区别和联系:中英双语
雅各比矩阵与梯度:区别与联系
在数学与机器学习中,梯度(Gradient) 和 雅各比矩阵(Jacobian Matrix) 是两个核心概念。虽然它们都描述了函数的变化率,但应用场景和具体形式有所不同。本文将通过深入解析它们的定义、区别与联系,并结合实际数值模拟,帮助读者全面理解两者,尤其是雅各比矩阵在深度学习与大模型领域的作用。
1. 梯度与雅各比矩阵的定义
1.1 梯度(Gradient)
梯度是标量函数(输出是一个标量)的变化率的向量化表示。
设函数 ( f : R n → R f: \mathbb{R}^n \to \mathbb{R} f:Rn→R ),其梯度是一个 ( n n n )-维向量:
∇ f ( x ) = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ⋮ ∂ f ∂ x n ] , \nabla f(x) = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{bmatrix}, ∇f(x)= ∂x1∂f∂x2∂f⋮∂xn∂f ,
表示在每个方向上 ( f f f ) 的变化率。
1.2 雅各比矩阵(Jacobian Matrix)
雅各比矩阵描述了向量函数(输出是一个向量)在输入点的变化率。
设函数 ( f : R n → R m \mathbf{f}: \mathbb{R}^n \to \mathbb{R}^m f:Rn→Rm ),即输入是 ( n n n )-维向量,输出是 ( m m m )-维向量,其雅各比矩阵为一个 ( m × n m \times n m×n ) 的矩阵:
D f ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ⋯ ∂ f 1 ∂ x n ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ⋯ ∂ f 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ f m ∂ x 1 ∂ f m ∂ x 2 ⋯ ∂ f m ∂ x n ] . Df(x) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \frac{\partial f_m}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}. Df(x)= ∂x1∂f1∂x1∂f2⋮∂x1∂fm∂x2∂f1∂x2∂f2⋮∂x2∂fm⋯⋯⋱⋯∂xn∂f1∂xn∂f2⋮∂xn∂fm .
- 每一行是某个标量函数 ( f i ( x ) f_i(x) fi(x) ) 的梯度;
- 雅各比矩阵描述了函数在各输入维度上的整体变化。
2. 梯度与雅各比矩阵的区别与联系
方面 | 梯度 | 雅各比矩阵 |
---|---|---|
适用范围 | 标量函数 ( f : R n → R f: \mathbb{R}^n \to \mathbb{R} f:Rn→R ) | 向量函数 ( f : R n → R m f: \mathbb{R}^n \to \mathbb{R}^m f:Rn→Rm ) |
形式 | 一个 ( n n n )-维向量 | 一个 ( m × n m \times n m×n ) 的矩阵 |
含义 | 表示函数 ( f f f ) 在输入空间的变化率 | 表示向量函数 ( f f f ) 的所有输出分量对所有输入变量的变化率 |
联系 | 梯度是雅各比矩阵的特殊情况(当 ( m = 1 m = 1 m=1 ) 时,雅各比矩阵退化为梯度) | 梯度可以看作雅各比矩阵的行之一(当输出是标量时只有一行) |
3. 数值模拟:梯度与雅各比矩阵
示例函数
假设有函数 ( f : R 2 → R 2 \mathbf{f}: \mathbb{R}^2 \to \mathbb{R}^2 f:R2→R2 ),定义如下:
f ( x 1 , x 2 ) = [ x 1 2 + x 2 x 1 x 2 ] . \mathbf{f}(x_1, x_2) = \begin{bmatrix} x_1^2 + x_2 \\ x_1 x_2 \end{bmatrix}. f(x1,x2)=[x12+x2x1x2].
3.1 梯度计算(标量函数场景)
若我们关注第一个输出分量 ( f 1 ( x ) = x 1 2 + x 2 f_1(x) = x_1^2 + x_2 f1(x)=x12+x2 ),则其梯度为:
∇ f 1 ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ] = [ 2 x 1 1 ] . \nabla f_1(x) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} \\ \frac{\partial f_1}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 \\ 1 \end{bmatrix}. ∇f1(x)=[∂x1∂f1∂x2∂f1]=[2x11].
3.2 雅各比矩阵计算(向量函数场景)
对整个函数 ( f \mathbf{f} f ),其雅各比矩阵为:
D f ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ] = [ 2 x 1 1 x 2 x 1 ] . Df(x) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 & 1 \\ x_2 & x_1 \end{bmatrix}. Df(x)=[∂x1∂f1∂x1∂f2∂x2∂f1∂x2∂f2]=[2x1x21x1].
3.3 Python 实现
以下代码演示了梯度和雅各比矩阵的数值计算:
import numpy as np# 定义函数
def f(x):return np.array([x[0]**2 + x[1], x[0] * x[1]])# 定义雅各比矩阵
def jacobian_f(x):return np.array([[2 * x[0], 1],[x[1], x[0]]])# 计算梯度和雅各比矩阵
x = np.array([1.0, 2.0]) # 输入点
gradient_f1 = np.array([2 * x[0], 1]) # f1 的梯度
jacobian = jacobian_f(x) # 雅各比矩阵print("Gradient of f1:", gradient_f1)
print("Jacobian matrix of f:", jacobian)
运行结果:
Gradient of f1: [2. 1.]
Jacobian matrix of f:
[[2. 1.][2. 1.]]
4. 在机器学习和深度学习中的作用
4.1 梯度的作用
在深度学习中,梯度主要用于反向传播。当损失函数是标量时,其梯度指示了参数需要如何调整以最小化损失。例如:
- 对于神经网络的参数 ( θ \theta θ ),损失函数 ( L ( θ ) L(\theta) L(θ) ) 的梯度 ( ∇ L ( θ ) \nabla L(\theta) ∇L(θ) ) 用于优化器(如 SGD 或 Adam)更新参数。
4.2 雅各比矩阵的作用
-
多输出问题
雅各比矩阵用于多任务学习和多输出模型(例如,Transformer 的输出是一个序列,维度为 ( m m m )),描述多个输出对输入的变化关系。 -
对抗样本生成
在对抗攻击中,雅各比矩阵被用来计算输入的小扰动如何同时影响多个输出。 -
深度学习中的 Hessian-Free 方法
雅各比矩阵是二阶优化方法(如 Newton 方法)中的重要组成部分,因为 Hessian 矩阵的计算通常依赖雅各比矩阵。 -
大模型推理与精调
在大语言模型中,雅各比矩阵被用于研究模型对输入扰动的敏感性,或指导精调时的梯度裁剪与更新。
5. 总结
- 梯度 是描述标量函数变化率的向量;
- 雅各比矩阵 是描述向量函数所有输出对输入变化的矩阵;
- 两者紧密相关:梯度是雅各比矩阵的特例。
在机器学习与深度学习中,梯度用于优化,雅各比矩阵在多任务学习、对抗训练和大模型分析中有广泛应用。通过数值模拟,我们可以直观理解它们的区别与联系,掌握它们在实际场景中的重要性。
英文版
Jacobian Matrix vs Gradient: Differences and Connections
In mathematics and machine learning, the gradient and the Jacobian matrix are essential concepts that describe the rate of change of functions. While they are closely related, they serve different purposes and are used in distinct scenarios. This blog will explore their definitions, differences, and connections through examples, particularly emphasizing the Jacobian matrix’s role in deep learning and large-scale models.
1. Definition of Gradient and Jacobian Matrix
1.1 Gradient
The gradient is a vector representation of the rate of change for a scalar-valued function.
For a scalar function ( f : R n → R f: \mathbb{R}^n \to \mathbb{R} f:Rn→R ), the gradient is an ( n n n )-dimensional vector:
∇ f ( x ) = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ⋮ ∂ f ∂ x n ] . \nabla f(x) = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{bmatrix}. ∇f(x)= ∂x1∂f∂x2∂f⋮∂xn∂f .
This represents the direction and magnitude of the steepest ascent of ( f f f ).
1.2 Jacobian Matrix
The Jacobian matrix describes the rate of change for a vector-valued function.
For a vector function ( f : R n → R m \mathbf{f}: \mathbb{R}^n \to \mathbb{R}^m f:Rn→Rm ), where the input is ( n n n )-dimensional and the output is ( m m m )-dimensional, the Jacobian matrix is an ( m × n m \times n m×n ) matrix:
D f ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ⋯ ∂ f 1 ∂ x n ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ⋯ ∂ f 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ f m ∂ x 1 ∂ f m ∂ x 2 ⋯ ∂ f m ∂ x n ] . Df(x) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \frac{\partial f_m}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}. Df(x)= ∂x1∂f1∂x1∂f2⋮∂x1∂fm∂x2∂f1∂x2∂f2⋮∂x2∂fm⋯⋯⋱⋯∂xn∂f1∂xn∂f2⋮∂xn∂fm .
- Each row is the gradient of a scalar function ( f i ( x ) f_i(x) fi(x) );
- The Jacobian matrix encapsulates all partial derivatives of ( f \mathbf{f} f ) with respect to its inputs.
2. Differences and Connections Between Gradient and Jacobian Matrix
Aspect | Gradient | Jacobian Matrix |
---|---|---|
Scope | Scalar function ( f : R n → R f: \mathbb{R}^n \to \mathbb{R} f:Rn→R ) | Vector function ( f : R n → R m f: \mathbb{R}^n \to \mathbb{R}^m f:Rn→Rm ) |
Form | An ( n n n )-dimensional vector | An ( m × n m \times n m×n ) matrix |
Meaning | Represents the rate of change of ( f f f ) in the input space | Represents the rate of change of all outputs w.r.t. all inputs |
Connection | The gradient is a special case of the Jacobian (when ( m = 1 m = 1 m=1 )) | Each row of the Jacobian matrix is a gradient of ( f i ( x ) f_i(x) fi(x) ) |
3. Numerical Simulation: Gradient and Jacobian Matrix
Example Function
Consider the function ( f : R 2 → R 2 \mathbf{f}: \mathbb{R}^2 \to \mathbb{R}^2 f:R2→R2 ) defined as:
f ( x 1 , x 2 ) = [ x 1 2 + x 2 x 1 x 2 ] . \mathbf{f}(x_1, x_2) = \begin{bmatrix} x_1^2 + x_2 \\ x_1 x_2 \end{bmatrix}. f(x1,x2)=[x12+x2x1x2].
3.1 Gradient Computation (Scalar Function Case)
If we focus on the first output component ( f 1 ( x ) = x 1 2 + x 2 f_1(x) = x_1^2 + x_2 f1(x)=x12+x2 ), the gradient is:
∇ f 1 ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ] = [ 2 x 1 1 ] . \nabla f_1(x) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} \\ \frac{\partial f_1}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 \\ 1 \end{bmatrix}. ∇f1(x)=[∂x1∂f1∂x2∂f1]=[2x11].
3.2 Jacobian Matrix Computation (Vector Function Case)
For the full vector function ( f \mathbf{f} f ), the Jacobian matrix is:
D f ( x ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ] = [ 2 x 1 1 x 2 x 1 ] . Df(x) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 & 1 \\ x_2 & x_1 \end{bmatrix}. Df(x)=[∂x1∂f1∂x1∂f2∂x2∂f1∂x2∂f2]=[2x1x21x1].
3.3 Python Implementation
The following Python code demonstrates how to compute the gradient and Jacobian matrix numerically:
import numpy as np# Define the function
def f(x):return np.array([x[0]**2 + x[1], x[0] * x[1]])# Define the Jacobian matrix
def jacobian_f(x):return np.array([[2 * x[0], 1],[x[1], x[0]]])# Input point
x = np.array([1.0, 2.0])# Compute the gradient of f1
gradient_f1 = np.array([2 * x[0], 1]) # Gradient of the first output component# Compute the Jacobian matrix
jacobian = jacobian_f(x)print("Gradient of f1:", gradient_f1)
print("Jacobian matrix of f:", jacobian)
Output:
Gradient of f1: [2. 1.]
Jacobian matrix of f:
[[2. 1.][2. 1.]]
4. Applications in Machine Learning and Deep Learning
4.1 Gradient Applications
In deep learning, the gradient is critical for backpropagation. When the loss function is a scalar, its gradient indicates how to adjust the parameters to minimize the loss. For example:
- For a neural network with parameters ( θ \theta θ ), the loss function ( L ( θ ) L(\theta) L(θ) ) has a gradient ( ∇ L ( θ ) \nabla L(\theta) ∇L(θ) ), which is used by optimizers (e.g., SGD, Adam) to update the parameters.
4.2 Jacobian Matrix Applications
-
Multi-Output Models
The Jacobian matrix is essential for multi-task learning or models with multiple outputs (e.g., transformers where the output is a sequence). It describes how each input affects all outputs. -
Adversarial Examples
In adversarial attacks, the Jacobian matrix helps compute how small perturbations in input affect multiple outputs simultaneously. -
Hessian-Free Methods
In second-order optimization methods (e.g., Newton’s method), the Jacobian matrix is used to compute the Hessian matrix, which is crucial for convergence. -
Large Model Fine-Tuning
For large language models, the Jacobian matrix is used to analyze how sensitive a model is to input perturbations, guiding techniques like gradient clipping or parameter-efficient fine-tuning (PEFT).
5. Summary
- The gradient is a vector describing the rate of change of a scalar function, while the Jacobian matrix is a matrix describing the rate of change of a vector function.
- The gradient is a special case of the Jacobian matrix (when there is only one output dimension).
- In machine learning, gradients are essential for optimization, whereas Jacobian matrices are widely used in multi-output models, adversarial training, and fine-tuning large models.
Through numerical simulations and real-world applications, understanding the gradient and Jacobian matrix can significantly enhance your knowledge of optimization, deep learning, and large-scale model analysis.
后记
2024年12月19日15点30分于上海,在GPT4o大模型辅助下完成。
相关文章:
梯度(Gradient)和 雅各比矩阵(Jacobian Matrix)的区别和联系:中英双语
雅各比矩阵与梯度:区别与联系 在数学与机器学习中,梯度(Gradient) 和 雅各比矩阵(Jacobian Matrix) 是两个核心概念。虽然它们都描述了函数的变化率,但应用场景和具体形式有所不同。本文将通过…...
[python SQLAlchemy数据库操作入门]-02.交易数据实体类建立
哈喽,大家好,我是木头左! 为了顺利地使用SQLAlchemy进行股票交易数据的处理,首先需要搭建一个合适的开发环境。这包括安装必要的软件包以及配置相关的依赖项。 安装Python及虚拟环境 下载并安装Python(推荐使用最新版)。创建一个新的虚拟环境以避免依赖冲突。python -m …...
python打包exe文件
由于用户需要,将采集数据解析成txt文件,为了方便使用,将python解析方法打包成exe文件供用户使用 安装环境 ./pip.exe install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simplepython导入需要的包 import tkinter as tk from tkin…...
C# opencvsharp 流程化-脚本化-(2)ROI
ROI ROI也是经常需要使用的方法。特别是在图像编辑中。ROI又称感兴趣的区域,但是图像是矩阵是矩形的,感兴趣的是乱八七糟的,所以还有一个Mask需要了解一下的。 public class RoiStep : IImageProcessingStep{public ImageProcessingStepType…...
【Python】基于Python的CI/CD工具链:实现自动化构建与发布
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,持续集成(CI)和持续交付(CD)已经成为提高开发效率和软件质量的重要实践。CI/CD流程帮助开发团队自动化构建、测试、…...
Flutter组件————Scaffold
Scaffold Scaffold 是一个基础的可视化界面结构组件,它实现了基本的Material Design布局结构。使用 Scaffold 可以快速地搭建起包含应用栏(AppBar)、内容区域(body)、抽屉菜单(Drawer)、底部导…...
2024年《网络安全事件应急指南》
在这个信息技术日新月异的时代,网络攻击手段的复杂性与日俱增,安全威胁层出不穷,给企事业单位的安全防护能力带 来了前所未有的挑战。深信服安全应急响应中心(以下简称“应急响应中心”)编写了《网络安全事件应急指南》…...
通过smem 定时检测系统内存占用情况
编写定时任务脚本 cat >> /usr/local/bin/smem.sh <<-"EOF"if [[ ! -d /var/log/smem ]];thenmkdir -p /var/log/smem fi smem -tk >> /var/log/smem/smem.log EOFchmod 755 /usr/local/bin/smem.sh配置定时任务 echo "" >> /et…...
京准电钟:电厂自控NTP时间同步服务器技术方案
京准电钟:电厂自控NTP时间同步服务器技术方案 京准电钟:电厂自控NTP时间同步服务器技术方案 随着计算机和网络通信技术的飞速发展,火电厂热工自动化系统数字化、网络化的时代已经到来。一方面它为控制和信息系统之间的数据交换、分析和应用…...
Face to face
1.西班牙添加5G volte 首先carrierconfig里使能 <boolean name"carrier_nr_available_bool" value"true" /> <boolean name"carrier_volte_available_bool" value"true" /> 其次 组件apn配置ims参数 2.印度j…...
C语言中的文件操作:基础与实践
欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言内容文件文件操作:数据库文件概述:文件的打开和关闭理解流的概念文件指针 文件的打开与关闭文件的读和写文件的顺序…...
从地铁客流讲开来:十二城日常地铁客运量特征
随着城市化进程的加速和人口的不断增长,公共交通系统在现代都市生活中扮演着日益重要的角色。地铁作为高效、环保的城市交通方式,已经成为居民日常出行不可或缺的一部分。本文聚焦于2024年10月28日至12月1日期间,对包括北上广深这四个超一线城…...
VMWare 的克隆操作
零、碎碎念 VMWare 的这个克隆操作很简单,单拎出来成贴的目的是方便后续使用。 一、操作步骤 1.1、在“源”服务器上点右键,选择“管理--克隆” 1.2、选择“虚拟机的当前状态”为基础制作克隆,如下图所示,然后点击“下一页” 1.3、…...
经济学 ppt 2 部分
前言 上一次复习经济学是好久之前了,看了第一章的 ppt ,好像重点就是谁是软件经济学之父。昨天老师讲了一下题型,20 分选择题, 20 分判断题,20 分计算题,6 6 8 三个计算题,25 分表格࿰…...
R(4.4.2)的下载与安装(Windows系统)
进入官网:https://www.r-project.org/ 首先点击CRAN链接,选择一个镜像链接地址 进入CRAN所显示页面如下: 选择China下的一个镜像站点,本文选择第一个 选择windows系统下载 点击“base” 下载: 打开下载的文件 默认中文…...
一文流:JVM精讲(多图提醒⚠️)
一文流系列是作者苦于技术知识学了-忘了,背了-忘了的苦恼,决心把技术知识的要点一笔笔✍️出来,一图图画出来,一句句讲出来,以求刻在🧠里。 该系列文章会把核心要点提炼出来,以求掌握精髓,至于其他细节,写在文章里,留待后续回忆。 目前进度请查看: :::info https:/…...
C盘下的文件夹
在Windows操作系统中,C盘通常是系统安装的盘符,其中包含了许多重要的文件夹和系统文件。以下是一些常见的文件夹:系统文件夹 Windows: 包含Windows操作系统的核心文件和组件。 Program Files: 存储大多数安装的软件程序。 Program Files (x86…...
视频直播点播平台EasyDSS与无人机技术的森林防火融合应用
随着科技的飞速发展,无人机技术以其独特的优势在各个领域得到了广泛应用,特别是在森林防火这一关键领域,EasyDSS视频平台与无人机技术的融合应用更是为传统森林防火手段带来很大的变化。 一、无人机技术在森林防火中的优势 1、快速响应与高…...
通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统
背景介绍 阿里云向量检索服务Milvus版(简称阿里云Milvus)是一款云上全托管服务,确保了了与开源Milvus的100%兼容性,并支持无缝迁移。在开源版本的基础上增强了可扩展性,能提供大规模 AI 向量数据的相似性检索服务。相…...
Unity 3D饼状图效果
一. 效果展示 二.基础类 using System.Collections; using System.Collections.Generic; using UnityEngine;public class DrawCylinder : MonoBehaviour {// 网格渲染器MeshRenderer meshRenderer;// 网格过滤器MeshFilter meshFilter;// 用来存放顶点数据List<Vector3>…...
OpenHarmony-4.HDI 框架
HDI 框架 1.HDI介绍 HDI(Hardware Device Interface,硬件设备接口)是HDF驱动框架为开发者提供的硬件规范化描述性接口,位于基础系统服务层和设备驱动层之间,是连通驱动程序和系统服务进行数据流通的桥梁,是…...
ArcGIS Pro 3.4新功能2:Spatial Analyst新特性,密度、距离、水文、太阳能、表面、区域分析
Spatial Analyst 扩展模块在 ArcGIS Pro 3.4 中引入了新功能和增强功能。此版本为您提供了用于表面和区域分析的新工具以及改进的密度和距离分析功能,多种用于水文分析的工具性能的提高,一些新的太阳能分析功能。 目录 1.密度分析 2.距离分析 3.水文…...
GitLab分支管理策略和最佳实践
分支管理是 Git 和 GitLab 中非常重要的部分,合理的分支管理可以帮助团队更高效地协作和开发。以下是一些细化的分支管理策略和最佳实践: 1. 分支命名规范 • 主分支:通常命名为 main 或 master,用于存放稳定版本的代码。 • …...
uniapp自定义树型结构数据弹窗,给默认选中的节点,禁用所有子节点
兼容H5、安卓App、微信小程序 实现逻辑:给默认选中节点的所有子节点添加一个disabled属性,以此禁用子节点。 /components/sonTreeNode/sonTreeNode.vue 封装成组件 <template><view><view :class"[item,item.is_level1?pL1:item…...
方正畅享全媒体新闻采编系统 screen.do SQL注入漏洞复现
0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...
5G 模组 RG500Q常用AT命令
5G 模组 RG500Q常用AT命令 5G 模组 RG500Q常用AT命令 at ATQNWPREFCFG\"mode_pref\",nr5g && sleep 1 at ATQNWPREFCFG\"nr5g_band\",79 && sleep 1 at atqnwlock\"commo…...
day38-SSH安全登录
机器准备 什么是SSH SSH 或 Secure Shell 协议是一种远程管理协议,允许用户通过 Internet 访问、控制和修改其远程服务器。 SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。 SS…...
U盘出现USBC乱码文件的全面解析与恢复指南
一、乱码现象初探:USBC乱码文件的神秘面纱 在数字时代,U盘已成为我们日常生活中不可或缺的数据存储工具。然而,当U盘中的文件突然变成乱码,且文件名前缀显示为“USBC”时,这无疑给用户带来了极大的困扰。这些乱码文件…...
mac iterm2 使用 lrzsz
前言 mac os 终端不支持使用 rz sz 上传下载文件,本文提供解决方法。 mac 上安装 brew install lrzsz两个脚本 注意:/usr/local/bin/iterm2-send-zmodem.sh 中的 sz命令路径要和你mac 上 sz 命令路径一致。 /usr/local/bin/iterm2-recv-zmodem.sh 中…...
京东大数据治理探索与实践 | 京东零售技术实践
01背景和方案 在当今的数据驱动时代,数据作为关键生产要素之一,其在商业活动中的战略价值愈加凸显,京东也不例外。 作为国内领先的电商平台,京东在数据基础设施上的投入极为巨大,涵盖数万台服务器、数 EB 级存储、数百…...
应该连续学一个科目,还是多学科切换?
https://www.zhihu.com/question/333420829https://www.zhihu.com/question/333420829...
游戏何如防抓包
游戏抓包是指在游戏中,通过抓包工具捕获和分析游戏客户端与服务器之间传输的封包数据的过程。抓包工具可实现拦截、篡改、重发、丢弃游戏的上下行数据包,市面上常见的抓包工具有WPE、Fiddler和Charles Proxy等。 抓包工具有两种实现方式,一类…...
asp.net core发布配置端口号,支持linux
方式一,修改配置文件 appsettings.json 找到文件 appsettings.json, 添加如下节点配置,在linux环境需要设置0.0.0.0才可以正常代表本机,然后被其他机器访问,此处设置端口8000, "Kestrel": {&quo…...
基于linux下实现的ping程序(C语言)
linux下实现的ping程序 一、设计目的 PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序基于ICMP,使用ICMP的回送请求和回送应答来工作。由计算机网络课程知道,ICMP是基于IP的一个协议,ICMP包通过IP的封装之后传递。 课程设…...
109.【C语言】数据结构之求二叉树的高度
目录 1.知识回顾:高度(也称深度) 2.分析 设计代码框架 返回左右子树高度较大的那个的写法一:if语句 返回左右子树高度较大的那个的写法二:三目操作符 3.代码 4.反思 问题 出问题的代码 改进后的代码 执行结果 1.知识回顾…...
线段覆盖(c++)
题目描述 在一条数轴上,有 N 条线段,第 i 条线段的左端点是 si,右端点是 ei。如果线段有重叠(即使是端点重叠也算是重叠),则输出 “impossible”, 如果没有重叠则输出 “possible” 。 输入格式 多组…...
SSM 仓库管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...
基于Python3编写的Golang程序多平台交叉编译自动化脚本
import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数,设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…...
SqlSugar查询达梦数据库遇到的异常情况(续)
之前的文章提到在SqlSugar的Where函数中使用!string.IsNullOrEmpty函数查询达梦数据库时,明明数据库中有数据但就是查不出来,但相同的代码在另一台电脑上就可以正常返回数据。 以下图中的两张表数据为例,执行下面的SQL语句无法查询到数据…...
企业电子投票系统 【源码+文档】
目 录 第1部分 概 述 第2部分 分析部分 2.1.功能需求 第3部分 系统设计 3.1.功能模块设计 3.2.数据库的设计 第4部分 系统开发 4.1.数据库 4.1&a…...
如何正确地安装和设置魔方财务软件?
安装和设置魔方财务软件需要按照以下步骤进行操作: 下载安装程序:首先,到魔方财务软件的官方网站或认可的软件下载网站下载安装程序。确保选择与您的操作系统兼容的版本。 运行安装程序:双击安装程序,按照提示进行安装…...
在Ubuntu 22.04 LTS中使用PyTorch深度学习框架并调用多GPU时遇到indexSelectLargeIndex相关的断言失败【笔记】
在Ubuntu 22.04 LTS系统中,已安装配置好CUDA 12.4、cuDNN 9.1.1以及PyTorch环境 export CUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 在PyTorch深度学习框架训练调用多GPU时,提示 indexSelectLargeIndex: block: [x, 0, 0], thread: [x, 0, 0] Assertion src…...
[网络安全]XSS之Cookie外带攻击姿势详析
概念 XSS 的 Cookie 外带攻击就是一种针对 Web 应用程序中的 XSS(跨站脚本攻击)漏洞进行的攻击,攻击者通过在 XSS 攻击中注入恶意脚本,从而窃取用户的 Cookie 信息。 攻击者通常会利用已经存在的 XSS 漏洞,在受害者的…...
springmvc的拦截器,全局异常处理和文件上传
拦截器: 拦截不符合规则的,放行符合规则的。 等价于过滤器。 拦截器只拦截controller层API接口。 如何定义拦截器。 定义一个类并实现拦截器接口 public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest reque…...
TypeScript进阶实战:构建可维护的企业级应用
"这代码太难维护了!"接手一个海外客户的项目后,我不禁感叹道。虽然项目用了 TypeScript,但类型定义混乱,代码提示基本失效,测试写起来也很痛苦。作为一个有着多年 TypeScript 开发经验的工程师,我…...
请求go web后端接口 java安卓端播放视频
前端代码 添加gradle依赖 implementation com.squareup.retrofit2:retrofit:2.9.0 implementation com.squareup.retrofit2:converter-gson:2.9.0 添加访问网络权限 <uses-permission android:name"android.permission.INTERNET" />允许http 请求请求 andro…...
Java 学习(四)集合框架与异常处理
在 Java 编程中,集合框架和异常处理机制是开发高效、健壮程序的两个关键部分。掌握这两个方面的知识,能够大大提高代码的质量和可维护性。本篇博客将深入探讨 Java 集合框架和异常处理机制的核心概念,并结合实际案例,帮助你更好地…...
如何调用yolov8的模型(restful和c++)
文章目录 方法一、通过RESTful API调用(推荐)第一步:部署yolo8服务端第二步:java中调用api方法二、JNI调用(本地调用)第一步:编写c/c++封装代码第二步:生成jni头文件和动态库第三步:在java中调用jni函数参考: 1.window系统下从0开始搭建yolov8环境 2.pycharm下载 3.y…...
Avalonia 开发环境准备
总目录 前言 介绍如何搭建 Avalonia 开发环境。 一、在线开发环境搭建 请先安装您选择的受支持的IDE。Avalonia 支持 Visual Studio、Rider 和 Visual Studio Code。 详见:https://docs.avaloniaui.net/zh-Hans/docs/get-started/install 1. 使用 Visual Studio 20…...
工信部人工智能专业技术人员证书介绍
一、证书介绍 图中展示的是由工业和信息化部电子工业标准化研究院颁发的人工智能专业技术人员证书。该证书封面为深蓝色,带有纹理,显得专业且庄重。封面上有“ESI”标志,以及“人工智能专业技术人员证书”和“工业和信息化部电子工业标准化研…...