自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 资源 (3)
  • 收藏
  • 关注

原创 计算机导论——第39章 文件和目录

除了虚拟化CPU和内存,另外一个是持久存储,永久存储信息。持久存储设备与内存不同,内存在断电时内容会丢失,而持久存储设备会保持这些数据不变。

2023-12-03 17:44:42 932

原创 计算机导论——第37章 磁盘驱动器

关键问题:如何存储和访问磁盘上的数据现代磁盘驱动器如何存储数据?接口是什么?数据是如何安排和访问的?磁盘调度如何提高性能?

2023-12-01 20:53:10 397

原创 操作系统导论——第36章 I/O设备

之所以使用分层,这是由于成本和效率之间的平衡。

2023-12-01 17:51:36 958

原创 C陷阱与缺陷——第8章建议

6. 注意潜伏在暗处的Bug,坚持只使用C语言众所周知的部分,避免使用那些生僻的语言特性。4. 考察最简单的特例,当输入数据为空或者只有一个元素时,考虑正确性。7. 防御性编程,对程序用户和编译器实现的假设不要过多。5. 使用不对称边界,C语言下标从0开始。

2023-12-01 15:57:19 365

原创 C陷阱与缺陷——第7章可移植缺陷

C程序能够方便地在不同编程环境中移植,但是C语言实现可能有细微差别,会导致可移植问题。可移植性主题内容很多,可以参考《How to Write Portable Software in C》

2023-12-01 12:47:06 333

原创 C陷阱与缺陷——第6章 预处理器

(x)((x)-1)空格的规则适用于宏定义,但是不适用于宏调用,所以f(3)和f (3)的结果都等于2宏的一个常见用途是使多个不同变量的类型可在一个地方说明,宏定义的这种用法有一个优点——可移植性。T1 a,b;T2 a,b;其中T1 a,b;这个语句中a被定义为一个指向结构的指针,而b却被定义为一个结构,而不是指针。

2023-11-30 16:27:56 397

原创 C陷阱与缺陷——第5章库函数

上述函数是错误的,原因在于程序中的变量c被声明为char类型,而不是int类型,这意味着c无法容下所有可能的字符,特别地,可能无法容下EOF。最终的结果可能有。

2023-11-29 20:29:12 442

原创 C陷阱与缺陷——第4章连接

C语言的一个重要思想就是分别编译,即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合在一起,尽管连接器并不理解C语言,然而它却能够理解机器语言和内存布局。编译器的责任是把C源程序翻译成对连接器有意义的形式,这样连接器就能够读懂C源程序了。典型的连接器是把由编译器或者汇编器生成的若干个目标模块,整合成一个被称为载入模块或者可执行文件的实体,该实体能够被操作系统直接执行。

2023-11-29 17:56:16 381

原创 C陷阱与缺陷——第3章 语义陷阱

C语言中只有一维数组,而且数组的大小必须在编译器就作为一个常数确定下来,然而在C语言中数组的元素可以是任何类型的对象,当然也可以是另外的一个数组,这样,要仿真出一个多维数组就不是难事。对于一个数组,我们只能够做两件事:确定数组大小;获得指向该数组下标为0的元素的指针。以上语句声明了calendar是一个数组,该数组拥有12个数组类型的元素,其中每个元素都是一个拥有31个整型元素的数组。

2023-11-29 16:53:37 908

原创 C陷阱与缺陷——第2章语法陷阱

硬件将调用首地址为0位置的子例程任何C变量的声明都由两部分组成:类型以及一组类似表达式的声明符,声明符从表面看与表达式有些类似,对它求值应该返回一个声明中给定类型的结果。(*fp)();ANSI C标准允许程序员将上式简写为fp(),但是一定要记住这种写法只是一种简写形式。我们一旦知道如何声明一个变量,也就自然知道如何对一个常数进行类型转换,将其转型为该变量的类型:知需要在变量声明中将变量名去掉即可。

2023-11-28 14:26:22 439

原创 C陷阱和缺陷第1章——词法陷阱

tips:符号之间的空白,包括空格符、制表符或换行符将被忽略。

2023-11-27 15:27:38 331

原创 vscode运行c++程序如何支持c++11

参考https://zhuanlan.zhihu.com/p/269244754。更改setting.json文件。

2023-11-25 16:12:19 426

原创 大话设计模式C++实现

详情见Github:https://github.com/liubamboo/BigTalkDesignPattern。大话设计模式,讲得非常好,但是作者是用C#写的,为了方便C++程序员,使用C++写了大话设计模式的代码。

2023-11-24 10:03:14 414

原创 Linux进程调度

