- 博客(50)
- 收藏
- 关注
原创 ubuntu在代码中添加异常信号捕获防止异常退出(可用于多线程程序)
而这些异常又不能够被try catch捕获到,因此在某些特殊应用中,需要进行异常信号的捕获,如SIGSEGV信号、SIGABRT 信号。这些异常信号的捕获在单线程中往往很容易实现,但在复杂的项目中往往需要多个线程,若想实现单个线程只捕获自己线程内的异常,并继续处理的功能,需要对信号进行分隔开,防止串线程,导致程序的意外退出。上述代码分别在两个线程中捕获了各自线程的异常信号,并在捕获到异常时,程序的运行跳转到指定的位置,即setupSignalHandlerThread1();函数位置,进行继续运行。
2024-07-17 11:40:33
154
原创 概率论学习-笔记1
比如,我们向上抛一枚硬币,硬币落下后哪一面朝上是偶然的,但当我们上抛硬币的次数足够多后,达到上万次甚至几十万几百万次以后,我们就会发现,硬币每一面向上的次数约占总次数的二分之一,亦即偶然之中包含着必然。在统计学中,“似然性”和“概率”(或然性)有明确的区分:概率,用于在已知一些参数的情况下,预测接下来在观测上所得到的结果;通常,事件A在事件B已发生的条件下发生的概率,与事件B在事件A已发生的条件下发生的概率是不一样的。然而,这两者是有确定的关系的,贝叶斯定理就是这种关系的陈述。
2024-05-10 10:48:50
410
原创 c++代码中的交互信息处理(多种表的处理如何优雅实现)
对于接收不同表名的交互信息处理方式,可以考虑使用面向对象的设计模式,将不同的处理逻辑封装成不同的类,以提高代码的可维护性和可扩展性。以下是一种可能的优化方案:2.派生具体类:针对不同的表名,创建具体的处理类,继承自接口,并实现其特定的处理逻辑。3.使用工厂模式:为了根据表名动态创建对应的处理对象,可以使用工厂模式。4.处理消息:在接收到消息后,解析出表名,并根据表名使用工厂模式创建对应的处理对象,然后调用其处理方法。这种设计模式将不同表名的处理逻辑封装到不同的类中,使得代码更加清晰和易于扩展。
2024-05-09 15:04:08
463
原创 ubuntu系统c++中.cpp文件调用 .cu文件中的函数实现方式
【代码】ubuntu系统c++中.cpp文件调用 .cu文件中的函数实现方式。
2023-12-22 09:15:41
667
原创 c++接口类理解
只有纯虚函数 (”=0”) 和静态函数 (除了下文提到的析构函数).没有非静态数据成员.没有定义任何构造函数. 如果有, 也不能带有参数, 并且必须为 protected.如果它是一个子类, 也只能从满足上述条件并以 Interface 为后缀的类继承.接口类不能被直接实例化, 因为它声明了纯虚函数. 为确保接口类的所有实现可被正确销毁, 必须为之声明虚析构函数.
2023-06-27 20:38:37
626
原创 ubuntu18.04 安装PCL1.8.1
3.metslib-0.5.3安装: 执行命令:wget https://www.coin-or.org/download/source/metslib/metslib-0.5.3.tgz。7.安装VTK7.1.1:首先安装qt,按照这个教程:https://blog.csdn.net/maizousidemao/article/details/104150872。3.安装lz4: git clone https://github.com/lz4/lz4.git;4.安装flann:cd flann;
2023-06-27 14:55:58
611
原创 git安装及使用常用命令
在项目页面上选择克隆,复制使用ssh或https的url,在计算机上打开终端,输入git clone 并将url粘贴在后面,例如:git clone http://192.168.0.112:1080/cxy/cxy_lidar_pcl.git。Windows:官网下载地址:https://gitforwindows.org/,也可以用国内镜像:https://npm.taobao.org/mirrors/git-for-windows/。
2023-03-18 12:10:59
527
原创 ubuntu 18.04安装nvidia驱动后,电脑开机失败
在nvidia 官网 https://www.nvidia.com/Download/index.aspx[添加链接描述]下载显卡驱动,并安装成功后重启电脑发现电脑重启失败,进不了电脑界面。(https://www.nvidia.com/Download/index.aspx)
2022-05-31 19:33:38
1883
原创 CMakeLists.txt中相关指令和含义
语法格式:指令(参数1 参数2 …)参数使用括号括起来参数之间使用空格或分号分开指令大小写无关,参数和变量大小写有影响重要指令1.cmake_minimum_required:指定Cmake的最小版本要求;# CMake最小版本要求为2.8.3cmake_minimum_required(VERSION 2.8.3)2.project:定义工程名称,并且可以指定支持的语言;# 指定工程名称为***project(***)3.set:显式的定义变量;# 定义SRC变量,其值为say
2022-04-14 17:22:00
233
原创 docker安装及使用,常用命令总结
1.安装参考官方教程:https://docs.docker.com/engine/install/ubuntu/有三种安装方法:Install using the repository、Install from a package、Install using the convenience script(1)推荐使用:Install from a package到 https://download.docker.com/linux/ubuntu/dists/,选择你想要安装的Ubuntu 版本,
2022-04-07 08:47:00
1216
原创 PCL编译完成后找不到库
使用执行命令L g++ -std=c++14 -I/usr/local/include/pcl-1.8 -I/usr/local/include/eigen3 main.cpp -o test111其中 -std=c++14表示使用C++14标准,-I/usr/local/include/pcl-1.8为我电脑上的pcl库路径,-I/usr/local/include/eigen3为我电脑上的eigen3库路径。main.cpp 可以换成你的cpp文件,test111换成你想取的名称即可。在Cmake
2022-04-06 09:51:57
2241
4
原创 C++判断文件是否存在
#include <iostream>using namespace std;/// 判断文件是否存在int main(){ string dirPath; dirPath="/home/XXX/.txt"; //你的路径 什么类型的文件都可以 // 进行判断 ifstream txt_file(dirPath); if (!txt_file) { continue; // 如果没有文件,选择跳过或其他的操
2022-03-30 20:10:12
1295
原创 C++函数返回多个值:结构体、tuple
C++函数一般可以返回一个值,但是在使用中常常需要一个函数返回多个值,因此可以使用结构体或tuple来进行实现。1.使用结构体返回多个值实现步骤:1.先定义一个结构体2.准备我们要实现的函数(需要返回多个值)3.在要实现的函数内调用结构体返回多个值4.使用函数返回结果代码示例:////step 1 :定义结构体 ////struct PointStruct{ float without_floor; int only_floor;};首先定义一个结构体,我们命名为
2022-03-30 19:57:01
3498
原创 ubuntu 18.04 docker 安装
docker 官网:https://docs.docker.com/engine/install/ubuntu/(1)按照官网安装教程:我选择的是Install from a package安装方法。首先到网址:https://download.docker.com/linux/ubuntu/dists/下载对应的版本,进入目录:pool/stable/下选取适合你系统的.deb文件;(2)接着到下载好的.deb文件目录下:执行命令: sudo dpkg -i package.deb (改为你的
2022-03-23 14:04:31
1488
原创 DBNet学习笔记
1.网络结构:1.网络流程:输入一张图片,经过卷积操作-> 1/2 -> 1/4 -> 1/8 ->1/16 ->1/32进行特征的提取,然后进行上采样操作,上采样的过程是把1/32的特征通过插值进行上采样到原图的1/16,然后将上采样后的1/16与前一步骤的1/16特征进行相加,得到一个是原图1/8的特征图,再与1/8的特征图进行相加,得到一个1/4的特征图,再对输出的四个特征图分别上采样到一样大小,进行一个concat操作,concat后的特征为原图的1/4,再对这样
2022-01-14 23:40:12
2343
原创 linux安装tailf 命令
1.复制如下代码到一个新建的tailf.c文件里。/* tailf.c -- tail a log file and then follow it * Created: Tue Jan 9 15:49:21 1996 by faith@acm.org * Copyright 1996, 2003 Rickard E. Faith (faith@acm.org) * * Permission is hereby granted, free of charge, to any person
2021-07-27 09:12:18
2053
原创 Python 对象、类、实例的联系与区别
Python 中的对象、类、实例本文讲述Python 中对象、类、实例的联系与区别 来源:笨办法学 Python (Learn Python The Hard Way)作者:Zed Shaw(如有侵权,请联系我!)有一个重要的概念需要弄明白,那就是“类(class)”和“对象(object)”的区别。问题在于,class 和 object 并没有真正的不同。它们其实是同样的东西,只是在不同的时间名字不同罢了。我用禅语来解释一下吧:鱼和泥鳅有什么区别?这个问题有没有让你有点晕呢?说真的,坐下来想一分
2021-04-07 17:28:47
611
原创 CTC loss原理详解大全
ctc本质是损失函数,在我的学习过程中浏览了一些博客,下面整理了一些写的较好、较详细的:1.过程详细,全英文2.博主参照原文讲解的3.有伪代码,帮助理解4.中文解释,详细5.原文:必读...
2021-02-19 13:50:45
1774
原创 docker 服务与调用
docker file:ROM tensorflow1.14_python3.5_20210111:latesttensorflow1.14_python3.5_20210111:latest为镜像名docker-compose.yml文件:最后一个端口号7713与服务中的config保持一致,调用时用到。services下面的generalocr1-generalocr4表示用了四个服务实例,每个实例下的镜像名为同一个,容器名和端口号不能重复。nginx.conf文件:只需要更改 u
2021-01-12 16:08:03
859
原创 从源代码构建python版tensorflow
1.官网链接源码构建tensorflow官网为什么要源码编译: 直接安装的tensorflow 包是没有avx优化的,如果需要提升性能,加快计算速度,建议源码编译。2.构建流程2.1准备首先确定源码编译的配置:系统:Linux、Windows还是Mac;Python版本;支持GPU还是不支持GPU;Tensorflow版本;确定了这些,就可以根据下表来确定GCC、G++版本(gcc与g++版本一致)及Bazel工具版本。我安装的是tensorflow1.14 、baze
2021-01-12 14:46:05
608
原创 力扣题目训练:605-种花问题
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/can-place-flowers示例1:输入:flo
2021-01-04 22:56:28
356
原创 百度style-text生成数据问题
Style-Text:1.原图:2.输入文字:牛首山谷里收费站3.生成图:前四个文字:“牛首山谷” 生成效果较好,但后面的文字生成效果差。
2020-12-21 12:22:49
257
原创 空间平面的旋转与位移
1.1空间平面的表达式:在空间中,任意一个平面可以用:Ax+By+Cz+D=0进行表示,其法向量为:(A,B,C)。1.2当要旋转空间平面时,首先要得到旋转矩阵:根据以上旋转矩阵,我们可以对空间平面以任意方向轴为中心进行旋转。1.3求旋转角:已知平面的法向量为:(A,B,C),假设所绕的旋转轴方向为(x,y,z),那么它们的夹角余弦为:根据旋转角和旋转矩阵,就可以对任意平面进行旋转了!参考维基百科...
2020-11-07 23:56:29
6471
原创 python 字典更改
1.字典特性:查找快、无顺序,不可通过索引查找字典元素1.1根据字典的键查找值:方法1:a={'rect':[1,2,3],'string':'this is python','score':95}b=a.get('string') print(b)>>>output:'this is python'方法2:a={'rect':[1,2,3],'string':'this is python','score':95}b=a['string']print(b)&g
2020-11-04 23:07:15
3264
原创 图像处理:python3 opencv 给字的周围添加轮廓,随机字符间距
1.实现给文字周围添加轮廓步骤:1.1采用pillow写字:新建一个空白画布,写入文字,可实现随机字符间距#先获得写好文字的图片def text_image_draw(text,font_color,font_path,font_size): #text:文字内容 #font_color:文字颜色 #font_path:字体路径 #font_size:字体大小:int font= ImageFont.truetype(font_path,font_size ) text_w,
2020-11-01 23:18:23
1107
原创 python学习笔记 迭代
1.python中的可迭代对象列表、元组、字典、集合、字符串可迭代对象的判断:#通过collections模块的Iterable类型进行判断from collections import Iterableisinstance('slam',Iterable)>>> output:True L=[1,2,3]isinstance(L,Iterable)>>> output:True 2.迭代通过for循环遍历可迭代对象,这种遍历称为迭代(it
2020-10-29 20:33:19
116
原创 python学习笔记:函数
1.函数的参数位置参数、默认参数、可变参数、关键字参数、命名关键字参数1.1位置参数:我们常用的、最普通的参数,如想要获得字典a中的键,定义一个函数如下:def get_name(a): name_list=[] #定义一个空列表,用来存放元素 for name in a.keys() : #获得字典中的键 name_list.append(name) #键添加到列表中 print(name_list) return name_listif
2020-10-28 22:33:42
163
原创 python 学习笔记
1.编码问题一个中文字符经过utf-8编码后占3个字节,一个英文字符只占用1个字节。为了避免乱码问题,在操作字符串时,应始终坚持使用UTF-8编码进行str和bytes转换。2.格式化方法1:占位符 替换内容%d 整数%f 浮点数%s 字符串%x 十六进制整数示例:print('hello,%s is %d years old'. %('xiaoming',18))>>>hello,xiaoming is 18 years
2020-10-26 22:37:26
98
原创 栈的应用-处理四则运算-后缀表达式
栈的应用-处理四则运算-后缀表达式什么是后缀表达式,正常的四则运算表达式,如:9 + (3 - 1) * 3 + 10 / 2这样的四则运算表达式称为中缀表达式,因为运算符号都在两个数字的中间。后缀表达式则是:9 3 1 - 3 * + 10 2 / +运算符号在将要运算的数字后面。规则:从左到右遍历表达式的每个数字和运算符,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进...
2019-10-30 21:23:17
399
原创 算法的时间复杂度
算法的时间复杂度定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作时间复杂度,其中f(n)是问题规模n的某个函数。用大写O( )来体现算法时间复杂度。一般,T(n)增长最慢的算法称为最优算法。常见的时间复杂度有这样几种:常数阶...
2019-10-29 10:38:42
279
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人