深圳大学计软《面向对象的程序设计》实验7 拷贝构造函数与复合类

news2025/1/19 17:23:17

A. Point&Circle(复合类与构造)

题目描述

在这里插入图片描述

类Point是我们写过的一个类,类Circle是一个新的类,Point作为其成员对象,请完成类Circle的成员函数的实现。

在主函数中生成一个圆和若干个点,判断这些点与圆的位置关系,如果点在圆内(包括在圆的边上),输出“inside”,否则输出"outside";然后移动圆心的位置,再次判断这些点与圆的位置关系。

输入

圆的x坐标 y坐标 半径

点的个数n

第一个点的x坐标 y坐标

第二个点的x坐标 y坐标

第n个点的x坐标 y坐标

圆心移动到的新的x坐标 y坐标

输出

第一个点与圆的关系

第二个点与圆的关系

第n个点与圆的关系

after move the centre of circle

圆心移动后第一个点与圆的关系

圆心移动后第二个点与圆的关系

圆心移动后第n个点与圆的关系

输入样例1

0 0 5
4
1 1
2 2
5 0
-6 0
-1 0

输出样例1

inside
inside
inside
outside
after move the centre of circle:
inside
inside
outside
inside

AC代码

#include<bits/stdc++.h>
using namespace std;

class Point {
	double x, y;
public:
	Point() {}

	Point(double x,double y):x(x),y(y){}

	double getX() { return x; }
	double getY() { return y; }

	double getDisTo(Point& p) {
		return sqrt(pow(x - p.x, 2) + pow(y - p.y,2));
	}

	void setXY(int x,int y){
		this->x = x;
		this->y = y;
	}

	~Point(){}
};

class Circle {
	Point centre;
	double radius;
public:
	Circle() {}

	Circle(double x, double y, double r) {
		centre.setXY(x, y);
		radius = r;
	}

	double getArea() {
		return 2.1415926 * radius * radius;
	}

	void moveCentreTo(double x1, double y1) {
		centre.setXY(x1, y1);
	}

	bool isContain(Point &p) {
		double distance = centre.getDisTo(p);
		return distance <= radius;
	}

};

int main() {
	int x, y, r;
	cin >> x >> y >> r;
	Circle c(x, y, r);
	int n;
	cin >> n;
	vector<Point>v(n);
	
	for (auto& it : v) {
		cin >> x >> y;
		it.setXY(x, y);
		if (c.isContain(it))
			cout << "inside" << endl;
		else
			cout << "outside" << endl;
	}
	cin >> x >> y;
	c.moveCentreTo(x, y);
	cout << "after move the centre of circle:" << endl;
	for (auto& it : v) {
		if (c.isContain(it))
			cout << "inside" << endl;
		else
			cout << "outside" << endl;
	}
	return 0;
}

B. Complex(类与对象+构造)

题目描述

编写一个复数类,能实现加、减运算,能输出复数的信息。 要求至少包含以下方法:

1、缺省(无参)构造函数,设置实部与虚部为1;

2、有参构造函数,给实部与虚部赋值;

3、加法运算,计算两个复数的和;

4、减法运算,计算两个复数的差;

5、输出方法,输出当前复数的值

输入

测试数据的组数t 第一组的两个复数的实部 虚部 实部 虚部 第二组的两个复数的实部 虚部 实部 虚部 …

输出

第一组两个复数的和 第一组两个复数的差

输入样例1

4
2 1 2 1
2 1 2 -1
3 1 2 -6
3 3 2 2

输出样例1

sum:4+2i
remainder:0
sum:4
remainder:2i
sum:5-5i
remainder:1+7i
sum:5+5i
remainder:1+i

AC代码

#include<bits/stdc++.h>
using namespace std;

class Complex
{
public:
	Complex();
	Complex(int, int);
	~Complex();
	Complex add(Complex&);
	Complex sub(Complex&);
	void display();


private:
	int a, b;
};

Complex::Complex()
{
	a = b = 0;
}

Complex::Complex(int a, int b) :a(a), b(b)
{
}

Complex::~Complex()
{
}

Complex Complex::add(Complex& c1)
{
	return Complex(a + c1.a, b + c1.b);
}

Complex Complex::sub(Complex& c1)
{
	return Complex(a - c1.a, b - c1.b);
}

