go语言的使用方法

news2024/11/18 7:47:14

一.go语言的介绍

1.简介

2.应用领域

3.使用go语言的公司

4.go语言开发工具介绍

5.go语言开发环境搭建

【1】搭建Go开发环境-安装和配置SDK

基本介绍:

  • 1).SDK的全称(Software Development Kit软件开发工具包)
  • 2).SDK是提供给开发人员使用的,其中包含了对应的开发语言的工具包。

【2】.SDK下载

  • 1).Go语言的官网为:golang.org无法访问,需要翻墙
  • 2).SDK下载地址:Goloang中文社区:https://studygolang.com/dl

【3】.安装sdk:

  • 请注意:安装路径不要有中文或者特殊符号如空格等
  • SDK安装目录建议:一般我安装在d:golang安装时,基本上是傻瓜式安装,解压可以使用
  • 一定要注意看版本号哦,不然会下错的哦
  • 解压之后会出现一个go的整个文件夹就是配置环境

6.DOS

【1】.DOS操作系统

  • --Microsoft公司推出的操作系统。(在windows之前的操作系统)
  • --Dos是英文"Dis Operating System"的缩写,在其中含意是"磁盘操作系统"
  • --Dos是单用户、单任务操作系统(只能执行一个任务)

【2】.Dos命令

  • --在windows中,我们通过鼠标菜单来操作系统,而在dos操作系统中,要通过dos命令来操作系统。
  • --是Dos操作系统的命令,是一种面向键盘的操作命令
  • --不区分大小写

【3】命令学习

  • 命令提示符:win+r---->cmd

【4】具体dos命令

  • 1).显示详细信息:dir

  • 2).清屏:cls
  • 3).切换历史命令:上下箭头
  • 4).补全命令:tab按键
  • 5).创建命令、删除命令:

7.测试SDK环境搭建成功

【1】进入到go语言的目录下查看是否安装成功

【2】如果我想要在任意的路径下执行某个命令,需要将这个命令所在的目录配置到环境变量path中

【3】.重新验证一下:

二.go语言的使用

1.第一段程序:Helloworld快速入门

【1】.go语言基本结构:

【2】第一个Helloworld

package main  //声明文件所在的包,每个go文件必须有归属的包
import "fmt" //引入程序中需要用的包,为了使用包下的函数
func main() {  //主函数,程序的入口
	fmt.Println("Hello Golang!")  //在控制台打印输出一句话,双引号中的内容会原样输出
}

【3】对源文件test.go进行编译:

go build

【4】执行操作:

【5】通过go run直接可以帮我们编译执行源文件:

【6】.编译的注意事项:

可以在编译的时候重新去命名一个新的名字

2.语法上的注意事项

  • 1).源文件以"go"为扩展名
  • 2).程序的执行入口是main()函数
  • 3).严格区分大小写
  • 4).方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang的简洁性
  • 5).Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则会报错。
  • 6).定义的变量或者import 的包如果没有使用到,代码不能编译通过。
  • 7).大括号都是成对出现的,缺一不可。

3.注释的作用:

  • 用于注释说明解释程序的文字就是注释,注释提高了代码的阅读性;
  • 注释是一个程序原必须要具有的良好的编程习惯
  • 将自己的思想通过注释先整理出来,在用代码去体现

【2】Golang中注释类型

  • 1).行注释 // ctrl +/在按一次取消注释
  • 2).块注释(多行注释) /**/ shift + alt + a再按一次取消注释

go语言的官方文档库:https://studygolang.com/pkgdoc

三.基本变量与类型

变量

1.变量的引入
  • 一个程序就是一个世界
  • 不论是使用哪种高级程序语言编写程序,变量都是程序的基本组成单位
2.变量的介绍

变量相当于内存中一个数据存储空间的表示

3.变量的使用步揍
  • 声明
  • 赋值
  • 使用

package main

import "fmt"

func main() {
	// 1.变量的声明
	var age int
	// 2.变量的赋值
	age = 18
	// 3.变量的使用
	fmt.Println("age = ", age)

	// 声明和赋值可以合成一句
	var age2 int = 19
	fmt.Println("age2 = ", age2)
}

如果一个变量age被重复定义之后会报错 ,不可以再赋值的时候给不匹配的类型

4.变量四种的使用形式
package main

import "fmt"

