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

Deepmotion技术浅析(五):运动追踪

运动追踪是 DeepMotion 动作捕捉和 3D 重建流程中的核心模块之一。该模块的主要任务是在视频序列中跟踪人体的运动轨迹,捕捉人体各部分随时间的变化,并生成连续的 3D 运动数据。DeepMotion 的运动追踪技术结合了计算机视觉、深度学习和物理模拟等方法,能够实现高精度、实时的运动捕捉。


1. 运动追踪概述

1.1 工作原理

DeepMotion 的运动追踪技术主要分为以下几个步骤:

1.2D/3D 关键点检测

  • 从视频帧中检测人体关键点(如关节、头部、手脚等)的 2D 或 3D 坐标。

2.时序建模

  • 分析连续帧之间的时序关系,捕捉人体运动的动态变化。

3.运动轨迹生成

  • 生成人体各部分随时间变化的运动轨迹。

4.物理模拟与优化

  • 利用物理模拟技术对运动轨迹进行优化,使其更加自然和逼真。
1.2 应用场景

DeepMotion 的运动追踪技术可以应用于以下场景:

  • 游戏开发
    • 捕捉玩家的动作,生成游戏角色的动画。
  • 电影制作
    • 捕捉演员的动作,生成电影特效动画。
  • 运动分析
    • 分析运动员的动作,进行科学训练和评估。
  • 虚拟现实
    • 实现虚拟角色与现实环境的交互。

2. 基于深度学习的运动追踪

2.1 模型架构详解

DeepMotion 的运动追踪模型结合了卷积神经网络(CNN)、递归神经网络(RNN)和 Transformer 等深度学习技术。

2.1.1 HRNet + Transformer
  • 模型结构

    • 特征提取

      • 使用 HRNet 从视频帧中提取高分辨率的特征图。
      • HRNet 的输出是一个高分辨率的特征图,保留了图像的细节信息。
    • Transformer 编码器

      • 将 HRNet 提取的特征图输入到 Transformer 编码器中,进行时序建模。
      • Transformer 编码器包含多个自注意力层和前馈神经网络(Feedforward Neural Network, FFN)层。
    • 关键点检测

      • 从 Transformer 编码器的输出中检测人体关键点的 2D 或 3D 坐标。
      • 使用全连接层或卷积层进行关键点坐标回归。
  • 公式推导

    • HRNet 特征提取

      • 其中,\textbf{x} 是输入图像,\textbf{f} 是提取的特征图。
    • Transformer 编码器

      • 其中,\textbf{z} 是 Transformer 编码器的输出。
    • 关键点坐标回归

      • 其中,\textbf{p}_{\textbf{k}}​ 是第 \textrm{k} 个关键点的 2D 或 3D 坐标,\textbf{W}_{\textrm{k}} 和 \textbf{b}_{\textrm{k}} 是权重和偏置参数。
  • 训练过程

    • 使用均方误差(MSE)作为损失函数,衡量预测关键点坐标与真实关键点坐标之间的差异。
    • 使用 Adam 优化器进行模型训练。
2.1.2 时序模型(LSTM, GRU)
  • 模型结构

    • LSTM(Long Short-Term Memory)

      • LSTM 是一种特殊的 RNN,能够有效解决长距离依赖问题。
      • LSTM 包含三个门:输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。
    • GRU(Gated Recurrent Unit)

      • GRU 是 LSTM 的简化版本,参数更少,训练速度更快。
      • GRU 包含两个门:重置门(reset gate)和更新门(update gate)。
  • 公式推导

    • LSTM

      • 其中,\textbf{x}_{t}​ 是当前输入,\textbf{h}_{t-1} 是前一时刻的隐藏状态,\textbf{c}_{t-1} 是前一时刻的记忆单元,\textbf{h}_{t}​ 是当前隐藏状态,\textbf{c}_{t}​ 是当前记忆单元。
    • GRU

      • 其中,\textbf{r}_{t} 是重置门,\textbf{z}_{t}​ 是更新门,\widetilde{\textbf{h}}_{t} 是候选隐藏状态,\textbf{h}_{t} 是当前隐藏状态。
  • 训练过程

    • 与 HRNet + Transformer 类似,使用 MSE 作为损失函数,Adam 优化器进行训练。
