C++
ZHY.Spiritual
这个作者很懒,什么都没留下…
展开
-
vs2017 外网远程调试
解压下载文件,在natapp.exe同级目录下,新建一个config.ini文件。在我的隧道中复制authtoken,粘贴至文件对应位置----可参考。将natapp.exe于config.ini拷贝至目标电脑运行。config文件内容---其中authtoken需配置。原创 2022-11-01 09:31:30 · 304 阅读 · 1 评论 -
申请内存,std::transform和AVX256指令集用例和执行速度比较
1233456789原创 2022-07-29 10:03:51 · 481 阅读 · 0 评论 -
利用std::transform进行大数据计算
在日常编程中,可能会遇到,简单的计算,但是却要进行上亿次,循环累加耗时特别长std::transform就可以很好的解决问题。使用std::transform在提升速度的同时,CPU和内存回蹭蹭上涨,内部是多线程,自动分配工作。1.std::transform(input1.begin(), input1.end(), input2.begin(), outc.begin(), CalculatePoor);2.std::transform(std::execution::par_unseq,原创 2022-05-10 17:28:26 · 741 阅读 · 0 评论 -
c++读取本地所有USB设备的所有信息(包括串行设备)
读取的信息很多,但是我目前只需要硬件ID、pid、vid、设备名称:头文件代码如下:#include <windows.h>#include <setupapi.h>#include <Cfgmgr32.h>#include <iostream>#include <vector>#include <string>#include <initguid.h>#include <Usbiodef.h&原创 2021-08-25 16:58:28 · 3800 阅读 · 3 评论 -
qt子线程向主线程发消息
子类需要继承QThread类,起线程可以newQThread,也可以用qt起线程函数QtConcurrent::run(QThreadPool::globalInstance(), this, 函数Fun, 参数),本文介绍的是后者.QThreadPool::globalInstance()可以不用管理线程的资源回收,Fun函数如下:class B{signals: void sendMain(QVariantMap obj);}void B::Fun(...原创 2021-07-14 09:30:18 · 2113 阅读 · 0 评论 -
线程中,lambda值传递中全局变量和局部变量区别
线程中,我们使用lambda作为线程入口函数,lambda在使用“=”进行值传递时,[=]() {},此时传递局部变量时,我们还是全局变量原创 2021-06-07 10:09:19 · 665 阅读 · 0 评论 -
c++字节流与结构体互转
c++是类型不安全的,一般字节流和结构体是可以互相强转的,但前提是字节流要像结构体一样进行数据对齐,下面就来看看按数据大小依次排列的字节流是如何转化为结构体的:基础依赖部分代码:#include <stdio.h>#include <windows.h>#include <list>namespace sangame{#define H8_...原创 2019-11-13 15:26:26 · 2811 阅读 · 0 评论 -
[c++11]多线程编程(六)-条件变量(Condition Variable)
互斥锁std::mutex是一种最常见的线程间同步的手段,但是在有些情况下不太高效。假设想实现一个简单的消费者生产者模型,一个线程往队列中放入数据,一个线程往队列中取数据,取数据前需要判断一下队列中确实有数据,由于这个队列是线程间共享的,所以,需要使用互斥锁进行保护,一个线程在往队列添加数据的时候,另一个线程不能取,反之亦然。用互斥锁实现如下:#include <iostream&...原创 2019-07-24 10:51:22 · 563 阅读 · 0 评论 -
[c++11]多线程编程(五)-unique_lock
互斥锁保证了线程间的同步,但是却将并行操作变成了串行操作,这对性能有很大的影响,所以我们要尽可能的减小锁定的区域,也就是使用细粒度锁。这一点lock_guard做的不好,不够灵活,lock_guard只能保证在析构的时候执行解锁操作,lock_guard本身并没有提供加锁和解锁的接口,但是有些时候会有这种需求。看下面的例子。class LogFile { std::mutex _...原创 2019-07-24 10:50:30 · 162 阅读 · 0 评论 -
[c++11]多线程编程(四)-死锁(Dead Lock)
死锁如果你将某个mutex上锁了,却一直不释放,另一个线程访问该锁保护的资源的时候,就会发生死锁,这种情况下使用lock_guard可以保证析构的时候能够释放锁,然而,当一个操作需要使用两个互斥元的时候,仅仅使用lock_guard并不能保证不会发生死锁,如下面的例子:#include <iostream>#include <thread>#include &...原创 2019-07-24 10:49:38 · 339 阅读 · 0 评论 -
[c++11]多线程编程(三)-竞争条件与互斥锁
竞争条件并发代码中最常见的错误之一就是竞争条件(race condition)。而其中最常见的就是数据竞争(data race),从整体上来看,所有线程之间共享数据的问题,都是修改数据导致的,如果所有的共享数据都是只读的,就不会发生问题。但是这是不可能的,大部分共享数据都是要被修改的。而c++中常见的cout就是一个共享资源,如果在多个线程同时执行cout,你会发发现很奇怪的问题:#...原创 2019-07-24 10:48:41 · 223 阅读 · 0 评论 -
[c++11]多线程编程(二)-线程类的构造函数
构造函数的参数std::thread类的构造函数是使用可变参数模板实现的,也就是说,可以传递任意个参数,第一个参数是线程的入口函数,而后面的若干个参数是该函数的参数。第一参数的类型并不是c语言中的函数指针(c语言传递函数都是使用函数指针),在c++11中,增加了可调用对象(Callable Objects)的概念,总的来说,可调用对象可以是以下几种情况:函数指针 重载了operato...原创 2019-07-24 10:45:45 · 925 阅读 · 0 评论 -
单例模式及getInstance()的用法
一般在单例模式下使用.getInstance()创建对象;但并不是所有有私有构造方法,对外通过getInstance方法提供实例的情况就是单例模式。注:单例模式:一个类有且只有一个实例。1,一个私有的构造器2,一个私有的该类类型的变量3,必须有一个共有的返回类型为该类类型的方法,用来返回这个唯一的变量eg:public class Singleton{ private S...原创 2018-08-29 11:46:16 · 1002 阅读 · 0 评论 -
Lambda表达式
C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda表达式Lambda表达式完整的声...原创 2018-08-29 17:30:27 · 465 阅读 · 0 评论 -
重构CListCtrl实现改变单行背景颜色
三个接口函数,设置某一行的文字颜色(前景色)和背景色,使用说明都放在注释里了,创建的列表要使用该类声明,如:CColorListCtrl m_List;那么使用时,直接通过m_List.SetItemColor(1,RGB(0,0,0),RGB(255,255,255));设置颜色即可继承CListCtrl #pragma once #include "afxcmn.h"...原创 2018-09-11 09:22:29 · 795 阅读 · 0 评论 -
OPC客户端开发过程
OPC开发过程:1.注册OPC接口组件 2.通过COM接口创建OPCServerList的接口指针 CoCreateInstance只能遍历本机,CoCreateInstanceEx可遍历远程机器OPCCLSID_OPCServerList={0x13486D51, 0x4821, 0x11D2, { 0xA4, 0x94, 0x3C, 0xB3, 0x06, 0xC1, ...原创 2018-11-08 09:52:37 · 1474 阅读 · 0 评论 -
OPC自定义接口来实现客户端数据的读取
上篇博文分享了我的知识库,被好多人关注,受宠若惊。今天我把我在项目中封装的OPC自定义接口的程序分享一下。下面将会简单简单介绍下OPC DA客户端数据访问,以及搭配整个系统的运行环境。OPC(OLE for Process Control)其实就是一套标准,我对这套标准理解不多,使用过程中就把它理解一套协议或者规范,主要用于工控领域。OPC中有很多规范,我主要使用OPC DA规范来进行数据的读...原创 2018-12-24 10:41:56 · 6535 阅读 · 0 评论 -
重构CListCtrl实现单个单元格背景颜色
第一步:设置你的单元格背景和字体颜色void CColorListCtrl::OnNMCustomdraw(NMHDR *pNMHDR,LRESULT *pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); //关联pNMHDR ...原创 2018-12-25 14:46:57 · 1906 阅读 · 4 评论 -
C/C++框架和库
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz2...原创 2019-04-09 16:57:55 · 263 阅读 · 0 评论 -
opencv2等比缩放图片
本代码缩放图片后图片清晰的保持不变前提必须有opencv_world343的dll和lib库,版本随意选,一般安装的opencv软件只有64位的库,这是最操蛋的地方#include <WINDOWS.H>#include "opencv2/imgproc/imgproc.hpp"#include "opencv2//highgui/highgui.hpp"#includ...原创 2019-05-17 17:12:03 · 1649 阅读 · 0 评论 -
rapidjson解析嵌套json和生成嵌套json
首先准备我们要的头文件rapidjson/document.h"rapidjson/writer.h" rapidjson/stringbuffer.h" using namespace rapidjson;现在我们解析一个这样的嵌套json:{ "code": 0, "count": 1, "data": [ { ...原创 2019-06-12 10:38:28 · 4414 阅读 · 2 评论