图像超分辨率重建相关概念、评价指标、数据集、模型
1、图像超分辨率概念
1.1 基本定义
超分辨率(Super-Resolution),简称超分(SR)。是指利用光学及其相关光学知识,根据已知图像信息恢复图像细节和其他数据信息的过程,简单来说就是增大图像的分辨率,使图像更加“清晰”,尽可能保证图像质量不下降。
超分辨率的方法包括传统方法和深度学习的方法,有关超分辨率方法分类如下图所示。深度学习方法在性能上远远领先于传统方法,有着更好的图像超分辨率表现。
上述内容参考:知乎用户 阿布的足迹 https://zhuanlan.zhihu.com/p/558813267
从单一低分辨率图像中恢复高分辨率图像。这个问题本质上是不确定的,因为对于任何给定的低分辨率像素都存在多重解。换句话说,它是做一个信息恢复,属于一个欠确定的逆问题,其解决方案不是唯一的。这类问题通常通过使用强先验信息来约束解空间来缓解。如上图所示的传统方法,则是利用强先验信息进行问题求解(空间相邻的像素,值是相近的
)。深度学习方法,也就是学习映射函数基于外部实例的方法可以用于通用的图像超分辨率,也可以根据所提供的训练样本,设计成适合特定领域的任务。
1.2 应用场景
图像超分辨率重建技术在多个领域都有着广泛的应用范围和研究意义。主要包括:
(1) 图像压缩领域
在视频会议等实时性要求较高的场合,可以在传输前预先对图片进行压缩,等待传输完毕,再由接收端解码后通过超分辨率重建技术复原出原始图像序列,极大减少存储所需的空间及传输所需的带宽。
(2) 医学成像领域
对医学图像进行超分辨率重建,可以在不增加高分辨率成像技术成本的基础上,降低对成像环境的要求,通过复原出的清晰医学影像,实现对病变细胞的精准探测,有助于医生对患者病情做出更好的诊断。
(3) 遥感成像领域
高分辨率遥感卫星的研制具有耗时长、价格高、流程复杂等特点,由此研究者将图像超分辨率重建技术引入了该领域,试图解决高分辨率的遥感成像难以获取这一挑战,使得能够在不改变探测系统本身的前提下提高观测图像的分辨率。
(4) 公共安防领域
公共场合的监控设备采集到的视频往往受到天气、距离等因素的影响,存在图像模糊、分辨率低等问题。通过对采集到的视频进行超分辨率重建,可以为办案人员恢复出车牌号码、清晰人脸等重要信息,为案件侦破提供必要线索。
(5) 视频感知领域
通过图像超分辨率重建技术,可以起到增强视频画质、改善视频的质量,提升用户的视觉体验的作用。
上述内容参考:csdn用户 钱彬 (Qian Bin) https://blog.csdn.net/qianbin3200896/article/details/104181552
2、相关指标
图像超分的相关评价指标可以分为有参考的评价指标和无参考都评价指标。有参考的评价有:PSNR、SSIM、LQNE等,这里仅结束torch支持的指标(基于np数组计算的指标耗时过长,一张图1s简直是煎熬),需要安装torchmetrics。
pip install torchmetrics
torchmetrics官网:
https://lightning.ai/docs/torchmetrics/stable/pages/quickstart.html
2.1 PSNR
PSNR是信号的最大功率和信号噪声功率之比,来测量已经被压缩的重构图像的质量,通常以分贝(dB)来表示。PSNR指标越高,说明图像质量越好。 在通常的RGB图像中,PSNR的最大值(MSE最小,为0时)为20*lg(255)≈48左右。
(1)高于40dB:说明图像质量极好(即非常接近原始图像)
(2)30—40dB:通常表示图像质量是好的(即失真可以察觉但可以接受)
(3)20—30dB:说明图像质量差
(4)低于20dB:图像质量不可接受
在应用到特定行业时,计算PSNR采用的MAX值可能不是255,也可能不是max值,而是统计意义上的最大值(避免异常最大值的干扰),否则会存在肉眼效果差,而PSNR效果好的情况
pytorch 计算PSNR代码 https://lightning.ai/docs/torchmetrics/stable/image/peak_signal_noise_ratio.html
接口说明:torchmetrics.image.PeakSignalNoiseRatio(data_range=None, base=10.0, reduction=‘elementwise_mean’, dim=None, **kwargs)
from torchmetrics.image import PeakSignalNoiseRatio
psnr = PeakSignalNoiseRatio()
preds = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
target = torch.tensor([[3.0, 2.0], [1.0, 0.0]])
psnr(preds, target)
#tensor(2.5527)
2.2 SSIM
结构相似性的基本思路是,通过(亮度、对比度、结构)三个方面来对两幅图像的相似性进行评估,基本流程为:
(1)对于输入的x和y,首先计算出(亮度测量)luminance measurement,进行比对,得到第一个相似性有关的评价;
(2)再减去luminance的影响,计算(对比度测量)contrast measurement,比对,得到第二个评价;
(3)再用上一步的结果除掉对比度的影响,再进行structure的比对。最后将结果combine,得到最终的评价结果。
其计算过程比较复杂,不进行摘抄,各位可以阅读原文链接:https://blog.csdn.net/qq_27825451/article/details/104016874
SSIM的取值范围为[-1,1],约接近1表示效果越好,大部分sota模型都是在0.8~0.9左右【具体与数据集相关】
结构相似度指数从图像组成的角度将结构信息定义为独立于亮度、对比度的反映场景中物体结构的属性,并将失真建模为亮度、对比度和结构三个不同因素的组合。用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。
pytorch 计算MULTI-SCALE SSIM代码 (基于多尺度计算ssim)
torchmetrics.image.MultiScaleStructuralSimilarityIndexMeasure(gaussian_kernel=True, kernel_size=11, sigma=1.5, reduction=‘elementwise_mean’, data_range=None, k1=0.01, k2=0.03, betas=(0.0448, 0.2856, 0.3001, 0.2363, 0.1333), normalize=‘relu’, **kwargs)
from torchmetrics.image import MultiScaleStructuralSimilarityIndexMeasure
import torch
gen = torch.manual_seed(42)
preds = torch.rand([3, 3, 256, 256], generator=torch.manual_seed(42))
target = preds * 0.75
ms_ssim = MultiScaleStructuralSimilarityIndexMeasure(data_range=1.0)
ms_ssim(preds, target)
2.3 LPIPS
LPIPS 度量指标是建立在一个 484K 的人类判别的感知数据集(Berkeley-Adobe Perceptual Patch Similarity(BAPPS) Dataset,在构建 BAPPS 数据集时,对参考图进行失真操作,然后人类根据参考图和失真图进行评分)基础上构建 CNN 网络(相关模型有:VGG,AlexNet,SqueezeNet )来构建度量学习。这主要指出,PSNR与SSIM指标效果与人类肉眼效果存在差异
SSIM的取值范围为[0,1],约接近0表示效果越好,先行sota模型指标通常在0.2左左右
LPIPS的取值范围为[0,1],约接近0表示效果越好,大部分sota模型都是在0.2~0.26左右
pytorch 计算LPIPS 代码 (基于多尺度计算ssim)
torchmetrics.image.lpip.LearnedPerceptualImagePatchSimilarity(net_type=‘alex’, reduction=‘mean’, normalize=False, **kwargs)
import torch
_ = torch.manual_seed(123)
from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity
lpips = LearnedPerceptualImagePatchSimilarity(net_type='squeeze')
# LPIPS needs the images to be in the [-1, 1] range.
img1 = (torch.rand(10, 3, 100, 100) * 2) - 1
img2 = (torch.rand(10, 3, 100, 100) * 2) - 1
lpips(img1, img2)
3、相关的数据集
3.1 常用训练集
ImageNet (选部分数据使用)
OutdoorSceneTraining 数据集,包含建筑、动物、水体、天空、山体等常见户外目标,基于该数据训练的模型在盲超分中效果会更佳。分辨率不是2k,但图像细节与2k图像相同。
3.2 常用测试集
SRCNN 论文数据,进行2-3-4倍上采样,个人决定泛化参考价值不大
Set5 (5 images), Set14 (14 images),BSD200 (200 images)
4、典型的图像超分模型
这里统计了SRCNN 、ESPCN、SRGAN、ESRGAN、EBRN、PISR、real-ESRGAN模型的结构信息与精度信息。
4.1 2015 SRCNN
最早的图像超分重建算法,为SRCNN ,论文地址:http://xxx.itp.ac.cn/pdf/1501.00092 发表于 2015 年 7 月 31 日
是一个普通的基于cnn的图像超分网络,其网络结构如下所示,特点在于先将原图resize到目标尺寸后在利用cnn模型进行降噪。
该论文,选用ILSVRC 2013 ImageNet中随机的395,909个图像所训练集,set5,set14,bsd2做测试集。精度信息如下所示,在BSD200中精度最低,可见测试数据约丰富,才越能真正反映模型性能。
4.2 2016 CVPR ESPCN
论文地址:http://xxx.itp.ac.cn//pdf/1609.05158 发表时间 2016 年 9 月 23 日 CVPR
主要特点如下图所示,实现了所谓的亚像素卷积(图中的最后一个步骤),将wh的空间压力,转化为filer上的压力,而wh在空间上的显存压力时针对整个特征流的,但filer的显存压力却仅是针对于最后几层的filter。 基于亚像素卷积的思路,作者首次在1080p视频上实现了实时处理能力。重点在于速度提升,减少了中间特征图的空间分辨率,代价仅是在最后异常将filter翻了4倍
该论文,选用ImageNet中随机的50000个图像所训练集,set5,set14,bsd300,bsd500做测试集。精度信息如下所示,在这里可以看到ESPCN在多个数据集上不如上一节SRCNN中的结果,而本文中的SRCNN则远差于原文效果,或许是因为训练数据的天量差异。SRCNN用了仅40w训练图片
在同样的训练情况下,ESPCN也只是比SRCNN好一点点,基本上是肉眼不可察的优势
4.3 2017 CVPR SRGAN
论文地址: https://openaccess.thecvf.com/content_cvpr_2017/papers/Ledig_Photo-Realistic_Single_Image_CVPR_2017_paper.pdf 发表时间 2017 年 CVPR
将GAN引入了超分领域,SRGAN 的一大创新点就是提出了内容损失,SRGAN 希望整个网络在学习的过程中更加关注重建图像和原始图像的语义特征差异,而非逐个像素之间的颜色和亮度差异。SRGAN 采用改进的 VGG 网络作为特征映射,并设计了与判别器匹配的新的感知损失,克服了重构图像感 知质量低的缺点,使生成的图像更加真实。但该方法缺点在于网络结构复杂,需要训练两个网络,训练过程较长。
1、通过为MSE优化的16块深ResNet(SRResNet),通过PSNR和结构相似度(SSIM)测量具有高(4×)的标比例因子的图像SR设置了新的技术。
2、提出一个基于gan的网络优化的一个新的感知损失,用在VGG网络[48]的特征映射上计算的损失来替换基于MSE的内容损失,该损失对像素空间的变化更为不变
loss结果如下图所示,content loss为预训练的鉴别器vgg网络中的19层的输出值的MSE loss( I s r I^{sr} Isr, I h r I^{hr} Ihr)+ MAE loss ,adversarial loss则为vgg19的分类交叉熵
该论文,选用ImageNet中随机的35万个图像所训练集,.对于每个batch,随机裁剪96×96 HR子图像。set5,set14,bsd100,bsd300做测试集。精度信息如下所示,论证了GAN方式在HR任务中的效果,通过MOS指标证明,同时说明PSNR与SSIM结果的不合理。
具体见下图,可以见SRGAN的肉眼效果更好。
与同类方法的对比效果如下所示,可以看出SRResNet在PSNR与SSIM效果好,SRGAN在MOS指标效果好。 本文主要告诉我们,只在PSNR与SSIM论证HR效果的新方法,均可以忽略
4.4 2018 ECCV ESRGAN
论文地址: https://arxiv.org/pdf/1809.00219v2 发表时间 2018 年 ECCV
项目地址: https://github.com/xinntao/ESRGAN
它是基于SRGAN改进而来到,相比于SRGAN它在三个方面进行了改进:
1、改进了网络结构(可以看到有一个大的跳跃连接),对抗损失,感知损失
2、引入了没有批量归一化的残差密集块(RRDB)作为基本的网络构建单元
3、利用激活前的特征来改善感知损失,为亮度一致性和纹理恢复提供更强的监督
同时对于残差单元的调整,移除BN结构,修改res-block为dense-block
鉴别器loss 与原始GAN不一样,非对称loss,让真数据 减 假数据(batch平均值)的结果趋向于1,让让假数据 减 真数据(batch平均值)的结果趋向于0,也就是说使模型分不出假数据与真数据均值,同时使真数据与假数据均值保持一致。
生成器loss 其中感知损失基于vgg中间特征值计算、第二个损失应该使回归损失,第三个损失是MAE损失
在训练过程种,作者为了保持能力,先基于PSNR指标训练出一个良好的生成器,然后再用GAN的方式进行优化,最终再融合原始生成器与 gan优化后的生成器
训练数据:DIV2K+ OutdoorSceneTraining
测试数据:– Set5 [42], Set14 [43], BSD100 [44], Urban100 [45], Manga109
本文结果与SRGAN对比,在SSIM上(Set5、Set14、BSD100)不占据优势,故此没有列出来。这里有训练数据的差异问题,也有可能是因为Set5 [42], Set14 [43], BSD100 三个数据集不是2k数据,与训练数据存在偏差。
虽然ESRGAN在PSNR上优势不明显,但是在肉眼效果(毛发细节)上还是有很大改善。但论文只使用PSNR与SSIM指标,或是是有意挑选的数据(尽管如此,ESRGAN给出了丰富的图表数据,肉眼效果应该是普遍良好,只是没找到合适的评价指标
)。
4.5 2019 ICCV EBRN
EBRN是ICCV2019会议上关于单幅图像超分辨率(SISR)的论文,文章认为图像中的低频和高频信息具有不同的复杂性,应该通过不同表征能力的模型进行恢复。受此启发,我们提出了一种新的嵌入式块残差网络(EBRN),它是纹理超分辨率的增量恢复过程。具体来说,模型中的不同模块可以恢复不同频率的信息。对于低频信息,我们使用网络中较浅的模块进行恢复;对于高频信息,我们使用更深的模块进行恢复。
1、不同频率的信息应该由不同复杂性的模型恢复。在不好的情况下,较低频率的信息可以被较深的模型恢复,而较高频率的信息可以被较浅的模型恢复。
2、提出了一个块残差模块(BRM),它试图恢复图像的结构和纹理,同时传递到更深的模块的难以恢复的信息。这使得每个BRM能够专注于适当频率的信息,这对于确保模型复杂度和图像频率的相关性很重要
3、提出了一种新的嵌入多个brm的技术,可以有效地提高基于每个模块输出的最终重构质量。我们还通过经验证明,所提出的模型优于最先进的水平。
模型中关于残差结构、上采样、下采样单元快的设计如下图所示
loss 部分,仅使用L2损失进行训练。 或许可以参考ESRGAN的思路进行gan的训练,可以增强模型对细节的修复能力
训练数据: DIV2K
测试数据如下图所示,与ESRGAN处于相同的效果,但训练数据比ESRGAN少多了。
同时,本文结果没有像ESRGAN一样关注毛发细节。其设计理论适用于不同的退化模型,可能在毛发上修复效果不佳,毕竟DIV2K数据集动物成分不多。
4.6 2020 PISR
论文地址:https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123690460.pdf
项目地址:https://cvlab.yonsei.ac.kr/projects/PISR.
现在的HR模型通常需要大量的内存和计算单元。FSRCNN,由少量的卷积层组成,在使用了极少的网络参数的同时,也显示出了良好的结果。在本文中,我们实现一种新的蒸馏框架,由教师和学生网络组成,它可以大大提高FSRCNN的性能。为此,我们建议使用地面真实的高分辨率(HR)图像作为特权信息。教师中的编码器学习退化过程,HR图像的子采样,使用模仿损失。学生和教师中的解码器具有与FSRCNN相同的网络结构,试图重建HR图像。解码器中的中间特征,学生负担得起学习,通过特征蒸馏转移给学生。
其知识蒸馏如下所示,先训练好教师网络(编码器下采样+解码器上采样),然后使用的学生网络只有解码器,知识蒸馏时使用GT作为输入,然后对解码器上采样进行训练,使模型能在低分辨率输入时,输出高分辨结构。
Teacher的训练loss包含两部分,全流程的HR重构MAE loss与中间SR变量的MAE loss
student的训练loss包含重构MAE 损失与蒸馏损失(回归损失)。蒸馏效果如下所示,可以看到与教师模型相比损失很小。
训练数据:DIV2K对应的800对LR和HR图像的训练分割。HR图像中随机裁剪大小为192×192的HR补丁。根据比例因子从相应的LR图像中裁剪出LR补丁。
测试数据:Set5 [42], Set14 [43], BSD100 [44], Urban100 [45]
通过与同级别模型的对比,可以发现PISR方法的精度虽然不高,但是速度快了100倍数以上。
4.7 2021 Real-ESRGAN
论文地址:http://arxiv.org/abs/1609.04802
项目地址:https://github.com/xinntao/Real-ESRGAN
Real-ESRGAN将强大的ESRGAN扩展到一个实际的恢复应用程序,它是用纯合成数据进行训练的。具体地说,引入了一种高阶退化建模过程来更好地模拟复杂的真实世界的退化。还考虑了合成过程中常见的振铃和超调伪影。此外,采用了具有谱归一化的U-Net鉴别器来提高鉴别器能力,稳定训练动力学。广泛的比较表明,它的视觉性能比以前的各种真实数据集的工作。
Real-ESRGAN主要是设计了一种图像退化模型,具体数据处理流程如下所示
同时,与ESRGAN相比,为了适应多分辨率的任务,仅对输入采用Pixel-Unshuffle技术进行调整,使模型适用于多种超分任务
鉴别器调整:带有 spectral normalization功能的U型网络鉴别器(SN)。由于Real-ESRGAN的目标是解决比ESRGAN更大的退化空间,因此ESRGAN中的鉴别器的原始设计已不再合适。具体来说,Real-ESRGAN中的鉴别器对复杂的训练输出需要更大的鉴别能力。它还需要为局部纹理产生精确的梯度反馈,而不是区分全局样式。还将ESRGAN中的VGG型鉴别器改进为具有跳过连接的U-Net设计(图6)。UNet输出每个像素的真实度值,并可以向生成器提供详细的每像素反馈。
训练数据:DIV2K+ OutdoorSceneTraining patch_size 256
测试数据:Set5 [42], Set14 [43], BSD100 [44], Urban100 [45], Manga109
指标信息如下所示,可以看到比ESRGAN使要强很多的。这里的 Real-ESRGAN+是指对ground-truths进行sharpened 操作,使边缘更加明显。
实现效果如下所示
4.8 2022 CVPR NTIRE冠军 BSNR
现在的HR模型在卷积操作中仍然存在冗余性。在本文中,我们提出了包含两种有效设计的蓝图可分离剩余网络(BSRN)。一是使用蓝图可分离卷积(BSConv),它取代了冗余卷积操作。另一种方法是通过引入更有效的注意模块来增强模型的能力。实验结果表明,BSRN在现有的有效SR方法中取得了最先进的性能。此外,我们的模型BSRN-S的一个较小的变体在NTIRE 2022高效SR挑战模型复杂性轨道的第一名。
1、引入了BSConv来构造基本的构建块,并证明了它对SR的有效性。
2、利用两个额外计算量有限的有效注意模块来提高模型的能力。
3、提出的BSRN集成了BSConv和有效注意模块,在有效SR方面表现出了优越的性能。
ESDB模型的结构信息如下图所示,是根据RFDB模块修改而来,使用深度可分卷积进行替换,并添加ESA模块。 ESA,节省计算量的空间注意力机制、CCA节省计算量的通道注意力机制。
训练数据:Flickr2K [36] and 800 images from DIV2K
测试数据: Set5 [3], Set14 [55], B100 [41], Urban100 [20], Manga109
本文方法与PISR方法对比,在PSNR上差不多高2个点,同时在Madd上相比于PISR仅高一倍。
相关文章:

