黄山工程建设信息网站/seo搜索优化工具
✅<1>主页:我的代码爱吃辣
📃<2>知识讲解:C++
🔥<3>创作者:我的代码爱吃辣
☂️<4>开发环境:Visual Studio 2022
💬<5>前言:C++类中一共有六个默认成员函数,今天我们先来将剩下的赋值重载,和取地址重载,以及实现Date类。
目录
一.运算符重载
二.赋值运算符重载格式:
三.前置++和后置++重载
四.const成员
五.取地址及const取地址操作符重载
六. cout 输出类信息
七.Date类实现
(1)Date类的主要功能模块
(2)日期大小比较
(3)日期+天数,日期+=天数,++日期,日期++
(4)日期-日期,日期-天数,日期-=天数
测试
一.运算符重载
C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其
返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。
函数名字为:关键字operator后面接需要重载的运算符符号。
函数原型:返回值类型 operator操作符(参数列表)。
假如我们需要实现一个日期加上一个天数得到一个新的日期,此时按照我们以前的思考方式,是实现一个函数,但是利用运算符重载,会变得更加直观明了
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void show(){cout << _year << "/" << _month << "/" << _day << endl;}int _year;int _month;int _day;
};
//函数判断日期相等
bool DateEqual(const Date& d1, const Date& d2)
{return d1._year == d2._year &&d1._month == d2._month &&d1._day == d2._day;
}
//运算符重载的定义 使用关键字 operator 【运算符】
bool operator==(const Date& d1 ,const Date& d2)
{return d1._year == d2._year &&d1._month == d2._month && d1._day == d2._day;
}
int main()
{Date d2(2022, 4, 23);Date d1(2022, 1, 13);//函数使用if (DateEqual(d1, d2))cout << "true" << endl;elsecout << "false" << endl;//运算符重载的使用if (d1 == d2)cout << "true" << endl;elsecout << "false" << endl;return 0;
}
但是一般我们的成员变量都是私有的,如果是私有的我们就不能直接访问,我们通过添加 get函数来解决,或者通过将运算符重载的函数写道类的里面,变成成员函数,这里我们就直接封装到类里面:
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}// bool operator==(Date* this, const Date& date)// 这里需要注意的是,左操作数是this,指向调用函数的对象bool operator ==(const Date& date){return _year == date._year &&_month == date._month && _day == date._day;}void show(){cout << _year << "/" << _month << "/" << _day << endl;}int _year;int _month;int _day;
};
int main()
{Date d2(2022, 1, 13);Date d1(2022, 1, 13);//运算符重载的使用if (d1 == d2)cout << "true" << endl;elsecout << "false" << endl;return 0;
}
注意:在将运算符重载写成成员成员函数时,重载运算符只需要写一个参数即可,因为有一个参数就是本对象本身,就是隐藏在成员函数列表的this指针。
二.赋值运算符重载格式:
1.参数类型:const T&,传递引用可以提高传参效率
2.返回值类型:T&,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值检测是否自己给自己赋值
3.返回*this :要复合连续赋值的含义
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}Date(const Date& d){_year = d._year;_month = d._month;_day = d._day;}//赋值运算符重载Date& operator=(const Date& d){//如果不是自身赋值,即d1=d1,才需要成员变量对用赋值。if (this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;}void show(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{Date date1;Date date2(2023, 2, 7);date1.show();//因为有返回值就可以实现链式访问(date1 = date2).show();return 0;
}
4. 赋值运算符只能重载成类的成员函数不能重载成全局函数
class Date{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}int _year;int _month;int _day;
};
//赋值运算符重载成全局函数,注意重载成全局函数时没有this指针了,需要给两个参数
Date& operator=(Date& left, const Date& right)
{if (&left != &right){left._year = right._year;left._month = right._month;left._day = right._day;}return left;
}
原因:赋值运算符如果不显式实现,编译器会生成一个默认的。此时用户再在类外自己实现
一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值
运算符重载只能是类的成员函数。
5.用户没有显式实现时,编译器会生成一个默认赋值运算符重载,以值的方式逐字节拷贝。
class Time
{
public:Time(){_hour = 1;_minute = 1;_second = 1;}Time& operator=(const Time& t){if (this != &t){cout << "Time:operator=" << endl;_hour = t._hour;_minute = t._minute;_second = t._second;}return *this;}private:int _hour;int _minute;int _second;
};
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}void show(){cout << _year << "/" << _month << "/" << _day << endl;}
private:// 基本类型(内置类型)int _year ;int _month;int _day;// 自定义类型Time _t;
};
int main()
{Date d1;d1.show();Date d2(2023,2,7);d1 = d2;d1.show();return 0;
}
注意:内置类型成员变量是直接赋值的,而自定义类型成员变.量需要调用对应类的赋值运算符
重载完成赋。
但是对于有空间申请的空间是需要,我们不能光靠编译器自己生成的赋值运算符重载的:
class A
{
public:A(){a = 10;arr = (int*)malloc(sizeof(int) * a);for (int i = 0; i < a; i++){arr[i] = i;}}void show(){for (int i = 0; i < a; i++){cout << arr[i] << " ";}cout << endl;}int* arr;int a;
};
int main()
{A a;A b;a.show();b.show();b = a;//修改b对象的arr数组for (int i = 0; i < b.a; i++){b.arr[i] = 0;}//观察两个对象中arr的元素b.show();a.show();return 0;
}
我们只是修改了b对象的 arr 数组,但是a对象的arr数组也被跟着修改了。
具体的情况是:
三.前置++和后置++重载
我们知道前置++和后置++唯一的区别就是,返回值不同。前置++返回++之后的结果,前置++返回++之后的结果。那么运算符重载以后也应该支持前置++和后置++的特性。
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}// 前置++:返回+1之后的结果// 注意:this指向的对象函数结束后不会销毁,故以引用方式返回提高效率Date& operator++(){_day += 1;return *this;}// 后置++:// 前置++和后置++都是一元运算符,为了让前置++与后置++形成能正确重载// C++规定:后置++重载时多增加一个int类型的参数,但调用函数时该参数不用传递,编译器自动传递// 注意:后置++是先使用后+1,因此需要返回+1之前的旧值,故需在实现时需要先将this保存一份,然后给this + 1// 而temp是临时对象,因此只能以值的方式返回,不能返回引用Date operator++(int){Date temp(*this);_day += 1;return temp;}void show(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};int main()
{Date d1(2022, 10, 1);d1.show();Date d2 = d1++;d2.show();d1.show();d2 = ++d1;d1.show();d2.show();return 0;
}
四.const成员
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数
隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << "Print()" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}void ConstPrint() const{cout << "Print()const" << endl;cout << "year:" << _year << endl;cout << "month:" << _month << endl;cout << "day:" << _day << endl << endl;}
private:int _year; // 年int _month; // 月int _day; // 日
};
int main()
{Date d1(2022, 1, 13);d1.Print();const Date d2(2022, 1, 13);d2.ConstPrint();return 0;
}
思考下面的几个问题:
1. const对象可以调用非const成员函数吗?解答:const对象不可以调用非const成员函数,因为非const成员函数的*this也是没有经过const修饰的,如果调用了const成员函数,就相当于权限放大。
2. 非const对象可以调用const成员函数吗?解答:非const对象可以调用const成员函数,因为由const修饰的成员函数实际上修饰的就是*this,相当于权限缩小,是允许的。
3. const成员函数内可以调用其它的非const成员函数吗?解答:const成员函数不可以调用其他的非const成员函数,也是一个权限放大的例子。
4. 非const成员函数内可以调用其它的const成员函数吗?解答:非const成员函数可以调用其他的const成员函数,也是一个权限缩小的例子。
五.取地址及const取地址操作符重载
这两个默认成员函数一般不用重新定义 ,编译器默认会生成。
class Date
{
public:Date* operator&(){return this;}const Date* operator&()const{return this;}
private:int _year; // 年int _month; // 月int _day; // 日
};
int main()
{Date date;cout << &date << endl;return 0;
}
这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需
要重载,比如想让别人获取到指定的内容!
class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}Date* operator&(){return (Date*)0x00000001;}const Date* operator&()const{return (Date*)0x0000250;}
private:int _year; // 年int _month; // 月int _day; // 日
};int main()
{const Date date(2022,10,1);Date date1(date);cout << &date << endl;cout << &date1 << endl;return 0;
}
六. cout 输出类信息
cout是类 ostream 的对象,表示面向窄字符(字符类型)的标准输出流。它对应于 C 流标准输出。
作为 ostream 类的对象,可以使用插入运算符(运算符<<)将字符作为格式化数据写入其中,也可以使用成员函数(如 write)将字符作为无格式数据写入其中。
对象在带有外部链接和静态持续时间的头文件声明<iostream>:它持续整个程序的持续时间。
我们可以将ostream的对象cout,也作为运算符重载的参数:
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//<<运算符重载void operator<<(ostream& out){out << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};int main()
{Date date(2023, 2, 8);//按照运算符左边到右边是参数从左往右对应//成员函数第一个参数就是this指针,所以<<运算符左边就是date对象date << cout;//等价于date.operator<<(cout);return 0;
}
但是 date<<cout ,非常不符合我们的使用习惯,有没有一种办法可以实现 cout << date 呢?造成这种情况的原因是成员函数的第一个参数默认是 this 指针,如果我们不将 << 设计为成员函数是不是就可以解决这个问题呢?
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}private:int _year;int _month;int _day;
};
//<<运算符重载
void operator<<(ostream& out, Date& d)
{out << d._year << "/" << d._month << "/" << d._day << endl;
}
int main()
{Date date(2023, 2, 8);//按照运算符左右参数,分别对应<<运算符重载从左往右的参数cout << date;//等价于operator<<(cout, date);return 0;
}
这就又有一个新的问题,成员变量私有化,不允许外部函数直接访问,面对这个问题,我们有两种解决方案:
1.设置get函数
设计成员函数用于返回私有成员变量的值,供外部读取。
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//Get函数,用于外部读取私有成员变量int& Get_year(){return _year;}int& Get_month(){return _month;}int& Get_day(){return _day;}
private:int _year;int _month;int _day;
};
//<<运算符重载,为了支持连续访问,加上返回值
otsream& operator<<(ostream& out, Date& d)
{out << d.Get_year() << "/" << d.Get_month() << "/" << d.Get_day() << endl;return out;
}
int main()
{Date date(2023, 2, 8);//按照运算符左右参数,分别对应<<运算符重载从左往右的参数cout << date;//等价于operator<<(cout, date);return 0;
}
2.设计友元函数
只需在将函数声明写在Date类的内部,并在函数的前面加上关键字 friend,就可以和类建立友好关系,友元函数可以像成员函数一样随意访问成员变量。
class Date
{
public:Date(int year = 1900, int month = 1, int day = 1){_year = year;_month = month;_day = day;}//友元函数friend void operator<<(ostream& out, Date& d);
private:int _year;int _month;int _day;
};
//<<运算符重载
void operator<<(ostream& out, Date& d)
{out << d._year << "/" << d._month << "/" << d._day << endl;
}
int main()
{Date date(2023, 2, 8);//按照运算符左右参数,分别对应<<运算符重载从左往右的参数cout << date;//等价于operator<<(cout, date);return 0;
}
七.Date类实现
前面一直在用Date类举例子,这次我们来全面实现一下,练习我们之前学过的类与对象的姿势。
我们严格按照开发标准来实现Date类:
(1)Date类的主要功能模块
//Date.h文件
#include<iostream>
#include<assert.h>
using namespace std;
class Date
{friend ostream& operator<<(ostream& out, Date& d);
public:Date(int year, int month, int day );//日期比较大小bool operator>(const Date& date);bool operator >= (const Date& date);bool operator <(const Date& date);bool operator<=(const Date& date);bool operator ==(const Date& date);//日期+天数Date operator+(int x);//日期+=天数Date& operator+=(int x);//日期-日期=天数int operator-(const Date& date);//日期-天数=日期Date operator-(int x);//日期-=天数Date operator-=(int x);//Date++Date operator++(int);//++DateDate& operator++();
private:int GetMonthDay(int year, int month);//获取每月天数int _year;//年int _month;//月int _day;//日
};//Date.cpp
//构造函数定义
Date::Date(int year , int month, int day)
{assert(month <= 12 && day <= this->GetMonthDay(year, month));_year = year;_month = month;_day = day;
}
//输出日期:年/月/日(友元函数)
void operator<<(ostream& out, Date& d)
{out << d._year << "/" << d._month << "/" << d._day << endl;
}
(2)日期大小比较
//Date.cpp
bool Date::operator>(const Date& date)
{if (_year != date._year)//如果年不相等,直接判断出结果return _year > date._year;if (_month != date._month)//年相等的时候,如果月不相等,直接判断出结果return _month > date._month;if (_day != date._day)//年.月相等的时候,如果日不相等,直接判断出结果return _day > date._day;
}bool Date::operator >= (const Date& date)
{//>=就是或上一个相等return *this > date || *this == date;
}bool Date::operator ==(const Date& date)
{ //相等需要年月日都相等return _year == date._year && _month == date._month && _day == date._day;
}bool Date::operator <(const Date& date)
{ // >=取反return !(*this >= date);
}bool Date::operator<=(const Date& date)
{ //<或上==return *this < date || *this == date;
}
(3)日期+天数,日期+=天数,++日期,日期++
int Date::GetMonthDay(int year, int month)
{int montharr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };if (((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)&&month==2){return 29;}return montharr[month];
}Date Date::operator+(int x)
{Date tmp(*this);if (x < 0){tmp -= -x;return tmp;}tmp += x;return tmp;
}
//先将天数全部加上去,然后依次减去当月天数,并判断年月的变换。
Date& Date::operator+=(int x)
{if (x < 0){*this -= -x;return *this;}_day += x;while (_day > GetMonthDay(_year,_month)){_day -= this->GetMonthDay(_year,_month);_month++;if (_month > 12){_year++;_month = 1;}}return *this;
}//Date++(后置++)
Date Date::operator++(int)
{Date temp(*this);*this+=1;return temp;
}
//++Date(前置++)
Date& Date::operator++()
{*this += 1;return *this;
}
(4)日期-日期,日期-天数,日期-=天数
//计数计算,一天一天加,直到日期相等。
int Date::operator-(const Date& date)
{int count = 0;Date bigdate = *this;Date smalldate = date;if (bigdate < smalldate){Date tmp = bigdate;bigdate = smalldate;smalldate = tmp;}while (!(smalldate == bigdate)){smalldate++;count++;}return count;
}//日期-天数,先算整数月的减法,直到剩下的天数,小于本月天数,
//加上第一个月,和最后一个月的剩下的天数计算
Date Date::operator-(int x)
{Date tmp(*this);if (x < 0)//如果天数小于0,就相当于加上天数{tmp += -x;return tmp;}tmp._month--;if (tmp._month == 0){tmp._month = 12;tmp._year--;}tmp._day = tmp.GetMonthDay(tmp._year, tmp._month);while (x > tmp.GetMonthDay(tmp._year, tmp._month)){x -= tmp.GetMonthDay(tmp._year, tmp._month);tmp._month--;if (tmp._month == 0){tmp._month = 12;tmp._year--;}tmp._day = tmp.GetMonthDay(tmp._year, tmp._month);}tmp._day -= x;return tmp + this->_day;
}
//不仅计算返回,而且修改当前对象
Date Date::operator-=(int x)
{if (x < 0){*this += -x;return *this;}*this = *this - x;return *this;
}
测试
相关文章:

