- 博客(70)
- 资源 (5)
- 收藏
- 关注

原创 C++知识导航
01 c++ 变量类型02 C++ 变量作用域03 C++ 常量04 C++ 修饰符类型05 C++ 存储类06 C++ 运算符07 C++ 循环08 C++ 判断09 C++ 函数10 C++ 数字11 C++ 数组12 C++ 字符串13 C++ 指针14 C++ 引用15 C++ 日期 & 时间16 C++ 基本的输入输出17 C++ 数据结构18 C++ 类 & 对象19 C++ 继承20 C++ 重载运算符和重载函数21 C++ 多态22 C++ 数据抽象
2022-06-27 09:41:41
298
3
原创 DoIP 流程
上图描述了 DoIP 诊断流程。Client首先发送车辆识别请求,待刷写 ECU 进行响应,Client收到车辆识别响应后与待刷写 ECU 建立 TCP 连接。TCP 连接建立后,Client发送通信激活请求,待刷写 ECU 进行通信激活请求响应。Client收到通信激活响应后,开始进行诊断报文交互。
2022-10-24 18:40:58
2198
1
原创 23 C++设计模式之解释器(Interpreter)模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
2022-09-02 16:34:44
831
2
原创 22 C++设计模式之备忘录(Memento)模式
备忘录(Memento): 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
2022-09-02 16:34:21
625
原创 21 C++设计模式之访问者(Visitor)模式
访问者模式(Visitor),表示一个作用于某对象结构中的各个元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
2022-09-02 16:34:00
719
原创 20 C++设计模式之迭代器(Iterator)模式
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
2022-09-02 16:33:33
616
原创 19 C++设计模式之中介者(Mediator)模式
中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2022-09-02 16:33:03
575
原创 18 C++设计模式之观察者(Observer)模式
观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。...
2022-08-31 16:11:29
359
原创 17 C++设计模式之状态(State)模式
状态模式(state),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
2022-08-30 10:37:40
901
1
原创 16 C++设计模式之职责链(Chain of Responsibility)模式
职责链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。...
2022-08-30 10:12:40
569
原创 15 C++设计模式之命令(Command)模式
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
2022-08-30 10:00:56
484
原创 14 C++设计模式之策略(Strategy)模式
策略模式(Startegy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
2022-08-19 10:47:50
786
原创 13 C++设计模式之模板方法(TemplateMethod)模式
模板方法模式(TemplateMethod),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2022-08-19 10:35:54
541
原创 12 C++设计模式之组合(Composite)模式
组合是一种结构型设计模式,你可以使用它将对象组合成树状结构,并且能像使用独立对象一样使用它们。
2022-08-11 15:51:19
561
原创 11 C++设计模式之享元(Flyweight)模式
享元是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。
2022-08-11 15:27:37
878
原创 10 C++设计模式之外观(Facade)模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2022-08-11 15:00:41
369
原创 09 C++设计模式之装饰(Decorator)模式
装饰是一种结构型设计模式,允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。
2022-07-27 17:21:22
368
原创 08 C++设计模式之桥接(Bridge)模式
桥接是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。
2022-07-26 10:06:14
420
原创 06 C++设计模式之代理(Proxy)模式
代理是一种结构型设计模式,让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。
2022-07-20 08:00:00
472
原创 05 C++设计模式之建造者(Builder)模式
将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。
2022-07-19 09:55:50
742
原创 04 C++设计模式之抽象工厂(Abstract Factory)模式
抽象工厂是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。
2022-07-18 12:52:34
388
原创 vsCode+Qt6.4.0+mingw环境搭建
以下插件都是除了中文插件都是需要的cmake环境配置安装在安装qt的时候默认会有mingw的版本安装我这边默认路径如下:这个路径根据自己的安装路径去看,然后把这个路径配置进环境里此版本是Qt6.4.0 的默认安装的mingw 11.2.0尽量用此版本我用官网mingw 8.1.0会出现编译好的程序无法运行,不知道是不是我是win11的原因还是版本过低。Qt可以配置mingw和mvsc 这里我们配置mingw用Qt Creator创建一个cmake工程这里我选择mingw5 vsCod
2022-07-14 08:00:00
4467
6
原创 03 C++设计模式之工厂方法(Factory Method)模式
在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型Product.h:ConcreteProduct.h:Creator.h:ConcreteCreator.h:main.cpp:
2022-07-13 09:27:40
321
1
原创 02 C++ 设计模式之原型(Prototype)模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。Prototype.h:ConcretePrototype.h:main.cpp:输出:...
2022-07-12 10:46:05
298
原创 01 C++ 设计模式之单例(Singleton)模式
单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点。单例模式可以保证内存里只有一个实例,减少了内存的开销。可以避免对资源的多重占用。单例模式设置全局访问点,可以优化和共享资源的访问。单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则。在并发测试中,单例模式不利于代码调试。在调试过程中,如果单例中的代码没有执行完,也不
2022-07-11 09:22:35
556
原创 07 C++STL之内存分配器
C++ 的默认的内存分配器,继承至。而 主要完成两个任务: 是个空类,没有成员变量,主要有四种成员函数完成上述任务函数,用于分配大小为个字节内存,返回值是分配所得内存的地址。整个过程如下:1.2 deallocate函数,使用来释放地址指向的内存。1.3 construct上面的函数相当于函数,只是分配个字节的内存,但是并未对这片内存进行初始化。对 函数分配的内存进行初始化的任务,交给函数来完成。函数,使用了表达式的另一种形式,叫做,使用方式如下注释:1.4 destroy函数,是完成了释放
2022-07-09 08:30:00
986
原创 06 C++STL之适配器
STL 提供了序列式容器,同时针对序列式容器提供了应用于不同场景的容器适配器,通俗讲适配器就是以序列式容器为底层数据结构,进一步封装了的为适应场景应用的容器。STL 中提供了三种适配器,分别为 stack,queue 和 priority_queue。...
2022-07-08 09:10:29
364
1
原创 05 C++STL之函数对象(仿函数)
仿函数的主要功能是为了搭配STL算法使用, 仿函数(functors)在C++标准中采用的名称是函数对象(function objects
2022-07-07 10:12:05
302
原创 04 C++STL之迭代器
要访问顺序容器和关联容器中的元素,需要通过 “迭代器(iterator)” 进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。定义方法:容器类名::iterator 迭代器名;定义方法:容器类名::const_iterator 迭代器名;定义方法:容器类名::reverse_iterator 迭代器名;定义方法:容器类名::const_reverse_iterator 迭代器名;通过迭代器可
2022-07-06 12:04:41
340
1
原创 03 C++ STL之算法
示例程序:2. 变值算法 对区间的每个元素都做某种操作; 复制一个区间到别处; 复制一个区间到别处,但目标区间是从后往前修改的; 将一个区间的元素变形后拷贝到另一个区间; 交换两个区间的内容; 用某个值填充区间; 用某个值替换区间中的 n {\rm n} n 个元素; 用某个操作的结果填充区间; 用某个操作的结果替换区间中的 n {\rm n} n 个元素; 将区间中的某个值替换为另一个值; 将区间中符合某种条件的值替换成另一个值; 将一个区间拷贝到另一个区间,拷贝时某个值要换
2022-07-05 14:26:39
264
1
原创 02 C++STL之容器
array(数组容器):定义在< array >头文件中, 表示可以存储N个T类型的元素,是C++本身提供的一种容器。此容器一旦建立,其长度就是固定不变的,也就是说无法增加或者删除元素,只能改变某个元素的值;vector(向量容器):定义在< vector>头文件中,用来存储T类型的元素,是一个长度可变的序列容器,即在存储空间不足时,会自动申请更多的内存。使用此容器,在尾部增加或者删除元素效率最高(时间复杂度为O(1)常数阶),在其他位置插入或删除元素效率较差(时间复杂度O(n)线性阶,其中n为.....
2022-07-04 13:00:28
1002
1
原创 01 C++STL之简介
STL 英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。STL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 程序库的重要组成部分。值得一提的是,如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。STL 就位于各个 C++ 的头文件中,即它并非以二进制代码的形式提供
2022-07-03 13:13:39
194
1
原创 33 C++ Web 编程
为了更好地了解 CGI 的概念,让我们点击一个超链接,浏览一个特定的网页或 URL,看看会发生什么。然而,以这种方式搭建起来的 HTTP 服务器,不管何时请求目录中的某个文件,HTTP 服务器发送回来的不是该文件,而是以程序形式执行,并把执行产生的输出发送回浏览器显示出来。公共网关接口(CGI),是使得应用程序(称为 CGI 程序或 CGI 脚本)能够与 Web 服务器以及客户端进行交互的标准协议。这些 CGI 程序可以用 Python、PERL、Shell、C 或 C++ 等进行编写。下图演示了 CGI
2022-06-30 07:45:00
424
2
原创 32 C++ 多线程
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。在一般情况下,有两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理处理的是程序的并发执行。基于线程的多任务处理的是同一程序的片段的并发执行。多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。C++ 不包含多线程应用程序的任何内置支持。相反,它完全依赖于操作系统来提供此功能。本教程假设您使用的是 Linux 操作系统,我们要使用 POSIX 编写多线程
2022-06-30 07:30:00
120
转载 31 C++ 信号处理
信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 中。C++ 信号处理库提供了 signal 函数,用来捕获突发事件。以下是 signal() 函数的语法:这个函数接收两个参数:第一个参数是一个整数,代表了信号的编号;第二个参数是一个指向信号处理函数的指针。让我们编写一个简单
2022-06-30 07:15:00
135
原创 30 C++ 预处理器
预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。我们已经看到,之前所有的实例中都有 #include 指令。这个宏用于把头文件包含到源文件中。C++ 还支持很多预处理指令,比如 #include、#define、#if、#else、#line 等,让我们一起看看这些重要指令。#define 预处理指令用于创建符号常量。该符号常量通常称为宏,指令的一般形式是:
2022-06-30 07:00:00
148
原创 VSCode+mingw/VSCode+CMake+mingw windows VSCode c++环境搭建
VSCode官网下载User Installer版:会安装在当前计算机帐户目录,意味着如果使用另一个帐号登陆计算机将无法使用别人安装的vscode。System Installer版:安装在非用户目录,例如C盘根目录,任何帐户都可以使用。(建议使用此版本)vscode默认提供的User Installer版,大多数人都是用的这个版本。选择自己需要的版本下载就可以了,安装比较简单这里就不详述了mingw官网下载进入往下拉进入高级系统设置->环境变量根据自己的解压路径配置,我的路径为:C:\P
2022-06-29 14:09:44
2684
原创 29 C++ 模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector 或 vector 。您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。模板函数定义的一般形式如下所示:在这里,type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。下面是函数模板的实例,返回两个数中的最大
2022-06-29 07:45:00
84
2
原创 28 C++ 命名空间
假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质
2022-06-29 07:30:00
87
Git-2.37.0-64-bit.rar
2022-06-29
VSCode-win32-x64-1.68.1.rar
2022-06-29
mingw 原文件名x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
2022-06-29
cmake最新版本cmake-3.24.0
2022-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人