- 博客(112)
- 资源 (8)
- 收藏
- 关注
原创 linux下使用脚本实现对进程的内存占用自动化监测
VmRSS:表示进程当前占用物理内存的大小(与procrank中的RSS,pmap中的RSS一样)VmPeak:表示进程所占用最大虚拟内存大小。VmHWM:表示进程所占用物理内存的峰值。VmSize:表示进程当前虚拟内存大小。VmLib:表示进程所使用共享库的大小。来监测某个进程的内存资源占用情况。VmData:表示进程数据段的大小。VmLck:表示被锁定的内存大小。VmStk:表示进程堆栈段的大小。VmPTE:表示进程页表项的大小。VmExe:表示进程代码的大小。linux系统中常用。
2025-01-22 16:03:51
527
原创 解决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
1183
原创 C++类中子类和父类的接口相互调用
发现作为代码狗的我,时间久了,都快忘记了一些C++语言的基础知识,现在写篇文章记录一下,内容主要是涉及C++类的多态性,子类和父类的接口相互调用关系。3、在父类中调用子类多态性质的接口,方式是使用虚函数、加override实现,并给父类设置一个上下文。2、外部调用真实类的接口,方式是使用类的多态性实现,虚函数、加override实现。1、在子类中调用父类的接口(主要是重载接口),方式是父类::接口。
2022-09-29 23:31:19
2840
3
原创 std::bind绑定类成员函数的示例
近期在项目开发过程中,很苦恼设置回调函数时,需要写个全局静态函数转换一下的实现方式,了解C++新特性里面的std::bind之后,感觉使用起来非常简单方便,于是写了个测试用例(代码中利用普通类和单例类进行了测试)做了个测试,效果比较好。
2022-09-28 11:07:42
953
原创 std::shared_ptr作为函数形参,通过值传递、引用传递的问题解答
,结合看了一些开源代码的实现,并没有满足这个建议进行实现,于是做出了自己的思考,现在编译优化,以及智能指针和引用传递的特点,应该不影响智能指针引用计数的变化,及引用传递时,只是一个别名,使用前后,不改变智能指针的使用计数,从而定义函数接口时,使用值传递和引用传递都不受影响,除非使用者在接口调用前后,或者调用的接口内部,自己强行delete智能指针的空间,或者修改其使用计数。
2022-09-23 22:29:51
3713
4
原创 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
2576
原创 linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析
在项目软件代码开发中,当软件代码量多了后,由于各种疏忽和编码审查不严格,导致代码中存在缺陷,程序运行后总是有各种异常出现,严重的导致程序崩溃,这个时候就期望能够在程序崩溃时,记录异常点相关的堆栈信息,用于对异常的分析,常见的方法有在系统中配置程序崩溃生成coredump文件,后续用gdb分析,这种方法需要了解gdb常用指令,并且涉及到修改了系统的一些配置,同时release版本下,有时候用gdb分析不一定有效,因此本文通过软件代码实现,简单记录程序崩溃的信息,主要使用到的是backtrace、abi::..
2022-05-19 16:39:34
5392
原创 两个16进制字符串相加的c++代码实现
近期写了一个工具的时候需要用到对两个16进制字符串相机的实现,查阅了一下,可以简单的使用strtol函数实现,记录一下:#include <iostream>#include <stdlib.h>#include <string.h>/************************************************************* * 功能:两个16进制的字符串相加 * 输入参数: * pStr1:字符串1 * pStr2
2022-05-19 14:53:15
1877
原创 获取某进程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
4619
原创 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
543
原创 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
762
原创 结构体二级指针使用示例
#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
335
原创 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
704
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
6783
原创 文件读写操作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
312
原创 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
2316
原创 vcpkg编译库位数总结
vcpkg的优点如下:自动下载开源库源代码源码包的缓存管理和版本管理,可以升级版本轻松编译依赖关系检查(比如编译libcurl,会自动下载zlib、openssl进行编译)无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编...
2021-06-01 14:49:23
1058
原创 在数组中对自定义的数据类型使用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
206
原创 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
1088
原创 实现自定义的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
653
原创 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
1216
4
原创 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
900
原创 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
786
原创 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
400
原创 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
179
原创 使用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
2941
原创 解决windows编译的程序运行时报loadlibrary failed with error 126的问题
最近写了一个程序,用到了opengl相关的库,发布运行的时候报了loadlibrary failed with error 126的问题,网上很多拷贝atio6axx.dll或者注册表的解决方法,但是尝试过都失败了。最近想到是不是由于双显示卡的问题。进入计算机-->管理-->设备管理器-->显示适配器中,禁掉一个显示卡,一般保留AMD Radeon这个既可以。重新运行程序,程序即可运行正常。...
2020-08-25 11:14:58
8699
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
2473
原创 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
1030
原创 分享一个常识:通用性Http文件下载服务
分享一个http通用性文件下载服务常识。当下载服务器的文件时,一般服务器会返回客户端一个文件下载相对路径,例如/file/doc/readme.txt,客户端需要下载这个文件时,简单的GET请求,http://ip:port/file/doc/readme.txt即可过得这个文件的内容,即要求http服务端至少需要支持远程访问服务器本地路径的功能,并且返回这个路径中的内容给客户端。tips:服...
2020-01-03 15:05:20
429
原创 OpenSSL库编译程序网站
OpenSSL库编译程序网站http://slproweb.com/products/Win32OpenSSL_Full_01.html
2019-11-12 16:15:10
184
原创 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
891
原创 C++类型转换总结
总结:1、去除const属性用const_cast;2、基本类型之间转换用static_cast;3、多态类之间的类型转换用daynamic_cast;4、 不同类型的指针类型转换用reinterpret_cast。网络其他作者的博客,可参考这个博主的文章:https://blog.youkuaiyun.com/qq_40421919/article/details/906772...
2019-10-17 13:48:01
151
原创 在头文件中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
1901
原创 QT删除某文件目录下的空文件夹
最近由于业务需求,需要实现删除某个文件目录下的空文件夹功能,具体看如下代码:bool checkFileOrDirExist(const QString qstrFileDirOrPath){ bool bRet = false; QFileInfo objFileInfo(qstrFileDirOrPath); if(objFileInfo.isFile()) ...
2019-06-28 11:07:23
1252
原创 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
2703
3
原创 linux和arm下查看某进程的使用情况
cat /proc/pid/status 可以查看进程的运行情况;其中:VmSize表示虚拟内存大小,VmRss表示实际内存大小,Threads表示线程数如:cat /proc/2083/status
2019-02-20 12:11:26
2922
mongodb-cxx-driver-r3.6.2使用vs2017编译的项目和测试代码
2020-12-10
Jni测试引用第三方静态库和动态库demo
2017-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人