Go语言的使用

在安装Go和配置镜像时,可以根据操作系统和网络环境来选择适合的步骤。以下是详细的安装步骤和镜像配置:

1. 安装Go

1.1 通过官方下载
  • 访问 Go的官方下载页面 下载适合操作系统的安装包(Windows、macOS 或 Linux)。
  • 安装包下载完成后,按照操作系统对应的步骤安装即可。
1.2 通过包管理器安装(推荐)
  • macOS:可以使用Homebrew安装:
    brew install go
    
  • Linux:可以使用aptyum来安装Go(具体版本可能有所不同):
    # Ubuntu/Debian
    sudo apt update
    sudo apt install -y golang# CentOS/RHEL
    sudo yum install -y golang
    
  • Windows:可以使用choco安装(前提是已经安装Chocolatey):
    choco install golang
    
1.3 验证安装

安装完成后,运行以下命令检查安装是否成功:

go version

输出Go的版本信息即表示安装成功。

2. 配置环境变量

Go语言安装目录下的bin路径需要添加到PATH环境变量中,以便在终端中直接运行go命令。

  • Linux/macOS

    • 编辑~/.bashrc~/.zshrc文件(取决于使用的Shell),添加以下内容:
      export PATH=$PATH:/usr/local/go/bin
      
    • 保存后,运行以下命令以使更改生效:
      source ~/.bashrc  # 或者 ~/.zshrc
      
  • Windows

    • 右键“此电脑”,选择“属性” -> “高级系统设置” -> “环境变量”。
    • 在“系统变量”中找到Path,添加Go的安装路径(例如 C:\Go\bin)。

✨3. 配置Go模块代理(镜像)

由于国内访问国外的依赖库可能较慢,可以配置Go的代理来加速。

3.1 配置代理地址

可以使用国内的Go代理,如阿里云、七牛云或官方的代理地址。

在终端中执行以下命令:

# 阿里云
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct# 七牛云
go env -w GOPROXY=https://goproxy.cn,direct# 官方代理(通常全球范围可用)
go env -w GOPROXY=https://proxy.golang.org,direct
3.2 检查配置

运行以下命令,确认配置是否生效:

go env | grep GOPROXY

如果输出的GOPROXY为你设置的代理地址,说明配置成功。

4. 常见问题

  • 如果安装完成后,go version仍然无法识别,确保环境变量已生效。
  • 如果在中国大陆以外的环境使用,可能不需要代理;若不使用代理,运行以下命令取消代理配置:
    go env -w GOPROXY=direct
    

Go语言(Golang)因其简洁、并发性强、高效等特点,适用于多种场景,尤其是在构建高并发、高性能的服务时表现突出。以下是Go语言的一些主要应用场景:

1. 后端服务和微服务架构

Go的并发特性和较低的内存占用使其成为构建后端服务的理想选择,尤其适合微服务架构。Go语言内置的并发支持(goroutinechannel)可以在不依赖其他库的情况下轻松构建高并发的服务。

  • 应用场景:RESTful API 服务、微服务系统、消息队列、实时数据处理。
  • 示例:Uber、Netflix、Dropbox 等公司使用Go构建后端服务。

2. 云计算和分布式系统

Go语言在构建云计算和分布式系统方面非常流行,得益于其高效的性能和简洁的语法,可以快速构建、部署和扩展大型系统。Go编写的服务可以在高流量环境下稳定运行,适合云原生开发。

  • 应用场景:云平台、容器化平台、分布式存储。
  • 示例:Docker、Kubernetes、Etcd、Prometheus等知名云计算和容器管理系统均使用Go开发。

3. DevOps 工具

Go语言的编译结果是静态链接的独立二进制文件,这使得其在开发运维(DevOps)领域尤其受欢迎。Go编译生成的程序可以直接运行,无需额外依赖,这使得在不同系统上进行分发和部署非常方便。

  • 应用场景:自动化运维工具、CI/CD工具、系统管理工具。
  • 示例:流行的DevOps工具如Terraform(基础设施管理)、Consul(服务网格)、以及Caddy(HTTP服务器)都是使用Go编写的。

4. 网络编程和实时通信

Go语言对网络编程的支持非常出色,其内置的net/http包和并发特性使得网络编程变得简洁而高效。Go语言的网络库在实现HTTP服务器、TCP服务器、WebSocket应用和其他实时通信系统方面表现出色。

  • 应用场景:实时聊天系统、在线游戏服务器、网络代理、IoT设备通信。
  • 示例:许多聊天系统、社交平台以及物联网服务使用Go来处理大量实时连接。

