当前位置: 首页 > news >正文

【C++初阶】第3课—类和对象(类的默认成员函数)

文章目录

  • 1. 类的默认成员函数
  • 2. 构造函数
  • 3. 拷贝构造函数
    • 3.1 传值传参
    • 3.2 传值返回
    • 3.3 深拷贝和浅拷贝
    • 3.4 总结
  • 4. 析构函数
  • 5. 赋值运算符重载
    • 5.1 运算符重载
    • 5.2 赋值运算符重载
    • 5.3 日期类的实现
  • 6. 取地址运算符重载
    • 6.1 const 成员函数
    • 6.2 取地址运算符重载

1. 类的默认成员函数

  • 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数被称为默认成员函数
  • 一个类,我们不写的情况下编译器会生成6个默认成员函数,最重要的是前4个,最后两个仅做了解

在这里插入图片描述


2. 构造函数

  • 构造函数是特殊的成员函数,且它的主要任务并不是开空间创建对象(我们经常使用的局部对象是栈帧创建时,空间就已经开好了),而是对象实例化时初始化对象,就像我们实现栈Stack时,用的初始化函数Init()一样

在这里插入图片描述


  • 构造函数的特点
  • 1. 构造函数的函数名与类名相同
  • 2. 构造函数无返回值,也不需要+void
  • 3. 构造函数可以重载
  • 4. 对象实例化时系统会自动调用对应的构造函数

在这里插入图片描述


  • 如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义,那么编译器则不再生成
  • 默认构造函数分为3种:无参构造函数、全缺省构造函数、我们不写编译器默认生成的构造函数
  • 默认构造函数有且仅有一个存在,不能同时存在
  • 不传实参就可以调用的构造函数就是默认构造函数
  • 我们不写,编译器默认生成的构造函数,对内置类型成员变量的初始化没有要求,是否初始化看编译器,而对于自定义类型的成员变量,要求调用这个成员变量的构造函数时初始化
  • 如果自定义类型的成员变量没有默认构造函数,编译器就会报错,之后我们想初始化该成员变量,就得借助初始化列表,这个后面讲

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3. 拷贝构造函数

  • 拷贝构造函数:构造函数的第一个参数是自身类的类型引用,并且其他额外的参数都有默认值,该构造函数就是拷贝构造函数
  • C++规定拷贝构造函数使用场景:自定义类型对象进行拷贝必须调用拷贝构造函数,自定义传值传参和传值返回都需要调用拷贝构造函数
  • 拷贝构造函数是构造函数的一个重载
  • 拷贝构造函数的参数只有一个,那就是类的类型对象的引用,如果使用传值调用,编译器会报错,因为传值调用会造成无穷递归
  • 对于内置类型,编译器会自己调用它的拷贝构造函数,不需要我们显式的实现,拷贝构造主要针对自定义类型对象的拷贝

在这里插入图片描述


3.1 传值传参

在这里插入图片描述

  • 这里Date d2(d1),d1和d2都是自定义类的类型对象,因此两者之间拷贝需要调用拷贝构造函数

在这里插入图片描述


  • 为啥拷贝构造函数的第一个参数需要+引用符&呢?
  • 这是因为如果采取传值传参的形式,再传值传参之前需要先调用拷贝构造函数Date d(d1),而拷贝构造函数又要传值传参,继续调用它的拷贝构造函数Date d(d1),而拷贝构造函数又是传值传参,继续调用它的拷贝构造函数Date d(d1),形成无穷递归
  • 如果采取传指针传参的形式,也可以避免死递归的情况,但是在C++里面加入引用后,引用比指针方便许多,安全许多,还不用开辟空间,故而一般用引用传参

在这里插入图片描述

  • 那么为什么拷贝构造函数的第一个参数前面+const修饰呢?

在这里插入图片描述

3.2 传值返回

在这里插入图片描述


在这里插入图片描述


  • 引用返回和值返回的区别

在这里插入图片描述


