自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

转载 激光雷达,揭开面具下隐藏的“丑陋”

没有在激光雷达身上“吃过亏”的自动驾驶公司,就像笔者年代没有痴迷过“龟仙人”的小朋友,童年是遗憾的。

2022-06-13 21:45:41 557 1

转载 STM32 启动解析__main main

在启动文件我们看到了__main和用户写的main,这2个是有区别的,大概流程如下:1、复位第一条指令:Reset_Handler PROC,这里指定为 LDR R0, =__main。表示调用库函数__main,当然,我们可以在__main前做点事情,比如PLL初始化等。2、__main()的执行流程参考:跟一下汇编,大概是__scatterload()->__rt_entry()->__user_setup_stackheap()3、最后调用用户的main()函数。4、...

2022-03-23 16:52:31 2771

原创 moveToThread的经历

moveToThread的前后QOBJECT的对象所依赖的线程会发生变化,即对象更该到设置的线程中去。如果对象里有QOBJECT成员,且没有父子关系,则这些成员仍然依赖于创建它的线程。

2021-12-26 02:07:26 258

原创 c++ 中 char 与 string 之间的相互转换问题

首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。注意,与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将string直接赋值给char*。1、将char *或者char []转换为string可以...

2021-12-11 18:10:53 24513

转载 QT中的线程与事件循环理解(1)

1.需要使用多线程管理的例子  一个进程可以有一个或更多线程同时运行。线程可以看做是“轻量级进程”,进程完全由操作系统管理,线程即可以由操作系统管理,也可以由应用程序管理。Qt使用QThread来管理线程。QWidget *widget = new QWidget(this); QVBoxLayout *layout = new QVBoxLayout; widget->setLayout(layout); QLCDNumber *lcdNumber = new ..

2021-12-11 17:36:26 2820

转载 Ubuntu 16.04设置root用户登录图形界面

Ubuntu默认的是root用户不能登录图形界面的,只能以其他用户登录图形界面。这样就很麻烦,因为权限的问题,不能随意复制删除文件,用gedit编辑文件时经常不能保存,只能用vim去编辑。下面以Ubuntu 16.04版为例说明:1、打开终端2、输入sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf3、添加一行:greeter-show-manual-login=true 保存关闭。4、给root设置密码,在中端中输入.

2021-12-11 17:09:05 2139

原创 QT事件和信号的区别

以window为例,Qt事件就是将windows底层的消息例如WM_KEYDOWN经过两三次转换为Qt::Key_Down的事件,按下键盘的Down会触发这个事件。想了解信号与事件,最好看Qt的源码,以QPushButton为例,按下这个按钮是先触发的是mousePressEvent事件,在事件源码中会发射pressed()信号,松开按钮又触发mouseReleaseEvent事件,在事件源码中发射released()信号和clicked()信号。事件对应的是信号产生的途径,例如按钮的按下松开。信号

2021-12-11 03:13:10 1164

转载 对象指针及内存

C语言中经典的指针在 C++ 中仍然广泛使用,尤其是指向对象的指针,没有它就不能实现某些功能。上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址,例如: Student stu; Student *pStu = &stu;pStu 是一个指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。当然,你也可以在堆上创建对象,这个时候就需要使用前面讲到的new关键字,例如: Student *pStu = n

2021-12-05 23:17:23 136

原创 Linux线程退出、资源回收、资源清理的方法

先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题。1、子线程创建时从父线程copy出来的栈内存;  线程退出有多种方式,如return,pthread_exit,pthread_cancel等;线程分为可结合的(joinable)和 分离的(detached)两种,如果没有在创建线程时设置线程的属性为PTHREAD_CREATE_DETACHED,则线程默认是可结合的。可结合的线程在线程退出后不会立即释放资源,必须要调用pthread_join来显式的结束线程。分离的线程在线程退出

2021-11-22 16:53:28 2630

转载 # 和 ## 运算符

# 和 ## 预处理运算符在 C++ 和 ANSI/ISO C 中都是可用的。# 运算符会把 replacement-text 令牌转换为用引号引起来的字符串。请看下面的宏定义:#include <iostream>using namespace std; #define MKSTR( x ) #x int main (){ cout << MKSTR(HELLO C++) << endl; return 0;}当上面的代码

2021-10-28 00:01:53 108

转载 C++ 命名空间

