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

C++:类的static成员,友元和构造函数初始化列表

目录

一.类的构造函数的初始化列表

1.类的构造函数初始化列表的引入和介绍

2.初始化列表用于类的类对象成员的拷贝构造函数的调用

3.初始化列表的使用细则

4.使用初始化列表的一个注意事项 

二.explicit关键字

三.C++类的static成员

1.类中static修饰的成员变量

2.类中static修饰的成员函数

3.相关练习

四.类的友元函数和友元类

1.类的友元函数

2.类的友元类

五.拷贝对象时的一些编译器优化


章节架构:

 

一.类的构造函数的初始化列表

1.类的构造函数初始化列表的引入和介绍

  • 当一个类对象被创建时,其成员变量的定义(成员变量内存空间的开辟和初始化)是在构造函数函数体被执行之前完成的:

比如:

class Date
{
public:Date(int year = 0,int day=0)     Date的构造函数{cout << "pause" << endl;_year = year;_day = day;}private:int _year;int _day;
};int main()
{Date a;return 0;
}

  • 因此构造函数体中的语句只是为成员变量赋值,而不是成员变量的初始化(变量的初始化指的是为变量申请内存空间后立马为其赋初值)(初始化在变量的生命周期中只能进行一次,而构造函数体内可以多次赋值)
  • 如果类中存在const成员变量(只可读,不可写入的变量),构造函数是无法为其初始化的。

比如:


 

代码段无法通过编译。

C++为了解决这个问题,设计了构造函数的初始化列表,用来进行成员变量的初始化(为成员变量开辟内存空间后立马赋予其初值)。

  • 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式
     

比如:

class Date
{
public:Date(int year = 0, int month = 0, int day = 0): _year(year)                   成员变量的初始化列表, _month(month), _day(day), _Cday(3)                      const成员变量的初始化{                                   构造函数函数体cout << "pause" << endl;}
private:int _year;int _month;int _day;const int _Cday;
};int main()
{Date a;return 0;
}

 

2.初始化列表用于类的类对象成员的拷贝构造函数的调用

关于类的拷贝构造函数:http://t.csdn.cn/HNeit

有些编译器(比如vs系列)不会为类的自定义拷贝构造函数添加调用其类对象成员变量的拷贝构造函数的指令,比如:
#include <iostream>using std::cout;
using std::cin;
using std::endl;class subdate
{
public:subdate()								类的构造函数:_a(0){cout << "subconstructor" << endl;}subdate(subdate& date)                  类的拷贝构造函数{cout << "copysubdate" << endl;}private:int _a;
};class Date
{
public:Date(int year = 0, int month = 0, int day = 0)   类的构造函数: _year(year), _month(month), _day(day), _Cday(3),_test(){cout << "constructor" << endl;} Date(Date & date)								 类的自定义拷贝构造函数: _Cday(3){cout << "Dateconstructor" << endl;}private:int _year;int _month;int _day;const int _Cday;subdate _test;};int main()
{Date a;Date b(a);               对象b的创建会调用拷贝Date的自定义拷贝构造函数return 0;
}

图解分析:

若想让类的自定义拷贝构造函数可以去调用该类的类对象成员的拷贝构造函数,我们就必须在拷贝构造函数的初始化列表中显式地表明类对象成员的拷贝构造函数的调用

即对Date类的自定义拷贝构造函数作如下修改:

	Date(Date & date)								 //类的自定义拷贝构造函数: _Cday(3),_test(date._test){cout << "Dateconstructor" << endl;}

3.初始化列表的使用细则

  1.  每个成员变量在初始化列表中只能出现一次(因为初始化只能初始化一次)
  2. 类中包含以下成员,必须放在初始化列表位置进行初始化
  • 引用成员变量
  • const成员变量
  • 类对象成员变量(尤其是该类没有可以无参调用的构造函数时)

比如:

class A
{
public:A(int a)         该构造函数不可无参调用:_a(a){}
private:int _a;
};class B
{
public:B(int a, int ref)   必须将其成员置于初始化列表中:_aobj(a)  ,_ref(ref),_n(10){}
private:A _aobj;          没有可以无参调用的构造函数int& _ref;        引用成员const int _n;     const成员变量
};