3.3 深拷贝和浅拷贝

  • 浅拷贝:一般编译器自己实现的拷贝构造就是浅拷贝,一个一个字节的拷贝,例如:值拷贝,或者地址拷贝,它会将一个指针变量存放的地址作为值也拷贝给另一个指针变量,这样就出现两个指针指向同一个地址
  • 深拷贝:对于拷贝构造的对象,它指向一块与源对象不同的空间,但空间大小和存放的内容相同
  • 浅拷贝

在这里插入图片描述


  • 深拷贝

在这里插入图片描述

  • 总结:我们想要实现的是来自两个不同空间的对象,将其中一个对象里面的资源内容拷贝到另一个对象里面,而不是连带地址一起拷贝过去,那么就用深拷贝,对于深拷贝而言,一个对象内容的改变不会影响另一个对象,而浅拷贝恰恰相反

3.4 总结

  • 对于上述提到的Date类,它只有内置类型,因此编译器默认生成的拷贝构造函数就够用
  • 对于类Stack,虽然它的成员变量也都是内置类型,但是_arr指向了开辟的空间,编译器默认生成的拷贝构造函数是浅拷贝,它会将变量的地址也拷贝过去,造成后续析构函数连续释放两次同一块内存空间的资源
  • 对于类MyQueue的拷贝构造,由于Stack的拷贝构造已经显式写出,那么这里就可以不写,因为编译器默认生成的MyQueue拷贝构造也是调用Stack的拷贝构造

4. 析构函数

  • 析构函数与构造函数不同,它不是对对象本身的销毁,比如局部对象是存在在栈中的,函数结束栈销毁,它就释放了。析构函数主要用来完成对对象中资源的清理工作,C++规定,对象在销毁时会自动调用析构函数
  • 构造函数和析构函数就像之前写的Init()和Destroy()函数
  • 析构函数的特点:
  • 1. 析构函数是在类名前加 ~
  • 2. 无参数无返回值(也不需要写void)
  • 3. 一个类只能有一个析构函数,若未显式定义,编译器会默认生成默认的析构函数
  • 4. 对象生命周期结束,系统会自动调用析构函数
  • 5. 跟构造函数类似,编译器生成的默认构造函数对内置类型成员不做处理,但是自定义类型的成员会调用它们的析构函数
  • 6. 不论我们是否显式的写析构函数。对于自定义类型成员,编译器都会调用它们的析构函数
  • 7. 如果类中没有申请资源时,可以不写使用编译器默认的析构函数;如果默认生成的析构函数就够用也可以不写;但是对于有资源申请的类,一定要写析构函数,避免会造成资源泄露
  • 8. 一个局部域的多个对象,C++规定先定义的后析构

在这里插入图片描述


  • 总结:对于有申请资源的类,析构函数一定要自己写;对于自定义类型成员,不论我们写不写析构函数,编译器都会调用它们的析构函数,就像MyQueue,前提是它的成员Stack的析构函数已经定义了,且析构函数在一个类中有且仅有一个

5. 赋值运算符重载

5.1 运算符重载

  • 运算符用于内置类型时,不需要重载,而当运算符用于类类型的对象时,必须换成对应的运算符重载
  • 运算符重载是一个具有特殊名字的函数,关键字是operator,后面+要定义的运算符,和其他函数一样,它也有返回类型和函数参数以及函数体
  • operator定义的运算符重载函数的参数至少有一个是类类型

在这里插入图片描述


  • 运算符重载的参数个数应与源运算符的操作数个数相同.一元运算符有一个参数,二元运算符有两个参数,二元运算符的左侧运算对象传给第一个参数,右侧运算符对象传给第二个参数
  • 一元运算符:例如*p、++a等,它们只有一个参数;二元运算符:例如a+b、a^b等,它们有两个参数
  • 如果一个重载运算符的函数是成员函数,那么它的第一个运算对象默认传给隐式的this指针,因此重载运算符作为成员函数时,它的参数比运算对象少一个

在这里插入图片描述


  • 访问类的私有成员变量除了上面的运算符重载作为成员函数外,还可以间接访问

在这里插入图片描述


  • 运算符重载之后,其优先级和结合性与对应的内置类型运算符保持一致
  • 不能通过语法中没有的符号来创建新的操作符,例如:operator@
  • 5个不能重载的运算符:.*   ::   sizeof  ?:   .
  • . *用来作为访问成员函数的操作符