图像超分辨率重建相关概念、评价指标、数据集、模型
1、图像超分辨率概念 1.1 基本定义 超分辨率(Super-Resolution),简称超分(SR)。是指利用光学及其相关光学知识,根据已知图像信息恢复图像细节和其他数据信息的过程,简单来说就是增大图像的分辨…...

中移物联OneMO Cat.1模组推动联网POS规模应用
在第三方支付蓬勃发展和消费模式不断革新的时代背景下,新型联网POS终端以其智能化、便捷化的特点丰富人们生活便利度。在这一变革浪潮中,中移物联OneMO Cat.1模组ML307R凭借其卓越的性能和成本效益,成为推动联网POS规模应用的重要力量。 性能…...
二.常见算法--贪心算法
(1)单源点最短路径问题 问题描述: 给定一个图,任取其中一个节点为固定的起点,求从起点到任意节点的最短路径距离。 例如: 思路与关键点: 以下代码中涉及到宏INT_MAX,存在于<limits.h>中…...

LabVIEW高温往复摩擦测试系统中PID控制
在LabVIEW开发高温往复摩擦测试系统中实现PID控制,需要注意以下几个方面: 1. 系统建模与参数确定 物理模型建立: 首先,需要了解被控对象的物理特性,包括热惯性、摩擦系数等。这些特性决定了系统的响应速度和稳定性。实验数据获取…...

