C++学习全教程(day1:变量和数据类型、运算符、流行控制语句)

目录

一、变量和数据类型

1、变量

2、标识符

3、作用域

4、常量

5、数据类型

1.基本数据类型-整型

2.char类型

3.bool类型

4.浮点类型

5.字面值常量

二、运算符

1、算数运算符

2、赋值运算符

3、复合赋值运算符

4、关系和逻辑运算

1.关系运算符  -------结果是一个bool值

2.逻辑运算符

3.条件运算符

5、位运算符

1.移位运算符

2.位逻辑运算符

三、流程控制语句

1、条件分支

1.if

2.switch

2、循环

1.while

2.do while

3.for

九九乘法表例程:

3、跳转

1.break

2.continue

3.goto


1、输出hello world

#include<iostream>
using namespace std;
int main()
{cout << "hello world!" << endl;return 0;
}

std::cout流来输出文本信息。其中<<是输出运算符,它用来将文本信息插入到输出流中。"hello world!"是要输出的文本信息,std::endl是表示插入换行符的操作符,它会在输出文本的末尾插入一个换行符,使得输出的文本在控制台上单独占据一行。最终执行该代码会在控制台上输出"hello world!"并换行。

一、变量和数据类型

1、变量

想要使用变量,必须先做“声明”,也就是告诉计算机要用到的数据叫什么名字,同时还要指明保存数据所需要的空间大小。比如: int a;

这里包含两个信息:一个是变量的名字,叫做“a”,它对应着计算机内存中的一个位置;另一个是变量占据的空间大小,这是通过前面的“int”来指明的,表示我们需要足够的空间来存放一个“整数类型”( integer)数据。

变量声明: 数据类型  变量名;

