WebAssembly实践指南——C++和Rust通过wasmtime实现相互调用实例
C++和Rust通过wasmtime实现相互调用实例 1 wasmtime介绍 wasmtime是一个可以运行WebA embly代码的运行时环境。 WebA embly是一种可移植的二进制指令集格式,其本身与平台无关,类似于Java的cla 文件字节码。 WebA embly本来的设计初...[2023/9/20]
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++ 函数参数匹配 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++)基本用法实践:三、移动语义
概述 移动 移动(move)语义C++引入了一种新的内存优化,以避免不必要的拷贝。在构造或者赋值的时候,如果实参是右值(或者左值由std::move转换成右值),便会匹配移动语义的函数调用如下述举例的Str(Str&& obj)。 移动语义的本质是将资源(内存/句柄)转移给另一...[2023/7/17]
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++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C++ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。 这份指南侧重于接口、资源管理、内存管理、并发等 High-...[2023/6/26]
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]
C++面试八股文:C++中,设计一个类要注意哪些东西?
某日二师兄参加XXX科技公司的C++工程师开发岗位第9面: 面试官:C++中,设计一个类要注意哪些东西? 二师兄:设计一个类主要考虑以下几个方面:1.面向对象的封装、继承及多态。2.big three或者big five。3.运算符和函数重载、静态成员、友元、异常处理等相关问题。 面试官...[2023/6/9]
现代 C++ 性能飞跃之:移动语义
*以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https: mp.weixin.qq.com Xd_FwT8E8Yx9Vnb64h6C8w 带给现代 C++ 性能飞跃的特性很多,今天一边聊技术,一边送福利! 过去写 C/C++ 代码,大家对数据做传...[2023/6/9]
C++ this 指针
第一部分 this 指针的类型可理解为 Box*。 此时得到两个地址分别为 box1 和 box2 对象的地址。 实例: #include <iostream> using namespace std; cla Box{ public: Box(){;...[2023/6/8]
混合编程python与C++
上个版本: 只是用到ctypes进行传输, 这次将python服务端更改为C++服务端,方便后续维护. 本文实现功能: python传输图片给C++, C++接受图片后对图片进行处理,并将结果返回给python客户端, pa image from python to C++ C++ 服务端 ...[2023/6/8]
C++面试八股文:C++中,函数的参数应该传值还是传引用?
某日二师兄参加XXX科技公司的C++工程师开发岗位第8面: 面试官:C++中,函数的参数应该传值还是传引用? 二师兄:要看参数的用途。如果是出参,必须传引用。如果是入参,主要考虑参数类型的大小,来决定传值还是传引用。 面试官:为什么不使用指针? 二师兄:传指针也称之为传引用(pa b...[2023/6/8]
C++ 类 & 对象
一、C++ 类 & 对象 C++ 类定义 定义一个类需要使用关键字 cla ,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。 定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。 关键字 publi...[2023/6/7]
在C++中,传值还是传引用?
情况一:需要修改原对象 需要修改原对象的情况,必须要传引用。这种情况没什么要说的。 情况二:不需要修改原对象 对于内置类型(整数、浮点数、字符类型等),传值效率更高。主要有三点原因: 内存开销更小。由于内置类型普遍小于8byte,因此内存占用和拷贝开销均较小。 局部性更好。传值时,函数...[2023/5/30]
Multiserver游戏服务器Demo[C++&Lua]
代码参考 代码文件参考下述详解的类图,工程参考第零章工程说明 关键特性 对Socket库进行封装,抹平Socket的Window&Linux的平台差异。 C++嵌入lua脚本,增加开发者编码效率,减少编译时间消耗。 非阻塞网络IO 多线程任务模型 多服务模型 详解 Socket库封装...[2023/5/29]
【重学C++】05 | 说透右值引用、移动语义、完美转发(下)
文章首发 【重学C++】05 | 说透右值引用、移动语义、完美转发(下) 引言 大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第五讲,在第四讲《【重学C++】04 | 说透右值引用、移动语义、完美转发(上)》中,我们解释了右值和右值引用的相关概念,并介绍了C++的移动语义以及如...[2023/5/29]
【重学C++】01| C++ 如何进行内存资源管理?
文章首发 【重学C++】01| C++ 如何进行内存资源管理? 前言 大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第一讲,我们来学习下C++的内存管理。 与java、golang等自带垃圾回收机制的语言不同,C++并不会自动回收内存。我们必须手动管理堆上内存分配和释放,这往...[2023/5/22]
C++中的字符串编码处理
今天由于在项目中用到一些与C++混合开发的东西 ,需要通过socket与C++那边交换数据,没啥特别的,字节码而已,两边确定一种编码规则就行了。我们确定的UTF-8。关于C++的 这种又是宽字节 又是Me ageBoxW 又是Me ageBoxA 的 ,说实话相比C#而言 搞的确实非常的和稀泥 ...[2023/5/15]
C++/Qt遍历多维数组的3种方式示例
目录一、什么是多维数组二、遍历多维数组2.1 使用范围for语句处理多维数组2.2 使用指针遍历多维数组2.3 使用类型别名遍历多维数组附:多维数组初始化总结 一、什么是多维数组 想要遍历多维数组,就得知道什么是多维数组。 严格来说,C++语言中没有多维数组,通常所说的多维数组其实是数组的数...[2023/5/15]
C++实现读写ini配置文件的示例代码
目录1.概述2.ini格式语法3.配置读取4.demo示例5.自动生成读取代码 1.概述 配置文件的读取是每个程序必备的功能,配置文件的格式多种多样,例如:ini格式、json格式、xml格式等。其中属ini格式最为简单,且应用广泛。 2.ini格式语法 注释内容采用“#&rd...[2023/5/8]
用C++编写一个简单的发布者和订阅者
摘要:节点(Node)是通过 ROS 图进行通信的可执行进程。 本文分享自华为云社区《编写一个简单的发布者和订阅者》,作者: MAVER1CK 。 @[toc] 参考官方文档:Writing a simple publisher and subscriber (C++) 背景 节点(Nod...[2023/4/28]
C++实现单例模式日志输出详解
目录一、单例模式简单介绍1.1 基础介绍1.2 单例模式使用场景二、单例模式实现日志记录(Singleton Logger)三、总结 一、单例模式简单介绍 1.1 基础介绍 单例模式只保证一个程序内只有一个实例存在,并提供全局访问点来访问该实例,其实就是单例模式的类对象只允许存在一个,它和多...[2023/4/24]
C++ 测试框架 GoogleTest 初学者入门篇 丙
theme: channing-cyan *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https: mp.weixin.qq.com RIztusI3uKRnoHVf0sloeg 开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发...[2023/4/17]
网络框架重构之路plain2.0(c++23 without module) 综述
最近互联网行业一片哀叹,这是受到三年影响的后遗症,许多的公司也未能挺过寒冬,一些外资也开始撤出市场,因此许多的IT从业人员加入失业的行列,而且由于公司较少导致许多人求职进度缓慢,很不幸本人也是其中之一。自从参加工作以来,一直都是忙忙碌碌,开始总认为工作只是为了更好的生活,但是一旦工作停下来后自...[2023/4/12]
利用C++实现简易的狼人杀游戏
狼人杀游戏是一款非常有趣的角色扮演游戏,它需要玩家之间互相猜测身份并进行投票,通过推理来找出真正的狼人。 以下是一个基本的狼人杀游戏的C++实现,其中包含游戏角色、游戏流程和基本的逻辑。你可以根据需要添加更多的功能和细节。 #include <iostream> #inclu...[2023/4/10]
Algorithm参数记录
一、vector<Point2f> vector 是一个存储二维点坐标的容器,其中每个元素都是一个Point2f类型的对象。在OpenCV中,Point2f表示一个由两个单精度浮点数构成的二维点坐标。 你可以使用vector 来存储一些二维坐标信息,比如图像中的关键点或轮廓点等。具...[2023/4/7]
C++库封装JNI接口——实现java调用c++ - Lee-zq
1. JNI原理概述 通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法。进一步地,为了让不...[2023/4/6]
C++ 测试框架 GoogleTest 初学者入门篇 甲
*以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https: mp.weixin.qq.com BS_u9A4EY50y4vDDuxkCAQ 开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发者自测通过的,所以经常会听到开发者提起单元测试...[2023/3/31]