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

c++类与对象(一)

前言:

    什么是面向对象编程?什么是类与对象?为啥要搞类与对象啊?凭什么c++能支持面向对象编程啊? 每次学东西前问自己几个问题会挺爽的,因为你越是懵逼,你就越想知道答案是什么。希望我的这几篇文章关于类与对象的介绍能让你找到自己理解的答案。

1.面向对象编程(Object-Oriented Programming,简称 OOP)

    都听说过c语言是面向过程编程,c++是面向对象编程。二者有什么区别呢,举个栗子:

  大家想象一下洗衣服的过程:

面向过程理解:

 我们的需求人把衣服在盆里面洗了,用c语言描述并且解决这个问题就是,用数据结构存放衣服,用一系列的函数描述人的洗衣服的动作,然后输出洗衣服的过程和结果在写一个函数,像人的动作有:拿出来,放进去,放肥皂啊等等这些功能就是函数: 如:void put()等总之你会很明显的发现你的每一步都是一步一步解决 去靠近这个问题的答案 然后设计数据结构完成这个问题的答案,

 用英语说就是step by step ,过程性的解决答案。

面向对象理解:

  了解对象之前我们先说说类: 简单的很其实,我们人是什么类啊? 动物类? so 人就是动物类的具体的实现,这个实现就是他的其中的对象之一,那动物类还有什么对象啊? ok 你说不知道我就难过了,鸟,斑马斑马,bee,这些问你,我是不是动物啊! 那我就是动物类的对象啊。好的,既然你简单的知道了类与对象的实例了,看来你还是有学习c++的天赋的,那我倾囊相授了: 

     类用c语言的角度来说就是一个结构体的升级,类不仅可以封装数据,还可以放方法(这个方法你也可以理解为函数嘛 不就是你的功能呗 英语中的fun —>函数还有一个意思就是功能嘛)。

  好的天赋异禀的你:接下来用类与对象的思想去解决我们洗衣服这个问题吧!--------给你几分钟思考---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(这是你思考的过程真顺利,我刚好混点字数)

   首先我们看看有几个对象吧: 里面 洗衣服  果然还是被你发现了它藏的这么深! 一共三个 人 盆 衣服 那洗这个动作是谁的行为(方法)? 确实你说的没错就是人的 所以后面设计人的时候得有他的洗这个方法。

   好的,所以接下来我们要实现对象是不是得有关于对象的类啊? 对 你说的没错 。

 人这个概念是很笼统啊:是什么名字的人在洗衣服啊? 他有一系列属性去描述这个人 ,他的名字啊 学号啊 以及方法 如洗衣服这个方法 。然后在创建人的对象实例化。 在它的属性里面去实现一个方法 去调用衣服这个对象(哪件哪件衣服是有区别的对吧所以衣服也是类 具体的衣服才是对象) 去完成洗衣服这个动作。  

   总结一下面向对象编程的概念(面试常考哦!别水): 面向对象是基于对象以及对象之间的交互去解决问题的一种编程思想。 

  类:将具体的事物抽象出来他们的方法和属性的描述。对象:类的实例嘛。

二.类的引入

   知道一个事 ,在c语言中我们见过结构体,如单链表:

struct SingleListNode{

 int val;// 存放的数据

 struct SingleListNode*next;// 存放下一个节点的指针

}; 

 总之结构体里面只能放一些值 指针啊 这些数据的集合不能放方法,而且对于里面的数据要是想修过我们可以直接拿到他的指针然后直接修改,直接将数据暴露给使用者。

  在c++中引入类以后,类是不仅仅能方法的还能放函数的,创建类常见的方式:

   class +类名{

    };

 如创建 一个链表类:

class SingleListNode{

 int val;// 存放的数据

 struct SingleListNode*next;// 存放下一个节点的指针

void Init()

{

   val = 0;

   next = NULL;

  }

}; 

   这里面的val,next指针都是成员变量 这个方法叫做成员函数: 同一个类中的成员函数可以直接访问当前类中的成员变量。那类外也可以随便访问成员变量吗??? (留个?给你先)

    解密

       我们都知道c++要求兼容c语言的啊,那我问你,脑子为什么贱贱的,不是说错了,那我问你。struct到了c++中会有什么变化: 它跟class有什么区别啊。 先说一个小结论:struct被升级了跟class一样可以被用来创建类:  而且创建这个类以后 这个类的名字就是类名前面不用加struct了。

    天命人你要想深刻理解他们的区别,你得学学类的这几个概念!!!否则小小天命人终归是蝼蚁。

