激光雷达相关技术

news2024/12/27 3:28:38

一、参考资料

17篇点云处理综述-点云语义分割、点云物体检测、自动驾驶中的点云处理……

#三维视觉

#点云

3D点云数据标准

自动驾驶之心

自动驾驶之心-专栏

二、重要信息

1. 黑车检测难题

从2018年至今,高线数机械式激光雷达的测距能力一直停留在200米@10%反射率,似乎成为了905nm方案一个上限。

RoboSense(速腾聚创)在保证人眼安全的前提下,完成905nm激光雷达测距能力的突破,赋予RS-Ruby Plus 240米@10%标准反射率的超强测距能力(100,000Lux太阳光照环境下),整体测距性能比同类产品提高了20%以上。RS-Ruby Plus升级要点:200米→240米(@10%NIST标准反射率),大幅提升黑色车辆检测能力。

黑色车辆是典型的低反射率障碍物,对激光的回波强度低激光雷达扫描黑色车辆的点数明显少于相同距离下的白色车辆,是考验激光雷达测距能力的经典Corner Case(长尾问题)

假设有一款分辨率为0.125°x0.1°、测距能力为200米@10%反射率的激光雷达。当它检测200米处大小相同的白色和黑色车辆时,白色车辆会返回5-7个点,而黑色车辆则只有3-6个点,有些车漆特殊的黑色车辆甚至可能无法返回点。然而,主流的感知算法要能稳定检出并识别障碍物,一般至少需要5个点。

测距能力是激光雷达解决对黑车检测难题的关键

三、相关介绍

1. 点云

三维点云直接提供了三维空间数据,而图像则需要通过透视几何来反推三维数据。

2. 激光雷达类型

2.1 固态激光雷达

2.2 机械式激光雷达

2.3 静态激光雷达

在这里插入图片描述

3. 激光雷达重要参数

RoboSense(速腾聚创)
在这里插入图片描述

线数

128

激光波长

905nm

测距方式

脉冲式

测距能力

0.4m~240m(10% NITS标准反射率)

盲区

≤0.4m

最大测距采样速率

84KHz

最高扫描频率

50Hz

数据获取速度

32万点/秒

测距精度

Up to ±3cm(0.4~3米)

Up to ±2cm(3~240米)

水平视场角

360°

垂直视场角

30°(-15°,+15°)

水平角分辨率

[均衡模式] 0.2° / 0.4°(@10HZ)
[高性能模式] 0.1° / 0.2°(@10HZ)

垂直角分辨率

0.1° (104个通道,-6.51°~+3.81°)

垂直角度分辨率

激光安全等级

class1人眼安全

回波模式

单回波和双回波

出点数(单回波)

[均衡模式] ~2,304,000pts/s
[高性能模式] ~4,608,000pts/s

出点数(双回波)

[均衡模式] ~4,608,000pts/s
[高性能模式] ~9,216,000pts/s

转速

600/1200rpm (10/20Hz)

输出数据协议

UDP packets over Ethernet

UDP数据包内容

三维空间坐标、反射强度、时间戳等

车载以太网输出

1000M Base T1

工作电压

9 - 32V

工作温度

(-20°,65°)

产品功耗

[均衡模式] 27W
[高性能模式] 30W

存储温度

-40°C ~ +85°C

防护等级

IP67、IP6K9K

时间同步

$GPRMC with 1pps, PTP & gPTP

尺寸

φ125mm * H128 mm

重量 (不包含数据线)

~1.85 kg

4. 搭载激光雷达重点上市车型

在这里插入图片描述

四、Velodyne LiDAR

Velodyne LiDAR 官网

1. 公司简介

Velodyne成立于1983年,是一家位于加州硅谷的技术公司。Velodyne最早以音响业务起家,随后业务拓展至激光雷达等领域。2016年Velodyne将核心业务激光雷达部门剥离,成立新公司Velodyne LiDAR。2016年8月Velodyne公司发布公告称,旗下激光雷达公司Velodyne LiDAR获得百度与福特公司1.5亿美元的共同投资,三方将围绕无人驾驶领域展开全方位合作。

2. 相关产品