void Complex::display()
{
	if (!(a || b)) {
		cout << 0 << endl;
		return;
	}

	if (a)
		cout << a;

	if (b > 0) {
		if(a)
		cout << "+";
		if (b != 1)
			cout << b;
		cout << "i" ;

	}
	else if (b < 0) {
		if (b != -1)
			cout << b << "i" ;
		else
			cout << "-i";
	}
	cout << endl;
}

int main() {
	int t;
	cin >> t;
	while (t--)
	{
		int a, b, c, d;
		cin >> a >> b >> c >> d;
		Complex c1(a, b), c2(c, d);
		cout << "sum:";
		c1.add(c2).display();
		cout << "remainder:";
		c1.sub(c2).display();
	}
	return 0;
}

C. 电话号码升位(拷贝构造函数)

题目描述

定义一个电话号码类CTelNumber,包含1个字符指针数据成员,以及构造、析构、打印及拷贝构造函数。

字符指针是用于动态创建一个字符数组,然后保存外来输入的电话号码

构造函数的功能是为对象设置键盘输入的7位电话号码,

拷贝构造函数的功能是用原来7位号码的对象升位为8位号码对象,也就是说拷贝构造的对象是源对象的升级.电话升位的规则是原2、3、4开头的电话号码前面加8,原5、6、7、8开头的前面加2。

注意:合法的电话号码:1、长度为7位;2、电话号码的字符全部是数字字符;3、第一个字符只能是以下字符:2、3、4、5、6、7、8。与上述情况不符的输入均为非法

输入

测试数据的组数 t

第一个7位号码

第二个7位号码

输出

第一个号码升位后的号码

第二个号码升位后的号码

如果号码升级不成功,则输出报错信息,具体看示例

输入样例1

3
6545889
3335656
565655

输出样例1

26545889
83335656
Illegal phone number

AC代码

#include<bits/stdc++.h>
using namespace std;

class CTelNumber {
	string id;
public:
	CTelNumber() {
		cin >> id;
	}

	~CTelNumber()
	{
		id.clear();
	}

	void print() {
		cout << id << endl;
	}

	bool isLeagle() {
		if (id.length() != 7)
			return false;
		for (auto& it : id)
			if (!isdigit(it))
				return false;
		if (id[0] == '0' || id[0] == '1' || id[0] == '9')
			return false;
		return true;
	}

	CTelNumber(const CTelNumber& p) {
		id = p.id;
		if (id[0] >= '2' && id[0] <= '4')
			id = "8" + id;
		else if (id[0] >= '5' && id[0] <= '8')
			id = "2" + id;
	}

};

int main() {
	int t;
	cin >> t;
	while (t--){
		CTelNumber c;
		if (c.isLeagle()) {
			CTelNumber c1(c);
			c1.print();
		}
		else cout << "Illegal phone number" << endl;
	}
	return 0;
}

D. 身份证设定(复合类+拷贝构造)

题目描述

定义一个身份证类PID,包含私有属性:身份证类型、身份证号码、出生日期;另外包含方法:构造、拷贝构造打印等。

身份证类型表示一代身份证或者二代身份证,分别用1和2表示

身份证号码是一个字符串,长度为15或者18

出生日期是一个类,包含私有属性年、月、日,以及构造函数等(根据需要添加其他方法)

构造函数要注意是复合类,要考虑复合类成员的构造

打印函数把身份证的所有属性都输出,输出格式看示例

拷贝构造作用:如果身份证号码是15位的就升级为18位,包括把身份证类型改为2,然后把号码扩展,规则如下:

  1. 原15位身份证的第7位到12位表示出生年月日,每个两位;把年份的2位扩展为四位。

  2. 把扩展后的17个数字求和,取总和的末尾数字,如果末尾数字是0,则将0改为X,然后把这个数字作为第18位

3.如果身份证号码已经是18位,就无需升级

例如身份证123456910203000,表示91年2月3日出生,然后根据类属性出生日期知道是1991年,不是2091年。因此扩展为12345619910203000

接着把17个数字相加得到46,取末尾6,最终扩展为123456199102030006

输入

第一行输入t表示t个示例

第二行输入一个身份证的5个属性,顺序为:类型、号码、出生年、月、日

