自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 问答 (1)
  • 收藏
  • 关注

原创 面试信息处理Python脚本

面试信息处理Python脚本

2023-05-30 15:19:03 112

翻译 QML使用锚钉定位

QML使用锚钉定位

2023-04-19 11:25:34 163

原创 Boost库Lexical_Cast模块使用介绍

Boost库Lexical_Cast模块使用介绍

2023-04-03 23:49:05 457

原创 自用的CMakeList模板

自用的CMakeList模板

2023-03-12 20:33:10 88

原创 cmake问题解决方法收集

收集cmake一些问题的解决方法

2022-12-22 16:54:17 537

原创 Windows安装clang-format的方法

Windows安装clang-format的方法

2022-12-22 16:33:44 2161

原创 自用的VIM启动配置

自用的vim启动配置

2022-12-12 13:58:48 210

原创 亲测好用的软件(持续更新中)

亲测好用的软件,持续更新中

2022-10-09 12:23:47 1552

原创 CMake常用技巧

CMake常用技巧

2022-08-10 09:04:06 372

原创 《C++ API设计》第6章 C++用法读书笔记

《C++ API设计》第6章 C++用法读书笔记

2022-04-28 22:03:05 1598

原创 基于C++11的可中断睡眠功能实现

源文件InterruptibleSleep.h#pragma once#include <atomic>#include <chrono>#include <mutex>namespace UtilityTools { using namespace std; class InterruptibleSleep { public: bool start(const chrono::milliseconds & durInMS);

2021-12-30 19:54:14 791

原创 按指定条件从C++11 map中删除元素

