Linux中常用的工具

软件安装 yum

软件包

在Linux中,软件包是一种预编译的程序集合,通常包含了用户需要的应用程序、库、文档和其他依赖项。

软件包管理工具是用于安装、更新和删除这些软件包的软件。常见的Linux软件包管理工具包括APT(Advanced Packaging Tool)和YUM(Yellowdog Updater, Modified)等。

软件包通常由软件开发商或发行版团队创建和维护,以确保它们与操作系统的兼容性和稳定性。通过使用软件包管理工具,用户可以轻松地安装、更新和删除软件包,而无需手动下载和编译源代码。

安装软件的方式 rpm yum

源代码安装

从软件开发商的网站上下载源代码,并按照文档进行编译和安装。

rpm安装

RPM(Red Hat Package Manager)是Red Hat系列Linux发行版使用的包管理系统,常见于基于Red Hat的发行版,如Fedora、CentOS等。使用rpm命令可以直接安装、卸载、升级软件包,但是软件之间的依赖关系很麻烦。

yum/apt安装

YUM( Yellowdog Updater Modified)是Fedora和CentOS等Linux发行版使用的包管理系统,而APT(Advanced Packaging Tool)是Debian和Ubuntu等基于Debian的发行版使用的包管理系统。

软件安装的来源

yum源在这里类似官方的软件库 可以找到大量的软件 在虚拟机我们要配置国内的镜像源

有时候要去准官方 或者 非官方的位置下载软件

指令介绍

rpm

RPM(Red Hat Package Manager)RPM可以管理软件包的安装、更新和卸载,通过它可以让用户方便地安装、升级和删除软件。

参数:

  • -i:安装软件包。

  • -U:升级软件包。

  • -d:显示详细信息。

  • -f:强制执行。

使用例子:

  1. 安装软件包:

sudo rpm -i package_name.rpm
  1. 升级软件包:

sudo rpm -U package_name.rpm
  1. 显示详细信息:

sudo rpm -ql package_name
  1. 强制执行:

RPM有时可能需要管理员权限才能执行某些操作,可以使用-f参数强制执行。例如,如果用户没有管理员权限但仍然需要安装软件包,可以使用以下命令:

sudo rpm -fi package_name.rpm --force

yum

YUM(Yellowdog Updater Modified)YUM使用RPM包管理系统,它可以自动处理软件包的依赖关系,并从本地或远程仓库下载和安装软件包。

参数:

  • -y:自动回答所有提示为“是”。

  • --skip-broken:跳过有问题的软件包并继续安装。

  • --disablerepo=<repository>--enablerepo=<repository>:禁用或启用特定的软件仓库。

  • --exactmatch:仅匹配完全匹配的软件包名称。

  • --groupinstall:同时安装与所选软件包相关的所有软件组。

  • --noguess:禁用软件包猜测功能。

选项:

  • install

  • update

  • remove

  • makecache 创建元数据缓存

  • list 列出一个或一组软件包

  • groups 显示或使用、组信息

  • help 显示用法提示

  • history 显示或使用事务历史

  • info 显示关于软件包或组的详细信息

使用例子:

  1. 安装软件包:

sudo yum install <package_name>
  1. 更新软件包:

sudo yum update
  1. 显示软件包的详细信息:

sudo yum info <package_name>
  1. 自动回答所有提示为“是”:

sudo yum update -y
  1. 跳过有问题的软件包: 有时,某些软件包可能存在依赖关系问题,导致无法安装。可以使用--skip-broken参数来跳过有问题的软件包并继续安装。例如:

sudo yum update --skip-broken

xshell传输 文本编辑 GCC G++ git gdb

Xshell传输

rz (在xshell中)

下载:

yum list | grep lrzsz

yum -y install lrzsz

文本编辑

nano

Nano是一个免费的、开源的文本编辑器,它运行在Windows、Linux和Unix系统上。Nano是一个轻量级的编辑器,它被设计为简单易用,同时提供足够的功能来满足大多数用户的需求。

下面是nano的一些主要特点:

  • Nano具有简单直观的界面,使您可以轻松地在文本文件中导航。

  • Nano具有丰富的键盘快捷键,使您可以快速执行常见任务,而不必使用鼠标。

  • Nano支持高级编辑功能,例如自动完成、宏、语法突出显示和正则表达式搜索。

  • Nano具有轻量级的内存,因此在处理大型文本文件时性能良好。

  • Nano是一个免费和开源的软件,可以在GPL下使用和修改。

