本文目录一览:
- 1、Golang入门到项目实战 | golang简介及安装
- 2、golang编写的项目,使用alpine制作镜像遇到的一个问题解决
- 3、Golang入门到项目实战 | golang并发变成之通道channel
- 4、GitHub Go项目推荐|Golang下的命令行颜色渲染工具库|支持windows
- 5、Golang项目部署3,容器部署
- 6、一起使用GO(golang) 来做一个后台管理系统系列10 使用mod 来管理包
Golang入门到项目实战 | golang简介及安装
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
go语言特点
go语言的应用领域
哪些公司(项目)在使用go语言
下载开发包
windows下安装
1.打开下载的msi可执行文件,根据提示进行安装。默认会安装在c:/Program Files/go目录下面。会自动添加go可执行文件环境变量。
2.验证安装情况
a.打开命令行
b. 输入$ go version
linux下安装
1.在/usr/local/下面创建一个目录go
2.下载压缩文件到该目录(/usr/local/go),并解压缩
3.添加/usr/local/go/bin到PATH环境变量,打开$HOME/.profile 或者/etc/profile输入如下内容:
4.执行如下命令使得配置文件及时生效
验证
1.如果你的mac有Homebrew包管理工具,可以使用它来安装
2.如果没有下载mac安装包,根据提示安装
3.默认安装在/usr/local/go下面
4.设置环境变量,同Linux
golang编写的项目,使用alpine制作镜像遇到的一个问题解决
GraphicsMagick,一款高性能的图片处理工具,由于项目需要,用到它,自然而然用到了关于gm的第三方库 这个库按照作者的提示,要安装GraphicsMagick-devel依赖。
项目写完了,接下来用alpine做为基础镜像,准备制作项目的镜像。
golang项目,是在ubuntu下编写的,编译成二进制文件了,只要把二进制文件放进镜像里即可,遇到的问题有2个
1 容器跑起来,一直报二进制文件no found
我认认真真的确认了文件,以及它的路径,确实是存在的,怎么会报文件找不到呢?!
原来是musl和glibc是兼容的问题,在Dockerfile里要加以下两步
2 Error loading shared library libGraphicsMagickWand-Q16.so.2: No such file or directory
明明按要求安装GraphicsMagick-devel依赖,为啥还报这种错
于是想到了,是不是也要ln做一下软链接呢?于是学着上面的样子在Dockerfile里补上
再跑,问题依旧,莫非是软连接的地址写错了!回到开发的电脑上用ldd命令查看一下
果然,编译后的二进制文件依赖路径是/lib,而不是/lib64
于是,修改Dockerfile里的写法
问题解决,开心:)
参考资料:
Golang入门到项目实战 | golang并发变成之通道channel
Go提供了一种称为通道的机制,用于在goroutine之间共享数据。当您作为goroutine执行并发活动时,需要在goroutine之间共享资源或数据,通道充当goroutine之间的管道(管道)并提供一种机制来保证同步交换。
根据数据交换的行为,有两种类型的通道:无缓冲通道和缓冲通道。无缓冲通道用于执行goroutine之间的同步通信,而缓冲通道用于执行异步通信。无缓冲通道保证在发送和接收发生的瞬间两个goroutine之间的交换。缓冲通道没有这样的保证。
通道由make函数创建,该函数指定chan关键字和通道的元素类型。
这是创建无缓冲和缓冲通道的代码块:
语法
使用内置函数make创建无缓冲和缓冲通道。make的第一个参数需要关键字chan,然后是通道允许交换的数据类型。
这是将值发送到通道的代码块需要使用-运算符:
语法
一个包含5个值的缓冲区的字符串类型的goroutine1通道。然后我们通过通道发送字符串“Australia”。
这是从通道接收值的代码块:
语法
- 运算符附加到通道变量(goroutine1)的左侧,以接收来自通道的值。
在无缓冲通道中,在接收到任何值之前没有能力保存它。在这种类型的通道中,发送和接收goroutine在任何发送或接收操作完成之前的同一时刻都准备就绪。如果两个goroutine没有在同一时刻准备好,则通道会让执行其各自发送或接收操作的goroutine首先等待。同步是通道上发送和接收之间交互的基础。没有另一个就不可能发生。
在缓冲通道中,有能力在接收到一个或多个值之前保存它们。在这种类型的通道中,不要强制goroutine在同一时刻准备好执行发送和接收。当发送和接收阻塞时也有不同的条件。只有当通道中没有要接收的值时,接收才会阻塞。仅当没有可用缓冲区来放置正在发送的值时,发送才会阻塞。
实例
运行结果
GitHub Go项目推荐|Golang下的命令行颜色渲染工具库|支持windows
Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统
仓库名称 :color
标星(star) :221 (不错哦,潜力股项目)
标星趋势
拷贝(fork) :21
贡献人数 :3
仓库大小 :1 MB
主要开发语言:Go
语言分布:Go:99.75%、Batchfile:0.25%
代码提交周期分布 :
作者动态 :
2星
Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统
功能特色
程序员新视界:分享有趣、有料的程序员话题,每天进步一点点。
Golang项目部署3,容器部署
容器部署即使用 docker 化部署 golang 应用程序,这是在云服务时代最流行的部署方式,也是最推荐的部署方式。
跨平台交叉编译是 golang 的特点之一,可以非常方便地编译出我们需要的目标服务器平台的版本,而且是静态编译,非常容易地解决了运行依赖问题。
使用以下指令可以静态编译 Linux 平台 amd64 架构的可执行文件:
生成的 main 便是我们静态编译的,可部署于 Linux amd64 上的可执行文件。
我们需要将该可执行文件 main 编译生成 docker 镜像,以便于分发及部署。 Golang 的运行环境推荐使用 alpine 基础系统镜像,编译出的容器镜像约为 20MB 左右。
一个参考的 Dockerfile 文件如下:
其中,我们的基础镜像使用了 loads/alpine:3.8 ,中国国内的用户推荐使用该基础镜像,基础镜像的 Dockerfile 地址: ,仓库地址:
随后使用 " docker build -t main . " 指令编译生成名为 main 的 docker 镜像。
需要注意的是,在某些项目的架构设计中, 静态文件 和 配置文件 可能不会随着镜像进行编译发布,而是分开进行管理和发布。
例如,使用 MVVM 模式的项目中(例如使用 vue 框架),往往是前后端非常独立的,因此在镜像中往往并不会包含 public 目录。而使用了 配置管理中心 (例如使用 consul / etcd / zookeeper )的项目中,也往往并不需要 config 目录。
因此对于以上示例的 Dockerfile 的使用,仅作参考,根据实际情况请进行必要的调整。
使用以下指令可直接运行刚才编译成的镜像:
容器的分发可以使用 docker 官方的平台: ,国内也可以考虑使用阿里云: 。
在企业级生产环境中, docker 容器往往需要结合 kubernetes 或者 docker swarm 容器编排工具一起使用。
容器编排涉及到的内容比较多,感兴趣的同学可以参考以下资料:
一起使用GO(golang) 来做一个后台管理系统系列10 使用mod 来管理包
原项目采用gopath来管理的引用库,但有小伙伴反应说包不好下,虽然我把对应的包做了百度云盘共享,但小伙伴们仍然感觉不太好用。特别是最近把go SDK升级到1.18.在管理包上终于下决心使用mod来重新重构下包管理。
一、配置启用Mod
首先那:
确定是否开启了
如果没有开启请开启它。开启命令执行:
#设置 使用七牛云下载
来看下现在的配置:
二、创建项目
上边都说了如何开启了。下面介绍下如何使用
1. 可以随便找一个目录创建项目:myGoProjectNew
这个时候查看目录下会多出一个go.mod的文件:
里面也有了。标识了下SDK的版本1.18
2. 创建 main.go文件
3. 执行:
这时候就会自动下载引用了。
查看Go.mod文件
最后放两张效果图:
感觉还可以得点赞收藏哦。想要源码的私信我获取源码。