MLFQ(Multi-level Feedback Queue)多级反馈队列,有巫毒常量,如配置多少队列、每一层队列的时间片是多大,多久提升一次进程的优先级。轮转,RR在一个时间片内运行一个工作,然后切换到下一个任务,优化响应时间,但对周转时间不利。调度:比例份额,彩票,缺点:不能很好地适合IO,最难的票数分配问题没有确定的解决方式。SJF最短任务优先,需要支持抢占,优化周转时间,但对响应时间不利。规则2:如果A的优先级=B的优先级,轮转运行A和B。规则1:如果A的优先级>B的优先级,运行A。

2023-11-21 20:40:15 62

原创 Linux网络驱动

Linux 网络设备驱动结构网络协议接口层向网络层协议提供统一的数据包收发接口,这一层使得上层协议独立于具体的设备网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器设备驱动功能层的各函数是网络设备接口层net_device具体结构的具体成员,是驱使网络设备硬件完成相应动作的程序网络设备与媒介层是完成数据包发送和接收的物理实体

2023-11-21 20:20:14 56

原创 USB驱动开发基础

USB端点被绑在接口中,USB接口只处理一类USB逻辑连接,每个USB驱动控制一个接口。USB接口被捆绑到配置上,一个USB设备可能有多个配置并在它们之间转换。USB Request Block,一个URB用来发送或者接受数据。

2023-11-21 16:45:15 345

原创 C++ Primer第16章——模版与泛型编程

面向对象编程能处理再程序运行之前都未知的情况,而在泛型编程中,在编译时就能获知类型了。C++中的容器、迭代器和算法都是泛型编程的例子;一个模板就是一个创建类或者函数的蓝图或者说公式。模版是泛型编程的基础。

2023-11-15 16:58:37 53

原创 C语言灵活的指针表达式 左值 右值

0. 参考资料《C和指针》1. 初始状态char ch = 'a';char *cp = &ch;其中?表示后面的数据内容未知2. ch其中ch当作右值就是表达式的值a,使用粗椭圆提示;其中ch当作左值时就是内存地址,使用粗方框表示3. &ch右值表示变量ch的地址,这和cp存储的值是一样的,但是这个表达式并没有通过cp产生,因此椭圆和cp没有关系左值非法,原因是&ch求值时结果存放在计算机未知的位置,未标识...

2021-10-14 19:45:00 505

原创 C++不定数量字符串输入例子

输入N1 N2 N3N2输出:1 2 3del: 2代码#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;int main() { // 1.输入数据 int inputs[100]; int del; char item[10]; char number[10]; int sz = 0; while

2021-09-15 20:37:54 1107

原创 拓扑排序问题总结

1. 题目来源题目

2021-09-13 08:35:12 227

原创 【网络编程|5大IO模型】

1. 阻塞式IO模型2. 非阻塞式IO模型3. IO复用模型4. 信号驱动式IO模型5. 异步IO模型

2021-08-30 21:47:01 94

原创 【计算机网络|HTTPS协议】

1. 对称加密含义:加密和解密的密钥是相同的,密钥要保密特点:效率更高,性能更好,但是单纯使用对称加密存在死循环问题(密钥如何传输?)2. 非对称加密含义:加密和解密使用的密钥是不同的,存在公钥和私钥,公钥对外公开,私钥保密;公钥加密的只是私钥能解密,私钥加密的只是公钥能解密客户端和服务器都有自己的私钥和公钥3. 数字证书如何辨别公钥的有效性?就需要用到数字证书,相等于权威机构的背书Certificate(证书)包含内容:公钥,所有者,发布机构,有效期签名算法

2021-08-29 09:45:48 72

原创 【计算机网络|HTTP协议】

1. HTTP请求的准备www.163.com(域名)-》DNS服务器(获得IP地址)-》TCP连接(如何开启Keap-Alive,TCP连接可以在多次请求中复用)URL:统一资源定位符(格式统一),例子:http://www.163.com2. HTTP请求的构建2.1 请求行常见方法:GET,从服务器获取资源(资源可以是页面或者JSON等) POST,主动告诉服务器一些信息,而非获取(常见格式也是JSON)(往往用来创建一个资源) PUT,指定资源位置上传最新内.

2021-08-29 09:11:03 78

原创 【设计模式|观察者模式】C++

1. 编码#include <iostream>#include <list>#include <string>using namespace std;/** * 观察者接口类 */class IObserver { public: virtual ~IObserver() {}; virtual void Update(const string& message_from_subject) = 0;};/** * 发布者接

2021-08-28 22:29:34 57

原创 【计算机网络|Socket】套接字Socket:Talk is cheap, show me the code