下面是nano的一些常用命令和选项:

命令: nano:启动nano编辑器。

  • nano <file>:打开指定的文件。

  • nano <file> [options]:使用指定的选项打开文件。

选项:

  • -a <file>:在打开文件之前,将<file>的内容作为命令行参数传递给nano。

  • -c:在打开文件之前,清空文件内容。

  • -d:在打开文件之前,将文件内容读入到nano的缓冲区中,以便在编辑时更快地显示。

  • -f:在打开文件之前,将文件内容读入到nano的缓冲区中,以便在编辑时更快地显示,并在保存文件时自动保存。

  • -h:显示帮助消息,

  • -i:开启自动换行。

  • -I:忽略自动换行。

  • -m:开启鼠标支持。

  • -M关闭鼠标支持。

  • -p:开启拼写检查。

  • -P:关闭拼写检查。

  • -s:开启语法高亮支持。

  • -S:关闭语法高亮支持。

  • -v:显示版本信息。

  • -V:显示版本信息并退出。

使用例子:

  1. 打开一个名为example.txt的文件:

sudo nano example.txt
  1. 打开文件并自动保存:

sudo nano -f example.txt
  1. 打开文件并开启语法高亮:

sudo nano -s example.txt
  1. 打开文件并开启自动换行:

sudo nano -i example.txt
  1. 显示nano的版本信息:

sudo nano -v

Nano文本编辑器还支持许多键盘快捷键,如复制、粘贴、删除行、查找等。例如Ctrl+C复制选中内容、C+V粘贴内容、Ctrl+X删除选中内容等。

这是nano下的提示文本:

^G Get H^O Write^R Read ^Y Prev ^K Cut T^C Cur Pos ^X Exit ^J Justi^W Where^V Next ^U UnCut^T To Spell

vi/vi

Vim 是一种流行的文本编辑器,具有丰富的命令模式。在 Vim 的命令模式下,您可以使用各种命令来编辑文本、移动光标、删除文本、复制文本、撤销更改等。

到时候整理可以上网查查

以下是一些常见的 Vim 命令模式命令: 末行模式:

  1. i 或 I:进入插入模式,开始输入文本。

  2. Esc:退出插入模式,返回到命令模式。

  3. :w:保存文件。

  4. :q:退出 Vim。

  5. :q!:强制退出 Vim,不保存任何更改。

  6. :n:跳转到下一个文件。

  7. :N:跳转到上一个文件。

  8. :r <filename>:将指定的文件加载到当前光标位置。

  9. :0:光标移到文件开头。

  10. G:将光标移到文件末尾。

  11. /<pattern>:在文本中搜索指定的模式。

  12. #x: 删除光标所在#个字符。

  13. n dd:剪切n行。

  14. yy:复制当前行。

  15. p:在复制行下方粘贴文本。

  16. vs <filename> : 在vim 中创建空文件filename 光标窗口切换 ctrl+ww

  17. #!:光标移动到第#个位置

  18. ctrl +b 屏幕向后移动一页

  19. ctrl + f屏幕向前移动一页

  20. ctrl + u屏幕向后移动半页

  21. ctrl + d屏幕向前移动半页

  22. gg :进入文本开始

  23. r R:替换

  24. u撤销操作

  25. ctrl + r 撤销恢复

  26. set nu 设置行号

  27. 在/etc/vimrc文件是配置文件

vim的配置

使得vim可以有更高级的功能 可以上网查看方法

visudo

安全的配置sudoers文件 和vim功能一样

GCC G++

程序运行的处理:预处理 编译 汇编 链接

gcc

Linux的GCC(GNU Compiler Collection) GCC是GNU项目的一部分,是一个自由软件许可证下的开源编译器,可用于编译C、C++和Objective-C等编程语言的代码。GCC支持多种操作系统和硬件架构,包括x86、x86-64、ARM、MIPS、PowerPC等。

