
C++
文章平均质量分 69
6057
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++调用openssl对文件加解密
OpenSSL库是由C语言实现,整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL是目前主流的基于密码学的安全开发包,提供的功能相当强大和全面,包括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。OpenSSL库具有以下优点:1.功能全面,支持大部分主流密码算法、相关标准协议和SSL协议;2.开放源代码,可信任,能根据自己需要进行修改,对技术人员有借鉴和研究的价值;原创 2023-11-28 15:30:07 · 3367 阅读 · 0 评论 -
关于c版和c++版tensorflow设置GPU选项
TensorFlow 在运行中,通常默认占用机器上的所有 GPU 资源,但实际运行模型并不需要占用如此多的资源,为了使 GPU 资源得到充分的使用,我们通常需要手动指定 TensorFlow 使用的 GPU 资源,在使用 Python 进行 TensorFlow 开发时,对于 GPU 资源的设置很方便,但是在使用 C/C++ 对 TensorFlow 模型进行工程化实现时,这个设置就变得相对复杂。由于近期在对 TensorFlow 进行 C/C++ 工程化时遇到了指定 GPU 资源的问题,于是总结一下。原创 2023-08-31 21:29:46 · 919 阅读 · 0 评论 -
关于金字塔格式转tiff并且openslide能获取到缩略图等标签信息
获取当前目录的描述信息val,将val通过换行符\r和\n进行拆分得到字符串数组lines,如果lines个数大于1,则再将lines[1]通过空格进行拆分得到字符串数组names,如果names不为空则将names[0]作为标签写入tiff。下面是我写的转tiff的工具,支持"thumbnail",“label”,"macro"三种标签的写入。那我们将"thumbnail”,“label”,"macro"写入tiff的时候,如何才能保证openslide能够获取到呢?添加该标签,添加后就能通过。原创 2022-12-21 11:21:33 · 1813 阅读 · 23 评论 -
qml自定义消息弹窗messagebox
qml文件中使用消息对话框不像qt widgets中那么方便和友好,虽然说qml中有基础组件MessageDialog可以调用,但好像不能自定义其样式而显得格格不入,感觉就很鸡肋。于是自己重写了个消息弹窗供大家参考和指正,从而进一步优化。先看效果图:至于样式呢就留给大家根据自己的界面风格去添加和优化了,我只提供基础的框架。首先就是定义消息类型了,比如以下代码就定义了6种消息类型,0x01 ......原创 2022-07-13 15:09:57 · 4166 阅读 · 0 评论 -
ShellExecuteEx传递参数包含json数据
如果现在我们要传递带有**json**格式的参数,用以上方式也不行了,至少在我这里是这样,因为json数据中的字段中带有双引号原创 2022-04-08 22:49:46 · 1147 阅读 · 0 评论 -
关于不同版本VS编译获得的静态库、动态库的兼容性
看了上一篇博客还是在6月13号一直想着写一些东西,也准备了很多内容,没想到一直拖到了现在,终于掀开了我的笔记本盖子,按下了开机按钮,双击浏览器图标打开了博客页(浏览器图标都差点找不到了~~),赶紧写完一篇睡觉,明晚还要给我的小可爱做饭呢。。。言归正传,下面就简单描述一下关于不同版本VS编译获得的静态库、动态库的兼容性问题,以下是参考msdn的描述:Visual Studio 2013 和更早版本中的 Microsoft c + + (MSVC) 编译器工具集不保证主要版本之间的二进制兼容性。 不能链接对原创 2021-11-18 23:30:34 · 7955 阅读 · 2 评论 -
qml实现rgb曲线调节功能
环境:windows + qt5.6.0 + opencv342效果图(注:该效果是项目中的截图,并非实际demo运行效果):demo源码地址(附带opencv库,运行的时候请将dll文件拷贝到exe同目录):说明:曲线的实现方式是通过继承QAbstractListModel来实现自定义模型(CCurvesModel和CCurveModel),在qml页面中则是通过Instantiator和Canvas控件来动态生成每条曲线的256个点,画曲线方式有多种,我这只是其中一种而已,最重要的还是如何通过控原创 2021-06-13 22:09:00 · 690 阅读 · 4 评论 -
c++使用libvlc实现简单的播放器
VLC Media Player是一款非常强大的播放器,基本上支持绝大部分的解码器,但是源代码编译难度很大,所以还是使用编译好的库吧。vlc sdk下载地址:http://download.videolan.org/pub/videolan/vlc/vlc相关VLC-QT:用QT的小伙伴们可以使用开源的VLC-QT库哦,widget和qml都支持,由于 VLC-Qt 集成了整个 libVLC,因此具备 libVLC 的所有特性,例如:libVLC 实例和 player、单个文件和列表播放、音频和原创 2021-05-26 17:43:37 · 2388 阅读 · 0 评论 -
Effectivec++条款12:复制对象时勿忘其每一个成分
编译器会在必要的时候为我们的类创建copy构造函数和赋值函数,并且将被拷贝对象的所有成员变量都做一份拷贝。如果你声明自己的copy构造函数和赋值函数,意思就是告诉编译器你并不喜欢缺省实现中的某些行为。考虑一个class用来表现顾客,其中自己写出copying函数,使得外界对它们的调用会被日志记录下来:void logCall(const std::string& value);//日志记录class Customer{public: ... Customer(const C原创 2021-04-29 11:42:41 · 189 阅读 · 0 评论 -
Effective c++条款06:若不想使用编译器自动生成的函数,就该明确拒绝
正常情况下一个类都拥有自己的拷贝构造函数和赋值函数:MyClass a;MyClass b;MyClass c(a);//拷贝a = b;//拷贝但如果我们希望我们这个类应该是特有的,不允许有副本,那就不应该支持拷贝功能,如果是普通的函数,只要不声明就是了,但这个策略对copy构造函数和赋值操作符却不起作用,因为如果我们不去声明它们,而又去尝试调用它们,编译器就会自动去声明它们。答案的关键是,你可以将copy构造函数和赋值操作符声明为private,藉由明确声明一个成员函数,你阻止了编译器暗自原创 2021-04-29 10:14:35 · 183 阅读 · 1 评论 -
qml之轮播效果
以下是图片轮播实现代码:import QtQuick 2.0import QtQuick.Window 2.2import QtQuick.Layouts 1.3import QtQml 2.2Window { id:id_root visible: true width: 800 height: 500 Rectangle{ id: id_bk color: "black" anchors.fill: p原创 2021-04-27 11:24:32 · 1281 阅读 · 1 评论 -
Effective c++条款02:尽量以const,enum,inline替换#define
1.尽量以const,enum,inline替换#define当你写出这样的代码:#define ASPECT_RATIO 1.62记号名称ASPECT_RATIO也许从未被编译器看见;也许在编译其开始处理源码之前它就被预处理器移走了。于是记号名称ASPECT_RATIO有可能没进入记号表内,于是当你运用此常量获得一个编译错误信息时可能会带来困惑,因为这个错误信息也许会提到1.62而不是ASPECT_RATIO。如果ASPECT_RATIO被定义在一个非你所写的头文件内,你肯定对1.62以及它来自何原创 2021-03-22 16:54:26 · 166 阅读 · 3 评论 -
qml之状态与过渡(States and Transitions)
通常我们将用户界面描述为一种状态。一个状态定义了一组属性的改变,并且会在一定的条件下被触发。另外在这些状态转化的过程中可以有一个过渡,定义了这些属性的动画或者一些附加的动作。当进入一个新的状态时,动作也可以被执行。状态(States)在QML中,使用State元素来定义状态,需要与基础元素对象(Item)的states序列属性连接。状态通过它的状态名来鉴别,由组成它的一系列简单的属性来改变元素。默认的状态在初始化元素属性时定义,并命名为“”(一个空的字符串)。Item { id: ro原创 2021-03-16 21:56:11 · 380 阅读 · 3 评论 -
qml之动画(Animations)
动画被用于属性的改变。一个动画定义了属性值改变的曲线,将一个属性值变化从一个值过渡到另一个值。动画是由一连串的目标属性活动定义的,平缓的曲线算法能够引发一个定义时间内属性的持续变化。所有在QtQuick中的动画都由同一个计时器来控制,因此它们始终都保持同步,这也提高了动画的性能和显示效果。简单示例:Rectangle { id:id_root width: 800 height: 400 color:"black" Rect原创 2021-03-16 21:51:55 · 1574 阅读 · 3 评论 -
QT自定义messagebox弹窗
样例:设计的比较简单,图片资源都是在网上找的,就不上传了,可以自己优化完善上代码:defMessageBox.h:#ifndef DEFMSGBOX_H#define DEFMSGBOX_H#include <QDialog>#include <QPushButton>#include <QMouseEvent>#include <QLabel>namespace Ui {class DefMsgBox;}enum BT原创 2020-09-19 18:13:22 · 5007 阅读 · 1 评论 -
c++ 关于指针释放的问题
如下图所示:程序为指针a申请了一块内存,然后将指针a赋给指针b,此时a和b都指向的同一块内存地址。接着delete b,并将b置为空,断点走到18行处,此时变量r是能被赋值的,只是r的值可能是9,也可能是其它的垃圾数据。因为所谓delete b,意思是释放了对a和b所指向内存的所有权(即内存被操作系统回收了),但此时a和b没置nullptr前仍指向这块内存地址,这块内存地址可能不存在了,也可能被其它程序利用了,因此int r = *a就具有不确定性,所谓未定义行为,也就成了野指针。...原创 2020-09-19 16:11:06 · 1283 阅读 · 0 评论 -
qml项目中调用QCefView库
上一篇文章讲了如何编译QCefView库,现在讲如何在qml项目中用这个库,当然在qt widgets项目中调用是很容易的,这里就不多讲了,另外我的QT版本是5.9.8这里我演示一个demo,开始运行弹出一个qml界面,qml界面有一个按钮,点击按钮则弹出一个嵌入了QCefView库的qt widget界面,如图:1.打开qt creator,文件->新建文件或项目->Qt Qu...原创 2020-05-05 16:00:13 · 2394 阅读 · 3 评论 -
c++简单封装互斥锁
在我们进行多线程开发的时候,难免会遇到资源竞争的问题,这时我们就会考虑用到互斥锁,信号量这些措施来避免这些问题。比如:std::mutex mtx;mtx.lock();//加锁...//资源处理mtx.unlock();//解锁简单的代码我们可以这么处理,但如果线程中包含了很多逻辑性的条件语句时,我们就要小心处理每个返回语句是否需要释放锁,那就变得复杂起来了。支持C++11以上的编...原创 2019-12-17 09:59:08 · 331 阅读 · 0 评论 -
C++11 实现简单线程池
C++11实现简单线程池简介线程池的组成工作原理代码简介线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,线程...原创 2019-12-12 11:02:47 · 291 阅读 · 0 评论 -
VS2015 Qt5.11.3使用QChart实现柱状图
首先打开.ui文件,拖动一个Widget到窗口上:在widget上右键,点击提升为:输入提升的类名称为:QChartView,头文件改为:QtCharts/qchartview.h,然后点击添加和提升。(输入类名称时头文件会自动填入qchartview.h,如果不想手动改则需要在项目属性->c/c+±>常规->附加包含目录中加入:$(QTDIR)\include\QtCh...原创 2019-11-12 10:04:50 · 1771 阅读 · 3 评论 -
C++保证程序只有一个实例
CreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttributes, // 指向安全属性的指针BOOLbInitialOwner, // 初始化互斥对象的所有者LPCTSTRlpName // 指向互斥对象名的指针);参数介绍:1.lpMutexAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结...原创 2019-08-26 17:23:38 · 667 阅读 · 0 评论