func main() {
	// 第一种:变量的使用方式
	var num int = 18
	fmt.Println(num)
	// 第二种:使用变量的类型,但是不赋值,使用默认值
	var num2 int
	fmt.Println(num2)

	// 第三种:如果没有写变量的类型,那么会根据等号后面的值进行判定变量的类型(自动类型的判断)
	var num3 = "tom"
	fmt.Println(num3)

	// 第四种:省略var :=不能写为=
	sex := "男"
	fmt.Println(sex)
}

5.声明多个变量
package main

import "fmt"

// 全局变量:定义再函数外面的变量叫做全局变量
var n7 = 100
var n8 = 9.7

// 以上定义全局变量太麻烦了,可以一次性声明
var (
	n9  = 715
	n10 = "myy"
)

func main() {
	// 定义在{}里面的变量叫做局部变量
	// 第一种:变量的使用方式
	var num int = 18
	fmt.Println(num)
	// 第二种:使用变量的类型,但是不赋值,使用默认值
	var num2 int
	fmt.Println(num2)

	// 第三种:如果没有写变量的类型,那么会根据等号后面的值进行判定变量的类型(自动类型的判断)
	var num3 = "tom"
	fmt.Println(num3)

	// 第四种:省略var :=不能写为=
	sex := "男"
	fmt.Println(sex)

	fmt.Println("-----------------------------------------------------")

	// 声明多个变量
	var n1, n2, n3 int
	fmt.Println(n1)
	fmt.Println(n2)
	fmt.Println(n3)

	var n4, name, n5 = 10, "jack", 7.5
	fmt.Println(n4)
	fmt.Println(name)
	fmt.Println(n5)

	n6, height := 6.9, 100.6
	fmt.Println(n6)
	fmt.Println(height)

	fmt.Println(n7)
	fmt.Println(n8)
	fmt.Println(n9)
	fmt.Println(n10)
}

数据类型

整数类型

1.整数类型介绍

简单来说,用于存放整数值的,比如10,-45

2.有符号整数类型:

代码测试超出范围:

3.无符号整数类型

超出边界报错:

4.其他数据类型
类型有无符号占用存储空间
int

32位系统~4字节

64位系统~8字节

uint

32位系统~4字节

64位系统~8字节

rune等价int32
byte等价uint8

变量占用的字节数:

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	// 定义一个整数类型
	var num1 int8 = 120
	fmt.Println(num1)

	// var num2 uint8 = 200
	// fmt.Println(num2)
	var num3 = 28
	// printf函数的作用:格式化,把num3类型填充到%p的位置上
	fmt.Printf("num3的类型是:%p", num3)
	fmt.Println(unsafe.Sizeof(num3))
}

浮点类型:

1.浮点类型介绍:

简单来说,就是用于存放小数值的,比如3.14、0.28

2.浮点类型种类:

  • 底层存储空间和操作无关
  • 浮点类型底层存储:符号位+指数位+尾数位,所以尾数位只存了一个大概,很可能会出现精度的损失
package main

import "fmt"

func main() {
	// 定义浮点类型的数据
	var num1 float32 = 3.14
	fmt.Println(num1)
	// 可以表示正浮点数,也可以表示负浮点数
	var num2 float32 = -3.14
	fmt.Println(num2)
	// 浮点数可以用十进制表示,也可以用科学计数法表示形式,E大小写都可以
	var num3 float32 = 314e-2
	fmt.Println(num3)
	var num4 float32 = 314e+2
	fmt.Println(num4)
	var num5 float32 = 314e+2
	fmt.Println(num5)
	var num6 float64 = 314e+2
	fmt.Println(num6)

	// 浮点数可能会有精度损坏,所以通常情况下,建议你使用:float64
	var num7 float32 = 256.00000000916
	fmt.Println(num7)
	var num8 float64 = 256.00000000916
	fmt.Println(num8)

	// golang中默认的浮点类型为:float64
	var num9 = 3.17
	fmt.Printf("num9对应的默认的类型为:%T", num9)
}

字符类型

package main

import "fmt"