GCC的参数和选项:

  • -o <output>:指定输出文件的名称。

  • -E : 仅作预处理,不进行编译、汇编和链接

  • -S : 编译到汇编语言,不进行汇编和链接

  • -c : 编译、汇编到目标代码,不进行链接,生成可执行文件。

  • -D<macro>[=value]:定义宏。

  • -U<macro>:取消定义宏。

  • -g:生成调试信息。以debug方式发布 从readelf -S 文件名 | grep -i debug查看

  • -static:采用静态编译

  • -I<dir>:添加头文件搜索路径。

  • -L<library>:指定库文件的搜索路径。

  • -l<file>:指定链接库名称

  • -include file:在预处理阶段包含指定的文件。

  • -shared : Create a shared library

  • -std=<标准>:指定输入源文件遵循的标准

  • -f<flag>:启用或禁用特定编译选项。

  • -fPIC:生成位置无关代码(Position Independent Code)。这种代码在内存中的位置不受限制,可以在不同的地址空间执行,特别适用于动态链接和共享库。

  • -wl:用来传递额外的链接器选项的,例如,-Wl,-rpath,/my/library 会将 /my/library 添加到运行时共享库的搜索路径中。

  • -rpath,path:这个选项用于指定运行时共享库的搜索路径。path 应该是包含共享库文件的目录。

  • -Wall:显示所有警告信息。

  • -Werror:将警告视为错误并停止编译。

  • -O<level>:优化编译级别。

使用例子:

gcc -o example example.c
gcc -E mycode.c -o mycode.i 
#条件编译
gcc -E mycode.c -o mycode.i -DDEBUG #定义DEBUG宏

在终端中输入“./example”来运行生成的可执行文件,默认生成的a.out文件

G++

Linux的g++是GNU Compiler Collection(GCC)的一部分,它是一个功能强大的C++编译器,用于编译C++代码。g++支持C++98和C++11及更高版本的标准,并提供了许多高级特性,如自动内存管理、异常处理、模板等。g++支持多种操作系统和硬件架构,包括x86、x86-64、ARM等。

g++使用和gcc 大体相同 g++适配gcc:

使用例子:

g++ -o myprogram main.cpp

在终端中输入“./myprogram”来运行生成的可执行文件。

静态编译 动态编译

1.使用ldd命令查看文件的动态依赖

2.默认下gcc优先动态库编译,通过-static 选项该改变这个优先级

3.c语言的静态库是glibc-static

3.c++的静态扩展库是 libstdc++-static

静态编译文件扩展很严重,编译后不再依赖静态库

优缺点:

1.静态编译独立性好,但是占用空间和内存大

2.动态编译牵一发而动全身,倒是节省空间

debug && release

在软件开发过程中,Debug 和 Release 是两个不同的构建类型,它们在编译选项、功能和大小上有所不同。

Debug 版本通常包含调试信息和其他工具,用于帮助开发人员在开发过程中调试和测试代码。Debug 版本会生成更多的输出,例如源代码级别的跟踪信息,以帮助开发人员定位问题并修复它们。此外,Debug 版本通常会禁用一些优化选项,以减小文件大小和提高调试性能。

Release 版本通常用于向最终用户提供产品。它经过更多的优化和,以提高代码的执行速度和内存使用效率。此外,Release 版本会压缩和精简代码,以减小文件大小。为了提高执行效率,Release 版本会包含更多的优化选项,例如内联汇编、代码缓存和循环展开等。

make 与 Makefile

make是一个自动化构建工具,它可以根据Makefile文件中的规则和指令,自动地编译和链接源代码文件,生成可执行文件或库文件。make使用简单的语法和命令,使得构建过程更加方便和高效。

参数和选项:

  • -j <num>:并行执行make命令,指定同时执行的进程数。

  • -k:如果Makefile中有任何未解决问题,make将一直等待直到所有问题都被解决。

  • -s:静默模式,不显示警告信息。

  • -V:显示make版本信息。

使用例子:

  1. 构建单个文件:

make file.c

这将会编译file.c文件并生成可执行文件。

  1. 构建多个文件:

make file1.o file2.o file3.o

这将会编译file1.c、file2.c和file3.c文件,并将它们链接生成可执行文件。

  1. 使用变量: 在Makefile中可以使用变量来存储依赖关系、目标文件等信息。例如:

CC = gcc
CFLAGS = -Wall -Werror
OBJS = file1.o file2.o file3.o
TARGET = program
​
$(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)
​
mytest.exe:mycode.cgcc -o mytest.exe mycode.c
.PHONY:clean
clean:rm -f mytest.exe

在这个例子中,TARGET是目标文件名,OBJS是目标文件的列表,CC是编译器名称,CFLAGS是编译器的选项。当make运行时,它会检查目标文件的依赖关系,如果需要,它会自动地编译目标文件的依赖项。当所有依赖项都被正确编译后,它会使用指定的命令来链接这些文件并生成可执行文件。

依赖关系:

  1. make 在检索Makefile时候 是一个递归的栈执行 makefile的自动化推导

例如:

mycode.exe:mycode.ogcc -o mycode.exe mycode.o
mycode.s: mycode.igcc -S mycode.i -o mycode.s
mycode.o:mycode.sgcc -c mycode.s -o mycode.o
mycode.i:mycode.cgcc -E mycode.c -o mycode.i$@表示:左边的内容  $^表示:右边的内容
.PHONY:clean
clean:rm -f mycode.exe,mycode.s,mycode.i,mycode.o

make在执行时候默认执行第一个指令,推导第一个指令的依赖关系

如上 make会执行 mycode.exe的方法 同时会自动化推导依赖关系 依次生成 .o .s .i .exe 文件

make === make mycode.exe

make clean :执行 rm-r....

  1. make在编译过后如果源文件没有被更新 就不会在编译了

如何实现: 比较可执行程序的最近修改时间 与 源文件的最近修改时间 (Modify)

这时候就引出了一个声明.PHONY:修饰的内容 总是被执行

  1. 怎么一次性生成多个可执行程序呢?

.PHONY:all
all:otherExe mycode
​
mycode:mycode.cgcc mycode -o mycode.i -std=c99
otherExe:otherExe.cg++ -o mycode.i otherExe  -std=c++11
.PHONY:clean
clean:rm -f mycode otherExe

  1. makefile格式:

方法:依赖关系 依赖目标

参数选项:

  • 在依赖目标前加@ 表示不在屏幕上输出提示信息

  • 在依赖目标中 : $@表示冒号左边的内容 $^表示冒号右边的内容

  1. $<:代表规则中的第一个依赖文件。

  2. $?:代表所有比目标文件新的依赖文件。

  3. $^:代表所有依赖文件的列表。

  4. $*:代表模式匹配出的所有文件。例如,如果规则中有%.o: %.c,那么$*就会代表所有的.c文件。

  5. $(@D):代表目标文件的目标目录。

  6. $(@F):代表目标文件的文件名。

  7. $(@):代表目标文件的完整路径。

  8. $($VAR)):代表变量$(VAR)的值。

  9. $(VAR):代表变量VAR的值。

  10. $(call [arguments]) 调用函数,例如$(call echo, hello)会输出hello

git Github 简介

Git是一个分布式版本控制系统,主要用于跟踪文件变更和协调多人之间的代码修改。它能够有效地解决代码的版本控制、冲突解决、多人协作等问题。

具体来说,Git的主要作用包括:

  1. 版本控制:Git可以记录文件的历史版本,并允许你查看和回滚到之前的版本。这对于多人协作开发非常有用,因为可以避免代码冲突和重复工作。

  2. 多人协作:Git可以轻松地管理多人之间的代码修改,并确保每个人都在最新的版本上工作。它支持分支和合并,使得多个开发人员可以同时开发不同的功能,并在完成后将其合并到一个代码库中。

  3. 数据完整性:Git通过使用SHA-1哈希算法对文件和目录结构进行完整性检查,确保数据的完整性。这有助于防止数据被篡改或损坏。

  4. 可靠备份:Git可以将代码库备份到任何地方,包括远程服务器、本地计算机等。它还支持增量备份,只备份文件变更的部分,从而节省存储空间和传输时间。

  5. 开源社区:Git已经成为许多开源项目的默认版本控制系统,使得可以轻松地参与开源项目,并与其他开发者协作开发。

SVN也可以做到版本控制 git是开源的

