自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 资源 (8)
  • 收藏
  • 关注

原创 RGB转YUV420,支持NV12(420p)和NV21(420sp)

最近项目是用到了RGB格式转YUV420格式,写了一个接口:

2022-12-05 11:36:41 1555 1

原创 获取文件夹下所有文件,支持windows和linux系统

【代码】获取文件夹下所有文件,支持windows和linux系统。

2022-11-29 14:51:10 365

原创 解决C++工程中调用FFMPEG库报接口undefined reference问题

因此总结如下:在C++的开发工程中调用C接口,编译链接遇到接口“undefined reference”的问题,在确保相关接口确实导出到库中是,一般是代码中C++与C接口调用兼容性的问题,可以通过在include头文件增加extern C的标识即可解决。1、想到ffmpeg是C语言编写的库,单独写个调用的测试源文件,例如main.cpp,调用相关接口,编译就报上述描述的问题,尝试将main.cpp修改为main.c,编译,发现编译成功。重新编译工程,发现编译通过。相关的接口导出形式如上。

2022-10-19 20:14:30 984

原创 C++类中子类和父类的接口相互调用

发现作为代码狗的我,时间久了,都快忘记了一些C++语言的基础知识,现在写篇文章记录一下,内容主要是涉及C++类的多态性,子类和父类的接口相互调用关系。3、在父类中调用子类多态性质的接口,方式是使用虚函数、加override实现,并给父类设置一个上下文。2、外部调用真实类的接口,方式是使用类的多态性实现,虚函数、加override实现。1、在子类中调用父类的接口(主要是重载接口),方式是父类::接口。

2022-09-29 23:31:19 2445 3

原创 std::bind绑定类成员函数的示例

近期在项目开发过程中,很苦恼设置回调函数时,需要写个全局静态函数转换一下的实现方式,了解C++新特性里面的std::bind之后,感觉使用起来非常简单方便,于是写了个测试用例(代码中利用普通类和单例类进行了测试)做了个测试,效果比较好。

2022-09-28 11:07:42 875

原创 std::shared_ptr作为函数形参,通过值传递、引用传递的问题解答

,结合看了一些开源代码的实现,并没有满足这个建议进行实现,于是做出了自己的思考,现在编译优化,以及智能指针和引用传递的特点,应该不影响智能指针引用计数的变化,及引用传递时,只是一个别名,使用前后,不改变智能指针的使用计数,从而定义函数接口时,使用值传递和引用传递都不受影响,除非使用者在接口调用前后,或者调用的接口内部,自己强行delete智能指针的空间,或者修改其使用计数。

2022-09-23 22:29:51 2550 2

原创 Linux-X86和Linux-ARM编译binutils

工程开发中需要用到binutils里面相关工具,例如库和进程分析工具的nm、addr2line等,某些环境下可能没有这些工具,于是需要自己安装,这里记录一下安装过程,详细讲解了Linux-X86和Linux-ARM环境下的编译安装过程。2.Linux-ARM环境,以gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu交叉工具链为例。Linux-ARM中修改系统时间(中国区东八区,设置时间应该-8小时)--with-gmp的值为上文gmp安装的路径。

2022-09-13 21:55:09 2020

原创 使用std::chrono获取系统时间

替代传统获取系统时间戳的方式,推荐使用std::chrono方式。

2022-09-07 17:28:31 3445

原创 linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析

在项目软件代码开发中,当软件代码量多了后,由于各种疏忽和编码审查不严格,导致代码中存在缺陷,程序运行后总是有各种异常出现,严重的导致程序崩溃,这个时候就期望能够在程序崩溃时,记录异常点相关的堆栈信息,用于对异常的分析,常见的方法有在系统中配置程序崩溃生成coredump文件,后续用gdb分析,这种方法需要了解gdb常用指令,并且涉及到修改了系统的一些配置,同时release版本下,有时候用gdb分析不一定有效,因此本文通过软件代码实现,简单记录程序崩溃的信息,主要使用到的是backtrace、abi::..

2022-05-19 16:39:34 4139

原创 两个16进制字符串相加的c++代码实现

近期写了一个工具的时候需要用到对两个16进制字符串相机的实现,查阅了一下,可以简单的使用strtol函数实现,记录一下:#include <iostream>#include <stdlib.h>#include <string.h>/************************************************************* * 功能:两个16进制的字符串相加 * 输入参数: * pStr1:字符串1 * pStr2

2022-05-19 14:53:15 1557

原创 获取某进程cpu占用状态等信息,并保存到文件 linux (ubuntu)

