程序代码
浪小满
我誓将心献学术,尽心尽力耗此生。
展开
-
RGB转YUV420,支持NV12(420p)和NV21(420sp)
最近项目是用到了RGB格式转YUV420格式,写了一个接口:原创 2022-12-05 11:36:41 · 1672 阅读 · 1 评论 -
获取文件夹下所有文件,支持windows和linux系统
【代码】获取文件夹下所有文件,支持windows和linux系统。原创 2022-11-29 14:51:10 · 389 阅读 · 0 评论 -
C++类中子类和父类的接口相互调用
发现作为代码狗的我,时间久了,都快忘记了一些C++语言的基础知识,现在写篇文章记录一下,内容主要是涉及C++类的多态性,子类和父类的接口相互调用关系。3、在父类中调用子类多态性质的接口,方式是使用虚函数、加override实现,并给父类设置一个上下文。2、外部调用真实类的接口,方式是使用类的多态性实现,虚函数、加override实现。1、在子类中调用父类的接口(主要是重载接口),方式是父类::接口。原创 2022-09-29 23:31:19 · 2659 阅读 · 3 评论 -
std::bind绑定类成员函数的示例
近期在项目开发过程中,很苦恼设置回调函数时,需要写个全局静态函数转换一下的实现方式,了解C++新特性里面的std::bind之后,感觉使用起来非常简单方便,于是写了个测试用例(代码中利用普通类和单例类进行了测试)做了个测试,效果比较好。原创 2022-09-28 11:07:42 · 904 阅读 · 0 评论 -
使用std::chrono获取系统时间
替代传统获取系统时间戳的方式,推荐使用std::chrono方式。原创 2022-09-07 17:28:31 · 3534 阅读 · 0 评论 -
linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析
在项目软件代码开发中,当软件代码量多了后,由于各种疏忽和编码审查不严格,导致代码中存在缺陷,程序运行后总是有各种异常出现,严重的导致程序崩溃,这个时候就期望能够在程序崩溃时,记录异常点相关的堆栈信息,用于对异常的分析,常见的方法有在系统中配置程序崩溃生成coredump文件,后续用gdb分析,这种方法需要了解gdb常用指令,并且涉及到修改了系统的一些配置,同时release版本下,有时候用gdb分析不一定有效,因此本文通过软件代码实现,简单记录程序崩溃的信息,主要使用到的是backtrace、abi::..原创 2022-05-19 16:39:34 · 4691 阅读 · 0 评论 -
两个16进制字符串相加的c++代码实现
近期写了一个工具的时候需要用到对两个16进制字符串相机的实现,查阅了一下,可以简单的使用strtol函数实现,记录一下:#include <iostream>#include <stdlib.h>#include <string.h>/************************************************************* * 功能:两个16进制的字符串相加 * 输入参数: * pStr1:字符串1 * pStr2原创 2022-05-19 14:53:15 · 1731 阅读 · 0 评论 -
获取某进程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 · 4198 阅读 · 0 评论 -
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 · 707 阅读 · 0 评论 -
结构体二级指针使用示例
#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 · 307 阅读 · 0 评论 -
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 · 6402 阅读 · 0 评论 -
文件读写操作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 · 291 阅读 · 0 评论 -
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 · 2294 阅读 · 0 评论 -
在数组中对自定义的数据类型使用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 · 184 阅读 · 0 评论 -
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 · 1028 阅读 · 0 评论 -
实现自定义的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 · 627 阅读 · 0 评论 -
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 · 2394 阅读 · 0 评论 -
程序崩溃时,调用DbgHelp生成minidump文件
用到dbghelp.lib和dbghelp.dll文件,生成minidump文件,直接看代码:#include #include #include #pragma comment(lib, "dbghelp.lib")static LONG WINAPI pfnUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo)原创 2017-12-13 23:47:46 · 3532 阅读 · 2 评论 -
sscanf格式化拿取数据,时间值为例。
下面给出一个sscanf用法,格式化拿取数据的方式。 int iLen = strlen("YYYY-MM-DD HH:mm:ss"); if (strTime.length() >= iLen) { int iYear = 0; int iMonth = 0; int iDay = 0; int iHour = 0; int iMinute = 0;原创 2018-01-14 19:53:45 · 1265 阅读 · 0 评论 -
TCP上连接保活的代码设置方法
通常情况下维持一次TCP长连接的时间为2小时,为了能长时间维持这个TCP长连接链路,可以设置TCP/IP协议层的KeepAlive参数,默认情况下TCP不开启KeepAlive功能。Linux系统可参考如下代码://开启keepalive机制int iKeepAlive = 1; //linux下需要注意,用int类型,用bool类型可能会无效。setsockopt(fd,SO原创 2018-02-04 22:36:15 · 1044 阅读 · 0 评论 -
QT删除某文件目录下的空文件夹
最近由于业务需求,需要实现删除某个文件目录下的空文件夹功能,具体看如下代码:bool checkFileOrDirExist(const QString qstrFileDirOrPath){ bool bRet = false; QFileInfo objFileInfo(qstrFileDirOrPath); if(objFileInfo.isFile()) ...原创 2019-06-28 11:07:23 · 1183 阅读 · 0 评论 -
代码实现自定义dialog样式
实现调用自定义的dialog,主要传入自定义的view的布局和宽高。原创 2016-11-12 23:41:14 · 484 阅读 · 0 评论 -
mfc中设置listcontrol某一行的背景和文字颜色
MFC中用到listcontrol控件,可能会根据内容显示颜色。本文提供一种方式:listcontrol设置为report格式,根据内容设置某一行的背景和文字颜色。具体用listcontrol的SetItemData设置某一行的属性,通过自定义属性标识实现。注:暂时只找到了设置一行的颜色,但是不能做到设置某一个单元格的颜色,如果有网友知道设置某一个单元格的颜色解决方案,欢迎交流,谢谢。原创 2017-08-05 22:35:24 · 27508 阅读 · 27 评论 -
编程实现mscomm32写入注册表,解决写入值乱码问题,mfc中操作注册表操作。
在mfc中操作注册表,写入的值经常出现乱码的情况,主要是由于宽字节的问题导致的,下面以编程实现mscomm32写入注册表为例,看代码:int RegisterMscommInfo(){ HINSTANCE hInstance = NULL; hInstance = LoadLibrary(_T("MSCOMM32.ocx")); if (hInstance == NULL) {原创 2017-05-14 16:01:38 · 544 阅读 · 0 评论 -
MFC中遍历TreeControl的节点或者查找某个节点
MFC常用控件TreeControl,经常会遇到节点的遍历和查找。当插入了一个新节点时,就需要这么做,判断是否存在已有的子节点,如果存在,则不用重新插入。实现方式如下:场景,查找根节点下的子节点;TreeControl的控制变量为m_tcCtrl根节点为HTREEITEM hRootItem,子节点为HTREEITEM hChildItem;要查找的内容为“子节点5”;CStrin原创 2017-05-04 23:14:01 · 5666 阅读 · 1 评论 -
Android应用ViewPager和TabLayout动态加载Fragment,并实现view和tab动态刷新。
Android应用ViewPager和TabLayout动态加载Fragment,并实现view和tab动态刷新。原创 2016-12-01 23:35:22 · 9812 阅读 · 9 评论 -
基于Google提供play-services:9.8.0的Google 地图开发,适用于Activity、Fragment,并实现添加Marker和根据经纬度显示运动轨迹
本文是基利用Google提供play-services:9.8.0的Google 地图开发,适用于Activity、Fragment中添加google地图,并实现添加Marker和根据经纬度显示运动轨迹;原创 2016-11-26 23:51:33 · 1065 阅读 · 0 评论 -
自定义样式的ProgressDialog的一个工具
自定义样式的ProgressDialog的一个工具,用起来和修改都简单方便,清晰明了,特别适合于android初学者。原创 2016-11-16 23:21:44 · 1917 阅读 · 0 评论 -
基于XUtil工具的多个文件下载显示总进度
ListView的一个Item中显示多个文件,需要网络下载时,得到该Item中所有文件的一个总的下载进度,原创 2016-11-13 13:54:38 · 529 阅读 · 0 评论 -
解决ViewPager中嵌套ViewPager的滑动分发问题
本文主要解决ViewPager中嵌套ViewPager的滑动分发问题,自定义ViewPager,即BannerViewPager。阻止子ViewPager中滑动事件不再分发给父ViewPager滑动。原创 2016-11-12 23:54:06 · 2658 阅读 · 0 评论 -
根据返回的电量,实现充电状态,充电完成电量显示
实现电池充电状态和电量的显示原创 2016-11-12 19:40:07 · 715 阅读 · 0 评论 -
友盟6.0SDK分享到微信,QQ,新浪等平台
友盟6.0SDK实现分享到微信,新浪,QQ等。可直接利用。原创 2016-11-12 19:30:11 · 915 阅读 · 0 评论 -
利用surfaceview实现示波器WaveView
利用surfaceview实现示波器的view原创 2016-11-12 19:20:25 · 1379 阅读 · 0 评论 -
自定义View:点、图片随手指而移动的View
自定义View:点、图片随手指而移动的View,例子很简单,算是入门的view练习。原创 2016-07-01 23:03:46 · 1021 阅读 · 0 评论 -
将GPS传感器数据度分秒转化为一个秒*100倍之后的数据转化为google地图上的经纬度
GPS传感器得到的数据为d°m′s″,进行数据传输时需要转化为秒*100的一个比较大的数据,转换公式如下:数据data=(度*3600+分*60+秒)*100 。比如30°24′18.12″转化为秒是:30°24′18.12″=30*3600+24*60+18.12=109458.12″,变为int值传递则乘以100变为10945812。原创 2016-11-26 22:43:41 · 2553 阅读 · 0 评论 -
基于LocationManager的定位工具类
利用LocationManager编写一个定位工具类,应用方便。原创 2016-11-26 21:44:41 · 924 阅读 · 0 评论 -
C++获取系统时间和格林制(GMT)时间函数,并按一定格式输出
C++获取系统本地时间函数localtime 和gmtime。其中输出格式说明如下:%a 星期几的缩写%A 星期几的全名 %b 月份名称的缩写%B 月份名称的全名%c 本地端日期时间较佳表示字符串%d 用数字表示本月的第几天 (范围为 00 至 31)日期 %H 用 24 小时制数字表示小时数 (范围为 00 至 23)%I 用 12 小时制数字表示小时数 (范原创 2017-03-11 21:54:59 · 9768 阅读 · 0 评论 -
MFC中使用sqlite3操作数据库 创建,插入数据,查询数据
需要用到的文件有sqlite3.h 、sqlite3.dll、sqlite3.lib。网上很多人分享下载地址这里不再赘述。将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选择sqlite3.h 、sqlite3.dll、sqlite3.lib这三个文件,添加到项目中。然后自己的.cpp中#include “sqlite3.h”一些宏定义原创 2017-02-19 00:14:32 · 11076 阅读 · 11 评论 -
Android利用TrafficStats类实现监测手机网速功能,以及double数据小数点后保留2位
Android中利用TrafficStats类获取手机接收和发送的数据字节数,然后按秒监听,获取这一秒的数据,减去上一秒的数据,即可以粗略得到当前网速,此程序为监测手机mobile和wifi的网速。long txB = TrafficStats.getTotalTxBytes(); 为手机当前发送的字节数long rxB = TrafficStats.getTotalRxBytes();原创 2016-12-21 23:38:57 · 1987 阅读 · 2 评论 -
AndroidStudio2.2.3 JNI与NDK开发之一:生成可调用.so库
AndroidStudio2.2.3 JNI与NDK开发之一:生成可调用.so库网友前辈总结的一种方法,直接用Android Studio中ndk与CMake实现,见博主文章AndroidStudio2.2开发NDK的正确姿势本文选用的是用ndk和.mk文件实现编译生成.so。首先需要确保电脑中配置了ndk环境变量,这里不赘述,需要的网友可以自己百度,比较简单。本文选用ndk版本为r9。原创 2016-12-29 23:47:13 · 5873 阅读 · 5 评论