C++类与对象(中)
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:C 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:C类中一共有六个默认成员函…...

计算机软件技术基础复习
数据结构 文章目录数据结构第一节 数据结构的基本概念第二节 线性结构线性表顺序表和链表的特点实现循环队列第三节 非线性结构树操作系统操作系统概述进程和程序存储空间的组织数据库技术数据库设计软件技术软件生命周期第一节 数据结构的基本概念 数据结构:指相互…...

python爬虫--beautifulsoup模块简介
BeautifulSoup 的引入 我们学习了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就不是我们想要的结果了,而且对于一个网页来说,都有一定的特殊的结构和层级关系,而且很多标签都有 id 或 class 来对作区分&…...

Swfit Copy On Write 原理解析
1. Swift Copy On write 原理是什么 Swift 中的 Copy On Write (COW) 技术是一种内存优化技术,其原理是在需要修改数据时才进行拷贝,以避免不必要的内存消耗。 COW 的实现主要依赖于 Swift 中的结构体和类的特性。对于结构体而言,它是值类型…...

【面试题】经典面试题:让 a == 1 a == 2 a == 3 成立?
一、问题解析 if (a == 1 && a == 2 && a == 3) {console.log(Win) } 复制代码 如何打印除Win? 看到题目的第一眼,我是蒙蔽的.怎么可能会有如此矛盾的情况发生呢?就相当于一个人怎么可能即是小孩,又是成年人,还是老年人呢? 冷静下来,发现一些端倪。...