最常用的 git 命令有: add 添加文件内容至索引 bisect 通过二分查找定位引入 bug 的变更 branch 列出、创建或删除分支 checkout 检出一个分支或路径到工作区 clone 克隆一个版本库到一个新目录 commit 记录变更到版本库 diff 显示提交之间、提交和工作区之间等的差异 fetch 从另外一个版本库下载对象和引用 grep 输出和模式匹配的行 init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库 log 显示提交日志 merge 合并两个或更多开发历史 mv 移动或重命名一个文件、目录或符号链接 pull 获取并合并另外的版本库或一个本地分支 push 更新远程引用和相关的对象 rebase 本地提交转移至更新后的上游分支中 reset 重置当前HEAD到指定状态 rm 从工作区和索引中删除文件 show 显示各种类型的对象 status 显示工作区状态 tag 创建、列出、删除或校验一个GPG签名的 tag 对象

安装 Git

初始化 Git 仓库

在你的项目文件夹中打开命令行或终端,然后运行:

git init

添加文件

添加当前文件夹中的所有文件到 Git 仓库,运行:

git add .

或者,你可以选择性地添加单个文件:

git add filename.txt

提交更改

提交当前所有添加的文件,并附上说明,运行://必须上传说明

git commit -m "Initial commit"

查看仓库状态

查看当前的 Git 仓库状态,运行:

git status

分支管理

创建一个新分支:

git branch new-branch

切换到新分支:

git checkout new-branch

合并分支:

git merge new-branch

删除分支:

git branch -d new-branch

远程操作

克隆远程仓库:

git clone https://github.com/username/repository.git

推送本地分支到远程仓库:

git push origin new-branch

拉取远程仓库的更改:

git pull origin main

标签管理

为项目打上版本标签:

git tag v1.0

推送标签到远程仓库:

git push --tags

我们上传git项目一般步骤

git clone https://gitee.com/rngsfan/xuexi.git
​
git add .
​
git commit -m "描述"
​
可能需要执行:
​git config --global user.email "3224647525@qq.com"git config --global user.name "RNGsfan"
​
git push  要输入账号和密码

其他知识:

ignore文件存放不会被识别的文件后缀名

在git专题我们会认真讨论git

gdb

GDB是一个强大的源代码调试工具,用于在程序运行时进行单步调试、设置断点、观察变量值等。它提供了丰富的调试功能,包括调试器命令行界面、查看程序内存、调用函数、查看堆栈信息等。

参数和选项

  • -g:包含调试信息,用于进行源代码调试。

  • -l:显示可执行文件依赖的所有共享库。

  • -n:不进行任何操作,仅显示GDB的版本信息。

  • -q:安静模式,不显示任何调试器相关的输出信息。

  • -r:显示可执行文件的关联库信息。

  • -T:显示所有设置的调试器选项。

使用例子

启动调试会话:使用GDB启动一个可执行文件进行调试,可以在终端输入以下命令:

gdb program_name

查看文件内容:l n:从第n行开始输出

设置断点:break or b 行号or函数: Set breakpoint at specified line or function

b mycode.c:19 在mycode,c文件19行设置断点

删除断点:delete breakpoints

休眠,唤醒:disable / enable

查看断点信息:info break\b

运行程序:run [arguments] 或者 r

单步调试stepnextcontinue until``finish

s:逐语句 step into

n:逐过程

c:运行到下一个断点

until 行号: 快速跳转至某一行

finish: 快速跑完当前所处的函数

查看变量值:print &i or p &i:查看i的地址

display &i :常显示i的地址 取消用

undisplay 编号(编号在display栏目中)

设置变量值:set var

查看堆栈信息:backtrace or bt

保存和退出调试会话:quit

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

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

相关文章

失去中国市场的三星仍是全球第一,但中国手机无法失去海外市场

随着2023年分析机构公布全球手机市场和中国手机市场的数据&#xff0c;业界终于看清中国市场早已没有以前那么重要&#xff0c;三星、苹果这些国际品牌对中国市场的依赖没有他们想象的那么严重&#xff0c;相反中国手机对海外市场比以往任何时候都要更依赖了。 三星在2023年被苹…

【Java多线程案例】实现阻塞队列

