自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 C++将16进制vector<uint8_t>以16进制字符串形式打印

例如:std:vector<uint8_t>{0x2A, 0xF5, 0x63};将其存到string中,std::string str{0x2A 0xF5 0x63};std::cout输出字符串:"0x2A 0xF5 0x63"将vector<uint8_t>vec中的16进制数字以16进制字符串的形式打印出来,或者存到string中。

2024-01-15 10:28:42 575

原创 关于C++使用gtest进行unitest的一些问题总结

C++使用gtest进行unitest的一些问题总结

2023-12-27 20:08:47 578

原创 Linux系统中对某个目录的操作提示权限不够

比如我mkdir创建一个目录,提示权限不够,这可能是因为该目录的所有者或组为root,而我们作为用户登录(可以通过users命令查看当前登录的用户),当然就无法进行一些操作了。比如我的~/wok目录通过ls -l命令来查看该目录,发现为该目录的所有者或组为root,那么就只有root用户有rwx权限。

2023-12-08 11:26:23 596

原创 shell中捕获信号

命令在脚本中常用于捕获和处理关键信号,比如在脚本退出前执行清理操作、捕获中断信号等。以下脚本演示了trap命令注册cleanup处理函数的例子,该脚本通过top命令将运行时传入的进程的内存情况保存在virt.log和res.log文件中。当输入ctrl+c后,执行自定义的cleanup函数,函数中调用运行analyse_men.py脚本,将log文件中记录的消息生成为图片。命令用于注册一个或多个信号的处理程序,以便在接收到信号时执行指定的操作。是在接收到触发的信号后要执行的命令或脚本。在Shell编程中,

2023-11-05 21:15:44 158

原创 Linux修改调度策略和优先级

1. 在Linux系统中,线程和进程之于Linux系统内核调度器来说是一样的,线程会当做进程一样来参与调度,也可以说线程是内核调度的最小单元。2.子进程或子线程会继承父进程/线程的调度策略。

2023-10-27 18:26:47 746

原创 使用STL容器存储智能智能的注意事项

对使用存储unique_ptr的容器给另外一个容器赋值、或者unique_ptr之间赋值时存在的问题进行说明

2023-06-05 16:25:23 174

原创 C++关于shared_ptr和shared_from_this的说明

C++shared_from_this()的原理与使用。

2023-06-05 11:15:49 545

原创 Linux BSP开发学习之百宝箱

Linux内核学习资料总结

2023-05-03 22:41:20 288

原创 基类和派生类中存在同名函数时的调用选择

存在继承关系的两个类,基类中的方法A中调用了方法B,而父子类中均存在B方法,当通过子类对象调用A方法,或者 基类指针指向派生类对象,通过基类指针去调用A方法, 此时在A方法中调用的是父类还是子类中的B方法呢?

2023-05-02 16:19:02 841

原创 C++ 系列之—仿函数

仿函数的出现是为了代替函数指针的,最明显的一个特点是:可以使用内联函数。而如果使用内联函数的指针,编译器会把它当普通函数对待。另外,函数对象具有类封装的特性,代码不但看起来简洁,设计也灵活,比如还可以用关联,聚合,依赖的类之间的关系,与用到他们的类组合在一起,这样有利于资源的管理。是一个能行使函数功能的类,仿函数的语法几乎和我们普通的函数调用一样。形如:return_type operator()(para_type xxx), 例如:int operator()(int num);

2023-05-01 21:21:24 189

原创 Linux在堆上分配内存相关知识以及内存泄漏分析方法

Linux内存泄漏等问题分析工具

2023-04-05 20:03:15 1032

原创 C++string与C语言字符串结合使用易错点总结

c/c++ string和字符串混用时容易出现的问题

2023-03-04 13:00:40 535

原创 shell脚本实现可执行程序自动打包和部署的一种方式

shell脚本实现可执行程序自动打包和部署的一种方式

2023-02-05 12:48:51 2331

原创 TCP和UDP关于有无内核缓冲区的一点差异说明

tcp和udp通信关于内核有无缓冲区的一点说明

2022-12-18 14:24:22 429

原创 c和c++可变参数函数

c/c++可变参数函数

2022-09-14 16:35:47 359

原创 提升程序员工作效率和体验的推荐大合集

一些提升程序员开发效率和工作体验的好物推荐集合

2022-09-02 11:48:56 837

原创 Linux共享库相关知识

Linux静态库和动态库相关的基本知识

2022-08-06 22:58:36 300

原创 C++ string、vector<char>和(const)char *之间的转换

写C++程序时经常会遇到string、vector<char>和(const)char *之间的转换,本文介绍了其间的转换方法和注意事项。1. string转vector<char>string所存储字符串不包含'\0',所以转为vector后,通过vector.data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在vector后手动再加上'\0',这样在vector.data()输出字符串就没问题了。但此时vector.size()会比string.le

2022-07-03 15:03:07 10073

原创 Linux一种快速定位文件描述符泄漏的方法

