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

用点云信息来进行监督目标检测

🍑个人主页:Jupiter.
🚀 所属专栏:传知代码
欢迎大家点赞收藏评论😊

在这里插入图片描述

在这里插入图片描述

目录

  • 概述
  • 问题分析
    • Making Lift-splat work well is hard
    • 深度不准确
    • 深度过拟合
    • 不准确的BEV语义
  • 模型总体框架
    • 显性深度监督
  • 深度细化模块
  • 演示效果
  • 核心逻辑
    • 模型总体框架
    • 模型主干网络
  • 使用方式
    • 准备数据集
      • 训练和验证模型
  • 部署方式


概述

雷达和相机是自动驾驶系统用于检测3D物体常用的手段,雷达数据能够产生可靠的三维检测结果,而多相机视角由于其较低的成本受到了越来越多的关注。尽管LSS的方法使多视角3D目标检测方法具有可行性,但是它关于深度的估计很差。BEVDepth是一种利用深度监督的多视角3D检测器,它利用点云的深度信息来指导深度学习。除此之外,BEVDepth创新性的提出了将相机内参和外参编码到深度学习模块中,使检测器对各种相机设置具有鲁棒性。同时,进一步引入了深度细化模块来细化学习到的深度。

  • 参考文献:需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获取完整版:地址

问题分析

Making Lift-splat work is easy
在这里插入图片描述
在这里插入图片描述

Making Lift-splat work well is hard

隐式深度监督虽然取得了合理的结果,但现有的性能远不能令人满意。在这一部分中,BEVDepth揭示了Lift-splat现有工作机制的三个不足之处,包括深度不准确、深度模糊过拟合和BEV语义不准确。BEVDepth比较了两个基线,一个是基于LSS的朴素探测器,名为Base detector,另一个是利用Dpred上的点云数据得出的额外深度监督,将其命名为增强型探测器。

深度不准确

在Base Detector中,深度模块上的梯度来自检测损失,这是间接的。BEVDepth使用常用的深度估计度量来评估nuScenes上的学习深度Dpred值,包括尺度不变对数误差(SILog),平均绝对相对误差(Abs-Rel),均方相对误差(SqRel)和均方根误差(RMSE)。BEVDepth根据两种不同的配置评估两个探测器:针对每个对象的所有像素进行评估和针对每个对象的最佳预测像素进行评估。
  在这里插入图片描述
在最佳匹配设置下,BaseDetector的性能几乎与全区域设置下的增强型探测器相当。这进一步证实了当检测器在没有深度损失的情况下进行训练时,它只通过学习部分深度来检测物体。

深度过拟合

  • 基础检测器只学习预测部分区域的深度,大多数像素没有被训练来预测合理的深度,这引发了我们对深度模块泛化能力的担忧。检测器以这种方式学习深度可能对图像大小、相机参数等超参数非常敏感。
      在这里插入图片描述
      如上图所示,当图像大小发生改变时,基础模型下降的更厉害,这意味着它可能对相机内参、外参或其他超参数的噪声敏感。

不准确的BEV语义

一旦图像特征使用学习到的深度反投影到截锥特征上,就会使用体素/柱池化操作将他们聚合到BEV中。

在这里插入图片描述

模型总体框架

在这里插入图片描述
BEVDepth由四个基本组件构成:

一个图像编码器用于从N个输入视图中提取2D特征信息
一个深度网络用于估计网络的深度
一个视图转换器将2D信息转换为3D信息,其中利用了深度信息进行矩阵相乘,并且将他们转为一个整体的BEV表示
3D检测头用于推测种类,3D边界框和其他特征

显性深度监督

在基本的检测头中,关于深度模块的监督主要来自于检测头的损失函数,但由于单目深度估计估计深度信息具有一定的困难,唯一的检测损失远远不足以监督深度模块,因此BEVDepth提出了采用中间层产生的深度信息D pred
并且采用点云信息产生的GT值Dgt作为监督信号来进行计算,为了得到GT值,BEVDepth首先需要将点云坐标系转换为图像坐标系并且还要通过相机的内参转换到2.5D信息。
在这里插入图片描述 如上图公式所示,其中u,v表示图像坐标系下的坐标,R,t分别表示旋转矩阵和平移矩阵,K表示相机的内参。然后,为了对齐投影点云和预测深度之间的形状,在P iimg 上采用了最小池化和独热编码。将这两个操作定义为ΦDigt=ϕ(Piimg)
在这里插入图片描述