func main() {
	// 定义字符类型的数据:
	var c1 byte = 'a'
	fmt.Println(c1) //97
	var c2 byte = '6'
	fmt.Println(c2) //54
	var c3 byte = '('
	fmt.Println(c3 + 20) //40
	// 字符类型,本质上就是一个整数,也可以直接参与运算,输出字符的时候,会将对应的码值做一个输出
	// 字母,数字,标点等字符,底层是按照ASCII进行存储

	var c4 int = '中'
	fmt.Println(c4)
	// 汉字字符,底层对应的是Unicode码值
	// 对应的码值为20013,byte类型溢出,能存储范围:可以用int
	// 总结:Golang的字符对应的使用是UTF-8编码

	var c5 byte = 'A'
	// 想显示对应的字符,必须采用格式化输出
	fmt.Printf("c5对应的具体的字符为:%c",c5)
}

1.转义字符
package main

import "fmt"

func main() {
	// 练习转义字符
	// \n换行
	fmt.Println("aaa\nbbb")
	// \b退格
	fmt.Println("aaa\bbbb")
	// \r 光标回到本行开头,后续输入就会替换原本的字符
	fmt.Println("aaaaa\rbbb")
	// \t制表符
	fmt.Println("aaaaaaaaaa")
	fmt.Println("aaaa\tbbbb")
	fmt.Println("aaaaaaaa\tbbbb")

	// \"
	fmt.Println("\"Golang\"")
}

布尔类型

  • 布尔类型也叫bool类型,bool类型只允许取值true和false
  • 布尔类型占1个字节
  • 布尔类型适合于逻辑运算,一般用于流程来控制
  • package main
    
    import "fmt"
    
    func main() {
    	// 测试布尔类型的数值:
    	var flag01 bool = true
    	fmt.Println(flag01)
    
    	var flag02 bool = false
    	fmt.Println(flag02)
    
    	var flag03 bool = 5 < 9
    	fmt.Println(flag03)
    }

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。

package main

import "fmt"

func main() {
	// 1.定义一个字符串:
	var s1 string = "你好全面拥抱Golang"
	fmt.Println(s1)
	// 2.字符串是不可变的:指的是字符串一旦定义好,其中的字符的值不能改变
	// var s2 string = "abc"
	// s2 = "def"
	// s2[0] = 't'
	// fmt.Println(s2)
	// 3.字符串的表示形式:
	// (1).如果字符串没有特殊字符,字符串的表示形式用双引号
	var s3 string = "abcdefghigklmnopqrstuvwsyz"
	fmt.Println(s3)
	// (2).如果字符串中有特殊符号,字符串的表示形式用反引号``
	var s4 string = `
		package main
		import "fmt"
		func main() {
			// 测试布尔类型的数值:
			var flag01 bool = true
			fmt.Println(flag01)

			var flag02 bool = false
			fmt.Println(flag02)

			var flag03 bool = 5 < 9
			fmt.Println(flag03)
		}`
	fmt.Println(s4)

	//4.字符串的拼接效果
	var s5 string = "abc" + "def"
	s5 += "hijk"
	fmt.Println(s5)

	// 5.当一个字符串过长的时候:
	var s6 string = "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def" + "abc" + "def"

	fmt.Println(s6)
}

基本类型的默认值

package main

import "fmt"

func main() {
	var a int
	var b float32
	var c float64
	var d bool
	var e string
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
	fmt.Println(d)
	fmt.Println(e)
}

 数据类型之间的转换

  • Go在不同类型的变量之间赋值时需要显式转换,并且只有显示转换(强制转换).
  • 表达式T(v)将值转换为类型T
  • T:就是数据类型
  • v:就是需要转换的变量
  • package main
    
    import "fmt"
    
    func main() {
    	// 进行类型转换:
    	var n1 int = 100
    	// var n2 float32 = n1 在这里 自动转换不好使,比如显示转换
    	fmt.Println(n1)
    	// fmt.Println(n2)
    	var n2 float32 = float32(n1)
    	fmt.Println(n2)
    	// 注意:n1的类型其实还是int类型,只是将n1的值100转为了float32而已,n1还是int的类型
    	fmt.Printf("%T", n1) //int
    	fmt.Println()
    
    	// 将int64转为int8的时候,编译不会出错的,但是会数据的溢出
    	var n3 int64 = 888888
    	var n4 int8 = int8(n3)
    	fmt.Println(n4) //56
    
    	var n5 int32 = 12
    	var n6 int64 = int64(n5) + 30 //一定匹配=左右的数据类型
    	fmt.Println(n5)
    	fmt.Println(n6)
    
    	var n7 int64 = 12
    	var n8 int8 = int8(n7) + 127 //编译通过,但是结果可能会溢出
    	// var n9 int8 = int8(n7) + 128  //编译不会溢出
    	fmt.Println(n8)
    	// fmt.Println(n9)
    }
    
