C/C++ 运用WMI接口查询系统信息C/C++ 运用WMI接口查询系统信息
Windows Management Instrumentation(WMI)是一种用于管理和监视Windows操作系统的框架。它为开发人员、系统管理员和自动化工具提供了一种标准的接口,通过这个接口,可以获取有关计算机系统硬件、操作系统和应用程序的信息,以及对系统进行管理和控制的能力。
WMI...[2023/11/20]
DX后台截图C++实现代码DX后台截图C++实现代码
DX后台截图C++实现代码
文章仅发布于https: www.cnblogs.com/Icy p/DXGI.html和知乎上。
传统的GDI API (BitBlt)虽然可以完美的完成后台截图的任务,但是归根结底效率还是太低。
直接使用DXGI方法截图只能完成前台窗口的截图,而DX H...[2023/11/20]
[ORB/BEBLID] 利用OpenCV(C++)实现尺度不变性与角度不变性的特征找图算法[ORB/BEBLID] 利用OpenCV(C++)实现尺度不变性与角度不变性的特征找图算法
本文只发布于利用OpenCV实现尺度不变性与角度不变性的特征找图算法和知乎
一般来说,利用OpenCV实现找图功能,用的比较多的是模板匹配(matchTemplate)。笔者比较喜欢里面的NCC算法。但是模板有个很明显的短板,面对尺度改变,角度改变的目标就无能为力了。因此本文旨在做到模板...[2023/11/20]
让自定义的容器,也能基于范围循环
??C++11起,引入了基于范围的for循环这一特性,有什么好处呢?它有时可以大大地简化遍历容器的操作,比如说STL的vector。
std::vector v{1, 2, 3};
std::vector<int>::iterator it = begin(v);
for (; ...[2023/11/8]
C++ 入门防爆零教程(上册)
C++ 入门防爆零教程(上册)
C++ Introductory Explosion Proof Zero Tutorial(Volume \(1\))
编写者:美公鸡(洛谷账号:beautiful_chicken233,电话:\(155****7747\),如有需要请随时联系)
编写时间:\...[2023/11/8]
给STM32装点中国风——华为LiteOS移植
我都二手程序员好几个礼拜了!想给我的STM32来点“中国风”,装个华为LiteOS操作系统。
在此之前,我也试过STM32CubeMX自带的FreeRTOS操作系统,不知是何缘故,用F103c8t6芯片时,FreeRTOS里的一个断言过不去。出师不利,决定换LiteOS试试,尽管...[2023/11/6]
C++小练习:字符串分割的高性能实现
字符串分割是日常工作中比较常见的基础函数,通常大家会使用现成的基础库,基础库的性能是否是最佳的?本文基于一个周末小练习,研究如何最大限度的提升字符串分割的性能。
1、背景
字符串按照分隔符拆成多个子串在日常工作中很常见,譬如:后台服务对配置的解析、模型服务对输入特征的拆...[2023/10/30]
multiset用法汇总
c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。
简单应用:
通过一个程序来看如何使用multis...[2023/10/25]
splay + 垃圾回收 知识点与例题的简要讲解
splay 简要讲解
前置芝士:普通二叉树
splay tree是一个越处理越灵活的数据结构,通过splay(伸展)操作,使整棵树的单次查询时间复杂度接近于O(log n),整棵树的高度也接近于log n
根据上面的这句话,很明显能看出splay与普通二叉树的区别
普通二叉树经过多次处理...[2023/10/25]
17.1 隐藏执行CMD命令
本章内容涉及使用Socket API和CMD命令行工具实现本地CMD命令执行、无管道正向CMD和无管道反向CMD三种功能。执行本地CMD实现使用CreateProce 函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出。无管道正向CMD和无管道反向...[2023/10/23]
17.2 实现无管道正向CMD
WSASocket 无管道正向CMD,使用WSASocket函数创建一个TCP套接字,并绑定到一个本地地址和端口上。然后使用CreateProce 函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,客户端可以通过网络连接到这个套接字,发送CMD命令并获取命令输...[2023/10/23]
16.1 Socket 端口扫描技术
端口扫描是一种网络安全测试技术,该技术可用于确定对端主机中开放的服务,从而在渗透中实现信息搜集,其主要原理是通过发送一系列的网络请求来探测特定主机上开放的TCP/IP端口。具体来说,端口扫描程序将从指定的起始端口开始,向目标主机发送一条TCP或UDP消息(这取决于端口的协议类型)。如果目标主机正...[2023/10/20]
14.11 Socket 基于时间加密通信
在之前的代码中我们并没有对套接字进行加密,在未加密状态下我们所有的通信内容都是明文传输的,这种方式在学习时可以使用但在真正的开发环境中必须要对数据包进行加密,此处笔者将演示一种基于时间的加密方法,该加密方法的优势是数据包每次发送均不一致,但数据包内的内容是一致的,当抓包后会发现每次传输的数据包密...[2023/10/19]
CDQ分治和三维偏序
专题:CDQ 分治
本页面将完整介绍 CDQ 分治。
简介
CDQ 分治是一种思想而不是具体的算法,与动态规划类似。目前这个思想的拓展十分广泛,依原理与写法的不同,大致分为三类:
解决和点对有关的问题。
1D 动态规划的优化与转移。
通过 CDQ 分治,将一些动态问题转化为静态问题。
C...[2023/10/18]
14.10 Socket 套接字选择通信
对于网络通信中的服务端来说,显然不可能是一对一的,我们所希望的是服务端启用一份则可以选择性的与特定一个客户端通信,而当不需要与客户端通信时,则只需要将该套接字挂到链表中存储并等待后续操作,套接字服务端通过多线程实现存储套接字和选择通信,可以提高服务端的并发性能,使其能够同时处理多个客户端的请求。...[2023/10/18]
14.9 Socket 高效文件传输
网络上的文件传输功能也是很有必要实现一下的,网络传输文件的过程通常分为客户端和服务器端两部分。客户端可以选择上传或下载文件,将文件分块并逐块发送到服务器,或者从服务器分块地接收文件。服务器端接收来自客户端的请求,根据请求类型执行对应的操作,并根据发送的文件名或其他标识来确定要传输的文件。
在实...[2023/10/17]
从内核世界透视 mmap 内存映射的本质(源码实现篇)
本文基于内核 5.4 版本源码讨论
通过上篇文章 《从内核世界透视 mmap 内存映射的本质(原理篇)》的介绍,我们现在已经非常清楚了 mmap 背后的映射原理以及它的使用方法,其核心就是在进程虚拟内存空间中分配一段虚拟内存出来,然后将这段虚拟内存与磁盘文件映射起来,整个 mmap 系统调...[2023/10/13]
关于如何解决visualc++6.0打开文件闪退的一种方式(附带解决输入法无法显示)
这里我把VisualC++6.0安装程序和filetool分享在我的网盘里面了
网盘下载QAQ
链接:https: pan.baidu.com 1azSMX_cOKgb64WT7-gTdbQ?pwd=ayxs 提取码:ayxs
下载后解压文件,运行filetool.exe...[2023/10/13]
14.1 Socket 套接字编程入门
Winsock是Windows操作系统上的套接字API,用于在网络上进行数据通信。套接字通信是一种允许应用程序在计算机网络上进行实时数据交换的技术。通过使用Windows提供的API,应用程序可以创建一个套接字来进行数据通信。这个套接字可以绑定到一个端口,以允许其他应用程序连接它。另外,Wins...[2023/10/11]
关于C++拷贝控制Ann-
通常来说,对于类内动态分配资源的类需要进行拷贝控制:要在拷贝构造函数、拷贝赋值运算符、析构函数中实现安全高效的操作来管理内存。但是资源管理并不是一个类需要定义自己的拷贝控制成员的唯一原因。C++ Primer 第5版 中给出了一个Me age类与Folder类的例子,分别表示电子邮件消息和消息目...[2023/10/9]
C++在HotSpot VM中一种巧妙的内存管理方式
在HotSpot VM中定义了一个Relocation类及相关的子类,可以通过这些类操作不同的重定位数据,如在CodeCache中读写这些数据。这些类需要的内存很小,但是不同的类需要的内存大小又不一样,所以做了如下的设计:
#include <cstdlib>
#include ...[2023/10/9]
WebAssembly实践指南——C++和Rust通过wasmtime实现相互调用实例
C++和Rust通过wasmtime实现相互调用实例
1 wasmtime介绍
wasmtime是一个可以运行WebA embly代码的运行时环境。
WebA embly是一种可移植的二进制指令集格式,其本身与平台无关,类似于Java的cla 文件字节码。
WebA embly本来的设计初...[2023/9/20]
C++智能指针C++智能指针
智能指针是C++语言中一种方便、安全的内存管理工具。智能指针可以自动管理对象的生命周期,避免手动分配和释放内存时可能出现的内存泄漏和悬挂指针等问题。在C++11标准中,引入了三种智能指针:unique_ptr、shared_ptr 和 weak_ptr。
类型
含义
备注
std::u...[2023/9/18]
【Qt6】列表模型——便捷类型
前一篇水文中,老周演示了 QAbstractItemModel 抽象类的继承方法。其实,在 Qt 的库里面,QAbstractItemModel 类也派生了两个基类,能让开发者继承起来【稍稍】轻松一些。
这两个类是 QAbstractListModel 和 QAb...[2023/9/18]
c++中的数论知识
写在开头:word的公式打不上来,只能截图了
一.组合数学
(1) 加法定理与乘法原理
加法原理:做一件事情,完成它可以有n类办法,在第一类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有mn种不同的方法。那么完成这件事共有N=m1+m2+…+mn种不同的方法...[2023/9/10]
msvc++中的预编译头文件pch.hpp和stdafx.h
预编译头文件
在 Visual Studio 中创建新项目时,会在项目中添加一个名为 pch.h 的“预编译标头文件”。 (在 Visual Studio 2017 及更高版本中,该文件名为 stdafx.h)此文件的目的是加快生成过程。 应在此处包含任何稳定的标头文件,例如标准库标头(如 )。...[2023/9/4]
C++ ASIO 实现异步套接字管理
Boost ASIO(Asynchronous I/O)是一个用于异步I/O操作的C++库,该框架提供了一种方便的方式来处理网络通信、多线程编程和异步操作。特别适用于网络应用程序的开发,从基本的网络通信到复杂的异步操作,如远程控制程序、高并发服务器等都可以使用该框架。该框架的优势在于其允许处理多...[2023/8/30]
浅谈高斯消元法浅谈高斯消元法
2023.6.16:发布
2023.8.29:修缮,加上自己觉得通俗易懂的理解,更新矩阵求逆。
高斯消元
高斯消元可以用于线性方程组求解或者行列式计算,求矩阵的逆等等,也算是比较基础的一个思想。
消元法
定义
消元法是将方程组中的一方程的未知数用含有另一未知数的代数式表示,并将其带入到另一...[2023/8/30]
c++算法之动态规划:01背包
什么是动态规划?
动态规划算法(dynamic programing),是一种由递推为基础的比贪心更稳定的一种优化策略,为运筹学的一部分。就是通过以递推为基础的手段非暴力求出最值。
它的总体思想其实就是一个比较过程:假如你有一个数据,它的价值是x,代价为y,如果用动态规划就是和你不加这个元素...[2023/8/21]
4.2 C++ Boost 内存池管理库
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量...[2023/8/18]
C++函数参数匹配规则C++函数参数匹配规则
C++ 函数参数匹配
1 单个参数匹配
void f(); f1
void f(int); f2
void f(int, int); f3
void f(double, double=3.14); f4
int main() {
f(5.6); 调用f4
return ...[2023/8/18]
使用C++界面框架ImGUI开发一个简单程序
目录简介使用示例下载示例main文件设置ImGui风格设置字体主循环添加Application类中文编码问题界面设计关于imgui_demo.cpp创建停靠空间创建页面隐藏窗口标签栏创建导航页面创建内容页面隐藏控制台窗口打包程序总结待解决问题开发优势附件
简介
ImGui 是一个用于C++的...[2023/8/16]
快速解决 const 与 typedef 类型组合时 ,const修饰谁的问题
C++使用typedef 给复合类型定义别名时,与const结合会产生看似“令人困惑”的类型推定,例如
typedef char* pstring;
const pstring cstr=0;
const pstring *ps;
cstr到底是什么类型? 如果直接把pstring 展开成...[2023/8/14]
msvc++工程之vs版本升级及工程目录规范
为什么要升级msvc++工程版本
对msvc++工程进行vs版本升级,一方面是可以使用较新的C++标准及对64位更好的支持。
首先你需要对msvc++ project文件有一定的了解,主要是vcxproj和vcxproj.filter这两个文件,升级的时候需要手动修改sln和vcxproj文件...[2023/8/7]
C++ 核心指南之 C++ P.哲学/基本理念(上)
C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C+ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。
这份指南侧重于接口、资源管理、内存管理、并发等 High-l...[2023/7/31]
vs(visual stuiod)中vc++工程的Filter和Folder及vcxproj知识
vs中创建Filter
在一个新项目中右键 - Add - New,默认只有一选项 New Filter。
创建出来的Filter可以理解为是VS的过滤器(虚拟目录),它不会在本地的磁盘上新建目录,而是修改了.filters文件,把这种目录关系记录在.filters文件中。
新建一个vc...[2023/7/31]
树形DP + 换根DP
树形DP——基础
P1352 没有上司的舞会
设 \(f[i][0/1]\) 表示第 \(i\) 个人不去或者去。
如果第 \(i\) 个人没去,那么下属可去可不去,所以 \(f[i][0] = \sum max\{f[j][0],f[j][1]\}\),\(j\) 为 \(i\) 的子节点。...[2023/7/28]
【持续更新】C/C++ 踩坑记录(一)
未定义行为之 NULL dereference
下面这段代码中 is_valid() 解引用了空指针 str,我们的直觉是编译运行后将迎来 SIGSEGV,然而事情并非所期望的那样。
/*
* ub_null.c - 未定义行为演示 之 NULL dereference
*/
#inclu...[2023/7/26]
常用语言的线程模型(Java、go、C++、python3)
背景知识
软件是如何驱动硬件的?
硬件是需要相关的驱动程序才能执行,而驱动程序是安装在操作系统内核中。如果写了一个程序A,A程序想操作硬件工作,首先需要进行系统调用,由内核去找对应的驱动程序驱使硬件工作。而驱动程序怎么让硬件工作的呢?驱动程序作为硬件和操作系统之间的媒介,可以把操作系统中相关的...[2023/7/17]
现代C++(Modern C++)基本用法实践:三、移动语义现代C++(Modern C++)基本用法实践:三、移动语义
概述
移动
移动(move)语义C++引入了一种新的内存优化,以避免不必要的拷贝。在构造或者赋值的时候,如果实参是右值(或者左值由std::move转换成右值),便会匹配移动语义的函数调用如下述举例的Str(Str&& obj)。
移动语义的本质是将资源(内存/句柄)转移给另一...[2023/7/17]
C++面试八股文:如何避免死锁?C++面试八股文:如何避免死锁?
某日二师兄参加XXX科技公司的C++工程师开发岗位第31面:
面试官:什么是锁?有什么作用?
二师兄:在C++中,锁(Lock)是一种同步工具,用于保护共享资源,防止多个线程同时访问,从而避免数据竞争和不一致。
面试官:有哪些锁?
二师兄:从种类上分,可以分为普通锁、读写锁、递归锁等种...[2023/7/5]
C++面试八股文:用过std::set/std::map吗?
某日二师兄参加XXX科技公司的C++工程师开发岗位第27面:
面试官:用过std::set td::map吗?
二师兄:用过。
面试官:能介绍一下二者吗?
二师兄:std::set是一个有序的集合,其中的元素是唯一的,即每个元素只能出现一次。一般用于去重和自动排序。
二师兄:std:...[2023/6/28]
浅谈OpenCV的多对象匹配图像的实现,以及如何匹配半透明控件,不规则图像
浅谈OpenCV的多对象匹配透明图像的实现,以及如何匹配半透明控件
引子
OpenCV提供的templateMatch只负责将(相关性等)计算出来,并不会直接提供目标的对应坐标,一般来说我们直接遍历最高的相关度,就可以得到匹配度最高的坐标。但是这样一般只能得到一个坐标。
在实际操作中,我们可能...[2023/6/26]
C++ 核心指南之资源管理(中)C++ 核心指南之资源管理(中)
C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C++ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。
这份指南侧重于接口、资源管理、内存管理、并发等 High-...[2023/6/26]
C++面试八股文:std::array如何实现编译器排序?C++面试八股文:std::array如何实现编译器排序?
某日二师兄参加XXX科技公司的C++工程师开发岗位第25面:
面试官:array熟悉吗?
二师兄:你说的是原生数组还是std::array?
面试官:你觉得两者有什么区别?
二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候需要提供数组长度...[2023/6/26]
C++面试八股文:static_cast了解一下?
某日二师兄参加XXX科技公司的C++工程师开发岗位第20面:
面试官:C++中支持哪些类型转换?
二师兄:C++支持C风格的类型转换,并在C++11引入新的关键字规范了类型转换。
二师兄:C++11引入四种新的类型转换,分别是static_cast、dynamic_cast、const_...[2023/6/21]
C++面试八股文:什么是智能指针?
某日二师兄参加XXX科技公司的C++工程师开发岗位第19面:
面试官:什么是智能指针?
二师兄:智能指针是C++11引入的类模板,用于管理资源,行为类似于指针,但不需要手动申请、释放资源,所以称为智能指针。
面试官:C++11引入了哪些智能指针?
二师兄:三种,分别是shared_pt...[2023/6/19]
现代C++学习指南-方向篇
C++是一门有着四十年历史的语言,先后经历过四次版本大升级(诞生、98、11、17(20),14算小升级)。每次升级都是很多问题和解决方案的取舍。了解这些历史,能更好地帮助我们理清语言的发展脉络。所以接下来我将借它的发展历程,谈一谈我对它的理解,最后给出我认为比较合理的学习路线指南。
C++0...[2023/6/19]
C++面试八股文:什么是RAII?
某日二师兄参加XXX科技公司的C++工程师开发岗位第13面:
面试官:什么是RAII?
二师兄:RAII是Resource Acquisition Is Initialization的缩写。翻译成中文是资源获取即初始化。
面试官:RAII有什么特点和优势?
二师兄:主要的特点是,在对象...[2023/6/14]
c++ 模板详解
模板就是将类型进行参数化
函数模板
函数模板的定义格式
template<cla 形参名,cla 形参名...>
返回值类型 函数名(参数列表){
函数体;
}
模板形参不能为空,并且函数模板中每一个类型参数在函数参数表中至少使用一次,只有这样才能推断出具体的类...[2023/6/9]