5. 数据处理与数据管道

Go语言的性能足以支持复杂的数据处理任务,尤其是在处理流式数据、数据转换、ETL(提取、转换、加载)操作等方面表现良好。它的并发编程能力使其可以高效地处理批量数据,并在数据管道中流式传递数据。

  • 应用场景:数据流处理、日志收集、数据转换、流式处理。
  • 示例:企业可以使用Go来搭建ETL流水线、实时数据分析平台、日志处理服务等。

6. 命令行工具和系统工具

Go的跨平台编译支持和简单的包管理使得它特别适合编写高效、可移植的命令行工具。Go语言的CLI工具不仅可以用于系统管理,还能处理文件操作、网络监控等任务。

  • 应用场景:命令行工具、系统管理脚本、数据抓取工具。
  • 示例:K9s(Kubernetes集群管理工具)、gopass(密码管理器)、fzf(模糊查找工具)等。

7. 区块链开发

由于Go语言的高性能和强大并发能力,在区块链系统中也得到了广泛应用。许多区块链平台需要处理大量并发交易并确保数据一致性,这正是Go的优势所在。

  • 应用场景:区块链节点、智能合约、分布式账本。
  • 示例:以太坊的官方实现之一Geth(Go-Ethereum)就是用Go开发的,Hyperledger Fabric(企业级区块链平台)也使用了Go。

8. Web开发

虽然Go语言没有复杂的Web框架,但内置的net/http包以及其他第三方库(如Gin、Echo)使得Web开发变得相对简单。Go的Web开发适合需要高性能的API服务,而不需要繁重的业务逻辑。

  • 应用场景:高性能API服务、简单Web应用、单页应用的后端。
  • 示例:很多高并发API服务和Web应用使用Go来实现后端服务,如API Gateway等。

9. 人工智能和机器学习

尽管Python在AI/ML领域更常见,但Go也逐渐发展出了一些机器学习库,适用于需要高性能和快速计算的简单机器学习任务,特别是在数据管道和实时数据处理方面的AI/ML应用。

  • 应用场景:实时推荐系统、数据预处理、简单的机器学习服务。
  • 示例:GoLearn、Gorgonia等Go语言的机器学习库提供了基础的AI/ML支持。

10. 游戏开发(主要是后端服务)

虽然Go并非专为游戏开发设计,但它非常适合用于游戏的后端开发,尤其是需要处理大量并发连接的在线游戏。通过WebSocket或TCP协议可以实现实时的游戏通信。

  • 应用场景:多人在线游戏的后端服务、实时通信服务器、游戏数据处理。
  • 示例:许多在线多人游戏的后端服务选择了Go来处理实时通信和高并发请求。

Go语言以其出色的并发支持、高性能、跨平台编译和易用性,适合需要高并发处理的后端服务、微服务、云原生应用、网络编程和系统工具开发等场景。


Go语言开发可以在多种集成开发环境(IDE)中进行,以下是一些常用的Go语言开发工具和IDE,涵盖了不同的开发需求。

1. ✨Visual Studio Code (VS Code)

  • 简介:VS Code 是一个轻量级、跨平台的编辑器,支持多种语言的开发。通过安装插件,可以很好地支持Go语言。
  • Go插件使用Go插件(由Go团队开发和维护)来提供语法高亮、代码补全、调试、Linting和格式化等功能。
  • 优点
    • 插件生态丰富,支持多种扩展。
    • 内存占用相对较少,启动速度快。
    • 可以集成Git、Docker、数据库等多种开发工具。
  • 适用人群:适合习惯轻量级编辑器、需要快速开发的开发者。

2. Goland

  • 简介:Goland 是 JetBrains 专门为 Go 语言开发的强大 IDE,提供了全方位的功能支持和智能代码提示。
  • 主要功能:支持代码补全、重构、调试、Linting、依赖管理、单元测试等功能。Goland有非常完善的代码提示和自动补全功能,尤其适合大型项目。
  • 优点
    • 专为Go开发设计,内置了Go语言开发相关的工具。
    • 丰富的代码分析功能,可以快速发现代码问题。
    • 提供完整的调试、重构、测试支持。
  • 缺点:需要付费订阅(可以试用,学生和开源项目可以免费)。
  • 适用人群:适合专业开发人员、大型项目的开发团队。