1. 阻塞队列简介 1.1 阻塞队列概念 阻塞队列&#xff1a;是一种特殊的队列&#xff0c;具有队列"先进先出"的特性&#xff0c;同时相较于普通队列&#xff0c;阻塞队列是线程安全的&#xff0c;并且带有阻塞功能&#xff0c;表现形式如下&#xff1a; 当队列满时&…

【linux温故】linux调度机制

假如你是设计者&#xff0c;你会设计怎样的调度机制呢&#xff1f; 时间片 最简单的&#xff0c;小学生都能想出来的一种&#xff0c;每个 ready task&#xff0c;按照一个固定的时间片轮流执行。 大家不要抢&#xff0c;挨个儿排队执行。执行完时间片&#xff0c;就排在后面…

并行计算导论 笔记 1

目录 并行编程平台隐式并行超标量执行/指令流水线超长指令字处理器 VLIW 内存性能系统的局限避免内存延迟的方法 并行计算平台控制结构通信模型共享地址空间平台消息传递平台对比 物理组织理想并行计算机并行计算机互联网络网络拓朴结构基于总线的网络交叉开关网络多级网络全连…

Java的值传递与“引用传递”辨析

目录 Java的值传递与“引用传递”辨析1. 传递方式概述2. 值传递示例3. “引用传递”示例4. 值传递与"引用传递"的实际应用5. 总结&#xff1a;java只有值传递 Java的值传递与“引用传递”辨析 欢迎来到本博客&#xff0c;今天我们将深入研究Java中是值传递还是引用传…

本地运行多种大语言模型:一行代码即可完成 | 开源日报 No.167

ollama/ollama Stars: 33.5k License: MIT ollama 是一个轻量级、可扩展的本地语言模型构建和运行框架。 提供简单的 API 用于创建、运行和管理模型包含丰富的预构建模型库&#xff0c;方便在各种应用中使用支持从 GGUF、PyTorch 或 Safetensors 导入自定义模型可以通过命令行…

【维生素C语言】附录:strlen 函数详解

写在前面&#xff1a;本篇将专门为 strlen 函数进行讲解&#xff0c;总结了模拟实现 strlen 函数的三种方法&#xff0c;并对其进行详细的解析。手写库函数是较为常见的面试题&#xff0c;希望通过本篇博客能够加深大家对 strlen 的理解。 0x00 strlen函数介绍 【百度百科】str…

科普:工业物联网的八个模块,一看就明白了。

工业物联网&#xff08;Industrial Internet of Things&#xff0c;IIoT&#xff09;是将传感器、设备、网络和云计算等技术应用于工业领域的物联网应用。它由多个模块构成&#xff0c;这些模块协同工作&#xff0c;实现对工业设备和系统的监测、控制和优化。以下是工业物联网常…

【前后端的那些事】2万字详解WebRTC + 入门demo代码解析

文章目录 构建WebRTC需要的协议1. ICE2. STUN3. NAT4. TURN5.SDP WebRTC通讯过程1. 大致流程2. 详细流程3. 核心api3.1 RTCPeerConnection3.2 媒体协商3.3 重要事件 代码编写1. 什么是websocket2. 消息实体类Message3. 业务流程图4. 搭建前后端环境5. join -- handleJoin -- jo…

LLM少样本示例的上下文学习在Text-to-SQL任务中的探索

导语 本文探索了如何通过各种提示设计策略&#xff0c;来增强大型语言模型&#xff08;LLMs&#xff09;在Few-shot In-context Learning中的文本到SQL转换能力。通过使用示例SQL查询的句法结构来检索演示示例&#xff0c;并选择同时追求多样性和相似性的示例可以提高性能&…

Mysql-数据库压力测试

安装软件 官方软件 安装插件提供了更多的监听器选项 数据库驱动 数据库测试 配置 这里以一个简单的案例进行&#xff0c;进行连接池为10,20,30的梯度压测&#xff1a; select * from tb_order_item where id 1410932957404114945;新建一个线程组 新增一个连接池配置 新建一…

深入理解Go的垃圾回收机制

导语 如果你是一位Golang的开发者&#xff0c;你一定对于语言特性和详细结构有所了解。但是&#xff0c;你是否曾经停下来深入研究过Golang背后复杂而强大的垃圾回收&#xff08;GC&#xff09;机制&#xff1f;在这篇文章中&#xff0c;我们将具体深入探讨Golang垃圾回收机制…