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

C++ Day3

目录

一、类

【1】类

【2】应用实例

练习:

【3】封装

二、this指针

 【1】this指针的格式

【2】必须使用this指针的场合

三、类中的特殊成员函数

【1】构造函数

i)功能

ii)格式

iii)构造函数的调用时机

iv)构造函数允许函数重载

v)构造函数的初始化列表

1.格式:

2.必须使用初始化列表的情况:

2】析构函数

i)功能

ii)调用时机

iii)格式

iv)需要显性定义出析构函数的情况

【3】拷贝构造函数

i)功能

ii)格式

iii)调用时机

iv)深浅拷贝问题

【4】拷贝赋值函数

i)功能

ii)格式

作业:


一、类

面向对象的三大特征:封装、继承和多态

C++中封装是由类来实现的

C++中的类是由结构体演变而来的

结构体:变量和函数

类:成员属性(变量)、成员方法(函数)

【1】类

类中成员默认是private权限

class 类名
{
public:       ---->类外和类内都可以访问公有的成员变量/函数
private:      ---->类内可以访问,类外不能访问私有的成员变量/函数
protected:受保护的成员变量/函数    
};

【2】应用实例

#include <iostream>
using namespace std;class Person
{
private:string name;
public:int age;int high;void set_name(string n);    //在类内声明函数void show(){cout << "name = "<< name << " age = "<<age << " high = "<<high << endl;}
};int main()
{Person p1;       //实例化一个类对象p1p1.set_name("zhangsan");p1.age = 90;p1.high = 100;p1.show();return 0;
}//类外实现
void Person::set_name(string n)
{name = n;
}

练习:

1、定义一个矩形类(Rectangle),包含私有成员长(length)、宽(width),定义成员函数:

设置长度: void set_len(int l);

设置宽度: void set_wid(int w);

获取长度: int get_len();

获取宽度: int get_wid();

显示周长和面积: void show();

#include <iostream>
using namespace std;class Rec
{int length;int width;
public://所有函数的类内声明void set_len(int l);void set_wid(int w);int get_len();int get_wid();void show();};void Rec::set_len(int l)
{length = l;
}
void Rec::set_wid(int w)
{width = w;
}
int Rec::get_len()
{return length;
}
int Rec::get_wid()
{return width;
}
void Rec::show()
{cout << "周长" << 2*(length+width) << endl;cout << "面积" << length*width << endl;
}
int main()
{Rec r1;    //实例化了一个Rec类的类对象r1r1.set_len(10);r1.set_wid(3);cout << "长:" << r1.get_len() << endl;cout << "宽:" << r1.get_wid() << endl;r1.show();return 0;
}

【3】封装

  1. 把某一事物的所有属性(变量)、行为(成员方法/成员函数),封装成一个整体,给私有的属性,提供公有的接口,以便于用户修改
  2. 类中成员都有访问权限(public,private,protected)
  3. 访问权限,是对于整个类而言的
  4. 类中同一访问权限,可以可以出现多次
  5. 类中默认是私有权限

二、this指针

this指针,是类内默认提供给非静态成员函数的指针,this指向,指向类对象本身,哪个类对象调用函数,this就指向哪一个类对象(谁调用函数this就指向谁)

 【1】this指针的格式

类名 *const this;  ----->不能修改指针指向

【2】必须使用this指针的场合

  1. 当成员函数的参数和类中成员属性同名时,需要使用this指向表明哪一个是类中的成员属性
  2. 拷贝赋值函数中,需要返回自身的引用,也需要使用this指针
#include <iostream>
using namespace std;class Rec
{int length;int width;
public://所有函数的类内声明void set_len(int length);void set_wid(int width);int get_len();int get_wid();void show();
};void Rec::set_len(int length)
{this->length = length;
}void Rec::set_wid(int width)
{this->width = width;
}int Rec::get_len()
{return length;
}int Rec::get_wid()
{return width;
}void Rec::show()
{cout << "周长" << 2*(length+width) << endl;cout << "面积" << length*width << endl;
}
int main()
{Rec r1;    //实例化了一个Rec类的类对象r1Rec r2;r2.set_len(20);r1.set_len(10);r1.set_wid(3);cout << "长:" << r1.get_len() << endl;cout << "宽:" << r1.get_wid() << endl;r1.show();return 0;
}

三、类中的特殊成员函数

类中的特殊成员函数,程序员如果不手动写出来,系统会默认提供

一共有6个特殊的成员函数:构造函数、析构函数、拷贝构造函数、拷贝赋值函数,取地址运算符的重载和常取地址运算符的重复,C++11又提供了:移动构造、移动赋值函数

本文只有前四个

【1】构造函数

用于实例化类对象,系统会自动调用,系统自动提供的是无参构造

如果手动定义了构造函数,那么系统不会再提供一个无参构造

i)功能