1.基本数据类型转为String

基本数据类型和string的转换介绍

  • 在程序开发中,我们经常需要将基本数据类型转成string类型。或者将string类型转换成基本数据类型

基本类型转型为string类型

  • 方式1:fmt.Springf("%参数",表达式)  ---- 重点关注,推荐使用
  • package main
    
    import "fmt"
    
    func main() {
    	var n1 int = 19
    	var n2 float32 = 4.78
    	var n3 bool = false
    	var n4 byte = 'a'
    
    	var s1 string = fmt.Sprintf("%d", n1)
    	fmt.Printf("s1对应的类型是:%T,s1=%q \n", s1, s1)
    
    	var s2 string = fmt.Sprintf("%f", n2)
    	fmt.Printf("s2对应的类型是:%T,s2=%q \n", s2, s2)
    
    	var s3 string = fmt.Sprintf("%t", n3)
    	fmt.Printf("s3对应的类型是:%T,s3=%q \n", s3, s3)
    
    	var s4 string = fmt.Sprintf("%c", n4)
    	fmt.Printf("s4对应的类型是:%T,s4=%q \n", s4, s4)
    }
  • 方式2:使用strconv包的函数
  • package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func main() {
    	var n1 int = 18
    	var s1 string = strconv.FormatInt(int64(n1), 10) //参数:第一个参数必须转为int64类型,第二个参数指定字面值的进制形式为十进制
    	fmt.Printf("s1对应的类型是:%T,s1=%q \n", s1, s1)
    
    	var n2 float64 = 4.29
    	var s2 string = strconv.FormatFloat(n2, 'f', 9, 64)
    	// 第二个参数:'f'(-ddd.ddd) 第三个参数:9保留小数后面9位
    	fmt.Printf("s2对应的类型是:%T,s1=%q \n", s2, s2)
    
    	var n3 bool = true
    	var s3 string = strconv.FormatBool(n3)
    	fmt.Printf("s3对应的类型是:%T,s1=%q \n", s3, s3)
    }
    

2.String转为基本数据类型

string类型转为基本数据类型

方法:使用strconv包的函数

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// string --->bool
	var s1 string = "true"
	var b bool
	// ParseBool这个函数的返回值有两个:(value bool,err,error)
	// value就是我们得到的布尔类型的数据,err出现的错误
	// b = strconv.ParseBool(s1)
	// 我们只关注得到的布尔类型的数据,err可以用_直接忽略
	b, _ = strconv.ParseBool(s1)
	fmt.Printf("b对应的类型是:%T,b=%v \n", b, b)

	// string --->int64
	var s2 string = "19"
	var num1 int64
	num1, _ = strconv.ParseInt(s2, 10, 64)
	fmt.Printf("num1的类型是:%T,num1=%v \n", num1, num1)

	// string -->float32/float64
	var s3 string = "3.14"
	var f1 float64
	f1, _ = strconv.ParseFloat(s3, 64)
	fmt.Printf("f1的类型是:%T,f1=%v \n", f1, f1)

	var s4 string = "true"
	var b1 bool
	b1, _ = strconv.ParseBool(s4)
	fmt.Printf("b1对应的类型是:%T,b1=%v \n", b1, b1)

	// 注意:string向基本数据类型转换的时候,一定确保string类型能够转成有效的数据类型,否则最后得到的结果就是按照对应类型的默认值输出
	var s5 string = "19"
	var num2 int64
	num2, _ = strconv.ParseInt(s5, 10, 64)
	fmt.Printf("num2的类型是:%T,num2=%v \n", num2, num2)
}

复杂数据类型

1.指针

基本数据类型和内存:

package main

import (
	"fmt"
)

