自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于GDBus框架的进程间通信详解

首先简单介绍一下什么是GDBus。GDBus是一种基于d-bus技术的进程间通信框架,其中最核心的部分就是“Bus”,个人理解,它就是一个进程间通信的“桥梁”,不同的进程之间进行接收或者传递消息,都需要通过这个"Bus"总线。进程间通信的消息都会先发送到"Bus"总线上,然后再分发到目标进程上,"Bus"总线会根据收到消息的类型不同,采取不同的处理,主要处理可以分为两类:函数调用、信号广播。为了方便起见,我们假设有两个进程需要进行通信,一个Client进程,一个Server进程。...

2020-07-02 22:01:18 7271 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 377

原创 初步理解LINUX信号

在程序调试阶段,相信大家一定会遇到过程序崩溃的情况,当程序发生严重错误,导致无法继续运行的时候,系统会发出信号,要求程序停止运行。其中最常见的就是SIGSEGV信号。然而最近又遇到过一个新的信号,SIGBUS,并且崩溃的时候看不到任何堆栈,从网上查阅相关资料后,在这里做一下总结。有一篇关于信号类型的详细介绍的文章,描述的很好,下面内容转发自该文章。其中常用的也就上述加粗的信号。

2023-02-08 17:26:30 232

原创 GDB调试实战(二)

近段时间在测试程序的时候,遇到了许多问题,又需要再次用到gdb,虽然之前也写过一篇关于gdb调试的文章,但是涵盖的内容比较片面,有许多实用的gdb命令和操作都没有介绍到,于是又写了这篇文章来丰富加强一下自己的gdb技能。

2022-11-10 17:12:13 1474

原创 Ubuntu安装后的一些个性配置

Ubuntu安装后的一些实用配置

2022-05-26 17:47:26 710

原创 CMakeLists教程(实战总结)

   CMake 是一个开源、跨平台的工具,旨在构建、测试和打包软件。CMake是makefile的上层工具,用于跨平台构建环境,生成可移植的makefile,并简化自己动手写makefile时的巨大工作量。前言    工作已经接近三年时间,做过大项目也有三四个了,关于项目代码整体编译,一定是离不开CMake。之前一段时间,仅仅是能看懂一些简单的CMake命令,编写一些基础的CMakeLists文件。然而最近一段时间,项目代码需要重构,代码内容以及代码结构都进行了调整,与之伴随的任务就是要重新去构建

2022-05-05 16:34:06 11296 1

转载 Ubuntu 通过deepin-wine安装微信

Ubuntu安装deepin-wine微信

2022-02-25 14:45:30 6344

原创 Ubuntu 20.04 美化教程

这篇文章主要用来记录一下关于Ubuntu 20.04各种美化的方法,先看一下我这边搭配的一套最喜欢的效果图。1. Tweaks首先要安装一下Tweaks,后面想要切换下载的主题,图标等等,都是通过Tweaks进行操作的。sudo apt install gnome-tweak-tool通过Tweaks,你可以方便的切换各种主题、图标,管理各种插件。...

2022-01-24 11:42:30 6231 1

原创 双重指针实战总结

在对应最近的项目的时候,遇到了一次需要用双重指针的对应的情况,这也是第一次在实战中运用双重指针,特此记录下来,以下文章中我都简单定义了一些结构体和函数来方便描述整个过程。具体情景:目前功能需要追加一个get接口,由另一个模块的线程(为了后续描述方便,这里我们称为threadA)来到我这个模块的线程(这里称为threadB)来get某项信息,get的对象类型是结构体Object,数量未知,所以内存的申请与释放都是我这边来处理。typedef struct{ char id; int value;

2022-01-17 15:32:45 514

原创 Ubuntu高效办公软件+插件

这篇文章主要用来记录一下平时用Ubuntu系统的时候,感觉效率比较高的软件和插件。1.Terminator一款比较常用的终端,可以快速在一个窗口中分屏操作.2.Oh-My-Zsh一款强大的zsh框架,可以根据自己的喜欢搭配各种主题,还有许多实用插件,平时用到最多的就是历史命令自动补全功能以及git插件,非常实用,能大大提高工作效率。3.KolourPaintUbuntu下暂时没有找到特别合适的图片编辑软件,暂时用KolourPaint。4.Wine一款用于在Ubuntu下运行Win程序的软件

2021-12-27 20:31:09 1667

原创 GDB调试实战

目前工作大概有两年时间了,调试的时候一直是通过加log,或者是使用Vscode自带的Debug工具进行调试,前一段时间又学习了通过在Vscode中添加条件表达式进行Debug,但是以上调试方法在遇到死机问题时,就不太奏效了。今天在调试程序的时候发生了一个死机问题,借此机会正式学习了一下如何使用gdb工具进行调试。1. GDB安装关于GDB工具的安装,只需要输入以下简单的命令就可以了apt-get updateapt-get install gdb2....

2021-12-13 20:46:08 949

原创 解决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 6556

原创 RabbitVCS无法自动保存密码的BUG

Ubuntu SVNRabbitVCS是一款在Ubuntu下的SVN客户端软件,但是在使用的时候会存在无法自动保存密码的BUG,输入以下命令即可:sudo apt install python3-svn

2021-07-16 17:55:44 1030

原创 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 2248

原创 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 1679

原创 Android学习总结(未完待续)

@Android入门学习总结1.Android工程解析在Android Studio下新建一个Android项目:java:存放Java代码的地方,业务功能都在这里实现res:存放各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件...

2019-09-30 16:00:45 482

原创 解决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 27121 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 253

转载 【转】new和malloc的区别

new和malloc的区别

2019-09-06 10:04:02 148

原创 git常用命令总结

下面总结一些git的常用命令:$git init             初始化仓库$git add            添加文件到仓库$git commit -m          把add后的文件提交到仓库$git status          查看仓库当前状态...

2019-09-05 16:18:59 127

原创 拷贝构造函数总结

拷贝构造函数1 什么是拷贝构造函数2 拷贝构造函数的调用时机3 关于深拷贝和浅拷贝浅拷贝深拷贝1 什么是拷贝构造函数拷贝构造函数是一种特殊的构造函数,函数名与类的名字必须一致,必须有一个参数是本类型的引用变量。普通类型的变量之间的复制很简单,例如:int num = 1;int count = num; 但是类的对象是非常复杂的,类对象之间的复制,需要调用类的拷贝构造函数进行:#i...

2019-09-05 15:17:35 401

空空如也

空空如也

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

TA关注的人

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