一个golang小白使用vscode搭建Ununtu20.04下的go开发环境
文章目录
- 前言
- 搭建go环境
- 下载go安装包
- 解压go压缩包完成安装
- 配置环境变量
- 编写一个helloword程序
- 安装VSCode插件
- 安装智能提示插件
- 安装go依赖包
- 修改代理并重新安装依赖包
- go.mod 和 go.work
- go.mod
- go.work
- 小试一下go.work
- 总结
前言
先交代一下背景,距离正式接触golang这门语言已经有5年时间,平时偶尔也会用go写写工具和功能,但其实充其量就是语言小白,基本上就是按照教程配置好环境,按照需求写写逻辑,能跑起来就行了。golang随着这几年的变化,这门语言的变化还是非常大的,之前写过一篇《Go环境配置时遇到的GOPATH路径以及包管理问题》,可以看出之前配置的变量很像Java早期的配置环境,从1.11 版本之后go工程不必放到 GOPATH
路径中了,通过go.mod文件来标记并跟踪每个软件包的版本,灵活度大大提高,从此 GOPATH
概念逐渐淡化,在1.18版本新引入一个新功能go.work
,它被设计为解决在同一工作空间中处理多个模块的问题,使得go工程的模块管理更加方便。
简单描述下我的开发环境,Windows10
+ VSCode1.58.0
+ WLS1.0 - Ubuntu20.04
,平时工作都是在Ubuntu上,习惯了在Linux上的开发,所以即使是自己家的电脑也安装了子系统,就当成Ubuntu
来用就行了,Vscode安装在Windows上,直接连接到子系统上进行代码编写,以上是前提,本文的重点是在Ubuntu20.04系统上安装go的编译和运行环境。
搭建go环境
我选择的go版本是1.19,已经支持 go.sum
和 go.work
,同时也为了和工作开发保持一致,没必要用太新的特性,现在的go包管理已经不想早期的Java,不再依赖 GOPATH
,和 Python3.x 更像了,只管下载包然后在各自的工程目录下使用就行了,必要时需要指定使用库的版本。
下载go安装包
go语言的官网是 https://golang.google.cn/dl/,下载1.19版本的Linux包go1.19.linux-amd64.tar.gz,这个网址通常下载很慢,可以改为go语言中文网https://studygolang.com/dl来下载1.19版本go1.19.linux-amd64.tar.gz
可以通过浏览器下载拷贝到指定位置,也可以通过wget
命令下载
alberts@home-pc:~$ wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
--2024-01-21 17:22:11-- https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
Resolving golang.google.cn (golang.google.cn)... 203.208.50.34
Connecting to golang.google.cn (golang.google.cn)|203.208.50.34|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.google.com/go/go1.19.linux-amd64.tar.gz [following]
--2024-01-21 17:22:12-- https://dl.google.com/go/go1.19.linux-amd64.tar.gz
Resolving dl.google.com (dl.google.com)... 220.181.174.161, 2401:3800:4001:807::1001
Connecting to dl.google.com (dl.google.com)|220.181.174.161|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 148796421 (142M) [application/x-gzip]
Saving to: ‘go1.19.linux-amd64.tar.gz’go1.19.linux-amd64.tar.gz 100%[==============================>] 141.90M 3.62MB/s in 31s2024-01-21 17:22:43 (4.54 MB/s) - ‘go1.19.linux-amd64.tar.gz’ saved [148796421/148796421]
解压go压缩包完成安装
go的运行环境直接解压拷贝到指定位置就可以了,我把go解压安装到了 /usr/local/go
目录,解压之前也清理掉老的目录,如果之前没安装过,rm
这条命令可以不使用
sudo su
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz
配置环境变量
这一步有点类似Windows中的修改注册表,我安装了新的程序,需要通知系统当使用 go
命令时需要去哪个目录下寻找可执行程序,具体操作如下
-
使用vim编辑.bashrc文件
alberts@home-pc:~$ vim ~/.bashrc
-
到文件的末尾添加以下代码
alberts@home-pc:~$ export PATH=$PATH:/usr/local/go/bin
-
重新加载配置文件
alberts@home-pc:~$ source ~/.bashrc
-
查看版本是否安装成功
alberts@home-pc:~$ go version go version go1.19 linux/amd64
查看版本显示出 go1.19 linux/amd64
, 至此go语言的基础开发环境就配置好了
编写一个helloword程序
alberts@home-pc:/mnt/g$ mkdir wlsworkspace
alberts@home-pc:/mnt/g$ cd wlsworkspace
alberts@home-pc:/mnt/g/wlsworkspace$ mkdir hello
alberts@home-pc:/mnt/g/wlsworkspace$ cd hello/
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go mod init github.com/alberts/go/hello
go: creating new go.mod: module github.com/alberts/go/hello
alberts@home-pc:/mnt/g/wlsworkspace/hello$ touch hello.go
alberts@home-pc:/mnt/g/wlsworkspace/hello$ ls
go.mod hello.go
打开 hello.go
文件编写以下内容:
package mainimport "fmt"func main() {fmt.Println("Hello,World!")
}
保存文件后使用 go run
命令运行
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go run hello.go
Hello,World!
安装VSCode插件
安装智能提示插件
为了编写go代码方便,可以安装这个名为Go
的插件,这个插件不是必须安装的,但是你在写go代码时VSCode会自动提示你安装这个插件,为了实现Go语法只能提醒,我们可以直接点击提示安装,或者在插件市场里搜索安装
插件安装完成后会提示下面的报错
The “gopls” command is not available. Run “go get -v golang.org/x/tools/gopls” to install.
说明安装这个插件需要依赖 golang.org/x/tools/gopls
这个包,我们可以根据提示安装
安装go依赖包
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go get -v golang.org/x/tools/gopls
go: module golang.org/x/tools/gopls: Get "https://proxy.golang.org/golang.org/x/tools/gopls/@v/list": dial tcp 142.251.42.241:443: connect: connection refused
直接安装通常会因无法下载而失败,需要修改代理来改变下载地址
修改代理并重新安装依赖包
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go env -w GO111MODULE=on
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go env -w GOPROXY=https://goproxy.cn,direct
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go env -w GOSUMDB="sum.golang.org"
安装依赖包
alberts@home-pc:/mnt/g/wlsworkspace/hello$ go get -v golang.org/x/tools/gopls
go: downloading golang.org/x/tools v0.17.0
go: downloading golang.org/x/tools/gopls v0.14.2
go: downloading golang.org/x/tools v0.14.1-0.20231114185516-c9d3e7de13fd
go: downloading golang.org/x/telemetry v0.0.0-20231114163143-69313e640400
go: downloading github.com/sergi/go-diff v1.1.0
go: downloading honnef.co/go/tools v0.4.5
go: downloading mvdan.cc/gofumpt v0.4.0
go: downloading mvdan.cc/xurls/v2 v2.4.0
go: downloading golang.org/x/mod v0.14.0
go: downloading golang.org/x/sync v0.4.0
go: downloading golang.org/x/text v0.13.0
go: downloading golang.org/x/exp/typeparams v0.0.0-20221212164502-fae10dda9338
go: downloading golang.org/x/sys v0.14.0
go: downloading golang.org/x/vuln v1.0.1
go: downloading github.com/google/go-cmp v0.5.9
go: downloading github.com/BurntSushi/toml v1.2.1
go: added github.com/BurntSushi/toml v1.2.1
go: added github.com/google/go-cmp v0.5.9
go: added github.com/sergi/go-diff v1.1.0
go: added golang.org/x/exp/typeparams v0.0.0-20221212164502-fae10dda9338
go: added golang.org/x/mod v0.14.0
go: added golang.org/x/sync v0.4.0
go: added golang.org/x/sys v0.14.0
go: added golang.org/x/telemetry v0.0.0-20231114163143-69313e640400
go: added golang.org/x/text v0.13.0
go: added golang.org/x/tools v0.14.1-0.20231114185516-c9d3e7de13fd
go: added golang.org/x/tools/gopls v0.14.2
go: added golang.org/x/vuln v1.0.1
go: added honnef.co/go/tools v0.4.5
go: added mvdan.cc/gofumpt v0.4.0
go: added mvdan.cc/xurls/v2 v2.4.0
这次安装成功了,这些依赖包默认安装到了 ~/go/pkg
目录下,使用时直接在go文件中引用就行了 import golang.org/x/sys
以上这些包是Go语言的依赖管理工具,它们的作用如下:
- golang.org/x/tools: 提供了一系列用于开发Go语言的工具,如gopls等
- golang.org/x/tools/gopls: 是一个基于Go语言的代码补全和导航工具,它可以帮助开发者更高效地编写和调试Go代码
- golang.org/x/telemetry: 提供了一套用于收集和分析应用程序性能数据的库
- github.com/sergi/go-diff: 是一个用于比较两个Go源代码文件差异的工具
- honnef.co/go/tools: 提供了一些用于处理Go源代码的工具,如goimports(自动导入缺失的包)等
- mvdan.cc/gofumpt: 是一个用于格式化Go源代码的工具,它可以自动调整代码格式以符合Go语言的最佳实践
- mvdan.cc/xurls/v2: 是一个用于解析URL的库,它可以将URL分解为各个组成部分,方便开发者处理
- golang.org/x/mod: 是一个用于管理Go模块的库,它可以帮助你更好地组织和管理项目的依赖关系
- golang.org/x/sync: 提供了一组同步原语,如互斥锁、条件变量等,用于实现多线程编程中的同步机制
- golang.org/x/text: 提供了一个用于处理Unicode文本的库,它可以帮助你更方便地处理和操作文本数据
- golang.org/x/exp/typeparams: 提供了一个用于处理类型参数的库,它可以帮助你更方便地处理泛型编程中的类型参数问题
- golang.org/x/sys: 提供了一个用于访问操作系统功能的库,它可以帮助你更方便地处理操作系统相关的任务
- golang.org/x/vuln: 提供了一个用于管理已知安全漏洞的库,它可以帮助你更容易地识别和修复项目中的安全漏洞
- github.com/stamblerre/gocode: 提供Go语言的代码自动补全功能,用于IDEs和编辑器
- github.com/uudashr/gopkgs/v2/cmd/gopkgs: 命令行工具,帮助发现和使用Go语言软件包
- github.com/ramya-rao-a/go-outline: VSCode插件,为Go源代码文件生成结构大纲以便于导航
总结一下需要安装的依赖包
go get -v golang.org/x/tools/gopls
go get -v github.com/stamblerre/gocode
go get -v github.com/uudashr/gopkgs/v2/cmd/gopkgs
go get -v github.com/ramya-rao-a/go-outline
根据VSCode提示安装后续的Tools,得到的控制台输出信息如下
Tools environment: GOPATH=/home/alberts/go
Installing 6 tools at /home/alberts/go/bin in module mode.gopkgsgo-outlinedlvdlv-dapstaticcheckgoplsInstalling github.com/uudashr/gopkgs/v2/cmd/gopkgs (gopkgs) SUCCEEDED
Installing github.com/ramya-rao-a/go-outline (go-outline) SUCCEEDED
Installing github.com/go-delve/delve/cmd/dlv (dlv) SUCCEEDED
Installing github.com/go-delve/delve/cmd/dlv@master (/home/alberts/go/bin/dlv-dap) SUCCEEDED
Installing honnef.co/go/tools/cmd/staticcheck (staticcheck) SUCCEEDED
Installing golang.org/x/tools/gopls (gopls) SUCCEEDEDAll tools successfully installed. You are ready to Go :).
go.mod 和 go.work
go.mod
Go语言从1.11版本开始引入了Go Modules,这个版本之后不再需要将项目放到GOPATH中。
Go Modules是Go语言的依赖管理工具,它改变了之前必须使用GOPATH来管理依赖的模式。在Go 1.11及之后的版本中,通过go.mod文件来标记并跟踪每个软件包的版本,这意味着开发者可以在任何地方创建项目,而不必遵循GOPATH目录结构。
此外,Go团队还增加了一个环境变量GO111MODULE
来控制模块支持的启用和禁用。这个环境变量的命名中的"111"象征着它是在Go 1.11版本中引入的。
总的来说,Go语言自1.11版本起,通过引入Go Modules,使得开发者不再受限于GOPATH,可以更加灵活地管理项目和依赖。这一变化被广泛认为是Go语言发展中的一个重大改进。
go.work
“go.work” 是Go 1.18版本新引入的一个功能,它被设计为解决在同一工作空间中处理多个模块的问题。在之前的版本中,开发者常常会遇到路径问题、版本冲突问题等挑战。为了应对这些情况,他们可能需要对每个模块的go.mod文件进行手动修改,过程繁琐且容易出错。
"go.work"文件的主要作用就是来解决这些问题。它是一个特殊的文件,其中包含了use和replace指令,这些指令会覆盖工作区目录下的每个Go Module的go.mod文件中的内容。因此,开发者无需再对每个Go Module的go.mod文件进行手动修改,极大地简化了操作流程并提高了效率。
此外,"go.work"文件的优先级高于go.mod文件中的定义。也就是说,如果在go.work和go.mod中同时指定了不同的代码仓库路径,那么go.work中的设置将会被优先采用。这一特性进一步加强了"go.work"文件在依赖管理中的重要性。
小试一下go.work
当前工作目录下有 base
和 hello
两个包含go.mod的工程,使用 go work init
命令可以初始化一个工作空间
alberts@home-pc:/mnt/g/wlsworkspace$ ls
base hello
alberts@home-pc:/mnt/g/wlsworkspace$ go work init base hello
alberts@home-pc:/mnt/g/wlsworkspace$ cat go.work
go 1.19use (./base./hello
)
初始化之后工程之间就可以相互引用彼此对外的包内容了
总结
- 下载go压缩包
wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
- 初始化工程目录hello
go mod init github.com/alberts/go/hello
,包名通常是支持https访问的网络地址 - 初始化工作空间
go work init base hello
,base 和 hello 都是包含go.mod文件的go工程 - 安装依赖包
go get -v golang.org/x/tools/gopls
- 安装依赖包
github.com/stamblerre/gocode
- 安装依赖包
github.com/uudashr/gopkgs/v2/cmd/gopkgs
- 安装依赖包
github.com/ramya-rao-a/go-outline
放下助人情节,尊重他人命运~
相关文章:

