Go语言核心编程-流程控制

news2024/10/5 13:47:26

第 5 章 程序流程控制

5.1 程序流程控制介绍

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控
制语句。

  1. 顺序控制
  2. 分支控制
  3. 循环控制

5.2 顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转。
一个案例说明,必须下面的代码中,没有判断,也没有跳转.因此程序按照默认的流程执行,即顺
序控制。
在这里插入图片描述

5.2.1顺序控制的一个流程图

在这里插入图片描述

5.2.2顺序控制举例和注意事项

Golang 中定义变量时采用合法的前向引用。如:

func main() {
var num1 int = 10 //声明了 num1
var num2 int = num1 + 20 //使用 num1
fmt.Println(num2)
}

错误形式:

func main() {
var num2 int = num1 + 20 //使用 num1
var num1 int = 10 //声明 num1 (×)
fmt.Println(num2)
}

5.3 分支控制

5.3.1分支控制的基本介绍

分支控制就是让程序有选择执行。有下面三种形式

  1. 单分支
  2. 双分支
  3. 多分支

5.3.2单分支控制

  1. 基本语法
    在这里插入图片描述
  2. 应用案例
    请大家看个案例[ifDemo.go]:
    编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 “你年龄大
    于 18,要对自己的行为负责!” 需求—[分析]---->代码
    代码:
    在这里插入图片描述
    输出结果
    在这里插入图片描述
  3. 单分支的流程图
    流程图可以用图形方式来更加清晰的描述程序执行的流程。
    在这里插入图片描述
  4. 单分支的细节说明
    在这里插入图片描述

5.3.3双分支控制

  1. 基本语法
    -在这里插入图片描述
  2. 应用案例
    请大家看个案例[IfDemo2.go]:
    编写一个程序,可以输入人的年龄,如果该同志的年龄大于 18 岁,则输出 “你年龄大于 18,要对
    自己的行为负责!”。否则 ,输出”你的年龄不大这次放过你了.”
    在这里插入图片描述
  3. 双分支的流程图的分析
    在这里插入图片描述
  4. 对双分支的总结
  5. 从上图看 条件表达式就是 age >18
  6. 执行代码块 1 ===> fmt.Println(“你的年龄大于 18”) …
  7. 执行代码块 2 ===> fmt.Println(“你的年龄不大…”) .
  8. 强调一下 双分支只会执行其中的一个分支。

5.3.4单分支和双分支的案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5. 编写程序,声明 2 个 int32 型变量并赋值。判断两数之和,如果大于等于 50,打印“hello world!
在这里插入图片描述

  1. 编写程序,声明 2 个 float64 型变量并赋值。判断第一个数大于 10.0,且第 2 个数小于 20.0,打印两数之和。
    在这里插入图片描述

  2. 【选作】定义两个变量 int32,判断二者的和,是否能被 3 又能被 5 整除,打印提示信息
    在这里插入图片描述

  3. 判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被 4 整除,但不能被 100整除;(2)能被 400 整除
    在这里插入图片描述

5.3.5多分支控制

  • 基本语法
    在这里插入图片描述
  • 对上面基本语法的说明
  1. 多分支的判断流程如下:
    (1) 先判断条件表达式 1 是否成立,如果为真,就执行代码块 1
    (2) 如果条件表达式 1 如果为假,就去判断条件表达式 2 是否成立, 如果条件表达式 2 为真,就执行代码块 2
    (3) 依次类推. (4) 如果所有的条件表达式不成立,则执行 else 的语句块。
  2. else 不是必须的。
  3. 多分支只能有一个执行入口。
  • 看一个多分支的流程图(更加清晰)
    在这里插入图片描述

  • 多分支的快速入门案例
    岳小鹏参加 Golang 考试,他和父亲岳不群达成承诺:
    如果:
    成绩为 100 分时,奖励一辆 BMW;
    成绩为(80,99]时,奖励一台 iphone7plus;
    当成绩为[60,80]时,奖励一个 iPad;
    其它时,什么奖励也没有。
    请从键盘输入岳小鹏的期末成绩,并加以判断
    代码如下:
    在这里插入图片描述
    对初学者而言,有一个使用陷阱.
    在这里插入图片描述

  • 多分支的课堂练习
    在这里插入图片描述
    案例 3:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.3.6嵌套分支

  • 基本介绍
    在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分
    支外面的分支结构称为外层分支。
  • 基本语法
    在这里插入图片描述
  • 应用案例 1
    参加百米运动会,如果用时 8 秒以内进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】, 输入成绩和性别。
    代码:
    在这里插入图片描述
  • 应用案例 2
    出票系统:根据淡旺季的月份和年龄,打印票价 [考虑学生先做]
    4_10 旺季:
    成人(18-60):60
    儿童(<18):半价
    老人(>60):1/3
    淡季:
    成人:40
    其他:20
    代码:
    在这里插入图片描述

