C++_第十一周做题总结_继承基础

server/2024/9/20 7:36:52/ 标签: c++, 算法, 开发语言

id:68 A圆和圆柱体积算(继承)

题目描述

定义一个CPoint点类,包含数据成员x,y(坐标点)。

以CPoint为基类,派生出一个圆形类CCircle,增加数据成员r(半径)和一个计算圆面积的成员函数。

再以CCircle做为直接基类,派生出一个圆柱体类CCylinder,增加数据成员h(高)和一个计算体积的成员函数。

生成圆和圆柱体对象,调用成员函数计算面积或体积并输出结果。

输入

输入圆的圆心位置、半径

输入圆柱体圆心位置、半径、高

输出

输出圆的圆心位置 半径

输出圆面积

输出圆柱体的圆心位置 半径 高

输出圆柱体体积

输入样例

0 0 1
1 1 2 3

输出样例

Circle:(0,0),1
Area:3.14
Cylinder:(1,1),2,3
Volume:37.68

题解

  • 首先看Cpoint类的使用,定义两个私有变量用于存储点的横纵坐标,实现的方法有有参构造
  • 然后定义他的派生类CCircle,定义有私有变量半径,实现的方法有构造和计算圆的面积,注意,在派生类的构造里面要给基类的构造函数提供参数,后面的派生类的定义大同小异
  • 在主函数中,输入有关值,然后使用两个派生类作为数据类型定义两个变量,进行有参构造,然后调用计算函数进行计算输出

代码实现

#include <iostream>
using namespace std;class Cpoint
{
protected:int x, y;
public:Cpoint(int x1, int y1); // 构造
};Cpoint::Cpoint(int x1, int y1) // 构造
{x = x1;y = y1;
}class CCircle : public Cpoint
{
protected:int r;
public:CCircle(int r1, int x1, int y1);void calCi(); // 计算圆面积
};CCircle::CCircle(int r1, int x1, int y1): Cpoint(x1, y1)
{r = r1;cout << x << "," << y << ")," << r;
}void CCircle::calCi() // 计算圆面积
{double S;S = 3.14 * r * r;cout << endl << "Area:" << S << endl;
}class CCylinder : public CCircle
{
private:int h;
public:CCylinder(int h1, int r1, int x1, int y1);void calCy(); // 计算体积
};CCylinder::CCylinder(int h1, int r1, int x1, int y1): CCircle(r1, x1, y1)
{h = h1;cout << "," << h << endl;
}void CCylinder::calCy() // 计算体积
{double V, S;S = 3.14 * r * r;V = S * h;cout << "Volume:" << V << endl;
}int main()
{int ix, iy, ir, yx, yy, yr, yh;cin >> ix >> iy >> ir; // 圆的圆心位置、半径cin >> yx >> yy >> yr >> yh; // 圆柱体圆心位置、半径、高cout << "Circle:(";CCircle p1(ir, ix, iy); // 圆的构造p1.calCi();cout << "Cylinder:(";CCylinder p2(yh, yr, yx, yy); // 圆柱的构造p2.calCy();return 0;
}

id:69 B.三维空间的点(继承)

题目描述

定义一个平面上的点C2D类,它含有一个getDistance()的成员函数,计算该点到原点的距离;从C2D类派生出三维空间的点C3D类,它的getDistance()成员函数计算该点到原点的距离。试分别生成一个C2D和C3D的对象,计算它们到原点的距离。
三维空间的两点(x, y, z)和(x1, y1, z1)的距离公式如下:
[(x-x1)2+(y-y1)2+(z-z1)2](1/2)

输入

第一行二维坐标点位置

第二行三维坐标点位置1

第三行三维坐标点位置2

输出

第一行二维坐标点位置到原点的距离

第二行三维坐标点位置1到原点的距离

第三行三维坐标点位置2到原点的距离

第四行三维坐标点位置2赋值给二维坐标点变量后,二维坐标点到原点的距离

