Go语言学习Day3:数据类型、运算符与流程控制

名人说:莫愁千里路,自有到来风。 ——钱珝
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

目录

      • 1、数据类型
        • ①布尔类型
        • ②整型
        • ③浮点型
        • ④string
        • ⑤类型转换
      • 2、运算符
        • ①算术运算符
        • ②逻辑运算符
        • ③关系运算符
        • ④位运算符
        • ⑤赋值运算符
        • ⑥其它运算符
      • 3、流程控制
        • ①if(选择)
        • ②switch(选择)
        • ③for(循环)
        • ④break & continue
      • 4、总结

1、数据类型

①布尔类型

bool,表示逻辑值,可以是truefalse,例如一道判断读错的题,对就打√,错则写×,而这里的√就是true,×其实就是false,计算机里也一样,二进制,用0、1来代表对错,开关。

var isRight bool = true
if isRight {fmt.Println("正确")
} else {fmt.Println("错误")
}

案例:布尔型

//创作者:Code_流苏(CSDN)
package mainimport "fmt"func main() {//var 变量名 数据类型//bool: true false//bool 默认值为falsevar isFlag bool = truevar isFlag2 bool = falsefmt.Println(isFlag)//%T 用于输出一个值的类型//%t 用于格式化布尔值 如果有一个布尔型变量 b,使用 fmt.Printf("%t", b) 会输出 b 的值为 true 或 false。fmt.Printf("%T,%t\n", isFlag, isFlag)fmt.Printf("%T,%t\n", isFlag2, isFlag2)
}

image-20240326144134286

②整型

整型包括intint8int16int32int64以及它们的无符号版本uintuint8uint16uint32uint64。其中没有明确大小的intuint的大小依赖于执行程序的操作系统。

咱们常用的主要是int,例如一个人的年龄,年龄多大,这个数一般就是整型,整数:

var age int = 18
fmt.Println("年龄:", age)
③浮点型

float32float64,分别对应IEEE 754标准的单精度和双精度浮点数,这两个是咱们日后学习中常用的。

例如,咱们日常生活中常常会谈及身高问题,而身高按米来算的话往往就会涉及小数部分,此时就可以使用浮点数来进行这些数据的处理。

var height float64 = 1.75
fmt.Println("身高:", height)

案例:整型与浮点型。

package mainimport "fmt"func main() {//定义一个整型//byte uint8//rune int32//int int64var age int = -200fmt.Printf("%T,%d\n", age, age)//定义一个浮点型//默认是6位小数打印 3.140000var money float64 = 3.19fmt.Printf("%T,%.1f\n", money, money)var num1 float32 = -123.0000901var num2 float64 = -123.0000901fmt.Println("num1 = ", num1, "num2 = ", num2)
}

image-20240326144642188

④string

string,表示文本数据,相当于C++、Java里面的字符串类型。

案例:string类型。

package mainimport "fmt"func main() {var str stringstr = "Hello,yueliusu"fmt.Printf("%T,%s\n", str, str)// 单引号 字符,整型-ASCII字符码v1 := 'A'v2 := "A"//编码表 ASCII码表//扩展://所有的中国字的编码表:GBK//全世界的编码表:Unicodefmt.Printf("%T,%d\n", v1, v1) //int32,65fmt.Printf("%T,%s\n", v2, v2)//字符串连接 +fmt.Println("hello" + ",liusu")//转义字符\fmt.Println("hello\"liusu")fmt.Println("hello\nliusu") // n 换行符fmt.Println("hello\tliusu") // t制表符
}

image-20240326153058245

⑤类型转换

Go语言中要求显式的类型转换,使用形式如T(v)将值v转换为类型T,也就是你如果要转换类型,要给出指定的类型然后加()来转换。例如,将int类型的数据转换成float64类型。

var integer int = 10
var floatNumber float64 = float64(integer)
fmt.Println("转换后的浮点数:", floatNumber)

案例:int与float64之间的类型转换。

package mainimport "fmt"func main() {a := 3   //intb := 5.0 //float64//需求:将int类型的a转换为float64类型 类型转换c := float64(a)d := int(b)//整型是不能转化为bool类型的//e := bool(a)fmt.Printf("%T\n", a)fmt.Printf("%T\n", b)fmt.Printf("%T\n", c)fmt.Printf("%T\n", d)
}