1.机缘1---- 类中的限定操作符  public,private,protected

    在类中会对一些方法啊属性啊表示公开与不公开给类外的使用,那我问你,数据想成员变量要不要暴露给你随便改动?  那我如果不暴露我你想访问我的数据(成员变量)我暴露啥给你。

    ------------------------------------恭喜你想到了奖励给你我的理解:类中的限定操作符是对于类外限定的 所以一般封装数据 把方法暴露外界,比如想访问链表某一个节点的数据你可以写一个成员函数: int getval(); 而不是直接访问val的值 你就只能访问但不能修改 但是如果要修改它的值就在设置一个函数  void setval();那具体如何实现 如下:

class stack{private:int myval;stack* mynext;public:
void setval(int val)
{myval = val;
}};

private下面的为私有的,遇到public停下来,public下面的为公有的。

   前期你可以理解为protected跟private效果是一样的。

2.机缘2------类的声明与定义

    假如你有一个类它有很多属于 属性1,2,3,4,5.。。等等 同时它也有很多方法。。。。。。。 但是你又想迅速理解这个类是什么样的怎么办 ,所以c++中最常用的一招来了

 声明与定义分离。

    声明 你可以把声明放在.h文件下面 在.cpp文件放定义

  test.h

class A {
private:int a1;char a2;int a3;
public:void fun1();};

.cpp 文件 

void A::fun1(){cout<<"这是fun1()"<<endl;
}

    可以发现你需要把变量名 或者函数名前面放类名+限定符:: 才行

3. 总结 

     我们现在发现在c++中公有和私有的区别了,当变量被private修饰以后就不能直接被访问可以通过public修饰的函数(或者叫方法)来访问它,class所定义的类所以的成员默认为private的如果没有public修饰的话,虽然struct也可以用来定义类,但是为了兼容c语言所以struct默认的成员为public的。 

4.class实现的栈----if 你可以理解下面的代码然后自己写 then 你理解前面的全部咯

#include<iostream>using namespace std;
typedef int DataType ;
class Stack {
private:int _capacity;int _top;DataType* a;
public:void Init(){a = NULL;_capacity = _top = 0;}void Push(DataType val){if (_top == _capacity){int newcapacity = _capacity == 0 ? 4 : 2 * _capacity;a = (DataType*)realloc(a, newcapacity * sizeof(DataType));if (a == NULL){perror("realloc");return;}_capacity = newcapacity;}a[_top] = val;_top++;}void Print(){for (int i = 0; i < _top; i++){cout << a[i] << endl;}}};
void TestStack()
{Stack s1;s1.Init();s1.Push(1);s1.Push(2);s1.Push(3);s1.Push(4);s1.Push(5);s1.Push(6);s1.Print();}

   

5.诸位---这里面一个很重要的思想你可以理解了---封装

   封装就是通过限定符的修饰将数据和操作数据的方法捆绑在一起只暴露了操作数据的接口给外面,这样不用管内部的实现直接使用就行了,既可以提高代码的可读性也可以保护数据。

   加深理解: 区别与c语言的结构体,比如以前的栈想访问栈顶 但是也可以直接访问栈顶的其它元素(这是不好的)。

三.类的大小----按照字节序对齐

   1.回顾一下sizeof这个操作符吧    

对于    int a =1;

   sizeof(a);   和sizeof(int); 结果是一样的sizeof操作符计算的是它的占用空间的大小(或者说类型大小)

所以我们计算类型的大小的时候也就是计算类的大小。

  这里直接给出结论 它有成员变量,有成员函数?  有人问了 成员变量我可以去按照结构体的字节序对齐原则去写那???成员函数的大小怎么办??? 

   class name{

           char*name;

            int myage;

public:
    void Setage(int age)

{

           myage =  age;

    }

}

   int main()

{

  A name1;

  name1.myname = "张三";

    A name2;

   name2.myname = "李四";

      }

这里创建了 两个对象 name1 和name2 它的空间图如下:

所以你会发现编译器为了节约空间它认为啊 大家都是出来混的,讲道理是不是 ,所以呢对于成员变量这是你每一个对象独有的,那就是你自己的没人跟你抢,但是对于这些成员函数啊 这就是方法大家可以一起用啊,但是如何在成员函数调用指定的成员变量呢 ,比如张三想调用了成员函数

