GAGAvatar: Generalizable and Animatable Gaussian Head Avatar 学习笔记
1 Overall
GAGAvatar(Generalizable and Animatable Gaussian Avatar),一种面向单张图片驱动的可动画化头部头像重建的方法,解决了现有方法在渲染效率和泛化能力上的局限。 旋转参数
现有方法的局限性:
- 基于NeRF的方法:
- 优点:在头像合成和细节(如头发、饰品)上效果优秀。
- 局限:NeRF老毛病渲染慢,实时性较差。
- 基于 3DGS 的方法:
- 优点:实现实时渲染
- 局限:针对每个 identity 需要进行特定的训练,无法推广泛化。
Contributions:
- 引入 Dual-lifting 方法及结合 3DMM 先验,解决了从单张图片构建 3D 高斯模型的难题。
- 通过预测图像平面中每个像素的 lifting 距离(即从 2D 到 3D 的深度信息)。
- 利用 forward and backward lifting 生成几乎闭合的 3D 高斯点分布,最大程度还原头部形状。
- 结合 3DMM 的先验,约束 lifting 过程,确保生成细节。
- 通过结合 3DMM 和高斯分布,既能准确传递表情信息,又避免了冗余计算。
2 Method

本文方法分为两个主要分支:重建分支(Reconstruction Branch)和表情控制分支(Expression Branch)
重建分支生成静态高斯点,而表达分支生成动态高斯点。
主要步骤:
- 从源图像中提取全局和局部特征,用 DINOv2 进行多尺度视觉特征提取。
- 基于局部特征,提出了双 lifting (Dual-lifting)方法,预测 3D 高斯点的位置和参数。
- 同时,结合全局特征和 3DMM 顶点特征,生成另一个表情高斯点集合。
- 将所有 3D 高斯点通过 splatting 生成粗图像 I c I_c Ic。
- 使用神经渲染器对 I c I_c Ic 进行细化,生成最终结果 I f I_f If。
2.1 重建分支
Dual-lifting 策略:
- 在单次 lifting 方法中,模型可能无法确定将像素 lifting 到可见表面还是物体背面,导致学习过程中的歧义。双重 lifting 通过分别预测前向和后向偏移,解决了这一问题,消除歧义,稳定优化过程。最终,两组 lifting 点几乎形成封闭的高斯点分布。
过程:

-
提取特征:
- 使用冻结的 DINOv2 模型提取 296 × 296 296 \times 296 296×296 的局部特征平面 F local F_{\text{local}} Flocal
-
预测参数:不是直接预测 3D 高斯
-
利用两个卷积网络 E C o n v 0 E_{Conv0} EConv0 和 E C o n v 1 E_{Conv1} EConv1,分别预测每个像素相对于特征平面的前向和后向偏移量,即 lifting 距离。
-
参数预测:预测每个点的颜色、透明度、缩放和旋转参数 G c , o , s , r G_{c,o,s,r} Gc,o,s,r
G c , o , s , r = [ E Conv 0 ( F local ) , E Conv 1 ( F local ) ] G_{c,o,s,r} = [E_{\text{Conv}0}(F_{\text{local}}), \; E_{\text{Conv}1}(F_{\text{local}})] Gc,o,s,r=[EConv0(Flocal),EConv1(Flocal)]
-
-
从平面到3D的映射:
- 根据相机位姿,将特征平面映射回3D空间,使其经过原点,获得平面上像素的3D位置 p s p_s ps 和法向量 n s n_s ns (其实应该就是指向 camera,垂直于这个平面)
- 根据预测的偏移量,将平面上的点沿法向量 n s n_s ns 提升到三维空间:
G pos = [ p s + E Conv 0 ( F local ) ⋅ n s , p s − E Conv 1 ( F local ) ⋅ n s ] G_{\text{pos}} = [p_s + E_{\text{Conv}0}(F_{\text{local}}) \cdot n_s, \; p_s - E_{\text{Conv}1}(F_{\text{local}}) \cdot n_s] Gpos=[ps+EConv0(Flocal)⋅ns,ps−EConv1(Flocal)⋅ns]
2.2 表情分支
组成:
-
3DMM:
- 表情解耦:3DMM 可以将面部表情和身份特征解耦。这种解耦使得即使是不同身份的图像之间,也可以有效地传递表情?
- 顶点语义稳定性:3DMM 的每个顶点在模型中对应固定的面部区域(如眼睛、嘴巴等),有助于精确定位和修改特定部位的表情。
-
3D Gaussians:
- 通过 3DMM 的顶点位置生成 3D Gaussians。
- 顶点的学习权重与表情特征绑定,用于调整生成的图像中的表情。
过程:

- 输入特征融合:
- 通过 DINOv2 从驱动图像 I d I_d Id 提取全局特征 F i d F_{id} Fid (将身份信息注入表情分支,确保生成结果在表情变化的同时保持身份一致性)
- (从 Driving img 和 Source img 通过使用 GPAvatar 提供的 3DMM 估计方法(基于 EMOCA 和 MICA)提取FLAME ),将可学习的权重绑定到 3DMM 中的每个顶点,表示顶点与表情相关的特定属性(如嘴唇张开程度或眉毛上扬)得到顶点特征
- 将全局特征 F i d F_{id} Fid 和顶点特征拼接
- 高斯参数预测:使用 MLP 从拼接的特征中预测每个点除了位置外的所有高斯参数(如颜色、透明度、大小、旋转等)。
- 使用 3DMM 顶点的固定位置作为高斯点的位置输入,保持空间一致性。
高效表情驱动:
- 只需在初始阶段一次性的计算出重建分支和表情分支的高斯点。通过修改表情分支中高斯的位置和相机姿态,实现快速的表情重演,无需重复计算。那表情高斯点的其他属性为什么不需要调整?
3.3 神经渲染器
- dual-lifting 之后仅仅获得175,232个高斯点比较少,所以仅凭这些点的 RGB 信息不足以捕获人类头像的丰富细节。所以所有的高斯点的预测信息是包含RGB信息的32维特征,首先进行 splatting 以获得粗略图像。
- 神经渲染器细化:使用类似EG3D的超分辨率模块,只不过不提升分辨率而是将粗略图像(32维特征)细化为高质量的最终图像。
- 神经渲染器有效地将 dual-lifting 和表情高斯特征解码为RGB值,生成高质量的结果,并解决两组高斯之间的潜在冲突。
- 在训练过程中,从零开始训练神经渲染器,不使用任何预训练初始化。
3.4 训练策略与损失函数
使用预训练的 DINOv2 不参与训练,其余部分从零开始训练。
- 数据:随机从同一视频中抽取两帧图像,一张作为 Source img,一张作为 Driving img 和 Target img
- 目标:
- 确保生成的粗略图像 I c I_c Ic 和精细图像 I f I_f If 与目标图像 I t I_t It 对齐。
Loss:
L = ∣ ∣ I c − I t ∣ ∣ + ∣ ∣ I f − I t ∣ ∣ + λ p ( ∣ ∣ ϕ ( I c ) − ϕ ( I t ) ∣ ∣ + ∣ ∣ ϕ ( I f ) − ϕ ( I t ) ∣ ∣ ) + λ l L lifting L = ||I_c - I_t|| + ||I_f - I_t|| + \lambda_p(||\phi(I_c) - \phi(I_t)|| + ||\phi(I_f) - \phi(I_t)||) + \lambda_l L_{\text{lifting}} L=∣∣Ic−It∣∣+∣∣If−It∣∣+λp(∣∣ϕ(Ic)−ϕ(It)∣∣+∣∣ϕ(If)−ϕ(It)∣∣)+λlLlifting
-
图像重现损失( L 1 L1 L1 和感知损失):约束生成图像 ( I c I_c Ic, I f I_f If) 与目标图像 ( I t I_t It) 的像素和语义特征对齐。
-
L1 损失:直接计算像素级差异
∣ ∣ I c − I t ∣ ∣ + ∣ ∣ I f − I t ∣ ∣ ||I_c - I_t|| + ||I_f - I_t|| ∣∣Ic−It∣∣+∣∣If−It∣∣ -
感知损失:通过预训练的感知模型(如 VGG)提取高层次语义特征,用于比较生成图像和目标图像的感知相似性:
∣ ∣ ϕ ( I c ) − ϕ ( I t ) ∣ ∣ + ∣ ∣ ϕ ( I f ) − ϕ ( I t ) ∣ ∣ ||\phi(I_c) - \phi(I_t)|| + ||\phi(I_f) - \phi(I_t)|| ∣∣ϕ(Ic)−ϕ(It)∣∣+∣∣ϕ(If)−ϕ(It)∣∣其中 ϕ \phi ϕ 表示感知模型提取的特征。
-
-
Lifting 距离损失( L lifting L_{\text{lifting}} Llifting ):帮助模型更准确地学习 Dual-lifting 的 3D 点位置,从而增强重建的3D结构和视角变化能力。
方法:使用 3DMM 提供的先验信息(顶点位置 P 3DMM P_{\text{3DMM}} P3DMM)约束双重提升生成的高斯点 ( G pos G_{\text{pos}} Gpos) 中最近的点与 3DMM 顶点的距离尽可能小。即通过 L2 损失计算顶点和最近点的距离。
L lifting = ∣ ∣ P 3DMM − argmin q ∈ G pos ∥ p − q ∥ ∣ p ∈ P 3DMM ∣ ∣ L_{\text{lifting}} = ||P_{\text{3DMM}} - \text{argmin}_{q \in G_{\text{pos}}} \|p - q\| \ | \ p \in P_{\text{3DMM}} || Llifting=∣∣P3DMM−argminq∈Gpos∥p−q∥ ∣ p∈P3DMM∣∣-
P 3DMM P_{\text{3DMM}} P3DMM:3DMM 的顶点集合
-
G pos G_{\text{pos}} Gpos:双重提升生成的高斯点集合
-
argmin q ∈ G pos ∥ p − q ∥ \text{argmin}_{q \in G_{\text{pos}}} \|p - q\| argminq∈Gpos∥p−q∥:找到距离每个 3DMM 顶点最近的高斯点
特点:只对部分高斯点施加约束(与 3DMM 顶点对应的部分),允许模型学习未被 3DMM 覆盖的区域(如头发、饰品等),增强生成图像的细节表现力。
-
3 Limitations
-
新视角未见区域的细节不足:
-
生成结果可能是基于统计学上的“平均期望”,而非真实的细节例如:
- 从侧脸视角生成另一半脸部时,缺乏真实的细节。
- 从闭嘴图像生成张嘴状态时,生成结果可能不够逼真。
-
原因:合成过程中缺乏对未见区域的具体信息,导致生成效果趋于平均化。
解决方向:引入随机生成模型(如 diffusion),通过增加生成的随机性提高未见区域的细节表现。
-
-
表情分支的限制:
- 依赖 3DMM:表情分支基于 3DMM 模型进行训练,而 3DMM 具有一定的局限性,无法完全覆盖所有面部细节。
- 极端表情难以处理:如一只眼睛闭合而另一只眼睛睁开、舌头的动态或头发细节。
- 数据集限制:表情分支从 VFHQ 视频数据中学习,可能不足以捕获极端的面部运动或未被 3DMM 模型覆盖的区域。
解决方向:不依赖 3DMM,从图像中直接提取表情嵌入。—— 需要一个好的 E m o t E_{mot} Emot
相关文章:
GAGAvatar: Generalizable and Animatable Gaussian Head Avatar 学习笔记
1 Overall GAGAvatar(Generalizable and Animatable Gaussian Avatar),一种面向单张图片驱动的可动画化头部头像重建的方法,解决了现有方法在渲染效率和泛化能力上的局限。 旋转参数 现有方法的局限性: 基于NeRF的方…...
《数据挖掘:概念、模型、方法与算法(第三版)》
嘿,数据挖掘的小伙伴们!今天我要给你们介绍一本超级实用的书——《数据挖掘:概念、模型、方法与算法》第三版。这本书是数据挖掘领域的经典之作,由该领域的知名专家编写,系统性地介绍了在高维数据空间中分析和提取大量…...
springboot vue 开源 会员收银系统 (12)购物车关联服务人员 订单计算提成
前言 完整版演示 http://120.26.95.195/ 开发版演示 http://120.26.95.195:8889/ 在之前的开发进程中,我们完成订单的挂单和取单功能,今天我们完成购物车关联服务人员,用户计算门店服务人员的提成。 1.商品关联服务人员 服务人员可以选择 一…...
lua闭包Upvalue
闭包 lua任何函数都是闭包,闭包至少带1个upValue; CClosure是使用Lua提供的lua_pushcclosure这个C-Api加入到虚拟栈中的C函数,它是对LClosure的一种C模拟 如string.gmatch就是cclosure 定义: #define ClosureHeader \CommonH…...
下载maven 3.6.3并校验文件做md5或SHA512校验
一、下载Apache Maven 3.6.3 Apache Maven 3.6.3 官方下载链接: 二进制压缩包(推荐): ZIP格式: https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zipTAR.GZ格式: https://archive.apache.org/dist/…...
深入探索Flax:一个用于构建神经网络的灵活和高效库
深入探索Flax:一个用于构建神经网络的灵活和高效库 在深度学习领域,TensorFlow 和 PyTorch 作为主流的框架,已被广泛使用。不过,Flax 作为一个较新的库,近年来得到了越来越多的关注。Flax 是一个由Google Research团队…...
vue项目中单独文件的js不存在this.$store?.state怎么办
在Vue项目中,如果你在单独的文件(比如插件、工具函数等)中遇到this.$store不存在的情况,这通常是因为this上下文不指向Vue实例,或者Vuex store没有被正确地注入到Vue实例中。以下是几种可能的解决方案: 确保…...
物联网客户端在线服务中心(客服功能/私聊/群聊/下发指令等功能)
一、界面 私聊功能(下发通知类,一对多)群聊(点对点)发送指令(配合使用客户端,基于cefsharp做的物联网浏览器客户端)修改远程参数配置(直接保存到本地)&#…...
AI开发:逻辑回归 - 实战演练- 垃圾邮件的识别(二)
接上一篇AI开发:逻辑回归 - 实战演练- 垃圾邮件的识别(一) new_email 无论为什么文本,识别结果几乎都是垃圾邮件,因此我们需要对源码的逻辑进行梳理一下: 在代码中,new_email 无论赋值为何内容都被识别为…...
hint: Updates were rejected because the tip of your current branch is behind!
问题 本地仓库往远段仓库推代码时候提示: error: failed to push some refs to 192.168.2.1:java-base/java-cloud.git hint: Updates were rejected because the tip of your current branch is behind! refs/heads/master:refs/heads/master [rejected] (…...
Vue的数据驱动原理
文章目录 什么是数据驱动那么vuejs是如何实现这种数据驱动的呢?对getter/setter的理解?一个简单的演示例子vue数据驱动原理是:采用数据劫持结合发布者和订阅者模式,通过“object.defineproperty()”来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发相应…...
【Db First】.NET开源 ORM 框架 SqlSugar 系列
.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...
数据分析-52-时间序列分解之变分模态分解VMD
文章目录 1 时间序列模态分解1.1 模态分解的概念1.2 模态分解的作用1.3 常用的模态分解方法1.4 模态分解的常用库2 变分模态分解VMD2.1 VMD的流程2.2 加载数据集2.2.1 数据重采样2.2.2 原始数据可视化2.3 VMD变分模态分解3 参考附录1 时间序列模态分解 1.1 模态分解的概念 时…...
做异端中的异端 -- Emacs裸奔之路4: 你不需要IDE
确切地说,你不需要在IDE里面编写或者阅读代码。 IDE用于Render资源文件比较合适,但处理文本,并不划算。 这的文本文件,包括源代码,配置文件,文档等非二进制文件。 先说说IDE带的便利: 函数或者变量的自动…...
redhat 7.9配置阿里云yum源
1、mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2、添加dns vim/etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 114.114.114.114 #配置完先检查下通不通 3、vi /etc/yum/pluginconf.d/subscription-manager.conf # 将 “enabled1” 改为 “ena…...
简单快速的上手python
前言 python是一门可以快速上手的语言,原因是它语法简单,api容易使用自由灵活 当我们需要安装任何的三方库时,只需要执行 pip install XX 之后在代码里面import xxx就可以使用python啦。 并且python的代码自由灵活,使用缩进区…...
PHP和GD如何给图片添加模糊边缘效果
在PHP中,使用GD库给图片添加模糊边缘效果通常涉及几个步骤,包括加载图片、创建模糊效果、应用边缘处理以及保存结果图片。然而,GD库本身并不直接提供边缘模糊的函数,但你可以通过一些技巧来实现类似的效果。 以下是一个简化的步骤…...
PowerShell:查找并关闭打开的文件
Get-SmbOpenFile 打开 Windows PowerShell 并运行 Get-SmbOpenFile | Format-List 若要仅显示特定文件共享的连接,请使用 Where-Object 运行 Get-SmbOpenFile。 Get-SmbOpenFile | Where-Object Path -eq "C:\Data\" | Format-List Get-SmbSession 显…...
SQL进阶技巧:非等值连接--单向近距离匹配
目录 0 场景描述 1 数据准备 2 问题分析 编辑 编辑 3 小结 数字化建设通关指南 0 场景描述 表 t_1 和表 t_2 通过 a 和 b 关联时,有相等的取相等的值匹配,不相等时每一 个 a 的值在 b 中找差值最小的来匹。 表 t_1:a 中无重复值 表 t_1:a 中无重复值 a 1 2 4 …...
【golang】单元测试,以及出现undefined时的解决方案
单元测试 要对某一方法进行测试时,例如如下这一简单减法函数,选中函数名后右键->转到->测试 1)Empty test file 就是一个空文件,我们可以自己写测试的逻辑 但是直接点绿色箭头运行会出问题: 找不到包。我们要在…...
代理IP地址的含义与设置指南
在数字化时代,互联网已经成为我们日常生活不可或缺的一部分。然而,在享受互联网带来的便利的同时,我们也面临着隐私泄露、访问限制等问题。代理IP地址作为一种有效的网络工具,能够帮助我们解决这些问题。本文将详细介绍代理IP地址…...
Qt 2D绘图之三:绘制文字、路径、图像、复合模式
参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…...
el-table 纵向 横向 多级表头
<el-table :data"tableData" class"diaTable":span-method"handleSpanMethod"border:header-cell-style"{background:#292929,color:#fff}"><!-- 纵向表头 --><el-table-column label"纵向表头" width"…...
linux perf安装问题解决
WARNING: perf not found for kernel 4.15.0-39 perf安装问题 perf是一个功能强大的linux性能分析工具,其功能依赖于内核,安装perf工具的版本必须与内核版本保持一致。 perf安装问题 使用apt 安装 perf包,运行时提示要安装与内核版本相一致…...
嵌入式Linux无窗口系统下搭建 Qt 开发环境
嵌入式Linux无窗口系统下搭建 Qt 开发环境 本文将介绍如何在树莓派的嵌入式 Linux 环境下,搭建 Qt 开发环境,实现无窗口系统模式(framebuffer)下的图形程序开发。 1. 安装 Qt 环境 接下来,安装核心 Qt 开发库以及与 …...
JSON vs 表单格式:两种常见请求格式的区别与应用
搞iOS UI 自动化的同时涉及到了给后端发送请求,请求数据的格式常用的有json格式和表单格式,这两种格式如何区分,如何使用,特此总结了一下。 表单格式(Form Data) 传统的 HTML 表单使用的请求体格式&#…...
通过torch.utils.data.DataLoader可提高深度学习的10倍运行的速度?
引言 在深度学习的训练过程中,数据加载是一个关键步骤,它直接影响到模型训练的效率。为了提高运行速度,我们通常会采用多种方法,比如数据预处理、多线程加载、缓存策略等。然而,有一个经常被忽视的优化点——调整torc…...
【QT】背景,安装和介绍
TOC 目录 背景 GUI技术 QT的安装 使用流程 QT程序介绍 main.cpp编辑 Wiget.h Widget.cpp form file .pro文件 临时文件 C作为一门比较古老的语言,在人们的认知里始终是以底层,复杂和高性能著称,所以在很多高性能需求的场景之下…...
计算机网络:IP协议详细讲解
目录 前言 一、IP网段划分 二、IP报头 三、解决IP地址不足-->NAT技术 前言 在之前,我们学习了传输层中的TCP和UDP,重点是TCP协议,他帮我们解决具体到主机的哪个应用(端口)、传输的可靠(序列号、校验和…...
Python中使用pip换源的详细指南
在Python开发过程中,我们经常需要安装各种第三方库。pip是Python的包管理工具,用于安装和管理Python库。然而,由于网络原因,有时访问默认的Python包索引(PyPI)可能会比较慢。这时,我们可以通过更…...
【Unity】WebGL全屏问题
1 前言 WebGL项目打包时不可避免的需要面对全屏化问题,或者说是占满网页的问题。这里讨论一下此问题。 2 全屏化 2.1 打包模板 WebGL在打包时可以选择不同的打包模板,其会影响最终打包好的项目在网页中的展现形式。可以在“Project Setting/Player/Set…...
基于大数据python 电商数据分析及推荐可视化系统(源码+LW+部署讲解+数据库+ppt)
!!!!!!!!! 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度(部分学校只有一次答辩机会 没弄好就延迟…...
基于大数据python 热门微博数据分析可视化系统(源码+LW+部署讲解+数据库+ppt)
!!!!!!!!! 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度(部分学校只有一次答辩机会 没弄好就延迟…...
MATLAB R2024b软件下载安装教程
软件版本: MATLAB R2024b 软件大小:24G 安装环境:Windows 10/11(64位) 界面语言:简体中文 软件下载:https://pan.xunlei.com/s/VOCut9-UJcX7k3AO7IGXobAiA1?pwdkqkr# 软件参考安装教程 1、使用网盘…...
机器学习算法(六)---逻辑回归
常见的十大机器学习算法: 机器学习算法(一)—决策树 机器学习算法(二)—支持向量机SVM 机器学习算法(三)—K近邻 机器学习算法(四)—集成算法 机器学习算法(五…...
Pareidoscope - 语言结构关联工具
文章目录 关于 Pareidoscope安装使用方法输入格式语料库查询 将语料库转换为 SQLite3 数据库两种语言结构之间的关联简单词素分析关联共现和伴随词素分析相关的更大结构可视化关联结构 关于 Pareidoscope Pareidoscope 是一组 用于确定任意语言结构之间 关联的工具,…...
Java中 HttpURLConnection 和 HttpClient 详解(初学者友好)
Java中HttpURLConnection和HttpClient详解(初学者友好) 在Java开发中,向服务器发送HTTP请求是常见的需求,比如调用API接口或获取远程数据。在JDK中,主要有两种方式实现HTTP通信: 使用 HttpURLConnection&…...
vulnhub-LUPINONE-靶场复盘-题解
靶机的下载连接https://download.vulnhub.com./empire/01-Empire-Lupin-One.zip 下载镜像后解压,然后导入到vmware中,使用的是nat模式 kali的ip地址:10.10.1.128 靶机ip地址:10.10.1.135 1.扫描靶机ip地址 命令:n…...
diff算法
vue的diff算法详解 vue: diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行, 不会跨层级比较 在diff比较的过程中,循环从两边向中间比较 diff 算法在很多场景下都有应用,在 vue 中&…...
通过异步使用消息队列优化秒杀
通过异步使用消息队列优化秒杀 同步秒杀流程异步优化秒杀异步秒杀流程基于lua脚本保证Redis操作原子性代码实现阻塞队列的缺点 同步秒杀流程 public Result seckillVoucher(Long voucherId) throws InterruptedException {SeckillVoucher seckillVoucher iSeckillVoucherServi…...
项目整合logback日志打印线程id
项目打印日志能帮助我们解决很多的问题,提示我们出现的问题,通过日志我们可以准确的定位问题快速找到问题点解决问题。 <?xml version"1.0" encoding"UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO &l…...
WEB开发: 丢掉包袱,拥抱ASP.NET CORE!
今天的 Web 开发可以说进入了一个全新的时代,前后端分离、云原生、微服务等等一系列现代技术架构应运而生。在这个背景下,作为开发者,你一定希望找到一个高效、灵活、易于扩展且具有良好性能的框架。那么,ASP.NET Core 显然是一个…...
爬虫专栏第一篇:深入探索爬虫世界:基础原理、类型特点与规范要点全解析
本专栏会对爬虫进行从0开始的讲解,每一步都十分的细致,如果你感兴趣希望多多点赞收藏关注支持 简介:文章对爬虫展开多方面剖析。起始于爬虫的基本概念,即依特定规则在网络抓取信息的程序或脚本,在搜索引擎信息提取上作…...
SpringBoot3 + Vue3 由浅入深的交互 基础交互教学2
目录 一、这篇文章是基础交互教学系列的续作 二、发送请求时,携带发送的数据json格式的参数:data 三、携带token请求头,进行JWT校验 四、实现throw抛出异常,并交互显示在前端的界面 一、这篇文章是基础交互教学系列的续作 大…...
PID模糊控制算法(附MATLAB仿真程序)
一、基本原理 PID模糊控制算法是一种将传统PID控制与模糊逻辑相结合的控制策略。它利用模糊逻辑处理不确定性和非线性问题的能力,以提高控制系统的性能。以下是PID模糊控制算法的基本原理: 1.1. **误差和误差变化率的计算**: - 首先&…...
云轴科技ZStack助力 “上科大智慧校园信创云平台”入选上海市2024年优秀信创解决方案
近日,为激发创新活⼒,促进信创⾏业⾼质量发展,由上海市经济信息化委会同上海市委网信办、上海市密码管理局、上海市国资委等主办的“2024年上海市优秀信创解决方案”征集遴选活动圆满落幕。云轴科技ZStack支持的“上科大智慧校园信创云平台”…...
分布式集群下如何做到唯一序列号
优质博文:IT-BLOG-CN 分布式架构下,生成唯一序列号是设计系统常常会遇到的一个问题。例如,数据库使用分库分表的时候,当分成若干个sharding表后,如何能够快速拿到一个唯一序列号,是经常遇到的问题。实现思…...
Linux vi/vim
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 什么是 vim&…...
二分搜索(二)搜索插入位置
35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …...
postgresql in模糊查询
postgresql in模糊查询 plsql模糊查询表名 转载 一.简单查询 1.Select 列名,列名…from select e.empno,e.ename,e.job,e.sal from emp e(别名); 2.带条件查询 select 列名,列名,…,列名 from 表名 where –查询名字叫SMITH的员工的信息 select * from emp where ena…...