func main() {
	var age = 18
	// &符号+变量就可以获取这个变量的内存地址
	fmt.Println(&age) //0xc00005c030

	// 定义一个指针变量
	// var 代表要声明一个变量
	// ptr对应的类型是:*int是一个指针类型(可以理解位指向int类型的指针)
	// &age就是一个地址,是ptr变量得具体的值
	var ptr *int = &age
	fmt.Println(ptr)
	fmt.Println("ptr本身这个存储空间得地址为:", &ptr)

	// 想获取ptr这个指针或者这个地址指向得那个数据:
	fmt.Printf("ptr指向得数值为:%v", *ptr) //ptr指向得数值为:18

}

 

指针的细节:

  • 可以通过指针改变指向值
  • 指针变量接收的一定是地址值
  • 指针变量的地址不可以不匹配
  • 铺设:*float32意味着这个指针指向的是float32类型的数据,但是&num对应的int类型的不可以。
  • 基本数据类型(又叫值类型),都对应的指针类型,形式为*数据类型,比如int的对应的指针就是*int,float32对应的指针类型就是*float32,依此类推
2.标识符:

变量,方法等,只能是起名字的地方,那个名字叫做标识符

标识符的定义规则:

  • 三个可以(组成部分):数字,字母,下划线_
  • 不建议使用,建议字母:26字母
  • 四个注意:不可以以数字开头,严格区分大小写,不能包含空格,不可以使用go中的保留关键字。
  • 见名知意:增加可读性
  • 下划线”_“本身在Go中是一个特殊的标识符,称为空标识符。可以代表任何其它的标识符,但是它对应的值会被忽略(比如:忽略某个返回值)。所以仅能被作为占位符使用,不能单独作为标识符使用。
  • 可以用如下形式,但是不建议:varint=10(int,float32,float64等不算是保留关键字,但是也尽量不要使用)
  • 长度无限制, 但是不建议太长 asdfasdfasdfasdfasdfasdfasdfasdfasdfasfd

起名规则:

  • (1)包名:尽量保持package的名字和目录保持致, 尽量采取有意义的包名,简短,有意义,不要和标准库不要冲突
  • (2)变量名、函数名、常量名:采用驼峰法。
  • (3)如果变量名、函数名、常量名首字母大写,则可以被其他的包访间;如果首字母小写,则只能在本包中使用

注意:

  • import导入语句通常放在文件开头包声明语句的下面。
  • 导入的包名需要使用双引号包裹起来。
  • 包名是从$GOPATH/src/后开始计算的,使用/进行路径分隔。

需要定义一个环境变量

main/test.go 

package main

import (
	"fmt"
	"gocode/testproject01/unit2/demo17/test"
)

// 程序的入口函数
func main() {
	// 如果util.go中定义的是StuNo的话,那么在test.go中应该能够访问到
	fmt.Println(test.StuNo)
}

test/utils.go

package test

var StuNo int = 20034 //定义学生的学号
 3.关键字和预定义标识符:

关键字就是程序发明者规定得有特殊含义得单词,又叫保留字。go语言中一共有25个关键字

预定义标识符:一共36个预定标识符,包含基础数据类型和系统内嵌函数·

 

四.运算符

1.算术运算符

算数运算符:+_*/%++,--

算术运算符是对数值类型得变量进行运算的,比如,加减乘除

package main

import "fmt"

func main() {
	// +加号
	// 1.正数2.相加操作3.字符串拼接
	var n1 int = +10
	fmt.Println(n1)
	var n2 int = 4 + 7
	fmt.Println(n2)
	var s1 string = "abc" + "def"
	fmt.Println(s1)

	//  / 除号
	fmt.Println(10 / 3)   //两个int类型数据运算,结果一定为整数类型
	fmt.Println(10.0 / 3) //浮点类型参与运算,结果为浮点类型

	// %取模,等价公式
	fmt.Println(10 % 3)
	fmt.Println(-10 % 3)
	fmt.Println(10 % -3)
	fmt.Println(-10 % -3)

	// ++自增操作
	var a int = 10
	a++
	fmt.Println(a)
	// ++自增 加1操作,--自减 减1操作
	// go语言里,++,--操作非常简单,只能单独使用,不能参与到运算中
	// ++,--只能再变量后面,不能写在变量的前面 --a  ++a都是错误的
}

 

2.赋值运算符

  • 赋值运算符:=,+=,-=*=,/=,%=
  • 赋值运算符就是将某个运算后得值,赋给指定的变量
package main

import "fmt"