那他name2.setAge(34);这句代码闯过去内部myage是哪个的的呢显然肯定是张三这个对象的。那是如何实现的这个区分呢----大儒你能想想哦 后面揭秘this指针

 2. 计算大小 

    

空类默认大小是1 : (证明我来过) 用来标识这个类

留几个题目给你:

四.this指针---------这家伙就是用来。。。。

     1. this指针指向的是当前对象 

class Date {
private:int _year;int _month;int _day;
public:/*void Print(Date* const this)  这里编译器帮你隐藏了this指针这个参数他是用来接受对象地址的{cout << this -> _day << endl;}*/// 主函数部分调用它: Date d1    Print(&d1); 但是实际上编译器会自动帮你传参这个地址// 实际上void Print()  {cout << this -> _day<< endl;}
};

总之this指针是所有的成员函数 只要你是在类中定义的函数编译器就会隐式生产this指针

  this指针的特性: 1. 它是成员函数的一个形参 

                                2. 指向当前对象的地址 ,const this 的指向的地址不能被修改的

                                3. 它是成员函数的形参所以其实它是不会占用成员变量的空间的

                               4. 编译器隐式生成的,传参也是。

2.加深理解

// 1.下面程序编译运行结果是? A、编译报错 B、运行崩溃 C、正常运行
class A
{public:void Print(){cout << "Print()" << endl;}
private:int _a;
};
int main()
{A* p = nullptr;p->Print();return 0;
}

   结果是 正常运行哦 ,这个时候有人问了 p指向的不是空吗你你你这不是就野指针了吗,实则不然,我们都知道成员函数在公共代码区里面它是如果你只访问这个成员函数是不会访问这个p这个空指针的 但是如果在函数中访问了成员变量这个时候this指针也就是对象指针它指向空,因为p穿过去了 这个时候就会出现野指针问题也就是下面这个代码。

// 1.下面程序编译运行结果是? A、编译报错 B、运行崩溃 C、正常运行
class A
{
public:void PrintA(){cout << _a << endl;}
private:int _a;
};
int main()
{A* p = nullptr;p->PrintA();return 0;
}

        这里就是类与对象(一)的全部内容了 如果你觉得不错麻烦点个赞吧!

相关文章:

c++类与对象(一)

前言&#xff1a; 什么是面向对象编程&#xff1f;什么是类与对象&#xff1f;为啥要搞类与对象啊&#xff1f;凭什么c能支持面向对象编程啊&#xff1f; 每次学东西前问自己几个问题会挺爽的&#xff0c;因为你越是懵逼&#xff0c;你就越想知道答案是什么。希望我的这几篇文章…...

(二)mac中Grafana监控Linux上的MySQL(Mysqld_exporter)

框架&#xff1a;GrafanaPrometheusMysqld_exporter 一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装&#xff08;mac&#xff09;-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录…...

认知升级:把握人工智能教育化转型的历史机遇

认知升级&#xff1a;把握人工智能教育化转型的历史机遇 ----灌南县第四中学 孟祥帅 2025年4月17日至19日&#xff0c;我有幸参加了教育部主办的“全国人工智能校长局长专题培训班”。此次大会以“人工智能赋能教育现代化”为主题&#xff0c;汇聚了全国各地的教育局局长、校…...

人形机器人马拉松:北京何以孕育“领跑者”?

“机器人每跑一小步&#xff0c;都是人类科技的一大步”&#xff0c;这句对阿姆斯特朗登月名言的仿写&#xff0c;恰如其分地诠释了全球首场人形机器人半程马拉松赛事的里程碑意义。 2025年4月19日&#xff0c;北京亦庄半程马拉松暨人形机器人半程马拉松圆满结束。在总长21.09…...

HBuilder X:前端开发的终极生产力工具

一、极速下载与部署指南 官方下载地址&#xff1a;HBuilderX-高效极客技巧 HBuilder X 提供轻量化绿色发行包&#xff08;仅 10 余 MB&#xff09;&#xff0c;支持 Windows、macOS、Linux 全平台。 安装流程&#xff1a; Windows 用户&#xff1a; 下载.zip压缩包后解压至非系…...

对于校园网如何进行用户识别——captive portal的原理学习总结

一、技术名称总结 这一技术的核心称为 Captive Portal&#xff08;强制门户&#xff09;&#xff0c;中文常译为“认证门户”或“强制门户”。它是通过拦截未认证用户的网络流量&#xff0c;强制跳转到指定登录页面的技术。 二、技术提供方与部署逻辑 Captive Portal的实现主…...