初始化列表可以让系统在为类成员变量开辟内存空间的同时为成员变量赋初值,并且还可以让我们显式地在自定义构造函数中调用类中类对象成员的构造函数

因此,无论何种情况下,我们都应该尽量在类的构造函数中使用初始化列表初始化成员变量

(成员变量的初始化顺序最好和成员变量的声明顺序保持一致)

4.使用初始化列表的一个注意事项 

类的成员变量类的定义中的声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的书写先后次序无关
比如:

class A
{
public:A(int a=1):_a1(a), _a2(_a1){}void Print() {cout << _a1 << " " << _a2 << endl;}
private:int _a2;int _a1;
};int main() 
{A aa(1);aa.Print();return 0;
}

所以代码段中aa对象被创建时,_a2会被赋予随机值(_a2会先完成初始化,_a2初始化时_a1空间中存放的还是随机值)

二.explicit关键字

C++中存在如下的类对象创建方式:

class Date
{
public:Date(int year = 0)     构造函数{_year = year;cout << "constructor"<<endl;}Date(Date& date)       拷贝构造函数{_year = date._year;cout << "copy"<<endl;}private:int _year;
};int main() 
{Date a = 2022;         该代码语句发生了隐式类型转换return 0;
}

代码段中发生了隐式类型转换: 

然而这种书写方式容易引起误解,因此可以在类的构造函数前加上explicit关键字来禁止这种隐式类型转换的发生。

三.C++类的static成员

1.类中static修饰的成员变量

static修饰的成员变量(静态成员变量)的特性:

  • 静态成员变量的生命周期与全局变量相同(程序启动时创建,结束时销毁)
  • 静态成员变量不占用任何类对象的内存空间(其存在不依赖于任何对象),它被独立地存放在静态区,所有该类的类对象都可以访问该静态成员变量
  • 静态成员变量必须在类外定义,定义时不添加static关键字但是要表明它属于哪个类域.
  • 静态成员变量可用 类名::静态成员 或者 对象.静态成员 来访问

比如:

2.类中static修饰的成员函数

static修饰的成员函数(静态成员函数)的特性:

  • 类静态成员函数可用 类名::静态成员函数 或者 对象.静态成员函数 来访问
  • 静态成员函数的形参中没有隐藏的this指针不能直接访问任何非静态成员变量
  • 静态成员函数不可以直接调用非静态成员函数
  • 非静态成员函数可以直接调用类的静态成员函数
     

比如:

3.相关练习

牛客网JZ64 求1+2+3+...+n 

OJ链接:求1+2+3+...+n_牛客题霸_牛客网

描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

数据范围: 0<n≤200
进阶: 空间复杂度 O(1) ,时间复杂度 O(n)

可以借助类的静态成员来解决这个问题:

class Ans
{
public:Ans()          每调用一次构造函数就累加一次{i++;       两个静态变量的生命周期为全局变量的生命周期ret+=i;}int Getans (){return ret;}
private:static int i;static int ret;
};
int Ans::i =0;
int Ans:: ret =0;class Solution 
{
public:int Sum_Solution(int n) {Ans* ptr = new Ans[n-1];Ans ans;          一共创建了n个Ans对象,调用了n次Ans的构造函数return ans.Getans();}
};

四.类的友元函数和友元类

1.类的友元函数

类的友元函数的概念:

友元函数是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字

  • 友元函数可直接访问类的私有和保护成员,但不是类的成员函数
  • 友元函数不能用const修饰
  • 友元函数可以在类定义的任何地方声明不受类访问限定符限制
  • 一个函数可以是多个类的友元函数
  • 友元函数的调用与普通函数的调用原理相同

比如现在我们在类外来重载两个运算符:

#include <iostream>using std::endl;
using std::istream;
using std::ostream;class Date
{
public:friend void operator>>(istream& cin, Date& date);    在类中声明类的友元函数friend void operator<<(ostream& cout, Date& date);
private:int _year;
};void operator>>(istream& cin, Date& date)                重载>>运算符
{cin >> date._year;std::cout << "operator>>" << endl;
}void operator<<(ostream& cout, Date& date)               重载<<运算符
{cout << date._year << endl;std::cout << "operator<<" << endl;
}int main()
{Date a;std::cin >> a;                                        调用重载的>>运算符std::cout << a;                                       调用重载的<<运算符return 0;
}