深度细化模块

在这里插入图片描述

演示效果

模型参数大小
在这里插入图片描述
在这里插入图片描述

核心逻辑

模型总体框架

def forward(self,x,mats_dict,timestamps=None,):"""Forward function for BEVDepthArgs:x (Tensor): Input ferature map.mats_dict(dict):sensor2ego_mats(Tensor): Transformation matrix fromcamera to ego with shape of (B, num_sweeps,num_cameras, 4, 4).intrin_mats(Tensor): Intrinsic matrix with shapeof (B, num_sweeps, num_cameras, 4, 4).ida_mats(Tensor): Transformation matrix for ida withshape of (B, num_sweeps, num_cameras, 4, 4).sensor2sensor_mats(Tensor): Transformation matrixfrom key frame camera to sweep frame camera withshape of (B, num_sweeps, num_cameras, 4, 4).bda_mat(Tensor): Rotation matrix for bda with shapeof (B, 4, 4).timestamps (long): Timestamp.Default: None.Returns:tuple(list[dict]): Output results for tasks.""" # 判断模型是否需要返回深度信息if self.is_train_depth and self.training:x, depth_pred = self.backbone(x,mats_dict,timestamps,is_return_depth=True)preds = self.head(x)return preds, depth_predelse:x = self.backbone(x, mats_dict, timestamps)preds = self.head(x)return preds

模型主干网络

def forward(self,sweep_imgs,mats_dict,lidar_depth,timestamps=None,is_return_depth=False):"""Forward function.Args:sweep_imgs(Tensor): Input images with shape of (B, num_sweeps,num_cameras, 3, H, W).mats_dict(dict):sensor2ego_mats(Tensor): Transformation matrix fromcamera to ego with shape of (B, num_sweeps,num_cameras, 4, 4).intrin_mats(Tensor): Intrinsic matrix with shapeof (B, num_sweeps, num_cameras, 4, 4).ida_mats(Tensor): Transformation matrix for ida withshape of (B, num_sweeps, num_cameras, 4, 4).sensor2sensor_mats(Tensor): Transformation matrixfrom key frame camera to sweep frame camera withshape of (B, num_sweeps, num_cameras, 4, 4).bda_mat(Tensor): Rotation matrix for bda with shapeof (B, 4, 4).lidar_depth (Tensor): Depth generated by lidar.timestamps(Tensor): Timestamp for all images with the shape of(B,num_sweeps, num_cameras).Return:Tensor: bev feature map."""batch_size, num_sweeps, num_cams, num_channels, img_height, \img_width = sweep_imgs.shape# 获得雷达的深度值lidar_depth = self.get_downsampled_lidar_depth(lidar_depth)key_frame_res = self._forward_single_sweep(0,sweep_imgs[:, 0:1, ...],mats_dict,lidar_depth[:, 0, ...],is_return_depth=is_return_depth)if num_sweeps == 1:return key_frame_reskey_frame_feature = key_frame_res[0] if is_return_depth else key_frame_resret_feature_list = [key_frame_feature]for sweep_index in range(1, num_sweeps):with torch.no_grad():feature_map = self._forward_single_sweep(sweep_index,sweep_imgs[:, sweep_index:sweep_index + 1, ...],mats_dict,lidar_depth[:, sweep_index, ...],is_return_depth=False)ret_feature_list.append(feature_map)if is_return_depth:return torch.cat(ret_feature_list, 1), key_frame_res[1]else:return torch.cat(ret_feature_list, 1)

使用方式

准备数据集

  1. 从如下网站 nuScenes数据集 下载数据集,并且把放入 data/nuscenes文件夹下
  2. 形成的文件夹如下图所示
data/nuscenes
├── maps
├── samples
├── sweeps
├── v1.0-test
└── v1.0-trainval

使用下列代码生成pkl文件

python scripts/gen_info.py
  • 从如下路径中选取自己需要的权重文件

训练和验证模型

# train
python [EXP_PATH] --amp_backend native -b 8 --gpus 8# eval
python [EXP_PATH] --ckpt_path [CKPT_PATH] -e -b 8 --gpus 8

部署方式