实例化类对象时,申请空间使用的

ii)格式

类名(参数)
{函数体;
}

iii)构造函数的调用时机

栈区:什么时候实例化类对象,什么时候调用

在 C++ 中,对象可以在栈区实例化,这也被称为自动存储类对象。实例化对象时,会在栈上为对象分配内存空间,并调用对应的构造函数进行初始化。
对象的实例化和调用可以发生在不同的情况下:

1.在函数内部:当在函数内部定义一个类对象时,对象的实例化和构造函数的调用将发生在函数的作用域内。例如:

void foo() {MyClass obj;  // 实例化对象并调用构造函数// 函数内的其他操作
} // 函数结束,对象超出作用域,析构函数将会被调用


2.作为类的成员:如果一个类定义在另一个类中,并作为成员变量,那么对象的实例化和构造函数的调用将随着父类对象的实例化而发生。例如:

class ParentClass {
public:MyClass obj;  // 对象作为成员变量
};int main() {ParentClass parentObj;  // 实例化父类对象,对象的实例化和构造函数调用都会发生// 其他操作
} // 父类对象超出作用域,析构函数将会被调用,对象的析构顺序与构造相反

需要注意的是,在栈上实例化的对象会在其所在的作用域结束时超出作用域,从而自动调用析构函数,释放对象占用的内存空间。这种自动释放内存的方式称为自动存储管理。

堆区:定义类的指针时,不调用构造函数。

什么时候new,什么时候调用 :应该在对象不再使用时调用对应的析构函数来释放内存,以避免内存泄漏。

iv)构造函数允许函数重载

  1. 系统默认提供一个无参构造函数
  2. 可以显性定义出有参构造,但是此刻系统不再提供默认的无参构造,还可以显性写出无参构造
  3. 构造函数是允许函数重载的
#include <iostream>
using namespace std;class Stu
{string name;int age;
public://定义Stu类的无参构造Stu(){cout << "Stu的无参构造" << endl;}//函数重载Stu(string name,int age){this->name = name;this->age = age;cout << "Stu的有参构造" << endl;}Stu(string name){this->name = name;cout << "Stu的对name的有参构造" << endl;}
};int main()
{     Stu s1("zhangsan",18);  //栈区的类对象Stu *p;  //在栈区申请一个Stu*类型的指针p = new Stu("lisi");    //在堆区申请一个Stu的空间,会调用构造函数return 0;
}

v)构造函数的初始化列表

1.格式:

类型(形参):成员属性1(形参1),成员属性2(形参2),······{函数体内容} 

  1. 构造函数提供了初始化列表的机制,可以直接在函数体外执行初始化操作

  2. 初始化列表由:引出,每一个成员属性的值之间以,逗号分隔

2.必须使用初始化列表的情况:

  1. 形参和成员属性同名
  2. 类中有引用成员时,需要使用初始化列表
  3. 类中有const修饰的成员时
  4. 一个类中有另一个类的子对象时,需要使用初始化列表(如果两个类都有无参构造,是不需要写初始化列表)

 

