- 博客(21)
- 收藏
- 关注

原创 基于GDBus框架的进程间通信详解
首先简单介绍一下什么是GDBus。GDBus是一种基于d-bus技术的进程间通信框架,其中最核心的部分就是“Bus”,个人理解,它就是一个进程间通信的“桥梁”,不同的进程之间进行接收或者传递消息,都需要通过这个"Bus"总线。进程间通信的消息都会先发送到"Bus"总线上,然后再分发到目标进程上,"Bus"总线会根据收到消息的类型不同,采取不同的处理,主要处理可以分为两类:函数调用、信号广播。为了方便起见,我们假设有两个进程需要进行通信,一个Client进程,一个Server进程。...
2020-07-02 22:01:18
7793
6
原创 std::unordered_map 使用总结
unordered_map是一种根据键值查找元素的无序容器,与其相类似的还有std::map,两者的区别是map的键值(key)是有序的,unordered_map是无序的。最近在项目中使用unordered_map的时候,由于键值Key使用了自定义类型,导致编译出现了问题,仔细查看了一下错误的原因,原来是使用自定义类型键值的时候,需要将该类型进行==运算符重载,否则unordered_map将无法判断两个键值是否相等,同理,对于std::map的话,使用自定义类型键值就需要重载<运算符。
2023-07-19 14:40:39
484
原创 初步理解LINUX信号
在程序调试阶段,相信大家一定会遇到过程序崩溃的情况,当程序发生严重错误,导致无法继续运行的时候,系统会发出信号,要求程序停止运行。其中最常见的就是SIGSEGV信号。然而最近又遇到过一个新的信号,SIGBUS,并且崩溃的时候看不到任何堆栈,从网上查阅相关资料后,在这里做一下总结。有一篇关于信号类型的详细介绍的文章,描述的很好,下面内容转发自该文章。其中常用的也就上述加粗的信号。
2023-02-08 17:26:30
333
原创 GDB调试实战(二)
近段时间在测试程序的时候,遇到了许多问题,又需要再次用到gdb,虽然之前也写过一篇关于gdb调试的文章,但是涵盖的内容比较片面,有许多实用的gdb命令和操作都没有介绍到,于是又写了这篇文章来丰富加强一下自己的gdb技能。
2022-11-10 17:12:13
1565
原创 CMakeLists教程(实战总结)
CMake 是一个开源、跨平台的工具,旨在构建、测试和打包软件。CMake是makefile的上层工具,用于跨平台构建环境,生成可移植的makefile,并简化自己动手写makefile时的巨大工作量。前言 工作已经接近三年时间,做过大项目也有三四个了,关于项目代码整体编译,一定是离不开CMake。之前一段时间,仅仅是能看懂一些简单的CMake命令,编写一些基础的CMakeLists文件。然而最近一段时间,项目代码需要重构,代码内容以及代码结构都进行了调整,与之伴随的任务就是要重新去构建
2022-05-05 16:34:06
11513
1
原创 Ubuntu 20.04 美化教程
这篇文章主要用来记录一下关于Ubuntu 20.04各种美化的方法,先看一下我这边搭配的一套最喜欢的效果图。1. Tweaks首先要安装一下Tweaks,后面想要切换下载的主题,图标等等,都是通过Tweaks进行操作的。sudo apt install gnome-tweak-tool通过Tweaks,你可以方便的切换各种主题、图标,管理各种插件。...
2022-01-24 11:42:30
6432
1
原创 双重指针实战总结
在对应最近的项目的时候,遇到了一次需要用双重指针的对应的情况,这也是第一次在实战中运用双重指针,特此记录下来,以下文章中我都简单定义了一些结构体和函数来方便描述整个过程。具体情景:目前功能需要追加一个get接口,由另一个模块的线程(为了后续描述方便,这里我们称为threadA)来到我这个模块的线程(这里称为threadB)来get某项信息,get的对象类型是结构体Object,数量未知,所以内存的申请与释放都是我这边来处理。typedef struct{ char id; int value;
2022-01-17 15:32:45
572
原创 Ubuntu高效办公软件+插件
这篇文章主要用来记录一下平时用Ubuntu系统的时候,感觉效率比较高的软件和插件。1.Terminator一款比较常用的终端,可以快速在一个窗口中分屏操作.2.Oh-My-Zsh一款强大的zsh框架,可以根据自己的喜欢搭配各种主题,还有许多实用插件,平时用到最多的就是历史命令自动补全功能以及git插件,非常实用,能大大提高工作效率。3.KolourPaintUbuntu下暂时没有找到特别合适的图片编辑软件,暂时用KolourPaint。4.Wine一款用于在Ubuntu下运行Win程序的软件
2021-12-27 20:31:09
1771
原创 GDB调试实战
目前工作大概有两年时间了,调试的时候一直是通过加log,或者是使用Vscode自带的Debug工具进行调试,前一段时间又学习了通过在Vscode中添加条件表达式进行Debug,但是以上调试方法在遇到死机问题时,就不太奏效了。今天在调试程序的时候发生了一个死机问题,借此机会正式学习了一下如何使用gdb工具进行调试。1. GDB安装关于GDB工具的安装,只需要输入以下简单的命令就可以了apt-get updateapt-get install gdb2....
2021-12-13 20:46:08
1007
原创 解决github无法clone
在公司电脑经常会遇到无法从github上 clone 项目的情况,只需要简单的把 github.com 改为 hub.fastgit.org 然后再clone 就可以了。比如:git clone https://github.com/opencv/opencv.gitgit clone https://hub.fastgit.org/opencv/opencv.git...
2021-08-26 16:14:46
6875
原创 RabbitVCS无法自动保存密码的BUG
Ubuntu SVNRabbitVCS是一款在Ubuntu下的SVN客户端软件,但是在使用的时候会存在无法自动保存密码的BUG,输入以下命令即可:sudo apt install python3-svn
2021-07-16 17:55:44
1190
原创 Linux多线程编程实战
1.pthread线程操作相关函数1.线程创建函数声明int pthread_create(pthread_t *newthread,const pthread_attr_t *attr,void *(start_rtn)(void),void *arg);函数说明Create a new thread, starting with execution of START-ROUTINE getting passed ARG. Creation attributed come from ATTR.
2021-01-06 15:19:40
2404
原创 SQLITE3 在C/C++ 中的应用
SQLITE3 在C/C++ 中的应用1.准备SQLite源文件2.C/C++编程1.准备SQLite源文件首先去SQLite官网去下载源文件:官网网站如果在WIN下编程,需要先用下载的源文件生成静态库文件。具体方法如下:解压下载的sqlite-amalgamation-3180000.zip,得到的“sqlite3.h”、“sqlite3.c”、“sqlite3ext.h”三个文件添加到VS空项目中。编译项目,生成sqlite3.dll,sqlite3.obj文件。将sqlite3.obj文
2020-09-25 17:23:53
1811
原创 Android学习总结(未完待续)
@Android入门学习总结1.Android工程解析在Android Studio下新建一个Android项目:java:存放Java代码的地方,业务功能都在这里实现res:存放各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件...
2019-09-30 16:00:45
537
原创 解决unable to find valid certification path to requested target的方法
问题gradle 同步更新项目报错 Cause: unable to find valid certification path to requested target错误原因在于证书失效。证书文件在android studio的security文件下。重新安装一个新的阿里云证书即可。解决方法1.下载阿里云证书chrome打开网站:https://maven.aliyun.com/mv...
2019-09-09 20:11:37
28751
11
原创 C++ const用法总结
const用法总结1.const修饰常用数据类型1.1修饰一般常量及数组1.2修饰指针2.修饰函数的传入值或者返回值2.1 用于函数的形参3. const在类中的用法3.1 const 修饰类中的成员函数3.2 类中声明枚举变量4. const声明类的常量对象C++中const限定符,用于修饰不可改变的量,大体用法主要有以下几种。const修饰常用数据类型const修饰函数的传入值con...
2019-09-06 17:27:57
425
原创 git常用命令总结
下面总结一些git的常用命令:$git init 初始化仓库$git add 添加文件到仓库$git commit -m 把add后的文件提交到仓库$git status 查看仓库当前状态...
2019-09-05 16:18:59
160
原创 拷贝构造函数总结
拷贝构造函数1 什么是拷贝构造函数2 拷贝构造函数的调用时机3 关于深拷贝和浅拷贝浅拷贝深拷贝1 什么是拷贝构造函数拷贝构造函数是一种特殊的构造函数,函数名与类的名字必须一致,必须有一个参数是本类型的引用变量。普通类型的变量之间的复制很简单,例如:int num = 1;int count = num; 但是类的对象是非常复杂的,类对象之间的复制,需要调用类的拷贝构造函数进行:#i...
2019-09-05 15:17:35
524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人