image-20240326153116694

需要注意的是,有些类型是不能相互转换的。

2、运算符

①算术运算符

算术运算符就是咱们日常所见到的加减乘除等 ,用符号表示就是:+-*/%等。

例如,5加2等于几?

fmt.Println("5 + 2 =", 5+2) //5 + 2 = 7

案例:算术运算

package mainimport "fmt"func main() {var a int = 10var b int = 3//算术运算符:+ - * / % ++ --fmt.Println(a + b)fmt.Println(a - b)fmt.Println(a * b)fmt.Println(a % b)a++            // a++ 等同于 a = a + 1fmt.Println(a) // 10 + 1 = 11a--            //a-- 等同于 a = a - 1fmt.Println(a) // 11 - 1 = 10a = 100a--fmt.Println(a) // 100 - 1 = 99
}

image-20240326155709260

②逻辑运算符

逻辑运算符,顾名思义,重在思维逻辑,与或非,对应符号与表达:&&(AND)、||(OR)、!(NOT),与的意思就是只有大家一起努力,这个项目才能完成,非的意思是,这个项目只要有人能完成,不论多少人,这个项目就是完成,非的意思就很明显了,非真即假。

例如,true与false

fmt.Println("true && false =", true && false) //false

案例:逻辑运算

package mainfunc main() {var a bool = falsevar b bool = true//逻辑与&& 同时为真println(a && b)//逻辑或|| 一个为真就成立println(a || b)//逻辑非,真为假,假为真println(!a)
}

image-20240326160218259

③关系运算符

关系运算符,重点在关系,既然涉及到关系,必然涉及的多者,比如1与2,张三与李四,男生与女生等等,常用的关系运算符有:==!=<<=>>=

例如,比较5与2的大小。

fmt.Println("5 > 2 =", 5 > 2) //true

案例:11与10关系运算