#include<iostream>
using namespace std;
int main()
{int a = 10, b;cout << "a = " << a << endl;b = 20;cout << "b = " << b << endl;//cin.get();//等待键盘输入}

运行结果:

2、标识符

每个变量都有一个名字,就是所谓的“变量名”。在C++中,变量、函数、类都可以有自己专门的名字,这些名字被叫做“标识符”。

标识符由字母、数字和下划线组成;不能以数字开头;标识符是大小写敏感的,长度不限。

例如: int a;   char name;

标识符命名要求

      不能使用C++关键字;

      不能用连续两个下划线开头,也不能以下划线加大写字母开头,这些被C++保留给标准库使用;

      函数体外的标识符,不能以下划线开头;

      要尽量有实际意义(不要定义a、b,而要定义name、age);变量名一般使用小写字母;

     自定义类名一般以大写字母开头;

     如果包含多个单词,一般用下划线分隔,或者将后面的单词首字母大写;

3、作用域

在C++中,有“作用域”(scope)的概念,就是指程序中的某一段、某一部分。一般作用域都是以花括号{}作为分隔的,就像之前我们看到的函数体那样。

同一个名字在本同的作用域中,可以指代不同的实体(变量、函数、类等等)。定义在所有花括号外的名字具有“全局作用域”(global scope),而在某个花括号内定义的名字具有“块作用域”。一般把具有全局作用域的变量叫做“全局变量”,具有块作用域的变量叫做“局部变量”。

#include<iostream>
using namespace std;int number = 0;  //全局变量int main()
{int number = 666;  //局部变量cout << "number = " << number << endl;
}

全局变量和局部变量同名的时候会输出什么样的结果?可以思考一下哟

输出结果:

        为什么输出的是666,而不是0呢?输出结果是以作用域更小的为准,就相当于局部变量覆盖了全局变量。那新的问题来了,那我想使用全部变量怎么办呢?

4、常量

用变量可以灵活地保存数据、访问数据。不过有的时候,我们希望保存的数据不能更改,这种特殊的变量就被叫做“常量”。在C++中,有两种方式可以定义常量:

        (1)使用符号常量   这种方式是在文件头用#define来定义常量,也叫作“宏定义”。

        define PI   3.14

        跟#include一样,井号“#”开头的语句都是“预处理语句”,在编译之前,预处理器会查找程序中所有的“PI",并把它替换成3.14。这种宏定义的方式是保留的c语言特性,在C++中一般不推荐。

        (2)使用const限定符

        这种方式跟定义一个变量是一样的,只需要在变量的数据类型前再加上一个const关键字,这被称为“限定符”。

        //定义常量

        const  float  Pi  =  3.14;    //不能修改常量值,只能初始化一次

        const修饰的对象一旦创建就不能改变,所以必须初始化。

跟使用#define定义宏常量相比,const定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便。

#include<iostream>
using namespace std;int main()
{const float Pi = 3.14;  //常量cout << "Pi = " << Pi << endl;}

输出结果:

5、数据类型

1.基本数据类型-整型

 C++定义的基本整型包括char、 short、int、long,和C++11新增的long long类型,此外特殊的布尔类型bool本质上也是整型。

        short类型至少为16位(2字节)int至少2字节,而且不能比 short短long至少4字节,而且不能比int短,long long至少8字节,而且不能比 long短。

现在一般系统中,short和 long 都选择最小长度,也就是short为16位、long为32位、long long 为64位;而int则有不同选择。我们一般使用的电脑操作系统,比如 Windows 7、Windows 10、Mac Os等等的实现中,int 都是32位的。

#include<iostream>
using namespace std;int main()
{short a = 666;int b = 888;long c = 1;long long d = 2;cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;cout << "d = " << d << endl;cout << "a的类型大小:" << sizeof a << endl;cout << "b的类型大小:" << sizeof b << endl;cout << "c的类型大小:" << sizeof c << endl;cout << "d的类型大小:" << sizeof d << endl;
}

运行结果:

2.char类型

最常用的字符编码集就是ASCII码,它用0~127表示了128个字符,这包括了所有的大小写字母、数字、标点符号、特殊符号以及一些计算机的控制符。比如字母“A”的编码是65,I数字字符“o”的编码是48。

在程序中如果使用char类型的变量,我们会发现,打印出来就是一个字符;而它的底层是一个整数,也可以做整数计算。

#include<iostream>
using namespace std;int main()
{char a = 65;char b = a + 1;cout << "a = " << a << endl;cout << "a+1 = " << (a+1) << endl;cout << "b = " << b << endl;cin.get();
}

运行结果:

3.bool类型

在程序中,往往需要针对某个条件做判断,结果只有两种:“成立”和“不成立”;如果用逻辑语言来描述,就是“真”和“假”。真值判断是二元的,所以在c语言中,可以很简单地用“1”表示“真”,fo”表示“假”。

C++支持c语言中的这种定义,同时为了让代码更容易理解,引入了一种新的数据类型——布尔类型bool。bool类型只有两个取值: true和 false,这样就可以非常明确地表示逻辑真假了。bool类型通常占用8位(1个字节)。

#include<iostream>
using namespace std;int main()
{bool b = true;cout << "b = " << b << endl;cout << "b占据长度为: " << sizeof b << endl;cin.get();
}

运行结果:

4.浮点类型

跟整数对应,浮点数用来表示小数,主要有单精度float和双精度double 两种类型,double的长度不会小于float。通常,float会占用4个字节(32位),而double会占用8个字节(64位)。此外,C++还提供了一种扩展的高精度类型longdouble,一般会占12或16个字节。|

除了一般的小数,在C++中,还提供了另外一种浮点数的表示法,那就是科学计数法,也叫作“E表示法”。比如:5.98E24表示5.98×10的24次方;9.11e-31表示9.11×10的-31次方。

#include<iostream>
using namespace std;int main()
{float a = 1.23;double b = 1.23e3;cout << "b = " << b << endl;cout << "a = " << a << endl;cin.get();
}

运行结果:

5.字面值常量

(1)整型字面值

整型字面值就是我们直接写的一个整数,比如 30。这是一个十进制数。而计算机底层是二进制的,所以还支持我们把一个数写成八进制和十六进制的形式。以0开头的整数表示八进制数;以0x或者0X开头的代表十六进制数。例如:

        30十进制数

        036八进制数

        0x1E 十六进制数

        这几个数本质上都是十进制的30,在计算机底层都是一样的。

在C++中,一个整型字面值,默认就是int类型,前提是数值在int能表示的范围内。如果超出int范围,那么就需要选择能够表示这个数的、长度最小的那个类型。

具体来说,对于十进制整型字面值,如果int不够那么选择long;还不够,就选择long long(不考虑无将号类型);而八进制和十六进制字面值,则会优先用无符号类型unsigned int,不够的话再选择long,之后依次是unsigned long、longlong和 unsigned long long。

这看起来非常复杂,很容易出现莫名其妙的错误。所以一般我们在定义整型字面值时,会给它加上一个后缀,明确地告诉计算机这个字面值是什么类型。

        默认什么都不加,是int类型;

        l或者L,表示long 类型;

        II或者LL,表示long long类型;

        u或者u,表示unsigned无符号类型;

我们一般会用大写L,避免跟数字1混淆;而u可以和i或LL组合使用。例如9527uLL就表示这个数是unsigned long long类型。

(2)浮点型字面值

前面已经提到,可以用一般的小数或者科学计数法表示的数,来给浮点类型赋值,这样的数就都是“浮点型字面值”。浮点型字面值默认的类型是double。如果我们希望明确指定类型,也可以加上相应的后缀:

        f或者F,表示float类型

        I或者L,表示long double类型

这里因为本身数值是小数或者科学计数法表示,所以工不会跟long 类型混淆。

(3)字符和字符串字面值

字符就是我们所说的字母、单个数字或者符号,字面值用单引号引起来表示。字符字面值默认的类型就是char,底层存储也是整型。

而多个字符组合在一起,就构成了“字符串”。字符串字面值是一串字符,用双引号引起来表示。

        ‘A’字符字面值  , "Hello World!”字符串字面值

转义字符

有一类比较特殊的字符字面值,我们是不能直接使用的。在ASCll码中我们看到,除去字母、数字外还有很多符号,其中有一些本身在C++语法中有特殊的用途,比如单引号和双引号;另外还有一些控制字符。如果我们想要使用它们,就需要进行“转义”,这就是“转义字符”。

二、运算符

1、算数运算符

这里需要注意的是,同一个运算符,在不同的场合可能表达不同的含义。比如“一”,可以是“减号”也可以是“负号”:如果直接放在一个表达式前面,就是对表达式的结果取负数,这是一元运算符;如果连接两个表达式,就是两者结果相减,是二元运算符。

#include<iostream>
using namespace std;int main()
{//算数运算符cout << "1 + 2 = " << 1 + 2 << endl;cout << "1 + 2 * 3 - 4 = " << 1 + 2 * 3 - 4 << endl;int a = 2, b = 4, c = 7;cout << "a + b = " << a + b << endl;cout << "a * b + c = " << a * b + c << endl;cout << "c / a = " << c / a << endl;    //两个整型数相除,结果还是整数float d = 10;cout << "d / b = " << d / b << endl;  //小数和整数相除,结果是小数cout << "c % b = " << c % b << endl;   //取模运算只能用于整数cout << "-c % b = " << -c % b << endl;cin.get();
}

运算结果:

2、赋值运算符

在C++中,用等号“=”表示一个赋值操作,这里的“=”就是赋值运算符。需要注意的是,赋值运算符的左边,必须是一个可修改的数据对象,比如假设我们已经定义了一个int类型的变量a,那么

        a = 1;  这就是赋值。

赋值运算有以下一些规则:

        赋值运算的结果,就是它左侧的运算对象;结果的类型就是左侧运算对象的类型;

        如果赋值运算符两侧对象类型不同,就把右侧的对象转换成左侧对象的类型;

        C++11新标准提供了一种新的语法:用花括号括起来的数值列表,可以作为赋值右侧对象。这样就可以非常方便地对一个数组赋值了;赋值运算满足右结合律。也就是说可以在一条语句中连续赋值,结合顺序是从右到左;

        赋值运算符优先级较低,一般都会先执行其它运算符,最后做赋值;

3、复合赋值运算符

实际应用中,我们经常需要把一次计算的结果,再赋值给参与运算的某一个变量。最简单的例子就是多个数求和,比如我们要计算a、b、c的和,那么可以专门定义一个变量sum,用来保存求和结果:

常见的C++复合运算符包括:

  1. += :a += b 表示将a和b相加,并将结果赋给a
  2. -= :a -= b 表示将a减去b,并将结果赋给a
  3. *= :a *= b 表示将a和b相乘,并将结果赋给a
  4. /= :a /= b 表示将a除以b,并将结果赋给a
  5. %= :a %= b 表示a对b取余,并将结果赋给a

4、关系和逻辑运算

1.关系运算符  -------结果是一个bool值

这里要注意区分的是,在C++语法中一个等号“=”表示的是赋值,两个等号“==”才是真正的“等于”。

关系运算符的相关规则:

        算术运算符的优先级高于关系运算符,而如果加上括号就可以调整计算顺序;

        关系运算符的返回值为布尔类型,如果参与算术计算,true的值为1,false的值为0;

#include<iostream>
using namespace std;int main()
{//关系运算符int a = 1, b = 2, c = 3;cout << "a < b :" << (a < b) << endl;cout << "c == a + b :" << (c ==(a + b)) << endl;cin.get();
}

运算结果:

2.逻辑运算符

一个关系运算符的结果是一个布尔类型(ture或者false),就可以表示一个条件的判断;如果需要多个条件的叠加,就可以用逻辑“与或非”将这些布尔类型组合起来。这样的运算符叫做“逻辑运算符”。

逻辑非( !):一元运算符,将运算对象的值取反后返回,真值反转;

逻辑与(&&):二元运算符,两个运算对象都为 true时结果为true,否则结果为false;

逻辑或(|):二元运算符,两个运算对象只要有一个为 true 结果就为true,都为false则结果为false;

#include<iostream>
using namespace std;int main()
{//逻辑运算符int a = 1, b = 2, c = 3;cout << "a < b && c > 5 :" << (a < b && c > 5) << endl;cout << "a < b || c > 5 :" << (a < b || c > 5) << endl;cin.get();
}

运行结果:

 

这里需要注意的规则有:

        如果将一个算术类型的对象作为逻辑运算符的操作数,那么值为О表示false,非o值表示true;

        逻辑与和逻辑或有两个运算对象,在计算时都是先求左侧对象的值,再求右侧对象的值;如果左侧对象的值已经能决定最终绪果,那么右侧就不会执行计算:这种策略叫做“短路求值”;

#include<iostream>
using namespace std;int main()
{//短路求值int i = 0,j = 0;1 < 2 && ++i;cout << "i = " << i << endl;1 < 2 || ++j;cout << "j = " << j << endl;cin.get();
}

运行结果:

3.条件运算符

C++还从C语言继承了一个特殊的运算符,叫做“条件运算符”。它由“?”和“:”两个符号组成,需要三个运算表达式,形式如下:

        条件判断表达式?表达式1∶表达式2

它的含义是:计算条件判断表达式的值,如果为true就执行表达式1,返回求值结果;如果为false 则跳过表达式1,执行表达式2,返回求值结果。这也是C++中唯一的一个三元运算符。

#include<iostream>
using namespace std;int main()
{//条件运算符int i = 0;int a = 5, b = 2, max;cout << (1 < 2 && ++i ? "true" : "false") << endl;cout << "max = " << ((a > b) ? a : b) << endl;cin.get();
}

运行结果:

5、位运算符

之前介绍的所有运算符,主要都是针对算术类型的数据对象进行操作的;所有的算术类型,占用的空间都是以字节(byte,8位)作为单位来衡量的。在C++中,还有一类非常底层的运算符,可以直接操作到具体的每一位(bit)数据,这就是“位运算符”。

位运算符可以分为两大类:移位运算符,和位逻辑运算符。下面列出了所有位运算符的优先级和用法。

1.移位运算符

移位运算符有两种:左移运算符“<<”和右移运算符“>>”。

#include<iostream>
using namespace std;int main()
{//位运算符unsigned char bits = 0xA8; //10101000cout << hex;cout << "bits右移2位:" << (bits >> 2) << endl; //0010 1010cin.get();
}

运行结果:

2.位逻辑运算符

计算机存储的每一个“位”(bit)都是二进制的,有0和1两种取值,这跟布尔类型的真值表达非常类似。于是自然可以想到,两个位上的“O”或“1”都可以执行类似逻辑运算的操作。

位逻辑运算符有:按位取反“~”,位与“&”,位或“|”和位异或“^”。

        按位取反“~”:一元运算符,类似逻辑非。对每个位取反值,也就是把1置为0、0置为1;

        位与“&”:二元运算符,类似逻辑与。两个数对应位上都为1,结果对应位为1;否则结果对应位为0;

        位或“|”:二元运算符,类似逻辑或。两个数对应位上只要有1,结果对应位就为1;如果全为О则结果对应位为0;

        位异或“^”:两个数对应位相同,则结果对应位为0;不同则结果对应位为0;

三、流程控制语句

1、条件分支

C++提供了两种按条件分支执行的控制语句:if 和switch。

1.if

if 语句主要就是判断一个条件是否为真(true),如果为真就执行下面的语句,如果为假则跳过。具体形式可以分为两种:一种是单独一个if,一般称为“单分支”;另一种是if ... else ...,称为“双分支”。

(1)单分支

单分支是最简单的if用法,判断的条件用小括号括起来跟在if后面,然后是如果条件为真要执行的语句。基本形式为:

#include<iostream>using namespace std;int main()
{//输入用户年龄,判断后显示欢迎信息cout << "请输入您的年龄:" << endl;int age;cin >> age;cin.get();if (age >= 18){cout << "欢迎登录" << endl;}elsecout << "少儿不宜" << endl;cin.get();
}

运行结果:

(2)嵌套分支(多分支)

程序中的分支有可能不只两个,这时就需要对if分支或者else分支再做条件判断和拆分了,这就是“嵌套分支”。

#include<iostream>using namespace std;int main()
{//输入用户年龄,判断后显示欢迎信息cout << "请输入您的年龄:" << endl;int age;cin >> age;cin.get();if (age >= 18){cout << "欢迎登录" << endl;if(age < 35){cout << "继续加油,年轻人" << endl;}}else{ cout << "少儿不宜" << endl;if (age >= 12){cout << "少年,好好学习" << endl;}elsecout << "小朋友,别乱玩" << endl;}cin.get();
}

运行结果:

嵌套分支如果比较多,代码的可读性会大幅降低。所以还有一种更加简单的嵌套分支写法,那就是if ... else if ..,具体形式如下:

#include<iostream>using namespace std;int main()
{//输入用户年龄,判断后显示欢迎信息cout << "请输入您的年龄:" << endl;int age;cin >> age;cin.get();if(age < 12){cout << "小朋友,别乱玩" << endl;}else if (age < 18){cout << "少年,好好学习" << endl;}else if (age < 35){cout << "好好玩" << endl;}else if (age < 60){cout << "继续加油,中轻人" << endl;}else{cout << "好好休息" << endl;}cin.get();
}

运行结果:

2.switch

这里switch后面的括号里是一个表达式,对它求值,然后转换成整数类型跟下面每个case后面的值做比较;如果相等,就进入这个case指定的分支,执行后面的语句,直到swith 语句结束或者遇到break退出。需要注意的是:

        case关键字和后面对应的值,合起来叫做一个“case标签”; case标签必须是一个整型的常量表达式;

        任何两个case标签不能相同;

        break语句的作用是“中断”,会直接跳转到switch语句结构的外面;

        如果没有break 语句,那么匹配某个case标签之后,程序会从上到下一直执行下去;这会执行多个标签下面的语句,可能发生错误;

        如果没有匹配上任何case标签的值,程序会执行default标签后面的语句; default是可选的,表示“默认要执行的操作”。

#include<iostream>using namespace std;int main()
{cout << "请输入您的成绩" << endl;char score;cin >> score;cin.get();switch (score){case 'A':cout << "你真棒,获得优秀的成绩" << endl; break;case 'B':cout << "良好" << endl; break;case 'C':cout << "中等" << endl; break;case 'D':cout << "加油吧" << endl; break;default:break;}cin.get();
}

运行结果:

2、循环

C++中的循环语句,有while、do while和 for三种。

1.while

while只需要给定一个判断条件,只要条件为真,就重复地执行语句。形式如下:

要执行的语句往往会有多条,这就需要用花括号将它们括起来。这个块一般被称为“循环体”。

一般来说,用来控制while循环的条件中一定会包含变量,通常叫做“循环变量”;而它或者在条件中变化,或者在循环体中变化,这样才能保证循环能够终止退出。

#include<iostream>using namespace std;int main()
{cout << "循环即将开始...\n" << endl;int i = 1;while (i <= 10){cout << "现在是第" << i << "循环" << endl;++i;}cin.get();
}

运行结果:

2.do while

do while和 while非常类似,区别在于do while是先执行循环体中的语句,然后再检查条件是否满足。所以do while至少会执行一次循环体。

do while语法形式如下:

#include<iostream>using namespace std;int main()
{cout << "循环即将开始...\n" << endl;int i = 1;while (i <= 10){cout << "现在是第" << i << "循环" << endl;++i;}cout << "-------------------------" << endl;do{cout << "现在是倒数" << --i << "次循环" << endl;} while (i > 1);cin.get();
}

运行结果:

3.for

for循环的经典语法形式是:

关键字for和它后面括号里的部分,叫做“for语句头”。for语句头中有三部分,用分号分隔,主要作用是:

        初始化语句负责初始化一个变量,这个变量值会随着循环迭代而改变,一般就是“循环变量”:

        中间的条件是控制循环执行的关键,为真则执行下面的循环体语句,为假则退出。条件一般会以循环变量作为判断标准;

        最后的表达式会在本次循环完成之后再执行,一般会对循环变量进行更改;

这三个部分并不是必要的,根据需要都可以进行省略。如果省略某个部分,需要保留分号表示这是一个空语句。

#include<iostream>using namespace std;int main()
{cout << "循环即将开始..." << endl;for (int i = 1; i <= 10; i++){cout << "hello " << i << endl;}cout << "循环结束" << endl;cin.get();
}

运行结果:

九九乘法表例程:

#include<iostream>using namespace std;int main()
{//使用嵌套for循环实现九九乘法表//i:行号,j:列号for (int  i = 1; i <= 9; i++){for (int j = 1; j <= i; j++){cout << i << "*" << j << "=" << i * j << "\t";}cout << endl;}cin.get();
}

运行结果:

3、跳转

在流程控制语句中还有一类“跳转语句”,主要用来中断当前的执行过程。C++中有四种跳转语句: break,continue,goto 以及return 0;

1.break

#include<iostream>using namespace std;int main()
{int i = 1;while (true){cout << "hello world,i = " << i++ << endl;if (i > 5){break;}}cin.get();
}

运行结果:

2.continue

continue语句表示“继续”执行循环,也就是中断循环中的本次迭代、并开始执行下一次迭代。很明显,continue只能用在循环语句中,同样针对最近的一层循环有效。

#include<iostream>using namespace std;int main()
{//逢7过for (int num = 1; num <= 100; num++){cout << "\t";//如果是7的倍数或者含7就跳过if (num % 7 == 0 || num % 10 == 7 || num / 10 == 7)continue;cout << num;//如果是10的倍数,则换行if (num % 10 == 0){cout << endl << endl;}}cin.get();
}

运行结果:

3.goto

goto语句表示无条件地跳转到程序中的另一条语句。goto的语法形式为:

这里的“标签”可以认为是一条语句的“名字”,跟变量类似,只不过它是指代一条语句的标识符。定义标签也非常简单,只要在一条语句前写出标识符,然后跟上冒号就可以了,比如:

#include<iostream>using namespace std;int main()
{int i = 1;
p1:do{cout << "i = " << ++i << endl;} while (i < 10);if (i < 15){goto p1;}cin.get();
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PointCloudLib NDT3D算法实现点云配准 C++版本

0.实现效果 效果不咋好 ,参数不好调整 1.算法原理 3D NDT(Normal Distributions Transform)算法是一种用于同时定位和地图生成(SLAM)的机器人导航算法,特别适用于三维点云数据的配准。以下是关于3D NDT算法的详细解释: 算法原理 点云划分与分布计算:3D NDT算法首先将…

2024第十三届中国PMO大会主持人介绍

全国PMO专业人士年度盛会 由PMO评论主办的2024第十三届中国PMO大会邀请了到十几位知名企业的PMO和项目管理专家来担任大会主持人。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 主持人介绍 肖杨&#xff0c;国际知名组织级项目管理专家&#xff0c;微薄之力…

武汉星起航:亚马逊全球化布局助力企业拓展国际市场

在当今全球化经济的大背景下&#xff0c;企业如何突破地域限制&#xff0c;将产品推向更广阔的市场&#xff0c;成为了摆在众多企业家面前的重要课题。武汉星起航相信&#xff0c;亚马逊&#xff0c;作为全球最大的在线零售平台之一&#xff0c;以其独特的全球化布局和强大的服…

fidder自动测试cookie脚本

前言 工作在使用fidder抓包时&#xff0c;经常需要找到一个请求携带的cookie中&#xff0c;真正校验了那些cookie&#xff0c;从而在代码中实现写入这些cookie的请求。这个过程除了根据经验快速过滤&#xff0c;就只能一个一个删除测试了。 所以我写了这个脚本&#xff0c;自动…

东南亚本地化游戏

通常&#xff0c;亚洲电子游戏市场首先与中国联系在一起。但最近&#xff0c;分析人士越来越关注一个邻近地区&#xff1a;东南亚。而且有充分的理由。 该地区包括中南半岛、马来群岛和邻近岛屿上的十一个国家。1967年&#xff0c;其中10个国家&#xff08;除东帝汶外&#xf…

全自动封箱机技术革新:效率优化新篇章

在日新月异的物流行业中&#xff0c;全自动封箱机以其高效、精准的特性&#xff0c;成为了不可或缺的关键设备。然而&#xff0c;随着市场竞争的加剧和客户需求的不断升级&#xff0c;如何进一步优化全自动封箱机的效率&#xff0c;成为了行业内外关注的焦点。 一、全自动封箱机…

如何快速绘制logistic回归预测模型的ROC曲线?

详情请点击下方&#xff1a; 零代码课程来了&#xff0c;不需要R语言&#xff0c;快速构建预测模型 临床预测模型&#xff0c;也是临床统计分析的一个大类&#xff0c;除了前期构建模型&#xff0c;还要对模型的预测能力、区分度、校准度、临床获益等方面展开评价&#xff0c;确…

智慧车库管理系统

摘 要 随着城市化进程的不断加快&#xff0c;私家车数量的快速增长给城市交通带来了巨大的挑战&#xff0c;停车问题成为城市交通管理中的一大难题。车辆停车时&#xff0c;在停车场寻找停车位耗时过久&#xff0c;不仅仅浪费用户的时间&#xff0c;还可能引起交通拥堵。城市停…

小程序中this(1)

}, onLoad: function() {}, }) 此时经过编译后模拟器的显示&#xff1a; 这里都容易理解&#xff0c;当点击了button按钮后&#xff0c;触发点击事件执行testfun函数&#xff0c;将test02设置为8&#xff0c;如图&#xff1a; 通过this.data.test028这种方式直接赋值可以吗&…

