TransVG 代码配置及一些小细节
TransVG代码配置
-
File “/home/wyq/TransVG/utils/misc.py”, line 22, in <module>
from torchvision.ops import _new_empty_tensor
ImportError: cannot import name ‘_new_empty_tensor’if float(torchvision.__version__[:3]) < 0.7: # torchvision.__version__[:3]=0.1from torchvision.ops import _new_empty_tensorfrom torchvision.ops.misc import _output_size
解决:注释掉这一部分代码
-
计算参数量
n_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)
-
dataloader
m = re.match(r"^(.*) \|\|\| (.*)$", line) text_a = m.group(1) text_b = m.group(2)
-
DIOR_RSVG(2022)构造在TransVG之上(2021)
-
numpy.array() 函数期望其参数是一个序列(如列表、元组等),或者是一个单独的数组式对象。所以
box = np.array(x1, y1,x2, y2, dtype=np.float32)
不对 -
unbind()
是 PyTorch 张量(torch.Tensor)的一个方法,用于移除最后一个维度的尺寸并返回一个新的张量列表,其中包含了沿着该维度解包的所有元素 -
missing_keys, unexpected_keys = model_without_ddp.visumodel.load_state_dict(checkpoint['model'], strict=False)
- 将一个检查点(checkpoint)中的模型状态字典(state dict)加载到一个没有分布式数据并行(DDP)封装的模型(
model_without_ddp
)的visumodel
属性上 - missing_keys:这些是检查点中存在但模型状态字典中不存在的键。这通常发生在检查点包含了一些模型当前版本不再需要的额外权重(例如,由于模型架构的更改)。
- unexpected_keys:这些是模型状态字典中存在但检查点中不存在的键。这通常发生在模型包含了一些新的权重,而这些权重在检查点中没有对应的值(例如,由于模型架构的扩展)。
- 将一个检查点(checkpoint)中的模型状态字典(state dict)加载到一个没有分布式数据并行(DDP)封装的模型(
-
torch.tensor(images) & torch.stack(images)
- 当 images 是 NumPy 数组(ndarray)的列表时,torch.tensor(images) 会创建一个新的 PyTorch 张量,其形状为 (batch_size, …),其中 batch_size 是列表中数组的数量。
- 当 images 是 PyTorch 张量(tensor)的列表时,更推荐使用 torch.stack(images) 而不是 torch.tensor(images),以确保张量沿着一个新的维度被正确堆叠。
-
重定向:
2>&1 | tee ./models/refcoco/output
- 2>&1:这是一个重定向操作,它将标准错误(stderr,文件描述符为 2)重定向到标准输出(stdout,文件描述符为 1)。这通常用于将错误消息和正常输出一起发送到同一个地方。
- |:这是管道符号,它将一个命令的输出作为另一个命令的输入。
- tee:tee 命令从标准输入读取数据,并将其内容写入一个或多个文件,同时还将数据复制到标准输出。
-
报错:
Traceback (most recent call last):File "train.py", line 15, in <module>import datasetsFile "/home/wyq/TransVG/datasets/__init__.py", line 8, in <module>from .DIOR_data_loader import RSVGDatasetFile "/home/wyq/TransVG/datasets/DIOR_data_loader.py", line 16, in <module>import cv2 ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /root/anaconda3/envs/py36/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so)
解决:解决问题链接
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX # 查看当前有哪些版本 sudo find / -name "libstdc++.so.6*" #查看其它的版本,选择合适版本进行替换# strings 命令主要用于提取文件中的可打印字符串, # 而 GLIBCXX 通常是与 GCC 的标准 C++ 库(libstdc++)相关的版本标识符 strings /root/anaconda3/envs/py36/lib/libstdc++.so.6.0.33 | grep GLIBCXX # 查看新版本是否有需要的文件 cp /root/anaconda3/envs/py36/lib/libstdc++.so.6.0.33 /usr/lib/x86_64-linux-gnu/ # 复制新版本 rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6 # 删除旧版本 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #建立新连接 # 命令 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 是在 # Linux 系统中创建一个符号链接(也称为软链接)。这个命令的目的是将 libstdc++.so.6.0.33 这个具体的库文件链接 # 到一个更通用的名称 libstdc++.so.6,这样其他程序或库在请求 libstdc++.so.6 时, # 实际上会加载到 libstdc++.so.6.0.33 -s:这个选项告诉 ln 命令创建一个符号链接,而不是硬链接
-
开始时结果很不好,通过调整学习率(变为之前的1/8)提高了效果。原因:之前采用的是8卡训练,现在是单卡训练,所以考虑学习率应该降低为原来的1/8
-
GIOU IoU、GIoU、DIoU、CIoU、EIoU 5大评价指标
def generalized_box_iou(boxes1, boxes2):"""Generalized IoU from https://giou.stanford.edu/The boxes should be in [x0, y0, x1, y1] formatReturns a [N, M] pairwise matrix, where N = len(boxes1)and M = len(boxes2)"""# degenerate boxes gives inf / nan results# so do an early checkassert (boxes1[:, 2:] >= boxes1[:, :2]).all()assert (boxes2[:, 2:] >= boxes2[:, :2]).all()iou, union = box_iou(boxes1, boxes2)lt = torch.min(boxes1[:, None, :2], boxes2[:, :2])rb = torch.max(boxes1[:, None, 2:], boxes2[:, 2:])wh = (rb - lt).clamp(min=0) # [N,M,2]area = wh[:, :, 0] * wh[:, :, 1]return iou - (area - union) / area
-
正弦位置编码 Transformer架构:位置编码(sin/cos编码) 正弦、余弦三角函数位置编码讲解、代码实现
-
bert处理文本的结果
tokens,# 分词结果 input_ids, # 分词转换成词向量 input_mask, # 输入向量的掩码,1表示该位置有输入,0表示该位置没有输入 input_type_ids # 输入向量的类型,0表示text_a,1表示text_b
-
TransVG (1+L+N)xBxC
class TransVG(nn.Module):def __init__(self, args):super(TransVG, self).__init__()hidden_dim = args.vl_hidden_dimdivisor = 16 if args.dilation else 32self.num_visu_token = int((args.imsize / divisor) ** 2)self.num_text_token = args.max_query_lenself.visumodel = build_detr(args)self.textmodel = build_bert(args)num_total = self.num_visu_token + self.num_text_token + 1self.vl_pos_embed = nn.Embedding(num_total, hidden_dim)self.reg_token = nn.Embedding(1, hidden_dim)self.visu_proj = nn.Linear(self.visumodel.num_channels, hidden_dim)self.text_proj = nn.Linear(self.textmodel.num_channels, hidden_dim)self.vl_transformer = build_vl_transformer(args)self.bbox_embed = MLP(hidden_dim, hidden_dim, 4, 3)def forward(self, img_data, text_data):bs = img_data.tensors.shape[0]# visual backbonevisu_mask, visu_src = self.visumodel(img_data) visu_src = self.visu_proj(visu_src) # (N*B)xC# language berttext_fea = self.textmodel(text_data)text_src, text_mask = text_fea.decompose()assert text_mask is not Nonetext_src = self.text_proj(text_src)# permute BxLenxC to LenxBxCtext_src = text_src.permute(1, 0, 2)text_mask = text_mask.flatten(1)# target regression tokentgt_src = self.reg_token.weight.unsqueeze(1).repeat(1, bs, 1)tgt_mask = torch.zeros((bs, 1)).to(tgt_src.device).to(torch.bool)vl_src = torch.cat([tgt_src, text_src, visu_src], dim=0)vl_mask = torch.cat([tgt_mask, text_mask, visu_mask], dim=1)vl_pos = self.vl_pos_embed.weight.unsqueeze(1).repeat(1, bs, 1)vg_hs = self.vl_transformer(vl_src, vl_mask, vl_pos) # (1+L+N)xBxCvg_hs = vg_hs[0]pred_box = self.bbox_embed(vg_hs).sigmoid()return pred_box
-
nn.Embedding
参数:num_embeddings:表示词汇表或者类别集合的大小,也就是总共有多少个不同的类别需要进行嵌入操作 (例如上面词汇表中有 5 个单词,那么 num_embeddings 就设为 5)。embedding_dim:指定每个嵌入向量的维度。比如想把每个单词映射成维度为 3 的向量,那么 embedding_dim 就设为 3。import torch import torch.nn as nnembedding_layer = nn.Embedding(num_embeddings=5, embedding_dim=3)
-
MLP self.layers= nn.ModuleList(nn.Linear(n, k) for n, k in zip([input_dim] + h, h + [output_dim]))
class MLP(nn.Module):""" Very simple multi-layer perceptron (also called FFN)"""def __init__(self, input_dim, hidden_dim, output_dim, num_layers):super().__init__()self.num_layers = num_layersh = [hidden_dim] * (num_layers - 1)self.layers = nn.ModuleList(nn.Linear(n, k) for n, k in zip([input_dim] + h, h + [output_dim]))def forward(self, x):for i, layer in enumerate(self.layers):x = F.relu(layer(x)) if i < self.num_layers - 1 else layer(x)return x
-
DETR
class DETR(nn.Module):""" This is the DETR module that performs object detection """def __init__(self, backbone, transformer, num_queries, train_backbone, train_transformer, aux_loss=False):""" Initializes the model.Parameters:backbone: torch module of the backbone to be used. See backbone.pytransformer: torch module of the transformer architecture. See transformer.pynum_classes: number of object classesnum_queries: number of object queries, ie detection slot. This is the maximal number of objectsDETR can detect in a single image. For COCO, we recommend 100 queries.aux_loss: True if auxiliary decoding losses (loss at each decoder layer) are to be used."""super().__init__()self.num_queries = num_queriesself.transformer = transformerself.backbone = backboneif self.transformer is not None:hidden_dim = transformer.d_modelself.input_proj = nn.Conv2d(backbone.num_channels, hidden_dim, kernel_size=1)else:hidden_dim = backbone.num_channelsif not train_backbone:for p in self.backbone.parameters():p.requires_grad_(False)if self.transformer is not None and not train_transformer:for m in [self.transformer, self.input_proj]:for p in m.parameters():p.requires_grad_(False)self.num_channels = hidden_dimdef forward(self, samples: NestedTensor):"""The forward expects a NestedTensor, which consists of:- samples.tensor: batched images, of shape [batch_size x 3 x H x W]- samples.mask: a binary mask of shape [batch_size x H x W], containing 1 on padded pixelsIt returns a dict with the following elements:- "pred_logits": the classification logits (including no-object) for all queries.Shape= [batch_size x num_queries x (num_classes + 1)]- "pred_boxes": The normalized boxes coordinates for all queries, represented as(center_x, center_y, height, width). These values are normalized in [0, 1],relative to the size of each individual image (disregarding possible padding).See PostProcess for information on how to retrieve the unnormalized bounding box.- "aux_outputs": Optional, only returned when auxilary losses are activated. It is a list ofdictionnaries containing the two above keys for each decoder layer."""if isinstance(samples, (list, torch.Tensor)):samples = nested_tensor_from_tensor_list(samples)features, pos = self.backbone(samples)src, mask = features[-1].decompose()assert mask is not Noneif self.transformer is not None:out = self.transformer(self.input_proj(src), mask, pos[-1], query_embed=None)else:out = [mask.flatten(1), src.flatten(2).permute(2, 0, 1)]return out
-
IntermediateLayerGetter是一个实用工具,它允许你从预训练的模型中提取中间层的特征,这在特征提取或迁移学习中非常有用。
self.body = IntermediateLayerGetter(backbone, return_layers=return_layers)
-
导入BertModel的两种方式
from pytorch_pretrained_bert.modeling import BertModel from transformers import BertModel
相关文章:
TransVG 代码配置及一些小细节
TransVG代码配置 File “/home/wyq/TransVG/utils/misc.py”, line 22, in <module> from torchvision.ops import _new_empty_tensor ImportError: cannot import name ‘_new_empty_tensor’ if float(torchvision.__version__[:3]) < 0.7: # torchvision.__version…...
DIY-Tomcat part 3 实现对动态资源的请求
实现ServletRequest package connector;import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i…...
在鲲鹏麒麟服务器上部署MySQL主从集群
因项目需求需要部署主从MySQL集群,继续采用上次的部署的MySQL镜像arm64v8/mysql:latest,版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…...
K8S版本和istio版本的对照关系
版本对照关系 下载地址1 下载地址2...
省级新质生产力数据(蔡湘杰版本)2012-2022年
测算方式:参考《当代经济管理》蔡湘杰(2024)老师研究的做法,本文以劳动者、劳动对象和劳动资料为准则层,从新质生产力“量的积累、质的提升、新的拓展”三维目标出发,构建新质生产力综合评价指标体系&#…...
速盾:介绍一下高防cdn的缓存响应事什么功能?
高防CDN(Content Delivery Network)是一种基于分布式缓存技术的网络加速服务,能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先,高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…...
如何解决服务器扫描出的ASP木马问题
随着互联网的发展,网站安全问题日益凸显。其中,ASP(Active Server Pages)木马因其隐蔽性和危害性成为攻击者常用的手段之一。本文将详细介绍如何检测和清除服务器上的ASP木马,以保障网站的安全。 1. ASP木马概述 ASP…...
CTF之WEB(sqlmap tamper 参数)
apostropheask.py 作用:将单引号替换为UTF-8,用于过滤单引号。 base64encode.py 作用:替换为base64编码。 multiplespaces.py 作用:绕过SQL关键字添加多个空格。 space2plus.py 作用:用号替换…...
小程序-基于java+SpringBoot+Vue的乡村研学旅行平台设计与实现
项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:…...
力扣81:搜索旋转排序数组II
已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k1], ..., nums[n-1], n…...
力扣题库Day4(持续更新中...)
2024/11/29 回文数: 给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 class Solution {public boolean isPalindrome(int x) {if(x &l…...
MySQL数据库表的操作
1、总述 今天我跟大家分享MySQL数据库中表的创建,查看,修改,删除。 2、创建表 create table table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明࿱…...
Java阶段三05
第3章-第5节 一、知识点 动态代理、jdk动态代理、cglib动态代理、AOP、SpringAOP 二、目标 理解什么是动态代理和它的作用 学会使用JAVA进行动态代理 理解什么是AOP 学会使用AOP 理解什么是AOP的切入点 三、内容分析 重点 理解什么是动态代理和它的作用 理解什么是AO…...
【论文复现】LeNet-5
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ LeNet-5 概述LeNet-5网络架构介绍使用 LeNet-5 网络结构创建 MNIST 手写数字识别分类器下载并加载数据,并对数据进行预处理搭建 …...
Python-链表数据结构学习(1)
一、什么是链表数据? 链表是一种通过指针串联在一起的数据结构,每个节点由2部分组成,一个是数据域,一个是指针域(存放下一个节点的指针)。最后一个节点的指针域指向null(空指针的意思࿰…...
nginx安装和负载均衡
1. nginx安装 (1)安装依赖项: yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel(2)下载Nginx源代码: http://nginx.org/en/download.html https://nginx.o…...
Buffered 和 BuffWrite
Buffered和BuffWrite是Java IO包中的两个类,用于提高IO操作的效率。 Buffered是一个缓冲区类,可以将一个InputStream或者一个Reader包装起来,提供了一定的缓冲区大小,可以一次读取多个字节或字符,减少了读取的次数&am…...
第三十八篇——高斯分布:大概率事件意味着什么?
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过高斯分布的公式,我们可以从科学的角度知道很多和我们的直…...
Ubuntu24.04初始化教程(包含基础优化、ros2)
目录 构建系统建立系统备份**Timeshift: 系统快照和备份工具****安装 Timeshift****使用 Timeshift 创建快照****还原快照****自动创建快照** 最基本配置换源 软件配置打开新世界大门 谷歌浏览器星火应用商城更换输入法安装vscode 完全删除snap删除**删除软件****彻底删除**禁止…...
C/C++ 数据结构与算法 【时间复杂度和空间复杂度】【日常学习,考研必备】
一、时间复杂度 定义:时间复杂度描述了算法运行时间随输入大小增长而增长的趋势。它主要关注的是算法中最耗时的部分,并忽略常数因子、低阶项等细节。表示方法:通常使用大O符号(Big O notation)来表示时间复杂度。例如…...
brew安装mongodb和php-mongodb扩展新手教程
1、首先保证macos下成功安装了Homebrew, 在终端输入如下命令: brew search mongodb 搜索是不是有mongodb资源, 演示效果如下: 2、下面来介绍Brew 安装 MongoDB,代码如下: brew tap mongodb/brew brew in…...
使用zabbix监控k8s
一、 参考文献 小阿轩yx-案例:Zabbix监控kubernetes云原生环境 手把手教你实现zabbix对Kubernetes的监控 二、部署经验 关于zabbix监控k8s,总体来说是分为两块内容,一是在k8s集群部署zabbix-agent和zabbix- proxy。二是在zabbix进行配置。…...
Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建
Brain.js 是一个强大且易用的 JavaScript 神经网络库,适用于前端和 Node.js 环境,帮助开发者轻松实现机器学习功能。 在前文Brain.js(一):可以在浏览器运行的、默认GPU加速的神经网络库概要介绍-发展历程和使用场景中&…...
SQL Server管理员sa登录失败原因
文章目录 一、开启混合登录模式二、启用sa三、更改密码四、登录sa一、开启混合登录模式 用Windows身份登录数据库服务。 在连接名上右键→属性。 在安全性选项卡下,选择【SQL Server和Windows身份验证模式】,点击【确定】,提示需要重启服务。 Win+R,输入指令:services.ms…...
怎么样才算得上熟悉高并发编程?
提到并发编程很多人就会头疼了;首先就是一些基础概念:并发,并行,同步,异步,临界区,阻塞,非阻塞还有各种锁全都砸你脸上,随之而来的就是要保证程序运行时关键数据在多线程…...
conan2包管理菜鸟入门之------------------交叉编译和静态编译
在做嵌入式开发时,我们经常需要交叉编译,conan2可以通过新增profile,在profile配置交叉编译工具链,然后在conan build指定profile就可以进行交叉编译,具体步骤如下: 1.首先在profiles下新增目标平台配置,默认情况下是只有default,下面是一个example profile文件: [set…...
Go-MediatR:Go语言中的中介者模式
在Go语言中,确实存在一个与C#中的MediatR类似的组件包,名为Go-MediatR。 Go-MediatR是一个受.NET中MediatR库启发的Go语言实现,它专注于通过中介者模式简化命令查询责任分离(CQRS)模式的处理和在事件驱动架构中的应用…...
双向链表
目录 链表的分类 概念 双向链表的实现 ① 结构 ② 初始化 ③ 打印 ④ 插入数据 ⑤ 删除数据 ⑥ 查找数据 ⑦ 在pos位置之前插入数据 ⑧ 删除pos位置的数据 ⑨ 销毁链表 总结 链表的分类 虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构&…...
Spring Boot使用JDK 21虚拟线程
JDK 21引入的虚拟线程(Virtual Threads)是 Project Loom 的一部分,旨在显著简化并发编程并提高 Java 应用的可扩展性。以下是虚拟线程的主要特点: 1. 概念 虚拟线程是轻量级线程,与传统的操作系统线程不同࿰…...
24/11/29 Vite
安装nodejs 直接下一步 node.js中自带NPM包(管理js库文件)管理工具 测试NPM命令 npm -v 检查版本 npm config set registry https://registry.npmmirror.com 设置远程仓库 2.安装vite vite是前端服务的工具集 vue团队主持开发 Vite 官网 使用vite安装命令 这个命令是安…...
黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业
视频地址:哔哩哔哩 讲义作业飞书地址:day04作业(IOC&DI) 作业很简单,主要是练习拆分为三层架构controller、service、dao,并基于IOC & DI进行解耦。 1、结构: 2、代码 网盘链接&…...
[Unity] Inputfield光标移动到最后(不选中内容)
经过测试,要用Inputfield实现光标末尾显示但不选中内容非常麻烦,要么会选中全部,要么采用下面这种延迟显示,但会有明显的变化中间过程: protected override void OnPanelEnter() {// 先激活输入框(这里的I…...
实践五 网络安全防范技术
1 实践内容 1.1 安全防范 为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性,信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论,典型的有PDR和P^2DR模型。 1.1.1 PDR模型 信息系统的防御机制能抵抗…...
Spring Web开发注解和请求(1)
大家好我是小帅,今天我们来学习Spring Web MVC框架(入门级) 文章目录 1. 什么是 Spring Web MVC?1.1 MVC 定义1.2 什么是Spring MVC ? 2. 学习Spring MVC2.1 建⽴连接第一个spring MVC程序 3. web开发注解的解释3.1RestControlle…...
设计模式-适配器模式-注册器模式
设计模式-适配器模式-注册器模式 适配器模式 如果开发一个搜索中台,需要适配或接入不同的数据源,可能提供的方法参数和平台调用的方法参数不一致,可以使用适配器模式 适配器模式通过封装对象将复杂的转换过程隐藏于幕后。 被封装的对象甚至…...
保持角色一致性!flux新模型redux用法(含模型与工作流)
目录 redux模型是什么,能干啥? 用到的工具有哪些? 工具和模型文件在哪里下载? 整合包: 下载后需要分别放到指定目录: redux模型怎么用? 加载工作流 上传图片和输入提示词 生成结果…...
点云3DHarris角点检测算法推导
先回顾2D的Harris角点检测算法推导 自相关矩阵是Harris角点检测算法的核心之一,它通过计算图像局部区域的梯度信息来描述该区域的特征。在推导Harris角点检测算法中的自相关矩阵时,我们首先需要了解自相关矩阵的基本思想和数学背景。 参考 1. 能量函数…...
ASUS/华硕天选5Pro酷睿版 FX607J 原厂Win11 22H2系统 工厂文件 带ASUS Recovery恢复
华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows11 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…...
CentOS修改yum.repos.d源,避免“Could not resolve host: mirrorlist.centos.org”错误
1、问题现象 由于CentOS停止维护,mirrorlist.centos.org网站也关闭不可访问。导致CentOS默认配置的yum.repos.d源也不可用,所以执行yum命令会报“Could not resolve host: mirrorlist.centos.org”错误。具体如下: Could not retrieve mirror…...
rest-assured multiPart上传中文名称文件,文件名乱码
rest-assured是一个基于java语言的REST API测试框架,在使用rest-assured的multipart 上传文件后,后端获取的文件名称乱码。截图如下: 原因是rest-assured multipart/form-data默认的编码格式是US-ASCII,需要设置为UTF-8。 Befo…...
Springfox迁移到 Springdoc OpenAPI 3
将项目从 Springfox 迁移到 Springdoc OpenAPI 3 时,主要的工作是将原先使用的 Springfox 注解替换为 Springdoc OpenAPI 3 中的对应注解。虽然 Springdoc OpenAPI 3 基于 OpenAPI 3 规范,并且有一些不同的命名方式和设计理念,但大部分注解的…...
基于Java Springboot考研论坛系统
一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库:…...
性别需不需要加索引?
1. 什么是索引? 索引就像一本书的目录,能够帮助数据库快速定位到特定的数据,减少扫描的工作量。使用索引的前提是能够有效缩小查询范围,否则索引的存在可能并不带来性能提升。 使用索引有额外的开销: 索引需要额外的…...
Subprocess 和 Multiprocessing 的区别与使用要点及进程关闭方法
Subprocess 和 Multiprocessing 的区别与使用要点及进程关闭方法 最近在使用这两个库比较多,所以就借此机会记录一下这两个库的使用方式 一、Subprocess 和 Multiprocessing 的区别 1. 功能目标不同 Subprocess:主要用于在 Python 程序中启动外部程序…...
美国网络安全态势感知(4):威胁情报发展现状
美国政府依托其不断发展完善的威胁情报共享技术,构建了名为“网络天气地图”的威胁情报管理体系,如下图所示: “网络天气地图”的威胁情报管理体系运行过程以及每个过程中的关键信息如下所述: 通过国家网络安全保护系统与互联网中…...
【VRChat 改模】开发环境搭建:VCC、VRChat SDK、Unity 等环境配置
一、配置 Unity 相关 1.下载 UnityHub 下载地址:https://unity.com/download 安装打开后如图所示: 2.下载 VRChat 官方推荐版本的 Unity 跳转界面(VRChat 官方推荐页面):https://creators.vrchat.com/sdk/upgrade/…...
android将pcm byte[]通过Librtmp进行rtmp推流
需求 我们这边做的功能是智能戒指,戒指可以录音,然后app通过蓝牙连接,将音频的byte[]进行rtmp推流 技术 因为我们不涉及直播,也不涉及视频,工期也比较短,只是音频推流,所以没用更复杂的ffmpe…...
宠物领养技术:SpringBoot框架应用
摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于宠物领养…...
【前端】跨域问题与缓存
报错如下: 原因: 浏览器 缓存跨域,顾名思义是由于浏览器的缓存机制导致的一种跨域情况。这种跨域一般会出现在浏览器通过一些无视跨域的标签和css(如img、background-image)缓存了一些图片资源之后,当再次发起图片请求时ÿ…...
DepthAI 2.29版本 发布
2024年11月29日 增加在设备运行时使用新的 dai::Device.setCalibration() 更改设备校准能力的方法,并使用 dai::Device.getCalibration() 进行检索校准 1🍃 新的立体深度预设属性: 预设 面部 高细节 机器人 2🍃 多项摄像…...