一个golang小白使用vscode搭建Ununtu20.04下的go开发环境
文章目录 前言搭建go环境下载go安装包解压go压缩包完成安装配置环境变量编写一个helloword程序 安装VSCode插件安装智能提示插件安装go依赖包修改代理并重新安装依赖包 go.mod 和 go.workgo.modgo.work小试一下go.work 总结 前言 先交代一下背景,距离正式接触golan…...

【复现】Hytec Inter HWL 2511 SS路由器RCE漏洞_25
目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 Hytec Inter HWL 2511 SS是日本Hytec Inter 公司的一款工业级 LTE 路由器,可用于远程数据传输,例如收集传…...

Kafka系列(四)
本文接kafka三,代码实践kafkaStream的应用,用来完成流式计算。 kafkastream 关于流式计算也就是实时处理,无时间概念边界的处理一些数据。想要更有性价比地和java程序进行结合,因此了解了kafka。但是本人阅读了kafka地官网&#…...

【Linux学习】进程信号
目录 十七.进程信号 导言 17.1 linux中的信号列表 17.2 标准信号与实时信号 17.3 信号的产生 17.3.1 通过终端按键产生信号 17.3.2 调用系统函数产生信号 17.3.3 软件条件产生信号 17.3.4 硬件异常产生信号 17.3.5 【补充】核心转储 Core Dump 17.4 信号的阻塞 17.4.1 信号相关…...

