- 博客(19)
- 收藏
- 关注
原创 C++ 锁机制
std::lock_guard 是一个封装类,它在构造时锁定互斥锁,在析构时解锁互斥锁,确保在任何情况下都能正确释放锁。C++ 中的锁主要用于多线程编程,以确保在并发环境下对共享资源的安全访问。std::unique_lock 比 std::lock_guard 更加灵活,支持手动加锁和解锁操作。std::shared_mutex 允许多个线程同时读取共享数据,但只允许一个线程写入。条件变量用于在线程间同步,通过等待特定条件的发生来控制线程的执行。是最基础的互斥锁,主要用于保护共享数据以防止数据竞争。
2024-06-19 14:43:56
313
原创 点云特征线提取(基于深度学习)
点云特征点是点云数据中的一种重要特征,主要用于对点云数据进行分析和描述。点云特征点可以用于识别点云数据中的关键形状和结构,并将其作为点云数据的代表性特征进行保存和传递。在现有的点云特征点提取算法中,基于特征属性的方法是最常见的一种,通过设定特征属性阈值提取特征点。此类方法能够有效提取到点云特征点,表现出色。但在多尺度的点云模型中,设置全局统一属性阈值,很难完全提取模型中的特征点,为进一步提取模型中潜在的特征点,往往还需要进一步的精细化参数设置,这种做法效率极低,且可能提取不完全。点云特征线。
2023-08-14 22:46:49
1806
6
原创 extern、extern “C“
在C/C++编程中,extern关键字用于声明一个变量或函数是在其他文件中定义的。它的作用是告诉编译器在当前文件中使用的变量或函数是在其他文件中定义的,这样编译器在编译时就不会为它们分配内存或生成相应的代码。return;// main.cpp # include // 此处没有引用file1的头文件 extern int i;// extern 变量 std :: cout
2023-08-04 10:50:47
171
1
转载 利用vs统计项目代码行数
此方法忽略了空行和注释。如果想统计所有行数,包括注释和空行的话,将正则改为 \n 即可。这里统计利用vs自带的搜索功能,利用其正则表达式完成代码行数统计。查找范围是整个解决方案。
2023-08-03 14:21:11
828
1
原创 C++作用域解析运算符在函数前带与不带的区别
在 C++ 中,命名空间是一种用于避免命名冲突和组织代码的机制。C++命名空间可以通过带双引号和不带双引号的方式来定义和使用。解析符前没有命名作用域表示会调用命名空间外的全局函数,而不带作用域解析符表示默认使用命名空间内的函数。上面的代码有何区别呢?不想看过程的直接跳转到文末。成员函数中调用了全局函数。指定使用全局命名空间中的。,使用作用域解析运算符。
2023-07-20 11:22:34
139
原创 边缘设备接入华为云并在线进行模拟设备测试
此案例以一个灯的开关控制为演示(嵌入式点灯工程师)总体流程1.创建产品1.1 访问华为云 IoT 管理控制台华为云官网进入设备接入服务选择“产品”->“IoT 物联网”->“设备接入 IoTDA”;点击免费试用确认控制台为北京四1.2 模型定义此处个人理解为对灯的属性和功能进行定义 产品->创建产品创建产品此时产品中出现刚创建的产品2.产品定义2.1 产品属性定义点击产品名称“LED_IOT”,进入产品详情页点击“模型定义”->“自
2022-02-19 16:11:26
5228
转载 点云的归一化与反归一化
归一化的作用:数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解点云的归一化:参考自pointnet的源码,增加了注释:def pc_normalize(pc): """ 对点云数据进行归一化 :param pc: 需要归一化的点云数据 :return: 归一化后的点云数据 """ # 求质心,也就是一个平移量,实际上就是求均值 centroid = np.mean(pc, axis=0) pc = pc - cen
2022-01-07 15:52:32
5750
1
原创 给点云添加噪声
神经网络样本增加噪声的原因:数据集只能代表真实数据分布的局部情况,除非数据集无限大(连续分布)或者包含所有可能的数据(离散分布),否则网络不能完全学习到数据的真实分布,所以不能完全覆盖到真实的所有数据分布,即过拟合到局部优化点。此时,数据扩增成为增加数据集的多样性的一个方法,也就能扩大网络拟合数据真实分布的能力,尽可能减小经验风险,增加泛化性能,从而在未见过的测试集上表现更好。而数据扩增的一个简单方式就是对已有的数据进行扰动加噪。添加高斯噪声:主要利用了numpy库np.random.normal(
2022-01-06 15:01:35
3991
1
原创 python 列表推导式
python 列表推导式求10不包含10以内的2的倍数的列表arr = [x for x in range(10) if x%2 == 0]print(arr)# 结果[0, 2, 4, 6, 8]
2021-05-03 19:54:01
101
原创 C++虚函数的作用
虚函数的作用:通过以下两个程序来进行解释!可以让成员函数操作一般化,用基类的指针指向不同的派生类的对象时, 基类指针调用其虚成员函数,则会调用其真正指向对象的成员函数, 而不是基类中定义的成员函数(只要派生类改写了该成员函数)。 若不是虚函数,则不管基类指针指向的哪个派生类对象,调用时都会调用基类中定义的那个函数。程序1(非虚函数):base.h#ifndef BASE_H#define BASE_H#include <iostream>using namespace std;
2020-07-12 11:37:03
388
原创 C语言----寻找数组最大值及其在数组中的位置
思路:假设第一个值就为最大值,然后遍历整个数组,并一一比较,若大于假设的值,则将大于假设的值赋值给最大值,最大值的下标则可根据判断语句得出。#include <stdio.h>#define N 10 //宏定义数组大小int main(){ int i; //控制循环 int index = 0; //最大值下标 int m...
2020-01-07 20:44:15
25011
13
原创 C语言----冒泡排序(升序)
思路:使用嵌套循环,内外环控制,外环控制循环长度,内环控制循环交换次序。其内环交换的过程就是不断找剩余数据组的最大值过程,使之其最大值依次倒叙放在新数组最后位的过程:本程序中给出10组数据排序,其排序过程如下:第一次循环,令第一个数据为最大值,遍历比较,最后放在最后位; 第二次循环,令第一个数据为最大值,在剩余的九个数据中排序,使之这九个数据的最大数放在这九个数据的最后位; ........
2020-01-07 20:08:22
328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人