最近工作中,需要对开发的程序进行性能测试,记录该进程的cpu、磁盘占用的等信息,并能够将该信息保存到文件中,便于后续查询和分析,于是编写了个脚本,适应linux系统,验证环境为ubuntu。获取进程的pid信息指令为:#name为进程的名称pid=$(pidof name)之前的博客里面有写道查询进程的信息指令为:#pid为进程的idtop -p pid单次信息输入到文件中(信息会覆盖),也可使用下面的指令:#name为进程的名称top -n 1 -b |grep -E

2022-02-18 21:29:54 3806

原创 windows下使用protobuf的简单示例

最近由于项目需要用到protobuf,在这里记录一下使用情况:编译protobuf成功后,windows系统种会在相关的目录下生成libprotobuf.dll、libprotoc.dll、protoc.exe,需要用到生成protobuf定义文件的程序为protoc.exe。1、在protoc.exe同级目录下,新建和编写example.proto文件,内容为:syntax = "proto3";package EamplePB;message TestMsg{ int32

2021-09-06 11:03:49 436

原创 6字节的BCD码转为12位的电话号码,C++版本

将BCD[6]转为phoneNum[12];void convertPhoneNumByBCD(char* pPhomeNum, const char* pBCDCode){ if (!pPhomeNum || !pBCDCode) { return; } int iIndex = -1; unsigned char ucBCD = 0; for (int i = 0; i < 6; ++i) { ucBCD = (unsigned char)pBCDCode[i];

2021-08-18 18:00:37 636

原创 结构体二级指针使用示例

#define INPUT_CNT 5struct InputDataInfo{ int iVal; double dVal;};void struct2PointerTest(){ InputDataInfo* pInfo[INPUT_CNT] = {0}; for (size_t i = 0; i < INPUT_CNT; i++) { pInfo[i] = new (std::nothrow) InputDataInfo(); if (pInfo[i]) {.

2021-08-17 17:37:00 282

原创 std::thread使用出现pure virtual method called问题的解决

最近在arm环境下,编译程序运行时出现:pure virtual method calledterminate called without an active exceptionAborted的问题,查阅后,主要是由于编译工具链编译参数配置不正确导致的,解决方案编译时增加-D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4}的配置。具体为:arm-oe-linux-gnueabi-g++ -std=c++11 -D__GCC_HAVE_SYNC_C

2021-07-28 10:47:56 591 1

原创 std::copy对std::vector、std::set、数组的使用

注意:std::copy只负责复制,不负责申请空间,所以复制前必须有足够的空间!!!std::copy的函数形式为:std::copy(src_start_iter, src_end_iter, std::back_inserter(dst_container));以下为写的测试代码:#include <iostream>#include <string>#include <algorithm>#include <vector>#i

2021-07-26 17:28:02 6035

原创 文件读写操作C++

最近整理了一下使用C++语言实现文件读写,比较简单,直接贴上代码:#include <iostream>#include <stdlib.h>#include <string.h>#include <string>#include <fstream>#define SERIAL_NO_LEN 32#define NAME_LEN 32#define GENDER_LEN 8#define PHONE_LEN 1

2021-06-30 16:00:51 240

原创 C++回调函数的简单应用

下面代码展示了c++语言中实现简单回调函数的使用,注:c++新特性采用std::function和std::bind带来了更多的便利。下文的实现方式只是为了和c语言兼容。#include <iostream>#include <stdlib.h>#include <stdio.h>#include <vector>#include <string>typedef int (*pfnParseData)(const char* pD

2021-06-18 16:15:29 2279

原创 vcpkg编译库位数总结

vcpkg的优点如下:自动下载开源库源代码源码包的缓存管理和版本管理,可以升级版本轻松编译依赖关系检查(比如编译libcurl,会自动下载zlib、openssl进行编译)无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编...

2021-06-01 14:49:23 852

原创 在数组中对自定义的数据类型使用sort进行简单的排序示例

最近工作开发上,会使用到在数组中对自定义的数据类型使用sort进行简单的排序,下面写一个示例:#include <iostream>#include <stdlib.h>#include <stdio.h>#include <algorithm>struct object{ int iId; double dVal;};bool compareObject(const object &stObj1, const objec

2021-05-25 11:05:01 177

原创 c++11中std::thread的简单使用示例

本文为c++11中std::thread的简单使用示例,请看代码:#include <iostream>#include <thread>#include <chrono>static bool g_bRun = false;void pfnThreadFunc1(){ unsigned int uiCnt = 0; while (g_bRun) { if (0 == ++uiCnt % 100) { std::cout <

2021-04-30 14:15:01 983

原创 实现自定义的MyString类

面试字节的第一个题目,实现自定义的MyString类,直接上代码:#include <iostream>#include <stdlib.h>#include <string.h>static int g_iDefaultLen = 16;class MyString{public: MyString(); MyString(const char *pData, int iLen = -1); ~MyString(); MyS..

2021-01-26 21:44:02 600

原创 MongoDB学习笔记(5)——windows环境下使用MinGW编译mongocxx-driver

一、环境和编译包说明:1、mongodb driver说明网址http://mongocxx.org/;2、mongc-driver为:mongo-c-driver-1.17.3.tar.gz3、mongcxx-driver为:mongo-cxx-driver-r3.6.2.tar.gz4、boost库为(非必须,vs2017编译时需用到,其余暂无用到):boost_1_74_0.7z,路径为:https://www.boost.org/users/download/5、cmake下载路

2020-12-17 16:14:18 932

原创 MongoDB学习笔记(4)——centos7.6环境下编译mongocxx-driver

一、环境和编译包说明:1、mongodb driver说明网址http://mongocxx.org/;2、mongc-driver为:mongo-c-driver-1.17.3.tar.gz3、mongcxx-driver为:mongo-cxx-driver-r3.6.2.tar.gz4、boost库为(非必须,vs2017编译时需用到,其余暂无用到):boost_1_74_0.7z,路径为:https://www.boost.org/users/download/5、cmake下载路

2020-12-15 18:02:46 677

原创 MongoDB学习笔记(3)——ubuntu16.04环境下编译mongocxx-driver

一、环境和编译包说明:1、mongodb driver说明网址http://mongocxx.org/;2、mongc-driver为:mongo-c-driver-1.17.3.tar.gz3、mongcxx-driver为:mongo-cxx-driver-r3.6.2.tar.gz4、boost库为(非必须,vs2017编译时需用到,其余暂无用到):boost_1_74_0.7z,路径为:https://www.boost.org/users/download/5、cmake下载路

2020-12-15 17:19:33 630

原创 MongoDB学习笔记(2)——使用VS2017编译mongocxx-driver

一、环境和编译包说明:1、mongodb driver说明网址http://mongocxx.org/;2、mongc-driver为:mongo-c-driver-1.17.3.tar.gz3、mongcxx-driver为:mongo-cxx-driver-r3.6.2.tar.gz4、boost库为(非必须,vs2017编译时需用到,其余暂无用到):boost_1_74_0.7z,路径为:https://www.boost.org/users/download/5、cmake下载路

2020-12-15 16:54:12 308

原创 MongoDB学习笔记(1)——服务环境配置

一、前言本系列文章旨在总结和记录本人在学习和探索MongoDB的过程,文中将详细列出各操作步骤和遇到问题的解决方案。环境:1)、客户端在windows10,使用mongodb compass;2)、服务端部署在linux,ubuntu 16.04中;学习过程参考文章:https://www.runoob.com/mongodb/mongodb-tutorial.html二、MongoDB Server配置和启动1、下载压缩文件链接:https://www.mongodb.com/