1.关于文件描述符泄漏的说明 文件描述符泄漏和内存泄漏道理相同,内存泄漏是这块malloc的内存,没有及时free。文件描述符泄漏则是指文件和设备等没有及时close。比如多次打开文件(open, popen, fopen),但是却没有释放(close, pclose, fclose),或者开得多关的少,这种常常是因为异常,return的时候没有close。例如如下伪代码: 当系统中已经分配的fd过多时,超过系统允许每个进程打开的文件描述符的数量后,再次open等操作,...

2022-05-02 19:49:59 1515

原创 git常用命令总结

1. git branch (1)git branch:列出本地所有分支 (2)git branch xxx:在本地创建一个xxx分支说明:新建的分支是原有分支的一个clone版本,最初二者内容完全一样。 (3)git branch -d xx:删除xx分支 (4)git checkout xx:将当前工作区切换到xxx分支 (5)git checkout -b xx:创建一个新的分支xx,并切换到该分支2.git statusgit status...

2022-05-01 20:52:33 882

原创 Linux C/C++开发知识点随笔

1. 对于非单个字节的整数值,不同的硬件结构对于其各个字节的存储顺序可能不同,这便有了大小端的说法。先存储(低内存地址)最高位的字节为大端,先存储最低位的字节为小端。2.有了大小端的差异,数据在本地和网络上传输便有了本地字节序和网络字节序。为了数据能够在网络主机之间传递并被对方正确理解,因此双方需规定一个数据传输的同一字节序,我们称之为网络字节序,它是大端的。主机字节序可能为大端也可能为小端。3.当我们调用htons()、ntohs()、htonl()、ntohl()时,其底层实现会判断我们的主机字

2022-04-15 17:00:56 368

原创 C语言指针易犯错误

1. 指针作为函数参数进行传递下面的代码本意是想在main中定义一个指针p,然后将其传给func_memory()函数,让func_memory函数申请一块内存,然后在main函数中对这块内存进行拷贝操作。如下的代码运行会产生“segment Fault”,程序直接崩溃。int main(void){ char *str = "hello world"; char *p = NULL; func_memory(p, strlen(str)+1); memcpy

2022-03-17 18:26:55 2227

原创 Linux GDB调试死锁问题

1.死锁介绍1.1 锁的简介由于多线程的模式下,各个线程并发运行(注意“并发和“并行”的区别),为了保证各个线程对公共资源的访问时出现数据不一致性的问题,出现了锁的机制。Linux系统编程中最常见的锁机制是通过互斥量(mutex)来实现的。任一时刻只有一个线程可以对互斥量mutex上锁(或说成持有该互斥量),在被持有期间,其它线程就无法对它进行上锁(这也是互斥量名字中“互斥”的由来),其它尝试加锁的线程都会休眠(注意休眠和挂起的区别)释放cpu资源,并被记录到此互斥量的等待队列中。持有的线程释.

2022-02-28 14:44:22 2835

原创 C语言结构体中char data[0]的用法

1. char data[0]的存在形式char data[0]的存在形式一般如下图中的伪代码所示,多数情况都是放在结构体的最后,其不占用结构的空间(sizeof(struct AAA)的结果不包含char xxx_data[0]),xxx_data[0]的存在只是一个指针的占位符,当结构体分配的指针分配的内存多于结构体本身应占有的内存时,多于的内存将会由这个 "xxx_data"的指针所指向,并且可以通过结构体去使用这块内存。这就类似相当于结构体“包含”了一段可变长的空间,从而克服了C语言结构体类

2022-02-23 19:37:34 2541

原创 Linux下protobuf 和 protobuf-c的安装及其外围知识

介绍了Linux下安装protobuf和protobuf-c的步骤,及其相关外围知识的介绍,如Linux源码安装、环境变量等等

2022-02-20 16:29:37 3923 1

原创 系统编程手册学习笔记

1. 库函数设计库函数是为了提供比底层系统调用更为方便的调用接口;调用库函数,有的不会执行任何系统调用(比如字符串操作函数),有的则是构建于系统调用层之上的(比如fopen()是利用系统调用open()来执行打开文件的实际操作);C语言的函数库有多个版本,GNU C是其中一个版本,简称glibc,是Linux上最常用的实现;只要执行了系统调用或者库函数,检查调用的状态用于确认调用是...

2020-03-27 23:40:51 114

原创 C语言之指针的强制类型转换

int main(void){ typedef struct people { STUDENT stu; int num; }PEOPLE; PEOPLE stpeople; //定义这个结构体类型的变量 memcpy(stpeople.stu.name,"xiaoli",8); stpeople.s...

2020-03-07 18:52:14 507

原创 malloc函数

1.关于3个alloc函数(1)动态分配的内存实际上比消耗的堆栈空间要比所申请的大一些,因为除了要申请的空间外,还会有一段空间,而这个空间用于记录管理信息——分配块的长度、指向下一个分配块的指针等参数信息(而如果要是访问了这部分空间会出错)。所以频繁的malloc(0)实际上还是消耗了堆空间的。也会错在内存泄露的风险。...

2020-02-09 18:33:42 297

空空如也

空空如也

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

TA关注的人

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