2.2 关键点轨迹生成
  • 轨迹平滑

    • 使用卡尔曼滤波(Kalman Filter)或高斯滤波(Gaussian Filter)对关键点轨迹进行平滑,消除噪声和抖动。
  • 轨迹预测

    • 使用 LSTM 或 GRU 模型对关键点轨迹进行预测,预测未来时刻的关键点位置。

3.基于物理模拟的运动追踪

基于物理模拟的运动追踪旨在通过引入物理引擎和动力学优化,使生成的人体运动轨迹更加自然、逼真,并符合物理规律。DeepMotion 主要通过以下步骤实现:

3.1 物理引擎

物理引擎负责模拟人体在物理环境中的运动,包括刚体动力学和软体动力学。

3.1.1 刚体动力学(Rigid Body Dynamics)
  • 工作原理

    • 刚体动力学模拟人体的骨骼和关节运动,将人体视为由多个刚体(骨骼)通过关节连接而成的系统。
    • 主要计算人体的运动轨迹、速度、加速度以及受到的力。
  • 实现细节

    • 运动方程

      • 人体运动遵循牛顿第二定律:

        • 其中,\textbf{F} 是力,m 是质量,\textbf{a} 是加速度。
      • 运动方程可以写成:

      • 通过积分运动方程,可以得到速度和位置:

    • 约束条件

      • 关节运动受到物理约束,如关节角度限制、肢体长度限制等。
      • 约束条件可以表示为:

        • 其中,g 是约束函数,\textbf{p} 是关节位置。
