先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注go)
正文
-
诸如数据库中间件、代理服务等很多采用Golang开发,比如前面的介绍codis、cockroachdb、etcd等;
-
其他
-
很多领域都能看到Golang的影子,诸如直播领域、游戏开发等等,在其中golang为后台的调度系统、任务处理,批量的数据计算、系统监控等提供了各种解决方案。
比如,最近知乎近也使用Golang进行重构了自己的推荐系统。
Golang官网
Golang官方地址: golang.org,无论学习什么知识,第一手资料基本都是首发于官网。进入到官网后,会看到很多资源,比如:
文档:golang.org/doc,官方文档,仔细读下文档首页并分类,了解下自己要学哪些内容;
一览:tour.golang.org,交互式运行环境,不安装golang便可体验学习它的语法与使用;
指南:golang.org/ref/spec,golang学习指导手册,从基础语法到高级特性全部都有介绍;
标准库:golang.org/pkg/,可以查看所有的官方库的接口、源码以及使用介绍;
博客:blog.golang.org/,不定期分享go的最佳实践,有些公司也会投稿介绍自己的案例;
实验室:play.golang.org,感觉和tour类似,不过在这里编写的代码可以分享给别人;
golang社区
一门语言的发展需要有大批牛人的分享布道,也需要我们这些菜鸟学习有更多的参考路径。这一切都离不开社区。国内外也有很多优秀的go语言社区;
go语言中文网,studygolang.com,分享Go 语言知识,聚合各种golang文章和书籍资料;
beego社区,beego.me/community,国人开发的框架社区;
go交流论坛,gocn.vip,go语言学习交流论坛;
go官方讨论组,forum/golang-nuts,golang的官方邮件讨论组;
2、go的内存模型
- Go语言中内****存分配大致有3种模式: Stack 、 Heap 、 Fixed Size Segment 。
我们为什么需要内存模型?由于cpu指令重排,以及多级的内存cache的存在,比如go语言存在的多级内存模型,不同的cpu架构,例如x86,arm 等等,而且编译器的优化也会对于指令进行重排,所以编程语言需要一个内存规范,即为:内存模型。
3、go的基本数据类型
- 布尔型(占一个字节)
- 值:TRUE 和 FALSE
- 数值型
- 整型
- 有符号:int,int8,int16,int32,int64
- 无符号:uint,uint8,uint16,uint32,uint64,byte
- int 和 uint 的大小和系统有关
- byte 类似 uint8
- rune 类型 int32
- 浮点型
- float32、float64
- complex64(32位实数和虚数)
- complex128(64位实数和虚数)
- 字符串型
- string
4、go的传参机制
5、你是怎么理解docker的?
6、dockerFile 常用指令
Dockerfile是什么
dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,
Dockerfile的指令根据作用可以分为两种:构建指令和设置指令。
(1)构建指令用于构建image,其指定的操作不会运行在image的容器中执行。
(2)设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。
Dockerfile 常用指令
- FROM (构建指令)
指定 base 镜像,必须指定且需要在Dockerfile其他指令的前面。后续的指令都依赖于该指令指定的镜像。FROM指令指定的base镜像可以是官方远程仓库中的,也可以位于本地仓库。
该指令有两种格式:
FROM
指定基础image为该image的最后修改的版本(latest)。
或者:
FROM :
指定基础image为该image的一个tag版本
- MAINTAINER (构建指令)
格式:MAINTAINER
设置镜像的作者,可以是任意字符串。用于将image的制作者相关的信息写入到image中。当我们对该image执行
docker inspect命令时,输出中有相应的字段记录该信息。
现在已经被“LABEL maintainer=”取代
LABEL maintainer=“berry xxxxxxx@qq.com”
- COPY(构建指令**)**
将文件从 build context 复制到镜像。
COPY 支持两种形式:
COPY src … dest
COPY [“src”, … “dest”]
- ADD(构建指令)
与 COPY 类似,从 build context 复制文件到镜像。不同的是,如果 src 是归档文件(tar, zip, tgz, xz 等),文件会被自动解压到 dest。
此指令用于复制新文件、目录或者远程URL地址添加到容器的指定 路径下,指令包含两种形式:
ADD …
ADD [“”,… “”]
- ENV(构建指令)
设置环境变量,环境变量可被后面的指令使用,并在容器运行时保持。
格式:ENV
例如:
…
ENV PATH /usr/local/nginx/sbin:$PATH
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
- EXPOSE(设置指令)
格式:EXPOSE [/…]
可以指定TCP或UDP,默认是TCP
告诉Docker服务器暴露的端口号,供互联系统使用。
在启动容器的时候如果使用-P,Docker主机自动分配一个端口和容器端口映射。
在启动容器的时候如果使用-p,则可以具体指定哪个宿主机端口和容器端口映射。
当你需要访问容器的时候,可以不是用容器的IP地址而是使用宿主机器的IP地址和映射后的端口。我们会在容器网络部分详细讨论。
- VOLUME(设置指令)
格式:VOLUME [“”]
将文件或目录声明为 volume。使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器使用。我们知道容器使用的是AUFS,这种文件系统不能持久化数据,当容器关闭后,所有的更改都会丢失。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。我们会在容器存储部分详细讨论。
- WORKDIR(设置指令)
格式:WORKDIR /path/to/workdir
示例:
WORKDIR /a (这时工作目录为/a)
WORKDIR b (这时工作目录为/a/b)
WORKDIR c (这时工作目录为/a/b/c)
为后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令设置镜像中的当前工作目录。
- RUN(构建指令)
在构建镜像过程中要指定执行的命令。
- CMD(设置指令)
容器启动时运行指定的命令。
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效。
- ENTRYPOINT(设置指令**)**
设置容器启动时运行的命令。
Dockerfile 中可以有多个 ENTRYPOINT 指令,但只有最后一个生效。
- USER
USER指令用于指定容器执行程序的用户身份,默认是root用户。
使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。
格式:
USER user
USER user:group
USER uid
USER uid:gid
USER user:gid
USER uid:group
示例:
USER www
原文链接:https://blog.csdn.net/m0_56342013/article/details/125671097
- HEALTHCHECK
容器健康状况检查命令
语法有两种:
HEALTHCHECK [OPTIONS] CMD command
HEALTHCHECK NONE
第一个的功能是在容器内部运行一个命令来检查容器的健康状况
第二个的功能是在基础镜像中取消健康检查命令
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
HEALTHCHECK [OPTIONS] CMD command
HEALTHCHECK NONE
第一个的功能是在容器内部运行一个命令来检查容器的健康状况
第二个的功能是在基础镜像中取消健康检查命令
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-b2JBIzIR-1713305615821)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!