# 克隆代码
git clone https://github.com/Megvii-BaseDetection/BEVDepth.git# 创建环境
conda create -n bevdepth python=3.7# 激活环境
conda activate bevdepth# cd到该文件夹中
cd BEVDepth/# 用pip下载要求的pytorch版本
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html# 下载mmcv,注意两个地方本地的cuda版本和pytorch版本(
pip install mmcv-full==1.5.2# 下载mmdet,不需要加版本号,自动匹配
pip install mmdet==2.24.0# 下载mmsegemtation
pip install mmsegmentation==0.20.0# 克隆mmdetection3d
git clone https://github.com/open-mmlab/mmdetection3d.git# cd到mmdetection3d中
cd mmdetection3d# 确定版本
git checkout v1.0.0rc4# 安装
pip install -v -e . # 返回上一级目录
cd ..# 安装相关依赖
pip install -r requirements.txt
python setup.py developpip install pytorch-lightning==1.7
pip install mmengine# 其他修改
将python3.7/site-packages/nuscenes/eval/detection/data_classes.py中的
self.class_names = self.class_range.keys()改为self.class_names = list(self.class_range.keys())
  • 参考文献:需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获取完整版:地址

相关文章:

用点云信息来进行监督目标检测

🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 概述问题分析Making Lift-splat work well is hard深度不准确深度过拟合不准确的BEV语义 模型总体框架显性深度监督 深度细化模块演示效果核心…...

Python编写api接口读取电商商品详情数据示例