3.1.2 软体动力学(Soft Body Dynamics)
  • 工作原理

    • 软体动力学模拟人体的肌肉、皮肤等软组织的运动。
    • 主要考虑弹性力、阻尼力等,使运动更加自然和逼真。
  • 实现细节

    • 弹性力

      • 弹性力使软体恢复到原始形状,遵循胡克定律(Hooke's Law):

        • 其中,\textbf{F}_{elastic}​ 是弹性力,k 是弹性系数,\textbf{x} 是当前位置,\textbf{x}_{0}​ 是原始位置。
    • 阻尼力

      • 阻尼力与速度成正比,起到减缓运动的作用:

        • 其中,\textbf{F}_{damping}​ 是阻尼力,c 是阻尼系数,\textbf{v} 是速度。
    • 运动方程

      • 结合弹性力和阻尼力,运动方程可以写成:

        • 通过积分运动方程,可以得到软体的运动轨迹。
3.2 动力学优化

动力学优化旨在通过优化算法,对物理引擎生成的运动轨迹进行微调,使其更加自然和逼真。

3.2.1 运动学约束优化
  • 工作原理

    • 应用运动学约束(如关节角度限制、肢体长度限制等)对运动轨迹进行优化。
  • 实现细节

    • 约束条件

      • 运动学约束可以表示为:

        • 其中,g 是约束函数,\textbf{p} 是关节位置。
    • 优化算法

      • 使用拉格朗日乘数法(Lagrange Multiplier Method)或罚函数法(Penalty Method)将约束条件引入优化问题。
      • 例如,使用罚函数法:

        • 其中, 是拉格朗日函数,E\left ( \textbf{p} \right ) 是能量函数,\lambda 是罚因子。
3.2.2 能量优化
  • 工作原理

    • 通过最小化能量函数,使运动轨迹更加平滑和逼真。
  • 实现细节

    • 能量函数

      • 能量函数可以表示为:

        • 其中,k_{i} 是弹性系数,\textbf{p}_{i}​ 是当前关节位置,\textbf{p}_{i0} 是原始关节位置。
    • 优化算法

      • 使用梯度下降法(Gradient Descent)或共轭梯度法(Conjugate Gradient)进行优化。
      • 例如,使用梯度下降法:

        • 其中,\alpha 是学习率,\bigtriangledown E\left ( \textbf{p}_{i} \right )是能量函数对关节位置的梯度。

4.模型优化与加速

为了提高运动追踪模型的运行效率,DeepMotion 采用多种模型优化和加速技术。

4.1 模型压缩
4.1.1 量化(Quantization)
  • 工作原理

    • 量化是指将模型参数从高精度(如 32 位浮点数)转换为低精度(如 8 位整数),从而减少模型的存储空间和计算量。
  • 实现细节

    • 训练后量化

      • 在模型训练完成后进行量化。
      • 量化公式:

        • 其中,\textbf{W}_{int8} 是量化后的权重,\textbf{W}_{float32}​ 是原始权重,s 是缩放因子。
    • 量化感知训练

      • 在训练过程中模拟量化过程,使模型对量化误差具有更好的鲁棒性。
4.1.2 剪枝(Pruning)
  • 工作原理

    • 剪枝是指删除模型中冗余的权重或神经元,从而减少模型的参数量和计算量。
  • 实现细节

    • 权重剪枝

      • 删除模型中权重较小的连接。
    • 神经元剪枝

      • 删除模型中激活值较低的神经元。
4.2 模型加速
4.2.1 GPU 加速
  • 工作原理

    • 利用 GPU 强大的并行计算能力,加速模型推理。
  • 实现细节

    • 使用深度学习框架(如 TensorFlow, PyTorch)自带的 GPU 加速功能。
    • 使用 CUDA 编程语言编写自定义的 GPU 加速代码。
4.2.2 并行计算
  • 工作原理

    • 使用并行计算技术,将模型的不同部分分配到不同的计算节点上,进行并行处理。
  • 实现细节

    • 数据并行

      • 将数据分成多个批次(batch),并行处理。
    • 模型并行

      • 将模型的不同层分配到不同的计算节点上,进行并行计算。

相关文章:

Deepmotion技术浅析(五):运动追踪

运动追踪是 DeepMotion 动作捕捉和 3D 重建流程中的核心模块之一。该模块的主要任务是在视频序列中跟踪人体的运动轨迹,捕捉人体各部分随时间的变化,并生成连续的 3D 运动数据。DeepMotion 的运动追踪技术结合了计算机视觉、深度学习和物理模拟等方法&am…...

【html网页页面012】html+css制作品牌主题宏宝莱网页含视频、留言表单(7页面附效果及源码)

品牌主题宏宝莱网页制作 🥤1、写在前面🍧2、涉及知识🌳3、网页效果完整效果(7页):代码目录结构:page1、首页page2、衍生品page3、包装设计page4、视频介绍page5、留言板page6、联系我们page7、详情页(三层页…...

Java的栈与队列以及代码实现

Java栈和队列 栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组实现)用队列实现栈用栈来实现队列总结 栈的概念(Stack) 栈是常见的线性数据结构&…...

华为HarmonyOS NEXT 原生应用开发:鸿蒙中组件的组件状态管理、组件通信 组件状态管理小案例(好友录)!

文章目录 组件状态管理一、State装饰器1. State装饰器的特点2. State装饰器的使用 二、Prop装饰器(父子单向通信)1. Prop装饰器的特点2. Prop装饰器的使用示例 三、Link装饰器(父子双向通信)1. Link装饰器的特点3. Link使用示例 四…...

LeetCode:150. 逆波兰表达式求值

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:150. 逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表…...

LLM模型的generate和chat函数区别

在 Hugging Face 的 transformers 库中,GPT(Generative Pre-trained Transformer)类的模型有两个常用的生成文本的方法:generate 和 chat。这两个方法在使用上有一些区别。通常公司发布的 LLM 模型会有一个基础版本,还…...

Vulhub:Fastjson[漏洞复现]

1.2.24-rce(CVE-2017-18349-Fastjson反序列化) 对于 Fastjson 来说,该漏洞的主要问题在于其1.2.24版本中autotype特性允许任意类的反序列化,因此攻击者通过type指定自定义类并实例化,在特定条件下调用这些类的公共方法。如果一个不受信任的 J…...

C++学习日记---第19天

笔记复习 1.继承 在C中,我们通过函数来实现代码的复用,防止重复造轮子,但是使用函数也有一个缺点1,就是当函数被定义完成之后,它的功能也就确定了,无法被修改,这时候我们引入继承。 C中的继承…...

opencv-python的简单练习

题目1.读取一张彩色图像并将其转换为灰度图。 import cv2 # 读取图片文件 img cv2.imread(./1.png)# 将原图灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出图片 cv2.imshow(img,img) cv2.imshow(img_g,img_gray) # 进行阻塞 cv2.waitKey(0) 题目2:…...

生活小妙招之UE CaptureRT改

需求,四个不同的相机拍摄结果同屏分屏显示 一般的想法是四个Capture拍四张RT,然后最后在面片/UI上组合。这样的开销是创建4张RT,材质中采样4次RT。 以更省的角度,想要对以上流程做优化,4个相机拍摄是必须的&#xff…...

源码编译jdk11 超详细教程 openjdk11

关于源代码 当前的openJDK的源代码已经被发布到了github上了,所以我们可以直接从github上下载到。 OpenJDK11u源码托管地址:https://github.com/openjdk/jdk11u 带后缀U的地址,或者发行的jdk包,表示当前版本下的持续跟新版。而…...

lightRAG 论文阅读笔记

论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受,这篇论文整体看下来,没有太多惊艳的地方。核心就是利用知识图谱,通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…...

计算机网络-数据链路层

以太⽹的帧格式 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的; • IP地址描述的是路途总体的 起点 和 终点; • MAC地址描述的是路途上的每⼀个区间的起点和终点;、 举个例子: 帧协议类型字段有三种值,分别对应IP、ARP、RARP...

ES6 混合 ES5学习记录

基础 数组 let arr [数据1,数据2,...数组n] 使用数组 数组名[索引] 数组长度 arr.length 操作数组 arr.push() 尾部添加一个,返回新长度 arr.unshift() 头部添加一个,返回新长度 arr.pop() 删除最后一个,并返回该元素的值 shift 删除第一个单元…...

Electron electron-builder.yml 配置 (自定义包名,用户自定义安装目录...)

electron-builder.yml 配置 # 唯一的应用程序标识符,用于操作系统级别的识别 appId: com.electron.app# 应用程序的名称,显示在用户界面上 productName: 我的应用# 定义构建资源目录,放置图标、证书等资源文件 directories:buildResources: …...

Python运维自动化之字典Dict

字典Dict(哈希表) Dict即Dictionary,也称为mapping。 Python中,字典由任意个元素构成的集合,每一个元素称为Item,也称为Entry。这个Item是由(key, value)组成的二元组。 字典是可变的、无序的、key不重复的key-value键值对集合。…...

开展新闻营销分为策划期、实施期、优化期三个重要阶段

也许有人会问:什么是新闻营销呢?这是一个在当今商业营销领域备受关注的概念。在信息爆炸的时代,企业都在绞尽脑汁寻找各种有效的营销方式来提升自己的品牌知名度、产品销量等,新闻营销便是其中一种重要的手段。 我们可以将“新闻营…...

解决 Git 默认不区分文件名大小写的问题

不得不说 Git 默认不区分文件名大小写真是一个大坑,由于之前的项目目录比较乱,项目下的文件夹命名都不规范,这两天一直在整理,然后今天从服务器将项目重新 clone 下来后发现,之前将所有文件名首字母改成大写的改动全部…...

Qt网络通信、线程之间通信详解

一、 网络通信协议主要包括TCP和UDP,但更常用和可靠的是TCP协议。TCP是一种面向连接的、可靠的、面向流的传输协议,特别适合用于连续数据传输。在Qt中,网络通信主要通过QTcpSocket类和QTcpServer类来实现。 QTcpSocket类用于建立TCP客户端和…...

java泛型

定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09; 称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型。 作用&#xff1a;泛型提供了在编译阶段约束所能操作的数据类型&#xff0c;并自动进行检…...

C++入门(1)

一、第一个C程序 #include <iostream> using namespace std; int main() {cout << "hello world" << endl; return 0; } 1. main函数 main 函数是程序的入口&#xff0c;C 的程序不管有多少行代码&#xff0c;都是从 main 函数开始执行的&am…...

在Linux的嵌入式开发中,如何确定要操作的帧缓冲设备是第几个实例?即是fb0还是fb1还是fb2...

方法汇总 在实际编写程序时&#xff0c;要确定操作的帧缓冲设备&#xff08;如 /dev/fb0、/dev/fb1 等&#xff09;&#xff0c;通常需要结合系统环境和硬件配置。以下是一些常见的方法&#xff0c;帮助你确定需要打开的帧缓冲设备实例&#xff1a; 1. 检查系统设备文件 查看…...

JS 中请求队列与锁的巧妙结合

一、引言 在 JavaScript 开发中&#xff0c;尤其是在涉及到异步操作和对共享资源的并发访问时&#xff0c;有效地控制请求顺序和资源访问权限至关重要。例如&#xff0c;在多个网络请求同时针对一个有限制访问频率的 API 或者多个异步任务竞争同一个文件写入权限的场景下&#…...

注意力机制+时空特征融合!组合模型集成学习预测!LSTM-Attention-Adaboost多变量时序预测

注意力机制时空特征融合&#xff01;组合模型集成学习预测&#xff01;LSTM-Attention-Adaboost多变量时序预测 目录 注意力机制时空特征融合&#xff01;组合模型集成学习预测&#xff01;LSTM-Attention-Adaboost多变量时序预测效果一览基本介绍程序设计参考资料 效果一览 基…...

Prefix Decoder /Causal Decoder/Encoder-Decoder的区别

Prefix Decoder 定义&#xff1a;Prefix Decoder&#xff0c;也称为非因果解码器&#xff0c;属于Decoder only结构。输入部分使用双向注意力&#xff0c;输出部分使用单向注意力。在生成新的输出时&#xff0c;会考虑到所有之前生成的输出。 特点&#xff1a;Prefix Decoder在…...

《智能体开发实战(高阶)》四、系统化的日志周报智能体开发计划

智能体扩展与完善规划 为了将前几个章节的智能体逐步扩展为支持整个公司团队使用的高效工具,以下是分阶段的完善与扩写规划。每个阶段旨在提升功能覆盖范围、处理能力和用户体验,并为企业提供实际价值。 阶段一:基础功能完善 目标:巩固现有功能,提升健壮性和适用性。 支…...

多线程编程杂谈(上)

问题 线程执行的过程中可以强制退出吗&#xff1f; 主动退出&#xff1f;被动退出&#xff1f; 问题抽象示例 需要解决的问题 g_run 全局变量需要保护吗&#xff1f; 如何编码使得线程中每行代码的执行可被 g_run 控制&#xff1f; 线程代码在被 g_run 控制并 "强制退…...

二五(Vue2-01)、创建实例、插值表达式、响应式、Vue指令、

1. Vue 概念及创建实例 <body><!-- 创建Vue实例&#xff0c;初始化渲染1. 准备容器 (Vue所管理的范围)2. 引包 (开发版本包 / 生产版本包) 官网3. 创建实例4. 添加配置项 > 完成渲染 --><div id"app"><h1>{{msg}}</h1><a href&…...

P8772 求和 P8716 回文日期

文章目录 [蓝桥杯 2022 省 A] 求和[蓝桥杯 2020 省 AB2] 回文日期 [蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和&#xff0c;即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a…...

Burp Suite(2)2024.1.1Burp Suite专业版激活(保姆级教程)

声明&#xff1a; 本文所使用的专业版BP在我的博客资源里面&#xff0c;需要的师傅可以自行下载。 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内…...

基于注意力的几何感知的深度学习对接模型 GAABind - 评测

GAABind 作者是苏州大学的生物基础与医学院, 期刊是 Briefings in Bioinformatics, 2024, 25(1), 1–14。GAABind 是一个基于注意力的几何感知蛋白-小分子结合模式与亲和力预测模型,可以捕捉小分子和蛋白的几何、拓扑结构特征以及相互作用。使用 PDBBind2020 和 CASF2016 作…...

Python中的优化函数2:cvxpy包

文章目录 介绍使用步骤示例1示例2官方文档 介绍 它是一个基于 Python 的凸优化建模工具&#xff0c;专门用于定义和求解 凸优化问题&#xff08;Convex Optimization Problems&#xff09;。CVXPY 提供了一种直观的方式来表达优化问题&#xff0c;并通过高效的求解器来解决这些…...

【Linux】结构化命令

结构化命令structured command&#xff1a;允许脚本根据条件跳过部分命令&#xff0c;改变执行流程。 1、if-then语句 格式1&#xff1a; if command then commands fi 格式2&#xff1a; if command; then commands fi 运行if之后的command命令&#xff0c;如果它的退出状态码…...

3-机器人视觉-机器人抓取与操作

文章目录 3机器人视觉目录 1. 传感器和标定摄像头模型Intrinsic MatrixExtrinsic Matrix 标定内参标定手眼标定和外参标定 力传感器&其它传感器其它传感器 2. 神经网络和图像处理2D特征处理常见架构 训练流程推理流程部署流程2D 图像任务3D Point Cloud FeaturePointNet Ap…...

LINUX——shell编程

Shell 简介 Shell 是一个 C 语言编写的脚本语言&#xff0c;它是用户与 Linux 的桥梁&#xff0c;用户输入命令交给 Shell 处理&#xff0c; Shell 将相应的操作传递给内核&#xff08;Kernel&#xff09;&#xff0c;内核把处理的结果输出给用户。 下面是流程示意图&#xff…...

12.11函数 结构体 多文件编译

1.脑图 定义一个数组&#xff0c;用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】 1>封装函数 录入5个学生信息 2>封装函数 显示学生信息 3>封装函数 删除第几个学生信息&#xff0c;删除后调用显示学生信息函数 显示 4> 封…...

【go语言】reflect包与类型推断

reflect 包的核心概念 Go 中的反射涉及两个核心概念&#xff1a; Type&#xff1a;表示一个类型的结构体&#xff0c;reflect.Type 是类型的描述。Value&#xff1a;表示一个值的结构体&#xff0c;reflect.Value 是一个具体值的包装。 反射让我们能够动态地访问对象的类型和…...

docker启动一个helloworld(公司内网服务器)

这里写目录标题 容易遇到的问题&#xff1a;1、docker连接问题 我来介绍几种启动 Docker Hello World 的方法&#xff1a; 最简单的方式&#xff1a; docker run hello-world这会自动下载并运行官方的 hello-world 镜像。 使用 Nginx 作为 Hello World&#xff1a; docker…...

【瑞萨RA0E1开发板评测报告】IIC OLED 测试

【瑞萨RA0E1开发板评测报告】IIC OLED 测试 基于前面关于瑞萨 e studio 开发软件的使用&#xff0c;以及工程测试基础&#xff0c;本文进一步探索实现硬件 IIC OLED 的文字和图片显示。 1 背景 简单介绍 IIC 通信协议、OLED 显示原理、SS1306 驱动 IC 等。 IIC 通信协议 I…...

全球叉车市场 2023 - 2032 年发展趋势:自动化、电商与电动叉车的崛起

全球叉车市场到2032年将达到955.1亿美元&#xff0c;年复合增长率为7.49% | Astute Analytica 全球叉车市场正迎来显著增长&#xff0c;市场估值预计将从2023年的498.6亿美元增长至2032年的955.1亿美元&#xff0c;预测期内年复合增长率&#xff08;CAGR&#xff09;为7.49%。这…...

Kafka系列教程 - Kafka 生产者 -2

1. 生产者简介 不管是把 Kafka 作为消息队列系统、还是数据存储平台&#xff0c;总是需要一个可以向 Kafka 写入数据的生产者和一个可以从 Kafka 读取数据的消费者&#xff0c;或者是一个兼具两种角色的应用程序。 使用 Kafka 的场景很多&#xff0c;诉求也各有不同&#xff…...

【专题】2024年中国新能源汽车用车研究报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38564 本年度&#xff0c;国家及地方政府持续发力&#xff0c;推出诸多政策组合拳&#xff0c;全力推动汽车产业向更高质量转型升级&#xff0c;积极鼓励消费升级&#xff0c;并大力推行以旧换新等惠民生、促发展举措。尤为引人注目…...

将带注释的Word文档改造成点击注释引用即可弹窗显示注释的HTML文档

阅读中国古籍电子书的时候&#xff0c;往往有很多注释。在正文和注释之间来回滚动页面是一件挺麻烦的事&#xff0c;比较方便的做法是将它编辑成通过点击注释引用即将注释弹出显示在引用所在位置的HTML文档&#xff0c;然后利用HTML文档制作成PDF或者epub文件&#xff0c;就比较…...

【Android开发】安装Android Studio(2023.1.1)

下载安装包 Android Studio2023.1.1百度云盘下载&#xff0c;提取码&#xff1a;6666https://pan.baidu.com/s/1vNJezi7aDOP0poPADcBZZg?pwd6666 安装Android Studio 2023.1.1 双击下载好的安装包 弹出界面点击下一步 继续点击【Next】 更改安装路径后继续点击【Next】 点…...

SQLite Truncate Table

SQLite Truncate Table SQLite 是一种轻量级的数据库管理系统&#xff0c;广泛用于各种应用程序中。在数据库管理中&#xff0c;有时候需要快速删除表中的所有数据&#xff0c;这时就可以使用 TRUNCATE TABLE 命令。然而&#xff0c;SQLite 与其他数据库管理系统&#xff08;如…...

港科夜闻 | 香港科大与荷兰代尔夫特理工大学(TU Delft)建立合作伙伴关系,推动艺术科技教育与研究...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与荷兰代尔夫特理工大学(TU Delft)建立合作伙伴关系&#xff0c;推动艺术科技教育与研究。2024年12月6日&#xff0c;合作伙伴计划正式启动&#xff0c;双方期望透过合作加强艺术科技知识交流&#xff0c;借此推…...

谈一谈大数据流式处理,以Spark Streaming为例详细论述

Spark Streaming是构建在Spark上的实时流计算框架&#xff0c;可以进行实时流数据处理。Spark是一个类似于MapReduce的分布式计算框架&#xff0c;其核心是弹性分布式数据集&#xff0c;可以在快速在内存中对数据集进行多次迭代&#xff0c;以支持复杂的数据挖掘算法和图形计算…...

RabbitMQ实现消息发送接收——实战篇(路由模式)

本篇博文将带领大家一起学习rabbitMQ如何进行消息发送接收&#xff0c;我也是在写项目的时候边学边写&#xff0c;有不足的地方希望在评论区留下你的建议&#xff0c;我们一起讨论学习呀~ 需求背景 先说一下我的项目需求背景&#xff0c;社区之间可以进行物资借用&#xff0c…...

Docker Desktop占用空间问题解决

Windows安装Docker Desktop&#xff0c;没过多久就会发现C盘空间满了&#xff0c;很大可能是Docker Desktop的文件占用了空间&#xff0c;可以通过以下步骤解决&#xff1a; 步骤一&#xff1a;执行清理命令 docker system prune清理磁盘&#xff0c;删除关闭的容器、无用的数…...

系统性能优化

一、概述 性能优化的目标&#xff1a;是提高系统或应用程序的响应时间、吞吐量、cpu、内存、磁盘IO、网络、流量、JVM、Tomcat、DB等方面的性能指标。 性能优化需要有一些技巧&#xff1a;对于整个产品或项目而言&#xff0c;比如可以从前端优化、后端优化、架构优化、高并发…...