5.4 switch 分支控制

5.4.1基本的介绍

  1. switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测
    试,直到匹配为止。
  2. 匹配项后面也不需要再加 break

5.4.2基本语法

在这里插入图片描述

5.4.3switch 的流程图

在这里插入图片描述

  • 对上图的说明和总结
  1. switch 的执行的流程是,先执行表达式,得到值,然后和 case 的表达式进行比较,如果相等,
    就匹配到,然后执行对应的 case 的语句块,然后退出 switch 控制。
  2. 如果 switch 的表达式的值没有和任何的 case 的表达式匹配成功,则执行 default 的语句块。执行后退出 switch 的控制. 3) golang 的 case 后的表达式可以有多个,使用 逗号 间隔. 4) golang 中的 case 语句块不需要写 break , 因为默认会有,即在默认情况下,当程序执行完 case 语
    句块后,就直接退出该 switch 控制结构。
    5.4.4switch 快速入门案例
  • 案例:
    请编写一个程序,该程序可以接收一个字符,比如: a,b,c,d,e,f,g a表示星期一,b表示星期二 … 根
    据用户的输入显示相依的信息.要求使用 switch 语句完成
  • 代码
    在这里插入图片描述

5.4.5switch 的使用的注意事项和细节

  1. case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以)
    在这里插入图片描述
    在这里插入图片描述
  2. case 后的各个表达式的值的数据类型,必须和 switch 的表达式数据类型一致
    在这里插入图片描述
  3. case 后面可以带多个表达式,使用逗号间隔。比如 case 表达式 1, 表达式 2 …
    在这里插入图片描述
  4. case 后面的表达式如果是常量值(字面量),则要求不能重复
    在这里插入图片描述
  5. case 后面不需要带 break , 程序匹配到一个 case 后就会执行对应的代码块,然后退出 switch,如
    果一个都匹配不到,则执行 default
  6. default 语句不是必须的.
  7. switch 后也可以不带表达式,类似 if --else 分支来使用。【案例演示】
    在这里插入图片描述
  8. switch 后也可以直接声明/定义一个变量,分号结束,不推荐。 【案例演示】
    在这里插入图片描述
  9. switch 穿透-fallthrough ,如果在 case 语句块后增加 fallthrough ,则会继续执行下一个 case,也
    叫 switch 穿透
    在这里插入图片描述
  10. Type Switch:switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际指向的
    变量类型 【还没有学 interface, 先体验一把】
    在这里插入图片描述

5.4.6switch 的课堂练习

  1. 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出
    “other”。
    在这里插入图片描述
  2. 对学生成绩大于 60 分的,输出“合格”。低于 60 分的,输出“不合格”。(注:输入的成绩不
    能大于 100)
    在这里插入图片描述
  3. 根据用户指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬

    在这里插入图片描述

5.4.7switch 和 if 的比较

总结了什么情况下使用 switch ,什么情况下使用 if

  1. 如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用 swtich
    语句,简洁高效。
  2. 其他情况:对区间判断和结果为 bool 类型的判断,使用 if,if 的使用范围更广。