肖特基二极管详解:原理、作用、应用与选型要点

一、肖特基二极管的基本定义 肖特基二极管&#xff08;Schottky Diode&#xff09; 是一种基于金属-半导体结&#xff08;肖特基势垒&#xff09;的二极管&#xff0c;其核心特性是低正向压降&#xff08;Vf≈0.3V&#xff09;和超快开关速度。 结构特点&#xff1a;阳极采用金…...

6.数据手册解读—运算放大器(三)

7、应用和实现 7.1应用信息 TLV916x 系列提供了出色的直流精度和交流性能。 这些器件的工作电压高达 16V&#xff0c; 并提供真正的轨到轨输入/输出、 低失调电压、失调电压漂移以及 11MHz 带宽和高输出驱动。TLV916x适用于16V工业应用。 7.2 典型应用 7.2.1 低边电流测量 下…...

关于隔离1

1.隔离的目的&#xff1a; 在隔离电源设计中&#xff0c;输入与输出之间没有直接电气连接&#xff0c;提供绝缘高阻态&#xff0c;防止电流回路。这意味着输入与输出之间呈现为绝缘的高阻态&#xff0c;从而确保了无电流回路的形成。 隔离与可靠保护有关。电隔离是一种电路设…...

大语言模型推理能力的强化学习现状理解GRPO与近期推理模型研究的新见解

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

【NLP 60、实践 ⑭ 使用bpe构建词表】

目录 一、BPE&#xff08;Byte Pair Encoding&#xff09;算法详解 1.基本概念 2.核心思想 3.算法步骤详解 Ⅰ、预处理 Ⅱ、统计字符对频率 Ⅲ、合并高频字符对 Ⅳ、编码与解码 ① 编码&#xff08;文本→子词序列&#xff09; ② 解码&#xff08;子词序列→文本&#xff09; …...

String +memset字符串类题型【C++】

tips&#xff1a; 1、寻找最大公共子串时&#xff0c;如果字符串可以旋转但是不能反转&#xff0c;考虑在每个字符串后重复一次自身&#xff0c;如 "abcd" 变为 "abcdabcd"&#xff0c;这样在用dp就可以了。 如何变环拆环为链&#xff1a; cin>>n&…...

06 GE Modifier

看看这个 问题。怪&#xff01;究竟下一个modifier能不能访问到上一个&#xff1f;刚才还可以啊现在怎么不行了。 这里捕获了Owner的属性&#xff0c;Source不知道在哪捕获的 CalculationType: 1.使用计算后的值 2.使用基础值 3.使用计算后的值-基础值。 BackingAttributes Sou…...

30元一公斤的樱桃甜不甜

2025年4月20日&#xff0c;13~27℃&#xff0c;还好 待办&#xff1a; 综合教研室——会议记录3份&#xff08;截止年4月18日&#xff09; 备课冶金《物理》 备课理工《高数》 备课理工《物理》 教学技能大赛教案&#xff08;2025年4月24日&#xff0c;校赛&#xff0c;小组合作…...

App-Controller - 通过自然语言操控应用程序的智能框架

本文翻译整理自&#xff1a;https://github.com/alibaba/app-controller 一、关于 App-Controller App-Controller 是基于大语言模型(LLMs)和智能体(Agents)构建的创新性API编排框架&#xff0c;旨在利用LLMs的高级推理能力来集成和同步各类应用程序提供的API。 上图展示了App…...

Deepseek输出的内容如何直接转化为word文件?

我们有时候会直接利用deepseek翻译别人的文章或者想将deepseek输出的内容直接复制到word文档里。但是文本格式和word是不对应的。这时候需要输入如下命令&#xff1a; 以上翻译内容的格式和排版要求如下&#xff1a; 1、一级标题 字体为黑体&#xff08;三号&#xff09;&…...

深入剖析 Java Web 项目序列化:方案选型与最佳实践

在 Java Web 开发中&#xff0c;“序列化”是一个你无法绕过的概念。无论是缓存数据、共享 Session&#xff0c;还是进行远程过程调用&#xff08;RPC&#xff09;或消息传递&#xff0c;序列化都扮演着底层数据搬运工的角色。它负责将内存中的 Java 对象转换成可传输或可存储的…...