#include <iostream>using namespace std;namespace A{ int a = 100; namespace B //嵌套一个命名空间B { int a =20; }}int a = 200;//定义一个全局变量int main(int argc, char *argv[]){ cout <<"A::a ="<< A::a <&.

2021-10-27 23:17:10 70

转载 C++之EOF()

fstream流的eof()推断有点不合常理 按常理逻辑来说,假设到了文件末尾的话,eof()应该返回真,可是,C++输入输出流怎样知道是否到末尾了呢? 原来依据的是:假设fin>>不能再读入数据了,才发现到了文件结尾,这时才给流设定文件结尾的标志,此后调用eof()时,才返回真。 如果 find>>x; //此时文件刚好读完最后一个数据(将其保存在x中) 可是,这时fin.eof()仍为假,由于 fin流的标志eofbit是...

2021-10-26 00:15:33 5882

转载 C++ 指向指针的指针(多级间接寻址)

指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。指针的指针就是将指针的地址存放在另一个指针里面。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:int **var;当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符,如下面实例所示:#inclu

2021-10-22 00:44:35 274

转载 Lambda 函数与表达式

Lambda函数的语法定义如下:[capture](parameters) mutable ->return-type{statement}其中:[capture]:捕捉列表。捕捉列表总是出现在 lambda 表达式的开始处。事实上,[] 是 lambda 引出符。编译器根据该引出符判断接下来的代码是否是 lambda 函数。捕捉列表能够捕捉上下文中的变量供 lambda 函数使用。[]:默认不捕获任何变量; [=]:默认以值捕获所有变量; [&]:默认以引用捕获所有...

2021-10-21 10:24:25 331

转载 static和const 修饰类的成员变量

1.static 修饰类的成员变量1). 静态成员变量是先于类的对象而存在 2). 这个类的所有对象共用一个静态成员 3). 如果静态成员是公有的,那么可以直接通过类名调用 4). 静态成员数据在声明时候类外初始化#include <iostream>using namespace std;class Data{public: Data(){} ~Data(){} void show() { cout<<...

2021-10-21 00:33:42 566

转载 常量const 的用法,与宏定义 #define的区别

const关键字const是constant的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说const意味着只读(readonly)。规则:const离谁近,谁就不能被修改;const修饰一个变量,一定要给这个变量初始化值,若不初始化,后面就无法初始化。本质:const在谁后面谁就不可以修改,const在最前面则将其后移一位,二者等效。const关键字作用为给读你代码的人传达非常有用的信息,声明一个参数为常量是为了告诉用户这个参数的应

2021-10-20 23:58:14 300

转载 C++ 数据类型

使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。基本的内置类型C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:类型 关键字 布尔型 bool 字符型

2021-10-20 23:37:06 76

转载 size_t 说明

size_t 在 C 语言中就有了。它是一种整型类型,里面保存的是一个整数,就像 int, long 那样。这种整数用来记录一个大小(size)。size_t 的全称应该是 size type,就是说一种用来记录大小的数据类型。通常我们用sizeof(XXX)操作,这个操作所得到的结果就是 size_t 类型。因为 size_t 类型的数据其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为 int 并赋值给 int 类型的变量。类似的还有wchar_t, ptrdiff_...

2021-10-20 23:34:07 638

转载 typedef 与 #define 的区别

1. 执行时间不同关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能。#define 则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。【例1.1】typedef 会做相应的类型检查:typedef unsigned int UINT; void func() { UINT value = "abc"; // error C2440: 'initializing' : cannot c..

2021-10-20 23:30:43 163

转载 自动转换规则

变量的类型间是可以互相转换的,转换又分为自动转换和强制转换。自动转换规则:1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。 a、若两种类型的字节数不同,转换成字节数高的类型 b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型 3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成dou...

2021-10-20 23:19:18 388

转载 extern 声明用法

变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用extern关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。定义包含了声明,但是声明不包含定义,如int a = 0;..

2021-10-20 23:17:25 1452

转载 C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别

C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。从作用域看:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局

2021-10-20 23:07:54 216

列车通信网络中MVB网卡通信存储器的设计

列车通信网络中MVB网卡通信存储器的设计列车通信网络中MVB网卡通信存储器的设计列车通信网络中MVB网卡通信存储器的设计

2009-03-30

MVB总线实时协议实现及其试验研究

MVB总线实时协议实现及其试验研究,实时协议包括应用层,会话层,传输层和网络层协议。

2009-03-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除