Velodyne LiDAR,作为激光雷达领域无可争议的领头羊,自2007年正式开始商业化生产,Velodyne LiDAR先后发布了7款激光雷达新品。这些产品通过在测量距离和精度上不断优化,以更好地满足自动驾驶大规模量产所需的高安全标准,正逐渐被认为是L3+自动驾驶汽车的“标配”。其中HDL-32、PUCK LITE、 PUCK Hi-Res、PACK 32MR、Alpha Puck、Puck、Ultra Puck等,都是目前自动驾驶领域最炙手可热的明星产品。

Velodyne Lidar 激光雷达产品专为高级驾驶辅助系统 (ADAS)、自动驾驶车辆、自主机器人、智慧城市基础设施、配送、工业等领域而设计,并提供灵活性、高质量和可靠性能,满足各行各业的需求。尤其在智能出行领域,Velodyne Lidar 能够赋能电动汽车和自动驾驶汽车,助力安全的自动化出行。此外,结合专利技术,合作伙伴及生产战略优势, Velodyne Lidar 将持续推动激光雷达的成本降低,致力为中国的自动化汽车市场带来高性价比的激光雷达解决方案。

Alpha Puck

Alpha Puck:世界上分辨率最高的激光雷达

Alpha Puck原名为VLS-128,是Velodyne LiDAR在2018 CES上发布的一款128线激光雷达。与Velodyne LiDAR 64线激光雷达HDL-64相比,Alpha Puck的探测距离是前者的3倍——达到300米。而除了探测距离更远,Alpha Puck的分辨率相较于上一代产品也更高,这使得其不仅可以直接用于物体检测,无需额外的传感器融合,而且还能够充分满足从低速到高速不同的自动驾驶场景,甚至包括其他传感器无法处理的Corner Case,从而确保自动驾驶车辆的驾乘安全性。

Puck

Puck:全球应用最广的激光雷达

该产品于2015年正式推出,具有体积小、测量精准、性能可靠、价格合理等多重优势,用于探测时可实现100米范围内的实时三维视图以及360度环视场景,是全球应用最广的一款激光雷达传感器——除了自动驾驶汽车,Puck还被广泛用于货运、3D制图、无人机、工业及机器人等多个领域。

五、KITTI数据集

KITTI 3D目标检测数据集解析(完整版)

KITTI-CARLA:由CARLA模拟器生成的类似KITTI的数据集

KITTI数据集下载及解析

1. 传感器配置

由于彩色相机成像过程中的拜耳阵列(Bayer Pattern)插值处理过程,彩色图像分辨率较低,而且对于光照敏感性不高,所以采集车配备了两组双目相机一组灰度的,一组彩色的。个人猜测为了增加相机的水平视场角,每个相机镜头前又各安装了一个光学镜头。

传感器类型详细信息
灰度相机2台140像素的PointGray Flea2灰度相机, FL2-14S3M-C
彩色相机2台140万像素PointGray Flea2彩色相机, FL2-14S3C-C
光学镜头4个Edmund光学镜头,焦距4mm,90°水平孔径,35°垂直孔径角
激光雷达1台Velodyne HDL-64E激光,扫描频率10Hz,64线,0.09°角度分辨率,2cm探测精度,每秒130万点数,探测距离120m
GPS/IMU惯导系统1个OXTS TR3003惯导,6轴,采集频率100Hz,L1/L2信号波段,0.02m和0.1°的精度

传感器车身排布如下图所示:
在这里插入图片描述

坐标系

  • camera: x = right, y = down, z = forward
  • velodyne: x = forward, y = left, z = up
  • GPS/IMU: x = forward, y = left, z = up
    在这里插入图片描述

2. 数据集解析

图片、激光点云、标注真值、标定参数通过图片序号一一对应。
在这里插入图片描述

2.1 image_2文件

image文件以8位PNG格式存储,图片如下:
在这里插入图片描述

2.2 label_2文件 [file]

3D框标注信息,即ground truth label信息。
在这里插入图片描述

label文件是KITTI中object的标签和评估数据,以“000001.txt”文件为例,包含样式如下:

Truck 0.00 0 -1.57 599.41 156.40 629.75 189.25 2.85 2.63 12.34 0.47 1.49 69.44 -1.56
Car 0.00 0 1.85 387.63 181.54 423.81 203.12 1.67 1.87 3.69 -16.53 2.39 58.49 1.57
Cyclist 0.00 3 -1.65 676.60 163.95 688.98 193.93 1.86 0.60 2.02 4.59 1.32 45.84 -1.55
DontCare -1 -1 -10 503.89 169.71 590.61 190.13 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 511.35 174.96 527.81 187.45 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 532.37 176.35 542.68 185.27 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 559.62 175.83 575.40 183.15 -1 -1 -1 -1000 -1000 -1000 -10