配置yum源
以下是在 Linux 系统中配置新的 yum 源的一般步骤和命令示例(以 CentOS 系统为例): 备份原有 yum 源配置文件:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 创建新的 yum 源配置文件(…...

深入理解数仓开发(二)数据技术篇之数据同步
1、数据同步 数据同步我们之前在数仓当中使用了多种工具,比如使用 Flume 将日志文件从服务器采集到 Kafka,再通过 Flume 将 Kafka 中的数据采集到 HDFS。使用 MaxWell 实时监听 MySQL 的 binlog 日志,并将采集到的变更日志(json 格…...

C++语言学习(六)—— 类与对象(二)
目录 一、对象数组 二、对象指针 三、this 指针 四、类类型作为参数类型的三种形式 4.1 对象本身作为参数 4.2 对象指针作为参数 4.3 对象引用作为参数 五、静态成员 5.1 静态数据成员 5.2 静态成员函数 六、友元机制 6.1 友元函数 6.2 友元类 七、类的组合 八、…...

3d选择模型后不能旋转什么原因?怎么解决?---模大狮模型网
在3D建模和渲染的过程中,旋转模型是常见的操作。然而,有时在选择了模型后,却发现无法进行旋转,这可能会让许多用户感到困扰。本文将探讨3D选择模型后不能旋转的可能原因,并提供相应的解决方法。 一、3D选择模型后不能旋…...

从入门到精通:详解Linux环境基础开发工具的使用
前言 在这篇文章中,我将深入学习和理解Linux环境基础开发工具的使用。无论你是初学者还是有一定经验的开发者,相信这篇文章都会对你有所帮助。我们将详细讲解软件包管理器、编辑器、编译器、调试器、自动化构建工具以及版本控制工具的使用。 Linux软件…...

linux(centos 7)安装 node
linux(centos 7)安装 node 下载对应版本&安装解压配置环境变量使配置文件生效验证是否安装成功附加 目前node最新版本是 node-v22.0.0 官网下载地址:https://registry.npmmirror.com/binary.html?pathnode/latest-v22.x/node-v22.0.0-li…...

C++之第九课
课程列表 今天,我们要学习一种结构:循环结构。 循环的方法有3种。 今天先将第1种for学了: int a;//循环变量 int b; for(a1;a<10;a){//像if那样“打包”cout<<a<<" ";b; } 当然,也可以这样写&#…...

618精选编程书单推荐:优质知识提升你的代码力
前言 在这个快速发展的技术时代,不断学习和提升自己的编程技能是每位程序员的必修课。今天,我为大家精心挑选了一系列编程技术书籍,它们将是你技术成长道路上的宝贵财富。 文章目录 前言编程之路:为何阅读书籍是不可或缺的书籍的…...

使用httpx异步获取高校招生信息:一步到位的代理配置教程
概述 随着2024年中国高考的临近,考生和家长对高校招生信息的需求日益增加。了解各高校的专业、课程设置和录取标准对于高考志愿填报至关重要。通过爬虫技术,可以高效地从各高校官网获取这些关键信息。然而,面对大量的请求和反爬机制的挑战&a…...

使用Java Stream API的map方法将包含Long类型ID的流转换为String数组
在这个例子中,idList是一个包含Long类型ID的列表。我们使用stream()方法创建一个流,然后应用map(String::valueOf)方法将Long类型的ID转换为String类型。最后,我们使用toArray(String[]::new)方法将流中的元素收集到一个新的String[]数组中。…...

centos 安装nginx 并配置https ssl
进入你要安装的目录 一般是/usr/local/ wget https://nginx.org/download/nginx-1.24.0.tar.gz解压安装包:使用以下命令解压下载的Nginx安装包: tar -zxvf nginx-1.24.0.tar.gz在编译和安装Nginx之前,确保您的系统上已安装了必要的编译工具和…...

Jenkins 自动化部署
Post Steps部分 Exec cmmand cd /data/build/test-admin/ rm -f app.jar rm -f Dockerfile cp target/app.jar ./ cp docker/Dockerfile ./docker build -t test-admin . docker tag test-admin 192.168.1.100/test/test-admin:1.2-SNAPSHOT docker push 192.168.1.100/test/…...

VUE3好看的酒网站模板源码
文章目录 1.设计来源1.1 首页界面1.2 十大名酒界面1.3 名酒新闻界面1.4 联系我们界面1.5 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 3.VUE框架系列源码4.源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/detai…...

索引压缩技术详解
在现代搜索引擎和信息检索系统中,索引压缩技术是提高存储效率和检索速度的关键手段。本文将深入探讨几种常见的索引压缩技术,包括词典压缩、倒排列表压缩算法、文档编号重排序以及静态索引裁剪。 词典压缩 1.1 基础概念 词典(Dictionary&am…...

完全匹配企业需求的替代FTP升级软件怎么找
企业在处理数据传输时,效率和安全性是关键。尽管传统的FTP曾被广泛采用,但因其传输慢、安全性不足和难以管理等问题,已不再满足现代企业的需求。许多企业正在寻找能够满足其需求的FTP替代方案,但市场上选择众多,找到合…...

动态规划:分割等和子集
参考资料:代码随想录 题目链接:. - 力扣(LeetCode) 这道题是01背包问题的抽象,这道题的难点在于怎么绕明白遍历顺序是从后往前。 题目中给的nums数组,以nums[1,5,11,5]为例,可以分析为有4个物…...

踩坑——纪实
开发踩坑纪实 1 npm安装1.1 查看当前的npm镜像设置1.2 清空缓存1.3 修改镜像1.4 查看修改结果1.5 重新安装vue 2 VScode——NPM脚本窗口找不到3 springboot项目中updateById()失效4 前端跨域4.1 后端加个配置类4.2 CrossOrigin注解 5 路由出口6 springdoc openapi3 swagger3文件…...

java实现websocket的五种方式(mark下)
java实现websocket的五种方式 java 实现 websocket的五种方式_java_萧曵 丶-GitCode 开源社区...

网络安全技术心得体会
网络与信息安全技术心得体会 通过对网络安全这门课程的学习,我进一步了解了网络安全技术的相关知识。大致来说,所谓网络安全指的是对网络系统中各类软硬件和数据信息等提供保护屏障,确保数据信息不受到恶意侵入、窃取等破坏,保证…...

光耦合器的特性和应用概述
光耦合器又称光电耦合器,是现代电子学中必不可少的元件,确保隔离电路之间安全有效的信号传输。本文探讨了光耦合器的特性及其多样化应用,强调了它们在各种电子系统中的关键作用。 什么是光耦合器? 光耦合器是一种设计用于利用光传…...

工作干到抑郁了,要不要辞职?
在知乎上看到以为网友提问:工作干到抑郁,该不该辞职? 今天和大家聊聊这个话题,如果你也有类似的情况,希望这篇文章能帮到你。 熟悉瑶琴的朋友,都知道瑶琴在去年有一次裸辞的经历。离职前,严重的…...

Vs Code插件位置:
Vs Code插件位置: C:\Users\dell.vscode\extensions...

521源码-免费源码-子比主题最新版7.6绕授权破解完整教程
首先,zibll主题授权是向api.zibll.com发送请求,api.zibll.com就验证这个请求,如果参数(比如header)正确那么授权成功,然而众所周知,服务器可以修改本地host文件,来实现某些特定功能,把host文件加…...

前端基础入门三大核心之HTML篇:Webpack、Vite、Grunt、Gulp的场景与实战运用
前端基础入门三大核心之HTML篇:Webpack、Vite、Grunt、Gulp的场景与实战运用 一、Webpack:模块打包与优化的集大成者基本概念与作用应用场景实战例 二、Vite:快速开发的现代化构建利器基本概念应用场景实战例 三、Gulp:任务自动化…...

java面试框架篇(Spring常见问题、SpringBoot、SpringMVC、mybatis经典问题、SpringCloud组件)
文章目录 面试专题-java框架篇1. spring常见问题1.1. spring是什么?1.2. 谈谈你对AOP的理解1.3. 谈谈你对IOC的理解1.4. Spring Boot、 Spring MVC和Spring有什么区别1.5. spring bean 生命周期1.6. spring事务传播机制有哪些?1.7. 循环依赖1.8. spring框架中使用了哪些设计模…...

HarmonyOS之ArkUI布局设计常见细节
这里写目录标题 1. Button设置带有渐变色的背景图片无效1.1 问题分析1.2 成功案例 2. 路由跳转失败2.1 问题分析 1. Button设置带有渐变色的背景图片无效 1.1 问题分析 说明:设置颜色渐变需先设置backgroundColor为透明色。 Button($r(app.string.login), { type…...