关注点:基于TCP和UDP的Socket编程1. 基于TCP协议的Socket程序调用过程注意: 监听Socket和传数据的Socket是两个,一个是监听Socket,一个是已连接Socket2. 基于UDP协议的Socket程序函数调用过程注意:UDP 是没有维护连接状态的,因而不需要每对连接建立一组 Socket,而是只要有一个 Socket,就能够和多个客户端通信3. 如何连更多?3.1 方式一:将项目外包给其他公司(多进程方式)特点:Linux..

2021-08-28 21:05:52 963 1

原创 MySQL必知必会 第13章 分组数据

1. 创建分组使用GROUP BY子句GROUP BY子句能包含任意数量的列 如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上进行汇总 如果在SELECT中使用表达式,则必须GROUP BY子句指定相同的表达式,不能使用别名 如何分组列中具有NULL,NULL将作为一个分组返回 GROUP BY在WHERE子句之后,在ORDER BY子句之前2. 过滤分组注意:WHERE过滤行,HAVING过滤分组,组合时候时注意被WHERE子句排除的行不会影响HAVING处理结果

2021-08-28 19:39:01 68

原创 MySQL 第12章 聚集函数

1. 含义聚集函数:运行在行组上,计算和返回单个值的函数2. AVG()SELECT AVG(prod_price) AS avg_priceFROM products;注意:只用于单个列,忽略值为NULL的行3. COUNT()COUNT(*)包含NULLCOUNT(column),忽略NULL4. MAX()注意:对数值和非数值数据都可以使用,MAX()忽略值为NULL的行5. MIN()注意:MIN()同样忽略值为NULL的行6.

2021-08-28 19:10:38 67

原创 MySQL必知必会 第10章 创建计算字段

1. 计算字段含义应用程序需要的不是直接在表中的数据,而是需要进行转换、计算或者格式化的数据,这时候就可以应用计算字段2. 拼接字段SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')')FROM vendorsORDER BY vend_name;Concat()函数在MySQL用于拼接,RTrim用于去掉串右边的空格,相应地LTrim用于去掉左边的空格,Trim用于去掉左右两边的空格3. 使用别名

2021-08-27 22:08:00 72

原创 MySQL必知必会 第9章 用正则表达式进行搜索

1. REGEXP和LIKELIKE匹配整个列,REGEXP在列值内进行匹配;通过^和$定位符,REGEXP可以实现和LIKE一样的功能2. 匹配任意一个字符SELECT prod_nameFROM productsWHERE prod_name REGEXP '.000'ORDER BY prod_name;'.000'将匹配 前面一个任意字符后接000如何要强制区分大小写可以使用BINARYSELECT prod_nameFROM productsWHER

2021-08-27 21:30:48 80

原创 趣谈网络协议之TCP协议