第36讲:作物生长预测中的时间序列建模(LSTM等)

目录 🧠 为什么用时间序列模型来预测作物生长? ⛓️ 什么是 LSTM? 📊 示例案例:预测小麦NDVI变化趋势 1️⃣ 模拟数据构建(或使用真实遥感数据) 2️⃣ 构建 LSTM 所需数据格式 3️⃣ 构建并训练 LSTM 模型 4️⃣ 模型预测与效果可视化 🧠 除了 LSTM,还有哪…...

LeetCode 每日一题 2563. 统计公平数对的数目

2563. 统计公平数对的数目 给你一个下标从 0 开始、长度为 n 的整数数组 nums &#xff0c;和两个整数 lower 和 upper &#xff0c;返回 公平数对的数目 。 如果 (i, j) 数对满足以下情况&#xff0c;则认为它是一个 公平数对 &#xff1a; 0 < i < j < n&#xff0c…...

Redis 哨兵与集群脑裂问题详解及解决方案

Redis 哨兵与集群脑裂问题详解及解决方案 本文将深入探讨Redis在哨兵模式和集群模式下可能出现的脑裂问题&#xff0c;包括其发生场景、原因以及有效的解决策略。同时&#xff0c;我们还将提供相应的代码示例和配置方案来帮助读者理解和实施。 一、脑裂问题概述 脑裂&#x…...

Laravel-vite+vue开发前端模板

开始这篇文章的时候&#xff0c;你已经安装了laravel&#xff01;你已经安装了laravel&#xff01;你已经安装了laravel&#xff01; 然后你的laravel服务器环境已经搭建好&#xff0c;应用可以正常访问 laravel vite plugin 官方原文 laravel默认已经集成vitejs,单纯使用vi…...

springboot+vue3+mysql+websocket实现的即时通讯软件

项目演示 即时通讯软件项目演示 业务架构 技术栈 后端 选用编程语言 Javaweb框架SpringBootdb MySQL 持久存储nosql 缓存 Redis全双工通信框架 WebSocket 前端 前端框架Vue3TypescriptUI样式 Css、ElementPlus网页路由 vue-router全双工通信框架Websocket 功能完成情况 已实…...

HTMLCSS实现网页轮播图

网页中轮播图区域的实现与解析 在现代网页设计中&#xff0c;轮播图是一种常见且实用的元素&#xff0c;能够在有限的空间内展示多个内容&#xff0c;吸引用户的注意力。下面将对上述代码中轮播图区域的实现方式进行详细介绍。 一、HTML 结构 <div class"carousel-c…...

HTML表单与数据验证设计

HTML 表单与数据验证设计&#xff1a;构建可靠的用户数据采集系统 引言 互联网的核心是数据交互&#xff0c;而HTML表单是这一交互的主要入口。作为前端工程师&#xff0c;设计高质量的表单不仅关乎用户体验&#xff0c;更直接影响数据收集的准确性和系统安全。 在我的学习实…...

[Windows] 星光桌面精灵 V0.5

[Windows] 星光桌面精灵 链接&#xff1a;https://pan.xunlei.com/s/VOOI9NCNDB0iBONt5gz7zUb9A1?pwdgxa6# [Windows] 星光桌面精灵 V0.5 这款桌面精灵是动态的&#xff0c;而且还可以做快捷启动...

Java 网络编程性能优化:高吞吐量的实现方法

Java 网络编程性能优化&#xff1a;高吞吐量的实现方法 在当今的互联网时代&#xff0c;网络应用的性能优化是开发人员面临的重要挑战之一。Java 作为一门广泛使用的编程语言&#xff0c;提供了强大的网络编程支持&#xff0c;但如何通过优化实现高吞吐量&#xff0c;是每个 J…...

【去哪儿网】登录滑块逆向算法AES加密分析(逆天滑块轨迹)

目标&#xff1a;aHR0cHM6Ly91c2VyLnF1bmFyLmNvbS9wYXNzcG9ydC9sb2dpbi5qc3A 验证接口&#xff1a; https://vercode.qunar.com/inner/captcha/snapshot 可以发现是encryption方法生成&#xff0c;进入encryption里面&#xff0c;发现是AES加密的轨迹 track就是轨迹 直接…...

Redis ④-通用命令