5.5 for 循环控制

5.5.1基本介绍

听其名而知其意。就是让我们的一段代码循环的执行。

5.5.2一个实际的需求

  • 请大家看个案例 [forTest.go]:
    编写一个程序, 可以打印 10 句
    “你好,尚硅谷!”。请大家想想怎么做?
  • 使用传统的方式实现
    在这里插入图片描述
  • for 循环的快速入门
    在这里插入图片描述

5.5.3for 循环的基本语法

  • 语法格式
    for 循环变量初始化; 循环条件; 循环变量迭代 {
    循环操作(语句)
    }
  • 对上面的语法格式说明
  1. 对 for 循环来说,有四个要素:
  2. 循环变量初始化
  3. 循环条件
  4. 循环操作(语句) ,有人也叫循环体。
  5. 循环变量迭代
  • for 循环执行的顺序说明:
  1. 执行循环变量初始化,比如 i := 1
  2. 执行循环条件, 比如 i <= 10
  3. 如果循环条件为真,就执行循环操作 :比如 fmt.Println(“…”)
  4. 执行循环变量迭代 , 比如 i++
  5. 反复执行 2, 3, 4 步骤,直到 循环条件为 False ,就退出 for 循环。

5.5.4for 循环执行流程分析

  • for 循环的流程图
    在这里插入图片描述
  • 对照代码分析 for 循环的执行过程
    在这里插入图片描述

5.5.5for 循环的使用注意事项和细节讨论

  1. 循环条件是返回一个布尔值的表达式
  2. for 循环的第二种使用方式
for 循环判断条件 {
//循环执行语句
}

将变量初始化和变量迭代写到其它位置

  • 案例演示:
    在这里插入图片描述
  1. for 循环的第三种使用方式
    for {
    //循环执行语句
    }
    
    上面的写法等价 for ; ; {} 是一个无限循环, 通常需要配合 break 语句使用
    在这里插入图片描述
  2. Golang 提供 for-range 的方式,可以方便遍历字符串和数组(注: 数组的遍历,我们放到讲数组
    的时候再讲解) ,案例说明如何遍历字符串。
  • 字符串遍历方式 1-传统方式
    在这里插入图片描述
  • 字符串遍历方式 2-for - range
    在这里插入图片描述
  • 上面代码的细节讨论
    如果我们的字符串含有中文,那么传统的遍历字符串方式,就是错误,会出现乱码。原因是传统的
    对字符串的遍历是按照字节来遍历,而一个汉字在 utf8 编码是对应 3 个字节。
    如何解决 需要要将 str 转成 []rune 切片.=> 体验一把
    在这里插入图片描述
  • 对应 for-range 遍历方式而言,是按照字符方式遍历。因此如果有字符串有中文,也是 ok
    在这里插入图片描述
    5.5.6for 循环的课堂练习
  1. 打印 1~100 之间所有是 9 的倍数的整数的个数及总和
    在这里插入图片描述
  2. 完成下面的表达式输出 ,6 是可变的。
    在这里插入图片描述

5.6 while 和 do…while 的实现

Go 语言没有 while 和 do…while 语法,这一点需要同学们注意一下,如果我们需要使用类似其它语
言(比如 java / c 的 while 和 do…while ),可以通过 for 循环来实现其使用效果。

5.6.1while 循环的实现

在这里插入图片描述

  • 说明上图
  1. for 循环是一个无限循环
  2. break 语句就是跳出 for 循环
  • 使用上面的 while 实现完成输出 10 句”hello,wrold”
    在这里插入图片描述

5.6.2do…while 的实现

在这里插入图片描述

  • 对上图的说明
  1. 上面的循环是先执行,在判断,因此至少执行一次。
  2. 当循环条件成立后,就会执行 break, break 就是跳出 for 循环,结束循环.
  • 案例演示
    使用上面的 do…while 实现完成输出 10 句”hello,ok”
    在这里插入图片描述

5.7 多重循环控制(重点,难点)