输入样例

3 4
3 4 5
6 8 8

输出样例

5
7.07107
12.8062
10

题解

  • 首先看C2D类的定义,首先定义两个私有变量用于存储点的横纵坐标,类中实现的方法有构造和计算距离
  • 然后再定义一个派生类C3D,在这个类里面定义一个私有变量表示z轴坐标,类里面实现构造和计算到原点的距离
  • 在主函数中,输入值,然后按照题目要求用不同的类定义变量,然后调用计算距离函数

代码实现

#include <iostream>
#include <cmath>
using namespace std;class C2D
{
protected:int x, y;
public:C2D(int x1, int y1); // 构造void getDistance(); // 计算该点到原点的距离
};C2D::C2D(int x1, int y1) // 构造
{x = x1;y = y1;
}void C2D::getDistance() // 计算该点到原点的距离
{double dis;dis = sqrt(x * x + y * y);cout << dis << endl;
}class C3D : public C2D
{
private:int z;
public:C3D(int x1, int y1, int z1); // 构造void getDistance(); // 计算该点到原点的距离
};C3D::C3D(int x1, int y1, int z1) // 构造:C2D(x1, y1)
{z = z1;
}void C3D::getDistance() // 计算该点到原点的距离
{double dis;dis = sqrt(x * x + y * y + z * z);cout << dis << endl;
}int main()
{int x1, y1, x2, y2, z2, x3, y3, z3;cin >> x1 >> y1; // 二维cin >> x2 >> y2 >> z2 >> x3 >> y3 >> z3; // 三维C2D c1(x1, y1);c1.getDistance(); // 二维距离输出C3D c2(x2, y2, z2);c2.getDistance();C3D c3(x3, y3, z3);c3.getDistance();C2D c4(x3, y3);c4.getDistance();return 0;
}

id:175 C.学生成绩计算(继承)

题目描述

定义Person类具有姓名、年龄等属性,具有输出基本信息的display函数。

选修《面向对象程序设计》课程的学生在Person类的基础上,派生出子类:免听生和非免听生。子类继承父类成员,新增其他成员、改写display函数。

非免听生具有平时成绩、考试成绩和总评成绩三个属性,总评成绩根据(平时成绩40%+考试成绩60%)计算的结果,85分(包含)以上为A,75分(包含)-85分(不包含)为B,65分(包含)-75分(不包含)为C,60分(包含)-65分(不包含)为D,60分(不包含)以下为F。

免听生只有考试成绩和总评成绩两个属性,总评成绩100%根据考试成绩对应上述等级制成绩。

定义上述类并编写主函数,输入类型符号,若输入R,根据学生基本信息、平时成绩和考试成绩,建立非免听生对象,若输入S,根据学生基本信息、考试成绩,建立免听生对象。计算学生的总评成绩,并输出。

输入

测试次数t

随后每行输入学生类型 相关信息,姓名的最大字符长度为20

输出

每个学生基本信息和总评成绩

输入样例

2
R cindy 18 100 100
S sandy 28 59

输出样例

cindy 18 A
sandy 28 F

题解

  • 首先看Person类的定义,定义两个私有变量,一个用于存储名字,一个用于存储年龄,在类里面实现构造和输出基本信息
  • 然后定义一个Person类的派生类RPerson表示非免听生,定义两个私有变量一个是平时成绩,一个是期末成绩,在类里面实现构造和计算输出
  • 再定义一个Person类的派生类SPerson类表示免听生,定义一个私有变量,表示期末成绩,在类里面实现构造和计算输出
  • 在主函数中,输入相应的值,然后根据题目要求的类型定义不同类型的变量

代码实现