Redis 是一个 客户端-服务器 结构的程序&#xff0c;这与 MySQL 是类似的&#xff0c;这点需要牢记&#xff01;&#xff01;&#xff01; Redis 固然好&#xff0c;但也不是任何场景都适合使用 Redis&#xff0c;一定要根据当前的业务需求来选择是否使用 Redis Redis 通用命令…...

机制的作用

“机制”是一个广泛使用的概念&#xff0c;其含义和应用范围因领域而异。在不同的学科和实际应用中&#xff0c;机制有着不同的定义和功能。以下从几个主要领域对“机制”进行详细解释&#xff1a; 一、自然科学中的机制 &#xff08;一&#xff09;物理学 定义 在物理学中&…...

Pandas:数据处理与分析的核心操作

Pandas&#xff1a;数据处理与分析的核心操作 Pandas 是 Python 数据分析的核心库&#xff0c;它提供了高性能、易用的数据结构和数据分析工具。本文将详细介绍 Pandas 的核心操作&#xff0c;帮助你高效进行数据处理和分析。 1. Pandas 基础数据结构 Pandas 有两个主要的数…...

Kotlin实现Android应用保活方案

Kotlin实现Android应用保活优化方案 以下的Android应用保活实现方案&#xff0c;更加符合现代Android开发规范&#xff0c;同时平衡系统限制和用户体验。 1. 前台服务方案 class OptimizedForegroundService : Service() {private val notificationId 1private val channel…...

硬件电路(25)-过温保护器件ksd9700温控开关

一、概述 KSD9700系列温控开关是一种双金属作为感温元件的温控器&#xff0c;具有动作迅速、控温精确、控制电流大、使用寿命长的特点&#xff0c;被广泛应用于各类微型电机、电磁炉、空调电机、小家电等做温度保护控制。 二、应用 KSD9700系列产品是一种双金属作为感温元件的…...

vuex实现同一页面radio-group点击不同按钮显示不同表单

本文实现的是点击单一规格和多规格两个按钮会在页面显示不同的表单 方法一 <!-- 单规格和多规格的切换 --> <el-form label-width"80px" class"text-align-left"><el-form-item label"商品规格"><!-- 监听skus_type的改…...

代码随想录训练营第36天 ||1049. 最后一块石头的重量 II 494. 目标和 474. 一和零

1049. 最后一块石头的重量 II 讲解&#xff1a;代码随想录 思路&#xff1a; 01背包问题&#xff1a;题意说要求粉碎石头后留下的最小石头重量&#xff0c;石头粉碎的规则是两个石头如果重量相等&#xff0c;同时粉碎&#xff0c;如果重量不相等&#xff0c;粉碎后的重量是大…...

[Spring]SSM整合

第一步 整合任何框架&#xff0c;首先都是导入相关的jar包&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.18</version></dependency><!--mybatis依…...

【HDFS】HDFS数据迁移与备份全攻略:从日常备份到灾难恢复

目录 1 HDFS数据迁移与备份概述 2 集群间数据迁移&#xff1a;DistCp工具详解 2.1 DistCp工作原理架构 2.2 DistCp标准工作流程 2.3 DistCp性能优化方案 3 离线备份实施策略 3.1 HDFS到本地备份架构 4 灾难恢复方案设计 4.1 基于快照的恢复流程 4.2 数据一致性校验方…...

动态规划入门:背包问题求具体方案(以0-1背包问题为例)

本质&#xff1a;有向图最短&#xff08;长&#xff09;路问题 字典序最小方案&#xff1f;--贪心思路&#xff1f;&#xff08;本题未使用&#xff09; 分析第一个物品&#xff1a; 写代码时tip&#xff1a;要考虑“边读边做”还是“先读后做” #include<iostream> #i…...

git学习日志

你看到的是 Vim 文本编辑器的界面&#xff0c;并非 git 的窗口。这是你通过 vim hello.txt 命令打开的新文件。以下是分步操作指南&#xff1a; 1. 进入编辑模式 按下键盘上的 i 键&#xff08;进入 “INSERT” 模式&#xff09;&#xff0c;此时左下角会显示 -- INSERT --。现…...

数字孪生废气处理工艺流程

图扑数字孪生废气处理工艺流程系统。通过精准 3D 建模&#xff0c;对废气收集、预处理、净化、排放等全流程进行 1:1 数字化复刻&#xff0c;实时呈现设备运行参数、污染物浓度变化等关键数据。 借助图扑可视化界面&#xff0c;管理者可直观掌握废气处理各环节状态&#xff0c…...