在这里插入图片描述


5.2 赋值运算符重载

  • 赋值运算符重载是一个默认成员函数,用于完成两个已经存在的对象直接的拷贝赋值
  • 赋值运算符重载与拷贝构造有异曲同工之妙,但是两者作用的对象不同,拷贝构造是将一个已经存在的对象拷贝赋值给创建的对象
  • 赋值运算符重载是一个运算符重载,规定重载必须为成员函数,参数建议+const修饰,避免传值传参产生拷贝和错误赋值等操作
  • 如果赋值运算符重载有返回值,建议写成类类型的引用,减少拷贝,提高效率,也是为了支持连续赋值
  • 若没有显式写赋值运算符重载,编译器会默认生成一个默认赋值运算符重载,该默认赋值运算符重载与默认拷贝构造类似,也会产生深拷贝和浅拷贝的问题,对自定义类型的成员变量会调用它的赋值运算符重载
  • 若返回的是*this,则它返回的其实是运算符左边的对象,因为*this就是左值对象

在这里插入图片描述


  • 浅拷贝

在这里插入图片描述


  • 深拷贝

在这里插入图片描述


  • 对于Stack类的对象,由于它是自定义类型,我们需要显式的写赋值运算符重载;而对于MyQueue类自定义的对象,则不需要写,因为编译器生成的默认赋值运算符重载会调用Stack里面的赋值运算符重载

在这里插入图片描述


5.3 日期类的实现

  • 一个类重载的运算符要有意义,例如Date类的operator-具有意义,而operator+就没有意义
  • 因为日期的加法运算需要特殊处理,满30天月份进1等,而减法则代表差多少天
  • 重载++运算符时,C++为了区分前置++和后置++,规定:后置++重载时,增加一个int形参,跟前置++构成函数重载,容易区分

在这里插入图片描述


  • 类里面的成员函数之间也可以相互调用

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


  • 前置++和后置++、前置- -和后置- -

在这里插入图片描述


  • 日期相减

在这里插入图片描述


  • 重载<<和>>运算符时,需要重载为全局函数,若重载为成员函数,this指针会占用第一个形参位置,而第一个形参是左侧运算对象,调用时就变成了对象<<cout,不符合使用习惯和可读性。重载为全局函数把ostream/istream放到第一个形参的位置就可以了,第二个参数位置当类类型对象

在这里插入图片描述


  • 优化
  • 重载运算符<<和>>的函数声明需要写在全局,写在类里面this指针会占用第一个参数的位置,不符合语法习惯

在这里插入图片描述


在这里插入图片描述


6. 取地址运算符重载

6.1 const 成员函数

  • const修饰的成员函数为const成员函数,一般const放置在函数参数后面
  • const实际修饰的是该成员函数的this指针,表明在该成员函数中对类的成员不做修改
  • 建议不对成员变量修改的成员函数都+const修饰

在这里插入图片描述


6.2 取地址运算符重载

  • 取地址运算符分为普通取地址和const修饰的取地址运算符,一般编译器默认生成的就够用了,一般不会显示去实现,除非一些特殊的场景,比如不想让被人取到当前类对象的地址,可以显示写,随便返回一个地址

在这里插入图片描述


在这里插入图片描述


相关文章:

【C++初阶】第3课—类和对象(类的默认成员函数)

文章目录 1. 类的默认成员函数2. 构造函数3. 拷贝构造函数3.1 传值传参3.2 传值返回3.3 深拷贝和浅拷贝3.4 总结 4. 析构函数5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 日期类的实现 6. 取地址运算符重载6.1 const 成员函数6.2 取地址运算符重载 1. 类的默认成员函…...

uni-app初学笔记:文件路径与作用

components:可复用的组件pages:页面&#xff08;可见/不可见&#xff09;static:静态资源&#xff0c;存放图片视频等 &#xff08;相当于vue项目的 assets&#xff09;mainjs:Vue初始化入口文件App.vue:应用配置&#xff0c;用来配置App全局样式以及监听pages.json :配置页面路…...

小程序-使用 iconfont 图标库报错:Failed to load font