//包含其他类的子对象
#include <iostream>
using namespace std;
class Per
{string name;
public://Per提供的有参构造Per(string name){this->name = name;cout << "Per的有参构造" << endl;}Per(){cout << "Per的无参构造" << endl;}//一个show函数,输出namevoid show(){cout << "Per中的name=" << name << endl;}
};class Stu
{int score;
public:Per p1;    //Stu类中,包含另一个类的子对象,且另一个类只有有参构造函数
public:Stu(string name):p1(name)    //必须使用初始化列表,并且在初始化列表显性调用另一个类的构造函数{cout << "Stu的有参构造" << endl;}Stu(){cout << "Stu的无参构造" << endl;}
};int main()
{Stu s1("zhangsan");//通过s1这个类对象,调用Per中的show函数s1.p1.show();Stu s2;return 0;
}//同名或者是包含引用成员/const修饰的成员
class Stu
{string name;//int &age;     //类中有引用成员const int score;
public://定义Stu类的无参构造
//    Stu()
//    {
//        cout << "Stu的无参构造" << endl;
//    }//函数重载,使用初始化列表的方式//初始化列表也可以解决形参和成员属性同名问题Stu(string name,int age):name(name),score(age)  //在函数体外给成员属性初始化{cout << "Stu的有参构造" << endl;}void show(){cout << name << " " << score << endl;}
};int main()
{     Stu s1("zhangsan",18);  //栈区的类对象s1.show();Stu *p;  //在栈区申请一个Stu*类型的指针p = new Stu("lisi",20);    //在堆区申请一个Stu的空间,会调用构造函数return 0;
}

2】析构函数

析构函数,不支持函数重载,并且析构函数只有:~类名(){}

不需要传参数,public权限

i)功能

回收类对象的空间

ii)调用时机

栈区:类对象消亡时,自动调用

堆区:什么时候delete,什么时候调用析构函数

先构造的后析构,后构造的先析构

iii)格式

~类名()
{函数体;
}

iv)需要显性定义出析构函数的情况

  1. 类中有指针成员,并且指针成员指向堆区的空间
  2. 如果直接调用普通的析构函数,类对象消亡后,没有办法再去释放掉堆区的空间,会造成内存泄漏

#include <iostream>
using namespace std;class Stu
{int *p;
public:Stu():p(new int)    //在不传参的情况下,给指针成员p用堆区的空间初始化{cout << "Stu无参构造" << endl;}Stu(int a):p(new int(a))   //在参数为整形变量的情况下,让p指向堆区申请的空间//但是把这篇空间的内容,用传过来的整形变量初始化{cout << "Stu的有参构造" << endl;}Stu(int *p)   //要求传过来的指针的值,一定是指向堆区空间{this->p = p;cout << "Stu传指针的有参构造" << endl;}~Stu(){//在析构之前释放堆区的空间cout << "准备释放空间:" << p << endl;delete p;p = nullptr;cout << "Stu的析构函数" << endl;}
};int main()
{Stu s1(90);return 0;
}

【3】拷贝构造函数

i)功能

使用已有的类对象,给类对象初始化的时候,自动调用拷贝构造函数

ii)格式

类名(类名 &other)
{函数体的内容;
}拷贝构造函数,是一个构造函数,
函数名:类名
形参:其他类对象的引用

iii)调用时机

  1. 使用已有的类对象给新的类对象初始化
  2. 当函数的形参是一个类对象时,也会调用拷贝构造函数
  3. 当函数的返回值是一个类对象时,也会调用拷贝构造函数
#include <iostream>
using namespace std;
class Stu
{string name;
public:Stu(){cout << "Stu的无参构造" << endl;}Stu(string name){this->name = name;cout << "Stu的有参构造" << endl;}Stu(Stu &other)   //Stu的拷贝构造函数,和无参构造以及有参构造构成函数冲澡{this->name = other.name;cout << "Stu的拷贝构造函数" << endl;}void show(){cout << name << endl;}
};
Stu fun(Stu s1)  //定义了一个函数fun,形参是一个类对象
{cout << "调用成功" << endl;return s1;
}
int main()
{Stu s1("zhangsan");cout << "s1:";s1.show();Stu s2 = s1;   //拷贝构造函数cout << "s2:";s2.show();fun(s2);return 0;
}

 

iv)深浅拷贝问题

什么情况下发生:类中存在指针成员时

深拷贝:两个指针成员指向不同空间,但是取*的结果是一致

浅拷贝:两个指针成员指向同一片空间

1、对同一片空间二次释放问题