#include <iostream>
using namespace std;class Person
{
protected:string name;int age;
public:Person(string n1, int a1);void display1(); // 输出基本信息
};Person::Person(string n1, int a1)
{name = n1;age = a1;
}void Person::display1() // 输出基本信息
{cout << name << " " << age << " ";
}class RPerson : public Person
{
private:int usual, test;
public:RPerson(int u1, int t1, string n1, int a1); // 构造void display2(); // 输出
};RPerson::RPerson(int u1, int t1, string n1, int a1) // 构造: Person(n1, a1)
{usual = u1;test = t1;
}void RPerson::display2() // 输出
{int ans;ans = usual * 0.4 + test * 0.6;if (ans >= 85){cout << 'A' << endl;}else if (ans >= 75){cout << 'B' << endl;}else if (ans >= 65){cout << 'C' << endl;}else if (ans >= 60){cout << 'D' << endl;}else{cout << 'F' << endl;}
}class SPerson : public Person
{
private:int test;
public:SPerson(int t1, string n1, int a1); // 构造void display3(); // 输出
};SPerson::SPerson(int t1, string n1, int a1) // 构造: Person(n1, a1)
{test = t1;
}void SPerson::display3() // 输出
{int ans;ans = test * 0.6;if (ans >= 85){cout << 'A' << endl;}else if (ans >= 75){cout << 'B' << endl;}else if (ans >= 65){cout << 'C' << endl;}else if (ans >= 60){cout << 'D' << endl;}else{cout << 'F' << endl;}
}int main()
{int t, i, us, te, age;char type;string name;cin >> t; // 测试次数for (i = 0; i < t; i++){cin >> type;if (type == 'R') // 非免听生{cin >> name >> age >> us >> te;RPerson p1(us, te, name, age);p1.display1();p1.display2();}else // 免听生{cin >> name >> age >> te;SPerson p2(te, name, age);p2.display1();p2.display3();}}return 0;
}

id:73 D.时钟模拟(继承)

题目描述

定义计数器类,包含保护数据成员value,公有函数increment计数加1。

定义循环计算器继承计数器类,增加私有数据成员:最小值minValue,maxValue,

重写公有函数increment,使得value在minValue~maxValue区间内循环+1。

定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,公有函数time(int s)计算当前时间经过s秒之后的时间,即hour,minute,second的新value值。

定义时钟类对象,输入当前时间和经过的秒数,调用time函数计算新时间。

根据题目要求,增加必要的构造函数、析构函数和其他所需函数。

因为clock和time是系统内置函数,为了避免重名,请不要使用clock或者time作为类名或者函数名

输入

第一行测试次数n

2行一组,第一行为当前时间(小时 分钟 秒),第二行为经过的秒数。

输出

输出n行

每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。

输入样例

2
8 19 20
20
23 30 0
1801

输出样例

8:19:40
0:0:1

题解

  • 首先看Counter类,类里面定义一个整形的私有变量表示 值,实现的功能是让这个值加一,且将Clock类视为友元类
  • 然后定义一个Counter类的派生类Cire,在这个类里面定义两私有变量,最大值和最小值,表示这个变量的最大值和最小值,这个类实现的方法有构造,还有使得value在minValue~maxValue区间内循环加一,即是当value的值大于等于最大值时,value的值变为最小值,因为时分秒没有等于最大值的说法。因为基类的实现里面没有构造函数,所以派生类的构造函数不需要给基类传递参数,即不需要初始化基类的参数
  • 然后额外定义一个Clock类,定义Cire类型的三个私有变量,定义成这个类型是为了能使用这个Cire类里面的函数进行在范围内的value的值的加一操作,这个类的实现有构造和计算当前时间经过s秒之后的时间,构造函数中,因为变量的类型是Cire类型,所以首先要给Cire类的构造函数传递参数,调用Cire的构造函数初始化时分秒的最大值的最小值,然后因为时分秒是Cire类型的,所以其存在成员value,所以也需要对这个value值,即时分秒的大小初始化,即为参数的值
  • Clock类里面计算函数的过程是,因为调用的increment函数可以使得这个值在范围内加一,所以我们不需要考虑轮回的情况,直接把传入的,所需要加上的秒数作为循环的判断依据,在循环的内部,使用秒的变量调用increment函数首先实现秒的增加,因为秒的增加会影响到分的增加,再影响到时的增加,反之则不会,调用后对这个秒的大小进行判断,如果这个值等于0,则说明这个秒转了一轮,相应的分钟就要加一,加一则是调用分的increment函数进行操作,如果不等于0,则进入循环的下一轮,如果分钟等于0,同理,调用时的increment函数对时的大小进行加一操作,然后进行输出
  • 在主函数中,读取输入进来的数,然后定义一个Clock的对象,进行有参构造,然后调用计算函数计算加秒数之后的时间