func main() {
	var num1 int = 10
	fmt.Println(num1)
	var num2 int = (10+20)%3 + 3 - 7 //=右侧得值清楚后,再赋值给左侧
	fmt.Println(num2)

	var num3 int = 10
	num3 += 20
	fmt.Println(num3)

	// 练习:交换两个值并输出结果
	var a int = 8
	var b int = 4
	fmt.Printf("a = %v,b = %v", a, b)
	// 交换
	// 引入一个中间变量
	var t int
	t = a
	a = b
	b = t
	fmt.Printf("a = %v,b=%v", a, b)
}

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

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

相关文章

STM32实验之USART串口发送+接受数据(二进制/HEX/文本)

涉及三个实验&#xff1a; 1.USART串口发送和接收数据 我们使用的是将串口封装成为一个Serial.c模块.其中包含了 void Serial_Init(void);//串口初始化 void Serial_SendByte(uint8_t Byte);//串口发送一个字节 void Serial_SendArray(uint8_t *Array,uint16_t Length);//…

第一讲:单片机STC89C52+RA8889驱动控制彩屏(源码公开)

51单片机驱动控制彩屏系列讲座 第一讲&#xff1a;单片机STC89C52RA8889驱动控制彩屏&#xff08;源码公开&#xff09; 单片机通过SPI与RA8889进行通信&#xff0c;由于单片机是5V&#xff0c;RA8889是3.3V,故需要进行电平转换&#xff0c;有现成的模组TXS0108E等可以采用。…

VRTK4教程 一:资源导入、Unity设置、连接头盔

文章目录 VRTK4的分包导入VRTK4的资源包unity设置连接头盔 VRTK4的分包 vrtk4的资源包和旧版不同&#xff0c;采用了分包导入的思想&#xff0c;我们要用什么功能&#xff0c;就导入什么包&#xff0c;可以有效减小程序体积 如下图&#xff0c;已经导入的vrtk包会显示在Packag…

CentOS下安装SVN客户端及使用方法

一、前言 Subversion&#xff08;SVN&#xff09;是一款开源的版本控制系统&#xff0c;它可以帮助开发者追踪和管理代码、文档或其他文件的更改历史。在Linux系统中&#xff0c;特别是在CentOS环境下&#xff0c;安装和使用SVN客户端是日常工作中常见的任务。本文将介绍如何在…

【错误记录】HarmonyOS 运行报错 ( Failure INSTALL_PARSE_FAILED_USESDK_ERROR )

文章目录 一、报错信息二、问题分析三、解决方案 一、报错信息 在 DevEco Studio 中 , 使用 远程设备 , 向 P40 Failure[INSTALL_PARSE_FAILED_USESDK_ERROR] compileSdkVersion and releaseType of the app do not match the apiVersion and releaseType on the device. 二、…

在outlook的邮件中插入HTML;HTML模板获取;页面组态手动生成HTML

本文介绍如何在outlook发送邮件时&#xff0c;在邮件中插入HTML&#xff0c;此HTML可以从获取模板自行进行修改。 文章目录 一、下载HTML模板&#xff08;或自己制作好HTML文件&#xff09;二、outlook新增宏三、新建邮件&#xff0c;插入HTML四、通过图像化页面组态手动生成HT…