我是歌手-C语言
“我是歌手”是成名歌手之间的比赛节目,2轮比赛中观众支持率最低者出局。 这里我们假设有n个歌手进行了m轮比赛,请求出局者(m轮总分最低者)。 输入n个歌手(编号依次为1,2,......n)…...

Acwing---112.雷达设备
雷达设备1.题目2.基本思想3.代码实现1.题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超…...

SSJ-21A AC220V静态【时间继电器】
系列型号: SSJ-11B静态时间继电器;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间继电器 SSJ-42A静态时间继电器SSJ-41A静态时间继电器 SSJ-41B静态时间继电器SSJ-32B静态时间继电…...

m序列发生器——Verilog设计
引言 本篇文章利用Verilog编写一个m序列发生器模块。本文会给出具体的设计、测试源码。 设计说明 模块功能说明: 支持任意位宽的随机数生成;支持本原多项式配置;支持初始种子配置;设计环境: 设计语言:Verilog HDL 设计验证平台:MATLAB R20222a、Vivado 2018.3 m 序列…...

Mysql—触发器
触发器 简介 触发器用于直接在某种操作后(数据的增删改查等),通过事件执行设置触发器时的 sql 语句,具有原子性。 可通过 sql 语句直接编写,关键词:CREATE TRIGGER 触发器名称。 例如:在表 st…...