2.类的友元类

class Time
{
friend class Date;    声明Date类为时间类的友元类,则在Date类中就可以直接访问Time类中的私有成员变量
public:private:int _hour;int _minute;int _second;
};class Date
{
public:void SetTimeOfDate(int hour, int minute, int second){     _t._hour = hour;              直接访问时间类私有的成员变量_t._minute = minute;_t._second = second;}
private:Time _t;};

类的友元类的基本概念:

  • 友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。
  • 友元关系是单向的,不具有交换性。

比如上述Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接访问Time类的私有成员变量但想在Time类中访问Date类中私有的成员变量则不行

  • 友元关系不能传递

如果C是B的友元, B是A的友元,则不能说明C时A的友元


 

友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元能不用就不用。 

五.拷贝对象时的一些编译器优化

给出一段代码:

class A
{
public:A(int a = 0)                        A的构造函数:_a(a){cout << "A(int a)" << endl;}A(const A& aa)                      A的拷贝构造函数:_a(aa._a) {cout << "A(const A& aa)" << endl;}A& operator=(const A& aa)           A的赋值运算符重载{cout << "A& operator=(const A& aa)" << endl;if (this != &aa){_a = aa._a;}return *this;}                        ~A()                                A的析构函数{cout << "~A()" << endl;}
private:int _a;
};void f1(A aa)
{;
}A f2()
{A aa;return aa;
}int main()
{A a = f2();cout << endl;return 0;
}

相关文章:

公司新来的00后真是卷王,工作没两年,跳槽到我们公司起薪18K都快接近我了

​都说00后躺平了,但是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,工作都没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他一次聊天才知道,原来这位小老弟家里条件不好,一大家子指望他…...

sql_mode=only_full_group_by以及ANY_VALUE()

MySQL报错:sql_mode=only_full_group_by解决方法-- 查询自定义变量 sql_mode SELECT @sql_mode; -- 查询系统变量 sql_mode(会话变量) SELECT @@sql_mode; -- 查询当前会话变量 SELECT @@SESSION.sql_mode; -- 查询全局变量 select @@GLOBAL.sql_mode;SET @@SESSION.sql_mod…...

openGauss INSERT-INTO语句