package mainimport "fmt"func main() {var a int = 11var b int = 10//关系运算符 == != > < >= <=fmt.Println(a == b) //falsefmt.Println(a != b) //truefmt.Println(a < b)  //falsefmt.Println(a > b)	//truefmt.Println(a >= b)	//truefmt.Println(a <= b) //false}

image-20240326161156051

④位运算符

通过学习计组、操作系统,我们可以知道位运算是什么,因为计算机存储数据就是用的二进制01代码,而常说的一个二进制位,就是这里的位,位运算,也就是操控这些来进行的计算。对应的位运算符有:&(与 AND)、|(或 OR)、^(异或 XOR)、<<(左移)、>>(右移)。

详细来看,Go 语言支持的位运算符如下表所示。例如 A 为60,B 为13:

运算符描述实例
&按位与运算符"&"是双目运算符。都是1结果为1,否则是0(A & B) 结果为 12, 二进制为 0000 1100
|按位或运算符"|"是双目运算符。 都是0结果为0,否是是1(A | B) 结果为 61, 二进制为 0011 1101
^按位异或运算符"^"是双目运算符。 不同则为1,相同为0(A ^ B) 结果为 49, 二进制为 0011 0001
&^位清空,a &^ b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0.(A &^ B) 结果为 48, 二进制为 0011 0000
<<左移运算符"<<“是双目运算符。左移n位就是乘以2的n次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0。A << 2 结果为 240 ,二进制为 1111 0000
>>右移运算符">>“是双目运算符。右移n位就是除以2的n次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。A >> 2 结果为 15 ,二进制为 0000 1111

又如5与2:

fmt.Println("5 & 2 =", 5&2) //0,解释:5的4位二进制为0101,2的4位2进制位0010,两者做&运算,结果为0000,也就是0。

案例:位运算

package mainimport "fmt"func main() {//60的二进制 0011 1100var a uint = 60//13的二进制 0000 1101var b uint = 13//位运算var c uint = 0//按位与 & 同1则1,其余为0c = a & b//0011 1100//0000 1101//0000 1100 = 12fmt.Printf("%d,二进制形式为:%b \n", c, c)//按位或 | 同0则0,其余为1c = a | b//0011 1100//0000 1101//0011 1101 = 61fmt.Printf("%d,二进制形式为:%b \n", c, c)//按位异或 ^ 不同为1,相同为0c = a ^ bfmt.Printf("%d,二进制形式为:%b \n", c, c)//按位清空 &^ 对于b上的每位数值,若为0,则取a对应位上的数值,若为1,则取0c = a &^ bfmt.Printf("%d,二进制形式为:%b \n", c, c)//左移运算符 << 为双目运算符,左移n位就是乘以2的n次方c = a << 2fmt.Printf("%d,二进制形式为:%b \n", c, c)//右移运算符 >> 为双目运算符,右移n位就是除以2的n次方c = a >> 2fmt.Printf("%d,二进制形式为:%b \n", c, c)
}

image-20240326161756402

⑤赋值运算符

赋值运算符,类似于超市里有很多商品,需要赋予这些商品价值,而价值也可以通过价格来体现,价格就看做所赋予的值。赋值运算符常见的有:=+=-=*=/=等。

运算符描述实例
=简单的赋值运算符,将一个表达式的值赋给一个左值C = A + B 将 A + B 表达式结果赋值给 C
+=相加后再赋值C += A 等于 C = C + A
-=相减后再赋值C -= A 等于 C = C - A
*=相乘后再赋值C *= A 等于 C = C * A
/=相除后再赋值C /= A 等于 C = C / A
%=求余后再赋值C %= A 等于 C = C % A
<<=左移后赋值C <<= 2 等于 C = C << 2
>>=右移后赋值C >>= 2 等于 C = C >> 2
&=按位与后赋值C &= 2 等于 C = C & 2
^=按位异或后赋值C ^= 2 等于 C = C ^ 2
|=按位或后赋值C |= 2 等于 C = C | 2

例如,10+5

var a int = 10
a += 5
fmt.Println("a =", a) //15

案例:赋值运算

package mainimport "fmt"func main() {var a int = 21var c int// 赋值运算符"=" 将等号右边的值 赋值给左边c = afmt.Printf("第1行:= c的值为:%d\n", c)c += afmt.Printf("第2行:+= c的值为:%d\n", c)c -= afmt.Printf("第3行:-= c的值为:%d\n", c)c *= afmt.Printf("第4行:*= c的值为:%d\n", c)c /= afmt.Printf("第5行:/= c的值为:%d\n", c)c = 200c <<= 2fmt.Printf("第6行:<<= c的值为:%d\n", c)c >>= 2fmt.Printf("第7行:>>= c的值为:%d\n", c)c &= 2fmt.Printf("第8行:&= c的值为:%d\n", c)c ^= 2fmt.Printf("第9行:^= c的值为:%d\n", c)c |= 2fmt.Printf("第10行:|= c的值为:%d\n", c)
}

image-20240326162144099

⑥其它运算符

其它运算符还有用于指针的&(取地址)和*(指针解引用)等。

运算符描述实例
&返回变量存储地址&a; 将给出变量的实际地址。
*指针变量。*a; 是一个指针变量

案例:& 与 *

package mainimport "fmt"func main() {var a int = 4var b int32var c float32var ptr *int//& 返回变量存储地址 例如:&a; 取的是变量的实际地址//* 指针变量 例如:*a; a是一个指针变量/* 运算符实例 */fmt.Printf("1、a的变量类型为 %T \n", a)fmt.Printf("2、b的变量类型为 %T \n", b)fmt.Printf("3、c的变量类型为 %T \n", c)/* & 和 * 运算符实例 */ptr = &a /* 'ptr'接收了变量a的地址*/fmt.Printf("a的值为:%d\n", a)fmt.Printf("ptr的值为 %p\n", ptr)fmt.Printf("*ptr为%d\n", *ptr)
}

image-20240326162256760

3、流程控制

常见的结构主要有三种,顺序、选择、循环结构。如:

package mainfunc main() {//1、顺序结构:从上到下,逐行执行,默认逻辑//2、选择结构:条件满足某些代码才会执行 (满足某些条件)//if//switch//select 后面channel再讲//3、循环结构:条件满足某些代码被反复执行0到n次//for
}

顺序结构,咱们平时写代码、写作等顺序往往就是顺序结构,一个接着一个来,此处不再多讲,重点叙述一下选择结构和循环结构。

①if(选择)

基本的条件分支语句,可以使用elseelse if来扩展。

  • if
if score >= 90 {fmt.Println("A")
} 
  • if … else
if age := 18; age >= 18 {fmt.Println("成年")
} else {fmt.Println("未成年")
}
  • if … else if

案例1:分数评级

package mainimport "fmt"// if 如果 else if 否则如果 else否则
func main() {//var a int = 15////if a > 20 {//	fmt.Println("a>20")//}//if a > 10 {//	fmt.Println("a>10")//}var score intprintln("请输入分数:")fmt.Scanf("%d", &score)//评级 A B C D Eif score >= 90 && score <= 100 {fmt.Println("A")} else if score >= 80 && score < 90 {fmt.Println("B")} else if score >= 78 && score < 80 {fmt.Println("C")} else if score >= 60 && score < 70 {fmt.Println("D")} else {fmt.Println("E")}
}

image-20240326163311622

案例2:if嵌套,登录判断

//创作者:Code_流苏(CSDN)
package mainimport "fmt"func main() {var a, b intvar pwd int = 20221020//用户的输入fmt.Print("请输入密码:")fmt.Scan(&a)//业务:验证密码是否正确if a == pwd {fmt.Print("请再次输入密码:")fmt.Scan(&b)if b == pwd {fmt.Println("登录成功")} else {fmt.Println("登录失败,账户已锁定")}} else {fmt.Println("登录失败,密码错误")}
}

image-20240326163436720

②switch(选择)

用于基于不同的条件执行不同的代码块。Go的switch比其他语言更为灵活,表达式不必为常量或整数。

例如,星期几

dayOfWeek := 3
switch dayOfWeek {
case 1:fmt.Println("星期一")
case 2:fmt.Println("星期二")
default:fmt.Println("其他天")
}

案例1:成绩评级

package mainimport "fmt"func main() {var score intfmt.Scanf("%d", &score)//Switch匹配 caseswitch score {case 90:fmt.Println("A")case 80:fmt.Println("B")case 50, 60, 70:fmt.Println("C")default:fmt.Println("D")}
}

image-20240326163625153

案例2:fallthrough关键字

如果在 case 的代码块中使用了 fallthrough 关键字,即使这个 case 匹配成功,程序也会继续执行下一个 case 的代码块

package mainimport "fmt"// 如果在 case 的代码块中使用了 fallthrough 关键字,
// 即使这个 case 匹配成功,程序也会继续执行下一个 case 的代码块。
func main() {var num int = 1switch num {case 1:fmt.Println("one")fallthroughcase 2:fmt.Println("two")case 3:fmt.Println("three")default:fmt.Println("other number")}
}

image-20240326163912244

③for(循环)

Go语言中唯一的循环结构,可以用来实现传统的for循环、while循环(通过for实现)、无限循环(省略循环条件)。

例如,输出循环次数

for i := 0; i < 5; i++ {fmt.Println("循环次数:", i)
}

案例:计算1到100的和

package mainfunc main() {//for 条件的起始值:循环条件:控制变量自增或者自减//如果是全部省略,for {}的形式,循环将会因为没有条件的限制而一直进行下去sum := 0//计算1到100的和for i := 1; i <= 100; i++ {sum = sum + i}println(sum)
}

image-20240326164018090

案例2:打印5*5方阵

package mainimport "fmt"/*打印一个5×5的*方阵
*****
*****
*****
*****
******/
func main() {for i := 0; i < 5; i++ {for j := 0; j < 5; j++ {fmt.Print("*")}fmt.Print("\n")}
}

image-20240326164201381

案例3:打印9*9乘法表

package mainimport "fmt"// 目标:使用for循环打印99乘法表
func main() {// j 1 2 3for i := 1; i <= 9; i++ {for j := 1; j <= i; j++ {fmt.Printf("%d*%d=%d\t", j, i, i*j)}println()}
}

image-20240326164322295

④break & continue

break用于中断当前循环,continue用于跳过当前循环的剩余代码,直接开始下一次循环迭代。

例如,输出1到5之间的奇数。

for i := 0; i < 10; i++ {if i == 5 {break // 中断循环}if i%2 == 0 {continue // 跳过本次循环迭代}fmt.Println("奇数:", i)
}

案例:break & continue

//创作者:Code_流苏(CSDN)
package mainimport "fmt"func main() {//break 结束当前整个循环for i := 1; i <= 10; i++ {if i == 5 {break}fmt.Println(i)}println("break内容结束")//continue 结束单次循环for i := 1; i <= 10; i++ {if i == 5 {continue}fmt.Println(i)}println("continue内容结束")
}

image-20240326164428307

综上来看,Go语言的简洁性,一部分就体现在它的流程控制语句中:没有dowhile循环,switch比许多其他语言更加强大且灵活。

4、总结

分支结构

  • if

  • if … else if

  • if … else

  • if … else if … else if … else if… else

  • swtich - case

  • swtich - case - fallthrough

  • swtich - case - default

循环

  • for init;end;post {}
  • for { } 死循环
  • break
  • continue
  • for循环的嵌套使用。

很感谢你能看到这里,如有相关疑问,还请下方评论留言。
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
希望本篇内容能对大家有所帮助,如果大家喜欢的话,请动动手点个赞和关注吧,非常感谢你们的支持!

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

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

相关文章

竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…

Go-Gin-Example 第八部分 优化配置接口+图片上传功能

文章目录 前情提要本节目标 优化配置结构讲解落实修改配置文件优化配置读取及设置初始化顺序第一步 验证 抽离file 实现上传图片接口图片名加密封装image的处理逻辑编写上传图片的业务逻辑增加图片上传的路由 验证实现前端访问 http.FileServerr.StaticFS修改文章接口新增、更新…

Spark RDD、DataFrame和DataSet的区别

Spark RDD、DataFrame和DataSet的区别 在比较这三者的区别之前&#xff0c;先看看他们各自的定义是什么。 Spark RDD RDD是一种弹性分布式数据集&#xff0c;是一种只读分区数据。它是spark的基础数据结构&#xff0c;具有内存计算能力、数据容错性以及数据不可修改特性。 S…

[CISCN2019 华东北赛区]Web2

[CISCN2019 华东北赛区]Web2 随便注册一个登录&#xff0c;发现 还有反馈页面&#xff0c;一看就知道大概率是xss&#xff0c;应该是为了得到管理员cookie扫描了一下&#xff0c;果然有admin.php后台登录 buu可以连接访问外网了&#xff0c;所以内部的xss平台关闭了&#xff0…

静态住宅IP好用吗?怎么选择?

在进行海外 IP 代理时&#xff0c;了解动态住宅 IP 和静态住宅 IP 的区别以及如何选择合适的类型非常重要。本文将介绍精态住宅 IP 特点和&#xff0c;并提供选择建议&#xff0c;帮助您根据需求做出明智的决策。 静态住宅 IP 的特点 静态住宅 IP 是指 IP 地址在一段时间内保…

深度理解文件操作

目录 文件 文件名&#xff1a; 标准流 文件指针 文件的打开和关闭 文件的顺序读写&#xff1a; 使用部分 文件的打开和关闭 文件 文件分两种&#xff0c;第一种是程序文件&#xff0c;后一种是数据文件。 程序文件&#xff1a;包括源程序文件&#xff08;后缀为.c&…

如何使用WordPress插件保护网站的安全

前段时间我们的网站受到了黑客的攻击&#xff0c;网站丢失了一些重要的数据&#xff0c;为了防止这种情况的再次发生&#xff0c;我们准备将网站全部迁移到高防服务器&#xff0c;经过一番对比后&#xff0c;我们选择了Hostease提供的高防服务器。它可以有效地抵御各种类型的网…

银行单元化架构体系介绍

1.背景 自2018年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;我国科技受制于人的现状对国家稳定和经济发展都提出了严峻考验。目前我国IT架构体系严重依赖国外产品&#xff0c;金融行业尤其明显。大部分传统银行的关键账务系统都架设在IBM的大型机、小型机之上&…

【jenkins+cmake+svn管理c++项目】创建一个项目

工作台点击"新建item",进入下图&#xff0c;选择Freestyle project,并输入项目名称&#xff0c; 点击确定之后进入项目配置页面&#xff0c;填写描述&#xff0c;然后在下边源码管理部分选择svn, 填写代码的url 上图的Credentials处填写svn的有效登录名和密码&#x…

VMware虚拟机中的Ubuntu Samba映射Windows10文件夹

sudo apt-get install samba安装Samba mkdir share创建共享文件夹 sudo vim /etc/samba/smb.conf编辑配置文件 [share]comment VMware Ubuntu Sharepath /home/zhu/share browseable yeswritable yescreate mask 777comment 是简介 path 是共享文件夹的路径&#xff0c…

【MATLAB源码-第15期】基于matlab的MSK的理论误码率与实际误码率BER对比仿真,采用差分编码和IQ调制解调。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在数字调制中&#xff0c;最小频移键控&#xff08;Minimum-Shift Keying&#xff0c;缩写&#xff1a;MSK&#xff09;是一种连续相位调制的频移键控方式&#xff0c;在1950年代末和1960年代产生。[1] 与偏移四相相移键控&a…

“数字化”持续走热,VR全景助力制造业上“云”

制造业要升级&#xff0c;数字化改造是重要途径。 早年间&#xff0c;由于对数字化的认识不足&#xff0c;一些企业明明有数字化改造需求&#xff0c;却不敢、不愿、不会上“云”。直到此次两会期间&#xff0c;2024年政府工作报告再次提出推动制造业数字化转型&#xff0c;越…

网络——套接字编程TCP

目录 服务端 创建套接字&#xff08;socket&#xff09; 服务端绑定&#xff08;bind&#xff09; 服务端监听&#xff08;listen&#xff09; 服务器接收&#xff08;accept&#xff09; 服务端处理&#xff08;read & write&#xff09; 客户端 创建套接字&#…

CVE-2022-33891 Apache Spark shell 命令注入漏洞分析

漏洞简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架 Spark&#xff0c;拥有Hadoop MapReduce所具有的优点&#xff1b;但不同于MapReduce的…

鸿蒙OS开发实例:【demo选择列表限定数量】

效果图&#xff1a; 示例代码 // 使用 DevEco Studio 3.1.1 Release 及以上版本&#xff0c;API 版本为 api 9 及以上。 // 主要功能及注意事项&#xff1a; // 该组件展示了一个乘客选择列表。列表中的每个项目包含一个复选框和对应的乘客姓名&#xff0c; // 用户点击任意一…

MATLAB 自定义生成圆柱点云(49)

MATLAB 自定义生成圆柱点云(49) 一、算法介绍二、具体实现1.代码2.效果一、算法介绍 按照一些提前指定的圆柱参数,自定义生成圆柱点云,可添加噪声,用于后续的实验测试 二、具体实现 1.代码 代码如下(示例): % 指定圆柱的参数 radius = 5; % 圆柱半径 height = 20…

【Spring源码】Bean采用什么数据结构进行存储

一、前瞻 经过上篇源码阅读博客的实践&#xff0c;发现按模块阅读也能获得不少收获&#xff0c;而且能更加系统地阅读源码。 今天的阅读方式还是按模块阅读的方式&#xff0c;以下是Spring各个模块的组成。 那今天就挑Beans这个模块来阅读&#xff0c;先思考下本次阅读的阅读…

Jmeter脚本优化——随机函数

线程组下有 2 个请求的参数中均使用到相同的参数&#xff0c;在进行参数化时&#xff0c;想 要每个请求使用不同的取值。 &#xff08; 1 &#xff09; 线程组设置如下 &#xff08; 2 &#xff09; 线程组下添加加购物车请求&#xff0c;请求传参包含商品 id &#xff08;…

前端日期组件layui使用,月模式

初学前端&#xff0c;实战总结 概要 有一个日期组件&#xff0c;我的谷歌浏览器选完日期后&#xff0c;偶尔获取不到最新数据&#xff0c;有一个客户&#xff0c;是经常出不来数据。 日期组件是Wdate&#xff1a;调用的方法是WdatePicker onpicking&#xff0c;代码片段如下…

基于AT89C51单片机的智能交通灯设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/89035863?spm1001.2014.3001.5503 1绪 论 1.1课题研究背景 交通是城市经济活动的命脉&#xff0c;对城市经济发展、人民生活水平的提高起着十分重要的作用。城市交…