DVWA靶场通关和源码分析
文章目录一、Brute Force1.low2、medium3、High4、Impossible二、Command Injection1、Low2、Medium3、High三、CSRF1、Low2、Medium3、High4、Impossible四、File Inclusion1、Low2、Medium3、High五、File Upload1、Low2、Medium3、High4、Impossible六、 SQL注入1、Low2、Me…...

RocketMQ5.0.0消息存储<二>_消息存储流程
目录 一、消息存储概览 二、Broker接收消息 三、消息存储流程 1. DefaultMessageStore类 2. 存储流程 1):同步与异步存储 2):CommitLog异步存储消息 3):提交消息(Commit) 四、参考资料 一、消息存储概览 如下图所…...

【单片机方案】蓝牙体温计方案介绍
蓝牙体温计方案的工作原理利用了温度传感器输出电信号,直接输出数字信号或者再将电流信号(模拟信号)转换成能够被内部集成的电路识别的数字信号,然后通过显示器(如液晶、数码管、LED矩阵等)显示以数字形式的温度,能记录、读取被测温度的最高值…...

React 的受控组件和非受控组件有什么不同
大家好,我是前端西瓜哥,今天我们来看看 React 的受控组件和非受控组件有什么不同。 受控组件 受控组件,指的是将表单元素的值交给组件的 state 来保存。 例子: import ./styles.css import { useState } from reactconst App …...