[C#]使用C#部署yolov8-cls的图像分类的tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll&#xff0c;TensorRtExtern源码地址&#xff1a;TensorRT-CShar…

汇舟问卷:国外问卷调一天900

大家好&#xff0c;我是汇舟问卷&#xff0c;专注于国外问卷调查互联网项目。夏天已经来临&#xff0c;您是否在三伏天顶着大太阳上班&#xff0c;汗水浸湿了衣襟&#xff0c;却依然要面对繁琐的工作和无尽的压力&#xff1f; 在这个炎热的季节里&#xff0c;我们都渴望找到一…

失落的方舟 命运方舟台服账号怎么注册 游戏账号最全图文注册教程

探索奇幻大陆阿克拉西亚的奥秘&#xff0c;加入《失落的方舟》&#xff08;Lost Ark&#xff09;这场史诗般的冒险。这是一款由Smilegate精心雕琢的MMORPG巨作&#xff0c;它融合了激烈动作战斗与深邃故事叙述&#xff0c;引领玩家步入一个因恶魔侵袭而四分五裂的世界。作为勇敢…

教学基本功包括什么技能有哪些

教师的工作不仅仅是传授知识&#xff0c;更多是引导学生探索&#xff0c;激发他们的创造力。要做到这一点&#xff0c;需要具备一些基本技能。 扎实的专业知识。这是教师的根基&#xff0c;如果教师自己对所教的科目都不熟悉&#xff0c;那么教学就会失去方向。不断学习更新自己…

29-ESP32-S3-WIFI篇-00 STA模式扫描全部 AP

ESP32-S3 WIFI_Driver 引言 ESP32-S3是一款集成了Wi-Fi和蓝牙功能的芯片。关于WIFI的部分&#xff0c;其实内容比我想象的要多得多。所以通常来说&#xff0c;如果你想要编写自己的Wi-Fi应用程序&#xff0c;最快捷的方法就是先找一个类似的示例应用&#xff0c;然后将它的相…

SC8205LA 20VN沟道增强型MOS(Mos)场效应管

特点 ❥专有的先进平面技术 ❥高密度超低电阻设计 ❥大功率、大电流应用 ❥理想的锂电池应用 ❥封装形式:SOT23-6

计算成像技术在信息复原及增强中的研究进展

​欢迎关注GZH《光场视觉》 摘要&#xff1a;计算成像是融合了光学设计、光学传感和图像处理的新兴技术领域&#xff0c;突破了传统成像技术获取信息的深度和广度限制&#xff0c;成为国际研究热点&#xff0c;是先进光学成像技术的重要发展方向。综合国内外文献和相关报道&am…

20240529瑞芯微官方Toybrick TB-RK3588开发板的Debian11下使用SCP拷贝文件

20240529瑞芯微官方Toybrick TB-RK3588开发板的Debian11下使用SCP拷贝文件 2024/5/29 20:48 1、ADB链接异常。 2、BT打开之后找不到设备&#xff1f; 不清楚&#xff1a;是我拿到的开发板的问题&#xff0c;还是Toybrick/Rockchip官方没有做好。 3、现在最新版本的WINSCP&…

Linux---网络相关配置

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 一台主机需要配置必要的网络信息&#xff0c;才可以连接到互联网&#xff0c;需要的配置网络信息包括IP&#xff0c;子网掩码&#xff0c;网关和DNS。 一.查看网络信息 查看IP信息可以通…

应用上架后的关键!苹果商店(AppStore)运营策略与技巧指南

1、运营期&#xff1a;怎么能活得好&#xff1f; ▍封号和下架问题 14天 在收到苹果封号通知&#xff08;我们将会在14天后封你的账号&#xff09;如果觉得冤枉可以在14天内进行申诉。14天并不是一个严格准确的时间&#xff0c;有可能会在第15天或者在第20天&#xff0c;甚至…

Kali 我来了

Kali 我来了 1、官网下载2、修改密码3、开启SSH远程登录服务4、关闭kali图形化界面 1、官网下载 官方链接: https://www.kali.org/ 下载链接: https://cdimage.kali.org/kali-2024.1/kali-linux-2024.1-vmware-amd64.7z 解压后 直接导入 VmWare 就可使用可爱的小 Kali 了。 …

半个月获邀请函|在读博士公派新加坡南洋理工大学联合培养

J同学计划先申报CSC联培博士&#xff0c;如若获批&#xff0c;再走本校的联培资助项目。我们仅用半个月时间&#xff0c;就为其申请到新加坡南洋理工大学&#xff0c;因导师接收名额有限制&#xff0c;其又热心推荐了另一位指导导师&#xff0c;最终J同学如愿获得学校资助出国联…

社交变革:探索Facebook如何塑造我们的日常生活

在数字化时代的潮流中&#xff0c;社交媒体已经成为了我们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的佼佼者&#xff0c;无疑扮演着至关重要的角色。本文将深入探讨Facebook在社交变革中所发挥的作用&#xff0c;以及它如何塑造着我们的日常生活。 1. 社交网…

AIGC降重:如何2分钟降低论文AI率和查重率?推荐使用SpeedAI科研小助手

确保学术论文的独立性与诚信性&#xff0c;对于学业的成就及学位的获取至关重要&#xff0c;其中&#xff0c;论文的人工智能查重与降低AIGC相似度扮演着核心角色。 常规的查重手段主要围绕查重软件的运用和个体的自行审查&#xff1b;而降重则通常通过语句重组、同义替换、内…