遇到的问题

在写计算加秒数后的的时间时,把时分秒进行割裂计算,导致当秒走过一轮后没有对分钟进行加一操作,单纯的把秒数换算成秒,分,时分别要进行多少次加一操作,后面考虑到存在秒数走过一轮后会对分钟产生影响,但是没有懂得从循环内部进行操作,没有思考到当秒数等于0时,即为转过了一轮,反而考虑在循环外部操作,从而导致无从下手,焦头烂额

代码实现

#include <iostream>
using namespace std;
class Clock;class Counter
{
protected:int value;
public:void increment(); // 计数加1friend Clock;
};void Counter::increment() // 计数加1
{value++;
}class Cire : public Counter // 继承
{
private:int minValue, maxValue;
public:Cire(int min1, int max1); // 构造void increment(); // 使得value在minValue~maxValue区间内循环+1
};Cire::Cire(int min1, int max1) // 构造
{minValue = min1;maxValue = max1;
}void Cire::increment() // 使得value在minValue~maxValue区间内循环+1
{value++;if (value >= maxValue){value = minValue;}
}class Clock
{
private:Cire hour, minute, second;
public:Clock(int h1, int m1, int s1);void time(int s); // 计算当前时间经过s秒之后的时间
};Clock::Clock(int h1, int m1, int s1): hour(0, 24), minute(0, 60), second(0, 60)
{hour.value = h1;minute.value = m1;second.value = s1;
}void Clock::time(int s) // 计算当前时间经过s秒之后的时间
{int i;for (i = 0; i < s; i++){second.increment();if (second.value == 0){minute.increment();if (minute.value == 0){hour.increment();}}}cout << hour.value << ":" << minute.value << ":";cout << second.value << endl;
}int main()
{int n, i, h, m, s, ss;cin >> n;for (i = 0; i < n; i++){cin >> h >> m >> s >> ss;Clock c1(h, m, s); // 构造初始化c1.time(ss); // 重新计算时间}return 0;
}

id:74 E.新旧身份证(继承)

题目描述

按下述方式定义一个日期类CDate和描述15位身份证号的旧身份证类COldId:

class CDate
{
private:int year, month, day;
public:CDate(int, int, int);bool check(); //检验日期是否合法bool isLeap();void print();
};class COldId
{
protected:char* pId15, * pName; //15位身份证号码,姓名CDate birthday; //出生日期
public:COldId(char* pIdVal, char* pNameVal, CDate& day);bool check(); //验证15位身份证是否合法void print();~COldId();
};

然后以COldId为基类派生18位身份证号的新身份证类CNewId,并增加3个数据成员:pId18(18位号码)、issueDay(签发日期)和validYear(有效期,年数),并重新定义check()和print()。

15位身份证号扩展为18位身份证号的规则为:前6位号码保持一致,年份由2位变为4位(在前面加上19,例如88变为1988),剩余号码都保持一致,再加上第18位校验码。

身份证第18位校验码的生成方法:

  1. 将身份证号码前17位数分别乘以7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2。然后将其相加。

  2. 将17位数字与系数乘加的和除以11,得到余数。

  3. 余数与校验码的对应关系为1,0,X,9,8,7,6,5,4,3,2。也即:如果余数是3,身份证第18位就是9。如果余数是2,身份证的最后一位号码就是X。

主函数定义一个派生类对象,并用派生类对象调用check(),若返回false则输出“illegal id”否则调用print()输出身份证信息。check()对身份证合法性进行验证的规则:

  1. 确认18位号码是从15位号码扩展的,且第18位校验码正确.

  2. 身份证中的出生日期合法.

  3. 身份证号码中不含非法字符.

  4. 身份证号码的长度正确.

  5. 身份证目前处于有效期内,假设当前日期为2021年11月9日。

  6. 签发日期合法

输入

测试数据的组数 t

第一个人姓名、出生日期年月日、15位身份证号码、18位身份证号码、签发日期年月日、有效期(100年按长期处理)

第二个人姓名、出生日期年月日、15位身份证号码、18位身份证号码、签发日期年月日、有效期(100年按长期处理)

姓名的最大字符长度为20

输出

第一个人姓名

第一个人18位身份证号信息(号码、签发日期和有效期)或"illegal id"

第二个人姓名

第二个人18位身份证号信息(号码、签发日期和有效期)或"illegal id"

输入样例

10
AAAA 1988 2 28 440301880228113 440301198802281133 2006 1 20 20
BBBB 1997 4 30 440301980808554 440301199808085541 2015 2 2 10
CCCC 1920 5 8 530102200508011 53010219200508011X 1980 3 4 30
DDDD 1980 1 1 340524800101001 340524198001010012 1998 12 11 20
EEEE 1988 11 12 110203881112034 110203198811120340 2007 2 29 20
FFFF 1964 11 15 432831641115081 432831196411150810 2015 8 7 100
GGGG 1996 12 10 44030196121010 44030119961210109 2014 6 7 20
HHHH 1988 7 21 440301880721X12 44030119880721X122 2006 5 11 20
IIII 1976 3 30 440301760330098 440301197603300983 2003 4 15 20
JJJJ 1955 9 5 440301550905205 440301195509051052 2004 6 4 100

输出样例

AAAA
440301198802281133 2006年1月20日 20年
BBBB
illegal id
CCCC
illegal id
DDDD
illegal id
EEEE
illegal id
FFFF
432831196411150810 2015年8月7日 长期
GGGG
illegal id
HHHH
illegal id
IIII
illegal id
JJJJ
illegal id

题解

  • 首先看CDate类,类里面定义了三个私有变量,年月日,实现的方法有构造,检验日期是否合法,判断是否是闰年,打印日期,然后把CNewId类视为友元类,在检验日期是否合法的函数中,主要是检验这个日期是否超过当前题目说明的日期,然后判断这个月份是否超过了一月或者十二月,还有这个天数是否在正常的天数内,注意,返回bool类型的函数,即使每一个判断语句都有返回true或者false,函数的最后仍然要返回一个true或者false
  • 然后看COldId类,在类里面定义三个私有变量,15位身份证号码,姓名和出生日期,其中,出生日期是CDate类,实现的方法是构造,验证15位身份证是否合法和析构,在构造里面输出姓名,煮波赌15位身份证一定正确,所以bool COldId::check()函数返回true
  • 再定义一个派生类CNewId,定义三个私有变量,18位号码,签发日期和有效期年数,实现的方法是构造,验证18位身份证是否合法,输出和析构,在构造函数中,因为基类存在构造函数,所以派生类的构造函数需要给基类的构造函数提供参数
  • 在验证18位身份证是否合法的函数中,因为余数与校验码的对应关系中存在字符型,所以我们需要将这个数组定义为char类型,注意,里面的数字也需要用单引号,首先我们需要检验确认18位号码是从15位号码扩展的,所以需要一位位的对比,然后在这个循环里面检验不含非法字符,及全部都是数字,然后顺便计算验证码,注意,18位身份证的类型是字符型,所以要把他们转换为数字,得到校验码后检验是否正确,再检验长度是否正确,检查出生日期合法,检查签发日期合法性,检查身份证是否在有效期内
  • 在主函数中,进行数据输入,然后有参构造,控制输出

遇到的问题

余数与校验码的对应关系中的数组中的数字没有用单引号,计算校验码时,没有把18位身份证转换为数字来进行计算

代码实现

#include <iostream>
#include <cstring>
using namespace std;class CDate
{
private:int year, month, day;
public:CDate(int y1, int m1, int d1);bool check();  // 检验日期是否合法bool isLeap(); // 判断闰年void print();friend class CNewId;
};CDate::CDate(int y1, int m1, int d1)
{year = y1;month = m1;day = d1;
}bool CDate::check() // 检验日期是否合法
{// 检查年份是否有效if (year > 2021){return false;}else if (year == 2021){if (month > 11 || (month == 11 && day > 9)){return false;}}// 检查月份是否有效if (month < 1 || month > 12){return false;}// 检查天数是否有效int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (isLeap()){daysInMonth[1] = 29;}if (day < 1 || day > daysInMonth[month - 1]){return false;}return true;
}bool CDate::isLeap() // 判断闰年
{return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}void CDate::print()
{cout << year << "年" << month << "月" << day << "日 ";
}class COldId
{
protected:char *pId15, *pName; // 15位身份证号码,姓名CDate birthday;		 // 出生日期
public:COldId(char *pIdVal, char *pNameVal, CDate &day);bool check(); // 验证15位身份证是否合法~COldId();
};COldId::COldId(char *pIdVal, char *pNameVal, CDate &day): birthday(day)
{int len;pId15 = new char[16];strncpy(pId15, pIdVal, 15);pId15[15] = '\0';len = strlen(pNameVal);pName = new char[len + 1];strncpy(pName, pNameVal, len);pName[len] = '\0';cout << pName << endl; // 输出姓名
}bool COldId::check() // 验证15位身份证是否合法
{return true;
}COldId::~COldId()
{delete[] pId15;delete[] pName;
}class CNewId : public COldId
{
private:char *pId18;	// 18位号码CDate issueDay; // 签发日期int validYear;	// 有效期,年数
public:CNewId(char *pId18, CDate &iss, int valid, char *pId15, char *name, CDate birth);bool check(); // 验证18位身份证是否合法void print();~CNewId();
};CNewId::CNewId(char *pId, CDate &iss, int valid, char *pId15, char *name, CDate birth): COldId(pId15, name, birth), issueDay(iss)
{pId18 = new char[19];strncpy(pId18, pId, 18);pId18[18] = '\0';validYear = valid;
}bool CNewId::check() // 验证18位身份证是否合法
{int code, i, biryear;int a[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};char b[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};code = 0;for (i = 0; i < 17; i++){if (i < 6) // 确认18位号码是从15位号码扩展的{if (pId18[i] != pId15[i]){return false;}}if (i > 7 && i < 15){if (pId18[i] != pId15[i - 2]){return false;}}if (pId18[i] < '0' || pId18[i] > '9') // 不含非法字符{return false;}code += (pId18[i] - '0') * a[i];}code %= 11;if (b[code] != pId18[17]) // 第18位校验码不正确{return false;}if (strlen(pId18) != 18) // 长度正确{return false;}// 检查出生日期合法biryear = (pId18[6] - '0') * 1000 + (pId18[7] - '0') * 100 + (pId18[8] - '0') * 10 + (pId18[9] - '0');if (biryear != birthday.year){return false;}if (!issueDay.check()) // 检查签发日期合法性{return false;}if (issueDay.year + validYear < 2021) // 检查身份证是否在有效期内{return false;}else if (issueDay.year + validYear == 2021){if (issueDay.month < 11 || (issueDay.month == 11 && issueDay.day < 9)){return false;}}return true;
}void CNewId::print()
{cout << pId18 << " ";issueDay.print();if (validYear != 100){cout << validYear << "年" << endl;}else{cout << "长期" << endl;}
}CNewId::~CNewId()
{delete[] pId18;
}int main()
{int t, i, y1, m1, dd1, y2, m2, dd2, date, result;char *name, *num15, *num18;name = new char[21];num15 = new char[16];num18 = new char[19];cin >> t;for (i = 0; i < t; i++){cin >> name >> y1 >> m1 >> dd1 >> num15 >> num18;cin >> y2 >> m2 >> dd2 >> date;CDate d1(y1, m1, dd1); // 生日CDate d2(y2, m2, dd2); // 签发日期CNewId id2(num18, d2, date, num15, name, d1);result = id2.check();if (result == 1){id2.print(); // 输出}else{cout << "illegal id" << endl;}}delete[] name;delete[] num15;delete[] num18;return 0;
}

http://www.ppmy.cn/server/42310.html

相关文章

摸鱼大数据——大数据导论

大数据导论 1、概念 大数据时代: 万物皆数据 ​ 数据概念: 人类的行为及产生的事件的一种记录称之为数据 ​ 数据价值: 对数据的内容进行深入分析&#xff0c;可以更好的帮助了解事和物在现实世界的运行规律 2、大数据诞生 大数据的诞生: 跟随着互联网的发展的,当全球互联…

Windows下配置TortoiseGit 访问Ubuntu虚拟机下Samba共享目录

前言&#xff1a; 本文记录学习使用 Git 版本管理工具的学习笔记&#xff0c;通过阅读参考链接中的博文和实际操作&#xff0c;快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: 【TortoiseGit】TortoiseGit安装和配置详细说明-CSDN博客 Git版本管理可视…

【eclipse】如何在IDE里创建一个Java Web项目?

如何在eclipse中创建一个动态Web项目并成功运行&#xff1f; 一、 最终效果 懒得写那么多了…我也不知道该怎么写了&#xff0c;有点乱&#xff0c;有问题可以在评论里留言&#xff0c;我看到会解决的&#xff0c;在这个过程中也踩到了一些坑&#xff0c;但好在有CSDN帮助解决…

NFTScan 升级 Bitcoin NFT 浏览器,全面优化 NFT 数据解析体系

2024 年 5 月 16 号&#xff0c;NFTScan 团队正式全面升级了 Bitcoin NFT 浏览器。随着 Ordinals 铭文生态的崛起开始&#xff0c;Bitcoin 链上活动极大增加&#xff0c;市场被广泛认可&#xff0c;NFT 生态逐渐蓬勃发展。此次 Bitcoin NFTScan 浏览器对 Ordinals 铭文板块进行…

每天一个数据分析题(三百一十三)-漏斗模型

漏斗模型帮助我们理解各不同业务阶段特征&#xff0c;下列哪项不适合用来观测漏斗模型的结果 A. 斜率 B. 粗细 C. 流速 D. 阶段数量 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案

微信公众号自定义分销商城小程序源码系统 带完整的安装代码吧以及系统部署搭建教程

系统概述 微信公众号自定义分销商城小程序源码系统是一款功能强大的电商解决方案&#xff0c;它集成了商品管理、订单处理、支付接口、分销管理等多种功能。该系统支持自定义界面设计&#xff0c;商家可根据自身需求调整商城的页面布局和风格&#xff0c;打造独特的品牌形象。…

Android security知识点总结

Linux sepolicy uses ipk package, each binary has three sepolicy files, they are if (interface), fc (file context), te. opkg install selinux.ipk 1 Chain of Trust 1.1 qcom efuse 对bootloader签名&#xff0c;熔丝文件&#xff1a;sec.dat 1&#xff09;烧写signed …

LeetCode 3题:无重复字符的最长子串(原创)

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

可微分矢量图形光栅化用于编辑和学习

图1. 我们引入了一种通过反向传播将光栅和矢量域联系起来的矢量图形可微分光栅化器。可微分光栅化实现了许多新颖的矢量图形应用。&#xff08;a&#xff09;在几何约束下&#xff0c;通过局部优化图像空间度量&#xff08;如不透明度&#xff09;来实现交互式编辑。&#xff0…

ClickHouse快速上手

1. 项目目标 &#xff08;1&#xff09;了解ClickHouse特性与优势 &#xff08;2&#xff09;熟练掌握ClickHouse安装部署 &#xff08;3&#xff09;熟练掌握ClickHouse基本用法 2. 项目准备 2.1. 规划节点 主机名 主机IP 节点规划 clickhouse 10.0.1.10 clickhouse…

Redis教程(九):Redis中Hash类型的常用命令

Hash操作&#xff1a; 往Hash中添加两个<key,value>数据&#xff0c;如果没有&#xff0c;自动创建一个Hash结构 hset myhash name dingdada age 23 获取hash中的指定key&#xff0c;获取hash中key是name的值 hget myhash name 获取hash中所有的值&#xff0c;包含k…

【数据结构】第一章 顺序表:顺序表静态分配和动态分配增删改查基本操作的基本介绍及c语言代码实现

文章目录 1.顺序表的定义2.顺序表的实现--静态分配2.1 顺序表的定义2.2 顺序表的初始化2.3 顺序表的插入2.4 顺序表的删除2.5 顺序表的按值查找和按位查找 3.顺序表的实现--动态分配3.1 顺序表的定义3.2 顺序表的初始化3.3 增加动态数组的长度3.4 删除插入按位查找按值查找操作…

【前端系列】什么是yarn

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

鸿蒙HDC命令行工具:模拟操作

模拟操作 uinput用于输入模拟操作&#xff0c;其命令帮助手册为&#xff1a; > hdc shell uinput --help Usage: uinput <option> <command> <arg>... The option are: -M --mouse //模拟鼠标操作 commands for mouse: -m <dx> <d…

看langchain代码之前必备知识之 - python多进程信号接收与处理

文章目录 前言一、示例代码1. 注册信号2.信号处理函数1&#xff09;普通写法2&#xff09;闭包写法 3. 对终止信号的重写1&#xff09;终止前关闭资源2&#xff09;不关闭只抛出异常 二、补充知识点1. signal.SIGTERM 和 signal.SIGINT的区别2. Process(targettask, daemonTrue…

蓝队面试题(二)

应急响应基本思路和流程 收集信息:收集客户信息和中毒主机信息,包括样本 判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS 等等 抑制范围:隔离使受害⾯不继续扩⼤ 深入分析:日志分析、进程分析、启动项分析、样本分析方便后期溯源 清理处置:杀掉…

【免费】2024年全新超强版本itvboxfast如意版影视APP源码 TV+手机双端后台PHP源码

首先&#xff0c;让我们了解一下ITVBox如意版影视源码的特点和优势。这一源码基于先进的技术和框架开发&#xff0c;具有稳定、高效的性能&#xff0c;能够满足影视网站的各种需求。与此同时&#xff0c;该源码还提供了丰富的功能和模块&#xff0c;包括影视资源管理、会员系统…

基于Spring Boot的酒店管理系统设计与实现

基于Spring Boot的酒店管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统首页界面图&#xff0c;在系统首页可以查看首页…

【3dmax笔记】022:文件合并、导入、导出

文章目录 一、合并二、导入三、导出四、注意事项一、合并 只能合并 max 文件(高版本能够合并低版本模型,低版本不能合并高版本的模型)。点击【文件】→【导入】→【合并】: 选择要合并的文件,后缀名为3dmax默认的格式,max文件。 二、导入 点击【文件】→【导入】→【导…

TDN: Temporal Difference Networks for Efficient Action Recognition 论文阅读

TDN: Temporal Difference Networks for Efficient Action Recognition 论文阅读 Abstract1. Introduction2. Related work3. Temporal Difference Networks3.1. Overview3.2. Short-term TDM3.3. Long-term TDM3.4. Exemplar: TDN-ResNet 4. ExperimentsAblation studiesCompa…