【逐步剖C】-第六章-结构体初阶
一、结构体的声明 1. 结构体的基本概念 结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。结构体使得C语言有能力描述复杂类型。 如学生,有姓名、学号、性别等;如书,有作者,出版日期…...

Java 并发在项目中的使用场景
1、并发编程的三个核心问题:(1)分工:所谓分工指的是如何高效地拆解任务并分配给线程(2)同步:而同步指的是线程之间如何协作(3)互斥:互斥则是保证同一时刻只允…...

15.面向对象程序设计
文章目录面向对象程序设计15.1OOP:概述继承动态绑定15.2定义基类和派生类15.2.1定义基类成员函数与继承访问控制与继承15.2.2定义派生类派生类对象及派生类向基类的类型转换派生类构造函数派生类使用基类的成员继承与静态成员派生类的声明被用作基类的类防止继承的发…...

Element UI框架学习篇(一)
Element UI框架学习篇(一) 1.准备工作 1.1 下载好ElementUI所需要的文件 ElementUI官网 1.2 插件的安装 1.2.1 更改标签的时实现自动修改 1.2.2 element UI提示插件 1.3 使用ElementUI需要引入的文件 <link rel"stylesheet" href"../elementUI/element…...

【算法】【C语言】
差分算法力扣1094题目描述学习代码思考力扣1094 题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整数 capacity 和一个数组 trips , trip[i] [numPassengersi, fromi, toi] 表示第 …...

