计算机视觉——JPEG AI 标准发布了图像压缩新突破与数字图像取证的挑战及应对策略
概述
今年2月,经过多年旨在利用机器学习技术开发一种更小、更易于传输和存储且不损失感知质量的图像编解码器的研究后,JPEG AI国际标准正式发布。
来自JPEG AI官方发布流,峰值信噪比(PSNR)与JPEG AI的机器学习增强方法的对比。
这一技术问世鲜有媒体报道的一个可能原因是,此次发布的核心PDF文件无法通过像Arxiv这样的免费访问平台获取。尽管如此,Arxiv此前已经发表了多项研究,探讨了JPEG AI在多个方面的重要意义,包括该方法不常见的压缩伪影及其对图像鉴伪的重要性。
一项研究比较了包括JPEG AI早期草案版本在内的压缩伪影,发现新方法有使文本模糊的倾向 —— 在编解码器可能成为证据链一部分的情况下,这可不是小事。
由于JPEG AI改变图像的方式与合成图像生成器产生的伪影相似,现有的鉴伪工具难以区分真实图像和伪造图像:
根据最近一篇论文(2025年3月),经过JPEG AI压缩后,最先进的算法在定位图中已无法可靠地区分真实内容和被篡改区域。左侧的原始示例是被篡改/伪造的图像,在标准鉴伪技术下,篡改区域在中间图像中清晰可辨。然而,JPEG AI压缩使伪造图像更具可信度(最右侧图像)。
原因之一是,JPEG AI使用的模型架构与鉴伪工具试图检测的生成式系统所使用的架构相似:
新论文展示了人工智能驱动的图像压缩方法与实际人工智能生成图像方法之间的相似性。
因此,从鉴伪的角度来看,这两种模型可能会产生一些相似的底层视觉特征。
一、 量化
这种交叉现象的出现是由于两种架构都采用了量化技术。在机器学习中,量化既被用作一种将连续数据转换为离散数据点的方法,也被用作一种优化技术,可以显著减小训练模型的文件大小(普通的图像合成爱好者应该熟悉在庞大的官方模型发布后,等待社区推出可在本地硬件上运行的量化版本的过程)。
在这种情况下,量化指的是将图像潜在表示中的连续值转换为固定离散步长的过程。JPEG AI利用这一过程,通过简化内部数值表示来减少存储或传输图像所需的数据量。
虽然量化使编码更高效,但它也引入了一些结构规律,这些规律可能类似于生成式模型留下的伪影 —— 这些伪影细微到难以察觉,但会干扰鉴伪工具。
作为回应,一篇题为《JPEG AI图像的三个鉴伪线索》的新论文的作者提出了可解释的非神经网络技术,用于检测JPEG AI压缩、确定图像是否被重新压缩,以及区分经JPEG AI压缩的真实图像和完全由人工智能生成的图像。
二、 方法
2.1 颜色相关性
该论文针对JPEG AI图像提出了三个“鉴伪线索”:JPEG AI预处理步骤中引入的颜色通道相关性;多次压缩过程中可测量的图像质量失真,这些失真揭示了重新压缩事件;以及有助于区分JPEG AI压缩图像和人工智能模型生成图像的潜在空间量化模式。
关于基于颜色相关性的方法,JPEG AI的预处理流程在图像的颜色通道之间引入了统计相关性,形成了一个可作为鉴伪线索的特征。
JPEG AI将RGB图像转换为YUV颜色空间,并执行4:2:0色度子采样,即在压缩前对色度通道进行下采样。这一过程导致红色、绿色和蓝色通道的高频残差之间产生了微妙的相关性 —— 这种相关性在未压缩的图像中不存在,并且其强度与传统JPEG压缩或合成图像生成器产生的相关性不同。
JPEG AI压缩如何改变图像颜色相关性的对比。
上图展示了论文中的一个对比,以红色通道为例,说明了JPEG AI压缩如何改变图像的颜色相关性。
A图将未压缩的图像与经JPEG AI压缩的图像进行对比,显示压缩显著增加了通道间的相关性;B图单独展示了JPEG AI预处理(仅颜色转换和子采样)的效果,表明仅这一步就显著提高了相关性;C图显示传统JPEG压缩也会略微增加相关性,但程度不如JPEG AI;D图分析了合成图像,Midjourney-V5和Adobe Firefly显示出适度的相关性增加,而其他合成图像的相关性更接近未压缩图像的水平。
2.2 率失真
率失真线索通过跟踪图像质量(以峰值信噪比(PSNR)衡量)在多次压缩过程中以可预测的模式下降的情况,来识别JPEG AI的重新压缩。
研究认为,使用JPEG AI反复压缩图像会导致图像质量逐渐下降,但这种下降仍然是可测量的,通过PSNR量化。这种逐渐的退化形成了一个鉴伪线索,用于检测图像是否被重新压缩。
与传统JPEG不同,传统JPEG早期的方法是跟踪特定图像块的变化,而JPEG AI由于其神经压缩架构,需要一种不同的方法。因此,作者建议监测比特率和PSNR在连续压缩过程中的变化。每一轮压缩对图像的改变都比上一轮小,这种变化的减小(与比特率对比绘制)可以揭示图像是否经过了多次压缩:
展示了不同编解码器多次压缩对图像质量的影响,包括JPEG AI和https://arxiv.org/pdf/1802.01436开发的一种神经编解码器的结果;即使在较低的比特率下,两者在每次额外压缩时PSNR都会持续下降。相比之下,传统JPEG压缩在多次压缩过程中质量相对稳定,除非比特率很高。
在上图中,我们看到了JPEG AI、另一种基于人工智能的编解码器和传统JPEG的率失真曲线。结果发现,JPEG AI和神经编解码器在所有比特率下PSNR都持续下降,而传统JPEG只有在比特率非常高时才会出现明显的质量下降。这种行为提供了一个可量化的信号,可用于标记经过重新压缩的JPEG AI图像。
通过提取比特率和图像质量在多次压缩过程中的变化,作者同样构建了一个特征,有助于标记图像是否被重新压缩,为JPEG AI的鉴伪提供了一个潜在的实用线索。
2.3 量化
正如我们之前所见,JPEG AI带来的一个更具挑战性的鉴伪问题是,它与扩散模型生成的合成图像在视觉上相似。这两种系统都使用编码器 - 解码器架构,在压缩的潜在空间中处理图像,并且通常会留下微妙的上采样伪影。
这些共同特征可能会使检测器混淆 —— 即使是在JPEG AI图像上重新训练的检测器也不例外。然而,仍然存在一个关键的结构差异:JPEG AI应用了量化,即将潜在值舍入到离散级别以实现高效压缩,而生成式模型通常不这样做。
新论文利用这一区别设计了一个鉴伪线索,间接测试量化的存在。该方法分析图像的潜在表示对舍入操作的响应,假设如果图像已经经过量化,其潜在结构将与舍入值呈现出可测量的对齐模式。
这些模式虽然肉眼不可见,但会产生统计差异,有助于区分经过压缩的真实图像和完全合成的图像。
平均傅里叶频谱示例显示,经JPEG AI压缩的图像和Midjourney - V5、Stable Diffusion XL等扩散模型生成的图像在频域中都呈现出规则的网格状模式 —— 这些伪影通常与上采样有关。相比之下,真实图像没有这些模式。这种频谱结构的重叠有助于解释为什么鉴伪工具经常将经过压缩的真实图像与合成图像混淆。
重要的是,作者表明,这个线索在不同的生成式模型中都有效,并且即使在压缩强度足以使潜在空间的整个部分归零的情况下仍然有效。相比之下,合成图像在这个舍入测试中的响应要弱得多,这为区分两者提供了一种实用的方法。
该结果旨在成为一种轻量级且可解释的工具,针对压缩和生成之间的核心差异,而不是依赖于脆弱的表面伪影。
三、 数据与测试
3.1 压缩
为了评估他们的颜色相关性线索是否能够可靠地检测JPEG AI压缩(即从未压缩源图像进行的首次压缩),作者在RAISE数据集的高质量未压缩图像上进行了测试,使用JPEG AI参考实现以各种比特率对这些图像进行压缩。
他们在颜色通道相关性的统计模式(特别是每个通道中的残差噪声如何与其他通道对齐)上训练了一个简单的随机森林,并将其与直接在图像像素上训练的ResNet50神经网络进行了比较。
使用颜色相关性特征检测JPEG AI压缩的准确率,在多个比特率下进行比较。该方法在较低比特率下最有效,此时压缩伪影更明显,并且比基线ResNet50模型在未见过的压缩级别上具有更好的泛化能力。
虽然ResNet50在测试数据与训练条件密切匹配时能达到更高的准确率,但它在不同压缩级别上的泛化能力较差。相比之下,基于相关性的方法虽然简单得多,但在各个比特率下表现更一致,特别是在较低压缩率下,JPEG AI的预处理效果更明显。
这些结果表明,即使不使用深度学习,也可以使用可解释且稳定的统计线索来检测JPEG AI压缩。
3.2 重新压缩
为了评估是否能够可靠地检测JPEG AI的重新压缩,研究人员在一组以不同比特率压缩的图像上测试了率失真线索 —— 其中一些图像只压缩了一次,而另一些图像使用JPEG AI进行了第二次压缩。
该方法涉及提取一个17维的特征向量,以跟踪图像的比特率和PSNR在三次压缩过程中的变化。这个特征集捕捉了每一步损失的质量,以及潜在率和超先验率的变化 —— 这些指标是传统基于像素的方法难以获取的。
研究人员在这些特征上训练了一个随机森林,并将其性能与在图像块上训练的ResNet50进行了比较:
使用率失真特征训练的随机森林检测JPEG AI图像是否被重新压缩的分类准确率结果。该方法在初始压缩强度较大(即较低比特率)时表现最佳,并且始终优于基于像素的ResNet50 —— 特别是在第二次压缩比第一次压缩更温和的情况下。
随机森林在初始压缩强度较大(即较低比特率)时表现显著有效,能够清晰地区分单次压缩和二次压缩的图像。与之前的线索一样,ResNet50在泛化方面存在困难,特别是在测试其训练过程中未见过的压缩级别时。
相比之下,率失真特征在各种场景下都保持稳定。值得注意的是,该线索甚至在应用于另一种基于人工智能的编解码器时也有效,这表明该方法的泛化能力超出了JPEG AI。
四、JPEG AI与合成图像
为了评估量化线索是否能有效区分经JPEG AI压缩的真实图像和完全由AI生成的合成图像,研究人员使用了一系列不同来源的图像。这些图像包括从RAISE数据集中选取的高质量未压缩图像,经JPEG AI压缩后得到的图像;以及由多种生成式模型(如Midjourney - V5和Stable Diffusion XL)生成的合成图像。
研究人员分析了图像潜在表示对舍入操作的响应情况。如果图像已经经过量化处理,其潜在结构会与舍入后的值呈现出可测量的对齐模式。他们在这个分析的基础上训练了一个随机森林分类器,并将其性能与直接在图像像素上训练的ResNet50神经网络进行了比较。
使用量化特征检测JPEG AI压缩图像与合成图像的准确率对比。该方法在不同生成式模型和压缩强度下都表现出良好的性能,相比基于像素的ResNet50模型,能更好地区分这两类图像。
结果表明,基于量化线索的随机森林分类器在不同的生成式模型和压缩强度下都能保持较好的性能。即使在压缩强度高到使潜在空间的某些部分归零的情况下,该方法依然有效。而ResNet50模型在面对未在训练中出现过的生成式模型或压缩设置时,其泛化能力较差。
这些结果进一步证明了通过分析量化模式来区分JPEG AI压缩图像和合成图像的可行性。这种方法不依赖于表面的、易变的图像特征,而是着眼于压缩和生成过程的核心差异,为数字图像取证提供了一种更可靠、更具解释性的工具。
五、结论
JPEG AI标准的发布标志着图像压缩技术的一个重要里程碑。它利用机器学习技术,在不损失感知质量的前提下,显著减小了图像文件的大小,提高了图像的传输和存储效率。然而,这种新技术也给数字图像取证领域带来了前所未有的挑战。由于JPEG AI对图像的处理方式与合成图像生成器产生的伪像相似,现有的取证工具难以区分真实图像和经过处理的假图像。
为了应对这一挑战,《JPEG AI图像的三种取证线索》一文的作者提出了三种专门针对JPEG AI图像的取证线索:颜色通道相关性、率失真分析和量化模式检测。通过对这些线索的研究和实验验证,作者展示了如何在不依赖复杂深度学习模型的情况下,利用可解释的统计特征来检测JPEG AI压缩、识别图像是否经过重新压缩,以及区分经JPEG AI压缩的真实图像和完全由AI生成的合成图像。
实验结果表明,基于这些取证线索的方法在不同的压缩率、重新压缩场景和生成式模型下都具有较好的性能和泛化能力。这些方法不仅为数字图像取证提供了实用的工具,也为进一步研究JPEG AI及其他基于机器学习的图像压缩技术的安全性和可靠性奠定了基础。
随着JPEG AI等新技术的不断发展和广泛应用,数字图像的真实性和完整性验证将变得越来越重要。未来的研究可以进一步探索如何结合多种取证线索,提高检测的准确性和鲁棒性;也可以研究如何将这些方法应用到更复杂的图像场景和实际应用中,如社交媒体、新闻媒体和法律取证等领域。
相关文章:
计算机视觉——JPEG AI 标准发布了图像压缩新突破与数字图像取证的挑战及应对策略
概述 今年2月,经过多年旨在利用机器学习技术开发一种更小、更易于传输和存储且不损失感知质量的图像编解码器的研究后,JPEG AI国际标准正式发布。 来自JPEG AI官方发布流,峰值信噪比(PSNR)与JPEG AI的机器学习增强方法…...
【JavaWeb后端开发01】Maven入门
课程内容: 初始Maven Maven概述 Maven模型 Maven仓库介绍 Maven安装与配置 IDEA集成Maven 依赖管理 单元测试 文章目录 1. 初始Maven1.1 介绍1.2 Maven的作用1.2.1 依赖管理1.2.2 项目构建1.2.3 统一项目结构 2. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Ma…...
【Leetcode】16. 最接近的三数之和
一、题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums = [-1,2,1,-4], target = 1 输出:2解释: 与 target 最接近…...
目标检测概述
为什么基于卷积网络的目标检测模型在预测后要使用非极大值抑制 基于卷积网络的目标检测模型可能会在目标的相邻区域生成多个相互重叠框,每个框的预测结果都是同一个目标,引起同一目标的重复检测。造成这一现象的原因主要有两个, 基于卷积网络…...
摄影跟拍预定|基于java+vue的摄影跟拍预定管理系统(源码+数据库+文档)
摄影跟拍预定管理系统 目录 基于SprinBootvue的摄影跟拍预定管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3摄影师功能模块 4用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…...
--图--
并查集 并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述…...
Python中的count()方法
文章目录 Python中的count()方法基本语法在不同数据类型中的使用1. 列表(List)中的count()2. 元组(Tuple)中的count()3. 字符串(String)中的count() 高级用法1. 指定搜索范围2. 统计复杂元素 注意事项 Python中的count()方法 前言:count()是Python中用于序列类型&a…...
通过gird布局实现div的响应式分布排列
目标:实现对于固定宽度的div盒子在页面中自适应排布,并且最后一行的div盒子可以与前面的盒子对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" con…...
Edge 浏览器推出 Copilot Vision:免费实时解析屏幕内容;Aqua Voice:极速 AI 语音输入工具丨日报
开发者朋友们大家好 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看…...
Linux 防火墙( iptables )
目录 一、 Linux 防火墙基础 1. 防火墙基础概念 (1)防火墙的概述与作用 (2)防火墙的结构与匹配流程 (3)防火墙的类别与各个防火墙的区别 2. iptables 的表、链结构 (1)规则表 …...
Hook插件
hook插件 1.概念 在JavaScript中,hook是一种能够拦截和修改函数或方法行为的技术。通过使用hook,开发者可以在现有的函数执行前、执行后或者替换函数的实现逻辑。hook目的是找到函数入口以及一些参数变化,便于分析js逻辑。 2.hook的作用&a…...
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
因客户机房断电,2台主机和共享存储全部断电,来电后,集群启动正常,实例无法正常启动,手动启动报错如下 SQL > startup; ORACLE instance started. Total System Global Area 3.9551E10 bytes Fixed Size …...
R4打卡——tensorflow实现火灾预测
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 1.检查GPU import tensorflow as tf import pandas as pd import numpy as npgpus tf.config.list_physical_devices("GPU") if gpus:…...
基于AI大语言模型的历史文献分析在气候与灾害重建领域中的技术应用
随着人工智能技术的快速发展,大语言模型(如GPT、BERT等)在自然语言处理领域取得了显著进展,特别是在非结构化文本数据的分析方面,极大地拓展了我们的研究视角。这些技术不仅提高了处理和理解文本数据的效率,…...
CSS 字体背景波浪
<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>字体背景波浪</title><style>/* HTML: <div class"loader"></div> *//* HTML: <div class"loader"…...
2025能源网络安全大赛CTF --- Crypto wp
文章目录 前言simpleSigninNumberTheory 前言 大半年以来写的第一篇文章!!! simpleSignin 题目: from Crypto.Util.number import * from gmpy2 import * import osflag bxxx p next_prime(bytes_to_long(os.urandom(128))…...
Redis面试——日志
一、RDB(Redis DataBase) RDB 全程是 Redis DataBase,它是一种将 Redis 在某一时刻内存中的数据以快照形式保存到磁盘的机制 ,相当于给执行save/bgsave命令时刻的内存数据库数据拍了一张快照我们如果通过save命令来执行快照&…...
计算机视觉与深度学习 | 基于YOLOv8与光流法的目标检测与跟踪(Python代码)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 目标检测与跟踪 关键实现逻辑检测-跟踪协作机制特征点选择策略运动…...
nginx-基础知识
目录 相关协议: HTTP协议特点 HTTP协议的原理 HTTP协议的请求方式 HTTP协议的状态码 nginx的功能 nginx缓存 nginx异步非阻塞 nginxI/O多路复用 nginx常用模块以及其功能 相关协议: HTTP协议,超文本传输协议,占用端口80…...
class的访问器成员
class的访问器成员 本质是 class 的语法糖 等价于对象的defineProperty对象里面也能使用 class Product{constructor(count, price){this.count count;this.price price;}get total(){ // 相当于getterreturn this.count * this.price;}}const product new Product(10, 10…...
学习海康VisionMaster之矩形检测
这几天太忙了,好几天没有学习了,今天终于空下来了,继续学习之路吧。 一:进一步学习了 今天学习下VisionMaster中的矩形检测,这个一开始我以为是形态学方面的检测,实际操作下来其实还是边缘直线的衍生应用&…...
【已更新】2025华中杯C题数学建模网络挑战赛思路代码文章教学数学建模思路:就业状态分析与预测
完整内容请看文末最后的推广群 先展示问题一代码和结果、再给出四个问题详细的模型 按性别分析就业与失业状态: employment_status 失业 sex 0 182 1 163 按学历分析就业与失业状态: employment_status 失业 edu_level 0 10 1 172 2 163 按年龄区间分…...
CS144 Lab1实战记录:实现TCP重组器
文章目录 1 实验背景与要求1.1 TCP的数据分片与重组问题1.2 实验具体任务 2 重组器的设计架构2.1 整体架构2.2 数据结构设计 3 重组器处理的关键场景分析3.1 按序到达的子串(直接写入)3.2 乱序到达的子串(需要存储)3.3 与已处理区…...
Linux信号三部曲:产生机制、处理方式与内核接口
Linux系列 文章目录 Linux系列前言一、背景知识铺垫1.1 信号的基本概念1.2 进程对信号的处理 二、信号的产生2.1 前台进程和后台进程2.2 键盘组合键2.3 kill 命令2.4 系统调用2.4.1 signal()接口2.4.2 kill()接口2.4.3 raise()接口2.4.4 abort()接口 总结 前言 Linux中&#x…...
对抗生成进化:基于DNA算法的AIGC检测绕过——让AI创作真正“隐形“
一、技术背景与核心思想 2025年,AIGC检测工具(如Originality.AI 5.0)的识别准确率已达99.3%。本研究提出基于染色体编码的对抗进化框架(CAEF),通过模拟生物进化过程动态优化生成模型,成功将检测…...
探索大语言模型(LLM):马尔可夫链——从诗歌分析到人工智能的数学工具
提出背景与灵感起源 马尔可夫链由俄国数学家安德雷马尔可夫于1906年提出,最初是为了挑战当时概率论中“独立性假设”的局限性。他希望通过研究相依变量序列,证明即使随机变量之间存在依赖关系,大数定律和中心极限定理仍然成立。 灵感来源&am…...
深入解析Java Socket服务器实现:从基础到优雅停机
本文将详细解析一个基于Java Socket实现的服务器程序,涵盖线程池管理、心跳检测、优雅停机等关键特性,并最终提供完整代码实现。 1. 架构概述 这个Socket服务器实现具有以下核心特性: 基于Java原生Socket API实现使用线程池处理客户端连接…...
AI+SWAT模型革命性应用!ArcGIS Pro流域水循环/水生态智能模拟实战;SWAT模型下载 安装 运行 建模流程
⚠️您是否面临: 传统水文模型效率低下? 多源空间数据处理耗时? 复杂生态过程难以量化? 💡当SWAT模型遇见"ArcGIS ProAI": → 传统需要1个月的参数率定缩短至3天 → 多情景分析报告自动生成&a…...
《AI大模型应知应会100篇》第23篇:角色扮演技巧:让AI成为你需要的专家
第23篇:角色扮演技巧:让AI成为你需要的专家 摘要 在当今人工智能快速发展的时代,大模型已经不仅仅是简单的问答工具,它们可以通过角色扮演技巧模拟各类专家身份,从而为用户提供更专业、更有针对性的服务。本文将深入探…...
【17】数据结构之图的遍历篇章
目录标题 图的遍历深度优先遍历 Depth First Search广度优先遍历 Breadth First Search 图的遍历 从图中某一个顶点出发,沿着一些边访遍图中所有的顶点,且使用每个顶点仅被访问一次,这个过程称为图的遍历.Graph Traversal. 其中,…...
【gpt生成-其一】以go语言为例,详细描述一下 :语法规范BNF/EBNF形式化描述
在 Go 语言中通过 EBNF 形式化描述语法规范需要结合语言规范文档的结构,以下是详细实现方法及标准规范示例: 一、Go 语法规范结构(基于 Go 1.21 标准) ebnf 复制 // 基础元素定义 letter "A" ... "Z&quo…...
深度剖析:GPT-3.5与GPT-4的主要区别及架构解析
随着自然语言处理技术的飞速发展,OpenAI推出的各类语言模型备受瞩目。尤其是GPT-3.5和GPT-4这两个版本之间的差异,成为了技术爱好者、研究人员和企业关注的焦点。在这篇文章中,我们将探讨这两个版本的主要区别以及它们的架构特点,…...
协同推荐算法实现的智能商品推荐系统 - [基于springboot +vue]
🛍️ 智能商品推荐系统 - 基于springboot vue 🚀 项目亮点 欢迎来到未来的购物体验!我们的智能商品推荐系统就像您的私人购物顾问,它能读懂您的心思,了解您的喜好,为您精心挑选最适合的商品。想象一下&am…...
【运维学习】lvs + keepalived + 主从dns 项目搭建
需求 主机规划 环境搭建 配置主从dns 主dns 从dns 配置web服务 搭建lvs keepalived 配置master 配置backup 更改dns配置 添加VIP 配置内核参数 更改web配置 添加VIP 配置内核参数 客户端测试 需求 主机规划 主机名IP角色lvs-master192.168.239.105主lvs&#x…...
ESP32-idf学习(二)esp32C3作服务端与电脑蓝牙数据交互
一、当前需求 目前是想利用蓝牙来传输命令,或者一些数据,包括电脑、手机与板子的数据传输,板子与板子之间的数据传输。构思是一个板子是数据接收终端,在电脑或手机下发指令后,再给其他板子相应指令,也需要…...
考道路运输安全员证应具备哪些经验?
考道路运输安全员证,通常没有明确的工作经验年限要求,但具备以下相关经验会对考试有很大帮助: 驾驶经验:报考要求取得相应的机动车驾驶证 1 年以上。有实际驾驶经验,能更好地理解驾驶员的操作规范、疲劳驾驶等问题&…...
ubtuntu安装docker拉取iwebsec镜像
docker安装: --可以在这之前换源(非必要)没有权限直接加sudo sudo apt-get update sudo apt-get upgrade 安装依赖: sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-re…...
Using the CubeMX code (一)(GPIO,PWM ,Cube AI,手写数字识别 MNIST,Demo)
该例程对使用CubeMX初始化GPIO做了示范,GPIO使用HAL库进行GPIO编程分为以下几个步骤: 一、例程简述 1. 包含必要的头文件和HAL库的相关头文件 CubeMX初始化会自动包含,对手敲HAL感兴趣的同学可以熟悉下生成的代码框架学习哦~ 2. 初始化GP…...
【第46节】windows程序的其他反调试手段中篇
目录 引言 一、利用SetUnhandledExceptionFilter/Debugger Interrupts 二、Trap Flag 单步标志异常 三、利用SeDebugPrivilege 进程权限 四、利用DebugObject:NtQueryObject() 五、OllyDbg:Guard 六、Software Breakpoint Detection 引言 在程序反调试领域,存…...
【APM】How to enable Trace to Logs on Grafana?
系列文章目录 【APM】Observability Solution 【APM】Build an environment for Traces, Metrics and Logs of App by OpenTelemetry 【APM】NET Traces, Metrics and Logs to OLTP 【APM】How to enable Trace to Logs on Grafana? 前言 本文将介绍如何在Grafana上启用 …...
第十节:性能优化-如何排查组件不必要的重复渲染?
工具:React DevTools Profiler 方法:memo、shouldComponentUpdate深度对比 React 组件性能优化:排查与解决重复渲染问题指南 一、定位性能问题:React DevTools 高级用法 使用 React Developer Tools Profiler 精准定位问题组件&…...
Spring Boot 项目中发布流式接口支持实时数据向客户端推送
1、pom依赖添加 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>2、事例代码 package com.pojo.prj.controller;import com.pojo.common.core.utils.String…...
SpringBoot整合Thymeleaf变量渲染全解析:从基础到高阶实践
Thymeleaf作为SpringBoot官方推荐的模板引擎,其核心价值在于将动态数据无缝注入静态HTML模板。本文将从基础语法到复杂场景,深入剖析Thymeleaf对各种类型变量的渲染机制。 一、环境搭建与基础配置 依赖注入 在pom.xml中引入核心依赖:<dependency><groupId>org.s…...
【verilog】Verilog 工程规范编码模板
这一套【Verilog 工程规范编码模板】,适合写清晰、可维护、可综合的 RTL 代码,适用于 FPGA/ASIC 开发: 📘 Verilog 工程级编码规范模板 1️⃣ 模块结构规范 module my_module #(parameter WIDTH 8 // 模块参数 )(input wire c…...
satoken的奇奇怪怪的错误
发了 /user/getBrowseDetail和/user/getResponDetail,但为什么进入handle里面有三次?且第一次的handle类型是AbstractHandleMapping$PreFlightHttpRequestHandlerxxx,这一次进来的时候flag为false,StpUtils.checkLogin抛出了异常 第二次进来的…...
使用prometheus-operator部署prometheus服务,并对外提供访问
先决条件: 已经部署好k8s #这里我使用的版本是1.28.12 [rootprometheus-operator /zpf/prometheus/kube-prometheus/manifests]$kubectl version Client Version: v1.28.12 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.28.12安装git服务 #安…...
FPGA阵列
FPGA(现场可编程门阵列)阵列是由多个 FPGA 芯片组成的集合,通过特定的架构和互联方式协同工作,以实现强大的计算和处理能力。以下是关于 FPGA 阵列的详细介绍: 基本原理 FPGA 是一种可重构的集成电路,内部…...
Oracle补丁安装工具opatch更新报错处理
今日,在进行Oracle补丁升级更新opatch工具包后,执行opatch命令出现了如下报错: [oracles203116 ~]$ opatch version /u01/product/oracle/12.1.0/db_1/OPatch/opatch: line 839: [: too many arguments /u01/product/oracle/12.1.0/db_1/O…...
前端笔记-html+css测试2
HTML & CSS 能力测试卷 选择题(每题2分,共20分) 下列哪个HTML5标签用于定义文档的导航链接? A) <nav> B) <navigate> C) <navbar> D) <navigation> CSS中哪个属性用于设置元素的透明度?…...
Visual Studio C++ 常用配置变量表
前言 visual studio中常用配置变量表 帮助你快速查阅,复制粘贴嘎嘎方便! 附上美图!! 一、解决方案 & 项目路径 变量含义示例(典型用法)$(SolutionDir)解决方案文件所在目录(末尾带\)$(S…...