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

news2024/11/19 9:26:25

名人说:莫愁千里路,自有到来风。 ——钱珝
创作者: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 main

import "fmt"

func main() {
	//var 变量名 数据类型
	//bool: true false
	//bool 默认值为false
	var isFlag bool = true
	var isFlag2 bool = false
	fmt.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 main

import "fmt"

func main() {
	//定义一个整型
	//byte uint8
	//rune int32
	//int int64
	var age int = -200
	fmt.Printf("%T,%d\n", age, age)

	//定义一个浮点型
	//默认是6位小数打印 3.140000
	var money float64 = 3.19
	fmt.Printf("%T,%.1f\n", money, money)

	var num1 float32 = -123.0000901
	var num2 float64 = -123.0000901
	fmt.Println("num1 = ", num1, "num2 = ", num2)
}

image-20240326144642188

④string

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

案例:string类型。

package main

import "fmt"

func main() {
	var str string
	str = "Hello,yueliusu"
	fmt.Printf("%T,%s\n", str, str)

	// 单引号 字符,整型-ASCII字符码
	v1 := 'A'
	v2 := "A"

	//编码表 ASCII码表
	//扩展:
	//所有的中国字的编码表:GBK
	//全世界的编码表:Unicode

	fmt.Printf("%T,%d\n", v1, v1) //int32,65
	fmt.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 main

import "fmt"

func main() {

	a := 3   //int
	b := 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 main

import "fmt"

func main() {
	var a int = 10
	var b int = 3

	//算术运算符:+ - * / % ++ --
	fmt.Println(a + b)
	fmt.Println(a - b)
	fmt.Println(a * b)
	fmt.Println(a % b)
	a++            // a++ 等同于 a = a + 1
	fmt.Println(a) // 10 + 1 = 11
	a--            //a-- 等同于 a = a - 1
	fmt.Println(a) // 11 - 1 = 10
	a = 100
	a--
	fmt.Println(a) // 100 - 1 = 99
}

image-20240326155709260

②逻辑运算符

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

例如,true与false

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

案例:逻辑运算

package main

func main() {
	var a bool = false
	var 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 main

import "fmt"

func main() {
    var a int = 11
    var b int = 10

    //关系运算符 == != > < >= <=
    fmt.Println(a == b) //false
    fmt.Println(a != b) //true
    fmt.Println(a < b)  //false
    fmt.Println(a > b)	//true
    fmt.Println(a >= b)	//true
    fmt.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 main

import "fmt"

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

import "fmt"

func main() {
	var a int = 21
	var c int
	// 赋值运算符"=" 将等号右边的值 赋值给左边
	c = a
	fmt.Printf("第1行:= c的值为:%d\n", c)
	c += a
	fmt.Printf("第2行:+= c的值为:%d\n", c)
	c -= a
	fmt.Printf("第3行:-= c的值为:%d\n", c)
	c *= a
	fmt.Printf("第4行:*= c的值为:%d\n", c)
	c /= a
	fmt.Printf("第5行:/= c的值为:%d\n", c)

	c = 200

	c <<= 2
	fmt.Printf("第6行:<<= c的值为:%d\n", c)

	c >>= 2
	fmt.Printf("第7行:>>= c的值为:%d\n", c)

	c &= 2
	fmt.Printf("第8行:&= c的值为:%d\n", c)

	c ^= 2
	fmt.Printf("第9行:^= c的值为:%d\n", c)

	c |= 2
	fmt.Printf("第10行:|= c的值为:%d\n", c)
}

image-20240326162144099

⑥其它运算符

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

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

案例:& 与 *

package main

import "fmt"

func main() {
	var a int = 4
	var b int32
	var c float32
	var 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 main

func 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 main

import "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 int

	println("请输入分数:")
	fmt.Scanf("%d", &score)
	//评级 A B C D E
	if 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 main

import "fmt"

func main() {
	var a, b int
	var 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 main

import "fmt"

func main() {
	var score int
	fmt.Scanf("%d", &score)
	//Switch匹配 case
	switch 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 main

import "fmt"

// 如果在 case 的代码块中使用了 fallthrough 关键字,
// 即使这个 case 匹配成功,程序也会继续执行下一个 case 的代码块。
func main() {
	var num int = 1
	switch num {
	case 1:
		fmt.Println("one")
		fallthrough
	case 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 main

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

image-20240326164018090

案例2:打印5*5方阵

package main

import "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 main

import "fmt"

// 目标:使用for循环打印99乘法表
func main() {
    // j 1 2 3
    for 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 main

import "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.coloradmin.cn/o/1547816.html

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

相关文章

STM32学习笔记(6_8)- TIM定时器的编码器接口代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

원클릭으로 주류 전자상거래 플랫폼 상품 상세 데이터 수집 및 접속 시연 예제 (한국어판)

클릭 한 번으로 전자상거래 플랫폼 데이터를 캡처하는 것은 일반적으로 웹 페이지에서 정보를 자동으로 추출 할 수있는 네트워크 파충류 기술과 관련됩니다.그러나 모든 형태의 데이터 수집은 해당 웹 사이트의 사용 약관 및 개인 정보 보호 정책 및 현지 법률 및 규정을 준수…

百度蜘蛛池平台在线发外链-原理以及搭建教程

蜘蛛池平台是一款非常实用的SEO优化工具&#xff0c;它可以帮助网站管理员提高网站的排名和流量。百度蜘蛛池原理是基于百度搜索引擎的搜索算法&#xff0c;通过对网页的内容、结构、链接等方面进行分析和评估&#xff0c;从而判断网页的质量和重要性&#xff0c;从而对网页进行…

JAVA面试大全之基础篇

目录 1、语法基础 1.1、面向对象特性&#xff1f;​​​​​​​ 1.2、a a b 与 a b 的区别 1.3、3*0.1 0.3 将会返回什么? true 还是 false? 1.4、能在 Switch 中使用 String 吗? 1.5、对equals()和hashCode()的理解? 1.6、final、finalize 和 finally 的不同之…

【物联网开源平台】tingsboard二次开发

别看这篇了&#xff0c;这篇就当我的一个记录&#xff0c;我有空我再写过一篇&#xff0c;编译的时候出现了一个错误&#xff0c;然后我针对那一个错误执行了一个命令&#xff0c;出现了绿色的succes,我就以为整个tingsboard项目编译成功了&#xff0c;后面发现的时候&#xff…

怎么清理苹果电脑内存?CleanMyMac X4.15.2最新中文版使用教程

近日&#xff0c;我的苹果电脑似乎遭遇了一点小麻烦&#xff0c;每当深入工作或沉浸于娱乐之时&#xff0c;突如其来的一个警告弹窗就像一颗冰凉的霰弹&#xff0c;打断了我所有的思绪&#xff1a;内存不足&#xff01;&#xff01;&#xff01;怎么清理苹果电脑内存&#xff0…

机器学习——神经网络简单了解

一、神经网络基本概念 神经网络可以分为生物神经网络和人工神经网络 (1)生物神经网络,指的是生物脑内的神经元、突触等构成的神经网络&#xff0c;可以使生物体产生意识&#xff0c;并协助生物体思考、行动和管理各机体活动。 (2)人工神经网络,是目前热门的深度学习的研究…

蔓灵花组织wmRAT分析

wmRAT分析 MD5&#xff1a;35639088a2406aa9e22fa8c03e989983 样本分析 多次调用sleep函数绕过沙箱检测。 创建线程获取username computername 磁盘驱动器个数 通过域名microsoft.com获取ip地址 通过c2服务器域名maxdimservice.com获取ip地址85.239.53.31 408460函数获取…

44 el-dialog 的 appendToBody 属性, 导致 vue 响应式失效

前言 我们经常会碰到 一些 模型和视图 不同步的问题 通常意义上 主要的问题为 列表的某响应式数据更新着更新着 后面就变成非响应式对象了, 然后 就造成了 数据一直在更新, 但是 视图的渲染后面就未渲染了, 这是一个由于 模型上的问题 导致的数据的不在响应式更新 又或者 是…

借力AI+视频号电商,腾讯广告业务这驾马车能跑多远?

腾讯的“功劳簿”又添上了几笔。 日前&#xff0c;腾讯披露了2023年四季度及全年财报。报告显示&#xff0c;2023年&#xff0c;腾讯营收6090.15亿元&#xff0c;同比增长10%&#xff1b;调整后净利润&#xff08;Non-IFRS&#xff09;1576.88亿元&#xff0c;同比增长36%。 …

在stable diffusion中手指纠错的指令和关键词是什么?

在Stable Diffusion模型中&#xff0c;如果您想对生成的图像中的手指进行纠错&#xff0c;您可以在描述中使用特定的指令和关键词来引导模型关注于手指区域并作出调整。 "Perfect hand" &#xff08;完美的手&#xff09; "Five fingers" &#xff08;五个…

中国科学院半导体研究所汪林望:在曙光超级计算机上对第一性原理计算软件LS3DF进行1000万个硅原子模拟

编者荐语&#xff1a; 面对纳米材料等大体系时&#xff0c;电荷补丁法可以计算几千甚至上万原子&#xff0c; 但是电荷补丁法作为非自洽计算&#xff0c;不能给出原子受力&#xff0c;也不能用来弛豫原子坐标。面对摩尔条纹或线性位错等问题&#xff0c;我们需要弛豫原子的坐标…

javaSwing模拟写字板

一、摘要 目前&#xff0c;很多新的技术领域都涉及到了Java语言&#xff0c;Java语言是面向对象编程&#xff0c;并且涉及到网络、多线程等重要的基础知识&#xff0c;因此Java语言也是学习面向对象编程和网络编程的首选语言。此简易JAVA写字板程序&#xff0c;使用Java程序编…

Object Detection--Loss Function:从IoU到CIoU

本篇总结Loss Function中的IoU系列代码。 1. IoU 交并集&#xff0c;两个框交集面积除以并集面积。&#xff08;论写写画画的重要性&#xff09;&#xff08;找原文看看&#xff09; """ box1[x1, y1, x2, y2] box2[x1, y1, x2, y2] return iou ""…

Qt 作业 24/3/26

1、实现闹钟 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QLineEdit>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent …

python(django)之单一接口管理功能后台开发

1、创建数据模型 在apitest/models.py下加入以下代码 class Apis(models.Model):Product models.ForeignKey(product.Product, on_deletemodels.CASCADE, nullTrue)# 关联产品IDapiname models.CharField(接口名称, max_length100)apiurl models.CharField(接口地址, max_…

关键技术解析:CH-99除硼树脂在超纯水制备中对硼高效去除的应用实践与性能优势

超纯水(UPW)是科技和研究领域的关键资源&#xff0c;其中硼元素的去除对于保证其品质至关重要。本文将介绍一种高效的除硼技术——Tulsimer CH-99树脂&#xff0c;并阐述其在超纯水制备中的应用及优势。 首先&#xff0c;让我们了解超纯水的制备过程。超纯水是通过一系列精密的…

JAVA面试大全之集合IO篇

目录 1、集合 1.1、Collection 1.1.1、集合有哪些类&#xff1f; 1.1.2、ArrayList的底层&#xff1f; 1.1.3、ArrayList自动扩容&#xff1f; 1.1.4、ArrayList的Fail-Fast机制&#xff1f; 1.2、MAP 1.2.1、Map有哪些类&#xff1f; 1.2.2、JDK7 HashMap如何实现…

二进制日志备份与恢复

二进制备份是 MySQL 数据库备份的一种方式&#xff0c;它通过记录数据库的所有更改操作&#xff0c;以二进制格式保存&#xff0c;实现对数据库的增量备份和恢复。binlog_format 是 MySQL 中用来指定二进制日志格式的参数&#xff0c;有三种常见的选项&#xff1a;STATEMENT、R…

就业班 第二阶段 2401--3.26 day6 Shell初识 连接vscode

远程连接vs_code可能出现的问题 C:\Users\41703\.ssh 验证远程主机的身份&#xff0c;如果连不上vscode&#xff0c;可以尝试删除这里面的公钥代码。 重新安装那个扩展&#xff0c;排除扩展本身的问题 谁连过我&#xff0c;并操作了什么 curl https://gitea.beyourself.org.c…