5.7.1基本介绍

  1. 将一个循环放在另一个循环体内,就形成了嵌套循环。在外边的 for 称为外层循环在里面的 for
    循环称为内层循环。【建议一般使用两层,最多不要超过 3 层】
  2. 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false
    时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
  3. 外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次

5.7.2应用案例

  1. 统计 3 个班成绩情况,每个班有 5 名同学,求出各个班的平均分和所有班级的平均分[学生的成
    绩从键盘输入]
    编程时两大绝招
    (1) 先易后难, 即将一个复杂的问题分解成简单的问题。
    (2) 先死后活
    代码:
    在这里插入图片描述
    在这里插入图片描述
  2. 统计三个班及格人数,每个班有 5 名同学
    对上面的代码进行了一点修改
    在这里插入图片描述
  3. 打印金字塔经典案例
    使用 for 循环完成下面的案例请编写一个程序,可以接收一个整数,表示层数,打印出金字
  • 分析编程思路
  • 走代码
    在这里插入图片描述
    在这里插入图片描述
  1. 打印出九九乘法表
    在这里插入图片描述
    代码:
    在这里插入图片描述

5.8 跳转控制语句-break

5.8.1看一个具体需求,引出 break

随机生成 1-100 的一个数,直到生成了 99 这个数,看看你一共用了几次?
分析:编写一个无限循环的控制,然后不停的随机生成数,当生成了 99 时,就退出这个无限循环
==》break 提示使用
这里我们给大家说一下,如下随机生成 1-100 整数.
在这里插入图片描述

5.8.2break 的快速入门案例

在这里插入图片描述

5.8.3基本介绍:

break 语句用于终止某个语句块的执行,用于中断当前 for 循环或跳出 switch 语句。

5.8.4基本语法:

{ ……
break ……
}

5.8.5以 for 循环使用 break 为例,画出示意图

在这里插入图片描述

5.8.6break 的注意事项和使用细节

  1. break 语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
  2. 看一个案例
    在这里插入图片描述
  3. 对上面案例的说明
    (1) break 默认会跳出最近的 for 循环
    (2) break 后面可以指定标签,跳出标签对应的 for 循环

5.8.7课堂练习

  1. 100 以内的数求和,求出 当和 第一次大于 20 的当前数
    在这里插入图片描述
  2. 实现登录验证,有三次机会,如果用户名为”张无忌” ,密码”888”提示登录成功,否则提示
    还有几次机会
    在这里插入图片描述

5.9 跳转控制语句-continue

5.9.1基本介绍:

continue 语句用于结束本次循环,继续执行下一次循环。
continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这
个和前面的 break 标签的使用的规则一样. 5.9.2基本语法:
{ ……
continue ……
}

5.9.3continue 流程图

在这里插入图片描述

5.9.4案例分析 continue 的使用

在这里插入图片描述

5.9.5continu 的课堂练习

  • 练习
    在这里插入图片描述
  • continue 实现 打印 1——100 之内的奇数[要求使用 for 循环+continue]
    代码:
    在这里插入图片描述
  • 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为 0 时结束程序
    在这里插入图片描述
  • 课后练习题(同学们课后自己完成):
    某人有 100,000 元,每经过一次路口,需要交费,规则如下:
    当现金>50000 时,每次交 5%
    当现金<=50000 时,每次交 1000
    编程计算该人可以经过多少次路口,使用 for break 方式完成

5.10 跳转控制语句-goto

5.10.1 goto 基本介绍

  1. Go 语言的 goto 语句可以无条件地转移到程序中指定的行。
  2. goto 语句通常与条件语句配合使用。可用来实现条件转移,跳出循环体等功能。
  3. 在 Go 程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序
    都产生困难

5.10.2 goto 基本语法

goto label
… . label: statement

5.10.3 goto 的流程图

在这里插入图片描述

5.10.4 快速入门案例

在这里插入图片描述

5.11 跳转控制语句-return

5.11.1 介绍:

return 使用在方法或者函数中,表示跳出所在的方法或函数,在讲解函数的时候,会详细的介绍。
说明
在这里插入图片描述

  1. 如果 return 是在普通的函数,则表示跳出该函数,即不再执行函数中 return 后面代码,也可以
    理解成终止函数。
  2. 如果 return 是在 main 函数,表示终止 main 函数,也就是说终止程序

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

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

相关文章

智行致远丨美格智能亮相IOTE 2023 第十九届上海国际物联网展

5月17~19日&#xff0c;IOTE 2023第十九届上海国际物联网展盛大举办&#xff0c;全球超过350家参展企业到场展示先进的物联网技术和产品&#xff0c;盛况空前。本届展会以“IoT构建数字经济底座”为主题&#xff0c;将IoT技术引入实体经济领域&#xff0c;促进数字化转型和智能…

深度剖析JVM调优法则:从两大特性CPU、内存出发轻松掌握调优实战技巧

1、JDK自带工具 场景一、CPU过高 CPU占用过高排查思路&#xff1a;&#xff08;查进程->查线程列表->查线程堆栈&#xff09; step1&#xff1a;通过top命令查询占用CPU情况 top p.s.shiftp(大写的P-cpu排序) shiftm(大写的M-内存排序) step2&#xff1a;通过进程pi…

调试Dynaslam: Ubuntu系统下使用VS Code进行自动化调试Dynaslam的教程,包括tasks.json和launch.json的配置

调试Dynaslam: Ubuntu系统下使用VS Code进行自动化调试Dynaslam的教程&#xff0c;包括tasks.json和launch.json的配置 修改CMakeLists.txt文件 将SET(CMAKE_BUILD_TYPE Release)修改为SET(CMAKE_BUILD_TYPE Debug)不开启编译优化&#xff0c;在编译选项中包含 -g 参数来启用…

springboot+vue冬奥会科普平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的冬奥会科普平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌…

探索iOS之多摄像头预览架构

在iOS13.0开始支持多摄像头预览AVCaptureMultiCamSession&#xff0c;然后iOS15.0增加支持摄像头画中画预览。在使用之前&#xff0c;我们通过isMultiCamSupported()判断是否支持多Camera同时预览。 一、Camera架构 1、Camera流水线 Camera由AVCaptureDeviceInput、AVCaptur…

【实践篇】领域驱动设计:DDD工程参考架构 | 京东云技术团队

背景 为什么要制定参考工程架构 不同团队落地DDD所采取的应用架构风格可能不同&#xff0c;并没有统一的、标准的DDD工程架构。有些团队可能遵循经典的DDD四层架构&#xff0c;或改进的DDD四层架构&#xff0c;有些团队可能综合考虑分层架构、整洁架构、六边形架构等多种架构…

数据仓库选择Greenplum还是SQL-on-Hadoop

Greenplum和Hadoop都是为了解决大数据并行计算而出现的技术&#xff0c;二者的相似点在于&#xff1a; 分布式存储数据在多个节点上。采用分布式并行计算框架。支持向外扩展来提高整体的计算能力和存储容量。支持X86开放集群架构。 但两种技术在数据存储和计算方法上&#xf…

ADS-600树脂,除COD有机物树脂,大孔树脂型号,矿井水有机物

基于吸附功能的聚苯乙烯特种树脂 Tulsimer ADS-600 是一款没有离子官能基的&#xff0c;由交联聚苯乙烯合成的功能强大的吸附型树脂。 Tulsimer ADS-600 主要应用于水溶液中吸附酚及其化合物&#xff0c;氯代烃等含氯物质&#xff0c;表面活性剂&#xff0c;氨基酸&#…

Python系列模块之标准库OS详解

感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01; 目录 ​一、模块 1.1 模块的定义 1.2 模块的分类 1.3 模块的基本导入语法 二、Python中的包 三、标准库之os模块 实战&#xff1a; 钉钉告警应用 一、模块 1.1 模块的定义 Python 模块(Module)&a…