2020-12-01 16:34:28 139

原创 使用Windbg分析Windows程序崩溃

以下步骤适用与分析独立运行后产生dump文件的程序或者使用Windbg监视运行的程序崩溃。如果生成了dump文件:1、将崩溃文件(dmp)和崩溃的程序(exe)及其对应的pdb文件放到同一个目录,例如:F:\dump;2、打开windbg;3、点击菜单file->open crash dump,打开dmp文件;4、点击菜单file->symbol file path,填入符号文件路径:  F:\dump;SRV*F:\dump*http://msdl.microsoft

2020-08-27 11:20:44 2588

原创 解决windows编译的程序运行时报loadlibrary failed with error 126的问题

最近写了一个程序,用到了opengl相关的库,发布运行的时候报了loadlibrary failed with error 126的问题,网上很多拷贝atio6axx.dll或者注册表的解决方法,但是尝试过都失败了。最近想到是不是由于双显示卡的问题。进入计算机-->管理-->设备管理器-->显示适配器中,禁掉一个显示卡,一般保留AMD Radeon这个既可以。重新运行程序,程序即可运行正常。...

2020-08-25 11:14:58 8429 4

原创 Java实现获取UTC时间的方法的问题整理

由于一些博客写的Java实现获取UTC时间都不正确,本文在这里提供一种可行的方法实现获取UTC时间(单位为ms)的值,代码如下:public static long getCurrentUtcMillisTime() { Calendar calendar = Calendar.getInstance(); //TimeZone timeZone = TimeZone.getTimeZone("GMT-10:00");//根据时区偏移获取utc时间 //calendar.setTimeZo

2020-05-25 18:45:12 2312

原创 CentOS 7 gcc 4.8.5升级到版本 5.4.0【修改】

转载加修改:原文地址:CentOS 7 gcc 4.8.5升级到版本 5.4.0文中步骤修改说明:mkdir gcc-build-5.4.0cd gcc-build-5.4.0/usr/local/src/gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multi...

2020-03-19 14:24:07 953

原创 分享一个常识:通用性Http文件下载服务

分享一个http通用性文件下载服务常识。当下载服务器的文件时,一般服务器会返回客户端一个文件下载相对路径,例如/file/doc/readme.txt,客户端需要下载这个文件时,简单的GET请求,http://ip:port/file/doc/readme.txt即可过得这个文件的内容,即要求http服务端至少需要支持远程访问服务器本地路径的功能,并且返回这个路径中的内容给客户端。tips:服...

2020-01-03 15:05:20 396

原创 OpenSSL库编译程序网站

OpenSSL库编译程序网站http://slproweb.com/products/Win32OpenSSL_Full_01.html

2019-11-12 16:15:10 136

原创 int float写入字节数据各字节序的实现

int与字节数组转换比较简单,用变量位与oxff等和移位即可实现,因为变量位与0xff等已经不受计算机cpu大小端序的影响,可直接实现,如:#define BYTE0_LITTLEEND(val) static_cast<unsigned char>((val) & 0xFF)#define BYTE1_LITTLEEND(val) static_cast<uns...

2019-11-04 14:28:06 821

原创 C++类型转换总结

总结:1、去除const属性用const_cast;2、基本类型之间转换用static_cast;3、多态类之间的类型转换用daynamic_cast;4、 不同类型的指针类型转换用reinterpret_cast。网络其他作者的博客,可参考这个博主的文章:https://blog.csdn.net/qq_40421919/article/details/906772...

2019-10-17 13:48:01 112

原创 在头文件中typedef C/C++源文件struct指针问题

问题描述这就是一个结构体前置声明使用的问题,具体为:1、在a.cpp里面定义了结构体如下:struct stA{ int iVal;};2、在b.h中需要将strA指针作为形参传入某个接口,但是调用者可以不关心这个结构体的信息,如:typedef struct stA* pstADef;void func(pstADef pst);3、在main.cpp里面调用这个接...

2019-09-23 14:41:31 1831

原创 QT删除某文件目录下的空文件夹

最近由于业务需求,需要实现删除某个文件目录下的空文件夹功能,具体看如下代码:bool checkFileOrDirExist(const QString qstrFileDirOrPath){ bool bRet = false; QFileInfo objFileInfo(qstrFileDirOrPath); if(objFileInfo.isFile()) ...

2019-06-28 11:07:23 1147

原创 QtCreator工程依赖第三方动态库(.so)编译报undefined的问题解决方法。

问题描述:代码工程中应用App1依赖Lib1编的动态库(.so),Lib1编译依赖第三方动态库SharedLibB.so,在编译整个工程编译时,报:xx.so,not found(try using -rpath or -rpath-link)undefined refrence to xxxxxFunc1 (注意:为SharedLibB.so中的防范)undefined ref...

2019-04-19 15:01:03 2503 3

原创 linux和arm下查看某进程的使用情况

cat /proc/pid/status 可以查看进程的运行情况;其中:VmSize表示虚拟内存大小,VmRss表示实际内存大小,Threads表示线程数如:cat /proc/2083/status

2019-02-20 12:11:26 2724

原创 VMware workstation创建虚拟机不支持64位操作系统的问题解决方案

前提:实体PC是x64框架,并且安装了64位windows系统(本文是win10系统)。问题:使用VMware workstation创建64位虚拟机时,在该页面显示如下“客户机不支持64位...”如果不管这个问,创建的虚拟机,在启动时报错,导致启动失败。解决方案:前提:pc支持64位框架。1、进入bios中确定intel(R) vitualization technology状态,disable...

2018-05-10 10:07:18 26373 14

mongodb-cxx-driver-r3.6.2使用vs2017编译的项目和测试代码

本资源使用vs2017编译的mongodb-cxx-driver-r3.6.2,里面包括相关源码,以及使用cmake编译的工程,同时写了一个测试工程,能够对mongodb数据库进行简单的操作。

2020-12-10

JsonCpp和RapidJson使用对比

使用VS2010编译工程,JsonCpp和RapidJson使用对比。

2017-08-05

Android studio jni简单编程实例

这是一个简单的android studio中jni编程实例,包括生成.so和.jar方法,并且用test进行验证。

2017-03-16

Android Studio JNI编程入门实例

这是一个Android Studio的jni编程入门实例,配置方式简单易懂,本人有相应的博客说明,欢迎交流。

2017-03-11

Jni测试引用第三方静态库和动态库demo

Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法,这是Jni测试引用第三方静态库和动态库demo

2017-01-15

eclipse 的 ADT插件

这是java开发环境eclipse的ADT插件,在eclipse中直接导入安装即可用,非常方便。

2014-05-16

Matlab同态滤波

用matlab编写的同态滤波器。自己编写的,感觉用起来很不错哟,试试看!

2014-04-17

电脑无线WIFI

电脑无线WIFI,简单实用,用他自己可以建立一个WIFI信号,周围的朋友都可享用。

2013-03-02

空空如也

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

TA关注的人

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