![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
深入C++编程入门
文章平均质量分 78
欢迎来到《深入C++编程入门专栏》!如果你渴望掌握一门强大的编程语言,那么C++无疑是一个绝佳的选择。无论是游戏开发、系统编程、嵌入式设备还是高性能应用程序,C++都是行业内的首选语言。
三雷科技
国产操作系统下的QT项目实战,密码算法应用研发,网络安全应用研发。
coco2dx4.0游戏开发,塔防游戏开发实战。
展开
-
window系统openssl开发环境搭建(VS2017)
错误严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2019 无法解析的外部符号 RAND_bytes,该符号在函数 main 中被引用 ConsoleApplication3错误 LNK2019 无法解析的外部符号 RAND_poll,该符号在函数 main 中被引用 ConsoleApplication3错误 LNK1120 2 个无法解析的外部命令 ConsoleApplication3由于没有引用动态库文件导致。请看3.2。原创 2024-07-02 16:01:40 · 151 阅读 · 0 评论 -
C++读写ini文件(window系统)
INI文件(Initialization File)是一种简单的、基于文本的配置文件格式,常用于软件的配置和初始化设置。INI文件通常包含配置信息,格式简单易读,常用于Windows操作系统和一些应用程序。原创 2024-06-27 22:43:06 · 412 阅读 · 0 评论 -
华为OD干了两个月,还是跑了
本人工作了快13年,base南京。2024年2月份由于公司业务变动第一次拿到了公司发的大礼包,同时也面临着失业的问题,我对自己的技术还是很有信心的,但是,找了大概有一个多月时间,发现心意的工作的确不太好找,当然收到挺多家offer,就是薪资不太满意,外包也一直不想去,不过说实话外包给的薪资普遍要比自研的单位要高一些,最后为了钱还是进华为(既然选择外包那就选择好一些的吧),毕竟中年老男人工作不能断太久。原创 2024-06-06 06:47:10 · 642 阅读 · 0 评论 -
gtk3.0入门看这一篇就够(十万字总结+源代码)
GTK(GIMP Toolkit)是一个用于创建图形用户界面(GUI)的跨平台工具包,主要用于Linux环境。GTK 3.0 是该工具包的一个版本,提供了一系列用于构建现代化、用户友好的应用程序界面的功能。原创 2024-05-30 21:14:51 · 258 阅读 · 0 评论 -
C++企业级编码规范(大厂规范)
编码规范在软件开发过程中起到了标准化、优化和保障的作用,不仅提升了代码质量和团队协作效率,还为项目的长期维护和扩展提供了坚实的基础。通过坚持和执行编码规范,开发团队能够更好地应对复杂的开发挑战,交付高质量的软件产品。原创 2024-05-18 22:27:28 · 146 阅读 · 0 评论 -
STL源码to_string解析
文件地址:libstdc+±v3\include\bits\basic_string.h。原创 2024-01-31 10:08:41 · 76 阅读 · 0 评论 -
C++11可变模板
定义一个递归的函数。T:表示一个,Types:表示多个。每次递归都移除一个参数,直到最后一个参数为止。void print(const T& firstArg)为结束递归的函数。原创 2024-01-30 18:05:36 · 172 阅读 · 0 评论 -
C++字符串分割
C++ 的 std::string 类并没有直接提供类似于 Python 中 split 方法的内置函数,但你可以使用其他方式来实现字符串分割。因此我们需要自己去实现这个方法。原创 2024-01-30 16:37:11 · 85 阅读 · 0 评论 -
Cppcheck静态分析工具详解
你可以从Cppcheck的官方网站(Cppcheck下载页面)下载并安装Cppcheck。安装完成后,你可以在终端或命令提示符中使用Cppcheck命令。原创 2024-01-18 17:26:13 · 196 阅读 · 0 评论 -
cmake构建动态库实例(cmakelist)
使用相对路径引用动态库的方式-rpath设置。最外层CMakeLists.txt。原创 2024-01-16 13:39:19 · 569 阅读 · 0 评论 -
arm64操作系统LLVM源码编译
编译electron需要对应版本的LLVM编译器,因此需要构建arm64版本的LLVM。构建过程如下。原创 2024-01-04 09:52:16 · 429 阅读 · 0 评论 -
C++虚函数和纯函数
允许在基类中定义通用接口,而将具体实现留给派生类。这样可以实现接口的定义和实现的分离,使得基类更加抽象和通用。进一步推动了接口和实现的分离,因为纯虚函数不提供任何默认实现,完全由派生类来实现。可以创建包含虚函数的抽象类,但它仍然可以被实例化。虚函数可以有默认实现。必须在包含纯虚函数的类中创建一个实例。它强制该类成为抽象类,不能被直接实例化。原创 2023-12-29 16:43:47 · 979 阅读 · 0 评论 -
C++构建简单静态库实例(cmakelist)
C++静态库(Static Library)是一种用于代码重用和模块化开发的方式。它是一组预编译的目标文件(Object Files)的集合,这些文件通常是由源代码编译而来的。这些目标文件被打包成一个单一的文件,以便在编译链接过程中一次性链接到程序中。静态库的文件扩展名通常为.a(在Unix/Linux系统上)或.lib(在Windows系统上)。编写你的C++代码并将其编译成目标文件(.o或.obj将所有的目标文件打包成一个静态库文件。在Unix/Linux系统上,可以使用ar。原创 2023-12-27 10:25:46 · 1449 阅读 · 0 评论 -
vs2017打开工程提示若要解决此问题,请使用以下选择启动 Visual Studio 安装程序: 用于 x86 和 x64 的 Visual C++ MFC
error:D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题解决、error MSB8036: 找不到 Windows SDK 版本8.1、用于 x86 和 x64 的 Visual C++ MFC原创 2023-11-17 07:00:00 · 1293 阅读 · 0 评论 -
amd64位linux系统C++交叉编译arm程序详解
交叉编译是指在一种计算机体系结构(如x86)上开发、编译软件,并将其在不同的计算机体系结构(如ARM、MIPS、PowerPC等)上运行。这种方式的主要应用场景是在嵌入式系统、移动设备、网络设备等资源有限的环境中,开发者可以在性能较高的主机上进行开发,然后将程序移植到目标设备上运行。原创 2023-11-08 07:00:00 · 380 阅读 · 1 评论 -
C++和汇编混编开发
在C++和汇编混合编程中,你可以使用C++编写大部分程序,同时使用内嵌汇编(inline assembly)或者汇编文件(assembly files)插入汇编代码片段来完成一些底层的操作或者性能优化。原创 2023-11-07 07:00:00 · 374 阅读 · 1 评论 -
C++实现小学二年级数学试卷题目
最近小侄女上二年级,她们老师要每天做计算题练习,但是题目得自己出(感觉出题比起名字都难),所以自己写了一个小程序满足他这个要求,这样他就又写不完的数学作业了。原创 2023-11-04 07:00:00 · 291 阅读 · 1 评论 -
C++ 常用函数汇总#include<vector>
是C++中用于引入标准库中的动态数组(也称为动态容器)的头文件。是一个非常常用的C++容器,它提供了一个动态数组,可以根据需要自动调整大小,比原始的C数组更加灵活和安全。以下是关于原创 2023-11-01 07:00:00 · 280 阅读 · 0 评论 -
Linux多线程详解(含源码)
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支 持,包括Windows也包括Linux。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方原创 2023-10-30 08:00:00 · 388 阅读 · 1 评论 -
C语言中的结构体和联合体有什么区别?
不同的是,在联合体中,所有的成员共享相同的内存地址,这意味着联合体的大小将等于最大成员的大小。这意味着,联合体中的各个成员共享同一块内存区域,而这个区域的大小由最大的成员决定。这是因为在联合体中,各成员共享同一块内存,按最大成员的大小进行内存分配,因此修改一个成员可能会影响其他成员的值。在联合体的内存分布中,为了满足各个成员的对齐要求,整个联合体的大小将会是其成员中最大的那个成员的大小的倍数。这是一个简单的例子,实际应用中,结构体和联合体可以用于更复杂的数据管理和处理场景。结构体用于存储学生信息,原创 2023-10-28 08:00:00 · 215 阅读 · 0 评论 -
C++ 常用函数汇总#include<algorithm>(3万字总结)
C++的头文件提供了许多常用的函数,用于执行各种算法操作,例如排序、搜索、合并等。以下是一些常用的C++头文件中的函数:源码地址:https://gitcode.net/arv002/qt/-/tree/master/c%2B%2B/algorithm文章地址:https://arv000.blog.csdn.net/article/details/133854644。原创 2023-10-31 07:00:00 · 402 阅读 · 0 评论 -
C++ 常用数学函数详解汇总#include<cmath>
在C++中,可以使用 头文件来包含常用的数学函数。这个头文件为C++程序提供了许多数学操作的函数。原创 2023-10-26 07:00:00 · 1074 阅读 · 2 评论 -
C/C++ system()函数的常用参数详解
在Linux操作系统下,system()函数可以用来执行shell命令。你可以传递不同的命令字符串作为参数给system()函数,它将在系统上执行这些命令。以下是一些常用的system()原创 2023-11-03 07:00:00 · 926 阅读 · 1 评论 -
C++入门需要多久?
作为十几年的代码老程序员,想到当时学习C++的时候还是很痛苦的,不过我遇到了一个很好的学长,他教会了我很多东西(在入门初期一个好的老师很重要!!)个人忠告,如果是0基础千万不要觉得看看视频就能学会。代码可能没写一行,你就会卡在编译器安装等问题上。并且作为0基础学员在代码编写上有很多的错误,例如中文符号,漏写结束符号等问题,这些都是小问题。老程序员一眼就能看到你的问题,你遇到问题永远不知道自己错在哪里(严重浪费时间)。那么学习C++我们需要哪些知识呢?原创 2023-10-11 13:59:13 · 151 阅读 · 0 评论 -
信息工程师需要掌握的知识范围合集
DDoS(分布式拒绝服务)攻击是指攻击者利用多个计算机或设备对目标服务器发起大量请求,耗尽目标服务器的资源,使其无法正常提供服务。攻击原理是通过大规模的流量淹没目标服务器或消耗其计算资源,导致服务不可用。SQL注入攻击是指攻击者通过在Web应用程序的输入字段中插入恶意的SQL代码,绕过应用程序的身份验证和安全机制,对数据库进行非法操作。攻击原理是利用应用程序对用户输入的不充分验证和过滤。防御措施包括使用参数化查询或预编译语句、输入验证和过滤、最小权限原则、定期更新和维护应用程序等。原创 2023-05-18 07:30:00 · 359 阅读 · 0 评论 -
C++网络工程师常见面试题以及答案
阻塞IO是指当程序进行IO操作时,如果数据没有准备好或无法立即写入,程序会被阻塞,直到IO操作完成。非阻塞IO是指当程序进行IO操作时,如果数据没有准备好或无法立即写入,程序不会被阻塞,而是立即返回一个错误码。区别和优缺点:阻塞IO的优点是编程简单,适用于单线程环境,等待IO完成时不会占用CPU资源。缺点是如果IO操作耗时较长,会导致程序阻塞,影响其他操作。非阻塞IO的优点是可以实现异步IO操作,提高程序并发性能。缺点是需要不断轮询IO状态,增加了编程复杂性,并且会占用较多的CPU资源。原创 2023-05-17 09:00:31 · 610 阅读 · 0 评论 -
C++类型转换运算符dynamic_cast、static_cast 和 reinterpret_cast
和。这些转换运算符可以用来在不同的上下文中进行类型转换,但它们的行为和使用场景是不同的。原创 2023-04-19 09:44:37 · 734 阅读 · 0 评论 -
Linux常用保护机制
Linux程序常见用的一些保护机制。原创 2022-08-15 09:00:00 · 1321 阅读 · 0 评论 -
linux应用hook实例(含源码分析)
函数地址替换是最简单的hook方式,在开发的时候发现C开发的程序和C++开发的程序hook还是有差别的。C开发的程序函数几乎是可以直接使用readelf查看,因此在查找函数偏移量的时候相对简单一些,但是如果是C++开发无法直接使用readelf命令查看函数地址,因此需要动态跟踪函数地址,找到函数偏移量然后针对该函数地址进行hook。..............................原创 2022-08-12 13:53:13 · 2565 阅读 · 1 评论 -
19道必须掌握的C++面试题
在面试C++方面的工作时,经常会遇到各种面试题,这对应聘人员的知识掌握能力要求较高。本文将为大家带来的就是19道必须掌握的C++面试题,不要错过哦!问1:请用简单的语言告诉我C++ 是什么?答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!问2:C和C++的区别?答:c++在c的基础上增添类,C是一个结构转载 2022-07-07 08:00:00 · 403 阅读 · 2 评论 -
C++出现 error: no match for ‘operator==‘ (operand types are ‘Person‘ and ‘const Person‘)
本文章向大家介绍C++出现 error: no match for 'operator==' (operand types are 'Person' and 'const Person') ,主要包括C++出现 error: no match for 'operator==' (operand types are 'Person' and 'const Person') 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。......原创 2022-07-05 07:00:00 · 32153 阅读 · 1 评论 -
24点游戏题库算法分析
目录一、4数种类分析二、四数排列算法分析三、分数计算类四、加减乘除操作符遍历五、探测4个数是否能计算24统计分析从标有1-10的数字的10个小球中取出1个小球记录小球的数字,然后将小球放回,如此反复4次取出4小球的数字组成的序号一共有多少种。注意:1.1.8.9 和1.8.1.9 算是一种。需要分为一下几种情况:一个有10种一共有10*9种 = 90一共有10 * ( 9 * 8 /2 )种 = 36010表示:10个相等的两个小球( 9 * 8 /2 )表示:另外两个小球不相等的情况。一共有(10*9)/原创 2022-06-29 07:00:00 · 798 阅读 · 5 评论 -
shared_ptr共享的智能指针
目录一、shared_ptr共享的智能指针1. std::shared_ptr基本用法1.1 std::shared_ptr初始化1.2 std::shared_ptr获取原始指针1.3 std::shared_ptr指定删除器C++ 11提供了3种智能指针:std::shared_ptr、std::unique_ptr和std::weak_ptr,使用时需要引用头文件.std::shared_ptr使用引用计数,每一个std::shared_ptr的拷贝都指向相同的内存。在最后一个std:......原创 2022-07-21 09:00:29 · 1109 阅读 · 0 评论 -
利用预编译参数删除和添加功能(C/C++)
在开发的过程,可能会遇到这样的情况,就是不同版本可能功能会有删除和添加,如果在代码做编写逻辑判断这样是可以满足要求的,但是这样做会出现不必要的判断。因此我们可以利用预编译宏定义来完成,删除或者添加功能。代码如下:我们可以看到在代码中使用宏#ifndef ... #define....#endif 这个语句。定义了TEST_FUN这个宏,如果在编译的时候不添加任何参数,表示默认使用hello new function 功能。看看效果编译如下:运行结果如下:可以看到默认使用了新功能。编译如下使用-D原创 2022-06-02 07:00:00 · 352 阅读 · 0 评论 -
Http协议与Https协议分析C++
Http协议与Https协议分析C++1. 请求行1.1 请求方法据RFC2616标准(现行的HTTP/1.1)请求方法,有以下这些:GET POST DELETE PUT OPTIONS 用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。 PROPFIND 用它可以来浏览目录 HE原创 2022-05-31 07:00:00 · 362 阅读 · 0 评论 -
TCP/IP协议分析 C++
目录学前认知以太网首部IP首部TCP首部HTTP协议学前认知1byte=8bit字符类型 c语言 byte 占位 u_char unsigned char 1 8 u_short unsigned short int 2 16 u_int unsigned int 4 32 u_long unsigned long int 8 64 TCP的协议图可以用以下总图来原创 2022-05-19 07:00:00 · 1474 阅读 · 1 评论 -
OpensSSL开发入门基础(C++)
目录编译OpenSSL环境准备编译前配置OpenSSL源代码介绍一、crypto目录二、apps目录引用OpenSSLcmakeqmake编译OpenSSL环境准备操作系统:LinuxOpenSSL版本:1.1.1o下载:/source/index.htmlhttps://www.openssl.org/source/也可以通过命令下载wget https://www.openssl.org/source/openssl-1.1.原创 2022-05-18 07:00:00 · 945 阅读 · 0 评论 -
Linux内核如何修改进程内存内容
进程地址空间的隔离 是现代操作系统的一个显著特征。这也是区别于 “古代”操作系统 的显著特征。进程地址空间隔离意味着进程P1无法以随意的方式访问进程P2的内存,除非这块内存被声明是共享的。这非常容易理解,我举个例子。我们知道,在原始野人社会,是没有家庭的观念的,所有的资源都是部落内共享的,所有的野人都可以以任意的方式在任意时间和任何其他野人交互。类似Dos这样的操作系统就是这样的,内存地址空间并没有隔离。进程可以随意访问其它进程的内存。后来有了家庭的观念,家庭的资源被隔离,人们便不能私闯民宅原创 2022-04-06 17:29:17 · 757 阅读 · 0 评论 -
gtest单元测试以及代码覆盖率详解
最近在写so库相关的项目,由于so是针对接口的代码编程,因此需要写大量的测试代码,因此使用gtest来进行测试自己的代码是很好的一个方式。当然测试还可以使用valgrind测试代码中是否有内存泄露。总之很爽。操作系统为Debian操作系统。需要安装gtestsudo apt-get install libtest-dev动态库编写新建项目项目目录如下:...原创 2022-03-21 23:32:49 · 6056 阅读 · 2 评论 -
openssl (base64编解码)C++
base64编码,使用c++的编解码的时候一定要注意/0的操作。outlen:bas64解码以后的字符长度。输出的字符中可能存在0,因此可能会造成拿到的字符串长度不正确。返回: char* 需要使用free进行释放,防止内存泄露。返回: char* 为编码结果,需要使用free进行释放。with_new_line:是否换行,64位长度换行。length : base64编码字符串的长度。length:将要编码的字符串长度。input:base64编码字符串。intput:将要编码的字符串。原创 2022-03-01 21:16:22 · 1726 阅读 · 2 评论