依次输入t行

输出

采用拷贝构造函数的方法对身份证号码升级,然后输出

输入样例1

3
1 123456910203000 1991 2 3
2 654321200001018889 2000 1 1
1 234567001217000 2000 12 17

输出样例1

type=2 birth=1991.02.03
ID=123456199102030006
type=2 birth=2000.01.01
ID=654321200001018889
type=2 birth=2000.12.17
ID=23456720001217000X

AC代码

#include<bits/stdc++.h>
using namespace std;

class Date {
	int y, m, d;
public:
	Date() {  }
	Date(int y, int m, int d) :y(y), m(m), d(d) {}
	int getYear() { return y; }
	int getMonth() { return m; }
	int getDay() { return d; }
	void init() { cin >> y >> m >> d; }
};


class Pid {
	int type;
	string id;
	Date birthday;
public:
	Pid() {
		cin >> type >> id;
		birthday.init();
	}

	Pid(const Pid& pid) {
		type = pid.type;
		id = pid.id;
		birthday = pid.birthday;
		if (type == 1) {
			id.erase(6, 2);
			id.insert(6, to_string(birthday.getYear()));
			int sum = 0;
			for (auto& it : id) {
				sum += it - '0';
			}
			sum %= 10;
			if (sum == 0)
				id.push_back('X');
			else
				id.push_back(sum + '0');
			type = 2;
		}
	}

	void display() {
		cout << "type=" << type << " ";
		cout << "birth=" << birthday.getYear() << "." << setfill('0') << setw(2) << birthday.getMonth() << "." << setfill('0') << setw(2) << birthday.getDay() << endl;
		cout << "ID=" << id << endl;
	}


};

int main() {
	int t;
	cin >> t;
	while (t--) {
		Pid id;
		Pid update_id(id);
		update_id.display();
	}
	return 0;
}

E. 软件备份(拷贝构造函数)

题目描述

软件作为一种对象也可以用类来描述,软件的属性包括软件名称、类型(分别用O、T和B表示原版、试用版还是备份)、有效截至日期(用CDate类子对象表示)和存储介质(分别用D、H和U表示光盘、磁盘和U盘)等。软件拷贝可通过拷贝构造函数来实现,此时在拷贝构造函数中软件类型改成“B”, 存储介质改为"H",其它不变。试完成该类的拷贝构造、构造和打印(包括从2015年4月7日算起有效期还有多少天,是否过期)成员函数的实现。

当输入软件有效截止日期是0年0月0日,表示无日期限制,为unlimited;当输入日期在2015年4月7日之前,则是过期,表示为expired;如果输入日期在2015年4月7日之后,则显示之后的剩余天数。具体输出信息看输出范例。

附CDate类的实现:

class CDate
{
private:
int year, month, day;
public:
CDate(int y, int m, int d) { year = y; month = m; day = d; }
bool isLeapYear() { return (year%4 == 0 && year%100 != 0) || year%400 == 0; }
int getYear() { return year; }
int getMonth() { return month; }
int getDay() { return day; }
int getDayofYear() //计算日期从当年1月1日算起的天数
{
int i, sum=day;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

if (isLeapYear())
for(i=0;i<month;i++) sum +=b[i];
else
for(i=0;i<month;i++) sum +=a[i];

return sum;
}
};

输入

测试数据的组数 t

第一个软件名称

第一个软件类型 第一个软件介质类型 第一个软件有效期年 月 日

第二个软件名称

第二个软件类型 第二个软件介质类型 第二个软件有效期年 月 日

输出

name: 第一个软件名称

type: 第一个软件类型

media: 第一个软件介质类型

第一个软件2015-4-7后的有效天数

name: 第一个软件名称

type: backup

media: hard disk

第一个软件2015-4-7后的有效天数

输入样例1

3
Photoshop_CS5
O D 0 0 0
Audition_3.0
B U 2015 2 3
Visual_Studio_2010
T H 2015 5 5

输出样例1

name:Photoshop_CS5
type:original
media:optical disk
this software has unlimited use

name:Photoshop_CS5
type:backup
media:hard disk
this software has unlimited use

name:Audition_3.0
type:backup
media:USB disk
this software has expired

name:Audition_3.0
type:backup
media:hard disk
this software has expired