2、两个类对象使用同一片空间,发生资源抢占问题

#include <iostream>
using namespace std;class Stu
{int *p;
public:Stu():p(new int)    //在不传参的情况下,给指针成员p用堆区的空间初始化{cout << "Stu无参构造" << endl;}Stu(int a):p(new int(a))   //在参数为整形变量的情况下,让p指向堆区申请的空间//但是把这篇空间的内容,用传过来的整形变量初始化{cout << "Stu的有参构造" << endl;}Stu(int *p)   //要求传过来的指针的值,一定是指向堆区空间{this->p = p;cout << "Stu传指针的有参构造" << endl;}~Stu(){//在析构之前释放堆区的空间cout << "准备释放空间:" << p << endl;delete p;p = nullptr;cout << "Stu的析构函数" << endl;}void show(){cout << "p=" << p << endl;}void set_p(int a){*p = a;    //通过指针变量p,修改内存中的值}void show_p(){cout << *p << endl;  //通过指针变量,输出p指向的内存中的值}//拷贝构造函数Stu(Stu &other){p = new int;  //手动让s2的指针p指向堆区的空间//实现深拷贝*p = *(other.p);cout << "Stu的拷贝构造函数" << endl;}
};
int main()
{Stu s1(90);    //会给s1的指针成员在堆区申请一片空间使用90初始化Stu s2 = s1;   //申请了一个Stu的类对象的空间,也实现了用s1的值初始化s2//左调右参//上面一行,调用了拷贝构造函数//使用了默认提供的拷贝构造,会造成指针成员,指向同一片空间的问题
//    cout << "s1:";
//    s1.show();
//    cout << "s2:";
//    s2.show();s1.show_p();s2.show_p();s1.set_p(101);s1.show_p();s2.show_p();return 0;
}

【4】拷贝赋值函数

i)功能

使用已有的类对象,给已有的类对象赋值的时候,会调用拷贝赋值函数。

ii)格式

类名 &operator=(const 类名 &other)
{函数体;
}

作业:

设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象 p1,设计这两个类的构造函数、析构函数和拷贝构造函数。

#include <iostream>using namespace std;class Per{string name;int age;float* height;float* weight;
public://构造函数Per(string name,int age,float* height,float* weight){this->name = name;this->age = age;this->height = height;this->weight = weight;cout << "Per的构造函数" << endl;}//析构函数~Per(){delete height;delete weight;height = nullptr;weight = nullptr;cout << "Per的析构函数" << endl;}//拷贝构造函数Per(Per& other){this->name = other.name;this->age = other.age;height = new float;*height = *(other.height);weight = new float;*weight = *(other.weight);cout << "Per的拷贝构造函数" << endl;}void show(){cout << name << endl;}
};class Stu{float score;Per p1;
public://必须使用初始化列表的情况://形参和成员属性同名//类中有引用成员时,需要使用初始化列表//类中有const修饰的成员时//一个类中有另一个类的子对象时,需要使用初始化列表(如果两个类都有无参构造,是不需要写初始化列表)//Stu构造函数Stu(float score,string name,int age,float* height,float* weight):score(score),p1(name,age,height,weight){cout<< "Stu的构造函数" << endl;}//析构函数~Stu(){   cout << "Stu的析构函数" << endl;}//拷贝构造函数Stu(Stu& other):score(other.score),p1(other.p1){cout << "Stu的拷贝构造函数" << endl;}
};int main()
{float height = 175;float weight = 60;Per p("zhangsan",18,&height,&weight);Per p1 = p;Stu stu1(85.5,"lisi",18,&height,&weight);Stu stu2 = stu1;p.show();return 0;
}

相关文章:

C++ Day3

目录 一、类 【1】类 【2】应用实例 练习&#xff1a; 【3】封装 二、this指针 【1】this指针的格式 【2】必须使用this指针的场合 三、类中的特殊成员函数 【1】构造函数 i&#xff09;功能 ii&#xff09;格式 iii&#xff09;构造函数的调用时机 iv&#xff09;…...

OpenEuler 安装mysql

