LLM | 论文精读 | CVPR | Alpha-CLIP —— 一个聚焦目标区域的CLIP模型
论文标题:Alpha-CLIP: A CLIP Model Focusing on Wherever You Want
作者:Zeyi Sun, Ye Fang, Tong Wu, Pan Zhang, Yuhang Zang等
期刊:CVPR 2024
DOI:http://arxiv.org/pdf/2312.03818v2
email:yuhan.huang@whu.edu.cn
创作不易,恳请大家点赞收藏支持:)
引言
近年来,基于对比学习的语言-图像预训练模型(Contrastive Language-Image Pre-training,CLIP)在提取图像和文本的语义特征方面取得了重大进展。这些模型能够很好地捕捉图像中的所有语义细节,具备强大的特征表示能力和良好的泛化性能,被广泛应用于开放世界识别、多模态大语言模型(MLLMs)、2D和3D图像生成等下游任务中。然而,传统的CLIP模型主要关注图像整体内容,难以在图像中指定关注的目标区域,这限制了它在需要细粒度控制和编辑的任务中的应用。
为了填补这一空白,论文提出了一种增强版的CLIP模型,名为Alpha-CLIP,它通过增加一个额外的alpha通道来实现对目标区域的聚焦。这个改进使得Alpha-CLIP可以更加精准地控制对图像内容的关注区域,而不影响对整体图像的理解。这种新的模型设计在多个任务中表现出色,包括开放词汇检测、区域级别的视觉问答(VQA)、2D和3D图像生成等,展现了其强大的适应能力和广泛的应用潜力。
核心创新点
-
增加Alpha通道,实现区域聚焦:
-
Alpha-CLIP在传统CLIP模型的基础上增加了一个alpha通道,用以指定图像中的关注区域。这个通道输入的值范围为0到1,其中1表示前景,0表示背景。这一设计使得模型能够在训练时学习如何聚焦特定区域,从而在处理图像时保留上下文信息而不是简单地裁剪目标区域。
-
-
大规模RGBA区域-文本对的训练:
-
为了训练Alpha-CLIP,研究团队构建了一个数据生成管道,生成了数百万的RGBA区域-文本对。通过结合Segment Anything Model(SAM)和多模态大模型BLIP-2,自动生成精细的伪掩码并进行文本标注。这些数据对的引入,使得Alpha-CLIP不仅能够关注目标区域,还能够保持全图的识别精度。
-
-
广泛的下游任务应用:
-
Alpha-CLIP的应用涵盖了多个下游任务,包括开放词汇检测(OVD)、多模态大语言模型中的视觉问答(VQA)和区域级别的图像描述、2D和3D图像生成等。例如,在开放词汇检测中,Alpha-CLIP通过结合生成的伪标签数据提升了模型对新类的检测能力;在3D对象生成任务中,Alpha-CLIP通过有效引导3D模型关注特定区域,大幅提升了生成结果的质量。
-
方法详述
Alpha-CLIP的训练和应用涉及数据生成、模型结构改进及多种实验验证。
1. 数据生成管道
数据生成的核心在于构建RGBA区域-文本对,这个过程包含以下两个部分:
-
基础数据生成(Grounding Data Pipeline):从GRIT数据集出发,利用SAM自动生成高质量的伪掩码,并通过CLIP对图像的特定区域进行标注,生成对应的文本描述。
-
分类数据生成(Classification Data Pipeline):使用ImageNet数据集,通过SAM生成多个前景掩码,裁剪出前景对象并放置在纯白背景上,再使用BLIP-2为这些前景掩码生成文本描述。这种方式生成的细粒度数据使得模型能够学习更加精细的区域特征。
2. 模型结构改进
Alpha-CLIP基于ViT结构进行了细微的修改。除了RGB通道的卷积层外,增加了一个Alpha卷积层,专门处理alpha通道输入。为了保留CLIP的先验知识,模型的训练过程中,alpha卷积层的权重被初始化为零,这意味着初始状态下模型对alpha通道的输入没有反应。
3. 训练方法
在训练过程中,Alpha-CLIP对原始图像和生成的RGBA数据进行混合训练,确保模型在关注区域的同时也保留对全图的识别能力。训练时,采用了一定比例的原始图像-文本对(alpha通道全部为1),以保留全图识别的能力。同时,模型的其他层使用较低的学习率,以维持CLIP模型的稳定性。
结构图详解
Alpha-CLIP的结构图可以帮助我们更好地理解其内部机制和如何在原始CLIP模型的基础上进行扩展。以下是论文中的几个重要结构图的详细解释:
图1:Alpha-CLIP模型的总体架构
图1展示了Alpha-CLIP的总体架构。该架构由以下几个关键部分组成:
-
输入图像和Alpha通道:输入包括原始的RGB图像以及附加的Alpha通道,Alpha通道用于指示感兴趣的区域。Alpha通道的值范围在0到1之间,其中1表示完全关注(前景),0表示忽略(背景)。
-
卷积层:与原始CLIP模型中的RGB卷积层并行,Alpha-CLIP引入了一个Alpha卷积层。这个额外的卷积层专门用于处理Alpha通道输入,并且初始状态下其权重为零,以保证初期模型不会受到Alpha通道的影响。
-
视觉Transformer编码器(ViT):经过卷积层处理后,RGB和Alpha通道的信息一起被传递给视觉Transformer编码器。这个编码器由多层自注意力机制构成,能够捕捉到图像中不同部分之间的关系。
-
文本编码器:与图像编码部分类似,Alpha-CLIP保留了CLIP的文本编码器,用于对输入文本进行编码,从而得到与图像特征空间对齐的文本特征。
-
对比学习损失:最终,图像特征和文本特征通过对比学习的方式进行训练,以确保相似的图像和文本能够在特征空间中彼此靠近。
图2:数据生成管道
图2展示了Alpha-CLIP的数据生成管道,包含了两种主要的数据生成方式。
-
基础数据生成(上半部分):使用GRIT数据集,并通过SAM模型生成伪掩码。这些掩码用于标注图像中具体的区域,并生成区域-文本对,使得模型能够学习到特定区域的特征。
-
分类数据生成(下半部分):使用ImageNet数据集生成多个前景对象的掩码,并利用BLIP-2生成对应的文本描述。在这个过程中,前景对象被裁剪并置于纯白背景上,这样可以避免上下文信息的干扰,帮助模型更好地学习到前景特征。
图3:Alpha通道的使用
图3展示了Alpha通道在Alpha-CLIP中的使用方式。为了实现区域聚焦,Alpha通道的值用于控制模型对不同区域的注意力强度。图中展示了多种场景下的Alpha通道输入,例如完整图像的Alpha值为1,表示对全图进行关注;而对特定区域的Alpha值设置为1,背景设置为0,则表示模型只需关注特定区域。通过这种方式,Alpha-CLIP能够在不破坏原始图像的前提下,专注于特定的目标。
实验结果与性能对比
论文通过一系列的实验验证了Alpha-CLIP的有效性。
-
开放词汇检测(OVD):
-
在OV-LVIS基准数据集上,Alpha-CLIP表现显著优于使用原始ImageNet数据进行伪标签生成的Detic方法。在只使用460k张图像的情况下,Alpha-CLIP实现了比使用120万张图像的Detic更好的新类检测性能。通过图表对比可以看到,Alpha-CLIP对新类的检测性能有显著提升,尤其是在处理复杂背景和小目标时。
-
-
零样本指代表达理解(Zero-shot REC):
-
Alpha-CLIP在RefCOCO、RefCOCO+和RefCOCOg数据集上表现出色,在大多数基准上均超过了其他零样本方法,如ReCLIP和Red-Circle。通过使用Alpha通道,模型能够更好地保留上下文信息,并在复杂场景中准确定位目标对象。例如,当描述是“桌上的红色电话”时,Alpha-CLIP能够通过Alpha通道有效引导模型关注到正确的物体,而不是被周围其他物体干扰。
-
-
多模态大语言模型(MLLM)中的应用:
-
Alpha-CLIP替代了BLIP-2和LLaVA中的CLIP,在区域级别的视觉问答和图像描述任务中大幅减少了生成错误。例如,在包含多个前景对象的复杂场景中,Alpha-CLIP有效引导模型聚焦用户指定区域,从而生成更准确的描述。图4展示了Alpha-CLIP在这些任务中的效果对比,可以看到,原始CLIP在复杂场景中生成的描述可能包含混淆的对象,而Alpha-CLIP能够准确定位并描述目标。
-
-
2D和3D图像生成:
-
在2D图像生成方面,Alpha-CLIP结合BLIP-Diffusion模型,实现了复杂场景中目标对象的控制生成,避免了遮挡和背景信息丢失的问题。在3D生成中,Alpha-CLIP通过与Point-E和PureCLIPNeRF结合,提升了生成物体的质量,尤其是在需要修复缺失部分或强调特定部分时表现突出。图5展示了在3D生成任务中,Alpha-CLIP和原始CLIP生成结果的对比,明显可以看出Alpha-CLIP生成的物体更加完整且符合用户指定的区域特征。
-
局限性与未来改进方向
尽管Alpha-CLIP在多个任务中展示了优异的性能,但其在一些方面仍存在局限性:
-
多对象聚焦能力不足:
-
当前模型难以同时聚焦于多个对象,并建模不同对象之间的关系。在复杂的场景中,多个对象之间的交互和关系对于理解整个场景至关重要。未来的改进方向之一是增强模型对多个对象的聚焦能力,使其能够处理更复杂的视觉任务,例如在场景中识别并描述多个对象之间的互动。
-
-
Alpha通道的有限表达能力:
-
目前的训练方法限制了Alpha通道在0和1之间的表达能力,这意味着用户无法指定更细腻的关注程度。例如,在某些任务中,可能希望模型对某些区域有较高的关注,而对另一些区域有中等程度的关注,这样的细粒度控制目前尚无法实现。未来可以考虑改进Alpha通道的表示方法,使其支持更广泛的值范围,从而实现更细致的控制。
-
-
图像分辨率问题:
-
Alpha-CLIP与原始CLIP一样,在处理低分辨率的小目标时性能受限。由于模型输入的图像分辨率较低,导致在识别小型目标或者细节丰富的物体时容易出现错误。未来计划扩展CLIP的输入分辨率,以更好地识别图像中的小目标,从而提高模型在细节丰富场景中的表现。
-
结论
Alpha-CLIP通过增加alpha通道,成功赋予了CLIP模型区域感知的能力。经过数百万对RGBA区域-文本数据的训练,Alpha-CLIP在多个任务中展示了显著的优势,不仅保留了CLIP的全局视觉识别能力,还提升了在区域关注任务中的表现。它能够无缝地应用于各种下游任务,如开放词汇检测、区域级别的视觉问答、2D和3D生成等。未来,随着模型进一步的优化和扩展,Alpha-CLIP有望在更多需要前景区域或掩码的场景中发挥作用。
图6展示了未来改进的可能方向,包括增加对多对象场景的处理能力,提升alpha通道的细粒度控制,以及提高输入图像的分辨率。研究团队相信,这些改进将进一步提升Alpha-CLIP的性能,并扩展其在多样化下游任务中的应用场景,使其在更复杂的视觉和多模态任务中表现出色。
相关文章:
LLM | 论文精读 | CVPR | Alpha-CLIP —— 一个聚焦目标区域的CLIP模型
论文标题:Alpha-CLIP: A CLIP Model Focusing on Wherever You Want 作者:Zeyi Sun, Ye Fang, Tong Wu, Pan Zhang, Yuhang Zang等 期刊:CVPR 2024 DOI:http://arxiv.org/pdf/2312.03818v2 email:yuhan.huangwhu.ed…...
windows系统中实现对于appium的依赖搭建
Node.js:Appium是基于Node.js的,因此需要安装Node.js。可以从Node.js官网下载并安装。 Java Development Kit (JDK):用于Android应用的自动化测试,需要安装JDK。可以从Oracle官网下载并安装。 Android SDK:进行Andro…...
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
【网络系统管理】Centos7——配置主从mariadb服务器案例-CSDN博客 接上个文档,我们已经完成了主服务器创建数据库备服务器可以看到 一、在DBMS2查看信息 File,Position这两个字段的数据要记好,等一下需要用到 show master status; 二、在…...
mac nvm安装及使用(nvm安装指定版本node npm pnpm)
mac nvm安装及使用(nvm安装指定版本node npm pnpm) 1.卸载电脑的node 打开终端:依次执行以下命令: sudo rm -rf /usr/local/bin/npmsudo rm -rf /usr/local/share/man/man1/node.1sudo rm -rf /usr/local/lib/dtrace/node.dsudo…...
Elasticsearch面试内容整理-常见问题和解决方案
在使用 Elasticsearch 的过程中,可能会遇到各种常见问题,如集群状态异常、分片未分配、查询性能低下等。这些问题往往影响系统的可用性和性能,因此理解这些问题的成因和解决方案非常重要。以下是 Elasticsearch 常见问题及其解决方案的整理。 集群状态问题 Elasticsearch 集…...
鸿蒙学习高效开发与测试-应用程序框架和HarmonyOS SDK(3)
文章目录 1、应用程序框架1、规范化后台进程管理2、原生支持分布式3、支持多设备的统一窗口管理4、 组件共享及面向对象5、逻辑与界面解耦6、灵活扩展机制2、HarmonyOS SDK1、 开放能力 Kit2、开放能力的检索和使用3、 方舟工具链4、前端编译器架构1、应用程序框架 应 用 程 序…...
LeetCode 3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n))
【LetMeFly】3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n)) 力扣题目链接:https://leetcode.cn/problems/shortest-distance-after-road-addition-queries-ii/ 给你一个整数 n 和一个二维…...
使用GDB或Delve对已经运行起来的Go程序进行远程调试
同步发布在我的博客,欢迎来点赞。 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 背景 Java 程序可以很方便地通过 jdwp 参数指定一个对外端口进行远程调试,如 java \ -agentlib…...
集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
蓝牙模组 - RF-BM-2340B1是基于美国TI的CC2340R5为核心设计的一款SimpleLink 2.4 GHz 无线模块。支持Bluetooth 5.3 Low Energy、Zigbee 、IEEE 802.15.4g、TI 15.4-Stack (2.4 GHz)及私有协议。集成了高性能ARM Cortex-M0处理器,具有512 KB Flash、32 KB超低泄漏SR…...
笔记记录 k8s-install
master节点安装: yum upgrade -y 更新系统 yum update -y 升级内核 ifconfig ens33 关闭swap swapoff -a (临时) vim /etc/fstab (永久) #/dev/mapper/cl-swap swap swap defaults 0 0 vim /etc/sysctl.conf vm.swappin…...
【YOLOv8】安卓端部署-1-项目介绍
【YOLOv8】安卓端部署-1-项目介绍 1 什么是YOLOv81.1 YOLOv8 的主要特性1.2 YOLOv8分割模型1.2.1 YOLACT实例分割算法之计算掩码1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系1.2.1.2 插值时的目标检测中提取的物体特征1.2.1.3 coefficients(系数)作用1.…...
会员等级经验问题
问题描述 会员从一级完成任务升级到二级以后,一级显示还差经验,这里差的其实是二级到三级的经验,如下图所示 修复方法 1、前端需要修改: 路径:/pages/users/user_vip/index.vue 方便复制: v-if"i…...
go-zero(一) 介绍和使用
go-zero 介绍和使用 一、什么是 go-zero? go-zero 是一个基于 Go 语言的微服务框架,提供了高效、简单并易于扩展的 API 设计和开发模式。它主要目的是为开发者提供一种简单的方式来构建和管理云原生应用。 1.go-zero 的核心特性 高性能: g…...
buuoj WEB做题笔记
[极客大挑战 2019]EasySQL password输入存在注入: 123or 11 -- flag{68144110-18b9-4882-93f1-6f6e7b1c67ec} [极客大挑战 2019]Havefun 看网页源码,发现尾部有一段注释得代码,尝试 /?catdog,回显得flag{01c680f5-0d62-4e2c-a805-cfcf6b…...
使用SaaS化的Aurora应用快速搭建私人ChatGPT助手
使用SaaS化的Aurora应用快速搭建私人ChatGPT助手 简介: Aurora是一个带UI且免费的GPT私人聊天助手,可切换GPT-3.5,4,4o等常用版本。用户可通过部署Aurora,快速打造自己专属的AI助手。阿里云计算巢已将Aurora打包为SaaS…...
用sqlmap工具打sqli-labs前20关靶场
这个星期我们用手动注入打了前20关靶场,今天我们用sqlmap直接梭哈前20关 1.介绍sqlmap sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL和SQL注入漏洞。 2.下载和使用sqlmap 官方下载地址:GitHub - sq…...
Spark SQL大数据分析快速上手-完全分布模式安装
【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…...
弹幕发送功能‘简单’实现
导入依赖 <!-- websocket弹幕依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>后端代码 package com.by.danmaku;import org.springfra…...
springboot基于SpringBoot的校园招聘网站的设计与实现现
摘 要 校园招聘网站是一个专门为高校毕业生和用人单位提供就业与招聘信息的网络平台。该网站通过现代互联网技术,实现了职位信息的发布、简历投递、在线沟通等功能,极大地方便了企业和学生之间的互动。在设计上,网站注重用户体验,…...
徒手从零搭建一套ELK日志平台
徒手从零搭建一套ELK日志平台 日志分析的概述日志分析的作用主要收集工具集中式日志系统主要特点采集日志分类ELK概述初级版ELK终极版ELK高级版ELKELK收集日志的两种形式 搭建ELK平台Logstash工作原理Logstash核心概念环境准备安装部署docker添加镜像加速器安装部署Elasticsear…...
java八股-SpringCloud微服务-Eureka理论
文章目录 SpringCloud架构Eureka流程Nacos和Eureka的区别是?CAP定理Ribbon负载均衡策略自定义负载均衡策略如何实现?本章小结 SpringCloud架构 Eureka流程 服务提供者向Eureka注册服务信息服务消费者向注册中心拉取服务信息服务消费者使用负载均衡算法挑…...
Git 多仓库提交用户信息动态设置
Git 多仓库提交用户信息动态设置 原文地址:dddhl.cn 前言 在日常开发中,我们可能需要同时管理多个远程仓库(如 GitHub、Gitee、GitLab),而每个仓库使用不同的邮箱和用户名。比如,GitHub 和 Gitee 使用相…...
CPU详细介绍
CPU(中央处理器,Central Processing Unit)是计算机系统的核心部件之一,被称为计算机的“大脑”。它负责执行计算机程序中的各种指令,并管理和协调计算机系统的各个硬件组件。以下是对 CPU 的详细介绍,包括其…...
kafka中的数据清理策略
Kafka 中的数据清理策略主要用于控制数据的保留时间和存储空间,确保系统不会因为数据积累过多而影响性能。Kafka 提供了两种主要的数据清理策略: 1、基于时间的清理策略: 配置参数:log.retention.hours 或 log.retention.ms工作…...
django基于Django的二手电子设备交易平台设计与开发
摘 要 科学技术日新月异,人们的生活都发生了翻天覆地的变化,二手电子设备交易平台管理当然也不例外。过去的信息管理都使用传统的方式实行,既花费了时间,又浪费了精力。在信息如此发达的今天,我们可以通过网络这个媒介…...
WPF如何全局应用黑白主题效果
灰白色很多时候用于纪念,哀悼等。那么使用 WPF如何来做到这种效果呢?要实现的这种效果,我们会发现,它其实不仅仅是要针对图片,而是要针对整个窗口来实现灰白色。 如果只是针对图片的话,我可以可以对图片进…...
软件测试之测试用例扩展
软件测试之测试用例扩展 1. 测试用例覆盖2. UI布局覆盖3. 兼容性覆盖4. 测试用例条数 1. 测试用例覆盖 规则覆盖UI布局兼容性 2. UI布局覆盖 2条用例即可 布局, 颜色与原型图一致图片和文字描述无误 3. 兼容性覆盖 测试5大浏览器 火狐谷歌ieEge苹果 4. 测试用例条数 使…...
【Apache Paimon】-- 2 -- 核心特性 (0.9.0)
目录 1、实时更新 1.1、实时大批量更新 1.2、支持定义合并引擎 1.3、支持定义更新日志生成器 2、海量数据追加处理 2.1、append table 2.2、快速查询 3、数据湖功能(类比:hudi、iceberg、delta) 3.1、支持 ACID 事务 3.2、支持 Time travel(时间旅行) 3.3、支持…...
Mybatis入门
在学习MyBatis之前先了解一下什么是Mybatis?它能解决什么问题? 什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 Mybatis解决什么问题? MyBatis 免除了几乎所有的 JDBC…...
智能方法求解-圆环内传感器节点最大最小距离分布
本篇文章是博主在最优化、人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在最优化算…...
Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装
Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装 Matplotlib是Python最常用的数据可视化工具之一,结合Miniconda可以轻松管理安装和依赖项。在这篇文章中,我们将详细介绍如何使用Miniconda在Linux、mac…...
数学建模学习(137):使用Python进行频数分析
在数据科学的工作中,频数分析是一种用于描述变量值出现次数的重要统计方法。SPSS等工具提供了便捷的频数分析功能,而在Python中,我们同样可以通过灵活的库来实现相同的分析。在本文中,我们将介绍如何使用Python来完成频数分析,并演示如何用Pandas、Matplotlib等库来分析和…...
[Unity] 【游戏开发】Unity开发基础1-创建Unity项目:从Unity Hub选择合适的渲染管
创建一个新的Unity项目通常是开发过程中的第一步,而Unity为此提供了强大的工具和灵活的选项。本文将详细介绍如何使用Unity Hub创建项目、选择合适的Unity版本、模板和渲染管线,并阐述每种选项的优缺点和适用场景。 1. Unity Hub:统一管理项目和版本 Unity Hub是Unity提供…...
大型语言模型综述 A Survey of Large Language Models
文章源自 2303.18223 (arxiv.org) 如有侵权,请通知下线 这是一篇关于大语言模型(LLMs)的综述论文,主要介绍了 LLMs 的发展历程、技术架构、训练方法、应用领域以及面临的挑战等方面,具体内容如下: 摘要…...
基于MATLAB的混沌序列图像加密程序
设计目的 图像信息生动形象,它已成为人类表达信息的重要手段之一,网络上的图像数据很多是要求发送方和接受都要进行加密通信,信息的安全与保密显得尤为重要,因此我想运用异或运算将数据进行隐藏,连续使用同一数据对图…...
容器安全检测和渗透测试工具
《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect Docker-bench-…...
视频修复技术和实时在线处理
什么是视频修复? 视频修复技术的目标是填补视频中的缺失部分,使视频内容连贯合理。这项技术在对象移除、视频修复和视频补全等领域有着广泛的应用。传统方法通常需要处理整个视频,导致处理速度慢,难以满足实时处理的需求。 技术发…...
MyBatis——#{} 和 ${} 的区别和动态 SQL
1. #{} 和 ${} 的区别 为了方便,接下来使用注解方式来演示: #{} 的 SQL 语句中的参数是用过 ? 来起到类似于占位符的作用,而 ${} 是直接进行参数替换,这种直接替换的即时 SQL 就可能会出现一个问题 当传入一个字符串时ÿ…...
学习日志014--用python实现顺序表
之前我们用c语言实现顺序表,今天就然我们用python来复习一遍 一、创建顺序表 python的类可以代替c中的结构体作为复合数据类型。 创建学生类,并用装饰器将方法属性化,便于之后的修改。属性装饰器,可以在保护私有属性࿰…...
Android ConstraintLayout 基础
Android ConstraintLayout 基础 屏障线 Barrier设置水平和垂直方向的约束关系长宽比链式结构组站位辅助线 参考地址 屏障线 Barrier 以下是使用 ConstraintLayout 在 Android 中实现简单屏障线(Barrier)使用的示例代码,主要步骤如下…...
Ubuntu22.04LTS 部署前后端分离项目
一、安装mysql8.0 1. 安装mysql8.0 # 更新安装包管理工具 sudo apt-get update # 安装 mysql数据库,过程中的选项选择 y sudo apt-get install mysql-server # 启动mysql命令如下 (停止mysql的命令为:sudo service mysql stop࿰…...
【网站推荐】the top trending open-source startups, every quarter
每季度最热门的开源初创公司 我们根据 GitHub 存储库自 2020 年以来的明星增长情况发布热门开源项目,并将其称为 Runa 开源初创公司 (ROSS) 指数。 una Capital actively invests in open-source startups (like Nginx and MariaDB) and considers an active deve…...
Java通过calcite实时读取kafka中的数据
引入maven依赖 <dependency> <groupId>org.apache.calcite</groupId> <artifactId>calcite-kafka</artifactId> <version>1.28.0</version> </dependency> 测试代码 import java.sql.Connection; import java.sql.DriverMan…...
el-table 数据去重后合并表尾合计行,金额千分位分割并保留两位小数,表尾合计行表格合并
问题背景 最近在做后台管理项目el-table 时候需要进行表尾合计,修改合计后文字的样式,合并单元格。 想实现的效果 合并表尾单元格前三列为1格;对某些指定的单元格进行表尾合计;合计后的文本样式加粗;涉及到金额需要千…...
Flutter:RotationTransition旋转动画
配置vsync,需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// 定义 AnimationController late AnimationController _controller;overridevoid initState() {super…...
《Python浪漫的烟花表白特效》
一、背景介绍 烟花象征着浪漫与激情,将它与表白结合在一起,会创造出别具一格的惊喜效果。使用Python的turtle模块,我们可以轻松绘制出动态的烟花特效,再配合文字表白,打造一段专属的浪漫体验。 接下来,让…...
Java面试题分享
1、hashmap的底层设计原理以及扩容规则,是否线程安全,如何线程安全。 jdk1.7以前采用数组加链表结构通过键哈希确定数组下标存键值对。jdk1.8及以后采用数组加链表加红黑树,链表超阈值且数组满足条件会转红黑树,哈希函数先取键 h…...
定时器的小应用
第一个项目 第一步,RCC开启时钟,这个基本上每个代码都是第一步,不用多想,在这里打开时钟后,定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…...
【计算机网络】UDP协议
一、UDP协议格式 1.报头的含义 ① 16位源端口号:自己的端口号 ② 16位目的端口号:对方的端口号 ③ 16位UDP长度:整个数据报(UDP报头UDP有效载荷)的长度,最大64KB 一个UDP最多传64KB的数据,如果要传的数据 > 64K…...
vulhub之log4j
Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645) 漏洞简介 Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。 Apache Log4j 在应用程序中添加日志记录最…...