[深度学习] 门控循环单元GRU

门控循环单元&#xff08;Gated Recurrent Unit, GRU&#xff09;是一种用于处理序列数据的递归神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;变体&#xff0c;它通过引入门控机制来解决传统RNN在处理长序列时的梯度消失问题。GRU与长短期记忆网络&#xff0…

【redis】redis概述

1、定义 Redis&#xff08;Remote Dictionary Server&#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的、内存中的数据结构存储系统。redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)…

基于springboot实现旅游网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现旅游网站系统演示 摘要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率…

想远程控制手机,用哪个软件好?

很多人都想知道安卓系统或iOS系统要如何实现手机远程控制手机、电脑远程控制手机&#xff0c;分别需要用到什么软件&#xff0c;这篇文章一次说清楚。 注意&#xff0c;安卓系统需要是7.0及以上版本&#xff0c;iOS系统需要是11及以上版本。具体使用步骤请点击关注&#xff0c;…

windows安装Nacos并使用

Nacos&#xff08;前身为阿里巴巴的Nacos Config和Nacos Discovery&#xff09;是一个开源的动态服务发现、配置和服务管理平台&#xff0c;由阿里巴巴开发并维护。它提供了一种简单且易于使用的方式来管理微服务架构中的服务注册、发现和配置管理。 主要功能包括&#xff1a;…