name:Visual_Studio_2010
type:trial
media:hard disk
this software is going to be expired in 28 days

name:Visual_Studio_2010
type:backup
media:hard disk
this software is going to be expired in 28 days

AC代码

#include<bits/stdc++.h>
using namespace std;


class CDate
{
	int year, month, day;
public:
	CDate() {};
	CDate(int y, int m, int d) { year = y; month = m; day = d; }

	CDate(const CDate& c) {
		year = c.year;
		month = c.month;
		day = c.day;
	}

	bool isLeapYear() { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; }
	int getYear() { return year; }
	int getMonth() { return month; }
	int getDay() { return day; }
	int getDayofYear()         //计算日期从当年1月1日算起的天数
	{
		int i, sum = day;
		int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
		int b[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };

		if (isLeapYear())
			for (i = 0; i < month; i++)   sum += b[i];
		else
			for (i = 0; i < month; i++)   sum += a[i];

		return sum;
	}

	void goTomorrow() {
		int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
		if (isLeapYear()) {
			a[2] += 1;
		}
		day++;
		if (day > a[month]) {
			day = 1;
			month++;
		}

		if (month > 12) {
			month = 1;
			year++;
		}
	}

	bool operator!=(CDate& date) {
		if (year != date.year)
			return true;
		if (month != date.month)
			return true;
		if (day != date.day)
			return true;
		return false;
	}

};

class Software {
	string name;
	char type, media;
	CDate ddl;
public:
	Software() {}

	Software(string name, char type, char hard, CDate ddl) {
		this->name = name;
		this->type = type;
		this->media = hard;
		this->ddl = ddl;
	}

	Software(const Software& s) {
		this->name = s.name;
		this->type = 'B';
		this->media = 'H';
		this->ddl = s.ddl;
	}

	string getName() {
		return name;
	}


	bool isOverdue() {
		if (ddl.getYear() < 2015)
			return true;
		if (ddl.getYear() > 2015)
			return false;
		if (ddl.getMonth() < 4)
			return true;
		if (ddl.getMonth() > 4)
			return false;
		if (ddl.getDay() < 7)
			return true;
		if (ddl.getDay() >= 7)
			return false;
	}

	int getRestDay() {
		CDate today(2015, 4, 7);
		int cnt = 0;
		while (today != ddl) {
			cnt++;
			today.goTomorrow();
		}
		return cnt;
	}


	void print() {
		cout << "name:" << name << endl;
		cout << "type:";
		if (type == 'B')
			cout << "backup" << endl;
		else if (type == 'T')
			cout << "trial" << endl;
		else
			cout << "original" << endl;
		cout << "media:";
		if (media == 'H')
			cout << "hard disk" << endl;
		else if (media == 'D')
			cout << "optical disk" << endl;
		else cout << "USB disk" << endl;



		if (!(ddl.getYear() || ddl.getMonth() || ddl.getDay()))
			cout << "this software has unlimited use" << endl;
		else if (isOverdue())
			cout << "this software has expired" << endl;
		else
			cout << "this software is going to be expired in " << getRestDay() << " days" << endl;
		cout << endl;
	}

};

int main() {
	int t;
	cin >> t;
	while (t--) {
		string name;
		char type, media;
		int  year, month, day;
		cin >> name >> type >> media >> year >> month >> day;
		Software s(name, type, media, CDate(year, month, day));
		s.print();
		Software copy_s(s);
		copy_s.print();

	}
	return 0;
}

F. 购物车(复合类)

题目描述

定义一个商品类,包含私有数据成员:商品编号、名称、颜色、尺码、单价、数量。成员函数有:计算总价(单价*数量)、输出商品信息。具体输出格式见样例输出。构造函数及其它函数可根据题目需要自行添加。

定义一个购物车类,包含私有数据成员:商品对象集合、商品总数、购物车所有商品总价。方法有:添加商品、删除商品、减少商品数量、增加商品数量,输出购物车中的商品清单。构造函数及其它函数可根据题目需要自行添加。

编写主函数,定义上述类对象,根据样例的输入、输出实现购物车的简单模拟。

购物车操作分别用ADD、DELETE、UP、DOWN表示,具体格式描述如下:

ADD 商品编号 商品名称 颜色 尺码 单价 数量 //添加1个或多个同类商品,若购物车已有指定编号商品,只需增加数量;若无,添加在购物车首部。

DELETE 商品编号 //删除购物车中给定商品编号的所有商品,不存在删除不成功的情况,即购物车中一定有给定编号的物品。

UP 商品编号 //购物车中商品编号的商品数量加1,不存在操作不成功的情况。

DOWN 商品编号 //购物车中商品编号的商品数量减1,且最小为1。

为更好理解题目,可在京东购物车里试操作。样例中的数据来源于该网站,包括颜色和尺码。为简化题目,假设同一商品不同颜色、尺码,不同编号。

输入

测试次数t

每组测试数据为:

购物车操作次数n,后跟n行操作。

输出

对每组测试数据,输出操作结束后的购物车商品清单,输出格式见样例,商品统计前输出10个-符号。所有测试数据操作结束后的购物车均非空。

输入样例1

1
8
ADD 2018040801 格力变频冷暖空调KFR-26GW 大1匹 变频挂机 2999 1
ADD 2018040802 长虹65D2P高清HDR平板LED液晶 1 1 4799 1
ADD 2018040803 康佳LED55X9人工智能平板电视机 null 55寸 4999 1
UP 2018040802
UP 2018040803
DOWN 2018040803
DELETE 2018040802
ADD 2018040802 长虹65D2P高清HDR平板LED液晶 1 1 4799 2

输出样例1

商品清单:
商品,颜色,尺码,单价,数量,小计
长虹65D2P高清HDR平板LED液晶,1,1,4799.00,2,9598.00
康佳LED55X9人工智能平板电视机,null,55寸,4999.00,1,4999.00
格力变频冷暖空调KFR-26GW,大1匹,变频挂机,2999.00,1,2999.00
----------
4件商品,总商品金额17596.00

AC代码

#include<bits/stdc++.h>
using namespace std;

class Good {
	string id, name, color, size;
	double price;
	int num;
public:
	Good() {
		cin >> id >> name >> color >> size >> price >> num;
	}

	double getSumPrice() {
		return num * price;
	}

	string getId() {
		return id;
	}

	int getNum() {
		return num;
	}

	void display() {
		cout << name << "," << color << "," << size << "," << fixed << setprecision(2) << price << "," << num << "," << fixed << setprecision(2) << getSumPrice() << endl;
	}

	void add(int n = 1) {
		num += n;
	}

	void down() {
		num--;
		if (num < 1)
			num = 1;
	}


};

class Cat {
	list<Good>set;
public:
	Cat() {}

	void ADD() {
		Good new_good;
		for (auto& good : set) {
			if (good.getId() == new_good.getId()) {
				good.add(new_good.getNum());
				return;
			}
		}
		set.push_front(new_good);
	}

	void UP() {
		string new_id;
		cin >> new_id;
		for (auto& good : set) {
			if (good.getId() == new_id) {
				good.add();
				return;
			}
		}
	}

	void DOWN() {
		string new_id;
		cin >> new_id;
		for (auto& good : set) {
			if (good.getId() == new_id) {
				good.down();
				return;
			}
		}
	}

	void DELETE() {
		string s;
		cin >> s;
		for (auto it = set.begin(); it != set.end(); it++)
		{
			if (it->getId() == s) {
				set.erase(it);
				return;
			}
		}
	}


	int getGoodNum() {
		int cnt = 0;
		for (auto& it : set)
			cnt += it.getNum();
		return cnt;
	}

	double getSumPrice() {
		double sum = 0;
		for (auto& it : set) {
			sum += it.getSumPrice();
		}
		return sum;
	}

	void print() {
		cout << "商品清单:" << endl;
		cout << "商品,颜色,尺码,单价,数量,小计" << endl;
		for (auto& it : set) {
			it.display();
		}
		cout << "----------" << endl;
		cout << getGoodNum() << "件商品,总商品金额" << fixed << setprecision(2) << getSumPrice() << endl;
	}

};


