
编程
Kevin_Xie86
这个作者很懒,什么都没留下…
展开
-
滞回区间作用及伪代码
假设有一个功能,当某个值val超过阈值threshold == 10时起作用。原创 2022-12-16 10:36:12 · 1978 阅读 · 0 评论 -
std::cout、printf 和 RCLCPP_INFO的对比
typedef 重新定义数据格式后,std::cout是不能正常输出显示的,必须用printf()才能输出uint8_t类型的数据值,需要标明数据的类型。ROS2自带的log输出,分等级,带颜色,输出格式与printf相同,需要标明数据的类型。自带,不用标明数据的类型,可以直接输出,不过只能输出几种基本格式的数据。原创 2022-09-11 16:16:35 · 3853 阅读 · 0 评论 -
Ubuntu20.04使用Jupyter Notebook
即可在新建的文件里按照python格式写代码,并马上实时运行显示结果。写完代码后,点击“保存”即可。在右上角点击“新建”,选择。在出现的页面中选择文件。可以右键点击文件,选择。会自动打开一个页面。...原创 2022-08-28 15:19:26 · 1838 阅读 · 0 评论 -
C++多项式拟合
根据拟合出的函数方程系数,测试数据。该多项式基于Eigen库进行求解。根据原始数据进行多项式拟合。原创 2022-08-28 13:11:57 · 2265 阅读 · 0 评论 -
python的多线程使用
Python3中官方才正式提供线程池,而且线程不是开的越多越好,开的多了可能会导致系统的性能更低。**结论:**主线程结束后,无论子线程1,2是否运行完成,都结束线程,不再继续向下运行。当不开启守护进程时,主程序将一直等待子程序全部运行完成才结束。**注意:**如果要设置为守护线程,一定要在开启线程之前(**结论:**主线程等待50个子线程全部执行完成才结束。),主线程执行完自己的任务后,就退出了,此时。,设置子线程为守护线程,实现主程序结束,),将该线程设置为守护线程。 Python多线程。原创 2022-08-22 16:39:06 · 2987 阅读 · 2 评论 -
C++ 多线程thread
不同平台的多线程API, 比如unix下有pthread,,win下有_beginthreadex()。std::thread是属于C++自带的多线程接口,还有boost::blind也是C++自带的多线程接口boost是C++的测试版本,许多C++的新特性会在这里测试,待时机成熟后悔合并到C++中。boost的C++特性也是稳定的,但不是C++自带,需要编译成库引用。可联结:当线程己运行或可运行、或处于阻塞时是可联结的。注意。...原创 2022-08-14 17:25:14 · 646 阅读 · 0 评论 -
C++分别使用std::chrono和clock()计算时间间隔
c++计算时间间隔原创 2022-07-18 19:12:55 · 2777 阅读 · 0 评论 -
C++调用Matplotlibcpp进行画图
matplotlibcpp包,是一个利用C++实现的调用Python接口和Matplotlib实现绘图的工具包。github网址。配置python需要的环境3、使用在中添加并且将matplotlibcpp.h 文件添加到头文件目录即可。图像会保存下来,没有显示,需要才会显示图像。注意:这个画图会占用线程,如果想边执行程序边画图,最好开多线程,否则程序会卡在画图这,不会往后执行。...原创 2022-07-09 13:17:43 · 11585 阅读 · 3 评论 -
undefined reference to symbol ‘dlsym@@GLIBC_2.17‘和/libdl.so.2: error adding symbols: DSO missing
1、错误如下:/aarch64-imx8mm-linux-gnu/bin/ld: undefined reference to symbol 'dlsym@@GLIBC_2.17'以及:/aarch64-imx8mm-linux-gnu/sysroot/lib64/libdl.so.2: error adding symbols: DSO missing from command line2、解决办法:在CMakeList.txt 中添加:target_link_libraries(x原创 2021-12-07 20:15:24 · 6798 阅读 · 0 评论 -
win10安装python2.7.10和python3,并在pycharm配置使用
1、安装python3首先安装python3,这部分可以参考博文 如何在win10上同时安装python2和python3主要就是去官网下载安装文件,安装后注意看有没有添加到环境变量,如果没有则手动添加py3到环境变量。2、安装python2.7.102.1 小bug我这个部分有点小问题。上面的博文是安装python2.7.15,然而我使用该安装文件,先是路径无法选择,而且安装好python2.7.15后,其安装文件夹目录中没有Scripts子文件夹,这导致无法使用pip工具。各种倒腾弄Scr原创 2021-10-20 09:42:27 · 4359 阅读 · 0 评论 -
c++ & python 工厂模式
简单工厂模式简单工厂模式有一个工厂,可以生产多个产品,包含两个接口,一个是产品类的,一个是工厂类的。产品类需要有一个基类,基类中的具体产品实现需要是个纯虚函数,这样一来,产品的子类必须要重写具体的产品实现,实现不同的功能。产品类封装完成后,还需要一个工厂类,工厂类对产品类再次封装,最终实现由一个工厂对象决定创建出哪一种产品类的实例。1、c++版本//简单工厂模式#include<iostream>using namespace std;//产品的基类class Product原创 2021-09-01 02:05:01 · 186 阅读 · 0 评论 -
vscode配置C++ Google style 并保存时自动调整
setting.json{ "editor.fontSize": 16, "emmet.excludeLanguages": [ "markdown" ], // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": true, // // 重新设定tabsize "editor.tabSize": 4, // #每次保存的时候自动格式化 "edito原创 2021-07-25 17:06:45 · 3568 阅读 · 0 评论 -
数据结构--冒泡排序
#coding:utf-8def BubbleSort(list_): for i in range(len(list_)-1): j = len(list_)-1 while j > 0 : if list_[j] < list_[j-1]: temp = list_[j-1] list_[j-1] = list_[j] list_[原创 2021-06-23 15:41:43 · 1655 阅读 · 0 评论 -
Eigen库简单使用
1、基础Eigen中所有向量和矩阵都是Eigen::Matrix,它是一个模板类。它的前三个参数为数据类型、行、列,如声明一个2x3的float矩阵:Matrix<float,2,3> M_23;1.1 矩阵矩阵声明Eigen::Matrix<type,n,m> M_nm;//如果不记得分类的模板,直接用这个总的模板Eigen::Matrix3d M_33;//3x3矩阵,元素类型为doubleEigen::Matrix2d M_22;//2x2矩阵Eigen::原创 2021-03-24 20:15:49 · 1712 阅读 · 0 评论 -
ROS时间戳函数和输出显示
double t = msg->header.stamp.toSec()//把时间戳转化成浮点型格式pringf("time:%f\n",t);//输出显示PS: printf()格式%d 有符号十进制整数%f 浮点数(包括float和double)%s 字符串[.精度]// 如: pringf("time:%.6f\n",t)表示小数点右边6位...原创 2021-01-18 11:22:13 · 5551 阅读 · 2 评论 -
numpy cumsum函数简介
函数原型:numpy.cumsum(a, axis=None, dtype=None, out=None)可参考链接:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.cumsum.html查看各个参数的含义。函数作用:求数组的所有元素的累计和,可通过参数axis指定求某个轴向的统计值。这里所说的轴可按照下图的含义理解:下面举例进行说明:(1)不指定axis参数1 >>> a = np.array转载 2020-12-09 14:24:27 · 1517 阅读 · 0 评论 -
C++ 左移<< 右移>>作用
左移<<首先理解二进制计算。如:101;// 2²+2⁰=5111;// 2²+2¹+2⁰=7由上可见,二进制的计算就是:从第0位开始,第n位是1值,则2ⁿ,并计和。如果左移2位:10100;// 2⁴+2²=(2²+2⁰)2²11100;// 2⁴+2³+2²=(2²+2¹+2⁰)2²由此可见,左移是乘法,左移n位,则*2ⁿ。同理,右移是除法。...原创 2020-11-06 10:36:07 · 1611 阅读 · 0 评论 -
C++ 关于while(i--)和while(--i)的理解
#include <iostream>using namespace std;int main(){ int i = 3; while(i--)//先取值后减 { cout << i << " ";//输出2 1 0 } cout << endl; i = 3; while(--i)//先减后取值 { cout << i << " ";//输出2 1 } cout << endl原创 2020-09-21 11:53:50 · 5673 阅读 · 0 评论 -
python Ctrl+C退出程序
python如果用了多线程,想用Ctrl+C退出程序,退出后可能会有报错或者退出响应比较慢。那么import signal模块,可以更好实现退出功能。import osimport signaldef CtrlC(): os._exit(0)def multiThread(): #...def main(): #... if __name__ == '__main__': try: signal.signal(signal.SIGINT, CtrlC原创 2020-06-15 17:42:26 · 4397 阅读 · 1 评论 -
Ubuntu glog 0.3.5安装
可从官网git下载,也可以用百度云链接,提取码: eq43.cd glog_mastermkdir build cd build cmake ..make ..sudo make install原创 2020-03-20 16:04:33 · 780 阅读 · 0 评论 -
Markdown打出单边大括号
左边$$ 程序=\left\{\begin{matrix} 数据结构 \\ 算法 \end{matrix}\right.$$程序={数据结构算法 程序=\left\{\begin{matrix} 数据结构 \\ 算法 \end{matrix}\right.程序={数据结构算法右边$$ 程序=\left.\begin{matrix} 数据结构 \\ 算法 ...原创 2020-03-07 14:43:28 · 21394 阅读 · 3 评论 -
Python模块导入之import和__init__.py
1、import和from…improt1.1、import :导入一个模块,(相当于导入的是一个文件夹,是个相对路径);from…import:导入了一个模块中的一个函数(相当于导入的是一个文件夹中的文件,是个绝对路径)。1.2、使用方法与差异example模块:example.py: def print_func( val ): print "Hello : ...原创 2020-02-25 15:10:04 · 5779 阅读 · 0 评论 -
CMake基本使用
0、指令是大小写无关的,参数和变量是大小写相关的。1、set()指令set(var [value]),用来显式的定义变量2、add_subdirectory()add_subdirectory(source_dir [binary_dir]),用于向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置。3、添加共享库link_directories(direct...原创 2019-08-23 09:06:37 · 266 阅读 · 0 评论 -
进程和线程的区别介绍
1、定义进程:**个程序就是一个进程,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。线程:单个进程中执行中每个任务就是一个线程,即一个进程中可以有多个线程。线程是进程中执行运算的最小单位。2、一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。...转载 2020-02-19 11:23:32 · 207 阅读 · 0 评论 -
linux下使用.so动态库
1、操作当使用函数动态链接库.so时,如果从文件不在系统目录/lib 和/usr/lib(可以把.so拷贝到这些目录下;但如果没有root权限,则无法拷贝)。那么就需要指定环境变量LD_LIBRARY_PATH。LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。格式:LD_LIBRARY_PATH=NEWDIR...原创 2019-11-21 17:45:16 · 1855 阅读 · 0 评论 -
Python之List、Numpy和数组
1. List1.1list = []#空列表list[2]#列表中第3个元素list[1:]#从第2个元素开始截取列表list.append(obj)#列表末尾添加元素objlist.insert(index, obj)#将对象obj插入列表1.2 range()函数list = range(5)#list = [0,1,2,3,4]list = range(10,15)...原创 2019-07-18 17:36:06 · 1833 阅读 · 0 评论 -
vscode常用快捷键(小结)
1、Alt + up/down 移动行上下将光标所在行的代码向上/下移动。2、Ctrl + Shift + K 删除行3、Ctrl + Enter 在当前行下插入新的一行(Enter会把光标后的代码也放入下一行)4、Ctrl + Shift + Enter 在当前行上插入新的一行5、Ctrl + up/down 整个界面上下移动6、Alt + up/down 光标所在行代码上下移动...原创 2019-06-28 16:31:02 · 722 阅读 · 0 评论 -
tensorflow安装
pip install tensorflow==1.4.0或者sudo pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0-cp27-none-linux_x86_64.whl原创 2019-07-02 11:04:54 · 638 阅读 · 0 评论 -
git使用基础
PS:该图例针对的是:你是项目的参与者,而不是项目的创建者;若你是项目的创建者,则不需fork和merge步骤。原创 2019-06-19 10:33:36 · 839 阅读 · 0 评论 -
C++知识点记录(面向对象)
1、继承当创建一个类时,不需重新编写成员,可从别的类继承过来,相当于复制。已有的类叫基类,新建的类为派生类。格式: class 派生类:基类2、多态;虚函数;纯虚函数①多态:多态是由于类继承导致的,调用函数会调用基类中的成员,即静态多态。②虚函数:在基类的成员前使用virtual关键字,则派生类进行继承,调用时不会调用到基类成员,即动态链接。③纯虚函数:在基类中...原创 2019-06-12 16:50:08 · 235 阅读 · 0 评论 -
Python作用域及global变量
1、变量作用域Python的作用域一共有4种,分别是:L (Local) 局部作用域E (Enclosing) 闭包函数外的函数中G (Global) 全局作用域B (Built-in) 内置作用域(内置函数所在模块的范围)以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。Pyt...转载 2019-04-13 16:55:13 · 569 阅读 · 0 评论 -
Makefile和gcc编译相关
一、:= ?= += =的区别这部分转自https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html= 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值1)、“=”make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefil...原创 2019-07-23 17:19:21 · 803 阅读 · 0 评论 -
共享内存 Shared Memory
转发自cdevelopr的Linux 高级编程 - 共享内存 Shared Memory转载 2019-07-29 10:37:05 · 587 阅读 · 0 评论 -
Ubuntu下chmod修改权限
1、字符修改权限1.1、参数介绍Linux文件的三种身份和四种权限,三种身份分别为:1. u:文件的拥有者2. g:文件所属的群组3. o:其他用户4. a: 表示这三者皆是对于每个身份,又有四种权限,分别为:1. r:读取文件的权限(read)2. w:写入文件的权限(write)3. x:执行的权限(execute)4. s:特殊权限-R : 对目前目录下的所有档案与子...原创 2019-07-27 14:18:01 · 1355 阅读 · 0 评论 -
安装python gym
gym依赖Scipy等库,直接在Ubuntu下python环境安装,操作很麻烦,因为需要安装很多依赖库,有的库还安装不成功。在Anaconda下安装gym则非常方便,因为Anaconda环境已经包含很多依赖库。在终端中输入python,确认是Anaconda环境后,直接输入以下命令即可安装:pip install gym...原创 2019-08-01 15:59:10 · 12861 阅读 · 0 评论 -
Ubuntu16.04 安装OpenCV4.1.0
可以参考这篇文章在ubuntu下安装opencv4.1.0详细步骤但是我在进行到第5步安装依赖包的时候,依赖包怎么也安装不上,后来发现是网络源的问题,折腾了好一会儿也解决不了,所以就换了一种方法,省略了手动安装依赖包的步骤。安装好opencv后,抽时间把网络源的问题也解决了。如果遇到网络源的问题,可以参考我另一篇文章Ubuntu安装xxx依赖错误解决方法。解决了网络源的问题,应该就能按上面那...原创 2019-08-14 11:18:52 · 2655 阅读 · 0 评论 -
gcc编译搜索路径顺序
参考文章gcc编译时的搜索路径顺序zz1、头文件C/C++中可以通过#include <stdio.h>和#include "stdio.h"包含头文件,区别是:#include <stdio.h>,直接到系统指定目录去查找头文件;#include “stidio.h”,会先到当前工程目录查找头文件,如果没找到再到系统指定目录查找。gcc编译时查找头文件,按照以...原创 2019-08-14 14:59:41 · 3268 阅读 · 2 评论 -
cmake基础
参考《视觉SLAM十四讲》。1、第一个cmake在~目录下新建一个Test文件夹,里面创建Helloworld.cpp和CMakeLists.txt两个文件。Helloworld.cpp#include <iostream>using namespace std;int main( int argc, char** argv ){ cout<<"Hell...原创 2019-08-10 17:18:23 · 832 阅读 · 1 评论 -
Linux C/C++ 获取当前工作目录
在windows系统下,getcwd()函数是在#include <direct.h>;Linux系统,则是在#include <unistd.h>。1、getcwd()char *getcwd(char buf, size_t size);参数buf:保存当前目录的缓冲区参数size:在现代linux 中,buf 的长度至少可以为255 字节返回值:成功返回指...原创 2019-08-22 15:13:54 · 12865 阅读 · 4 评论 -
java程序编译执行方式
java程序有两种执行方式:1、直接解释执行(类似与解释型语言)。2、编译成字节码(byte code),在java虚拟机JVM上解释执行。PS:方式2与传统的计算机所说的编译不同,后者讲的编译后得到的二进制代码是可以直接运行的;而方式2的字节码主要依靠JVM运行。...原创 2019-09-24 09:49:10 · 1242 阅读 · 0 评论