官方默认可以忽略此错误&#xff0c;在清除缓存后首次刷新会显示此错误&#xff0c;重新渲染错误消失 解决方法&#xff1a; 在 iconfont 图标库选择项目设置 选中 Base64 保存&#xff0c;重新点击链接 -> 复制代码到项目中 操作步骤&#xff1a;...

【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写

&#x1f30e; 应用层自定义协议与序列化 文章目录&#xff1a; Tcp协议Socket编程 应用层简介 序列化和反序列化       重新理解read/write/recv/send及tcp的全双工       Socket封装       服务器端改写 &#x1f680;应用层简介 我们程序员写的一个个解决…...

速度革命:esbuild如何改变前端构建游戏 (1)

什么是 esbuild&#xff1f; esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具&#xff0c;以其卓越的性能著称。相比传统的构建工具&#xff08;如 Webpack&#xff09;&#xff0c;esbuild 在打包速度上有着显著的优势&#xff0c;能够将打包速度提升 10 到 100 倍…...

大语言模型---什么是注意力机制?LlaMA 中注意力机制的数学定义

摘要 注意力机制&#xff08;Attention Mechanism&#xff09;是一种在深度学习和人工智能中广泛使用的技术&#xff0c;旨在使模型在处理信息时能够重点关注重要的部分&#xff0c;从而提升任务的效率和精度。它最初应用于自然语言处理&#xff08;NLP&#xff09;&#xff0…...

LSA详情与特殊区域

LSA是构成LSDB的重要原材料&#xff0c;在OSPF中发挥很大作用。 报文 通用头部 LS age&#xff1a;LSA寿命&#xff0c;0-3600s Options&#xff1a;可选项 LS type&#xff1a;LSA类型&#xff0c;三要素之一 Link State ID&#xff1a;LSAID 三要素之一 Advertising Ro…...

Python爬虫能处理动态加载的内容吗?

Python爬虫确实可以处理动态加载的内容。动态加载的内容通常是通过JavaScript在客户端执行&#xff0c;这意味着当网页首次加载时&#xff0c;服务器返回的HTML可能并不包含最终用户看到的内容。相反&#xff0c;JavaScript代码会在页面加载后从服务器请求额外的数据&#xff0…...

Spring Boot Web应用开发:数据访问

数据访问是Web应用的关键部分&#xff0c;Spring Boot简化了这一流程&#xff0c;特别是通过集成Java Persistence API (JPA) 来实现数据持久化。以下是如何在Spring Boot中配置数据源、使用JPA进行数据持久化以及创建访问数据的REST接口。 配置数据源 在Spring Boot中&#…...

【Linux】进程控制-----进程创建与进程终止

目录 前言&#xff1a; 一、进程创建&#xff1a; 1、fork函数 2、创建多个进程&#xff1a; 3、写时拷贝&#xff1a; 二、进程终止&#xff1a; 进程退出码&#xff1a; 退出方式&#xff1a; ​编辑 进程异常退出&#xff1a; 缓冲区&#xff1a; 前言&#xff1…...

【软考速通笔记】系统架构设计师③——信息安全技术基础知识

文章目录 一、前言二、信息安全基础知识2.1 信息安全的基本要求2.2 信息安全的范围2.3 网络安全表现2.4 安全措施包括 三、信息安全系统的组成框架3.1 技术体系&#xff1a;3.2 组织机构体系&#xff1a;3.3 管理体系 四、信息加解密技术4.1 对称密钥加密算法4.2 非对称密钥加密…...

AI安全:从现实关切到未来展望

近年来&#xff0c;人工智能技术飞速发展&#xff0c;从简单的图像识别到生成对话&#xff0c;从自动驾驶到医疗诊断&#xff0c;AI技术正深刻改变着我们的生活。然而&#xff0c;伴随着这些进步&#xff0c;AI的安全性和可控性问题也日益凸显。这不仅涉及技术层面的挑战&#…...

YOLO格式数据集介绍

yolo数据集 yolo数据集标注格式主要是 yolov5 项目需要用到。 标签使用txt文本进行保存。yolo的目录如下所示&#xff1a; dataset ├─images │ ├─train │ │ ├─ flip_mirror_himg0026393.jpg │ │ ├─ flip_mirror_himg0026394.jpg │ │ ├─ flip_…...