以下是一个使用 Python 的 Flask 框架来编写一个简单的 API 接口,用于读取模拟的电商商品详情数据的示例代码。这里假设商品详情数据是存储在一个简单的字典中模拟数据库存储,实际应用中你需要连接真正的数据库(如 MySQL、MongoDB 等&#xf…...

用纯 CSS 实现网格背景

是不是在日常开发中经常遇到实现网格的需求,网格通常对网页中展示的元素能起到很好的定位和对齐作用。 这里介绍如何只通过 CSS 来实现这个需求? 使用背景图​ 这里我们的背景图使用 SVG 来创建,首先,创建绘出一个正方形&#xff…...

CNN+LSTM+AM研究方向初尝试

CNNLSTMAM研究方向初尝试 简单介绍 CNN CNN 的基本结构 卷积层(Convolutional Layer): 该层通过卷积操作提取输入数据的特征。卷积操作使用多个卷积核(滤波器)对输入图像进行局部感知,从而识别出边缘、纹…...

对比 LiveData 和 Flow 的实现方式

前一段忙完了鸿蒙,现在又开始 Android 开发了。由于之前公司都是都是偏传统开发方式,基本都是 Java 开发 Android 那一套。现在开始学习现代 Android 开发了。 对比 LiveData 和 Flow 的实现方式 在 Android 开发中,LiveData 和 Flow 都可以用来管理异步数据流和实现 UI 的…...

React.memo 和useMemo 的区别

React.memo 和 useMemo 都是 React 中的性能优化工具,但它们的用途和工作原理不同。以下是它们的主要区别: 1. React.memo React.memo 是一个高阶组件(HOC),用于优化组件的渲染,防止不必要的重新渲染。当组…...

视频码率到底是什么?详细说明

视频码率(Video Bitrate)是指在单位时间内(通常是每秒)传输或处理的视频数据量,用比特(bit)表示。它通常用来衡量视频文件的压缩程度和质量,码率越高,视频质量越好&#…...

CentOS7停更后,如何配置国内Yum源、镜像源

CentOS7停更后,如何配置国内Yum源、镜像源 yum介绍步骤1. 备份原有的yum源文件2. 下载国内Yum源文件3. 清除缓存并更新Yum源4. 使用国内Yum源 yum介绍 Yum(Yellowdog Updater Modified)是一个在CentOS和Red Hat Enterprise Linux&#xff08…...

黑石云|Linux-基础口令

在Linux系统中,设置和管理口令(密码)是确保系统安全性的重要环节。以下是一些关于Linux基础口令的详细解释和操作指南: 一、口令设置命令 passwd命令 功能:用于更改当前用户的密码。 使用方法:在终端中输…...

如何配置Github并在本地提交代码

前提: 可以流畅访问github, 需要一些上网技巧, 这就自行处理了 申请一个github账号 Github官网地址 首先就是邮箱注册啦, github没有对邮箱的限制, 只要是能收邮件的就ok, qq邮箱, 163等都可以使用. 然后和普通注册账号一样, 一路填写需要的信息, 验证邮箱即可. 如何新增代…...

UiPath API接口说明

Swagger网址 私有云网址(企业版) https://企业/swagger/index.html 公有云网址(社区版) https://cloud.uipath.com/linan/LinanZhang/orchestrator_/swagger/index.html#/ 常见问题 Swagger页面测试请求时报错“You are not a…...

Ubuntu22.04上kdump和crash的使用

0.前言 1.引用: 解决Linux内核问题实用技巧之 - Crash工具结合/dev/mem任意修改内存-腾讯云开发者社区-腾讯云 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 ubuntu内核转储分析——kdump和crash的下载和使用_ubuntu kdump-CSDN博客 U…...

【2025最新计算机毕业设计】基于SSM+Vue中华传统文化吟诵知识学习系统

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

智能社区服务小程序+ssm(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足,创建了一个计算机管理智能社区服务小程序的方案。文章介绍了智能社区服务…...

windows10电脑缺少dll文件的解决方案,系统缺少dll修复指南

在使用Windows 10操作系统时,有时会遇到由于缺少某些动态链接库(Dynamic Link Library, 简称DLL)文件而导致程序无法正常运行的问题。本指南将介绍几种解决此类问题的方法。 什么是DLL文件? DLL文件是Windows系统中的一种特殊类型…...

【设计模式系列】工厂方法模式(二十一)

一、什么是工厂方法模式 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,其核心目的是定义一个创建对象的接口,但让实现这个接口的子类来决定实例化哪一个类。工厂方法模式让类的实例化推迟到子类中进行,…...

etcd资源超额

集群内apiserver一直重启,重启kubelet服务后查看日志发现一下报错: Error from server: etcdserver: mvcc: database space exceeded 报错原因: etcd服务未设置自动压缩参数(auto-compact) etcd 默认不会自动 compa…...

数据结构与算法学习笔记----DFS

数据结构与算法学习笔记----DFS author: 明月清了个风 first publish time: 2024.12.4 revised: 2024.12.5 - 加了Acwing 843. n-皇后问题 。 ps⛹感觉DFS的题基本的思想就是递归,但是每题都有不一样的地方,每一题的思路和模拟过程都单独写在每一题里…...

力扣54.螺旋矩阵

题目描述 题目链接54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2:…...

【原生js案例】webApp实现一个分享到的功能

这种分享到的效果很常见,在我们的网站上。鼠标滑入展示,滑出就隐藏。现在我们使用定时器功能来实现这种滑动效果。 感兴趣的可以关注下我的系列课程【webApp之h5端实战】,里面有大量的css3动画效果制作原生知识分析,讲解&#xf…...

iPhone手机清理软件:相册清理大师推荐

随着智能手机成为我们日常生活的必需品,手机中的数据日益膨胀,尤其是照片和视频这类容易积累的文件。对于iPhone用户来说,管理这些文件,特别是清理相册变得尤为重要。本文将介绍一款备受推崇的iPhone手机清理软件——CleanMyPhone…...

Javaweb梳理21——Servlet

Javaweb梳理21——Servlet 21 Servlet21.1 简介21.3 执行流程21.4 生命周期4.5 方法介绍21.6 体系结构21.7 urlPattern配置21.8 XML配置 21 Servlet 21.1 简介 Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。使用Servlet就可以实现&…...

Serverless 时代

前端的边界探索,从客户端展开,以跨端为目标,用一套 JavaScript 代码生成多端平台,以此来实现大前端的统一。虽然在这条路上还不算尽善尽美,但各家公司的跨端方案已基本趋于成熟,并且已经运用到生产环境中。…...

docker安装clickhouse副本集群

docker安装clickhouse副本集群 1、clickhouse副本集群搭建1.1、docker安装zookeeper集群1.1.1、zookeeper第一个节点安装1.1.2、zookeeper第二个节点安装1.1.3、zookeeper第三个节点安装1.1.4、zookeeper客户端命令 2、Clickhouse副本集群搭建2.1、clickhouse搭建2.2、验证集群…...

详解AI网关助力配电房实现智能化管控应用

​对于一些建设年份久远的老旧配电房,由于配套降温散热设施设备不完善、线路设备老化等因素,极易出现因环境过热而影响设备正常稳定运行,进而导致电气故障甚至火灾等事故产生。 基于AI网关的配电房智能监控及管理 针对配电房的实时安全监测及…...

uniapp调用腾讯定位api

1、注册腾讯地址api接口,创建应用获取key WebService API | 腾讯位置服务 2、配置获取方法getCity // 定位服务getCity(latitude, longitude) {const key XXXX-XXXX-XXXX-XXXX-XXXX; // 替换为你的腾讯位置服务密钥const url /apis.map.qq.com/ws/geocoder/v1/…...

映射vim键位,基本功能键位表(未更完)

键位映射&#xff1a;建议使用jj代替esc,毕竟esc离手那么远 linux下修改方法是&#xff1a;vim /etc/vim/vimrc 在该文件尾添加inoremap jj <Esc>该方法可以同样可以用到其他键位映射上 i&#xff1a;表示这个映射是在插入模式&#xff08;insert mode&#xff09;下有效…...

【Python】爬虫实战03:自动化抢票脚本【某麦网】

1. 脚本介绍 1.1 背景介绍 在这个数字化时代&#xff0c;演唱会、体育赛事和各种活动的门票销售往往在线上进行。由于热门活动的高需求和门票的有限供应&#xff0c;抢票成为了一场激烈的竞争。许多粉丝和爱好者经常因为手速不够快或网络延迟而错失购票机会。为了提高抢票的成…...

AspNet WebAPI 模型绑定问题

继承System.Web.Http.ApiController的Action的Model如果被[Serializable]定义&#xff0c;会导致Model的字段无法绑定。 Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll [Serializable] public class Model {public string id { get; set; } }public MyA…...

ISAAC SIM踩坑记录--添加第三方3D场景

ISAAC SIM仿真首先就是要有合适的3D场景&#xff0c;官方提供了一些场景&#xff0c;如果不能满足要求&#xff0c;那就只能自己建。 对于我这种不会3D建模的菜鸟&#xff0c;只能到网上下载了&#xff0c;sketchfab就是一个不错的平台&#xff0c;有不少免费资源可以下载。 …...

Linux中Crontab(定时任务)命令详解

文章目录 Linux中Crontab&#xff08;定时任务&#xff09;命令详解一、引言二、Crontab的基本使用1、Crontab命令格式2、Crontab常用操作 三、Crontab的配置与服务管理1、配置Crontab2、服务管理 四、使用示例1、每天凌晨2点备份网站数据2、每周一凌晨3点清理临时文件3、每月的…...

在Ubuntu中运行和管理AppImage

文章目录 什么是AppImage&#xff1f;如何在Ubuntu中运行AppImage&#xff1f;如何管理AppImage&#xff1f;安装AppImageLauncher如何添加AppImage到系统&#xff1f;如何从系统中移除AppImage&#xff1f; 总结 什么是AppImage&#xff1f; AppImage是一种将应用程序打包为单…...

2024年12月大语言模型最新对比:GPT-4、Claude 3、文心一言等详细评测

前言 随着人工智能技术的快速发展&#xff0c;大语言模型(LLM)已经成为了技术领域最热门的话题。本文将详细对比目前主流的大语言模型&#xff0c;帮助大家选择最适合的工具。 一、OpenAI GPT系列 1. GPT-4 核心优势&#xff1a; 多模态理解能力强 逻辑推理能力出色 创造…...

上下位关系自动检测方法

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

Linux入门攻坚——40、Linux集群系统入门-lvs(1)

Cluster&#xff0c;集群&#xff0c;为了解决某个特定问题将多台计算机组合起来形成的单个系统。 这个单个集群系统可以扩展&#xff0c;系统扩展的方式&#xff1a;scale up&#xff0c;向上扩展&#xff0c;更换更好的主机&#xff1b;scale out&#xff0c;向外扩展&…...

结构篇| 浅析LLaMA网络架构

01 前言 LLaMA(Large Language Model Meta AI)是由Meta AI 发布的一个开放且高效的大型基础语言模型。为什么突然讲这个模型,主要LLaMA 已经成为了最受欢迎的开源大语言模型之一,LLaMA 系列模型在学术界和工业界引起了广泛的 关注,对于推动大语言模型技术的开源发展做出了…...

CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(不会)

通过网盘分享的文件&#xff1a;如果能重来.zip 链接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取码: 1111 --来自百度网盘超级会员v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…...

openEuler卸载 rpm安装的 redis

停止 Redis 服务 sudo systemctl stop redis禁用 Redis 服务 sudo systemctl disable redis 卸载 Redis 软件包 sudo yum remove redis查找并删除 Redis 的残留文件 find / -name red*删除 Redis 配置文件 删除 Redis 数据文件 sudo rm -rf /var/lib/redis检查 Redis 是否…...

xxl-job分布式任务调度

XXL-JOB是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 GitHub&#xff1a;https://github.com/xuxueli/xxl-job 码云&#xff1a;https://gitee.com/xuxue…...

flutter_quill如何设置Editor中的文字为富文本

比如一个场景 在输入框中&#xff0c;某某某 是一个颜色&#xff0c;其他文本是一个颜色 这里要注意 const QuillEditor({required this.controller,required this.focusNode,required this.scrollController,required this.scrollable,required this.padding,required this…...

shell语法(1)bash

shell是我们通过命令行与操作系统沟通的语言&#xff0c;是一种解释型语言 shell脚本可以直接在命令行中执行&#xff0c;也可以将一套逻辑组织成一个文件&#xff0c;方便复用 Linux系统中一般默认使用bash为脚本解释器 在Linux中创建一个.sh文件&#xff0c;例如vim test.sh…...

AgGrid 组件封装设计笔记:自定义 icon 以及每个 icon 的点击事件处理

文章目录 问题目前解决效果 v1思路 目前解决效果 v0思路 代码V1 问题 自己封装的 AgGrid 如何自定义传递 icon &#xff0c;以及点击事件的处理&#xff1f; 目前解决效果 v1 思路 目前解决效果 v0 思路 一张图片说明一下 代码 V1 父组件使用 <template><MyPageL…...

什么是TCP的三次握手

TCP&#xff08;传输控制协议&#xff09;的三次握手是一个用于在两个网络通信的计算机之间建立连接的过程。这个过程确保了双方都有能力接收和发送数据&#xff0c;并且初始化双方的序列号。以下是三次握手的详细步骤&#xff1a; 第一次握手&#xff08;SYN&#xff09;&…...

ElasticSearch学习记录

服务器操作系统版本&#xff1a;Ubuntu 24.04 Java版本&#xff1a;21 Spring Boot版本&#xff1a;3.3.5 如果打算用GUI&#xff0c;虚拟机安装Ubuntu 24.04&#xff0c;见 虚拟机安装Ubuntu 24.04及其常用软件(2024.7)_ubuntu24.04-CSDN博客文章浏览阅读6.6k次&#xff0…...

10.在 Vue 3 中使用 OpenLayers 加载引用 Stamen 地图(多种形式)

在 Web 地图开发中&#xff0c;OpenLayers 是一个非常强大且灵活的 JavaScript 库&#xff0c;它可以帮助我们加载各种地图层&#xff08;如 OpenStreetMap、Google Maps、Bing Maps 等&#xff09;。而 Stamen 地图是一个非常常见的地图样式&#xff0c;它提供了多种地图样式&…...

json与proto序列化,反序列化性能对比

1. 说proto快,必须知道他快多少?为什么快? 快多少? // 测试proto序列化和反序列化的性能func BenchmarkProtobufMarshal(b *testing.B) {// 创建一个 Request 对象req : &demo.Request{Ping: "ping",}// 测试序列化的性能b.ResetTimer()for i : 0; i < b…...

[Redis#14] 持久化 | RDB | bgsave | check-rdb | 灾备

目录 0.概述 持久化的策略 1 RDB 1.1 触发机制 1.2 流程说明 1.3 RDB 的优缺点 0.概述 在学习 MySQL 数据库时&#xff0c;我们了解到事务的四个核心特性&#xff1a;原子性、一致性、持久性和隔离性。这些特性确保了数据库操作的安全性和可靠性。当我们转向 Redis 时&a…...

ubuntu部署RocketMQ

Quick Start RocketMQ 下载 解压 把下载的文件解压重命名&#xff0c;放在想放的位置 需要提前配置JDK环境变量&#xff0c;或者直接在配置文件中指定JAVA_HOME 编辑 编辑 rocketmq/bin下的 runserver.sh 和runbroker.sh文件&#xff0c;把内存大小改小一点&#xff0c;因为…...

深入浅出:PHP中的变量与常量全解析

文章目录 引言理解变量普通变量赋值操作变量间赋值引用赋值取消引用 可变变量预定义变量 理解常量声明常量使用define()函数const关键字 使用常量预定义常量 扩展话题&#xff1a;作用域与生命周期实战案例总结与展望参考资料 引言 在编程的世界里&#xff0c;变量和常量是两种…...

概率论相关知识随记

作为基础知识的补充&#xff0c;随学随记&#xff0c;方便以后查阅。 概率论相关知识随记 期望&#xff08;Expectation&#xff09;期望的定义离散型随机变量的期望示例&#xff1a;掷骰子的期望 连续型随机变量的期望示例&#xff1a;均匀分布的期望 期望的性质线性性质期望的…...