问题无法使用remove_if配合map容器的erase操作按指定条件从map容器删除元素。C++11 解决方案可以使用一下函数实现这个需求:template<typename K, typename V>void filterMap(map<K, V> & mapObj, bool(*pred)(const K &, const V &)){ for (auto it = mapObj.begin(), ite = mapObj.en

2021-12-14 19:49:43 1567 1

原创 基于C++11的简单日志库

程序开发时,往往只需要在控制台打印日志。但是很多日志库(如Boost.Log)虽然提供很多功能,但集成起来比较麻烦。所以需要一个功能简单,能快速集成,外部依赖少的日志库。

2021-11-24 16:02:21 730

原创 BOOST_SCOPE_EXIT在C++11中的替代方案

背景Boost库中的BOOST_SCOPE_EXIT宏用于在程序退出当前区块时执行指定操作,例如下面的代码{ int * ptr = new int; BOOST_SCOPE_EXIT(ptr) { delete ptr; std::cout << "Delete pointer" << std::endl; } BOOST_SCOPE_EXIT_END std::cout << "

2021-11-22 21:02:28 932

原创 C++开发SDK库的一些个人心得

对外接口加打印基本上库的所有接口都要将外界调用接口时传入的所有参数打印成info级别的日志,以便在出现问题时,界定问题的归属。库的某些会被频繁调用的查询接口可以要将外界调用接口时传入的所有参数及返回的结果打印成trace级别。因为如果在这种接口打印info级别日志,将导致info级别日志过多,影响后续问题分析。持续更新中.........

2021-11-22 10:12:37 3045 1

原创 Linux开发中遇到的问题整理

运行时搜索指定的路径需求描述linux中程序运行时,默认动态库的搜索路径是/usr/lib,/lib和LD_LIBRARY_PATH环境变量中的路径。有时候,希望程序能在指定路径搜索其所需的动态库。解决方法在链接时添加“-Wl,rpath=路径”,例如"-Wl,rpath=."则程序活在当前路径中搜索动态库...

2021-10-27 11:49:47 139

原创 Windows中测量线程真正使用CPU的时间

#include <windows.h>#include <processthreadsapi.h>#include <chrono>#include <iostream>#include <stdexcept>#include <string>#include <thread>void GetThreadRunTimeInfoInWin(long double & dKrnlTmInMS, .

2021-08-02 20:58:32 366

翻译 Boost.Lockfree官方文档

目录介绍与动机简介与术语非阻塞数据结构的性质非阻塞数据结构的性能阻塞行为的来源数据结构数据结构配置示例队列栈无等待单生产者/单消费者队列脚注介绍与动机简介与术语术语“非阻塞”表示并发数据结构,该结构不使用传统的同步原语(例如警卫程序)来确保线程安全。 Maurice Herlihy和Nir Shavit(比较“多处理器编程的艺术”)区分了3种类型的非阻塞数据结构,每种结构具有不同的属性:如果保证每个并发操作都可以在有限的步骤中完成,则数据.

2021-05-16 23:52:48 751 1

原创 Boost库个人感觉好用的模块

Boost库个人感觉好用的模块

2021-05-10 09:57:30 450

原创 C++11 类头文件不暴露私有变量的一种写法

动机在类的头文件中不暴露私有变量,目的一般有两个:1. 提供给别人的dll对应的头文件中,不希望在头文件中暴露私有变量的名称;2. 因为私有变量的类型需要包含另一个头文件,所以不希望在头文件中包含其它头文件;示例头文件#pragma once#include <memory>#include <string>class Person{public: Person(const std::string & sName); Person(co

2021-04-19 17:29:02 1571

原创 C++常用工具函数

文件相关h文件#pragma once#include <string>class FileUtil{public: /** \brief 检查指定路径的文件是否存在 \param sFilePath 待检查文件路径 \return 指定路径的文件是否存在 \except 该函数可能抛出异常 \note 该函数是多线程安全的 */ static bool isFileExist(const std::string & sFilePath);

2021-04-14 17:02:10 666

转载 基于C++11的跨线程简单消息队列

目录示例代码运行结果源代码示例代码#include "MessageQueue.hpp"#include <thread>#include <iostream>#include <chrono>using namespace std;using namespace std::chrono;MessageQueue<int> mq;void send(){ for (int i = 0; i < 10;.

2021-03-27 11:07:24 650

原创 解决视频在钉钉播放出现转码或闪烁

问题用录屏软件(如傲软录屏)录制的视频通过钉钉发送给对方后,接收方直接点开视频播放时会提示转码或出现画面闪烁。原因钉钉要求的视频的像素格式为yuv420p,而录屏软件的像素格式不符。例如,傲软录屏使用h264编码时视频的像素格式是yuvj420p。解决方案通过ffmpeg进行转码,可以参考下面的命令:ffmpeg.exe -i src_video_path -pix_fmt yuv420p dst_video_path...

2021-03-16 11:38:57 6464

原创 基于OpenAL的音频采集模块

目录接口头文件接口实现文件依赖模块头文件依赖模块实现接口头文件#pragma once#include <al.h>#include <alc.h>#include <string>#include <map>#include <vector>namespace MyNamespace{ class AudioCapture { public: //FIXME: 添加函数注释 /**

2021-03-03 18:49:13 735 1

原创 OpenCV问题解决整理

将3通道的图片转换为4通道描述有时需要将RGB格式的图片转换为RGBA格式的图片解决cv::Mat newSrc(source.size(), CV_MAKE_TYPE(source.depth(), 4));int from_to[] = { 0,0, 1,1, 2,2, 2,3 };cv::mixChannels(&source,1,&newSrc,1,from_to,4);参考文献OpenCV: transforming 3 channel image i

2021-02-26 17:45:29 367

原创 VS编译OpenCV3

目录流程源码环境编译完成库流程文档转载(防丢)1.下载Cmake2.下载OpenCV源码3.编译OpenCV4.最后一步-VS编译openCV4.1编译Debug版的openCV4.2编译Release版的openCV4.3生成结果5.牛刀小试流程Windows下 Cmake + VS 编译 OpenCV (+ opencv_contribute)源码源码版本:3.4.13链接:https://sourceforge.net/pr.

2021-02-24 13:34:30 505 2

原创 自己用过的好用的C++第三方库汇总

目录综合库Boost网络库cpp-httplib简介链接工具库cpp-base64简介链接综合库Boost官网地址:https://www.boost.org/编译好的库下载地址:https://sourceforge.net/projects/boost/files/boost-binaries/网络库cpp-httplib简介一个C++ 11只包含头文件的跨平台HTTP/HTTPS库。设置非常容易。 只需在代码中包含htt.

2021-02-04 13:38:22 4350

原创 批处理脚本:打包制定文件夹中的所有子文件夹

@echo offecho 文件夹子目录打包脚本 V1.0.0.20210106setlocal enabledelayedexpansionset sDstDirPath=%1SET sDstDirPath="%sDstDirPath%"SET sDstDirPath=%sDstDirPath:"=%rem echo sDstDirPath=%sDstDirPath%if "%sDstDirPath%"=="" ( echo 目标文件夹路径为空 echo ============.

2021-01-08 09:31:25 377 1

原创 批处理脚本:清空文件夹

@echo offrem echo 清空文件夹打包脚本 V1.0.0.20210106pushd %~dp0setlocal enabledelayedexpansionset sDstDirPath=%1SET sDstDirPath="%sDstDirPath%"SET sDstDirPath=%sDstDirPath:"=%rem echo sDstDirPath=%sDstDirPath%if "%sDstDirPath%"=="" ( echo 待清空文件夹路径为空 .

2021-01-08 09:28:15 801 1

原创 .Net逆向工具推荐

逆向分析工具.net Reflector配合reflexil也能进行修改,但没有dnSpy好用,而且是收费的。下载链接:链接:https://pan.baidu.com/s/1VvwZEu93pCbHLd6czsNwOA提取码:rcix逆向修改工具dnSpy优点:1.好用 2.免费下载链接:https://github.com/dnSpy/dnSpy/releasesreflexil不推荐...

2021-01-06 12:43:45 275

原创 OpenTK截图代码

//设置图像属性int nBytesPerPix = 4;int nWidth = renderCanvas.ClientSize.Width;int nHeight = renderCanvas.ClientSize.Height;//读取Buffer中的数据GL.ReadBuffer(ReadBufferMode.Back);int PixelDataLength = nBytesPerPix * nWidth * nHeight;byte[] aImgData = new byte[.

2021-01-06 12:27:00 260

原创 C++查询Windows的版本和位宽、判断系统类型

目录查询系统位宽查询系统版本判断系统类别查询系统位宽bool is64BitOS(){ typedef VOID(WINAPI *LPFN_GetNativeSystemInfo)(__out LPSYSTEM_INFO lpSystemInfo); LPFN_GetNativeSystemInfo fnGetNativeSystemInfo = (LPFN_GetNativeSystemInfo) GetProcAddress(GetModuleHandleW(L"k.

2020-12-16 18:05:02 866

原创 Windows消息打印函数

C语言版const char * getMsgStr(const unsigned int nMsgVal){ switch (nMsgVal) { case 0x0: return "WM_NULL"; case 0x1: return "WM_CREATE"; case 0x2: return "WM_DESTROY"; case 0x3: return "WM_MOVE"; case 0x5: return "WM_SIZE"; case

2020-11-29 09:54:41 518 1

转载 C++中如何跳出当前代码块

问题实现类似如下跳出代码块功能但不使用goto:{ ... if(condition) goto pos_out; ...}pos_out:...解决方案[&](){ ... if(condition) return; ...}();参考文章How to jump out of a C++ code block?...

2020-11-26 08:28:13 703

翻译 .gitignore文件用法官方说明

目录概述描述模式格式配置文件注意示例概述gitignore —— 指定故意忽略的文件以忽略描述gitignore文件指定Git应该忽略的故意未跟踪的文件。 Git已经跟踪的文件不受影响;有关详细信息,请参见注意的笔记。gitignore文件中的每一行都指定一个模式。在决定是否忽略路径时,Git通常会从多个来源检查gitignore模式,并按照从高到低的优先顺序(从一个优先级来看,最后一个匹配模式决定结果):从命令行读取的模式(对于那些支持模式的命令)。.

2020-11-13 11:02:58 672

翻译 Visual Studio如何调试一个Release版程序

步骤打开项目的“属性页”对话框。 单击“C/C ++”节点,将调试信息格式设置为C7兼容(/Z7)或程序数据库(/Zi)。 展开“链接器”,然后单击“常规”节点。将“启用增量链接”设置为“否”(/INCREMENTAL:NO)。 选择“调试”节点。将“生成调试信息”设置为“是(/DEBUG)”。 选择优化节点。将引用设置为/OPT:REF,并将COMDAT折叠启用为/OPT:ICF。 现在可以调试发布构建应用程序。若要查找问题,请单步执行代码(或使用即时调试),直到找到发生故障的位置,然后确定

2020-11-05 16:53:53 653

翻译 Visual Studio 2017编译选项Debug的用法

概要/DEBUG选项为可执行文件创建调试信息。链接器将调试信息放入程序数据库(PDB)文件中。它在程序的后续构建期间更新PDB。用于调试而生产的可执行文件(.exe文件或DLL)包含相应PDB文件的名称和路径。在调试程序时,调试器将读取嵌入的名称并使用PDB文件。链接器使用程序的基本名称和扩展名.pdb命名程序数据库,并将其创建路径嵌入其中。要覆盖此默认值,请设置/PDB并指定其他文件名。具体选项/DEBUG:FASTLINK 选项在Visual Studio 2017和更高版本中可用。该选

2020-11-05 16:33:20 2735

原创 Visual Studio使用的陷阱

重命名的陷阱重命名功能可能导致程序逻辑改变。例如,下面的代码 int a = 1, b = 2, c = 0; c = a + b;如果使用VS的重命名功能将b重命名成a,程序将会变成 int a = 1, a = 2, c = 0; c = a + a;解决方法:在重命名前搜索源代码,确认现有代码中没有名称与想设置成的名称相同。持续更新中.........

2020-10-28 09:00:24 123

原创 冒泡排序C++示例代码

#include<functional>#include<utility>#include<exception>#include<iostream>using namespace std;using uint = unsigned int;template<typename T>void bubble_sort(T arr[], const uint len, function<bool(T,T)> cmp){ .

2020-08-21 20:51:26 455

原创 希尔排序C++代码示例

#include<exception>#include<iostream>#include<functional>#include<utility>using namespace std;using uint = unsigned int;template<typename T>void shellSort(T *data, uint len, function<bool(T,T)> cmp) { //检查参.

2020-08-21 17:10:30 263

空空如也

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

TA关注的人

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