Doris 数据集成 LakeSoul

Doris 数据集成 LakeSoul 作为一种全新的开放式的数据管理架构,湖仓一体(Data Lakehouse)融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势,帮助用户更加便捷地满足各种数据处理分析的需求,在企业的大数据体系中已经得到越来越多的应用。 在过去多个版本…...

Navicat 预览变更sql

需求 用了Flyway&#xff08;数据库迁移工具&#xff09;后&#xff0c;需要记录变更sql&#xff0c;所以要知道变更sql。 查看方式 Navicat提供了预览变更sql功能&#xff0c;右击表---->设计表&#xff0c;比如修改字段后&#xff0c;点击SQL预览标签页&#xff0c; 顺…...

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…...

Qt Graphics View 绘图架构

Qt Graphics View 绘图架构 "QWGraphicsView.h" 头文件代码如下&#xff1a; #pragma once#include <QGraphicsView>class QWGraphicsView : public QGraphicsView {Q_OBJECTpublic:QWGraphicsView(QWidget *parent);~QWGraphicsView();protected:void mouseM…...

大数据-234 离线数仓 - 异构数据源 DataX 将数据 从 HDFS 到 MySQL

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…...

零基础学安全--shell脚本学习(1)脚本创建执行及变量使用

目录 学习连接 什么是shell shell的分类 查看当前系统支持shell 学习前提 开始学习 第一种执行脚本方法 ​编辑 第二种执行脚本方法 第三种执行脚本方法 变量声明和定义 ​编辑 查看变量 删除变量 学习连接 声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣…...

C#对INI配置文件进行读写操作方法

#region 读写ini配置文件/// <summary>/// 对INI文件进行读写/// </summary>class INIHelper{/// <summary>/// 从INI文件中读取数据/// </summary>/// <param name"filePath">INI文件的全路径</param>/// <param name"…...

华为鸿蒙内核成为HarmonyOS NEXT流畅安全新基座

HDC2024华为重磅发布全自研操作系统内核—鸿蒙内核&#xff0c;鸿蒙内核替换Linux内核成为HarmonyOS NEXT稳定流畅新基座。鸿蒙内核具备更弹性、更流畅、更安全三大特征&#xff0c;性能超越Linux内核10.7%。 鸿蒙内核更弹性&#xff1a;元OS架构&#xff0c;性能安全双收益 万…...

请求响应(学习笔记)

请求响应 文章目录 请求响应请求Postman简单参数实体参数数组集合参数数组参数集合参数 日期参数JSON参数路径参数 响应响应数据统一响应结果 分层解耦三层架构分层解耦IOC & DI 入门IOC详解DI详解 请求响应&#xff1a; 请求(HttpServeltRequest)&#xff1a;获取请求数据…...

JavaScript核心语法(5)

这篇文章讲一下ES6中的核心语法&#xff1a;扩展运算符和模块化。 目录 1.扩展运算符 数组中的扩展运算符 基本用法 合并数组 对象中的扩展运算符 基本用法 合并对象 与解构赋值结合使用 数组解构中的剩余元素 对象解构中的剩余属性 2.模块化 基本概念 1.扩展运算符…...

2024年第15届蓝桥杯C/C++组蓝桥杯JAVA实现

目录 第一题握手&#xff0c;这个直接从49累加到7即可&#xff0c;没啥难度&#xff0c;后面7个不握手就好了&#xff0c;没啥讲的&#xff0c;(然后第二个题填空好难&#xff0c;嘻嘻不会&#xff09; 第三题.好数​编辑 第四题0R格式 宝石组合 数字接龙 最后一题:拔河 第…...

MongoDB 和 Redis 是两种不同类型的数据库比较

MongoDB 和 Redis 是两种不同类型的数据库&#xff0c;设计目标和应用场景各有侧重&#xff0c;因此性能对比需要结合具体需求场景进行评估。 1. MongoDB 性能特点 类型: 文档型数据库&#xff08;NoSQL&#xff09;。适合场景: 复杂查询&#xff1a;支持丰富的查询语法和索引…...