下载安装包 建议直接使用在openEuler官方编译移植过的mysql-5.7.21系列软件包 参考&#xff1a;操作系统迁移实战之在openEuler上部署MySQL数据库 | 数据库迁移方案 | openEuler社区官网 MySQL 5.7.21 移植指南&#xff08;openEuler 20.03 LTS SP1&#xff09; | 数据库移植…...

[Docker] Windows 下基于WSL2 安装

Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。 1. 开启虚拟化 进入系统BIOS&#xff08;AMD 为 SVM&#xff1b;Intel 为 Intel-vt&#xff09;改为启用(enable) 2. 开启WSL 系统设置->应用->程序和功能->…...

(未完成)【Spring专题】SringAOP底层原理解析——阶段三(AOP)

目录 前言前置知识代理范式SpringAOP的理解Spring动态代理的实现 课程内容一、动态代理的实现1.1 Cglib动态代理1.2 JDK动态代理1.3 ProxyFactory&#xff1a;Spring对两种代理的封装 二、AOP基础知识AOP基础概念回顾通知Advice的分类Advisor的理解 三、创建代理对象的方式3.1 …...

使用Nodejs创建简单的HTTP服务器,借助内网穿透工具实现公网访问的方法分享

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…...

使用 OpenTelemetry 构建可观测性 03 - 导出

上一个博文中&#xff0c;我提到如何使用 OpenTelemery 的特定语言 API 来收集遥测数据&#xff0c;包含手动和自动的埋点技术&#xff0c;这很重要&#xff01;但是&#xff0c;收集遥测数据只是解决方案的第一步。 你需要把遥测数据路由转发到其他地方&#xff0c;同时添加额…...

Pyqt5打开电脑摄像头进行拍照

目录 1、设计UI界面 2、设计逻辑代码&#xff0c;建立连接显示窗口 3、结果 1、设计UI界面 将ui界面转为py文件后获得的逻辑代码为&#xff1a;&#xff08;文件名为 Camera.py&#xff09; # -*- coding: utf-8 -*-# Form implementation generated from reading ui file …...

Flowable 7.0.0.M2 版本功能

CMMN 支持批量迁移重复支持案例重新激活支持停止内务处理批处理Http 任务支持 HTTP HEAD and OPTIONS for the Http Tasks移除了 Spring Boot 启动器 flowable-spring-boot-starter-basic - 切换为 flowable-spring-boot-starter-process flowable-spring-boot-starter-rest-ap…...

【golang】关于指针的有限操作

传统意义上来说&#xff0c;指针是一个指向某个确切的内存地址的值。这个内存地址可以是任何数据或代码的起始地址。在Go语言中有几种东西可以代表"指针"。其中最贴切传统意义的当属uintptr类型的了。该类型实际上是一个数值类型&#xff0c;也是Go语言内建的数据类型…...

ProGuard + SpringBoot3 + JDK17

1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...

Kafka面试

文章内容转自: 华仔聊技术(Kafka 面试连环炮) 目录 一.初级 1.Kafka核心组件图 2.在 Kafka 中 Zookeeper 作用是什么? 3.生产者有哪些发消息的模式? 4.Kafka 如何合理设置分区数,越多越好吗? Kafka 如何合理设置分区数 分区设置越多越好吗? 5.如何保证 Kafka 中的…...

Amazon CloudFront 部署小指南(六)- Lambda@Edge 基础与诊断

内容简介 本文适用于希望使用 Amazon CloudFront LambdaEdge 提升 Amazon CloudFront 边缘计算能力的用户&#xff0c;旨在帮助您更好的进行 CloudFront LambdaEdge 的开发、调试、测试、部署等工作。 首先我们会对 CloudFront LambdaEdge 做个简单的介绍&#xff0c;然后分七个…...

centos7安装hadoop 单机版

1.解压 &#xff08;1&#xff09;将hadoop压缩包复制到/opt/software路径下 &#xff08;2&#xff09;解压hadoop到/opt/module目录下 [rootkb135 software]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ &#xff08;3&#xff09;修改hadoop属主和属组 [rootkb135 m…...

村口的人家排放污水,污水浸染了整个村子,怎么办

