学习Go语言的前置知识

前言

Go语言具有以下的特点:

  • 语法简洁,相比其他语言更容易上手,开发效率更高;
  • 自带垃圾回收(GC,不用再手动申请释放内存,能够有效避免 Bug,提高性能;
  • 语言层面的并发支持,让你很容易开发出高性能的程序;
  • 提供的标准库强大,第三方库也足够丰富,可以拿来即用,提高开发效率;
  • 可通过静态编译直接生成一个可执行文件,运行时不依赖其他库,部署方便,可伸缩能力强;
  • 提供跨平台支持,很容易编译出跨各个系统平台直接运行的程序。

对比其他语言,Go 的优势也显著。比如 Java 虽然具备垃圾回收功能,但它是解释型语言,需要安装 JVM 虚拟机才能运行;C 语言虽然不用解释,可以直接编译运行,但是它不具备垃圾回收功能,需要开发者自己管理内存的申请和释放,容易出问题。而 Go 语言具备了两者的优势!

正是Go具备JavaC不具备的能力,Go目前越来越多地用在微服务云原生游戏领域。

Go的生态圈

方向

名称

项目地址

Web框架

beego

https://github.com/astaxie/beego

gin

https://github.com/gin-gonic/gin

echo

https://github.com/labstack/echo

Iris

https://github.com/labstack/echo

微服务框架

Istio

https://istio.io/

go kit

http://gokit.io/

micro

https://micro.dev/

容器编排

Kubernetes

https://github.com/kubernetes/kubernetes

swarm

https://github.com/docker/classicswarm

服务发现

consul

https://github.com/hashicorp/consul

etcd

https://github.com/coreos/etcd

中间件

zinx(长链接框架)

https://github.com/aceld/zinx

gPRCRPC框架)

https://grpc.io/

nsq(消息队列)

https://github.com/nsqio/nsq

codisredis集群)

https://github.com/CodisLabs/codis

leaf(游戏服务器)

https://github.com/name5566/leaf

存储引擎

TiDB

https://github.com/pingcap/tidb

爬虫框架

goquery

https://github.com/PuerkitoBio/goquery

学习资料

官网无法下载的,可以去https://studygolang.com/dl 下载go的安装包。

名称

地址

Go中文社区

https://studygolang.com/topics

Go 程序设计

https://www.yuque.com/qyuhen/go

Go语言圣经

https://books.studygolang.com/gopl-zh/

Go语言高级编程

https://chai2010.cn/advanced-go-programming-book/

Go 语言高性能编程

https://geektutu.com/post/high-performance-go.html

#笔记#
全部评论
go语言可以用在linux下的脚本使用吗?
点赞 回复 分享
发布于 2022-08-19 19:00 陕西

相关推荐

- 你是如何解决缓存雪崩的问题的? (答均匀设计过期时间,设置缓存永久有效,服务降级,业务熔断限流)- 问具体什么场景会实现雪崩? 感觉像是问我是不是真的有这个场景- Redisson怎么实现一人一单- Redisson挂了怎么办,我说数据库层面操作,或者mq, 面试官说直接用唯一索引就行- MySQL的存储引擎 MyISAM和InnoDB有什么区别 (没答上来MyISAM,只说了InnoDB)- InnoDB是如何保证ACID的- MVCC是什么?(答了很多,面试官说Read_view没讲,可能是太紧张说的语序有问题)- undolog保存了什么内容,应该是想问事务id- MVCC什么是可见的,undolog能做什么- MyISAM有什么日志,(回答都有binlog)- 索引优势是什么?B+树,为什么不用红黑树- 提醒我还有Hash索引,- 如果我要实现索引实现 %+内容 (本来想的强制走索引,面试官说不对,引导我说 联合索引)一点点引导我说的- 执行一条update语句,会发生什么(没有回答出来要检查 连接器:建立连接,管理连接、校验用户身份和对 SQL 查询语句进行词法分析、语法分析)- join select 这些关键字执行的顺序是什么- 手写一个单例模式 为什么要用volatile- 怎么保证可见性,有序性,原子性- synchronized了解吗,怎么实现的- synchronized锁的优化,轻量级锁是什么,重量级锁是什么- monitor变量是什么,mark word有什么字段- 线程池使用,线程池参数,Executor的newFixedThreadPool会产生什么样的OOM,CPU的还是内存的- ThreadPoolExecutor 参数设置,拒绝策略,为什么死锁- 怎么把旧线程池弄到新的线程池上- AQS原理- AQS为什么用CLH, LockSupport.park后线程的状态,BLOCKED WAITING TIMED_WAITING三种状态是怎么产生的- CountDownLatch是怎么实现的,问原理- ThreadLocal内存泄漏怎么办,GC后还存在为什么,ThreadLocal作者自己做了什么努力- ThreadLocal的哈希算法有什么特点- 有没有用过 completablefuture,能做什么,和不用有什么区别- 如果我去查询数据库,然后编排后面的任务,这些任务必须要等前面的做完才可以执行么,还是可以同时- completablefuture异常处理和普通的try catch有什么区别- Bean的生命周期- AOP- 为什么三级缓存,循环依赖二级缓存不行吗,Bean的生命周期的postprocess方法
点赞 评论 收藏
分享
评论
5
32
分享

创作者周榜

更多
牛客网
牛客企业服务