自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nlohmann/json——NLOHMANN_JSON_SERIALIZE_ENUM

nlohmann/json NLOHMANN_JSON_SERIALIZE_ENUM分析

2023-09-20 09:41:37 294

转载 在Android studio中运行一个java程序

转载自。

2023-09-19 14:42:17 214

转载 Android中使用C++程序读写Parcel的简单例子

后来看了一些源码,包括Parcel.h和Parcel.cpp。/********************** 以下是 Parcel_test.cpp 程序 ****************************//********************** 以上是 Parcel_test.cpp 程序 ****************************//********************** 以下是Android.mk文件 ****************************/

2023-09-18 16:58:40 228

原创 C++ 局部变量未初始化引发的程序概率性异常

你可能认为上面这段代码永远不会返回true,但实际上是有概率会返回true的,因为程序中没有对局部变量a进行初始化,在执行到if (a == 1)条件判断时,a的值是未定义的,是可能为1的,也就是说函数func有时返回true,有时返回false,是不可预期的。具体来说:如果是内置类型变量未被显示初始化,它的值由变量定义的位置决定。

2023-08-15 22:42:05 293

原创 C++ Windows删除非空目录

C++ Windows删除非空目录

2023-03-09 10:07:34 472

原创 保存软件编译时间

保存软件编译时间

2022-08-30 22:49:33 328

原创 ubuntu删除boost的坑

ubuntu系统安装boost后,会在/usr/local/include和/usr/local/lib目录下分别存放boost库的头文件和库文件,网上搜索使用以下两个命令卸载boostsudo rm -rf /usr/local/include/boostsudo rm -rf /usr/local/lib/libboost*但是这个这个会删除不完整,还会在系统里面留存boost相关的库,导致你的项目编译的时候总是指向你的本地boost库,还应该删除/usr/local/lib/cmake目录,

2022-03-15 20:44:50 2082

原创 C++单例模式