机器学习没那么难,Azure AutoML帮你简单3步实现自动化模型训练
在Machine Learning 这个领域,通常训练一个业务模型的难点并不在于算法的选择,而在于前期的数据清理和特征工程这些纷繁复杂的工作,训练过程中的问题在于参数的反复迭代优化。 AutoML 是 Azure Databricks 的一项功能,它自动的对…...

数学建模实战Matlab绘图
二维曲线、散点图 绘图命令:plot(x,y,’line specifiers’,’PropertyName’,PropertyValue) 例子:绘图表示年收入与年份的关系 ‘--r*’:--设置线型;r:设置颜色为红色;*节点型号 ‘linewidth’:设置线宽࿱…...

TypeError the JSON object must be str, bytes or bytearray, not ‘list‘
在使用python的jason库时,偶然碰到以下问题 TypeError: the JSON object must be str, bytes or bytearray, not ‘list’ 通过如下代码可复现问题 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> import json >>> ra json.loads(a) Trac…...

数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2Innovus)
吾爱IC社区星友提问:请教星主和各位大佬,对于一个模块如果不加干预工具会让inst挤成一团,后面eco修时序就没有空间了。如果全都加instPadding会导致面积不够overlap,大家一般怎么处理这种问题? 在数字IC后端设计实现中…...