iPhone 13P 换超容电池,一年实记的“电池循环次数-容量“柱状图

继上一篇 iPhone 13P 更换"移植电芯"和"超容电池"&#x1f50b;体验&#xff0c;详细记录了如何更换这两种电池&#xff0c;以及各自的优略势对比。 一晃一年过去&#xff0c;时间真快&#xff0c;这次分享下记录了使用超容电池的 “循环次数 - 容量(mAh)…...

豆瓣图书数据采集与可视化分析(二)- 豆瓣图书数据清洗与处理

文章目录 前言一、查看数据基本信息二、拆分pub列三、日期列处理四、价格列处理五、出版社列处理六、评价人数列处理七、缺失值处理八、重复数据处理九、异常值处理十、完整代码十一、清洗与处理后的数据集展示 前言 豆瓣作为国内知名的文化社区&#xff0c;拥有庞大且丰富的图…...

【Sa-Token】学习笔记05 - 踢人下线源码解析

目录 前言 强制注销 踢人下线 源码解析 前言 所谓踢人下线&#xff0c;核心操作就是找到指定 loginId 对应的 Token&#xff0c;并设置其失效。 上图为踢人下线后&#xff0c;前端应该用图像给出来让用户重新登录&#xff0c;而不是让前端收到一个描述着被下线 的JSON 强…...

Linux | I.MX6ULL 文件系统

01 本节所有的测试程序需要开发板有 Qt 环境来运行。我们提供的文件系统是由 yocto 裁剪整理得来的。之后我们会整理一份单独移植的 qt 系统。方便用户移植第三方软件。如果用户的文件系统非我们的出厂版本,请参考之前烧写章节重新烧写出厂文件系统。开发板启动需要输入登录…...

Python3基础语法

一&#xff1a;注释 Python中用#表示单行注释&#xff0c;#之后的同行的内容都会被注释掉。 使用三个连续的双引号表示多行注释&#xff0c;两个多行注释标识之间内容会被视作是注释。 二&#xff1a;基础变量类型与操作符 1. 除法 * 除法 / python3中就算是两个整数相除&a…...

QEMU源码全解析 —— 块设备虚拟化(20)

接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(19) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 特此致谢! 上一回大致解析了drive_new函数,本回重点对于drive_new函数中调用的blockdev_init函…...

JavaScript 笔记 --- part 4 --- Web API (part 2)

(webAPI part2) DOM 基本操作 事件流 定义: 指的是事件完整执行过程中的流动路径 捕获阶段: 事件从最外层的窗口对象开始&#xff0c;逐层向内传播到目标元素&#xff0c;并触发相应的事件处理程序。 冒泡阶段: 事件从目标元素开始&#xff0c;逐层向外传播到最外层的窗口对象…...

从入门到精通汇编语言 第六章(中断及外部设备操作)

参考教程&#xff1a;通俗易懂的汇编语言&#xff08;王爽老师的书&#xff09;_哔哩哔哩_bilibili 一、移位指令 1、8个移位指令 &#xff08;1&#xff09;逻辑左移指令SHL&#xff1a;SHL OPR, CNT。 ①OPR为操作数&#xff0c;CNT为左移位数&#xff0c;该指令将OPR视作…...

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类尺寸QSizeF)

QSizeF 类&#xff08;浮点尺寸类&#xff09; 文章目录 QSizeF 类&#xff08;浮点尺寸类&#xff09;概述主要方法列表详细说明及应用举例注意事项 概述 QSizeF 类使用浮点精度定义二维对象的尺寸。官方文档在这里。 主要方法列表 __init__(self) …...

操作系统中的虚拟化技术深度对话

操作系统中的虚拟化技术深度对话 参与者&#xff1a;系统工程师&#xff08;Engineer&#xff09;、开发者&#xff08;Developer&#xff09;、学生&#xff08;Student&#xff09; 1. 虚拟化的基本概念 Student&#xff1a;虚拟化到底是什么&#xff1f;为什么操作系统需要…...

第35讲:构建属于自己的遥感大模型平台,并接入地理数据工作流

目录 🌍 写在前面 一、为什么要构建属于自己的遥感大模型平台? 二、核心技术选型推荐 ✅ 前端部分 ✅ 后端部分 ✅ 部署平台 三、平台架构设计思路 四、案例实战:构建一个在线遥感分割平台 📌 第一步:模型服务封装(FastAPI) 📌 第二步:前端上传与展示(L…...