(学习总结10)C++类和对象1
C++类和对象1
- 一、类的定义
- 1.类定义格式
- 2.访问限定符
- 3. 类域
- 二、实例化
- 1.实例化概念
- 2.对象大小
- 三、this指针
- 四、C++和C语言实现Stack对比
以下代码环境在 VS2022。
一、类的定义
1.类定义格式
-
class 为定义类的关键字,Stack 为类的名字, { } 中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员,类中的变量称为类的属性或成员变量,类中的函数称为类的方法或者成员函数。
-
为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加 “ _ ” 或者 “ m ” 开头,注意C++中这个并不是强制的,只是一些惯例。
-
C++中 struct 也可以定义类,C++兼容C中 struct 的用法,同时 struct 升级成了类,明显的变化是 struct 中可以定义函数,一般情况下我们还是推荐用 class 定义类。
-
定义在类里面的成员函数默认加上 inline 。
#include <iostream>class Stack
{
public:// 成员函数void init(int n = 4){_arr = nullptr;_capacity = _size = 0;checkCapacity();}int top(){return _arr[_size - 1];}void pop(){--_size;}void push(int x){checkCapacity();_arr[_size++] = x;}void destroy(){free(_arr);_arr = nullptr;_capacity = _size = 0;}void checkCapacity(){if (_capacity <= _size){int newCapacity = _capacity == 0 ? 4 : _capacity * 2;int* temp = (int*)realloc(_arr, sizeof(int) * newCapacity);if (temp == nullptr){perror("realloc faild");return;}_arr = temp;_capacity = newCapacity;}}private:// 成员变量int* _arr;int _capacity;int _size;};int main()
{Stack st;st.init();st.push(1);st.push(2);st.push(3);st.destroy();return 0;
}
2.访问限定符
-
C++一种实现封装的方式,用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。
-
public 修饰的成员在类外可以直接被访问,protected 和 private 修饰的成员在类外不能直接被访问,protected 和 private 在这方面的作用是一样的。(在继承中才可体现他们的区别)
-
访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止,如果后面没有访问限定符,作用域就到 “ } ” 即类结束。
-
class 定义成员没有被访问限定符修饰时默认为 private,struct 默认为 public。
-
一般成员变量都会被限制为 private / protected,需要给别人使用的成员函数会修饰为 public。
class Student
{// 访问限定符public:protected:private:};
3. 类域
- 类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用 “ :: ” 作用域操作符指明成员属于哪个类域。
- 类域影响的是编译的查找规则,下面程序中 init 如果不指定类域 Stack,那么编译器就把 init 当成全局函数,那么编译时,找不到 _arr 等成员的声明 / 定义在哪里,就会报错。指定类域 Stack,就是知道 init 是成员函数,当前域找不到的 _arr 等成员,就会到类域中去查找。
class Stack
{
public:void init(int x);private:int* _arr;int _capacity;int _size;};// 声明和定义分离
void Stack::init(int x)
{//...
}
二、实例化
1.实例化概念
- 用类类型在物理内存中创建对象的过程,称为类实例化出对象。
- 类是对象进行一种抽象描述,是一个模型一样的东西,限定了类有哪些成员变量,这些成员变量只是声明,没有分配空间,用类实例化出对象时,才会分配空间。
- 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量。打个比方:类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,设计图规划了有多少个房间,房间大小功能等,但是并没有实体的建筑存在,也不能住人,用设计图修建出房子,房子才能住人。同样类就像设计图一样,不能存储数据,实例化出的对象才能分配物理内存存储数据。
2.对象大小
类实例化出的每个对象,都有独立的数据空间,所以对象中肯定包含成员变量。但成员函数不一样,首先函数被编译后是一段指令,对象中没办法存储,这些指令存储在一个单独的区域(代码段),那么对象中非要存储的话,只能是成员函数的指针。并且对象中也没有存储其指针的必要,Date 实例化 d1 和 d2 两个对象,d1 和 d2 都有各自独立的成员变量 _year / _month / _day 存储各自的数据,但是 d1 和 d2 的成员函数 init / print 指针却是一样的,存储在对象中就浪费了。如果用 Date 实例化 100 个对象,那么成员函数指针就重复存储 100 次,太浪费了。
#include <iostream>
using namespace std;class Date
{public:void init(int year = 2000, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void print(){cout << _year << "/" << _month << "/" << _day << endl;;}private:// 只是声明,没有开空间int _year;int _month;int _day;};int main()
{Date d1;Date d2;d1.init(2024, 8, 2);d1.print();d2.init(2014, 8, 2);d2.print();return 0;
}
上面我们分析了对象中只存储成员变量,C++规定类实例化的对象也要符合内存对齐的规则。
内存对齐规则:
- 第一个成员在与结构体偏移量为 0 的地址处。
- 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。
- 注意:对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。
- VS中默认的对齐数为 8
- 结构体总大小为:最大对齐数(所有变量类型最大者与默认对齐参数取最小)的整数倍。
- 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。
博客 (学习总结6)C语言结构体的内存对齐和位段实现 对内存对齐有详细的解释,这里不赘述。
没有成员变量的类为表示对象存在,给定 1 字节,纯粹为了占位标识对象存在。
#include <iostream>
using namespace std;class Student
{;
};int main()
{Student a;// 大小都为 1 字节cout << sizeof(a) << endl;cout << sizeof(Student) << endl;return 0;
}
三、this指针
-
Date 类中有 init 与 print 两个成员函数,函数体中没有关于不同对象的区分,那当 d1 调用 init 和 print 函数时,为分辨应该访问的是 d1 对象还是 d2 对象,C++给了一个隐含的 this指针 解决这个问题。
-
编译器编译后,类的成员函数默认都会在形参第一个位置,增加一个当前类类型的指针,叫做 this指针。比如 Date 类的 init 的真实原型为,void init(Date* const this, int year, int month, int day)
-
类的成员函数中访问成员变量,本质都是通过 this指针 访问的,如 init 函数中给 _year 赋值,可改为 this->_year = year。
-
C++规定不能在实参和形参的位置显示的写 this 指针(编译时编译器会处理),但是可以在函数体内显示使用 this 指针。
-
this指针 存放在寄存器中。
class Date
{public://void init(Date* const this, int year = 2000, ...)void init(int year = 2000, int month = 1, int day = 1){// 不能修改//this = nullptr;//_year = year;//_month = month;//_day = day;this->_year = year;this->_month = month;this->_day = day;}void print(){cout << _year << "/" << _month << "/" << _day << endl;;}private:int _year;int _month;int _day;};
四、C++和C语言实现Stack对比
面向对象三大特性:封装、继承、多态,下面的对比可以初步体现封装。
通过下面两份代码对比,我们发现C++实现 Stack 形态上还是发生了挺多的变化,底层和逻辑上没啥变化。
C语言版本 Stack,详细可参考博客 栈的讲解与实现
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>#define INIT_CAPACITY 4#define EXPANSION_MULTIPLE 2typedef int STDataType;typedef struct Stack
{STDataType* arr;int size;int capacity;
} Stack, * pStack;bool StackEmpty(pStack pst)
{assert(pst);return pst->size == 0;
}void StackInit(pStack pst)
{assert(pst);pst->arr = NULL;pst->size = 0;pst->capacity = 0;
}void StackDestroy(pStack pst)
{assert(pst);free(pst->arr);pst->size = 0;pst->capacity = 0;
}void StackPush(pStack pst, STDataType x)
{assert(pst);if (pst->size == pst->capacity){int newCapacity = pst->capacity == 0 ? INIT_CAPACITY : pst->capacity * EXPANSION_MULTIPLE;STDataType* temp = (STDataType*)realloc(pst->arr, newCapacity * sizeof(STDataType));if (temp == NULL){perror("realloc failed");return;}pst->arr = temp;pst->capacity = newCapacity;}pst->arr[pst->size++] = x;
}void StackPop(pStack pst)
{assert(pst);assert(!StackEmpty(pst));--pst->size;
}STDataType StackTop(pStack pst)
{assert(pst);assert(!StackEmpty(pst));return pst->arr[pst->size - 1];
}int StackSize(pStack pst)
{assert(pst);return pst->size;
}
C++版本 Stack:
#include <iostream>
#include <assert.h>
using namespace std;const int INIT_CAPACITY = 4;const int EXPANSION_MULTIPLE = 2;typedef int STDataType;class Stack
{
public:bool empty();void init();void destroy();void push(STDataType x);void pop();STDataType top();int size();private:STDataType* _arr;int _size;int _capacity;};bool Stack::empty()
{return _size == 0;
}void Stack::init()
{_arr = nullptr;_size = _capacity = 0;
}void Stack::destroy()
{free(_arr);_arr = nullptr;_size = _capacity = 0;
}void Stack::push(STDataType x)
{if (_size == _capacity){int newCapacity = _capacity == 0 ? INIT_CAPACITY : _capacity * EXPANSION_MULTIPLE;STDataType* temp = (STDataType*)realloc(_arr, newCapacity * sizeof(STDataType));if (temp == nullptr){perror("realloc failed");return;}_arr = temp;_capacity = newCapacity;}_arr[_size++] = x;
}void Stack::pop()
{assert(!empty());--_size;
}STDataType Stack::top()
{assert(!empty());return _arr[_size - 1];
}int Stack::size()
{return _size;
}int main()
{Stack a;a.init();a.push(1);a.push(2);a.push(3);a.push(4);while (!a.empty()){cout << a.top() << endl;a.pop();}a.destroy();return 0;
}
- C++中数据都放到了类里面,通过访问限定符进行了限制,不能再随意通过对象直接修改数据,这是C++封装的一种体现,这个是最重要的变化。这里的封装的本质是一种更严格规范的管理,避免出现乱访问修改的问题。当然封装不仅仅是这样的,这里就不展开讲了。
- C++中有一些相对方便的语法,比如缺省参数,成员函数每次不需要传对象地址,因为 this 指针隐含的传递了,方便了很多,使用类型不再需要 typedef 类名就很方便。
相关文章:
(学习总结10)C++类和对象1
C类和对象1 一、类的定义1.类定义格式2.访问限定符3. 类域 二、实例化1.实例化概念2.对象大小 三、this指针四、C和C语言实现Stack对比 以下代码环境在 VS2022。 一、类的定义 1.类定义格式 class 为定义类的关键字,Stack 为类的名字, { } 中为类的主体…...
python 中 file.read(), file.readline()和file.readlines()区别和用法
python 中 file.read(), file.readline()和file.readlines()区别和用法 文章目录 python 中 file.read(), file.readline()和file.readlines()区别和用法1. file.read()2. file.readline()3. file.readlines()4. 总结5. 注意事项 file.read(), file.readline(), 和 file.readli…...
车辆出险报告(h5)-车辆出险记录接口-车辆相关接口
接口简介:通过vin及行驶证查询车辆出险、理赔、事故记录接口。查询成功率99%,返回URL地址的查询报告。 不能对返回的报告进行任何的修改,否则由用户自行承担相应的责任 报告结果只保留30天,如需永久保存,请您查询后自行保存 接口地…...
如何在 Next.js 中实现分页
一.介绍 分页功能可将大型数据集划分为可管理的块,从而帮助管理它们。您可以在 Next.js 的服务器端或客户端实现分页。这里有一份精简的入门指南。 1. 服务器端分页 1.1 创建 API 路由 设置 API 路由来处理分页。 // pages/api/posts.js export default async …...
Mockito基础入门
Mockito 快速入门教程 概述 Mockito 是一个流行的Java单元测试Mock框架,用于接口和数据模拟。 依赖安装 <dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>3.12.4</version>…...
o(∩_∩)o设置代理访问博客(五)o(∩_∩)o --使用BeeWare打包应用
背景: 最近了解了一个新的打包框架BeeWare,据说他支持的平台要比nuitka更多。利用之前访问博客的脚本,来尝试一下打包windows应用程序。 BeeWare 从零开始 环境:python -m pip install briefcase 使用pycharm新建了一个名为bee…...
使用GPT-4o mini融合GraphRAG技术进行实战应用
什么是gpt-4o mini OpenAI 推出 GPT-4o mini,这是他们最具成本效益的小型模型。它的定价为每百万输入代币 15 美分,每百万输出代币 60 美分,比之前的 Frontier 型号便宜一个数量级,比 GPT-3.5 Turbo 便宜 60% 以上。目前…...
嵌入式人工智能(45-基于树莓派4B的扩展板-舵机驱动板PCA9685)
1、简介 智能小车、机械臂、摄像头云台会有多个舵机,而微控制器芯片的PWM输出引脚不够的情况下,就可以用PCA9685(16路舵机)来解决这一问题。 PCA9685是一款I2C总线控制的16通道LED控制器,专为红/绿/蓝/琥珀ÿ…...
3.11.样式迁移
样式迁移 使用卷积神经网络,自动的将一个图像中的风格应用在另一图像之上,即样式迁移(style transfer) 为了完成这一过程,我们需要两张输入图像:一张是内容图像,一张是风格图像,随后使用神经网络修…...
Spring统一返回类型中关于String的问题
文章目录 1. 问题铺垫2. 解决方法3. 问题分析4 解决方法解释 1. 问题铺垫 首先设置了以下代码统一处理返回类型 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {Overridepublic boolean supports(MethodParameter returnType, Class converte…...
Python酷库之旅-第三方库Pandas(065)
目录 一、用法精讲 256、pandas.Series.sparse方法 256-1、语法 256-2、参数 256-3、功能 256-4、返回值 256-5、说明 256-6、用法 256-6-1、数据准备 256-6-2、代码示例 256-6-3、结果输出 257、pandas.DataFrame.sparse方法 257-1、语法 257-2、参数 257-3、功…...
Go语言标准库中的双向链表的基本用法
什么是二分查找区间? 什么是链表? 链表节点的代码实现: 链表的遍历: 链表如何插入元素? go语言标准库的链表: 练习代码: package mainimport ("container/list""fm…...
Cocos Creator2D游戏开发(9)-飞机大战(7)-爆炸效果
这个爆炸效果我卡在这里好长时间,视频反复的看, 然后把代码反复的测试,修改,终于给弄出来 视频中这段,作者也是修改了好几次, 跟着做也走了不少弯路; 最后反正弄出来了; 有几个坑; ① 动画体创建位置是enemy_prefab ② enemy_prefab预制体下不用放动画就行; ③ 代码中引用Anima…...
Redis入门概述
Redis 概述 Redis 是速度非常快的非关系型(NoSQL)基于内存的键值数据库。 键的类型只能为字符串,值可以支持五种数据类型:字符串(stirng)、列表(list)、集合(set)、散列表(hash)、有…...
Cursor搭配cmake实现C++程序的编译、运行和调试
Cursor搭配cmake实现C程序的编译、运行和调试 Cursor是一个开源的AI编程编辑器,开源地址https://github.com/getcursor/cursor ,它其实是一个集成了Chat-GPT的VS Code。 关于VS Code和VS的对比可以参考这篇文章VS Code 和 Visual Studio 哪个更好&…...
读零信任网络:在不可信网络中构建安全系统09用户信任
1. 用户信任 1.1. 将设备身份和用户身份混为一谈会导致一些显而易见的问题 1.1.1. 特别是当用户拥有多台设备时,而这种情况很普遍 1.1.2. 应该针对不同类型的设备提供相匹配的凭证 1.1.3. 在存在共用终端设备的情况下,所有的这些问题将更加凸显 1.2…...
二叉树的实现 c语言
注:层序所需的队列文件请参考 C语言 实现栈(顺序表)和队列(链表)-CSDN博客 一、 BTree.h 函数包含: // 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 // 二叉树销毁 // 二叉树节点个数 // 二叉树叶子节点个数 // 二叉树第k层节点个数 /…...
【Git】如何优雅地使用Git中的tag来管理项目版本
目录 tagtag 和 branch区别操作命令打tag,当前分支标记tag提交到远程服务器删除本地tag删除远程tag切换到特定的tag查看所有tag查看标签详细信息 好书推荐 tag Git中的tag(标签)用于给项目在特定时间点(某个版本发布)…...
白骑士的PyCharm教学进阶篇 2.3 测试与自动化
系列目录 上一篇:白骑士的PyCharm教学进阶篇 2.2 高级调试技术 在现代软件开发中,测试和自动化是保证代码质量和项目稳定性的重要环节。PyCharm作为一款强大的Python IDE,提供了丰富的工具来支持单元测试和自动化测试。本篇将详细介绍单元测…...
spark写入redis报错空指针
aused by: java.lang.NullPointerException 1、spark集群 每个executor是否 与redis集群 网络策略是否通 2、写入redis的数据是否 有 null值 需要把null值 转成空字符串 3、可以用 pipleline 并行写数据...
【Material-UI】Autocomplete中的禁用选项:Disabled options
文章目录 一、简介二、基本用法三、进阶用法1. 动态禁用2. 提示禁用原因3. 复杂的禁用条件 四、最佳实践1. 一致性2. 提供反馈3. 优化性能 五、总结 Material-UI的Autocomplete组件提供了丰富的功能,包括禁用特定选项的能力。这一特性对于限制用户选择、提供更好的用…...
力扣287【寻找重复数】
给定一个包含 n 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常…...
学习笔记一
vector 在创建时指定初始大小和初始值: vector<int> a(5, 1) // 包含 5 个整数的 vector,每个值都为 1 可以使用 push_back 方法向 vector 中添加元素: a.push_back(7) // 将整数 7 添加到 vector 的末尾 可以使用 size(…...
星纪魅族双轮驱动遇阻:AI手机与造车梦能否照进现实?
在科技行业风起云涌的浪潮中,星纪魅族近期的一系列动作引起了广泛关注。从高层换血到全面押注AI,再到宣布造车计划,每一步都显得雄心勃勃,但深入剖析后不难发现,其未来发展之路实则布满荆棘。 星纪魅族选择“All in AI…...
深入理解 C 语言中的联合体
目录 引言 一、 联合体的定义与基本用法 1.联合体的定义 2.基本用法 二、 联合体与结构体的区别 1.结构体 2.联合体 3.对比 三、联合体的优势 1. 节省内存 2. 提高效率 3. 代码简洁性 四、联合体的存储细节 1.内存对齐 2.大小计算 五、联合体的高级用法 1.匿…...
Unity3D 物体圆周运动
Unity3D 实现一个 2D 物体沿着圆周进行运动。 物体圆周运动 前段时间在开发一个小游戏时,需要实现火箭沿着一个圆形轨道进行圆周运动。 以前面试的时候也被问到过这类问题(如何让一个 2D 物体做圆周运动),所以还是记录一下实现…...
无人机无人车固态锂电池技术详解
随着无人机和无人车技术的飞速发展,对高性能、高安全性电池的需求日益迫切。固态锂电池作为下一代电池技术的代表,正逐步从实验室走向市场,为无人机和无人车等应用领域带来革命性的变化。相比传统液态锂电池,固态锂电池在能量密度…...
策略模式的一次应用
项目的需求是将一组图像按照相似度分类。 采用了模板匹配计算相似度的实现方式。 #include <opencv2/core.hpp> #include <openev2/core/utility.hpp> #include <opencv2/highqui.hpp> #include <openav2/imgproc.hpp> cv::Mat image matched; double …...
终极指南:3D 数据科学系统和工具
该蓝图分享了 AI 方法、算法、工具、模板和 6 步系统,用于为 3D 模型构建数据科学解决方案:3D 数据采集、分析、建模、可视化和部署。 3D 数据科学系统的核心组件和交叉学科 欢迎来到雲闪世界。建立 3D 数据科学项目涉及结合数据工程、数据分析和可视…...
Docker Container(容器)
一、概念 容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。 虽然容器的本质是主机上运行的一个进程…...
确保Apache Flink流处理的数据一致性和可靠性
Apache Flink是一个用于大规模数据流处理的开源框架,它提供了多种机制来保证在分布式环境中数据的一致性和可靠性。在实时流处理中,数据的一致性和可靠性是至关重要的,因为它们直接影响到数据处理结果的准确性和系统的稳定性。本文将详细介绍…...
MUSE Multi-View Contrastive Learningfor Heterophilic Graphs
发表于:CIKM 推荐指数: #paper/⭐ 一句话总结:融合了GCN(A,X)和GCN(A,I),创新性不足,因此只能B会 流程: 融合部分: h i f h i s λ i h i c h_i^fh_i^s\lambda_ih_i^c hifhisλihic 由于有n个 λ \lambda λ.因此作者加了如下优化: L ϕ ∑ i 1 N λ i s ( h i …...
搭建pxe网络安装环境实现服务器自动部署
一:主机查看本地镜像挂载的位置 [rootnginx ~]# df [rootnginx ~]# cd /rhe17 [rootnginx rhe17]# ls [rootnginx rhe17]# cd isolinux/ [rootnginx isolinux]# ls文件内容指定了触法镜像,内核,显示界面等 二:通过网络将以上文件…...
在VScode中导入conda环境的记录【原创】
今天在vscode编辑器中运行一个python代码,发现终端可以运行,但是编辑器中点击Run会显示缺包,但是python包明明是有的,在自己的conda环境中。后来发现,是vscode没有发现我自己创建的conda环境,在vscode中导入…...
机器学习 第10章-降维与度量学习
机器学习 第10章-降维与度量学习 10.1 k近邻学习 k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。通…...
手机三要素接口怎么对接呢?(二)
一、什么是手机三要素? 手机三要素又叫运营商三要素,运营商实名认证,运营商实名核验,手机三要素实名验证,手机三要素实名核验,每个人的称呼都不同,但是入参和出参是一样的。 输入姓名、身份证…...
【Devops】CertD 完全免费、自动申请、自动部署SSL证书一站式管理工具 | 自动化HTTPS | 3个月SSL自动轮换
CertD CertD 是一个免费全自动申请和自动部署更新SSL证书的工具。 后缀D取自linux守护进程的命名风格,意为证书守护进程。 关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签 一、特性 本项目不仅支持证书申请过程自动化,还…...
高级Vue.js面试指南:关键概念、最佳实践和性能优化策略
目录 1. 什么是 Vue.js? 2. Vue的生命周期钩子是什么? 3. 计算属性和侦听器有什么区别? 4. 什么是虚拟DOM? 5. 解释 Vue 的响应式系统原理。 6. Vue中的v-if和v-show有什么区别? 7. 如何在 Vue 中使用路由? 8. 描述组件间的通信方式。 9. 什么是单文件组件? 10…...
MySQL基础练习题21-按日期分组销售产品
目录 题目 准备数据 分析数据 总结 题目 找出每个日期、销售的不同产品的数量及其名称。每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Activities (s…...
oracle(19c)用户管理
简介 本文介绍 Oracle 中的用户管理,包含以下内容: 概念介绍 系统用户 解锁 hr 用户 创建用户 用户相关案例 使用 Profile 管理用户口令 Oracle 的认证方式 重置管理员(sys)密码 1. 概念介绍 使用前可以自行安装oracle数据库 oracle19c安装&a…...
数学建模--禁忌搜索
目录 算法基本原理 关键要素 应用实例 实现细节 python代码示例 总结 禁忌搜索算法在解决哪些具体类型的组合优化问题中最有效? 禁忌搜索算法的邻域结构设计有哪些最佳实践或案例研究? 如何动态更新禁忌表以提高禁忌搜索算法的效率和性能&#…...
RabbitMQ动态创建生产者动态创建消费者
生产者 controller package org.log.rabbitmqdemo1.demos.web.producer;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;RestController public class Produc…...
HTML-07.表格标签
一、要制作的表格如下 二、代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>表格标签<…...
[Git][分支管理][下]详细讲解
目录 1.合并冲突2.分支管理策略3.分支策略1.基本原则2.bug分支3.删除临时分支 1.合并冲突 在实际分⽀合并的时候,有时候可能会遇到代码冲突的问题,例如: dev分支在写一部分代码,而master分支也没闲着,也在写着同一份代…...
Python面试宝典第27题:全排列
题目 给定一个不含重复数字的数组nums,返回其所有可能的全排列 。备注:可以按任意顺序返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 示例 2: 输…...
C语言调试宏全面总结(六大板块)
C语言调试宏进阶篇:实用指南与案例解析C语言调试宏高级技巧与最佳实践C语言调试宏的深度探索与性能考量C语言调试宏在嵌入式系统中的应用与挑战C语言调试宏在多线程环境中的应用与策略C语言调试宏在并发编程中的高级应用 C语言调试宏进阶篇:实用指南与案…...
C++学习之路(1)— 第一个HelloWorld程序
C学习之路(1)— 第一个HelloWorld程序 一、前言 C在C语言的基础上添加了对面向对象编程和泛型编程的支持,在 20世纪90年代便是最重要的编程语言之一,并在21世纪仍保持强劲势头。C继承了C语言高效、简洁、快速和可移植性的传统。 …...
Ionic 滑动框:实现高效移动应用交互体验
Ionic 滑动框:实现高效移动应用交互体验 Ionic 是一个强大的开源框架,用于构建高性能、高质量的移动端和网页应用。它以其优雅的UI组件和强大的功能而闻名,其中滑动框(Slider)是Ionic UI组件库中的一个重要组成部分。滑动框提供了一种直观、互动的方式来展示图片、文本或…...
书生大模型实战营第三期——入门岛
第一关:Linux基础知识 任务如下: 任务描述闯关任务完成SSH连接与端口映射并运行hello_world.py可选任务 1将Linux基础命令在开发机上完成一遍可选任务 2使用 VSCODE 远程连接开发机并创建一个conda环境可选任务 3创建并运行test.sh文件 1. 使用密码进行…...
Android入门之路 - WebView加载数据的几种方式
之前客户端加载H5时遇到了一些问题,我为了方便解决问题,所以将对应场景复刻到了Demo中,从之前的网络加载模拟为了本地加载Html的方式,但是没想到无意被一个基础知识点卡了一些时间,翻看往昔笔记发现未曾记录这种基础场…...