3. Atom

  • 简介:Atom 是 GitHub 推出的开源文本编辑器,支持通过插件来拓展功能。
  • Go插件:安装go-plus插件可以获得基本的Go语言支持,包括语法高亮、Linting和代码格式化等。
  • 优点
    • 自定义性强,可以根据需要安装各种插件。
    • 跨平台支持,界面友好。
    • 开源免费。
  • 缺点:内存占用相对较高,某些功能响应稍慢。
  • 适用人群:适合喜欢高度自定义的开发者。

4. Sublime Text

  • 简介:Sublime Text 是一个轻量级编辑器,具有极快的启动速度和响应速度。
  • Go插件:安装GoSublime插件,提供Go语言支持,代码补全、Linting、调试和格式化等。
  • 优点
    • 启动和运行速度快,非常轻量。
    • 支持快捷键丰富,操作方便。
  • 缺点:需付费注册,且Go语言支持相对基础。
  • 适用人群:适合小项目或简单的Go代码编辑。

5. LiteIDE

  • 简介:LiteIDE 是专为 Go 语言设计的轻量级开源IDE,提供了基本的Go语言开发功能。
  • 主要功能:语法高亮、代码补全、调试、项目管理、交叉编译等功能。
  • 优点
    • 专为Go设计,集成度较高。
    • 内置Go语言开发常用工具,适合快速开发。
  • 缺点:功能不如VS Code和Goland丰富,界面较为简单。
  • 适用人群:适合Go初学者和对IDE要求较简单的开发者。

6. Vim/NeoVim

  • 简介:Vim是一款经典的文本编辑器,配合插件支持,可以很强大。NeoVim是Vim的分支,优化了异步功能和插件管理。
  • Go插件:通过安装vim-go插件可以获得完整的Go语言支持,涵盖语法高亮、代码补全、Linting、调试、单元测试等功能。
  • 优点
    • 极快的响应速度,轻量且适合编写代码。
    • 支持多种插件,灵活且可高度自定义。
  • 缺点:学习曲线较高,需要熟练掌握Vim的操作。
  • 适用人群:适合习惯Vim操作的开发者和喜欢定制化开发环境的程序员。

7. Eclipse with GoClipse

  • 简介:Eclipse是经典的开源IDE,通过安装GoClipse插件可以提供Go语言支持。
  • 主要功能:支持语法高亮、代码补全、项目管理、集成调试等。
  • 优点
    • 跨平台且免费。
    • 可以集成其他语言插件,适合多语言开发。
  • 缺点:配置稍繁琐,功能和体验不如Goland和VS Code。
  • 适用人群:适合习惯Eclipse的用户或希望多语言开发的开发者。

8. Notepad++(Windows)

  • 简介:Notepad++是一款在Windows平台上非常流行的文本编辑器。
  • Go插件:虽然Notepad++没有专门的Go插件,但可以通过简单的语法高亮配置来编写Go代码。
  • 优点
    • 轻量,适合快速编辑。
    • 界面友好,操作简单。
  • 缺点:功能相对基础,不适合大型项目。
  • 适用人群:适合Windows用户进行快速代码编辑。

9. Emacs

  • 简介:Emacs 是一款强大的文本编辑器,具有高度可定制性。
  • Go插件:使用go-mode和其他插件,可以提供Go语言支持。
  • 优点
    • 功能强大,插件丰富。
    • 可高度定制,适合老牌Emacs用户。
  • 缺点:学习曲线较高,配置较为复杂。
  • 适用人群:适合Emacs的忠实用户和喜欢高度自定义的开发者。

10. IntelliJ IDEA with Go插件

  • 简介:IntelliJ IDEA 是一款功能强大的IDE,可以通过安装Go插件(GoGoLang Support Plugin)来支持Go语言。
  • 主要功能:代码补全、调试、重构、Linting等。通过插件可以集成对Go语言的支持。
  • 优点
    • 功能全面,适合多语言开发。
    • 支持版本控制、数据库集成等功能。
  • 缺点:Go语言支持不如Goland原生,资源占用相对较高。
  • 适用人群:适合同时进行多语言开发的用户和习惯使用IntelliJ IDEA的开发者。