int main() {
	int t;
	cin >> t;
	while (t--) {
		Cat c;
		int n;
		cin >> n;
		while (n--) {
			string s;
			cin >> s;
			if (s == "ADD")
				c.ADD();
			else if (s == "UP")
				c.UP();
			else if (s == "DOWN")
				c.DOWN();
			else
				c.DELETE();
		}
		c.print();
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最佳iOS设备管理器imazing 2.16.9官网Mac/Windows下载电脑版怎么下载安装

imazing 2.16.9官网Mac/Windows下载电脑版是款针对苹果设备所打造的管理工具。iMazing为用户提供多种设备管理功能&#xff0c;每一位用户都能以自己的形式管理苹果设备。iMazing与苹果设备连接后&#xff0c;用户就可以轻松传输文件&#xff0c;浏览保存信息等。 应用介绍 iM…

员工入职流程自动化的原因

人和人之间的第一印象非常重要&#xff0c;一段缘分能不能开始&#xff0c;就看第一印象够不够给力了。其实&#xff0c;公司和新员工之间也存在着这样的关系&#xff0c;但也有些许差别。公司对新员工的第一印象&#xff0c;更多是从第一次见面的时候就产生了&#xff0c;而新…

Flutter知识点(三)修改flutter工程名和包名

修改包名, 修改五个地方&#xff1a; debug/AndroidManifest.xml, main/AndroidManifest.xml, profile/AndroidManifest.xml,gradle.build的中application id,原生的android代码&#xff0c; 这一块建议用android工程的方式打开。不然无法使用refactor修改名字。 修改flutter工…

延迟队列实现订单超时自动取消

在上一篇 Java 实现订单未支付超时自动取消&#xff0c;使用Java自带的定时任务TimeTask实现订单超时取消&#xff0c;但是有小伙伴提出这种实现&#xff0c;会有以下几个问题&#xff1a; 线上服务挂了&#xff0c;导致服务下所有的定时任务失效。服务重启&#xff0c;定时任…

buuctf-pwn write-ups (10)

文章目录buu073-hitcontraining_bambooboxbuu074-cmcc_pwnme2buu075-picoctf_2018_got-shellbuu076-npuctf_2020_easyheapbuu077-wdb_2018_2nd_easyfmtbuu078-PicoCTF_2018_can-you-gets-mebuu079-mrctf2020_easy_equationbuu080-ACTF_2019_babystackbuu081-mrctf2020_shellcod…

C语言每日一题】——杨氏矩阵

【C语言每日一题】——倒置字符串&#x1f60e;前言&#x1f64c;杨氏矩阵&#x1f64c;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神贯注的上吧&#xff01;&#xff01;&#xff01; &#x1f60a;作者简介…

WebGL系列教程 — 绘制点(版本2、版本3、版本4、版本5)

目录 0.WebGL简介&#xff1a; 绘制一个点 绘制一个点&#xff08;版本2&#xff09; 绘制一个点&#xff08;版本3&#xff09; 绘制一个点&#xff08;版本4&#xff09; 实现 绘制一个点&#xff08;版本5&#xff09; 0.WebGL简介&#xff1a; WebGL是一种用于在We…

Linux学习第六节-Facl访问控制列表

1.概念 FACL&#xff08;Filesystemctl Access Control List &#xff09; 文件系统访问控制列表&#xff1a;利用文件扩展属性保存额外的访问控制权限&#xff0c;单独为每一个用户量身定制一个权限。 命令格式&#xff1a; setfacl [选项] 归属关系:用户名:权限 目录 常用选…

【数据结构起航】:衡量算法的好坏--时间空间复杂度

时间复杂度和空间复杂度 文章目录时间复杂度和空间复杂度1.算法效率1.1算法复杂度1.2复杂度在OJ里的应用2.时间复杂度2.1时间复杂度的概率2.2大O渐进表示法推导大O阶方法&#xff1a;2.3时间复杂度的举例计算3.空间复杂度3.1空间复杂度的举例计算4.复杂度各量级对比1.算法效率 …

ECharts数据可视化库--导入EChars库

目录 一.ECharts基本认识 二.EChars库导入 1.下载echart.js文件 2.在IDEA引入eharts.js 三.数据可视化绘制 最快乐的学习就是从繁入简&#xff0c;虽然此文章比较简短&#xff0c;但花最少的时间学最多的技能是真的香&#xff0c;点个关注吧&#xff01;这个是数据可视化的…

Kubernetes三 Kubernetes之Pod控制器与service详解

KubernetesPod详解 一 Pod控制器详解 1.1 Pod控制器介绍 Pod是kubernetes的最小管理单元&#xff0c;在kubernetes中&#xff0c;按照pod的创建方式可以将其分为两类&#xff1a; 自主式pod&#xff08;不推荐&#xff09;&#xff1a;kubernetes直接创建出来的Pod&#xf…

MDK Keil查看map文件及编译占用内存信息、函数入口地址

一、在哪里打开map文件查看&#xff08;1&#xff09;第一种&#xff0c;在keil软件下&#xff0c;双击你的工程名&#xff0c;map就会弹出&#xff08;2&#xff09;第二种&#xff0c;点击魔术棒&#xff0c;查看 Lis文件输出的位置入口我的在output...文件下&#xff0c;那我…

努力构建15分钟听力圈,腾讯天籁行动助力听障老人更快融入数字社会

3月3日&#xff0c;腾讯与北京听力协会联合举办线上技术研讨会&#xff0c;以“AI助听技术发展与应用创新”为主题&#xff0c;汇聚国内从事AI助听、辅听相关理论研究及前沿技术落地的专家学者&#xff0c;共同探讨当前人工智能在听力健康领域的研究热点和实践成果。会上&#…

得物供应链复杂业务实时数仓建设之路

1 背景 得物供应链业务是纷繁复杂的&#xff0c;我们既有 JIT 的现货模式中间夹着这大量的仓库作业环节&#xff0c;又有到仓的寄售&#xff0c;品牌业务&#xff0c;有非常复杂的逆向链路。在这么复杂的业务背后&#xff0c;我们需要精细化关注人货场车的效率和成本&#xff…

Malware Dev 03 - 隐匿之 Command Line Spoofing 原理解析

写在最前 如果你是信息安全爱好者&#xff0c;如果你想考一些证书来提升自己的能力&#xff0c;那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里&#xff1a; https://discord.gg/9XvvuFq9Wb我拥有 OSCP&#xff0c;OSEP&#xff0c;OSWE&#xff0c;OSED&…

浅分析BIG-建筑展示系统

一、主页&#xff08;主要界面&#xff09;重点疑点&#xff08;需要解决&#xff09;1.云平台实时同步。是否可以电脑与hololens2同步或链接&#xff1f;并可以传输信息提醒&#xff1f;一级界面&#xff08;启动界面&#xff09;1.交互式启动激活效果&#xff08;触发按钮旋转…

TCP协议三次握手的原因是什么?为什么不用两次握手和4次握手?

今天复习了TCP协议的三次握手&#xff0c;对上一篇C网络编程有了更深的理解。当时考研的时候计网学过&#xff0c;这里再总结一下分享。网图都是截图来的&#xff0c;侵删。TCP协议属于传输层协议&#xff0c;上面的应用层协议包括HTTP、FTP之类&#xff0c;应用层协议是最接近…

Prometheus 监控云Mysql和自建Mysql(多实例)

本文您将了解到 Prometheus如何配置才能监控云Mysql(包括阿里云、腾讯云、华为云)和自建Mysql。 Prometheus 提供了很多种Exporter&#xff0c;用于监控第三方系统指标&#xff0c;如果没有提供也可以根据Exporter规范自定义Exporter。 本文将通过MySQL server exporter 来监控…

通达信波段主图指标公式,源码简洁原理却不简单

通达信波段主图指标公式的核心语句也就4句&#xff0c;后面的语句都是为了画图的。公式看起来比较简单&#xff0c;原理也比较巧妙&#xff0c;但是理解起来有些困难。 直接上源码&#xff1a; HH:HHV(H,5); LL:LLV(L,5); TH:BARSLAST(H>REF(HH,1)); TL:BARSLAST(L<REF(…

K8s(v1.25.1) 高可用集群(3 Master + 5 Node) Ansible 剧本部署(CRI使用docker,cri-docker)

写在前面 分享一个 k8s 高可用集群部署的 Ansible 剧本以及涉及到的一些工具的安装博文内容涉及&#xff1a;从零开始 一个 k8s 高可用 集群部署 Ansible剧本编写&#xff0c;编写后搭建 k8s 高可用 集群一些集群常用的 监控&#xff0c;备份工具安装&#xff0c;包括&#xff…