1. TCP包头关注重点:源端口号,目的端口号,序号,确认序号,状态位(ACK回复, RST重新连接, SYN发起一个连接, FIN结束连接)2. TCP关注的5大问题顺序问题,稳重不乱 丢包问题,承诺靠谱 连接维护,有始有终 流量控制,把握分寸 拥塞控制,知进知退注意:流量控制是针对另一端的,拥塞控制是针对网络的3. TCP三次握手两次握手行不行?答:两次握手对应A发了一次,B收到了再发一次(B知道A希望建立连接)。B不能确认A是否能收到它的应答(应答包.

2021-08-27 19:32:57 122

原创 MySQL必知必会 第8章——用通配符进行数据过滤

1. LIKE操作符实际上LIKE是谓词,LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。2. 百分号 (%)通配符%表示任何字符出现任意次数(包括0次)SELECT prod_id, prod_nameFROM productsWHERE prod_name LIKE 'jet%';注意:在我测试过程中结果不区分大小写,Jet也可以被识别注意:尾空格,如何anvil后面接了一个空格,那么'%anvil'不会匹配它,应该使用'%anvil%'

2021-08-27 18:45:42 95

原创 MySQL必知必会 第7章 数据过滤

1. 组合WHERE子句AND和ORSELECT prod_id, prod_price, prod_nameFROM productsWHERE vend_id = 1003 AND prod_price <= 10;SELECT prod_name, prod_priceFROM productsWHERE vend_id = 1002 OR vend_id = 1003;注意:AND在计算次序中优先级更高,因此对于多个条件的情况,最好要加上()SELECT pro

2021-08-27 17:42:51 62

原创 MySQL必知必会 第6章——过滤数据

1. 使用WHERE子句过滤数据SELECT prod_name, prod_priceFROM productsWHERE prod_price = 2.5;2. WHERE子句操作符= 等于 <> 不等于 != 不等于 < <= > >= BETWEEN A AND B [A, B] 3. 字符串相等SELECT prod_name, prod_pric

2021-08-26 19:33:21 47

原创 趣谈网络协议——UDP协议

1. TCP和UDP的区别TCP是面向连接的,UDP是面向无连接的,所谓建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方的交互状态,用这样的数据结构来保证所谓的面向连接特性 TCP提供可靠交付,TCP传输的数据,无差错,不丢失,不重复,按顺序到达;而UDP继承了IP包的特性,不保证不丢失,不保证按顺序到达 TCP是面向字节流的,没头没尾;而UDP继承IP的特性,是基于数据报的,一个一个发,一个一个收 TCP有拥塞控制,根据网络情况自己调整发送速度;UDP就不管,应用让发就发

2021-08-26 18:59:01 239

原创 C++11 14新特性

1.原子弹级更新——Variadic Templates含义:数量不定的模板参数,模板使得类型可以任意指定,而Variadic Templates进一步让模板参数的数量也可以任意指定注意:pack的模板参数数量可以为0;需要定义终止条件用途:比如实现print函数,可以打印任意数量的,任意类型的数据 还可以方便地实现递归函数,比如hash_val的计算 可以实现递归继承,比如实现tuple(可以将不同类型,任意数量的数据存在一起)...

2021-08-25 21:41:23 678 3

原创 趣谈网络协议 第9讲——路由协议

1. 路由表当一个入口网络包发送到路由器,它会根据一个本地的转发信息库来决定如何正确的转发流量,这个转发信息库通常被称为路由表路由表有很多天路由规则,每一条规则的基本组成如下:目的网络IP 出口设备(对应网卡) 下一跳网关:下一个路由器的地址2. 路由算法分类静态路由算法:适合网络环境简单的情况(但是有时候网络环境复杂并且多变,如果总是用静态路由,一旦网络结构发生变化,让网络管理员手工修改路由太复杂了,因而需要动态路由算法) 动态路由算法:根据路由协议算法生成动态路由表,岁网络状

2021-08-25 17:04:56 338

原创 趣谈网络协议第8讲——世界这么大,我想出网关:欧洲十国游与玄奘西行

1. MAC头与IP头2. 分类同一个网段,不需要网关 不是同一个网段,需要网关注意:网关和源IP是同一个网段的,通常是第一个或者第二个IP3. 路由器与网关个关系路由器是一台设备,它有5个网口或者网卡,相当于5只手,分别连着5个局域网,每只手的IP地址和局域网的IP地址网段相同的网段,每只手都是它握住的那个局域网的网关4. 静态路由与动态路由静态路由:在路由器上配置着一条一条的规则,当选选择从哪个网关出去的时候,就根据这些规则从某个网关发出去 动态路由:动态更新.

2021-08-25 16:07:36 88

原创 MySQL必知必会第5章——排序检索数据

1. 排序数据SELECT prod_nameFROM productsORDER BY prod_name;SELECT和ORDER BY后面接的列不一定要相同SELECT prod_nameFROM productsORDER BY prod_price;2. 按多个列排序SELECT prod_id, prod_price, prod_nameFROM productsORDER BY prod_price, prod_name;3. 指定排序方向SEL

2021-08-25 14:49:37 66

原创 push_back和emplace_back区别

1. 测试代码#include <iostream>#include <vector>using namespace std;class A { public: A(int i, int j) : i_(i), j_(j){ cout << "normal construct function" << endl; } A(const A& a) { cout << "copy construct

2021-08-25 12:39:38 2912

原创 MySQL第4章——检索数据(SELECT)

1. 概述SELECT的用途是从一个或者多个表中检索信息,必须给出两个信息,一个是想选择什么,一个是从什么地方选择2. 检索单个列SELECT prod_nameFROM products;给出结果是未排序的尽量用;结束语句养成SQL关键字用大写,所有列和表名用小写的习惯,方便调试SQL语句分成多行更容易阅读3. 检索多个列SELECT prod_name, prod_id, prod_priceFROM products;4. 检索所有列S

2021-08-25 10:00:01 124

msckf-vio里面的完整代码压缩文件src.zip

讲这个文件直接解压就可以使用,省去需要手动添加random_numbers文件夹的烦恼。下载后放在catkin/下面就可以用catkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPE=Release进行编译了

2020-05-23

calibration.zip

使用imu_utils和kalibr标定realsenseD435i得到的双目+imu的标定参数,标定是为了运行msckf-vio,实验是可以成功运行的,但是imu的参数并没有使用,可能标定的有问题

2020-04-24

launchAndYamluseInMsckf-vio.zip

realsenseD435i用于msckf-vio的配置文件,在室外场景中可行成功运行,里面imu有些参数是借用的vins-fusion的,双目相机参数主要通过标定得到,部分参数有进行调整

2020-04-24

空空如也

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

TA关注的人

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