从前有一个很不错的村子里&#xff0c;村子里有很多户人家&#xff0c;随着生活水平越来越好&#xff0c;房子也修起来了&#xff0c;柏油马路也宽敞了&#xff0c;大家进出村子&#xff0c;都要走那条马路&#xff0c;要不就出不去。 目录 1. 修厕所 2. 村口的日家 3. 告诉…...

算法leetcode|72. 编辑距离(rust重拳出击)

文章目录 72. 编辑距离&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;二维数组&#xff08;易懂&#xff09;滚动数组&#xff08;更加优化的内存空间&#xff09; go&#xff1a;c&#xff1a;python&a…...

实训笔记8.21

8.21笔记 8.21笔记一、Hive数据仓库技术的基本概念和组成1.1 Hive的组成架构1.1.1 Hive的客户端&#xff08;1&#xff09;Hive的命令行客户端 hive命令&#xff08;2&#xff09;Hive的JDBC的客户端&#xff08;Java API&#xff09;hive的JDBC客户端又有多种使用方式 &#x…...

robust distortion-free watermarks for language models

本文是LLM系列文章&#xff0c;针对《robust distortion-free watermarks for language models》的翻译。 语言模的鲁棒无失真水印 摘要1 引言2 方法和理论分析3 实验结果4 讨论 摘要 我们提出了一种从自回归语言模型中在文本中植入水印的方法&#xff0c;该方法对扰动具有鲁…...

PTS性能测试工具-使用记录

因为PTS使用是要收费的&#xff0c;所以文中会有大量图片记录&#xff0c;为我自己以后工作中&#xff0c;可能会再次使用PTS做个参照&#xff0c;以免时间长&#xff0c;容易忘记~ 目录 一、创建场景 二、填写一个压测节点 1、填写节点基本信息 2、Body / Header填写 …...

【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)