基于React18+Appwrite实现类似Instagram的社交APP

源码地址&#xff1a;https://github.com/sikichan/Ins-social-media-app 请给我一个Star ⭐️ 谢谢&#xff01;

报道 | 2024年7月-2024年9月国际运筹优化会议汇总

封面图来源&#xff1a; https://www.pexels.com/zh-cn/photo/1181406/ 2024年7月-2024年9月召开会议汇总&#xff1a; 2024 INFORMS Advances in Decision Analysis Conference (ADA) Location: Finland Important Dates: Conference: July 10-12, 2024 Details:https://w…

【云原生】Kubernetes网络知识

Kubernetes网络管理 文章目录 Kubernetes网络管理一、案例概述二、案例前置知识点2.1、Kubernetes网络模型2.2、Docker网络基础2.3、Kubernetes网络通信2.3.1、Pod内容器与内容之间的通信2.3.2、Pod与Pod之间的通信 2.4、Flannel网络插件2.5、Calico网络插件2.5.1、Calico网络模…

【吊打面试官系列-Mysql面试题】说说对 SQL 语句优化有哪些方法?

大家好&#xff0c;我是锋哥。今天分享关于 【说说对 SQL 语句优化有哪些方法&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 说说对 SQL 语句优化有哪些方法&#xff1f; 1、Where 子句中&#xff1a;where 表之间的连接必须写在其他 Where 条件之前&#xff…

智能工厂中滑环应用的集成式和分立式数据接口解决方案

第四次工业革命通过在生产过程中实现新场景来推动数字化制造向前发展。这些场景依赖于基本的设计原则&#xff0c;包括器件互联、信息透明、技术协助&#xff0c;以及分散决策。没有先进的无线通信技术&#xff0c;就无法在现代智能工厂中实现所有这些原则。它们支持在广泛的领…

Java露营基地预约小程序预约下单系统源码

轻松开启户外探险之旅 &#x1f31f; 露营热潮来袭&#xff0c;你准备好了吗&#xff1f; 随着人们对户外生活的热爱日益增加&#xff0c;露营已成为许多人周末和假期的首选活动。但你是否曾因找不到合适的露营基地而烦恼&#xff1f;或是因为繁琐的预约流程而错失心仪的营地…