【JAVA程序设计】(C00139)基于Springboot+Thymeleaf的药店管理系统

基于SpringbootThymeleaf的药店管理系统 项目简介项目获取开发环境项目技术运行截图 项目简介 本项目为基于SpringbootThymeleaf的药店管理系统&#xff08;医院药品管理系统、医院管理系统&#xff09;&#xff0c;本项目主要功能为&#xff1a; 药品库存管理&#xff08;登记…

0基础学习VR全景平台篇第27章:场景管理-视角功能

大家好&#xff0c;欢迎收看蛙色平台免费教程&#xff01; 功能位置示意 一、本功能将用在哪里&#xff1f; 视角功能&#xff1a;指观看者打开场景时&#xff0c;默认展示的位置内容&#xff0c;可针对视角显示范围、视角远近范围进行设置。 应用场景&#xff1a;几乎每个作品…

通过nginx解决vue项目打包后跨域代理失效问题

这里 我的接口是写在 http://localhost:80上的 接口名是user 需要一个id路径参数 我们知道 80是默认 所以就可以不带端口因此访问就是http://localhost/user/1 然后 我vue项目中的 vue.config.js 配置如下 const { defineConfig } require(vue/cli-service) module.exports …

00后职场人,怎么做到刚来就涨薪5k? 原因竟是学会了这个宝藏工具

经常有粉丝问我有“有哪些适合绝大多数普通职场人的制作大屏的工具&#xff1f;” 确实&#xff0c;在这个内卷的时代&#xff0c;大家想要的是更加炫酷的汇报效果。要满足大多数职场人的大屏工具首先一定要满足以下三点&#xff1a; &#xff08;1&#xff09;简单易上手&am…

使用Python技术开发一个社区婴幼儿预防接种系统

婴幼儿预防接种作为社区预防保健的主要工作之一,是儿科临床和公共卫生保健的基础,目前国内外对婴幼儿预防接种工作非常重视。我们社区在工作中改变传统服务理念,根据不同年龄段婴幼儿的心理状态,采取不同心理护理应用,进行婴幼儿预防接种。 本论文主要论述了如何使用Python技术…

国际原油如何投资?国际原油期货投资策略有哪些?

国际原油产品的规模比较大&#xff0c;市场的交易环境是非常安全的&#xff0c;相信很多人都对国际原油产品的投资比较感兴趣&#xff0c;但是个人投资者需要注意&#xff1a;要买卖实体原油几乎是不可能的&#xff0c;投资者参与国际原油投资最方便快速的方式&#xff0c;就是…

【TCP】滑动窗口

滑动窗口 概念&#xff1a; 我们都知道 TCP 是每发送一个数据&#xff0c;都要进行一次确认应答。当上一个数据包收到了应答了&#xff0c; 再发送下一个。 这个模式就有点像我和你面对面聊天&#xff0c;你一句我一句。但这种方式的缺点是效率比较低的。 如果你说完一句话…

大数据面试题:请描述MapReduce中shuffle阶段的工作流程,如何优化shuffle阶段?

map阶段处理的数据如何传递给reduce阶段&#xff0c;是MapReduce框架中最关键的一个流程&#xff0c;这个流程就叫shuffle。 shuffle: 洗牌、发牌——&#xff08;核心机制&#xff1a;数据分区&#xff0c;排序&#xff0c;合并&#xff09;。 shuffle是Mapreduce的核心&…

【社区图书馆】记:读完《网络工程师的Python之路:网络运维自动化实战(第2版)》读后感【书评】

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 书籍整体感受书籍中分了11大章&#…

springboot+vue实习管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的实习管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

数据库链接池从100ms优化到3ms!

数据库连接池的配置是开发者们常常搞出坑的地方&#xff0c;在配置数据库连接池时&#xff0c;有几个可以说是和直觉背道而驰的原则需要明确。 1万并发用户访问 想象你有一个网站&#xff0c;压力虽然还没到Facebook那个级别&#xff0c;但也有个1万上下的并发访问——也就是…