文章目录 1、简介2、异步写 void AsyncWriteSomeToSocketErr(const std::string& buffer)3、异步写void AsyncWriteSomeToSocket(const std::string& buffer)4、异步写void AsyncSendToSocket(const std::string& buffer)5、异步读void AsyncReadSomeToSocket(cons…...

django sqlite3操作和manage.py功能介绍

参考链接&#xff1a;https://www.cnblogs.com/csd97/p/8432715.html manage.py 常用命令_python manage.py_追逐&梦想的博客-CSDN博客 python django操作sqlite3_django sqlite_浪子仙迹的博客-CSDN博客...

【SQL语句】SQL编写规范

简介 本文编写原因主要来于XC迁移过程中修改SQL语句时&#xff0c;发现大部分修改均源自于项目SQL编写不规范&#xff0c;以此文档做以总结。 注&#xff1a;此文档覆盖不甚全面&#xff0c;大体只围绕迁移遇到的修改而展开。 正文 1、【字段引号】 列名、表名如无特殊情况…...

后端项目开发:工具类封装(序列化、反射)

1.整合Jackson 根据《阿里巴巴开发规范》&#xff0c;包名使用单数&#xff0c;类名可以使用复数。 所以generic-common创建util包和utils工具类 很多时候我们需要将接收到的json数据转换为对象&#xff0c;或者将对象转为json存储。这时候我们需要编写用于json转换的工具类。…...

软件测试技术分享丨遇到bug怎么分析?

为什么定位问题如此重要&#xff1f; 可以明确一个问题是不是真的“bug” 很多时候&#xff0c;我们找到了问题的原因&#xff0c;结果发现这根本不是bug。原因明确&#xff0c;误报就会降低 多个系统交互&#xff0c;可以明确指出是哪个系统的缺陷&#xff0c;防止“踢皮球…...

LeetCode无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “…...

17.2.2 【Linux】通过systemctl观察系统上所有的服务

使用 systemctl list-unit-files 会将系统上所有的服务通通列出来&#xff5e;而不像 list-units 仅以 unit 分类作大致的说明。 至于 STATE 状态就是前两个小节谈到的开机是否会载入的那个状态项目。主要有 enabled / disabled / mask / static 等等。 假设我不想要知道这么多…...

Redis扩容机制与一致性哈希算法解析

在分布式系统设计中&#xff0c;Redis是一个备受欢迎的内存数据库&#xff0c;而一致性哈希算法则是分布式系统中常用的数据分片和负载均衡技术。本文将深入探讨Redis的扩容机制以及一致性哈希算法的原理&#xff0c;同时提供示例代码以帮助读者更好地理解这两个重要概念。 推…...

BDA初级分析——可视化基础

一、可视化的作用 数据可视化——利用各种图形方式更加直观地呈现数据的过程 可视化的作用 1、更快地理解数据&#xff0c;找出数据的规律和异常 2、讲出数据背后的故事&#xff0c;辅助做出业务决策 3、给非专业人士提供数据探索的能力 数据分析问题如何通过可视化呈现&am…...

边缘计算节点BEC典型实践:如何快速上手PC-Farm服务器?

百度智能云边缘计算节点BEC&#xff08;Baidu Edge Computing&#xff09;基于运营商边缘节点和网络构建&#xff0c;一站式提供靠近终端用户的弹性计算资源。边缘计算节点在海外覆盖五大洲&#xff0c;在国内覆盖全国七大区、三大运营商。BEC通过就近计算和处理&#xff0c;大…...

python自动把内容发表到wordpress完整示例及错误解答

要实现 Python 自动将内容发布到 WordPress,可以使用 Python 的 wordpress_xmlrpc 库,该库提供了使用 WordPress XML-RPC API 进行内容发布和管理的功能。 需要安装一下第三方库:wordpress_xmlrpc! pip install python_wordpress_xmlrpc 下面是一个简单的示例代码,可以实…...

【javaweb】学习日记Day6 - Mysql 数据库 DDL DML DQL

之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客 目录 一、概述 1、如何安装及配置路径Mysql&#xff1f; 2、SQL分类 二、DDL 数据定义 1、数据库操作 2、IDEA内置数据库使用 &#xff08;1&…...

企业线上推广公司/上海站群优化

地址链接&#xff1a;https://blog.csdn.net/lx1309244704/article/details/81808788 swagger是一款高效易用的嵌入式文档插件,同时支持在线测试接口&#xff0c;快速生成客户端代码。spring-boot-starter-swagger通过spring-boot方式配置的swagger实现。完美并且完整的支持swa…...

花生壳做局域网站/重庆网站seo教程

关键字&#xff1a; KingbaseES&#xff0c;linux&#xff0c;启动 内容正文&#xff1a; 在linux平台下&#xff0c;KingbaseES数据库服务启动失败&#xff0c;可以按如下步骤查找原因并解决&#xff1a; 使用 systemctl status kingbase8d 命令查看该实例是否已经启动使…...

线上营销网站设计/广东seo推广哪里好

在网上找了好多例子&#xff0c;但是都没有我想要的。我的要求是&#xff0c;程序可以自动完成证书导入然后与服务器交换数据。 网上的例子是可以工作的&#xff0c;前提是要访问的网站的证书已经导入到本机。但是作为java的访问一个未知的https网站&#xff0c;不可能都手动的…...

濮阳市做网站/在百度上怎么打广告

旋转变换 “旋转”属性旋转屏幕表面上的可视元素。 将“旋转”属性设置为以度为单位的角度&#xff08;不是弧度&#xff09;。 正角度顺时针旋转元素。 您可以将“旋转”设置为小于0或大于360的角度。实际旋转角度是旋转属性模数360的值。元素围绕相对于使用AnchorX和AnchorY属…...

做内网网站/seo去哪里学

基于计算机视觉技术的入侵检测通过设计图像处理方法实现对某一动态场景的实时观测&#xff0c;并在场景存在外来入侵情况时向上层管理系统发送入侵检测结果&#xff1b;要求独立编写具有以下功能模块的程序源码&#xff0c; 1&#xff0e; 通过手机/个人笔记本内置摄像机连续…...

朝阳周边网站建设/查询网入口

Keepalived 配置和使用 keepalived主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。keepalived主要目的在于&#xff0c;其自身启动一个服务&#xff0c;能够实现工作在双节点或多个节点上&#xff0c;并且可以在内核生效的ipvs规则其中当…...