对每一帧点云数据, label是 n 个15维的向量, 组成了8个维度的信息。

字段单位含义样例
0Type-目标类别,总共有9类,分别是:Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram、Misc、DontCare。其中DontCare标签表示该区域没有被标注,比如由于目标物体距离激光雷达太远。Car
1Truncatedfloat目标截断程度,表示目标距离图像边界的程度0~1之间的浮点
从 0 (non-truncated) 到 1 (truncated)
2Occludedint目标遮挡程度0:完全可见
1:部分遮挡
2:大部分遮挡
3:未知
3Alpha弧度目标的观察角度,在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机z轴,此时物体方向与相机x轴的夹角[-pi, pi]
4:8bbox像素目标2D检测框位置,左上顶点右下顶点的坐标(712.40 143.00 810.73 307.92)
8:11Dimensions3D目标尺寸:高、宽、长(1.89 0.48 1.20)
11:14Location相机坐标系下,目标3D框的底面中心坐标(x, y, z)(1.84 1.47 8.41)
14Rotation_y弧度相机坐标系下,目标的方位角(空间方向),在照相机坐标系下,物体的全局方向角(物体前进方向与相机坐标系x轴的夹角)[-pi, pi]
  • 训练时主要用到的是类别信息(type) 和3d bbox 信息 (location, dimension, rotation_y).
  • 观测角(alpha)和旋转角(rotation_y)的区别和联系可以参考博客: KITTI 3D目标检测数据集解析(完整版)。
    在这里插入图片描述
目标的观察角度与方位角

2.3 velodyne文件

velodyne文件是激光雷达的测量数据(绕其垂直轴(逆时针)连续旋转),以“000001.bin”文件为例,内容如下:
在这里插入图片描述

7b14 4642 1058 b541 9643 0340 0000 0000
46b6 4542 1283 b641 3333 0340 0000 0000
4e62 4042 9643 b541 b072 0040 cdcc 4c3d
8340 3f42 08ac b541 3bdf ff3f 0000 0000
e550 4042 022b b841 9cc4 0040 0000 0000
10d8 4042 022b ba41 4c37 0140 0000 0000
3fb5 3a42 14ae b541 5a64 fb3f 0000 0000
7dbf 3942 2731 b641 be9f fa3f 8fc2 f53d
cd4c 3842 3f35 b641 4c37 f93f ec51 383e
dbf9 3742 a69b b641 c3f5 f83f ec51 383e
2586 3742 9a99 b741 fed4 f83f 1f85 6b3e
...
...
...

点云数据以浮点二进制文件格式存储,每行包含8个数据,每个数据由四位十六进制数表示(浮点数),每个数据通过空格隔开。一个点云数据由4个浮点数数据构成,分别表示点云的x、y、z、r(强度 or 反射值),点云的存储方式如下表所示:
在这里插入图片描述

2.4 calib文件

calib文件是相机、雷达、惯导等传感器的矫正数据。为了尽可能减少标定的系统误差,KITTI每天都会重新对传感器进行一次标定,因此每张图片都有一个对应的txt标定参数文件,以“000001.txt”文件为例,内容如下:

P0: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 0.000000000000e+00 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P1: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.875744000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 0.000000000000e+00
P2: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 4.485728000000e+01 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.163791000000e-01 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.745884000000e-03
P3: 7.215377000000e+02 0.000000000000e+00 6.095593000000e+02 -3.395242000000e+02 0.000000000000e+00 7.215377000000e+02 1.728540000000e+02 2.199936000000e+00 0.000000000000e+00 0.000000000000e+00 1.000000000000e+00 2.729905000000e-03
R0_rect: 9.999239000000e-01 9.837760000000e-03 -7.445048000000e-03 -9.869795000000e-03 9.999421000000e-01 -4.278459000000e-03 7.402527000000e-03 4.351614000000e-03 9.999631000000e-01
Tr_velo_to_cam: 7.533745000000e-03 -9.999714000000e-01 -6.166020000000e-04 -4.069766000000e-03 1.480249000000e-02 7.280733000000e-04 -9.998902000000e-01 -7.631618000000e-02 9.998621000000e-01 7.523790000000e-03 1.480755000000e-02 -2.717806000000e-01
Tr_imu_to_velo: 9.999976000000e-01 7.553071000000e-04 -2.035826000000e-03 -8.086759000000e-01 -7.854027000000e-04 9.998898000000e-01 -1.482298000000e-02 3.195559000000e-01 2.024406000000e-03 1.482454000000e-02 9.998881000000e-01 -7.997231000000e-01
参数名称含义
P0~P3( P r e c t ( i ) P^{(i)}_{rect} Prect(i)矫正后的相机投影矩阵( R 3 ∗ 4 R^{3*4} R34),0~3分别对应左侧灰度相机右侧灰度相机左侧彩色相机右侧彩色相机
R0_rect( P r e c t ( i ) P^{(i)}_{rect} Prect(i)矫正后的相机旋转矩阵( R 3 ∗ 3 R^{3*3} R33
Tr_velo_to_cam( T v e l o c a m T^{cam}_{velo} Tvelocam从激光雷达到相机的旋转平移矩阵( R 3 ∗ 4 R^{3*4} R34
Tr_imu_to_velo( T i m u v e l o T^{velo}_{imu} Timuvelo从惯导或GPS装置到激光雷达的旋转平移矩阵( R 3 ∗ 4 R^{3*4} R34

目标3D框到图像的投影

X = ( x , y , z , 1 ) T X=(x, y, z, 1)^T X=(x,y,z,1)T 到图像像素坐标系 Y = ( u , v , 1 ) T Y=(u, v, 1)^T Y=(u,v,1)T 的投影遵循:

Y = P r e c t ( i ) X Y=P^{(i)}_{rect}X Y=Prect(i)X

激光点云到图像的投影

如果要将激光雷达坐标系中的点 X = ( x , y , z , 1 ) T X=(x, y, z, 1)^T X=(x,y,z,1)T 投影到左侧的彩色图像(P2) Y = ( u , v , 1 ) T Y=(u, v, 1)^T Y=(u,v,1)T 中,可使用如下公式:

Y = P r e c t i R r e c t 0 T v e l o c a m X Y=P^{i}_{rect}R^{0}_{rect}T^{cam}_{velo}X Y=PrectiRrect0TvelocamX

其中 P r e c t i P^{i}_{rect} Precti 对应标定参数的 P 0 P_0 P0 ~ P 3 P3 P3,因为这里使用的是左侧彩色相机,所以用的是 P 2 P_2 P2 投影矩阵。另外, R r e c t 0 R^{0}_{rect} Rrect0 T v e l o c a m T^{cam}_{velo} Tvelocam 在标定文件中是 3x3的矩阵,在实际计算时,需要将该3x3的矩阵扩展为4x4的矩阵,方法为在第四行和第四列添加全为0的向量,并赋值 R r e c t 0 ( 3 , 3 ) = 1 , T v e l o c a m ( 3 , 3 ) = 1 R^{0}_{rect}(3, 3)=1,T^{cam}_{velo}(3, 3)=1 Rrect0(3,3)=1,Tvelocam(3,3)=1

Tr_velo_to_cam( T v e l o c a m T^{cam}_{velo} Tvelocam

在实际计算时,需要将该3x4的矩阵扩展为4x4的矩阵,方法为增加第四行向量[0,0,0,1]。这个矩阵其实包括了两个部分,其一是3x3的旋转矩阵,其二是1x3的平移向量

T v e l o c a m = ( R v e l o c a m t v e l o c a m 0 1 ) T^{cam}_{velo} = \left( \begin{array}{cc} R^{cam}_{velo} & t^{cam}_{velo} \\ 0 & 1 \end{array} \right) Tvelocam=(Rvelocam0tvelocam1)

R v e l o c a m ∈ R 3 ∗ 3 . . . r o t a t i o n m a t r i x : v e l o d y n e → c a m e R^{cam}_{velo} ∈ R^{3*3} ...rotation matrix : velodyne \rightarrow came RvelocamR33...rotationmatrix:velodynecame

t v e l o c a m ∈ R 3 ∗ 3 . . . t r a n s l a t i o n v e c t o r : v e l o d y n e → c a m e r a t^{cam}_{velo} ∈ R^{3*3}... translation vector : velodyne \rightarrow camera tvelocamR33...translationvector:velodynecamera

3. 解析激光点云

激光点云数据采用二进制存储,逐点保存,每个激光点对应4个float数据( x , y , z , r ) (x,y,z,r)(x,y,z,r),依次解析即可,python解析代码如下:

import numpy as np
import struct

def read_lidar_info(file_path):
    size = os.path.getsize(file_path)
    point_num = int(size / 16)
    assert point_num * 16 == size

    lidar_pt_list = np.zeros((point_num, 4), np.float)
    with open(file_path, 'rb') as f:
        for i in range(point_num * 4):
            data = f.read(4)
            val = struct.unpack('f', data)
            row = int(i / 4)
            col = i % 4
            lidar_pt_list[row][col] = val[0]
    lidar_pt_list = lidar_pt_list.transpose()

    return lidar_pt_list

4. AOS(average orientation similarity)

关于KITTI的AOS的计算,参考官方这篇论文:Are we ready for Autonomous Driving?The KITTI Vision Benchmark Suite。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fastjson 1.83漏洞利用猜想

0x00 前言 这篇是去年五月发到i春秋的~ 在不久前fastjson<1.2.83又爆出来了新的问题,详细内容可以参考 https://github.com/alibaba/fastjson/wiki/security_update_20220523,这篇文章主要是抛转引玉,写一种可能的利用思路,详细的利用链可能要等大佬们来给出了。 文内…

【LeetCode】动态规划总结

动态规划解决的问题 动态规划和贪心的区别&#xff1a; 动态规划是由前一个状态推导出来的&#xff1b; 贪心是局部直接选最优的。 动态规划解题步骤 状态定义&#xff1a;确定dp数组以及下标的含义状态转移方程&#xff1a;确定递推公式初始条件&#xff1a;dp如何初始化遍历…

java学习记录day7

类与对象 对象数组与管理 对象数组就是数组里的每个元素都是对象&#xff1a;House[] home new House[10];使用对象数组实现多个House的管理。 拓展:数组的扩充: 扩充原来数组的一半&#xff1a; public void add(House[] home){int newLen home.length*3/21;home Array…

ARM uboot源码分析3-启动第一阶段

一、start.S 解析7 总结回顾&#xff1a;lowlevel_init.S 中总共做了哪些事情&#xff1a; 检查复位状态、IO 恢复、关看门狗、开发板供电锁存、时钟初始化、DDR 初始化、串口初始化并打印 ‘O’、tzpc 初始化、打印 ‘K’。 其中值得关注的&#xff1a;关看门狗、开发板供电锁…

计算机网络1:Tcp三次握手和四次挥手

一、TCP传输的过程-三次握手 1.建立连接并确认连接&#xff08;三次握手&#xff09; ** 过程&#xff1a; ** &#xff08;1&#xff09;客户端向服务端发出连接请求SYN1&#xff0c;seqx&#xff0c;等待服务端响应.状态由CLOSED转为SYN_SENT &#xff08;2&#xff09;服务…

升级到https

现在很多站长都会考虑将自己的站点从http升级到https&#xff0c;不仅是基于安全的考虑&#xff0c;有的也是因为第三方平台的限制&#xff0c;如谷歌浏览器会将http站点标记为不安全的站点&#xff0c;微信平台要求接入的微信小程序必须使用https等。 那如何将一个http站点升…

C++006-C++分支结构练习题

文章目录C006-C分支结构练习题案例练习题目描述 有一门课不及格的学生题目描述 分段函数题目描述 骑车与走路在线练习&#xff1a;总结C006-C分支结构练习题 在线练习&#xff1a; http://noi.openjudge.cn/ch0104/ https://www.luogu.com.cn/ 案例练习 参考&#xff1a;http…

春招Leetcode刷题日记-D1-贪心算法-分配问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 D1-贪心算法-分配问题何为贪心力扣455. 分发饼干思路代码何为贪心 1、顾名思义&#xff0c;贪心算法采用贪心的策略&#xff0c;保证每次操作都是局部最优的&#xff0c;从而…

神经网络损失函数分布可视化神器

论文名称和地址&#xff1a;Visualizing the Loss Landscape of Neural Netshttps://arxiv.org/pdf/1712.09913.pdf1.1 背景和动机作者主要想研究几个问题&#xff1a;为什么我们能够最小化高度非凸神经损失函数&#xff1f;为什么得到的最小值这个结果具有泛化性&#xff1f;不…

【C语言进阶】预处理与程序环境

目录一.详解编译与链接1.前言2.翻译环境3.剖析编译过程4.运行环境二.预处理详解1.预定义符号2.剖析#define(1).定义标识符(2).定义宏(3).替换规则(4).#和##(5).宏与函数的对比(6).#undef3.条件编译4.文件包含(1).头文件包含的方式(2).嵌套文件包含一.详解编译与链接 1.前言 在…

《流浪地球2》的现实倒影(三):从脑机接口到数字永生

是人&#xff0c;就会死。这个事实听起来或许很悲哀&#xff0c;但电影《流浪地球2》在一开始&#xff0c;就给出了另一种可能性——疯狂科学家进行数字生命实验&#xff0c;通过连接大脑的电极片&#xff0c;将思维意识上传到计算机&#xff0c;从而让人永生。电影开头的这位印…

《Keras深度学习:入门、实战与进阶》CIFAR-10图像识别

本文摘自《Keras深度学习&#xff1a;入门、实战与进阶》。 https://item.jd.com/10038325202263.html 这个数据集由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集整理&#xff0c;共包含了60000张3232的彩色图像&#xff0c;50000张用于训练模型、10000张用于评估模型。…

JUC并发编程学习笔记(一)——知识补充(Threadlocal和引用类型)

强引用、弱引用、软引用、虚引用 Java执行 GC(垃圾回收)判断对象是否存活有两种方式&#xff0c;分别是引用计数法和引用链法(可达性分析法)。 **引用计数&#xff1a;**Java堆中给每个对象都有一个引用计数器&#xff0c;每当某个对象在其它地方被引用时&#xff0c;该对象的…

文献阅读:Scaling Instruction-Finetuned Language Models

文献阅读&#xff1a;Scaling Instruction-Finetuned Language Models 1. 文章简介2. 实验 1. 数据集 & 模型 1. 数据集考察2. 使用模型 2. scale up对模型效果的影响3. CoT对模型效果的影响4. 不同模型下Flan的影响5. 开放接口人工标注指标 3. 结论 文献链接&#xff1a;…

【C++】类和对象(一)

目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1、访问限定符4.2、封装五、类的作用域六、类的实例化七、类对象的大小八、this指针8.1、this指针的引出8.2、this指针的特性8.3、C语言和C实现Stack的对比一、面向过程和面向对象初步认…

XSS漏洞,通过XSS实现网页挂马

**今天讲下通过XSS实现网页挂马~*&#xff0c;目的是了解安全方面知识&#xff0c;提升生活网络中辨别度 原理&#xff1a; 实验分为两部分&#xff1a; 1、通过Kali linux&#xff0c;利用MS14_064漏洞&#xff0c;制作一个木马服务器。存在该漏洞的用户一旦通过浏览器访问木…

C语言(C文件处理函数和文件指针)

C语言有很多文件操作函数&#xff0c;这里我们挑了一些重要的开始讲&#xff0c;首先说下这些函数都定义在stdio.h头文件中 目录 一.文件指针 二.文件处理函数 1.fopen&#xff08;打开文件&#xff09; 2.fclose(关闭文件) 3.getc和putc(从文件指针读取字符) 4.I/O工作…

「C++控制台生存游戏」暗黑体素 DarkVoxel 控制台版

“《只有作者能看懂的一款游戏》” 刚进高中前开始写的一款抽象的生存游戏 BUG很多请见谅 ###【点击此处&#xff0c;免费畅玩】### 类似泰拉瑞亚的一款游戏 『暗黑体素 DarkVoxel』 直接上图&#xff01; 用控制台写出如此奇葩的生存游戏&#xff0c;可谓世间少有。 操作…

2022黑马Redis跟学笔记.实战篇(二)

2022黑马Redis跟学笔记.实战篇 二实战篇Redis开篇导读4.1短信登录4.1.1. 搭建黑马点评项目一、导入黑马点评项目二、导入SQL三、有关当前模型四、导入后端项目相关依赖配置redis和mysql连接项目组成概述关闭Linux防火墙五、导入前端工程六、 运行前端项目4.1.2. 基于Session实现…

选购交换机的参数依据和主要的参数指标详解

如何选购交换机&#xff1f;用什么交换机&#xff1f;在选购交换机时交换机的优劣无疑十分的重要&#xff0c;而交换机的优劣要从总体构架、性能和功能三方面入手。交换机选购时。性能方面除了要满足RFC2544建议的基本标准&#xff0c;即吞吐量、时延、丢包率外&#xff0c;随着…