一起使用GO(golang) 来做一个后台管理系统系列10 使用mod 来管理包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起使用GO(golang) 来做一个后台管理系统系列10 使用mod 来管理包相关的知识,希望对你有一定的参考价值。
参考技术A 原项目采用gopath来管理的引用库,但有小伙伴反应说包不好下,虽然我把对应的包做了百度云盘共享,但小伙伴们仍然感觉不太好用。特别是最近把go SDK升级到1.18.在管理包上终于下决心使用mod来重新重构下包管理。一、配置启用Mod
首先那:
确定是否开启了
如果没有开启请开启它。开启命令执行:
#设置 使用七牛云下载
来看下现在的配置:
二、创建项目
上边都说了如何开启了。下面介绍下如何使用
1. 可以随便找一个目录创建项目:myGoProjectNew
这个时候查看目录下会多出一个go.mod的文件:
里面也有了。标识了下SDK的版本1.18
2. 创建 main.go文件
3. 执行:
这时候就会自动下载引用了。
查看Go.mod文件
最后放两张效果图:
感觉还可以得点赞收藏哦。想要源码的私信我获取源码。
go语言的开发优势
最近用go语言重构了某后台系统,历时数月,对go从陌生到熟悉,渐渐喜爱上go开发,抽空分享下golang开发的一些优点。
便利的web服务访问
golang号称“互联网时代的c语言”,这个描述很贴切,有一句话说的很好:“在互联网时代,访问web服务和访问本地文件一样重要”,一个后台系统要相当频繁的和其他服务发生网络交互,而golang开发web服务简直易如反掌,寥寥几行就能实现一个强大的web服务。
到底有多简单,一行就够了
resp, err := http.Get("http://www.baidu.com")
调用一个Get函数就能完成发送请求、读取响应的整个流程,不需要写回调函数,不需要担心阻塞整个进程,完美!
除了golang,用OpenResty和Python也能实现这个效果。
当然会有人奇怪,golang是怎么做到的,按照正常流程,应该包括DNS解析、建立tcp连接、发送请求、监听socket可读可写事件、读取响应、断开连接等步骤,这是c/c++网络编程的基本套路。
出于好奇,本人简单的测试了一下golang的处理姿势:
在同一个协程里连续请求10次baidu.com,golang会只创建一次连接,然后复用该连接
在5个协程里请求baidu.com,golang会为每个协程创建一个连接,当5个协程退出时,会有2~3个连接不断开,后续再启动新协程请求时,复用剩余的2~3个连接
进程退出时,断开所有连接
测试结果显示golang内部有一套自己的处理逻辑,一般不需要关心,有性能问题时再看也不迟。
协程routine
Lua语言也实现了协程,但golang和Lua的实现不一样。
Lua是单线程的,所有协程都在一个线程里运行,一个Lua服务只能使用一个cpu
golang支持多线程,协程可以分布到不同的线程里运行,一个golang服务可以使用所有cpu
所以在golang里协程基本等同于线程,开发时必须考虑多线程的竞争条件,通过channel、互斥锁、读写锁等手段实现多协程安全。 并发读没有任何问题,需要同时读写一个对象时要加锁保证安全。
协程是非常轻量级的线程,一个协程占用约4k内存,一个go进程同时开启百万个协程是没有任何问题的,单机支持百万用户并发完全可以做到。
静态类型检查
开发稍具规模的项目,若用动态语言开发就很吃力,由于缺失类型检查,有些错误需要上线运行才能发现,甚至运行一两年都发现不了,这是巨大的隐患。
golang类型检查非常严格,甚至int和float都不能互相转换,声明但没有使用的变量、import但没使用的package都会报错,这一点能节省不少检查时间。
由于是静态类型语言,可以实现联想提示,这一点能大大提升编码速度,喜欢吃番茄的c++程序员表示满意。
golang自带代码格式化工具,这一点也很赞,节省大量敲击空格键的时间。
panic异常信息丰富
这一点主要和C++开发相比,C++程序崩溃后几乎无迹可寻,花费几天定位错误位置是很常见的事,golang崩溃后会输出完整的堆栈信息,瞬间找到崩溃位置。
一个routine的崩溃不会影响整个服务,其他请求还能正常处理,这一点非常赞!
强大的性能分析工具
项目上线前通常做压力测试,如何能快速定位到性能瓶颈是非常关键的。
golang自带pprof工具,导入一个包 net/http/pprof 就能实现性能检测,可以分析cpu占用百分比、内存占用比例、协程数量。
可以将分析结果输出为pdf文件,其功能强大的令人震撼,非常直观!
总体来说,golang开发具有明显的优势,在运行性能、开发效率、问题排查都值得称赞,推荐学习!
以上是关于一起使用GO(golang) 来做一个后台管理系统系列10 使用mod 来管理包的主要内容,如果未能解决你的问题,请参考以下文章
golanggo-admin系统进行项目开发,还是一个非常不错的项目,使用golang做管理后台,非常方便项目的快速搭建,基础功能鉴权已经完善了,就需要开发相关的业务逻辑即可。