后端开发
C++ 标签描述

环境:Windows,cmake,gcc,g,CLion 一、下载源码 二、解压并构建(我是怎么知道的?) 进入处于解压目录的cmd窗口 输入以下命令cmake以下 使用以下命令构建 100%即构建成功 找到这些东西,复制到CLion项目中,文件结构在后面 我这里是先创建一个gtest目录,在gtest目录下在创建一个lib目录,把libgtest.a和libgtest_main.a放进去 把源码googletest目录下的inlclude复制到第一个gtest目录下(使include与lib目录同级) 文件结构 │CMakeLists.txt ├─.idea ├─gtest │├─...

  QOB2TLJgF1ZB   2023年11月02日   40   0   0 C++

设计一个不能被using的对象   在实际开发中为了避免命名空间污染,一般都不会usingnamespacestd。但是如果一个对象写起来比较复杂,用using能大幅度地简化操作。现在假设我们要设计一个函数,它在一个作用域里面,使用它只能以A::B::C()这种形式。思考一下,如果我们放在命名空间下,是可以被using简化的。我们不妨可以试试设计一个结构体。 classA{ public: staticvoidhello(){ std::cout<<"HelloWorld\n"; } staticvoidf(){ std::cout<<"GoodbyeWorld\n"...

  EC73qDgVNYjz   2023年11月02日   46   0   0 C++

extern extern是C中的一个关键字,用于声明一个变量或函数是在其他文件中定义的。它的作用是告诉编译器在链接时在其他文件中寻找该变量或函数的定义。 在C中,如果一个变量或函数在多个文件中使用,那么就需要在每个文件中都声明一次该变量或函数。这时就可以使用extern关键字来声明该变量或函数是在其他文件中定义的。 除了在不同文件中共享变量和函数的定义、在函数中使用全局变量、在头文件中声明变量和函数、在类中声明静态成员变量外,extern还有一些其他的用法: 在模板中使用外部变量 在命名空间中使用外部变量 在静态库中使用外部变量 声明变量 例如,假设我们有两个文件a.cpp和b.cpp,...

  vWa2lMmTbsfJ   2023年11月02日   50   0   0 C++

前言 最近写一个任务队列,可以支持存入返回值为void的任意函数对象。需要定义一个Task模板,来存储函数对象以及参数。大致的实现如下: classTask { public: template<typenameFunc,typename...Args> Task(Func&&f,Args&&...args) :func_(std::bind(std::forward<Func>(f),std::forward<Args>(args)...)){} voidoperator()() { func_(); } private:...

  dOv97U9HUzxZ   2023年11月02日   56   0   0 C++

编译nw-node版本的插件 下载nwjs对应版本的nodejs 原始源码目录 yh@yh:/addon$tree . ├──addon.cc ├──binding.gyp ├──CppLib │  ├──mynumber.cpp │  └──mynumber.h ├──myobject.cc ├──myobject.h ├──package.json └──test.js 1directory,8files 配置环境 例如目标路径/home/yh/node/bin exportPATH=$HOME/node/bin:$PATH FQ前做好先下载...

  VD6N4Av43rz4   2023年11月02日   71   0   0 C++

GetTokenInformation用于检索进程或线程的令牌(Token)信息。Token是一个数据结构,其包含有关进程或线程的安全上下文,代表当前用户或服务的安全标识符和权限信息。GetTokenInformation函数也可以用来获取这些安全信息,通常用于在运行时检查某个进程或线程的权限或安全信息。 该函数原型如下: BOOLGetTokenInformation( HANDLETokenHandle, TOKEN_INFORMATION_CLASSTokenInformationClass, LPVOIDTokenInformation, DWORDTokenInformationLe...

  hBX5Chl6BH5z   2023年11月02日   38   0   0 C++

1.内联:写在类内或外部声明inline(编译器判断是否内联,不是满足上述条件就一定内联),优点更快 2.protected:派生类可以直接调用基类的protected成员 3.class类内默认private,struct内默认public 4.构造函数最优写法,用初始化(只有构造函数有)效率比在函数中写更高(因编译器先进行初始化再执行函数) 5.constT:T固定;Tconst:固定 6.确实有把构造函数放在private里的需求,如单例模式:通过将构造函数写在private里来防止该类对象被创建,通过public里的static函数或在声明static对象时来调用 7.const函数c...

  3v1HKSANTOU4   2023年11月02日   49   0   0 C++

在Windows操作系统中,每个进程的虚拟地址空间都被划分为若干内存块,每个内存块都具有一些属性,如内存大小、保护模式、类型等。这些属性可以通过VirtualQueryEx函数查询得到。 该函数可用于查询进程虚拟地址空间中的内存信息的函数。它的作用类似于Windows操作系统中的TaskManager中的进程选项卡,可以显示出一个进程的内存使用情况、模块列表等信息。使用VirtualQueryEx函数,可以枚举一个进程的所有内存块。该函数需要传入要查询的进程的句柄、基地址和一个MEMORY_BASIC_INFORMATION结构体指针。它会返回当前内存块的基地址、大小、状态(free/comm...

  hBX5Chl6BH5z   2023年11月02日   27   0   0 C++

目录 前言 介绍 照片: 后续: 前言 VV。 介绍 进程间通讯(Inter-ProcessCommunication,IPC)是操作系统中的一个重要概念,用于不同进程之间的数据传输和交互。有多种方式可以实现进程间通讯,以下是其中一些常见的方式: 管道(Pipe):管道是一种单向通信方式,通常用于具有父子关系的进程之间。它分为有名管道和无名管道(也称为匿名管道)。有名管道允许不相关的进程之间通信,而无名管道只能用于有共同祖先的进程之间。 命名管道(FIFO):命名管道是一种有名管道,它允许不相关的进程通过一个命名管道文件进行通信。这种方式通常用于进程之间的跨越多个终端或主机的...

  Sl8rSHQRquUs   2023年11月02日   27   0   0 C++

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法,校验算法可以通过计算应用与数据的循环冗余校验(CRC)检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测,并以此来判定特定程序内存是否发生了变化,如果发生变化则拒绝执行,通过此种方法来保护内存或磁盘文件不会被非法篡改。总之,内存和磁盘中的校验技术都是用于确保数据和程序的完整性和安全性的重要技术。 磁盘CRC(循环冗余校验)用于检测磁盘数据的完整性,一般而言某些木马专杀工具同样会用到磁盘CRC特征校验技术,该技术的实现原理与内存验证原理完全一致,针对磁盘的验证同样很简单,但此处我们...

  hBX5Chl6BH5z   2023年11月02日   42   0   0 C++

目录 前言 必备理论知识: 例子: 20230920加 例如 对函数指针和指针函数补充: 前言 有C经验,使用起来,驾轻就熟。就是语法糖。但是也要熟悉用法,才好众享丝滑。 内容参考:Chatjpt、文心一言 必备理论知识: 捕获列表: []:默认不捕获任何变量; [=]:默认以值捕获所有变量;内部有一个相应的副本 [&]:默认以引用捕获所有变量; [x]:仅以值捕获x,其它变量不捕获; [&x]:仅以引用捕获x,其它变量不捕获; [=,&x]:默认以值捕获所有变量,但是x是例外,通过引用捕获; [&,x]:默认以引用捕获所有变量,但是x是例外...

  Sl8rSHQRquUs   2023年11月02日   25   0   0 C++

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法,校验算法可以通过计算应用与数据的循环冗余校验(CRC)检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测,并以此来判定特定程序内存是否发生了变化,如果发生变化则拒绝执行,通过此种方法来保护内存或磁盘文件不会被非法篡改。总之,内存和磁盘中的校验技术都是用于确保数据和程序的完整性和安全性的重要技术。 以下是一些关于内存和磁盘中的CRC校验技术的详细信息: 内存中的CRC校验技术 在内存中使用CRC校验技术可用于防止缓冲区溢出攻击。内存中的CRC校验技术将根据程序的特定部分计算数据...

  hBX5Chl6BH5z   2023年11月02日   35   0   0 C++

背包问题-01背包 首先我们要明白什么是01背包,在下述例题中,由于每个物体只有两种可能的状态(取与不取),对应二进制中的\(0\)和\(1\),这类问题便被称为\(\text{「0-1背包问题」}\)。 题目描述 有\(N\)件物品和一个容量为\(M\)的背包。第\(i\)件物品的重量是\(W_i\),价值是\(D_i\)。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 输入格式 第一行:物品个数\(N\)和背包大小\(M\)。 第二行至第\(N+1\)行:第\(i\)个物品的重量\(W_i\)和价值\(D_i\)。 输出格式 输出一行最大价值。 我们可以设状态...

  CYqGLVphwF3q   2023年11月02日   11   0   0 C++

C的bitset在bitset头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。 下面是具体用法 构造函数 bitset常用构造函数有四种,如下 bitset<4>bitset1;  //无参构造,长度为4,默认每一位为0 bitset<8>bitset2(12);  //长度为8,二进制保存,前面用0补充 strings="100101"; bitset<10>bitset3(s);  //长度为10,前面用0补充 chars2[]="10101"; bitset<13>bitset4(s2)...

  QzcvISgkiFHN   2023年11月02日   13   0   0 C++

以下内容来源网上经过整合而成 一、一般介绍      STL(StandardTemplateLibrary),即标准模板库,是一个具有工业强度的,高效的C程序库。它被容纳于C标准程序库(CStandardLibrary)中,是ANSI/ISOC标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。      从逻辑层次来看,在STL中体现了泛型化程序设计的思想(genericpr...

  QzcvISgkiFHN   2023年11月02日   17   0   0 C++

在Windows平台下创建多线程有两种方式,读者可以使用CreateThread函数,或者使用beginthreadex函数均可,两者虽然都可以用于创建多线程环境,但还是存在一些差异的,首先CreateThread函数它是Win32API的一部分,而_beginthreadex是C/C运行库的一部分,在参数返回值类型方面,CreateThread返回线程句柄,而_beginthreadex返回线程ID,当然这两者在使用上并没有太大的差异,但为了代码更加通用笔者推荐使用后者,因为后者与平台无关性更容易实现跨平台需求。 9.1.1CreateThread CreateThread函数是Window...

  hBX5Chl6BH5z   2023年11月02日   11   0   0 C++

在内存管理中,::operatornew()/::operatordelete()、delete/new、placementnew是不同的: ::operatornew():只是进行空间的申请而不调用构造函数,可以理解为只是对malloc的简单封装,返回void。可以进行类内重载或者全局重载,类内没有重载则寻找全局new。 ::operatordelete():类似,只是对空间进行释放,而不调用析构函数,可以理解为是对free的简单封装。可以类内重载或者全局重载,类内没有重载则寻找全局delete。 new:分为三个步骤: 调用::operatornew(sizeof(type))申请空间(...

  k8qPL3hASq8W   2023年11月02日   17   0   0 C++

目录 题目翻译 题目描述 输入格式 输出格式 样例1 样例输入1 样例输出1 样例2 样例输入2 样例输出2 样例3 样例输入3 样例输出3 题目简化 题目思路 AC代码 题目翻译 【题目描述】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能被其他任何的数字除尽. 现在给定一个正整数序列$a,a+1,\cdots,b$$(a\leb)$,请找出一个最小值$l$,使其满足对于任意一个长度为$l$的子串,都包含$k$个质数. 找到并输出符合要求的最小值$l$,如果不存在符合要求的长度$l$,则输出$-1$. 【输入格式】 输入...

  Vw6qF3fOR0Jc   2023年11月02日   25   0   0 C++

xsimd简介   xsimd是C的一个开源simd库,实现了对常见simd指令的封装,从而使得simd的操作更为简单。接下来先从两个简单的例子来入门xsimd。 voidaverage(conststd::vector<double>&v1,conststd::vector<double>&v2,std::vector<double>&v){ intn=v.size(); intsize=xsimd::batch<double,xsimd::avx>::size; intloop=nn%size; for(inti=0...

  EC73qDgVNYjz   2023年11月02日   42   0   0 C++

1、概述 GEBCO(GeneralBathymetricChartoftheOceans)全球DEM数据集(Geo-EngineeringDigitalSavage)是基于“全球地球系统计划”(GlobalEarthSystemProject)的最新数据集。 GEBCO 数据包括了从格网尺度到流域尺度的全球DEM数据,覆盖了从海平面变化和海洋地形等,将格网DEM与高分辨率卫星遥感影像相结合,并进行了全球陆地和海洋区域的划分。 海平面变化和海洋地形 2、数据介绍 该数据集由地球系统科学数据中心(GEBCO)建立。通过GEBCO平台,可以获得高分辨率海洋DEM和高分辨率陆地DEM,以及全...

  brzuosws75uC   2023年11月02日   20   0   0 C++