产品经理与产品运营的区别和联系
一、两者的职责区别 产品经理的目的:是创造有价值的产品 产品运营的目的:是让产品能有效的发挥出它应有的价值 二、两者的工作内容区别产品经理的工作内容 产品的经理的目的是创造有价值的产品,因此产品经理的所有工作都是围绕着…...

CMU15-445-Spring-2023-分布式DBMS初探(lec21-24)
Lecture #21_ Introduction to Distributed Databases Distributed DBMSs 分布式 DBMS 将单个逻辑数据库划分为多个物理资源。应用程序(通常)并不知道数据被分割在不同的硬件上。系统依靠单节点 DBMS 的技术和算法来支持分布式环境中的事务处理和查询执…...

Arch linux 安装
Arch linux 安装 介绍下载制作iSO启动盘安装arch linux设置字体连接互联网 安装过程磁盘分区设置设置镜像源设置引导文件挂载点安装base等基础软件生成fatab文件更改时区更改编码、语言更改编码更改语言 用户管理设置root密码新建普通用户 安装grub启动网络服务/GDM查看系统网络…...

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作
详情点击链接:最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Clau…...

【leetcode】移除元素
大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一.暴力求解法二.使用额外数组三.原地修改数组 点击查看题目 一.暴力求解法 若我们不考虑时间复杂度…...