CLIP-Adapter: Better Vision-Language Models with Feature Adapters 论文解读

abstract 大规模对比视觉-语言预训练在视觉表示学习方面取得了显著进展。与传统的通过固定一组离散标签训练的视觉系统不同&#xff0c;(Radford et al., 2021) 引入了一种新范式&#xff0c;该范式在开放词汇环境中直接学习将图像与原始文本对齐。在下游任务中&#xff0c;通…...

Spring Boot 开发环境搭建详解

下面安装spring boot的详细步骤&#xff0c;涵盖了从安装 JDK 和 Maven 到创建和运行一个 Spring Boot 项目的全过程。 文章目录 1. 安装 JDK步骤 1.1&#xff1a;下载 JDK步骤 1.2&#xff1a;安装 JDK步骤 1.3&#xff1a;配置环境变量 2. 安装 Maven步骤 2.1&#xff1a;下载…...

网络安全中的数据科学如何重新定义安全实践?

组织每天处理大量数据&#xff0c;这些数据由各个团队和部门管理。这使得全面了解潜在威胁变得非常困难&#xff0c;常常导致疏忽。以前&#xff0c;公司依靠 FUD 方法&#xff08;恐惧、不确定性和怀疑&#xff09;来识别潜在攻击。然而&#xff0c;将数据科学集成到网络安全中…...

安装数据库客户端工具

如果没有勾选下面的&#xff0c;可以运行下面的两个命令 红框为自带数据库 新建数据库 右键运行mysql文件&#xff0c;找到数据库&#xff0c;并刷新...

GoogleTest做单元测试

目录 环境准备GoogleTest 环境准备 git clone https://github.com/google/googletest.git说cmkae版本过低了&#xff0c;解决方法 进到googletest中 cmake CMakeLists.txt make sudo make installls /usr/local/lib存在以下文件说明安装成功 中间出了个问题就是&#xff0c;…...

做网站需要学jsp/国际新闻最新消息今天军事新闻

/*wechat({shareDatas : {title: string,//分享的标题desc: string,//分享的描述shareUrl: url,//分享出去的链接&#xff0c;为空则分享出去当前页的链接imgUrl: url,//分享的图标链接&#xff0c;为空则图标为银巴克LOGOgoToUrl: url,//分享后跳转的链接&#xff0c;为空则不…...

男女做啊免费视频网站/网站技术制作

来自&#xff1a;http://kakajw.iteye.com/blog/1063843&#xff0c;感谢作者解决问题。 Tomcat 5.5使EL表达式不被解析。 现象 代码${userSession.user_name}是JSP中的一个代码片段&#xff1b; 如果部署到tomcat5.5中&#xff0c;不会显示出session中的变量user用户名,而只会…...

长沙模板网站长沙网站建设/南宁百度网站推广

前言:一直对SpringBoot的自动注入感兴趣,特意查了一下并进行了实现. 参考:https://blog.csdn.net/zxc123e/article/details/80222967(绝大部分是照抄了此博文,某些地方进行了改动) https://www.cnblogs.com/duanxz/p/4520571.html https://blog.csdn.net/gottst0113/article…...

wordpress ppt预览/兰州seo

1当启动类和controller在同类中时&#xff0c;在该类添加注解Controller即可 2当启动类和controller分开时&#xff0c;启动类要放在项目的根目录下&#xff0c;启动类中添加注解SpringBootApplication&#xff0c; 2当启动类和controller分开时&#xff0c;启动类要放在项目的…...

网站服务器 数据库服务器/360竞价推广客服电话

并发冲突问题剖析悲观锁与乐观锁两种并发控制方案基于_version进行乐观锁并发控制&#xff08;1&#xff09;_version元数据PUT /test_index/test_type/6 {"test_field": "test test" }{"_index": "test_index","_type": &q…...

网站滚动的图片是怎么做的/长沙seo免费诊断

导语大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;你的老朋友&#xff0c;老K。 本文来自高工产研研究。仅供参考。剑蓝错知识星球 * 原创电子书 * 深海社区 * 微信群 知名企业-智能仓储物流技术研习社-建立智能物流系统甲方、集成商与周边配套商共同技术语…...