template<typename T>class Singleton{public: static T& instance(); Singleton(const Singleton&) = delete; Singleton& operator= (const Singleton) = delete;protected: struct Token {}; // 代理类,定义为protected,可以保证子类的构造函数是public...

2022-01-11 21:33:34 215

原创 Ubuntu安装repo

安装步骤:1、根目录下创建.bin文件夹mkdir ~/.bin2、配置为永久环境变量打开:vi ~/.bashrc在文件末尾加上:export PATH=~/bin:$PATH生效:source ~/.bashrc3、下载repo源码git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo4、将下载的git-repo中/repo/目录下的repo可执行文件拷贝到bin目录5、在bin目录下创建s

2021-08-26 10:50:48 6889 1

原创 函数调用之回调函数

重新回到CSDN,工作以来写第一个博客。不码代码,不追求高大上的专业术语,只求通俗的理解。以前听过回调函数,也研究过,但由于没有在实际中用过,所以也没太懂,每次一听到回调函数这个词,感觉很高大上,最近在工作上遇到了,而且被公司前辈广而用之,这说明这个东西并不高大上,反而是一个很平常的知识点。什么是回调函数:第一,回调函数肯定是一个函数,和普通的函数一样(个人感觉“回调”这个名字取得不好...

2018-08-28 23:10:58 10697 5

原创 无权二分图的最大匹配求解——匈牙利算法求解

基于匈牙利算的二分图最大匹配只能找到全局的最大匹配数,这个最大匹配数是一定的,即使有多种最大匹配情况,但所得的最大匹配关系有可能并不是唯一的。

2018-01-03 21:11:55 2567 1

原创 图数据结构的相关定义

一个图(Graph)G=(V,E)是由顶点集合(V)和边集合(E)组成;边:图中的一条边用点对(a,b)表示;图分为有向图和无向图;有向图:即边(a,b)是有方向的,可以是a->b,也可以是b->a,这是两条不同的边;无向图:即边(a,b)是无方向的,a->b和b->a是同一条边;边权值:即指边上的权值属性,如果一个表示多个城市之间道路联通的图,那么两个城市之间的距离就可以作为

2018-01-03 11:14:42 726

原创 Linux下GCC编译器链接任意目录下库文件(解决错误“/usr/bin/ld: cannot find -lxxx”)

最近在Linux环境下用GCC编译器执行链接命令时出现了错误:“/usr/bin/ld: cannot find -lxxx”,我们都知道g++ 编译中链接库文件选项有: -L **  -lxxx,这条命令格式中 -L 告诉编译器哪里去寻找库文件,** 指的是库文件所在路径,xxx 是库文件的名称,最关键的是-lxxx 告诉编译器去找文件名为libxxx.a的库文件,而不是文件名为xxx.a的库文

2017-10-17 17:27:18 6326

转载 深入浅出UML类图

UML类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。

2017-09-14 10:40:00 524

原创 reference to non-static member function must be called

问题的原因其实就是函数参数不匹配的问题。因为我们普通的成员函数都有一个隐含的this指针,表面上看我们的谓词函数com()只有两个参数,但实际上它有三个参数,而我们调用sort()排序函数的时候只需要用到两个参数进行比较,所以就出现了形参与实参不匹配的情况(函数有三个形参,但是只输入了两个实参)。

2017-09-11 11:15:39 52830 21

原创 static与全局变量

普通的全局变量也称外部变量,在一个程序工程中,全局变量是整个工程都可见的,也就是说只需要在工程内的某一个文件内定义全局变量一次,在其他文件内都是可见的。而static全局变量的作用域仅限于所在文件内部,工程内的其他文件不可见

2017-09-06 21:39:27 5596 1

原创 二叉树应用——后缀表达式构建表达式树

针对前一篇博文后缀表达式求值、中缀表达式到后缀表达式的转换,已经可以实现中缀表达式到后缀表达式的转换,这里再介绍根据后缀表达式构建表达式树,那我们就能够从这两种常用类型的输入表达式(中缀和后缀)生成表达式树。

2017-09-05 19:35:32 20721 2

转载 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解

在进行网络编程时,我们常常见到同步(Sync)、异步(Async),阻塞(Block)、非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。异步: 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。阻塞: 阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非

2017-07-25 11:24:01 611 1

原创 VS2013社区版试用30天过期重新激活

首先说解决这个问题的正确步骤:(1)注册一个微软账号。直接百度搜索“微软账号登录”(2)注册完成,关闭浏览器,再打开浏览器登录微软账号(3)然后打开VS2013,在VS2013里面登录刚刚注册的微软账号。千万不要像网上说的又是更新IE版本,又是更新Windows,这些都不需要。

2017-07-23 21:42:02 15555 5

原创 Boost并发编程之shared_mutex

读写锁比起mutex具有更高的适用性,具有更高的并行性,可以有多个线程同时占用读模式的读写锁,但是只能有一个线程占用写模式的读写锁,读写锁的基本规则可以总结为“写优先,读共享,交叉互斥“.

2017-07-22 21:24:30 14543 2

原创 C++动态类型与静态类型

大多数情况下对象的静态类型和动态类型相同,我们不用关系二者区别;只有多态情况下,即在有虚函数的继承体系中,通过基类的指针或引用调用虚函数时,这时我们就需要关系指针或引用对象的动态类型,因为它们的静态类型毋庸置疑是基类,但动态类型有可能是子类(其实也不是有可能,要想应用多态,其动态类型必须是子类),所以动态类型就是跟虚函数、多态、动态绑定息息相关的。

2017-07-21 15:00:45 9174 7

转载 一种肯定能提高开发者编程能力的方法

如果你想提高编码的能力,最容易想到的一个方法就是编写更多的代码。每个人都知道这点。然而,另外一种我认为绝对也能提高的方法,可以说完全是这种方法的反面,即阅读别人的代码能让你的编码能力得到明显的提升。

2017-07-20 11:30:03 399

原创 Boost常用组件概览

在程序开发中,千万要“避免重复造轮子”(这样下来只会浪费时间,也就是吃力不讨好),所以,如果在开发中遇到了什么问题,首先查阅STL、Boost库,如果不能解决,再上网查,实在没有可以参考的已有方案再自己动手。

2017-07-19 20:16:42 4996 1

原创 LeetCode(38) Count and Say

这道题看起来比较难,是一道平常没有接触过的题目,但是越是这种题目,越到对问题进行分析,因为这种问题一般都会有规律可行。再来说这个题目,意思是教你数(shu三声)数(shu四声)。(1)这个数列的第一个是“1”;(2)从第二个就开始数(shu三声)数(shu四声),数(shu三声)哪一个数(shu四声)呢?是数(shu三声)前一个,对于第二个来讲,就是数第一个,怎么数(shu三声)呢?第一个

2017-07-19 15:26:20 341

原创 unordered_multimap的insert问题

无序关联容器在存储上组织为一组桶,每个桶保存零个或多个元素。无序容器使用一个哈希函数将元素映射到桶。如果容器运行重复关键字,则所有具有相同关键字的元素都保存在相同的桶中

2017-07-19 14:37:14 2909

原创 C++继承与Class 内存模型

C++类主要包括属性和操作两类,在对象模型中即一个对象实例中占用内存的只是Class的属性部分,也就是数据成员部分,本文旨在剖析C++对象模型中在有继承情形下类对象的内存布局,主要分4种情况讨论:单一继承没有多态、单一继承有多态、多重继承、虚拟继承。

2017-07-12 16:01:47 1181

原创 操作系统概述

一个功能完善的操作系统的大小和它所能处理的任务的困难性,导致了4个让人遗憾但又普遍存在的问题。第一、正式发布的操作系统表现出习惯性的落后;第二、需要不断进行补丁修复;第三、总是无法满足预期的要求;第四、不可能开发出真正完整和安全的操作系统。综上所述,所以要尽可能追求操作系统结构上的完整性。

2017-07-07 10:31:48 356

原创 操作系统与操作系统内核

总的说来,一个操作系统包含了内核(是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件)以及其他计算机系统所必须的组件(如函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的使用者接口(Unix shell)等,这些都是操作系统的一部分,而且每一个模块如编译器都是一个单独的进程,运行在操作系统中)。

2017-07-06 10:39:57 35814 11

原创 动态规划算法

动态规划(dynamic programing)算法是一种分阶段求解决策问题的数学思想,主要思想就是大事化小、小事化了。同时,动态规划有三个基本准则:(1)最优子结构;(2)边界条件;(3)状态转移。利用动态规划方法求解问题就是需要找到上述三个准则,对问题进行动态规划建模。

2017-07-02 11:47:26 356

原创 STL全排列函数详解

STL中有两个关于全排列的函数,分别为next_permutation(下一个排列)和prev_permutation(上一个排列),这两个算法都是以“字典序”为准则进行全排列的。

2017-06-30 10:51:18 2030

原创 Linux读取串口数据

最近项目中需要在Linux系统下读取串口数据,由于使用的Ubantu系统,开发工具是Qt Creator,所以首先在网上百度了一下,找到了几篇博客,大致内容上都差不多。由于使用的Qt4,其没有自带的串口类(Qt5就自带了串口类了,可以直接使用),Qt的强大就在于它的开源性和跨平台型,针对Qt4在Linux下的串口程序,网上有一个第三方库,即qextseriaport类,单大多数博友写的关于qextseriaport类的使用都是针对Windows平台的,既然Qt是跨平台的,那么qextseriaport也肯定

2017-06-05 08:16:35 21616 3

原创 C++栈的应用——后缀表达式求值、中缀表达式到后缀表达式的转换

一、前言    通常我们把栈归为一种基本的数据结构,同时它也是一种线性表结构,也就是说你要自己实现一个栈的数据结构,既可以用数组实现,也可以用链表实现。栈最主要的特点就是“先进后出”,因为栈只有一个入口和出口。 二、实现栈结构    根据栈的先进后出的特点,很容易设置栈结构的接口:入栈、出栈、判空、size()等,熟悉数据库的同学都知道数据库无非就是四种操作:增、删、改、查,其实对...

2017-06-03 09:06:49 19254 3

原创 桶排序与基数排序

任何算法首先始于思想(逻辑),只有思想(逻辑)是对的,才需要考虑优化算法的时间消耗和内存消耗。

2017-06-01 08:57:43 1196

转载 白话算法之【动态规划入门】

动态规划(Dynamic Programming,所以我们简称动态规划为DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。

2017-05-26 11:26:48 409 2

原创 C++异常处理机制

要理解C++异常处理机制,首先要理解异常处理的基本流程,即异常从哪里抛出(throw),抛出异常之后程序怎么执行(跳转到对应catch语句块),异常处理完成之后程序又怎么执行(再跳转到最后一个catch之后的代码);其次,对于C++面向对象的思想(有很多大牛都批评是只是伪面向对象),即一切都是类,一切都是对象,那当然异常也是一个类型,也可以声明和定义一个异常对象,并调用其相应的成员函数和访问数据成员。

2017-05-20 21:23:28 632

原创 线性表、链表、栈、队列的关系

程序员在编程实战操作面前有两个拦路虎,第一个是用递归的思想去解决问题,第二个是数据结构与算法的应用。对于递归,由于其神奇的薄面纱总是然我们觉得难以理解,而大多数递归解法还是需要承担一定的计算负担的,因此我觉得能理解其思想与用法固然好,但是实在无法理解也只能慢慢适应。而对于第二个难题,数据结构与算法基本上每一个程序员都需要了解,因为,算法是解答一个问题的基本逻辑,如果你可以证明这个逻辑是正确的,那接下来的问题就是应该采用什么样的数据结构来保证你的程序能有最高的执行效率,即比较好的时间复杂性,同样内存空间消耗也

2017-05-16 09:14:31 10638

原创 (一)初识线程与进程

最近项目中用到多线程,问题背景是:有个数据采集设备,使用以太网进行通信,一旦建立以太网链接之后,该设备自己的内置程序就可以并行的循环接收多个类型的数据(也就是它自己有一个数据接收线程),那么现在我需要以一定的周期读取这些数据,并且保证这些数据是该设备最近一次读取的完整数据,因为设备接收并保存的数据是一个比较大的数据区段,它自身是用vector保存的,这就涉及到了对一段内存区域的同时读取操作,即设备自身在不停的写这个内存区域,而我自己的程序在不停的读这个区域,这就需要使用多线程同步技术来保证每次读取的数据都是

2017-05-11 09:54:58 322

原创 对宏定义的作用域的一点思考

C语言标准中宏定义的作用域是,从定义位置开始,到其当前所在作用域结束,即宏定义只属于当前这个文件,其他文件如果没有通过#include包含这个文件,那就不能使用这个宏定义。

2017-05-09 09:07:25 22221 8

原创 C++函数中const引用形参的一点理解

const关键字的作用很多,这里只解释它作为函数形参的一个作用,主要有两个作用:(1)它告诉编译器,这个参数是一个常量,首先你在函数内部不能改变它;(2)其次,如果在函数内部需要多次引用这个值,CPU不必每次都重新读取,直接使用第一次读取的值(我想应该是存放在寄存器文件中的)。

2017-05-08 17:18:24 4356 3

原创 对C++IO库的一点理解

总之,对于三种IO流对象,都需要把流当做一个中间缓存,即作为变量与文件、标准输入输出外设、内存string之间的,要体会这三者之间的数据流向,比如cin对象,其数据流向为从键盘到cin(中间缓存)再到变量,对于ofstream对象,数据流向为变量到中间缓存再到文件,对于istringstream对象,其数据流向为string字符串常量到中间缓存再到string变量。

2017-05-08 16:03:58 722

WIN系统磁盘容量统计神器:windirstat

WIN系统磁盘容量统计神器:windirstat

2023-08-20

Q-Dir_Installer_x64.zip

Q-Dir_Installer_x64.zip

2021-10-13

求解两个坐标系之间的转换矩阵

求解两个坐标洗之间的转换矩阵,即求解旋转量和平移量

2015-05-13

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

TA关注的人

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