INSERT INTO语句 在创建一个表后,表中并没有数据,使用这个表之前,需要向表中插入数据。INSERT INTO语句用于向表中插入新记录。该语句可以插入一行数据也可以同时插入多行数据。 语法格式 INSERT INTO table_name [ ( column_name [, ...] ) ]{ DEFAULT VALUES| VALUES {( {…...

如何才能算得上专业的数据实时同步方案,一文了解!

数据实时同步是指在多个系统或平台之间保持数据的即时一致性,数据实时同步方案是企业在数字化转型过程中,为了满足业务需求,确保数据的实时性、完整性、高效性和可靠性而采取的一系列技术和策略。实时数据同步的重要性: 1.即时决策:实时数据同步可以提供准确的数据,使决策…...

用友政务财务系统 FileDownload 任意文件读取漏洞复现

0x01 产品简介 用友政务财务系统具有多项核心功能,旨在满足各类组织的财务管理需求。首先,它提供了财务核算功能,能够全面管理企业的总账、固定资产、现金、应付应收等模块,实时掌握企业的财务状况,并通过科目管理、凭证处理、报表分析等功能为决策提供有力支持。 0x02 …...

buuctf-pwn-2.rip

先用checksec看一下保护情况红色表示没有保护,绿色则表示有相应的保护 关于每种保护会在之后的做题中遇到,也有相应的应对措施,这次就不过多深入 打开ida64分析附件发现高危函数gets,这个函数不会检查输入的长度 我们可以利用它修改函数的返回地址,从而执行后门函数找到后…...

C++:类的static成员,友元和构造函数初始化列表

目录 一.类的构造函数的初始化列表 1.类的构造函数初始化列表的引入和介绍 2.初始化列表用于类的类对象成员的拷贝构造函数的调用 3.初始化列表的使用细则 4.使用初始化列表的一个注意事项 二.explicit关键字 三.C类的static成员 1.类中static修饰的成员变量 2.类中st…...

用友U8和旺店通企业版淘宝奇门单据接口集成

用友U8和旺店通企业奇门单据接口集成对接系统&#xff1a;旺店通企业奇门慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通E…...

Java-黑马Java学习作业-day11集合学生管理系统

学习视频链接&#xff1a;https://www.bilibili.com/video/BV17F411T7Ao 文章目录题目1-将数组存放在集合中题目2-教师信息查看题目3-员工信息删改查操作题目4&#xff08;综合&#xff09;-图书管理系统题目1-将数组存放在集合中 现有如下字符串元素&#xff1a;[“aaa”, “…...

【Linux】冯诺依曼体系结构与操作系统概念理解

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;Linux 文章目录一、前言二、冯诺依曼体系结构1、体系简述2、内存的重要性3、硬件方案解释软件行为4、体系结构中的数据流动5、拓展三、操作系统简述…...

protegeproject/mapping-masterPublic

protegeproject/mapping-masterPublicWatch 10 Fork 7Fork your own copy of protegeproject/mapping-masterStar 44CodeIssues15Pull requests3ActionsProjectsWikiSecurityInsightsMappingMasterDSL编辑新页面马丁奥康纳编辑了此页面 on Oct 29, 2020 85 修订页面4家Mapping…...

大数据分析案例-基于随机森林算法构建人口普查分析模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

【数据结构和算法】认识线性表中的链表,并实现单向链表

本文接着上文&#xff0c;上文我们认识了线性表的概念&#xff0c;并实现了静态、动态顺序表。接下来我们认识一个新概念链表。并实现单向链表的各种操作。顺序表还有不明白的看这一篇文章 (13条消息) 【数据结构和算法】实现线性表中的静态、动态顺序表_小王学代码的博客-CSDN…...

2023-1-28

具有给定数值的最小字符串 题目描述 小写字符 的 数值 是它在字母表中的位置&#xff08;从 1 开始&#xff09;&#xff0c;因此 a 的数值为 1 &#xff0c;b 的数值为 2 &#xff0c;c 的数值为 3 &#xff0c;以此类推。 字符串由若干小写字符组成&#xff0c;字符串的数…...

Linux_常见命令

1.ls ls -l 列出隐藏文件&#xff0c;并显示10项权限,类似如同下图 在部分发行版本的linux下&#xff0c;ll等同于ls -l 首先&#xff0c;第一列为-则代表着这一列是文件&#xff0c; 第一列为d则代表这一列为目录 除了第一位&#xff0c;那么其他还有9位&#xff0c;分为3组…...

【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向…

能一个人走的路别抱有任何期待&#xff0c;死不了 文章目录一、关于文件的重新认识二、语言和系统级的文件操作&#xff08;语言和系统的联系&#xff09;1.C语言文件操作接口&#xff08;语言级别&#xff09;1.1 文件的打开方式1.2 文件操作的相关函数1.3 细节问题2.系统级文…...

ffmpeg无损裁剪、合并视频

我用的版本是 ffmpeg version git-2020-06-23-ce297b4 官方文档 https://ffmpeg.org/ffmpeg-utils.html#time-duration-syntax 时间格式 [-][HH:]MM:SS[.m...] 或 [-]S[.m...][s|ms|us]裁剪视频 假设需要裁剪视频aaa.mp4&#xff0c;第5秒到第15秒 ffmpeg -ss 5 -to 15 -i…...

ATAC-seq分析:Annotating Peaks(9)

1. 注释开放区域 将已识别的无核小体区域与基因组特征&#xff08;如基因和增强子&#xff09;相关联通常很有趣。 一旦注释到基因或增强子的基因&#xff0c;我们就可以开始将 ATACseq 数据与这些基因的特征相关联。 &#xff08;功能注释、表达变化、其他表观遗传状态&#x…...

蓝桥杯刷题015——最少刷题数(二分法+前缀和)

问题描述 小蓝老师教的编程课有 N 名学生, 编号依次是 1…N 。第 i 号学生这学期刷题的数量是 Ai​ 。 对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。 输入格式 第一行包含一个正整数 N 。 第二行包含 N 个整数:…...

Linux——进程

目录 冯诺依曼体系结构 操作系统(Operator System) 概念 设计OS的目的 定位 如何理解 "管理" 总结 系统调用和库函数概念 承上启下 进程 基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 组织进程 查看进程 通过系统调用获取进程…...

Junit单元测试框架【基础篇】

Junit单元测试框架【基础篇】&#x1f34e;一.Junit单元测试框架&#x1f352;1.1 注解&#x1f352;1.2 断言&#x1f352;1.3 用例执行顺序&#x1f352;1.4 测试套件&#x1f349;1.4.1 指定类&#x1f349;1.4.1 指定包&#x1f352;1.5 参数化&#x1f349;1.5.1 单参数&a…...

高通平台开发系列讲解(WIFI篇)什么是WLAN无线局域网

文章目录 一、什么是WLAN1.1、WLAN发展史1.2、WLAN工作频段二、高通相关文件2.1、配置文件2.2、开机启动2.3、wpa_supplicant沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将基于高通平台介绍什么是无线局域网。 一、什么是WLAN 在WLAN领域被大规模推广和商用的是…...

JavaScript 变量

JavaScript 变量 变量是什么? 变量是计算机中用来存储数据的“容器”&#xff0c;它可以让计算机变得有记忆&#xff0c;通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】&#xff08;数据&#xff09; JavaScript 变量 与代数一样&#xff0c;JavaScript 变量…...

C语言进阶——文件管理

每当我们写好一段代码运行结束之后&#xff0c;再次运行的时候就会发现&#xff0c;之前在终端上输入的数据都会消失&#xff0c;那么如何把之前输入的数据保存下来呢&#xff1f; 我们一般把数据持久化的方式有把数据存放在磁盘文件中、存放到数据库。打印等方式进行保存。 …...

[Rust笔记] 规则宏的“卫生保健”

规则宏代码的“卫生保健”规则宏mbe即是由macro_rules!宏所定义的宏。它的英文全称是Macro By Example。相比近乎“徒手攀岩”的Cpp模板元编程&#xff0c;rustc提供了有限的编译时宏代码检查功能&#xff08;名曰&#xff1a;Mixed Hygiene宏的混合保健&#xff09;。因为rust…...

芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点

💡该教程为改进进阶指南,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀💡本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列:芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点、…...

Java---微服务---RabbitMQ部署

RabbitMQ部署1.单机部署1.1.下载镜像1.2.安装MQ1.3访问管理端2.集群部署2.1.集群分类2.2.设置网络1.单机部署 我们在Centos7虚拟机中使用Docker来安装&#xff0c;如未安装dockr&#xff0c;请参考《Centos7安装Docker》 1.1.下载镜像 方式一&#xff1a;在线拉取 docker …...

别总写代码,这130个网站比涨工资都重要

今天推荐一些学习资源给大家&#xff0c;当然大家可以留言评论自己发现的优秀资源地址 搞学习 找书籍 冷知识 / 黑科技 写代码 资源搜索 小工具 导航页&#xff08;工具集&#xff09; 看视频 学设计 搞文档 找图片 搞学习 TED&#xff08;最优质的演讲&#xff09;&#xff1…...

Python 类方法简记

文章目录前言必须实例化的类方法使用静态装饰器的类方法使用类装饰器的类方法省流版本ref:前言 Python 的类可以有特定的方法。下面是三种设计类方法的模板。 class A(object):a adef foo1(self, name):print hello, namestaticmethoddef foo2(name):print hello, nameprint…...

分享136个ASP源码,总有一款适合您

ASP源码 分享136个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 136个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/11db_K2QXns5pm8vMZBVPSw?pwds0lb 提取码&#x…...

【Python百日进阶-Web开发-Peewee】Day241 - Peewee 安装和测试、快速开始

文章目录 一、安装和测试1.1 使用 git 安装1.2 运行测试1.3 可选依赖项1.4 关于 SQLite 扩展的注意事项二、快速开始2.1 模型定义2.2 存储数据2.3 检索数据2.3.1 获取单条记录2.3.2 记录列表2.3.3 排序2.3.4 组合过滤器表达式2.3.5 聚合和预取2.3.6 SQL 函数2.4 数据库2.4.1 使…...

手机提供GMS支持(适用安卓和鸿蒙系统)

手机提供GMS支持 - 适用安卓和鸿蒙系统前言方式1&#xff1a;安装GMS套件&#xff08;不推荐&#xff09;方式2&#xff1a;安装OurPlay&#xff08;推荐&#xff09;方式3&#xff1a;安装Gspace&#xff08;推荐&#xff09;前言 本文提供多种为手机&#xff08;安卓和鸿蒙系…...

[JavaEE]线程池

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1. 线程池是什么? 2. 线程池的实现原理 3. 标准…...

Redis缓存污染了怎么办?

我们应用Redis缓存时&#xff0c;如果能缓存会被反复访问的数据&#xff0c;那就能加速业务应用的访问&#xff0c;但是&#xff0c;如果发生了缓存污染&#xff0c;那么&#xff0c;缓存对业务应用的加速作用就减少了。 在一些场景下&#xff0c;有些数据被访问的次数非常小&…...

特斯拉印证成本仍是工业制造取胜的关键,反证中国制造的优势

近20年来&#xff0c;业界对于工业制造的竞争优势开始逐渐偏离成本控制&#xff0c;然而如今特斯拉在全球的成功却正在印证着工业制造的成功仍然在于成本&#xff0c;成本才是工业制造取胜的关键&#xff0c;其他任何被吹嘘的个性化、创新等全都是骗人的把戏。特斯拉的成功曾被…...

工具及方法 - 斗地主技巧

斗地主游戏起源 斗地主是流行于湖北武汉、汉阳一带的一种扑克游戏。游戏需由3个玩家进行&#xff0c;用一副54张牌(连鬼牌)&#xff0c;其中一方为地主&#xff0c;其余两家为另一方&#xff0c;双方对战&#xff0c;先出完牌的一方获胜。斗地主起源于湖北武汉汉阳一带&#xf…...

BIO NIO AIO IO多路复用的区别

1、基础概念 1.1、阻塞非阻塞和同步异步的结合 下面通过例子来具体说明&#xff1a; 同步阻塞&#xff1a; 小明一直盯着下载进度条&#xff0c;到100%的时候完成。 同步体现在&#xff1a;小明关注下载进度条并等待完成通知。&#xff08;可以看成同步是我主动关注任务完成的…...

数学建模——降维算法

降维 降维的意义 降低无效、错误数据对建模的影响&#xff0c;提高建模的准确性少量切具有代表性的数据将大幅缩减挖掘所需的时间降低存储数据的成本 需要降维的情况 维度灾难。很难有一个简洁的模型在高维空间中依旧具有鲁棒性&#xff0c;而随着模型复杂度的增加&#xf…...

04_iic子系统

总结 iic_client和iic_driver 加入iic总线的思想和paltform总线的玩法一样 把iic设备和驱动注册到iic总线中 构造出字符设备驱动和设备节点供app进行操作 但是iic硬件设备是挂在iic控制器下面的 所以iic控制器也会有自己的驱动和设备树节点 厂家一般都会帮做好 我们写的iic_dr…...

离散系统的数字PID控制仿真-3

离散PID控制的封装界面如图1所示&#xff0c;在该界面中可设定PID的三个系数、采样时间及控制输入的上下界。仿真结果如图2所示。图1 离散PID控制的封装界面图2 阶跃响应结果仿真图&#xff1a;离散PID控制的比例、积分和微分三项分别由Simulink模块实现。离散PID控制器仿真图&…...

如何好好说话-第12章 理清楚问题就是答案

生活中该不该积极主动与别人展开社交活动&#xff1f;有些时候社交活动并不开心&#xff0c;仅仅只是无聊的闲才。但他确实能拉拢人际关系&#xff0c;帮我们获得近身套路。而且有一种观点认为不善于社交的人是不成功的。注意以上说的这些都是偏见。当我们站在一个更高的维度认…...

ice规则引擎==启动流程和源码分析

启动 git clone代码 创建数据库ice&#xff0c;执行ice server里的sql&#xff0c;修改ice server的配置文件中的数据库信息 启动ice server 和ice test 访问ice server localhost:8121 新增一个app,默认给了个id为1&#xff0c;这个1可以看到在ice test的配置文件中指定…...

进度管理(上)

规划进度管理 定义&#xff1a;规划进度管理是为实施项目进度管理制定计划的过程。 输入&#xff1a; 1、项目管理计划 2、项目章程&#xff08;包含里程碑&#xff0c;这个和规划进度有直接干系&#xff09; 3、组织过程资产 4、事业环境因素。 输出&#xff1a;进度管…...

2021 XV6 8:locks

实验有两个任务&#xff0c;都是为了减少锁的竞争从而提高运行效率。Memory allocator一开始我们是有个双向链表用来存储空闲的内存块&#xff0c;如果很多个进程要竞争这一个链表&#xff0c;就会把效率降低很多。所以我们把链表拆成每个CPU一个&#xff0c;在申请内存的时候就…...

JUC面试(十一)——LockSupport

可重入锁 可重入锁又名递归锁 是指在同一个线程在外层方法获取锁的时候&#xff0c;再进入该线程的内层方法会自动获取锁(前提&#xff0c;锁对象得是同一个对象)&#xff0c;不会因为之前已经获取过的锁还没释放而阻塞。 Java中ReentrantLock和synchronized都是可重入锁&am…...

Datawhale 202301 设计模式 | 人工智能 现代方法 习题

Exercise 1 绪论 Q&#xff1a;用您自己的话来定义&#xff1a;&#xff08;a&#xff09;智能&#xff0c;&#xff08;b&#xff09;人工智能&#xff0c;&#xff08;c&#xff09;智能体&#xff0c;&#xff08;d&#xff09;理性&#xff0c;&#xff08;e&#xff09;逻…...

k8s安装dashboard面板

k8s dashboard github地址&#xff1a;https://github.com/kubernetes/dashboard注意&#xff1a;dashboard版本要和k8s版本匹配&#xff0c;具体参考release里的Compatibility&#xff1a;https://github.com/kubernetes/dashboard/releases安装命令wget https://raw.githubus…...

最详细、最仔细、最清晰的几道python习题及答案(建议收藏哦)

名字&#xff1a;阿玥的小东东 学习&#xff1a;python。c 主页&#xff1a;没了 今天阿玥带大家来看看更详细的python的练习题 目录 1. 在python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景? 2. 静态函数, 类函数, 成员函数、属性函数的区别? 2.1静态…...

逆水寒魔兽老兵服副本攻略及代码分析(英雄武林风云录,后续更新舞阳城、扬州、清明等副本攻略)

文章目录一、武林风云录1&#xff09;老一&#xff1a;陈斩槐&#xff08;只有四个机制&#xff0c;dps压力不大&#xff0c;留爆发打影子就行&#xff09;&#xff08;1&#xff09;点名红色扇形区域&#xff08;2&#xff09;点名红色长条&#xff0c;注意最后还有一段大劈&a…...

SpringMVC总结

Spring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。SpringMVC是一种web层的mvc框架&#xff0c;用于替代servlet&#xff08;处理响应请求&#xff0c;获取表单参数&#xff0c;表单验…...

二进制部署kubernetes高可用集群

二进制部署kubernetes高可用集群 一、单节点部署 1、集群节点规划&#xff08;均是24位掩码&#xff09; 负载均衡节点Master节点Node节点Harbor私有仓库节点nginx110.4.7.23master110.4.7.11node110.4.7.2110.4.7.200nginx210.4.7.24master210.4.7.12node210.4.7.22 2、基本…...

机器学习(七):Azure机器学习模型搭建实验

文章目录 Azure机器学习模型搭建实验 前言 Azure平台简介 Azure机器学习实验 Azure机器学习模型搭建实验 前言 了解Azure机器学习平台&#xff0c;知道机器学习流程。 Azure平台简介 Azure Machine Learning&#xff08;简称“AML”&#xff09;是微软在其公有云Azure上推…...

第二类换元法倒代换专项训练

前置知识&#xff1a;第二类换元法 题1&#xff1a; 计算∫1x10xdx\int\dfrac{1}{x^{10}x}dx∫x10x1​dx 解&#xff1a; \qquad令x1tx\dfrac 1txt1​&#xff0c;t1xt\dfrac 1xtx1​&#xff0c;dx−1t2dtdx-\dfrac{1}{t^2}dtdx−t21​dt \qquad原式∫11t101t⋅(−1t2)dt−∫…...

VMware虚拟机无法向宿主机拖放文件

宿主机环境&#xff1a; Windows 10 x64专业工作站版 VMware workstation pro 17 TotalCommander 9.21a 虚拟机环境&#xff1a; Windows 10 x64专业工作站版 TotalCommander 9.21a 现象&#xff1a; 从虚拟机的TC向宿主机TC拖放文件时&#xff0c;光标显示为禁止drop的图…...

Java基础语法——运算符与表达式

目录 Eclipse下载 安装 使用 运算符 键盘录入 Eclipse下载 安装 使用 Eclipse的概述(磨刀不误砍柴工)——是一个IDE(集成开发环境)Eclipse的特点描述&#xff08;1&#xff09;免费 &#xff08;2&#xff09;纯Java语言编写 &#xff08;3&#xff09;免安装 &#xff08…...

连通性1(Tarjan 理论版)

目录 一、无向图割点、桥、双连通分量 Tarjan 算法求割点和桥&#xff08;割边&#xff09; “割点”代码 边双和点双连通分量 边双连通分量 和 点双连通分量 的缩点 二、有向图强连通分量 1.有向图的弱连通与强连通 2.强连通分量 Kosaraju算法 Tarjan 算法&#xff08…...

三维重建一种实现算法

三维重建通常分为基于图像&#xff0c;深度学习&#xff0c;nerf的三维重建方法&#xff0c;本文介绍一种基于slam位姿的用open3d实现的三维重建实现方式。 硬件配置是一个rgbd相机加2d雷达&#xff0c;加广角相机同时装在同一个小车上&#xff0c;每个相机经过内外参相机标定&…...

5分钟——测试搭建的springboot接口(二)

5分钟——测试搭建的springboot接口&#xff08;二&#xff09; 1. 查看数据库字段2. 测试getAll接口3. 测试add接口4. 测试update接口5. 测试deleteById接口 1. 查看数据库字段 2. 测试getAll接口 3. 测试add接口 4. 测试update接口 5. 测试deleteById接口...

资源、死锁、如何监测死锁

资源&#xff1a;变量、对象、网络资源、文件、内存、cpu等等 &#xff08;应用层或者会话层 资源&#xff09; 统一资源限定符&#xff1a;[scheme:][//authority][path][?query][#fragment] authority 可以表示&#xff1a; [user-info]host[:port] 比如&#xff1a; fi…...

Gateway基础知识

文章目录 Spring Cloud GateWay 用法核心概念请求流程两种配置方式设置日志&#xff08;建议设置&#xff09;路由的各种断言断言The After Route Predicate FactoryThe Before Route Predicate FactoryThe Between Route Predicate FactoryThe Cookie Route Predicate Factory…...

YMP实现Oracle迁移到YashanDB

迁移需求 ip地址 数据库信息 操作系统信息 源库 192.168.3.132 实例名topdh 用户密码TOPICIS/oracle 端口1521 Centos7.9 x86_64 目标库 192.168.3.175 实例名yasdb 用户密码topicist/opicis 端口1688 Centos7.9 x86_64 迁移前准备 YMP工具获取 根据实际需求向厂…...

Postman 工具发送请求的技巧与实践

在开发和测试 API 时&#xff0c;发送 JSON 格式的请求是一个常见需求。 在 Postman 中构建和发送 JSON 请求 创建一个新的请求 首先&#xff0c;在 Postman 启动界面上找到并点击 “New” 按钮&#xff0c;选择 “HTTP Request” 来开始新建一个请求。这一步骤允许你定义请…...