【✨十五天搞定电工基础】基本放大电路
本章要求1. 理解放大电路的放大作用和共发射极放大电路的性能特点; 2. 掌握静态工作点的估算方法和放大电路的微变等效电路分析法; 3. 了解放大电路输入、输出电阻和电压放大倍数的计算方法,了解放大电路的频率特性、 互补功率放大…...

MyBatis 入门教程详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

shiro、springboot、vue、elementUI CDN模式前后端分离的权限管理demo 附源码
shiro、springboot、vue、elementUI CDN模式前后端分离的权限管理demo 附源码 源码下载地址 https://github.com/Aizhuxueliang/springboot_shiro.git 前提你电脑的安装好这些工具:jdk8、idea、maven、git、mysql; shiro的主要概念 Shiro是一个强大…...

智能优化算法——粒子群优化算法(PSO)(小白也能看懂)
前言: 暑假期间,因科研需要,经常在论文中看到各种优化算法,所以自己学习了一些智能优化的算法,做了一些相关的纸质性笔记,寒假一看感觉又有点遗忘了,并且笔记不方便随时查看,所以希…...

Lesson 6.4 逻辑回归手动调参实验
文章目录一、数据准备与评估器构造1. 数据准备2. 构建机器学习流二、评估器训练与过拟合实验三、评估器的手动调参在补充了一系列关于正则化的基础理论以及 sklearn 中逻辑回归评估器的参数解释之后,接下来,我们尝试借助 sklearn 中的逻辑回归评估器&…...

Oracle数据库入门大全
oracle数据库 Oracle 数据库、实例、用户、表空间、表之间的关系 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSv0SArH-1675906973035)(vx_images/573695710268888.png 676x)] 数据库 数据库是数据集合。Oracle是一种数据库管理系统ÿ…...

C语言操作符详解(下)
提示:本篇内容是C语言操作符详解下篇 文章目录前言八、条件表达式九、逗号表达式十、 下标引用、函数调用和结构成员1. [ ] 下标引用操作符2. ( ) 函数调用操作符3.结构成员访问操作符十一、表达式求值1. 隐式类型转换举例说明1举例说明2举例说明32.算数转换3.操作…...

【五六七人口普查】我国省市两级家庭户住房状况
人口数据是我们在各项研究中最常使用的数据!之前我们分享过第七次人口普查(简称七普)的数据!很多小伙伴拿到数据后都反馈数据非常好用,同时很多小伙伴咨询有没有前面几次人口普查的数据,这样方便做人口变化…...

大数据框架之Hadoop:入门(二)从Hadoop框架讨论大数据生态
第2章 从Hadoop框架讨论大数据生态 2.1 Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决,海量数据的存储和海量数据的分析计算问题。广义上来说,Hadoop通常是指一个更广泛的概念-Hadoop生态圈。 2.2 Hadoop发展历史 1&…...

负载均衡反向代理下的webshell上传+apache漏洞
目录一、负载均衡反向代理下的webshell上传1、nginx 负载均衡2、搭建环境3、负载均衡下的 WebShell连接的难点总结难点一、需要在每一台节点的相同位置都上传相同内容的 WebShell难点二、无法预测下次的请求交给哪台机器去执行。难点三、下载文件时,可能会出现飘逸&…...

打造安全可信的通信服务,阿里云云通信发布《短信服务安全白皮书》
随着数字化经济的发展,信息保护和数据安全成为企业、个人关注的焦点。近日,阿里云云通信发布《短信服务安全白皮书》,该白皮书包含安全责任共担、安全合规、安全架构三大板块,呈现了阿里云云通信在信息安全保护方面的技术能力、安…...