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

【C++】C++入门知识详解(下)

大家好~我们接着【C++】C++入门知识详解(上)-CSDN博客来介绍另一些C++入门基础知识。

1.缺省值和缺省参数

缺省参数就是声明或定义函数时为函数的参数指定一个缺省参数。在调用该函数时,如果没有指定实参,则采用该形参的缺省值,否则,使用指定的参数。

有些地方把缺省参数也叫做默认参数。其实并不复杂,看下面的函数例子就能理解了。

void Func(int a = 0)
{cout << a << endl;
}

我们定义这个函数时会给形参一个默认值,这个默认值其实就是缺省值,当我们调用这个函数时,传参和不传参情况如下。

Func();
Func(1);

我们可以看到,不传实参时,函数就用原本的a=0这个默认值作为形参;当给函数传参时,传的什么,形参就是什么。这里的0就是缺省值,a就是缺省参数。 

缺省参数分为全缺省和半缺省。全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须右往左依次连续缺省不能间隔、不能跳跃给缺省值

//全缺省
void Func1(int a = 1, int b = 2, int c = 3)
{cout << "a = " << a << " ";cout << "b = " << b << " " << "c = " << c << endl;
}
//半缺省
void Func2(int a, int b = 2, int c = 3)
{cout << "a = " << a << " ";cout << "b = " << b << " " << "c = " << c << endl;
}

而且,带缺省参数的函数调用,C++规定必须左往右依次给实参,不能跳跃、不能间隔给实参

 我们先看全缺省的函数Func1。有如下四种调用

Func1();       //什么都不传
Func1(4);      //传一个实参
Func1(4, 5);   //传两个实参
Func1(4, 5, 6);//传三个实参

半缺省的函数Func2,因为第一个参数没有给缺省值,所以必须传一个实参。有如下3种调用

Func2(4);      //传一个实参
Func2(4, 5);   //传两个实参
Func2(4, 5, 6);//传三个实参

 缺省参数在实践中是非常有意义和价值的,在学习中我们可以体会到。

 函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。

 比如在头文件Func.h中,我们声明上面的函数Func1和Func2

void Func1(int a = 1, int b = 2, int c = 3);
void Func2(int a, int b = 2, int c = 3);

源文件test.cpp中定义Func1和Func2 

void Func1(int a, int b, int c)
{cout << "a = " << a << " ";cout << "b = " << b << " " << "c = " << c << endl;
}
void Func2(int a, int b, int c)
{cout << "a = " << a << " ";cout << "b = " << b << " " << "c = " << c << endl;
}

如果在test.cpp文件中函数定义的参数还是出现了缺省值,就会报类似下面这样的错误,显示重定义默认参数。

 2.函数重载

C++支持在同一作用域出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。返回值不能作为函数重载的条件。

这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同一作用域出现同名函数的。

2.1 参数类型不同

同样是实现两个数的相加,一个是整数的相加,一个是小数的相加,在C语言中我们可能就会分成两个不同的函数来实现,比如add1实现整数的相加,add2实现小数的相加,有了函数重载,我们就可以用add一个函数名来实现这两个函数。

int add(int a, int b)  
{cout << "int add(int a, int b)" << endl;return a + b;
}double add(double a, double b)
{cout << "double add(double a, double b)" << endl;return a + b;
}

同名函数?那怎么调用呢?

其实,在函数调用时,会根据我们传给函数的实参的类型自动调用相应的函数

add(1, 2);     //传int型实参
add(1.1, 2.2); //传double型实参

 单看函数名,我们就觉得自己在用同一个函数,其实并不是一个函数。这样函数用起来就很有可读性。

2.2 参数顺序不同

函数重载的参数也可以是类型相同顺序不同,看下面两个函数

void f(char c, int i)   //先char,后int
{cout << "void f(char c, int i)" << endl;
}
void f(int i, char c)   //先int,后char
{cout << "void f(int i, char c)" << endl;
}

调用时也是一样,根据传给函数的实参的类型自动调用相应的函数

2.3 参数个数不同

名字相同,参数个数不同也是函数重载。普通的例子在这里就不列举了,我们说一下特殊的。

看下面两个函数,一个函数无参,一个函数带参,这两个函数构成函数重载吗?

void f1()
{cout << "void f1()" << endl;
}
void f1(int a = 10)
{cout << "void f1(int a)" << endl;
}

 构成函数重载。但是调用时会存在歧义

