C++ 复习(一)
命名空间
概念 : 命名空间的主要作用是创建一个新的作用域 里面可以放函数 变量 定义 为了防止命名冲突
实现 : 通过使用namespace + 空间名 {} 在大括号中添加 内容
1. 这里命名空间允许嵌套
2. 在同一个工程中允许存在多个同名的命名空间 在最后编译器会将它们合成同一个命名空间
test。c 和test。h 中的同名命名空间最后和合成一个同名命名空间
使用:命名空间的使用有三种方式:
1、加命名空间名称及作用域限定符 N::成员名
2.使用using将命名空间中某个成员引入 using N ::成员名 该成员就可以直接在文件中使用 而其他成员 仍然需要 N::成员名 这种方式来使用
3、使用using namespace 命名空间名称 引入 这种使用方式最广泛 优点命名空间中的所有成员可以在文件中直接使用 缺点: 在当前文件中可以回发生命名冲突的问题
对于同名函数 或者变量的访问规则 是
1.首先在局部作用域中寻找 是否存在
2.在全局作用中寻找 是否存在 也就是说 如果局部和全局同时存在的情况下 会优先访问局部
3. 在命名空间中的同名成员 没有被使用的情况下 是不会去访问空间的中的成员的 只会按照 以上一二优先级进行寻找
4. 如果通过 N::成员的方式进行访问 那么就会跳过局部和全局 直接访问命名空间中的成员
5. 如果通过 using N :: 成员 或者 是 using namespace N; 的方式声明 那么此时命名空间中成员的优先级 是与全局中的优先级相同的 也就是 在局部存在的情况下 会优先访问 如果局部 不存在 会在全局 和命名空间中同时找 如果此时 全局 和命名空间中都存在 那么就会发生 命名冲突
缺省函数
概念 : 是声明或者定义一个函数是外函数的参数制定一个默认值 在调用该函数 时 如果没有对应的参数 那么就会使用默认值 否则就会使用指定的实参
分类 : 全缺省函数:所有的参数都带缺省值
半缺省函数:部分参数带有缺省值(这里的缺省值必须是从右都左依次给出)
注意事项
1. 半缺省函数只能从右向左 不能隔着给
2. 在声明和定义分离的函数中 不能同时在声明和定义中 加缺省值 要写在声明中 定义中不要加缺省值
3.缺省参数 必须是常用和全局变量 在编译的过程中 要能明确知道缺省值的内容
4.c语言不支持
函数重载
概念 :相同作用域 函数名相同 返回类型相同 但是参数列表不相同 ( 参数的数量 参数的类型 参数的顺序 有至少一个不同)
调用原理 : 函数名相同 编译器在最后进行链接时 会对建立函数名 和函数定义之间的映射 而同名的函数 通过参数列表对函数名进行修饰 就可以对应的一个函数名 找到一个对应的地址 这样就可以实现函数重载
extern “C” 的作用 在c++函数前如果使用 extern “C”进行修饰 表明告诉编译器 该函数按照c的编译
引用
概念 引用 就是相当于给一个已经存在的变量起别名 是c++中独有的 是编译器不会在为引用单独开一个空间 而是与这个引用的变量公用一个空间
特性 1.引用在创建时必须进行初始化
2. 一个变量可以有多个引用
3. 一个引用一旦初始化完成就不能修改其引用的内容了 且引用时 不能进行空引用
const 引用 使用const引用时 该引用的变量是不能进行修改的
引用的场景 1. 实现简单普通的取别名 比如 结构体套用结构体 想要使用里层结构体中的成员 不方便可以直接去别名
2. 做函数参数 尤其是需要传自定义类型的参数 或者说 想要通过形参改变外部的实参 这里有可能是输出型参数
3. 做函数返回值 这里需要注意的是引用返回的内容的生命周期不能随着函数结束而销毁 这样的话返回的引用指向的空间就是一个已经释放的错误空间
引用和指正的区别
1. 引用在创建时必须进行初始化 而指针可以不初始化
2. 引用在一旦初始化完成之后就不能再更改 而指针的指向是可以进行修改的
3. 引用不能进行空引用 而指针可以进行空指针创建
4. 在sizeof中的含义不同 引用的大小是指向空间的类型大小 但是指正的大小是始终固定的 (32为下 4字节)
5.引用的++ 和-- 是对引用空间的内容实际上++或者-- 但是指针++ 和-- 则是对指向的空间地址进行++ 和--
6. 存在多级指针 但是不存在 多级引用
7.访问实体方式不同 指正同过解引用的操作访问 引用通过编译器解决
8.引用比指针使用起来更加安全
相同点 两者的底层实现上是相同的 引用的底层使用的是指针的底层实现的
内联函数
概念
内联函数是一种通过inline
修饰的函数,编译时会在调用的地方展开,没有函数压栈的开销,可以提高程序运行效率。
特性
-
对编译器而言,inline
是一种空间换时间的做法,省去了调用函数的额外开销 ,适合短小的函数。inline
只是一个建议,编译器会根据具体情况优化 比如一个函数体特别大的函数进行内联修饰 这时候编译器就不会采用在调用的地方展开的方式。 -
不建议声明和定义分离,否则可能导致链接错误。 因为inline 被展开 就没有函数地址 链接找不到
宏函数
优点
-
在预处理阶段展开,减少函数调用开销。
缺陷
-
编译前展开,若出错难以定位。
-
参数无类型检查,安全性低 不能进行类型检查。
-
可读性差,可能引起副作用。
-
不能调试。
-
可能引起代码膨胀。
-
编译前展开,增加预处理时间。
内联函数
优点
-
参数有类型,安全性高。
-
提高代码运行效率。
-
调试方便。
-
无副作用。
缺陷
-
可能引起代码膨胀。
-
inline
是建议性关键字,编译器可能不处理。 但是编译器是否真的会进行展开处理不得而知 容易给用户代开困惑
内联函数和宏函数区别
-
内联函数在编译阶段展开,宏函数在预处理阶段展开。
-
内联函数参数有类型,宏函数没有。
-
内联函数安全性高,宏函数安全性低。
-
内联函数可调试,宏函数不可调试。
-
内联函数可能引起代码膨胀,宏函数也可能导致膨胀。
类和对象中的8个默认生成函数之中的最常用的4个默认成员函数
首先是介绍析构函数 和构造函数
首先是构造函数 它的作用不是创建一个对象 而是去初始化一个对象
1. 它的函数名 与类名相同
2.它没有返回类型 不用写void
3.如果没有显示定义构造函数 那么编译器就会自动生成默认构造函数 在创建对象时 编译器会自动调用构造函数
4. 调用构造函数 如果是无参 那么就不需要括号(这里无参不能加括号 会与一些函数声明起冲突) 如果有参数 那么需要传参括号 这里的格式是类名 + 对象名 ();
5.构造函数 可以成重载
6. 对于初始化方面 如果是定义了 就是按照对应的定义初始化 如果没有定义 是默认生成的 就会对内置类型不做处理 对自定义类型的成员去调用它的默认构造函数(这里的默认构造函数 并不是单指默认生成构造函数 而是 可以不传参数进行构造的函数 有 无参构造函数 全缺省构造函数 默认生成构造函数 并且三种默认构造函数 只能同时存在一个 )
7. 那么默认生成的构造函数如果对内置类型不做处理的话 默认生成函数是否就是没有用的 ?
这里的原因就是第六点 回答默认生成构造函数的作用 另外在c++11中 可以使用在类成员声明的方式来对成员进行初始化
接着是析构函数 析构函数的作用也不是去销毁一个函数 而是为了清理资源
1.它的函数名 与类名相同 在函数名前面加一个~
2. 同样没有返回值 不用写void
3。析构函数不能进行函数重载
4. 析构函数是没有参数的
5.如果没有显示定义析构函数 那么系统会默认生成析构函数 在对象的生命周期结束时 会自动去调用析构函数 对于默认的析构函数 对于内置类型成员 会不对进行处理 如果是自定义类型成员 那么会调用 其对应的析构函数
6. 对于是否要手动定义析构函数
以下两种情况是吧不需要进行手动定义的
1. 该类中的成员内置类型的成员没有需要清理的资源 且剩下的都是 自定义成员
2. 该类中成员中没有需要清理的资源
当类的成员中存在资源时 就需要进行清理 这时就需要手动写析构函数
接下来我们介绍拷贝构造函数
1. 它是构造函数的函数重载的一个形式
2. 它的参数固定有一个 且一定是这个类类型的引用类型 (这里有两点 1.一个参数是为了传入对应的要被拷贝的对象 拷贝的对象通过this指正来指向 2. 这里使用引用是为了防止发生不停的进行构造函数造成死循环 应为如果是传值传参的话 就会调用拷贝构造函数 这样会无线递归 )
3.若是没有显示调用拷贝构造函数 那么系统会生成默认拷贝构造函数 这里的默认拷贝构造函数会按照字节一个个进行浅拷贝 但是如果需要调用析构函数来清理资源时之前有浅拷贝 就会导致调用·多次析构函数 从而导致报错 所以这里的规则是 如果需要手动写析构函数的类 就需要手动写拷贝构造函数 否则就使用默认拷贝构造函数就足够了
实践总结中
1.没有需要管理资源的成员的类不需要手写拷贝构造函数
2. 一般情况下 不需要写析构函数的类 也不用写深拷贝
3.如果都是自定义类型且内置类型中没有需要资源管理的成员 就不要写生拷贝
4.如果内部有一些指正或者指向资源的成员 就需要写析构函数 和深拷贝
这里显示调用拷贝构造函数的方式有两种
1. N n1(n2);
2. N n1 = n2 ; (这里的方式是通过编译器进行转换 使用更加方便)
接下来介绍赋值拷贝函数
在介绍赋值拷贝函数之前首先介绍 首先介绍运算符重载函数
在都是内置类型的情况下是 可以直接使用运算符的 而自定义类型想要使用运算符 那么就需要使用运算符重载
运算符重载是具有特殊函数名的函数 它的函数名是由 operator +运算符构成的 其他位置保持不变
这里有一些关于运算符重载的注意
1. 对于 特殊函数名 operator@ 这样是不行的 中间要有一个空格 不能连在一起
2. 对于自定义类型的运算符重载 它是需要作用域在类之中的 不能写成全局的 (这里是为了访问到私有成员变量 另外也是一种规定)
3. 对于自定义类型的参数 需要使用引用传值 是为了防止递归调用 此外还可以使用const修饰自定义类型的参数 并且该参数列表中至少要存在一个·自定义类型的参数
4. 运算符重载的参数数量是会比正常的数量-1 减少的那一个是通过this指针隐式指向
5. 对于运算符重载的功能不能随意乱改 (这里不是硬性规定 但是一般要与原来的运算符保持功能相同)
6. .* . sizeof :: ?: 这五个是不能进行运算符重载的
此外这里还需要介绍引用返回 尤其是需要返回自定义类型的时候 是需要使用引用返回的
1. 相比与普通的传值返回 引用返回会减少拷贝构造的次数 因为在传值返回时无论是返回值 还是接受返回值的对象都需要调用构造函数 来创建对象 而使用引用是可以减少损耗
2. 对于自定义类型 在函数的作用域结束后 是会进行销毁的 而会调用析构函数 对资源进行清理 所以对于使用引用返回时 要确定返回的对象的生命周期是否会跟随这个函数 结束 如果返回内容会随函数进行清理 那么就不能使用引用返回 引用返回只适用于生命周期不会随着函数结束的对象
如 this指针就可以使用引用返回 (返回this指正是为了 满足某些函数的连续赋值功能)
3.对于赋值拷贝函数如果没有显示实现 那么就会生成默认赋值拷贝函数 此函数会以浅拷贝的方式一个一个字节来进行拷贝 对于内置类型直接赋值 对于自定义类型会自动调用它的赋值拷贝函数
所以这里的使用方式与拷贝构造函数类似 如果需要内置类型管理资源 那么就要写析构函数 拷贝构造函数 赋值拷贝函数 显示实现 如果不需要管理资源 那么使用默认生成的成员函数就足够了
相关文章:
C++ 复习(一)
命名空间 概念 : 命名空间的主要作用是创建一个新的作用域 里面可以放函数 变量 定义 为了防止命名冲突 实现 : 通过使用namespace 空间名 {} 在大括号中添加 内容 1. 这里命名空间允许嵌套 2. 在同一个工程中允许存在多个同名的命名空间 在最后编译…...
主备Smart Link + Monitor Link组网技术详细配置
1.实验拓扑 2.使用设备 eNSP模拟建议下行设备三台使用S3700模拟(全部使用S5700可能会出现流量丢失等异常问题。) 3.实验配置 [SW1]dis cu # sysname SW1 # vlan batch 100 110 # interface Ethernet0/0/1port link-type accessport default vlan 100 …...
【5G通信】redcap和bwp 随手记
在5G通信中,BWP(Bandwidth Part)是一种技术,允许终端设备在不同的带宽部分上进行通信,从而提高频谱效率和灵活性。BWP可以分为初始BWP(Initial BWP)、默认BWP(Default BWP࿰…...
第三天 车联网云架构
一、车联网技术演进与行业变革 1.1 从传统Telematics到智能网联汽车 当我们驾驶着搭载智能网联系统的汽车时,车辆每秒会产生超过1GB的数据流量。这些数据包括: 高精度地图的实时更新ADAS传感器采集的环境信息车载娱乐系统交互数据车辆状态监控信息 传…...
手撕基于AMQP协议的简易消息队列-7(客户端模块的编写)
在MQClient中编写客户端模块代码 在MQClient中编写makefile文件来编译客户端模块 .PHONY:all all:PublichClient ConsumeClient PublichClient : PublichClient.cpp ../MQCommon/request.pb.cc ../MQCommon/message.pb.cc ../ThirdLib/lib/include/muduo/protobuf/codec.ccg …...
Spring Security(笔记)
第一步: 首先使用Intellij IDEA创建一个Spring Boot项目,JDK选择自己安装的1.8。点击Next后,编辑项目信息。然后跳转到选择依赖页面。 第二步: 添加Spring Security、Spring Web、Thymeleaf三个依赖。完成后等待项目构建完成。…...
通义灵码编码插件支持MCP
通义灵码MCP功能集成概述 通义灵码已深度集成魔搭社区(ModelScope)的MCP(Model Context Protocol)服务,为开发者提供了在IDE中直接调用AI能力的便捷通道。MCP作为标准化协议,通过定义Resources、Prompts和…...
问题 | 当前计算机视觉迫切解决的问题
当前计算机视觉领域虽然在技术上取得了显著进展,但仍面临一系列关键挑战。结合最新研究与应用现状,以下是最迫切需要解决的几大问题: 1. 数据质量与多样性不足 高质量标注数据的获取:训练高效模型依赖大量精准标注的数据&#x…...
C++ STL入门:vecto容器
C STL 系列入门:vector 动态数组 一、vector 容器核心特性 vector 是 C 标准库提供的动态数组容器,具有以下显著优势: 自动扩容机制:当插入元素超出当前容量时,自动申请新内存并迁移数据随机访问效率:支持…...
Java 线程全面概述
Java 线程全面概述 线程是程序执行的最小单元,是操作系统能够调度的最小单位。Java 提供了完善的线程支持,下面从基础概念到高级特性进行全面解析。 一、线程基础概念 1. 线程 vs 进程 特性进程线程资源占用独立内存空间共享进程内存切换成本高&#…...
高效文件夹迁移工具,轻松实现批量文件管理
软件介绍 DirMapper是一款专注于文件夹迁移的工具,可以快速完成文件的批量整理与位置调整。 功能特点 这款文件夹迁移工具提供两种操作模式:复制模式和移动模式,用户可以根据需求自行选择。如果需要保留原文件,可以选择复…...
sherpa:介绍
更多内容:XiaoJ的知识星球 目录 1. sherpa 介绍 1. sherpa 介绍 sherpa是 Next-gen Kaldi 项目的部署框架。 sherpa 支持在各种平台上部署与语音相关的预训练模型,并提供多种语言绑定。 目前,sherpa 拥有以下子项目: k2-fsa/sh…...
Android Studio Gradle 中 只显示 Tasks 中没有 build 选项解决办法
一、问题描述 想把项目中某一个模块的代码单独打包成 aar ,之前是点击 AndroidStudio 右侧的 Gradle 选项,然后再点击需要打包的模块找到 build 进行打包,但是却发现没有 build 选项。 二、解决办法 1、设置中勾选 Configure all Gradle tasks… 选项 …...
手撕基于AMQP协议的简易消息队列-6(服务端模块的编写)
在MQServer中编写服务端模块代码 在MQServer中编写makefile文件来编译服务端模块 .PHONY: server CFLAG -I../ThirdLib/lib/include LFLAG -L../ThirdLib/lib/lib -lgtest -lprotobuf -lsqlite3 -pthread -lmuduo_net -lmuduo_base -lz server:server.cpp ../MQCommon/messag…...
面试实践AND面经热点题目总结
1、对于Rocketmq消息积压、丢失如何解决? 消息积压原因以及解决方案 🎯 产生原因: 消费者处理能力弱,消费速度远低于生产速度; 网络不稳定,消费者拉取消息失败; 消费端异常(如处理…...
MySQL基础关键_012_事务
目 录 一、概述 二、ACID 四大特性 三、MySQL 事务 四、事务隔离级别 1.说明 2.现象 (1)脏读 (2)不可重复读 (3)幻读 3.查看隔离级别 4.设置隔离级别 5.隔离级别 (1)初始…...
Missashe考研日记-day35
Missashe考研日记-day35 1 专业课408 学习时间:3h学习内容: 完结撒花!!今天把OS最后一节的内容学完了,操作系统也算是告一段落了,接下来是计网时间!不过计网我是上学期才学过的,当…...
如何添加二级域名
在 华为云 上添加二级域名(如 sub.example.com)主要涉及 DNS解析配置 和 服务器绑定 两个步骤。以下是详细操作指南: 一、前提条件 已拥有 主域名(如 example.com)并完成 ICP备案(若服务器在中国大陆&#…...
【数据结构】01Trie
什么是 01Trie? 01Trie是字典树的一种变种,其只有两种情况,即 0 和 1,实现方式其实和字典树是一样的 有什么用呢? 其一般用于解决异或问题,是一种快速的数据结构,某些情况下可以无脑套用 实现方式&#…...
使用 CDN 在国内加载本地 PDF 文件并处理批注:PDF.js 5.x 实战指南
PDF.js 是一个强大的开源 JavaScript 库,用于在 Web 浏览器中渲染 PDF 文件。它由 Mozilla 开发,能够将 PDF 文档绘制到 HTML5 Canvas 或 SVG 上,无需任何本机代码或浏览器插件。对于许多需要在网页中展示 PDF 内容的应用场景来说,…...
SpringBoot指定项目层日志记录
1、新建一个Springboot项目,添加Lombok依赖(注意:这里使用的Lombok下的Slf4j快速日志记录方式) <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependenc…...
使用Mathematica内置函数绘制Sierpinski地毯
除了SierpinskiCurve之外,Mathematica还内置了SierpinskiMesh这个函数,用来绘制地毯。 SierpinskiMesh[n] gives a mesh region representing the n-step Sierpiński triangle. SierpinskiMesh[n,d] gives the n-step Sierpiński sponge in dimension…...
CMake笔记(简易教程)
CMake笔记 概述(需要提前了解的知识) 一个c/c程序从代码到生成二进制文件,需要经历的几个关键步骤:预编译(预处理)、编译、汇编、连接 【编译链接的几个步骤】 编译器:目前市面常见的编译器有…...
现代健康养生新范式:多维度守护身心活力
在快节奏的现代生活中,健康养生是维持高品质生活的关键。从环境调节到生活习惯养成,多个维度的协同发力,才能为健康注入持久动力。 良好的生活环境是健康的基础。室内空气流通至关重要,每天开窗通风 2-3 次,每次 30…...
推测式思维树:让大模型快速完成复杂推理
论文标题 Accelerating Large Language Model Reasoning via Speculative Search 论文地址 https://www.arxiv.org/pdf/2505.02865 作者背景 中科大,华为诺亚方舟实验室,天津大学 ICML 2025接收 动机 之前介绍过多篇投机解码(推测式解…...
软考错题(三)
telnet协议是一种基于TCP的远程登录协议 占用辅助空间最多的是归并排序 直接插入,堆排,简单选择,冒泡的空间复杂度是O(1) 快排是O(logn) 归并是O(n) B树的叶子节点通过指针链接为有序表,不是b-树 python中切片语法[start,end,s…...
注解的定义
一、理论说明 1. 注解的定义 Java 注解是从 JDK 5.0 开始引入的一种元数据机制,它可以为代码添加额外的信息,这些信息不影响程序的运行逻辑,但可以在编译期、类加载期或运行期被读取和处理。注解本质上是一种特殊的接口,所有注解…...
企业微信自建消息推送应用
企业微信自建应用来推送消息 前言 最近有个给特定部门推送消息的需求,所以配置一个应用专门用来推送消息。实现过程大致为:服务器生成每天的报告,通过调用API来发送消息。以前一直都是发邮件,整个邮箱里全是报告文件,…...
swagger3融入springboot
标签: 放controller上面 Api(description "xxx") 放方法上面 Operation(summary "xxx") 引入: 我用的是swagger3.X 需要在yml配置文件中加上: spring:mvc:pathmatch:matching-strategy: ant_path_matcher 然后生…...
CH32V208GBU6沁恒绑定配对获取静态地址
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...
[计算机科学#11]:编程语言简史,从二进制到简约表达的华丽转身,造就原因——“懒”
【核知坊】:释放青春想象,码动全新视野。 我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!! 内容摘要: 由于早期的编程需要直接操作硬件,例如使…...
Kubernetes HPA 深度解析:生产环境自动扩缩容实战指南
一、HPA 核心原理剖析 1. 运作机制三步曲 (图示:指标采集 → 决策计算 → 执行扩缩容的完整闭环) 指标采集层:通过 Metrics Server/Prometheus 等组件实时收集 CPU、内存或自定义指标决策计算层:根据当前指标值与目标阈值的比例计算所需副本…...
Matlab 四分之一车体被动和模糊控制对比
1、内容简介 Matlab215-四分之一车体被动和模糊控制对比 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
pm2如何执行脚本批量启动多个服务
在 PM2 中批量启动多个服务,可以通过以下几种高效方式实现,具体操作如下: 方法1:使用 ecosystem.config.js 配置文件(推荐) 步骤1:生成配置文件 在项目根目录运行以下命令,生成模板…...
Debian系统详解
以下是关于 Debian 操作系统 的超详细深度解析,涵盖历史、架构、功能特性、管理细节及应用场景等方面,帮助你全面掌握这一经典 Linux 发行版: 一、Debian 概述:开源社区的基石 1. 历史与定位 • 诞生:1993 年由 Ian…...
Dify X 奇墨科技,让AI大模型从“巨头专属”变为“触手可及”
AI大模型和AI Agent蓬勃发展,企业比拼的已不仅是AI技术储备,更是AI应用落地的实战能力。奇墨科技正式成为 AI 应用开发平台Dify中国大陆区企业版合作伙伴,帮助企业更便捷地接触到Dify并使用其开发AI应用。 Dify 是一款简单易用的 LLM 应用开…...
CSS相对定位与绝对定位
在网页设计里,相对定位(Relative Positioning)和绝对定位(Absolute Positioning)是 CSS(层叠样式表)里控制元素位置的关键手段。下面为你详细讲解它们的概念、特点与应用场景。 相对定位 概念…...
正则表达式(Regular Expression)详解
正则表达式(简称"regex"或"regexp")是一种强大的文本模式匹配工具,它使用特定语法来描述、匹配和操作字符串。 基本概念 正则表达式是由普通字符(如字母a到z)和特殊字符(称为"元…...
OpenCV-Python (官方)中文教程(部分一)_Day22
22.3 2D直方图 在前面的部分我们介绍了如何绘制一维直方图,之所以称为一维,是因为我们只考虑了图像的一个特征:灰度值。但是在 2D 直方图中我们就要考虑 两个图像特征。对于彩色图像的直方图通常情况下我们需要考虑每个的颜色(Hue)和饱和度&…...
【软考-高级】【信息系统项目管理师】【论文基础】采购管理过程输入输出及工具技术的使用方法
采购管理概念 项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。项目采购管理包括编制和管理协议所需的管理和控制过程,例如合同、订购单、协议备忘录(MOA)和服务水平协议(SLA)。 采购管理…...
基于STM32、HAL库的CP2102-GMR USB转UART收发器 驱动程序设计
一、简介: CP2102-GMR是Silicon Labs公司生产的一款USB转UART桥接芯片,主要特点包括: 集成USB 2.0全速功能控制器 内置USB收发器,无需外部电阻 工作电压:3.0V至3.6V 支持的数据格式:数据位8,停止位1,无校验 最高支持1Mbps的波特率 内置512字节接收缓冲区和512字节发送…...
信息系统项目管理工程师备考计算类真题讲解十四
一、最小生成树问题 此问题采用破圈法来解决, 1)以1节点为例,找到路径最小 点:1--5:距离为3 2)找1--5最短的节点,选择4:1--5--4:距离为:5 3)找…...
二叉树的基本操作
二叉树的基本操作(C 语言版) 1 二叉树的定义 二叉树的图长这样: 二叉树是每个结点最多有两个子树的树结构,常被用于实现二叉查找树和二叉堆。二叉树是链式存储结构,用的是二叉链,本质上是链表。二叉树通常以结构体的形式定义,如下,结构体内容包括三部分:本节点所存储…...
网络基础入门第6-7集(抓包技术)
前言: 来自小迪安全v2023 内容: 第六集: 大致内容:burpsuit、茶杯、fiddler的抓包流程 1、安装抓包软件的相关证书 2、各大抓包软件的测试 注意用burp抓模拟器的数据包,需要将ip地址设置为本地的ip地址ÿ…...
自定义Widget开发:自定义布局实现
自定义Widget开发:自定义布局实现 一、Flutter布局系统基础 1. 布局约束(Constraints) 在Flutter中,布局系统基于约束(Constraints)的概念。每个widget都会接收来自其父widget的约束,并根据这…...
MyBatis(进阶)(xml标签)
本节⽬标 1. 学习MyBatis的动态SQL查询 2. 掌握MyBatis在项⽬中的应⽤, 可以使⽤Spring MVC完成⼀些基础的功能 1. 动态SQL(XML) 动态 SQL 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接 可以参考官⽅⽂档: M…...
英皇娱乐X乐华娱乐携手造星!“英皇乐华青少年艺人培训班”正式启动!
2025年5月8日,英皇娱乐集团与乐华娱乐集团联合宣布,双方将在北京市燕京实验中学合作开设“英皇乐华青少年艺人培训班”,为8至18岁的青少年提供专业的演艺及才艺学习平台。此次合作旨在集合两大娱乐公司在演艺行业的资源与优势,共同…...
Linux云计算训练营笔记day04(Rocky Linux中的命令)
mv 移动(剪切) 源数据会消失 格式: mv 源文件 目标路径 touch /opt/a.txt 创建文件 mv /opt/a.txt /root 移动文件,没有改名 mkdir gongli 创建目录 mv gongli /opt/ 移动目录,没有改名 mv /opt/gongli tedu 移动目录,改名了 …...
枚举 · 例13-【模板】双指针
登录—专业IT笔试面试备考平台_牛客网 代码区: #include<algorithm> #include<iostream> #include<vector> #include<unordered_set> using namespace std;struct INTER{int left,right; }; bool compare(const INTER&a,const INTER&a…...
Linux网络编程day7 线程池and UDP
线程池 typedef struct{void*(*function)(void*); //函数指针,回调函数void*arg; //上面函数的参数 }threadpool_task_t; //各子线程任务的结构体/*描述线程池相关信息*/struct threadpool_t{pthread_mutex_t lock; …...