总结

  • 轻量编辑器:如VS Code、Atom、Sublime Text,适合日常快速编辑和小型项目。
  • 专业IDE:如Goland、IntelliJ IDEA,适合Go专业开发人员,功能强大,支持大型项目。
  • 开源与经典:如Vim/NeoVim、Emacs,适合喜欢高度定制和轻量级开发环境的开发者。

✨ Go的基本语法

1. 变量和常量

package mainimport "fmt"func main() {// 变量声明var a int = 10var b = 20         // 自动推断类型c := 30            // 简短声明(只能在函数内部使用)// 常量const pi = 3.14fmt.Println("a:", a, "b:", b, "c:", c, "pi:", pi)
}
在 Go 语言中,短声明(short variable declaration)是一种简洁的方式来声明并初始化变量。短声明使用 := 操作符,语法如下:
variable := value
基本用法
package mainimport "fmt"func main() {// 短声明a := 42b := "hello"c := truefmt.Println(a, b, c) // 输出: 42 hello true
}
多变量声明

你还可以在同一行中声明多个变量:

package mainimport "fmt"func main() {x, y := 10, 20fmt.Println(x, y) // 输出: 10 20
}
函数返回值

短声明也可以用于接收函数的返回值:

package mainimport ("fmt""math/rand""time"
)func main() {// 初始化随机数生成器rand.Seed(time.Now().UnixNano())// 接收函数返回值num := rand.Intn(100)fmt.Println(num) // 输出一个 0 到 99 之间的随机数
}
  1. 作用域:短声明只能在函数内部使用,不能在包级别的声明中使用。

  2. 重复声明:在一个作用域内,同一个变量名不能被多次短声明。例如:

    package mainimport "fmt"func main() {a := 42a := 100 // 编译错误: cannot declare and initialize the same variable twice in the same blockfmt.Println(a)
    }
    

    但是,如果你已经声明了一个变量,可以在同一个作用域内重新赋值:

    package mainimport "fmt"func main() {a := 42a = 100 // 合法fmt.Println(a) // 输出: 100
    }
    
  3. 多变量赋值:如果函数返回多个值,可以使用短声明同时接收多个返回值:

    package mainimport "fmt"func divide(a, b int) (int, error) {if b == 0 {return 0, fmt.Errorf("division by zero")}return a / b, nil
    }func main() {result, err := divide(10, 2)if err != nil {fmt.Println("Error:", err)} else {fmt.Println("Result:", result) // 输出: Result: 5}
    }
    

短声明是 Go 语言中非常实用的特性,可以使代码更加简洁和易读。但在使用时需要注意作用域和重复声明的问题。

2. 基本数据类型和类型转换

package mainimport "fmt"func main() {var i int = 42var f float64 = float64(i)  // 类型转换var u uint = uint(f)fmt.Printf("i: %d, f: %f, u: %d\n", i, f, u)
}

3. 控制结构

条件语句
package mainimport "fmt"func main() {age := 18if age >= 18 {fmt.Println("You are an adult.")} else {fmt.Println("You are a minor.")}// switch语句day := 2switch day {case 1:fmt.Println("Monday")case 2:fmt.Println("Tuesday")default:fmt.Println("Other day")}
}
循环语句

Go语言中只有一种循环结构:for

package mainimport "fmt"func main() {// 基本的for循环for i := 0; i < 5; i++ {fmt.Println(i)}// 类似while循环count := 0for count < 3 {fmt.Println(count)count++}// 遍历数组arr := []string{"apple", "banana", "cherry"}for index, value := range arr {fmt.Printf("index: %d, value: %s\n", index, value)}
}

4. 函数和多返回值

package mainimport "fmt"// 定义一个有返回值的函数
func add(x int, y int) int {return x + y
}// 多返回值函数
func divide(dividend, divisor int) (int, int) {quotient := dividend / divisorremainder := dividend % divisorreturn quotient, remainder
}func main() {sum := add(10, 5)fmt.Println("Sum:", sum)quotient, remainder := divide(10, 3)fmt.Printf("Quotient: %d, Remainder: %d\n", quotient, remainder)
}

5. 指针

package mainimport "fmt"func main() {x := 10ptr := &x            // 获取变量的地址fmt.Println("Address of x:", ptr)fmt.Println("Value of x:", *ptr)  // 通过指针访问变量值
}

6. 结构体与方法

package mainimport "fmt"// 定义一个结构体
type Person struct {Name stringAge  int
}// 结构体方法
func (p Person) Greet() {fmt.Printf("Hello, my name is %s and I am %d years old.\n", p.Name, p.Age)
}func main() {person := Person{Name: "Alice", Age: 25}person.Greet()
}

7. 接口和多态

package mainimport "fmt"// 定义一个接口
type Animal interface {Speak() string
}// Dog类型实现了Animal接口
type Dog struct{}
func (d Dog) Speak() string {return "Woof!"
}// Cat类型实现了Animal接口
type Cat struct{}
func (c Cat) Speak() string {return "Meow!"
}func main() {animals := []Animal{Dog{}, Cat{}}for _, animal := range animals {fmt.Println(animal.Speak())}
}

8. 并发编程:goroutines 和 channels

package mainimport ("fmt""time"
)// 函数,用于展示goroutine
func printMessage(message string) {for i := 0; i < 3; i++ {fmt.Println(message)time.Sleep(500 * time.Millisecond)}
}func main() {go printMessage("Hello from goroutine")  // 启动goroutineprintMessage("Hello from main")// 使用通道ch := make(chan string)go func() {ch <- "Data sent to channel"}()msg := <-ch  // 从通道接收数据fmt.Println("Received:", msg)
}

9. 错误处理

package mainimport ("errors""fmt"
)func divide(a, b int) (int, error) {if b == 0 {return 0, errors.New("cannot divide by zero")}return a / b, nil
}func main() {result, err := divide(10, 0)if err != nil {fmt.Println("Error:", err)} else {fmt.Println("Result:", result)}
}

这些示例展示了Go语言的一些基本语法和特色特性。在实际开发中,还可以结合Go的标准库及第三方库来实现更多功能。

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

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

相关文章

【AI日记】24.11.01 LangChain、openai api和github copilot

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 工作1 内容&#xff1a;学习deeplearning.ai的免费课程地址&#xff1a;LangChain Chat with Your DataB站地址&#xff1a;https://www.bilibili.com/video/BV148411D7d2时间&#xff1a;2小时评估&am…

位运算算法及习题 ,丢弃的数字 , 两整数之和 ,只出现一次的数字II

文章目录 位运算基础1.基础位运算2. 给一个数n,确定他的二进制位中的第x为是0还是13.将一个数n的二进制表示的第x位修改为14.将一个数n的二进制表示的第x位修改为05.位图的思想6. 提取一个数n二进制表示中最右侧的17. 去掉一个数n二进制表示中最右侧的18. 异或运算的运算律 丢弃…

使用form表单的action提交并接收后端返回的消息

使用form表单的action提交表单是同步提交的方式&#xff0c;会跳转页面&#xff0c;所以无法获取后端返回来到消息。这样描述或许没有太大感觉&#xff0c;如果我要通过表单的方式上传文件&#xff0c;并接收后台返回来的响应数据&#xff1b;这样说是不是就感同深受了呢。 1.…

曹操出行借助 ApsaraMQ for Kafka Serverless 提升效率,成本节省超 20%

本文整理于 2024 年云栖大会主题演讲《云消息队列 ApsaraMQ Serverless 演进》&#xff0c;杭州优行科技有限公司消息中间件负责人王智洋分享 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。 曹操出行&#xff1a;科技驱动共享出行未来 曹操…

2024年10月文章一览

2024年10月编程人总共更新了21篇文章&#xff1a; 1.2024年9月文章一览 2.《Programming from the Ground Up》阅读笔记&#xff1a;p147-p180 3.《Programming from the Ground Up》阅读笔记&#xff1a;p181-p216 4.《Programming from the Ground Up》阅读笔记&#xff…

【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型

一、介绍 果蔬识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了12种常见的水果和蔬菜&#xff08;‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’&#xff09;…

Partition架构

优质博文&#xff1a;IT-BLOG-CN Partition架构 【1】结构&#xff1a; Region至少3个Zone&#xff0c;Zone内至少两个Partition&#xff0c;Partition内至少1个K8S Member Cluster&#xff1b; 【2】故障域&#xff1a; 故障域及核心链路至少Zone内收敛&#xff0c;甚至Part…

xlrd.biffh.XLRDError: Excel xlsx file; not supported

文章目录 一、问题报错二、报错原因三、解决思路四、解决方法 一、问题报错 在处理Excel文件时&#xff0c;特别是当我们使用Python的xlrd库来读取.xlsx格式的文件&#xff0c;偶尔会遇到这样一个错误&#xff1a;“xlrd.biffh.XLRDError: Excel xlsx file; not supported”。…

Java XML一口气讲完!(p≧w≦q)

Java XML API Java XML教程 - Java XML API SAX API 下面是关键的SAX API的摘要: 类用法SAXParserFactory创建由系统属性javax.xml.parsers.SAXParserFactory确定的解析器的实例。SAXParserSAXParser接口定义了几个重载的parse()方法。SAXReaderSAXParser包装一个SAXReader…

CTF顶级工具与资源

《Web安全》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484238&idx1&snca66551c31e37b8d726f151265fc9211&chksmc0e47a12f793f3049fefde6e9ebe9ec4e2c7626b8594511bd314783719c216bd9929962a71e6&scene21#wechat_redirect 《网安面试指南》h…

腾讯云视频文件上传云存储时自动将mp4格式转码成m3u8

针对问题&#xff1a; 弱网环境下或手机网络播放mp4格式视频卡顿。 存储环境&#xff1a;腾讯云对象存储。 处理流程&#xff1a; 1&#xff1a;登录腾讯云控制台&#xff0c;进入对象存储服务&#xff0c;找到对应的存储桶&#xff0c;点击进入。 在任务与工作流选项卡中找…

【AIGC】逆向拆解OpenAI官方提示词Prompt技巧:高效提升ChatGPT输出质量

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;OpenAI官方提示词的介绍OpenAI官方提示词的结构与组成如何通过分析提示词找到其核心组件 &#x1f4af;OpenAI官方提示词分析案例一&#xff1a;制定教学计划案例二&…

Linux之nfs服务器和dns服务器

NFS服务器 NFS&#xff08;Network File System&#xff0c;网络文件系统)&#xff0c;NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中&#xff0c;而在本地端的系统 中看来&#xff0c;那个远程主机的目录就好像是自己的一个磁盘分区一样。 注&am…

【机器学习】25. 聚类-DBSCAN(density base)

聚类-DBSCAN-density base 1. 介绍2. 实现案例计算 3. K-dist4. 变化密度5. 优缺点 1. 介绍 DBSCAN – Density-Based Spatial Clustering of Applications with Noise 与K-Means查找圆形簇相比&#xff0c;DBSCAN可以查找任意形状和复杂形状的簇&#xff0c;如S形、椭圆、半圆…

计组-层次化存储结构

这里主要看存储的整体结构&#xff0c;cache&#xff0c;内存 这里看存储结构是按什么样的层次来划分存储结构&#xff0c;速度由慢到快&#xff0c;容量由大到小&#xff0c;这是基于性价比的考虑&#xff0c;所以分为多级多层次&#xff0c;可以做到提高速度的同时没有增加多…

奇瑞不客气智驾 晚不晚?

文/孔文清 一直很好奇&#xff1a; 尹同跃董事长的金句“智驾不客气”&#xff0c;应该怎么翻译成英语&#xff1f; 谷俊丽的演讲PPT给了我答案&#xff1a; All in Ai Cars ——全力以赴、全情投入智能化汽车。 谷俊丽是奇瑞全球创新大会上最兴奋的人之一&#xff0c;有一种闭…

【万兴科技-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

vue3中跨层传递provide、inject

前置说明 在 Vue 3 中&#xff0c;provide 和 inject 是一对用于跨组件树传递数据的 API。它们允许你在祖先组件中使用 provide 提供数据或服务&#xff0c;然后在后代组件中使用 inject 来获取这些数据或服务。这种方式特别适用于跨多个层级的组件传递数据&#xff0c;而不需要…

JAVA——网络编程

目录 1.概述 常见的网络架构 2.网络编程三要素 a.ip b.端口 c.协议 3.UDP协议 a.InetAddress类 1.概述 2.实例化对象 b.DatagramSocket类&#xff08;快递公司&#xff09; c.DatagramPacket类&#xff08;包裹&#xff09; d.单播、组播、广播 4.TCP协议 …

完全透彻了解一个asp.net core MVC项目模板1

当我们使用Visual Studio 2022去新建一个基于asp.net core Web项目的时候&#xff0c;一般有三种选择&#xff0c;一种是空项目&#xff0c;一种是基于MVC的项目、再有一种就是基于包含Razor Pages实例的web应用。如下图&#xff1a; 今天&#xff0c;我们打算选择基于MVC模…