Spring Boot整合Redis的高效数据缓存实践
引言 在现代Web应用开发中,数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案,被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis,通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合…...

FastApi-参数接收的正确使用(2)
前言 本文是该专栏的第2篇,后面会持续分享FastApi以及项目实战的各种干货知识,值得关注。 本文重点介绍,在使用FastApi使用“参数接收”时遇到的三种类型“路径参数”,“查询参数”,“请求体”的相关问题以及相应的解决方案。 具体详细知识点,跟着笔者直接往下看正文。…...

三、需求规格说明书(软件工程示例)
1.引言 1.1编写目的 1.2项目背景 1.3定义 1.4参考资料 2.任务概述 2.1目标 2.2运行环境 2.3条件与限制 3.数据描述 3.1静态数据 3.2动态数据 3.3数据库介绍 3.4数据词典 3.5数据采集 4.功能需求 …...

Elasticsearch 查询语句概述
目录 1. Match Query 2. Term Query 3. Terms Query 4. Range Query 5. Bool Query 6. Wildcard Query 7. Fuzzy Query 8. Prefix Query 9. Aggregation Query Elasticsearch 是一个基于 Lucene 的搜索引擎,提供了丰富的查询DSL(Domain Specifi…...

kafka简单介绍和代码示例
“这是一篇理论文章,给大家讲一讲kafka” 简介 在大数据领域开发者常常会听到MQ这个术语,该术语便是消息队列的意思, Kafka是分布式的发布—订阅消息系统。它最初由LinkedIn(领英)公司发布,使用Scala语言编写,与2010年…...

一次解决ForkJoinPool日志追踪的辛酸经历
本文主要分享了一次解决ForkJoinPool日志追踪的辛酸经历。历时3个月终于找到通用的解决方案,以此文分享给有需要的你。 一、需求背景 1.某日,某同事根据日志ID排查生产环境问题过程中,发现日志不全 2.经排查发现中间有很多线程为ForkJoinP…...

VM使用教程--SDK取图 视频笔记
本笔记均由海康机器人官网的V学院视频中记录所得,属于省流大师了[doge] 图像采集 图像采集包括1图像源,2多图采集,3输出图像,4缓存图像,5光源 1图像源 图像源包括本地图像,相机采图,SDK 本…...

11.spring boot 启动源码(一)
目录 概述SpringApplication静态方法构造方法run 实例方法配置文件Actuator 工作原理*EndpointAutoConfigurationBeansEndpointAutoConfigurationShutdownEndpointAutoConfiguration结束概述 spring boot 版本 2.6.13 spring boot 启动源码(一) 涉及 SpringApplication 中静态…...

【微服务】springcloud集成sleuth与zipkin实现链路追踪
目录 一、前言 二、分布式链路调用问题 三、链路追踪中的几个概念 3.1 什么是链路追踪 3.2 常用的链路追踪技术 3.3 链路追踪的几个术语 3.3.1 span 编辑 3.3.2 trace 3.3.3 Annotation 四、sluth与zipkin概述 4.1 sluth介绍 4.1.1 sluth是什么 4.1.2 sluth核心…...

数学建模-预测人口数据
目录 中国09~18年人口数据 创建时间 绘制时间序列图 使用专家建模器 得到结果 预测结果 残差的白噪声检验 中国09~18年人口数据 创建时间 路径:数据-> 定义日期和时间 绘制时间序列图 使用专家建模器 看看spss最终判断是那个模型最佳的契合 得到结果 预…...

SpringBoot 集成 Canal 基于 MySQL 做数据同步
一、canal 组件关系 下载地址:https://github.com/alibaba/canal/releases/download/canal-1.1.7/ 这里面主要的有两个 canal.deployer-1.1.7.tar.gz 和 canal.adapter-1.1.7.tar.gz,canal.admin-1.1.7.tar.gz 是一个监控服务,可选…...

【CVE-2022-22733漏洞复现】
Apache ShardingSphere ElasticJob-UI漏洞 漏洞编号:CVE-2022-22733 文档说明 本文作者:SwBack 创作时间:2024/1/21 19:19:19 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack漏洞描述 Apache ShardingSphere Elast…...

Python爬虫---scrapy框架---当当网管道封装
项目结构: dang.py文件:自己创建,实现爬虫核心功能的文件 import scrapy from scrapy_dangdang_20240113.items import ScrapyDangdang20240113Itemclass DangSpider(scrapy.Spider):name "dang" # 名字# 如果是多页下载的话, …...

【机器学习】机器学习四大类第01课
一、机器学习四大类 有监督学习 (Supervised Learning) 有监督学习是通过已知的输入-输出对(即标记过的训练数据)来学习函数关系的过程。在训练阶段,模型会根据这些示例调整参数以尽可能准确地预测新的、未见过的数据点的输出。 实例&#x…...

下述默认构造函数有什么问题?
12.4 // points to string allocated by new // holds length of string 独立的、相同的数据,而不会重叠。由于同样的原因,必须定义赋值操作符。对于每一种情况,最终目的 都是执行深度复制,也就是说,复制实际的数据,而不仅仅是复制指向数据的指针。 对象的存储持续性为自动或…...

vite和mockjs配合使用
vite mockjs 当后端还没准备完成之前,前端可以使用 mock 模拟后端响应,提高开发效率 1、安装插件 使用 vite-plugin-mock 插件,配合mockjs完成项目的 mock 配置 npm install mockjs vite-plugin-mock2、vite配置插件 在 vite.config.js…...

【数据结构】常见八大排序算法总结
目录 前言 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 6.1Hoare版本 6.2挖坑法 6.3前后指针法 6.4快速排序的递归实现 6.5快速排序的非递归实现 7.归并排序 8.计数排序(非比较排序) 9.补充:基数排序 10.总结…...