当我们调用时给函数传参,就会自动调用有参数的那个函数,这个没问题

那当我们不给函数传参时,应该调用哪个呢?含缺省参数的函数无参也可以调用啊。所以此时函数调用就会有歧义,程序会报错

 所以大家在学习中要注意这些问题。

3.引用

3.1 引用的概念、定义及特征

引用不是新定义一个变量,而是给已存在的变量起个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。符号为&。(类型& 引用别名 = 引用对象

 引用的出现其实针对的是C语言中的指针。引用其实很好理解,比如在水浒传中,林冲外号“豹子头”,李逵江湖人称“黑旋风”等,这些就是他们的别名,而不管是豹子头还是林冲,都代表的是同一个人,引用也是一个道理。我们来看具体程序。

int a = 0;
int& b = a; //给a取别名为b
int& c = a; //给a再取一个别名为c

我们可以不止取一个别名,一个变量可以有多个别名。我们还可以给别名取别名,如下。

int& d = b; //给别名b取别名为d

 此时d相当于还是a的别名,我们看看a,b,c,d的地址,会发现它们的地址一摸一样。

这就验证了这句话,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间 。如果我对d加加呢?

会发现a,b,c,d全都加了,这也证明a,b,c,d是同一个,都是a。

引用的特征:

1.引用在定义时必须初始化

2.一个变量可以有多个引用

3.引用一旦引用一个实体,就不能再引用其他实体(引用不能改变指向

 前两个特征很好理解,我们重点说一下第三个特征。先看看下面这段代码。

int a = 10;
int& b = a;int c = 20;
b = c;

思考一下,这里 b = c 是什么意思?是把b变成c的别名?还是c赋值给b?

这里其实是赋值,把c的值赋给b,b是a的别名,也就是把c的值赋给a。我们把a,b,c都打印出来看看 。

 这也证明引用不能改变指向。我们还可以通过观察地址来看引用是否改变了指向。

可以看到a,b地址相同,b还是a的别名,和a共用同一块空间,而c只是赋值给b。 

3.2 引用的应用

引用在实践中主要用于传参和做返回值,准确说就是用在函数。

1.函数传参其实是把实参拷贝给形参,形参是实参的临时拷贝,有了引用就可以减少拷贝

2.引用从语法上来说,形参是实参的别名,形参也不会额外开辟空间,效率就得到了提高。

3.在函数中我们知道,形参的改变不影响实参,想要通过函数改变实参就要传地址对吧,学了引用后我们大部分情况就可以不用指针传地址实现了。

举一个最简单例子,函数实现交换两个数,在C语言中应该像下面这样传地址才能实现实参的改变。

void Swap(int* px, int* py)
{int temp = *px;*px = *py;*py = temp;
}

当我们学了引用,就不需要指针了,我们直接将形参看作实参的别名

void Swap(int& rx, int& ry)
{int temp = rx;rx = ry;ry = temp;
}

 

这里,rx就是x的别名,rx的改变就是x的改变;ry就是y的别名,ry的改变就是y的改变,rx与ry的交换就实现了x与y的交换 。

在能使用指针的地方比如说栈,队列等都可以尝试用引用,会方便很多。引用做返回值我们后续再讨论。 

3.3 coust引用 

const引用被const修饰的量

一个被const修饰的变量a,怎么给它取别名?

const int a = 10;

直接int& ra = a;绝对是不可以的。这是一个经典的权限放大。被const修饰的变量其实就是让这个变量变得只能读不能写,而int类型是可读可写的,别名ra也可读可写,a被const修饰只能读,而现在来一个可读可写的别名?这就让a权限放大了。

引用权限可以缩小,不能放大。那应该怎么给const修饰的变量取别名呢?像下面这样。

const int& ra = a;

const引用正常变量 

没有被const修饰的变量b,可以直接用int& rb = b;来取别名

int b = 20;

那可以像下面这样吗?

const int& rb = b;

可以,这里就是引用权限缩小,一个可读可写的b,别名rb只能读。

但是这并不意味着b的权限缩小了,用b这个名字的时候还是可读可写,但是用rb这个名字的时候就只能读,但rb还是b,只是权限不同,就像你在家可以想脱鞋就脱鞋,在教室就不能随意脱鞋,但你还是你,只是权限不一样。

const引用常量

const引用还可以给常量取别名。比如说我要给10这个常数取别名。如果不加const就不行。

const int& rc = 10;

const引用临时对象 

 const引用还可以给临时对象取别名。比如给a+b这个表达式取别名,如果不加const就不行。

//这里a和b有没有const无所谓
const int a = 10;
int b = 20;
const int& rd = a + b;

因为表达式的结果会存在临时对象里面,临时对象就是编译器需要一个空间暂存表达式的求值结果时,临时创建的一个未命名的对象,这个临时对象具有属性。如果是 int rd = a + b;意思就是把a+b结果的临时对象拷贝给rd

再看下面这个,我们怎么给double类型的d取一个int类型的别名?

double d = 3.14;
int i = d;

上面这个d并不是直接赋值给i,d和i类型不同,这里叫隐式类型转换,隐式类型转换中间会产生临时对象存储。所以这里我们也不能直接用int& ri = d;取别名,还是要加const。

double d = 3.14;
const int& ri = d; //给d取int类型的别名

(临时对象的生命周期会和别名的生命周期一样)

3.4 引用和指针的区别

C++中指针和引用就像两个性格迥异的亲兄弟,指针是哥哥,引用是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有自己的特点,互相不可替代。

• 语法概念上引用是一个变量的取别名不开空间,指针是存储一个要量地址,要开空间。
• 引用在定义时必须初始化,指针建议初始化,但是语法上不是必须的。
• 引用在初始化时引用一个对象后,就不能再引用其他对象;而指针可以在不断地改变指向对象。
• 引用可以直接访问指向对象,指针需要解引用才是访问指向对象。
• sizeof中含义不同,引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节,64位下是8byte)
• 指针很容易出现空指针和野指针的问题,引用很少出现,引用使用起来相对更安全一些。

4.inline内联

(1)C语言实现宏函数会在预处理时替换展开,但是宏函数的实现很复杂很容易出错,且不方便调试,C++设计了inline目的就是代替C语言的宏函数。

(2)用inline修饰的函数叫内联函数,编译时C++编译器会在调用的地方展开内联函数,这样调用内联函数就不需要建立栈帧了,就可以提高效率。

(3)vs编译器debug版本下默认是不展开inline的,这样方便调试,debug版本想展开需要设置下面两个地方,

 (4)inline对于编译器而言只是一个建议,也就是说,你加了inline编译器也可以选择在调用的地方不展开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适用于频繁调用的短小函数,对于递归函数,代码相对多一些的函数,加上inline也会被编译器忽略。

(5)inline不建议声明和定义分离到两个文件,分离会导致链接错误。因为inline被展开,就没有函数地址,链接时会出现报错。

5.nullptr空指针

NULL实际是一个宏,在.c文件中定义一个指针,赋值为NULL,然后按住ctrl,点击这个NULL,就会跳转到如下代码处。

#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif
#endif

 C++中NULL可能被定义为字面常量0,或者C中被定义为无类型指针(void*)的常量。不论采取何种定义,在使用空值的指针时,都不可避免的会遇到一些麻烦,本想通过f(NULL)调用指针版本的f(int*)函数,但是由于NULL被定义成O,调用了f(int x),因此与程序的初衷相悖。f((void*)NULL);调用会报错。

插入一个小知识

在C语言中void*的指针是可以转成任意类型的,比如

void* p1 = NULL;
int* p2 = p1;

 而在C++中语法更加严格,上面的p1想赋值给p2,必须强制类型转换成int*。

void* p1 = NULL;
int* p2 = (int*)p1;

我们来看具体例子,下面这个函数重载,实参传入NULL时,会调用哪个函数?第二个?

void f(int x)
{cout << "void f(int x)" << endl;
}
void f(int* p)
{cout << "void f(int* p)" << endl;
}

 

结果调用了第一个函数。证明NULL在C++中其实是0。 

C++11中引入nullptr,nullptr是一个特殊的关键字,nullptr是一种特殊类型的字面量,它可以转换成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,而不能被转换为整数类型。

简而言之,就是在C++中的空指针变成了nullptr,不是NULL

本篇到这里就结束了,拜拜~

相关文章:

【C++】C++入门知识详解(下)

大家好~我们接着【C】C入门知识详解&#xff08;上&#xff09;-CSDN博客来介绍另一些C入门基础知识。 1.缺省值和缺省参数 缺省参数就是声明或定义函数时为函数的参数指定一个缺省参数。在调用该函数时&#xff0c;如果没有指定实参&#xff0c;则采用该形参的缺省值&#xf…...

分压电阻方式的ADC电压校准

无人机有个流程是电池电压校准。具体做法是:让你用万用表测量一下电池两端的电压,然后输入到文本框中,电机计算能重新计算出电压分压器的值,从而获得电池电压值。 这种方法实现的原理是这样的: 电阻分压检测电压原理,以上图为例: 当电路确定时,R2/(R1+R2)是一个定值R,…...

使用Postman测试API短轮询机制:深入指南

短轮询是一种Web开发中常用的技术&#xff0c;用于在客户端和服务器之间定期检查更新。与长轮询或WebSockets等技术相比&#xff0c;短轮询简单易实现&#xff0c;但可能带来较多的HTTP请求&#xff0c;从而增加服务器负担。Postman作为一个强大的API测试工具&#xff0c;可以用…...

明清进士人数数据

明清进士人数数据 指标&#xff1a;省份名称、城市名称、区县名称、明清各省进士人数、明清各城市进士人数、明清各县区进士人数 指标说明&#xff1a; Province[省份名称]-统计数据所属省份 City[城市名称]-统计数据所属地级市 Region[区县名称]-统计数据所属区县 MQpro…...

C# 串口通信(通过serialPort控件发送及接收数据)

连接串口 界面设计打开串口发送数据通过文件发送发送数据 接收数据 首先可以在 工具箱中搜索serialport&#xff0c;将控件拖到你的Winfrom窗口。 界面设计 打开串口 private void Connect_Click(object sender, EventArgs e){serialPort1.PortName comboBox2.Text;//端口名s…...

数据安全的新盾牌:SQL Server数据库镜像技术详解

数据安全的新盾牌&#xff1a;SQL Server数据库镜像技术详解 在数据驱动的商业世界中&#xff0c;数据库的安全性是维护企业运营的关键。SQL Server提供了多种数据保护机制&#xff0c;其中数据库镜像技术是一个强大的高可用性解决方案&#xff0c;它可以显著提高数据的安全性…...

【C语言版】数据结构教程(一)绪论(上)

【内容简介】本文整理数据结构&#xff08;C语言版&#xff09;相关内容的复习笔记&#xff0c;供各位朋友借鉴学习。本章内容更偏于记忆和理解&#xff0c;请读者们耐心阅读。 数据结构教程 绪论&#xff08;上&#xff09; 本节学习目标 1.1 基本概念 1.2 抽象数据类型的表示…...

酒后为什么总感觉渴?

喝酒后感到口渴&#xff0c;这种感觉其实很常见。这主要是因为酒精对我们的身体有几种影响。首先&#xff0c;酒精能够扩张血管&#xff0c;这会加快血液循环&#xff0c;让肾脏更加活跃&#xff0c;产生更多的尿液。这样一来&#xff0c;我们体内的水分就会通过排尿流失&#…...

Docker安装OwnCloud私有云盘对接ceph

一、安装OwnCloud 我的安装包链接&#xff1a;https://pan.baidu.com/s/1cJO8WEonsw4gGQWgQaYzpw?pwd6bak 提取码&#xff1a;6bak 启动OwnCloud容器&#xff0c;没有镜像会自动下载 docker run -d -p 80:80 -v /home/owncloud:/var/www/html --name owncloud --restartalway…...

创建了Vue项目,需要导入什么插件以及怎么导入

如果你不知道怎么创建Vue项目,建议可以看一看这篇文章 怎么安装Vue的环境和搭建Vue的项目-CSDN博客 1.在idea中打开目标文件 2.系在一个插件Vue.js 3.下载ELement UI 在Terminal中输入 # 切换到项目根目录 cd vueadmin-vue # 或者直接在idea中执行下面命令 # 安装element-u…...

abstract 关键字

在C#中&#xff0c;abstract 关键字是一个非常重要的特性&#xff0c;它用于定义抽象类和抽象成员&#xff08;如方法、属性、索引器、事件或操作符&#xff09;。使用 abstract 关键字的目的主要是为了提供一种机制&#xff0c;让基类能够指定一个或多个必须由派生类实现的方法…...

用Python编写你的网络监控系统详解

概要 在现代网络管理中,实时监控网络流量和状态是保证网络正常运行的关键。使用Python编写网络监控工具可以帮助管理员及时发现和解决网络问题。本文将详细介绍如何使用Python编写网络监控工具,包括基本概念、常用库及其应用场景,并提供相应的示例代码。 网络监控的基本概念…...

操作系统——虚拟内存

一、虚拟内存是什么&#xff1f; 虚拟内存类似一个桥梁&#xff0c;原来程序直接访问物理内存读取数据&#xff0c;现在程序直接访问虚拟内存&#xff0c;由虚拟内存再访问物理内存。 使用虚拟内存的好处&#xff1a; 隔离进程、提高内存使用安全性&#xff1a;每个进程直接…...

Zoom视频会议软件使用

Zoom 是一款广泛使用的视频会议软件,可以用于在线会议、网络研讨会、课堂教学、团队协作等。以下是使用 Zoom 的基本步骤和一些有用的技巧: 安装 Zoom 下载并安装: 访问 Zoom 下载页面。下载适用于你的操作系统(Windows, macOS, Linux, iOS, Android)的客户端。安装完成后…...

MVC软件设计模式及QT的MVC架构

目录 引言 一、MVC思想介绍 1.1 MCV模型概述 1.2 Excel的处理数据 1.3 MVC模式的优势 二、QT中的MVC 1.1 模型&#xff08;Model&#xff09; 1. QAbstractItemModel 2. QStringListModel 3. QStandardItemModel 4. QSqlTableModel 和 QSqlQueryModel 5. QAbstract…...

使用WSL通过SSH连接并运行图形界面程序

使用WSL通过SSH连接并运行图形界面程序 1. 在Windows上安装X服务器2. 配置并启动VcXsrv3. 在WSL Ubuntu中设置DISPLAY变量4. 从WSL Ubuntu连接到远程服务器5. 在远程服务器上设置DISPLAY变量6. 测试X11转发7. 运行您的安装程序注意事项 在Windows Subsystem for Linux (WSL) 上…...

柳湛宇-简历

...

6-1 从全连接层到卷积

我们之前讨论的多层感知机十分适合处理表格数据&#xff0c;其中行对应样本&#xff0c;列对应特征。 对于表格数据&#xff0c;我们寻找的模式可能涉及特征之间的交互&#xff0c;但是我们不能预先假设任何与特征交互相关的先验结构。 此时&#xff0c;多层感知机可能是最好的…...

【Android Studio】项目目录结构

文章目录 常用视图Android视图project视图 gradlebuild.gradleSDK 路径主题入口程序 常用视图 Android视图 project视图 gradle build.gradle SDK 路径 主题 入口程序...

electron-builder打包vue2项目问题合集

一、打包之后不显示elecmentui的图标 1、使用版本 vue ^2.6.14element-ui ^2.15.14vue-cli-plugin-electron-builder 2.1.1 2、解决办法 1&#xff09; 如果是简单的图标可以使用图片代替&#xff08;这种对于elementui组件的图标还是不会显示&#xff09; 2&#xff09;在v…...

5行代码快速Git配置ssh

0 流程步骤 检查本地主机是否已经存在ssh key生成ssh key获取ssh key公钥内容&#xff08;id_rsa.pub&#xff09;复制该内容&#xff0c;到Github账号上添加公钥&#xff0c;进入Settings设置验证是否设置成功 1 代码 # 1.检查本地主机是否已经存在ssh key cd ~/.ssh ls # …...

气相色谱检测常见问题和实战案例分享-测试狗

气相色谱检测常见问题和实战案例分享 气相色谱GC是一种高效、灵敏的分离和分析技术&#xff0c;广泛应用于石油化工、环境保护、食品安全、药物分析等领域&#xff1b;在使用气相色谱进行检测时&#xff0c;可能会遇到一些常见问题&#xff0c;本文将分享一些实战案例&#xff…...

一文学会CUDA编程:深入了解CUDA编程与架构(一)

前言&#xff1a; CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;是由NVIDIA公司开发的一种并行计算平台和编程模型。CUDA于2006年发布&#xff0c;旨在通过图形处理器&#xff08;GPU&#xff09;解决复杂的计算问题。在早期…...

Jquery判断图片加载失败,显示默认图片

//加载图片 出现404状态时触发 $(img).error(function () { //将加载不到的图片的src属性时&#xff0c;修改成默认图片&#xff0c;注意&#xff1a;默认图片必须保证存在&#xff0c;否则会一直调用此函数&#xff0c;造成死循环。$(this).attr("src", "Imag…...

App 自动化测试调研

App 自动化测试调研 App 自动化测试的价值 App 自动化测试在软件开发过程中扮演着重要的角色&#xff0c;具有以下几个方面的价值&#xff1a; 1.提高测试效率和覆盖率&#xff1a;自动化测试可以执行大量的测试用例&#xff0c;覆盖各种功能和场景&#xff0c;相比手动测试…...

Java 后端已经过时的技术,也是我逝去的青春

最近这段时间收到了一些读者的私信&#xff0c;问我某个技术要不要学&#xff0c;还有一些的同学竟然对 Java 图形化很感兴趣&#xff0c;还想找这方面的工作。 我接触 Java 已近 10多年了&#xff0c;见证了许多 Java 技术变迁&#xff0c;包括&#xff1a; JavaEE 框架&…...

释放自动化测试潜能:性能优化策略与实战技巧!

引言 在当今追求软件快速迭代的环境下&#xff0c;自动化测试的性能瓶颈正成为制约开发流程加速的主要障碍。本文将深入探讨如何通过策略和实践&#xff0c;优化自动化测试的性能&#xff0c;实现测试执行速度的质的飞跃。 自动化性能瓶颈的识别与突破 首先&#xff0c;识别并…...

如何理解代码的跨平台?

跨平台性&#xff1a; 跨平台性意味着&#xff0c;在多个平台都兼容运行 那么是怎么做到跨平台&#xff1f; 一般来说&#xff0c;window的操作系统和Linux的操作系统肯定是不一样的 那么提供的系统调用接口和诸多细节也是不一样的 但是&#xff0c;我们的c语言和c语言&#xf…...

dp:221. 最大正方形

221. 最大正方形 看到这个题目真能立马想到dp吗&#xff1f;貌似很难&#xff0c;即使知道是一个dp题也很难想到解法。 直观来看&#xff0c;使用bfs以一个点为中点进行遍历&#xff0c;需要的时间复杂度为 O ( n 2 m 2 ) O(n^2m^2) O(n2m2) 但是可以很容易发现&#xff0c;…...

花10分钟写个漂亮的后端API接口模板!

你好&#xff0c;我是田哥 在这微服务架构盛行的黄金时段&#xff0c;加上越来越多的前后端分离&#xff0c;导致后端API接口规范变得越来越重要了。 比如&#xff1a;统一返回参数形式、统一返回码、统一异常处理、集成swagger等。 目的主要是规范后端项目代码&#xff0c;以及…...

做网站和做系统有什么不同/推广普通话的手抄报

这篇文章《用openpose来预测篮球罚篮准确性》&#xff0c;当中用到了很多比较好的方法&#xff0c;比如机器学习的逻辑回归进行多元二项的分类问题&#xff1b;用石川馨的质量工程工具——帕累托图&#xff0c;进行逻辑回归模型精确度的确定。 1.摘要 OpenPose由卡内基梅隆大…...

深圳定制巴士怎么买票/嘉兴seo网络推广

Mock测试就是在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;用一个虚拟的对象来创建以便测试的测试方法。什么是不容易构造的对象呢&#xff1f;例如HttpServletRequest&#xff0c;需要在有servlet容器环境中创建获取。那不容易获取的对象呢&am…...

如何做网站报价/南昌seo专业团队

今天看到kite项目中的一段代码&#xff0c;发现挺有意思的。 // generateToken returns a JWT token string. Please see the URL for details: // http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-13#section-4.1 func generateToken(aud, username, issuer, pri…...

做c语言题目的网站/智能识别图片

Writer&#xff1a;BYSocket(泥沙砖瓦浆木匠)一、前言针对并发&#xff0c;老生常谈了。目前一个通用的做法有两种&#xff1a;锁机制&#xff1a;1.悲观锁&#xff1b;2.乐观锁。但是这篇我主要用于记录我这次处理的经历&#xff0c;另外希望能看的大神&#xff0c;大牛&#…...

福建省人民政府关于印发福建省定价目录的通知/深圳做seo有哪些公司

Go 数字解析 从字符串解析出数字是一个基本的而且很常见的任务。 Go内置的 strconv 提供了数字解析功能。package main import "strconv" import "fmt" func main() { // 使用ParseFloat解析浮点数&#xff0c;64是说明使用多少位 // 精度来解析 f, _ : st…...

不懂代码做网站/深圳防疫措施优化

在 版本回填退里&#xff0c;你已经知道&#xff0c;每次提交&#xff0c;Git都把它们串成一条时间线&#xff0c;这条时间线就是一个分支。截止到目前&#xff0c;只有一条时间线&#xff0c;在Git里&#xff0c;这个分支叫主 分支&#xff0c;即master分支。HEAD严格来说不是…...