深圳大学计软《面向对象的程序设计》实验7 拷贝构造函数与复合类
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;elsecout << "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;elsecout << "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" ;elsecout << "-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,然后把号码扩展,规则如下:
-
原15位身份证的第7位到12位表示出生年月日,每个两位;把年份的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');elseid.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];elsefor (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;elsecout << "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;elsecout << "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();elsec.DELETE();}c.print();}return 0;
}
相关文章:
深圳大学计软《面向对象的程序设计》实验7 拷贝构造函数与复合类
A. Point&Circle(复合类与构造) 题目描述 类Point是我们写过的一个类,类Circle是一个新的类,Point作为其成员对象,请完成类Circle的成员函数的实现。 在主函数中生成一个圆和若干个点,判断这些点与圆的位置关系,…...
Java的JVM(Java虚拟机)参数配置
JVM原理 (1)jvm是java的核心和基础,在java编译器和os平台之间的虚拟处理器,可在上面执行字节码程序。 (2)java编译器只要面向jvm,生成jvm能理解的字节码文件。java源文件经编译成字节码程序&a…...
leetcode 困难 —— 数据流的中位数(优先队列)
题目: 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() 初始化…...
7个常用的原生JS数组方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 7个常用的原生JS数组方法一、Array.map()二、Array.filter三、Array.reduce四、Array.forEach五、Array.find六、Array.every七、Array.some总结一、Array.map() 作用&#…...
一、一篇文章打好高数基础-函数
1.连续函数的性质考点分析函数的连续性主要考察函数的奇偶性、有界性、单调性、周期性。例题判断函数的奇偶性的有界区间为() A.(-1,0) B(0,1) C(1,2) D(2,3)2.闭区间上连续函数的性质考点分析闭区间上连续函数的性质主要考察函数的最大最小值定理、零点…...
pipenv的基本使用
一. pipenv 基础 pipenv安装: pip install pipenvpipenv常用命令 pipenv --python 3 # 创建python3虚拟环境 pipenv --venv # 查看创建的虚拟环境 pipenv install 包名 # 安装包 pipenv shell # 切换到虚拟环境中 pip list # 查看当前已经安装的包࿰…...
OpenCV入门(三)快速学会OpenCV2图像处理基础
OpenCV入门(三)快速学会OpenCV2图像处理基础 1.颜色变换cvtColor imgproc的模块名称是由image(图像)和process(处理)两个单词的缩写组合而成的,是重要的图像处理模块,主要包括图像…...
基于PySide6的MySql数据库快照备份与恢复软件
db-camera 软件介绍 db-camera是一款MySql数据库备份(快照保存)与恢复软件。功能上与dump类似,但是提供了相对有好的交互界面,能够有效地管理导出的sql文件。 使用场景 开发阶段、测试阶段,尤其适合单人开发的小项目…...
BI不是报表,千万不要混淆
商业智能BI作为商业世界的新宠儿,在市场上实现了高速增长并获得了各领域企业的口碑赞誉。 很多企业把商业智能BI做成了纯报表,二维表格的数据展现形式,也有一些简单的图表可视化。但是这些简单的商业智能BI可视化报表基本上只服务到了一线的…...
sizeof以及strlen的用法以及注意事项
大家都知道,在c中算字符串长度和所占空间大小事不可避免的,甚至再有的时候,我们在写代码的过程中,就会用到这些数据。比如,下面这道题 struct Test { int Num; char *pcName; short sDate; char cha[2]; short sBa[4];…...
数据结构-链表-单链表(3)
目录 1. 顺序表的缺陷 2. 单链表 2.1 单链表的基本结构与接口函数 2.2 重要接口 创建新节点的函数: 2.2.1 尾插 2.2.2 头插 2.2.3 尾删 2.2.4 头删 2.2.5 查找 2.2.6 插入 2.2.7 删除 2.2.8 从pos后面插入 2.2.9 从pos后面删除 3. 链表的缺陷与优势&…...
【SpringBoot初级篇】JdbcTemplate常用方法
【SpringBoot初级篇】JdbcTemplate常用方法JdbcTemplate 查询JdbcTemplate 插入、更新、删除execute执行任意的SQLNamedParameterJdbcTemplate函数场景说明update(String sql, Nullable Object… args)增,删,改queryForObject(sql, Integer.class)查询返…...
React(三):脚手架、组件化、生命周期、父子组件通信、插槽、Context
React(三)一、脚手架安装和创建1.安装脚手架2.创建脚手架3.看看脚手架目录4.运行脚手架二、脚手架下从0开始写代码三、组件化1.类组件2.函数组件四、React的生命周期1.认识生命周期2.图解生命周期(1)Constructor(2&…...
[教程]使用 Git 克隆指定分支
Git 是我们开发过程中经常使用到的版本管理工具,在平常情况下我们从远程克隆的时候会将整个库克隆下来,这会包括整个版本库的历史提交记录和远程库里的所有分支。但在一些情况下,比如我们并不需要查看历史提交记录而只是希望能够获取到最新的代码&#x…...
Redis实现服务注册与服务发现源码阅读(Go语言)
Redis实现服务注册与服务发现源码阅读 背景 近期在看开源项目CloudWeGo中看到目前GoLang微服务框架Hertz中支持通过Redis实现服务注册与服务发现功能。便想着阅读下源码 源码阅读 gut clone了hertz-contrib后看到在一级目录下有目前各种主流的服务注册与发现的实现方案。为…...
论文复现-3
模型构建中的运算 数据集是CONLL03 这个数据集共有4种实体类型,所以,在做实体描述的embedding时,得到的语义表示的Tensor大小为 : 4*max_len, 具体指的是: type_input_ids: torch.LongTensor None, type_attention_m…...
667知识点 | 经过三年实战检验的667知识清单
文章目录 前言第一章 信息与信息资源第二章 信息社会第三章 信息交流第四章 信息技术第五章 信息组织第六章 信息管理活动第七章 信息资源人文管理第八章 信息资源经济管理第九章 信息资源系统管理第十章 信息资源管理专门化前言 参考书目:《信息管理导论(第三版)》党跃武推…...
后端快速上手前端三剑客 HtmlCSSJavaScript
文章目录前言HTML1.基础标签2.多媒体标签:3.表格&列表&布局4.表单CSS1.简介2.导入方式3.选择器JavaScript1.简介2.引入方式3.基本语法4.对象(1) 基本对象(2) BOM对象(3) DOM对象5.事件前言 结构:HTML 表现:CSS 行为:Java…...
Cdiscount、Allegro如何利用测评补单自养号提升店铺权重和流量
Allegro成立于 1999 年是在波兰最受欢迎的电商平台,75%的波兰人都知道该网站,Allegro的品牌认知度在波兰高达98%。Allegro平台卖家的数量目前还是比较少的约为13万,最重要的就是中国卖家占比少,所以竞争也比较低,像是美…...
第16天-性能压测:压力测试,性能监控,优化QPS,Nginx动静分离
1.性能监控 1.1.JVM架构 运行时数据区: 方法区:最重要的内存区域,多线程共享,保存了类的信息(名称、成员、接口、父类),反射机制是重要的组成部分,动态进行类操作的实现;…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
