前言

哈喽,大家好,我是asong。最近总有读者问我有没有Go语言方向优质的开源项目,可以写在简历上那种,一时还真想不起来,花了两天时间调研了一下,针对有无工作经验的分别推荐几个开源项目,下面我们一起来看一下。

无工作经验

对于还在上学的朋友们,除了知道必要的基础知识外,也要有1-2个拿的出手的项目,光有基础,没有实践,很难过去简历这一关,对于学生而言,简单的crud还是要熟练掌握的,接下来就推荐几个文档比较齐全的web项目,入门后可以在此基础上深度开发。

bbs-go

bbs-go是一个使用Go语言搭建的开源社区系统,后端使用技术栈:

  • iris (https://github.com/kataras/iris) Go 语言 mvc 框架

  • gorm (http://gorm.io/) Go 语言 orm 框架

  • Nuxt.js (https://nuxtjs.org/) 基于Vue.js的服务端页面渲染框架,简单、好用、功能强大

  • resty (https://github.com/go-resty/resty) Go 语言好用的 http-client

  • cron (https://github.com/robfig/cron) 定时任务

  • goquery (https://github.com/PuerkitoBio/goquery) html dom 元素解析

还有配套的前端项目,基于Vue搭建的,功能还是比较全面的,通过这个项目可以了解开发一个开源社区的设计思路,对于一个新手入门web开发还是很友好的,但是这个项目需要付费才能观看搭建文档,不过代码是开源的,大家可以把源码下载下来自己研究一下,代码内容不多且简洁,自己深耕几天应该可以掌握。

项目地址:https://gitee.com/mlogclub/bbs-go

Gin-vue-admin

这个项目在Go语言领域还是很出名的,Gin-vue-admin是一个基于 vue 和 gin 开发的全栈前后端分离的开发基础平台,集成jwt鉴权,动态路由,动态菜单,casbin鉴权,表单生成器,代码生成器等功能,提供多种示例文件,还配有完整的文档教程和视频教程。这个项目个人觉得是新手入门必看项目,跟着做一遍后基本的crud就都掌握了,其中分片长传、代码生成器的功能还是挺有借鉴意义的,可以深入了解一下。这个项目不需要介绍太多,文档比较详细,可以达到手把手入门的程度。

项目地址:https://github.com/flipped-aurora/gin-vue-admin

rpcx

现在企业都是由单体应用向微服务架构转型,微服务的实践离不开RPC框架的应用,目前服务治理型的RPC 框架有dubbo-gogo-zerogo-kit 等,跨语言调用型的 RPC 框架有 ThriftgRPCHessianFinaglerpcx 等,对于一个小白而言理解RPC的原理比较重要,所以可以先从rpcx框架入手,rpcx 是一个分布式的Go语言的RPC框架,支持Zookepperetcdconsul多种服务发现方式,多种服务路由方式, 是目前性能最好的 RPC 框架之一,rpcx的文档比较齐全,有专门的团队维护,是新手入门的不二选择。

项目地址:https://github.com/smallnest/rpcx

文档地址:https://doc.rpcx.io/

go-kit

大家可以关注一下go-kit这个微服务项目,基于go-kit可以快速构建健壮、可靠、可维护的微服务,go-kit提供了对consul、etcd、zookeeper、eureka等注册中心的支持,有一位大佬开源了一份go-kit微服务实践教程:

  • 观看这个系列的博客:https://juejin.cn/post/6844903794380111886

  • 源码地址在这里:https://github.com/hwholiday/learning_tools/tree/master/go-kit

  • go-kit自动生成代码的命令行工具:https://github.com/kujtimiihoxha/kit

项目地址:https://github.com/go-kit/kit

有工作经验

已经有工作经验的朋友们就可以不用看一些基础的项目和原理了,可以更多的关注项目的架构设计、性能优化、服务治理等,更多的去思考如何维护好一个项目,这其实并不需要来看开源框架,更多关注自己项目团队的框架,从中找出优缺点去做优化,更加体现自己的价值。如果自己项目团队的框架比较水的话,那么下面就推荐几个优秀的开源项目供你学习借鉴。

zinx

zinx是一个基于Go语言开发的TCP长连接服务器框架,其可以应用在游戏领域或其他长连接领域;我们可以学习zinx框架的设计思路,他有完整的视频教程和文档,通过这个我们可以完全理解如何设计一个轻量级并发服务器,然后自己基于zinx自己写一个,并做一些优化,写在简历上岂不是可以吹一吹!!!

项目地址:https://github.com/aceld/zinx

文档地址:https://www.kancloud.cn/aceld/zinx

视频地址:https://www.bilibili.com/video/av71067087

go-zero

对于大多数朋友一进入公司就开始了crud,使用的web框架、rpc框架也都是企业已经搭建好的,直接就拿来用了,很少有机会参与到如何设计一个web框架、rpc框架之中,但是面试中面试官还爱考查这些东西,所以就需要我们平常多关注如何设计一款高性能的企业框架,go-zero就一款企业框架,我们可以从中学习到值得借鉴的的设计;go-zero集成了webrpc框架,是在20年由好未来开源的一款微服务框架,由于go-zero项目还是比较大的,建议大家带着目的性去学习,比如我想了解微服务注册与发现的原理实现、自适应负载均衡算法原理与实现,这样我们就可以带着目的性去查阅源码,总结学习文档并把它摘要出来形成自己的东西,写在简历上吹吹水他不香嘛!!!

go-zero的文档体系还不是很完善,一些知识点的学习还需要大家自己去总结提炼。

项目地址:https://github.com/zeromicro/go-zero/blob/master/readme-cn.md

go-nsq

NSQ是一个基于Go语言的分布式实时消息平台,可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。他的强大就不必多说了,我推荐这个项目的原因是让大家去学习nsq是如何设计的,使用起来是简单的,但是如何设计才是重点,面试中如果让你设计一个高性能的实时消息平台,你知道该如何设计吗?

项目地址:https://github.com/nsqio/go-nsq

学习地址:https://cloud.tencent.com/developer/article/1735996

Tidb

TidbNewSQL行业中的代表性产品,由PingCAP公司自主设计、研发的开源分布式关系型数据库,兼容MySQL 5.7 协议和 MySQL 生态等重要特性。目前很多公司都在使用Tidb,解决了关系型数据库、弹性扩展以及全球分布的问题。Tidb采用Go语言开发SQL层,下边的分布式存储引擎使用rust语言,使用Tidb具有以下优势:

  • 支持弹性的扩缩容;

  • 支持 SQL,兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL;

  • 默认支持高可用,自动进行数据修复和故障转移;

  • 支持 ACID 事务;

如果大家熟悉Tidb的设计与实现,可以写到简历上,和面试官吹吹水!!!

项目地址:https://github.com/pingcap/tidb

文档地址:https://docs.pingcap.com/zh/tidb/stable

kubernetes

一提到云原生就提不开kubernetes,现在各个企业都在上云原生,那么我们每个人都要理解kubernetes,即使你是一名业务开发,不会一点kubernetes都不太好意思出去面试,这是一个必备技能。Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统;Kubernetes由于是Go语言编写,我们可以从源码开始学习,配合着官方文档,仔细专研一番,找个kubernetes相关的工作不久起飞了,现在很多做kubernetes方向的朋友也都是由业务开发转去的,朋友们还不赶快学习来!!!

项目地址:https://github.com/kubernetes/kubernetes

官网文档:https://kubernetes.io/docs/home/

中文文档:https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

推荐看英文文档,中文文档有些地方翻译过来有点难理解。

Prometheus

PrometheusCloud Native Computing Foundation 的一个项目,是一个系统和服务监控系统。它以给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并可以在观察到指定条件时触发警报。现在企业基本都使用Prometheus做监控上报,但是你知道他的工作原理是怎样的吗?已经工作的朋友不要只停留在使用阶段了,其核心原理我们还是要花点时间研究一下的,一样可以在面试中和面试官吹水。

项目地址:https://github.com/prometheus/prometheus

文档地址:https://prometheus.io/blog/

总结

本文我们针对有无工作经验的朋友们推荐了几个优质的开源项目,有些项目已经广泛在企业中应用,其实现原理需要我们深究,真正做到知其所以然,才能做到和面试官的侃侃而谈。

好啦,本文到这里就结束了,我是asong,我们下期见。

创建了读者交流群,欢迎各位大佬们踊跃入群,一起学习交流。入群方式:关注公众号获取。更多学习资料请到公众号领取。

推荐几个可以写到简历上的Go方向优质开源项目(需花点心思研究)相关推荐

  1. 3个月工作经历能不能写在简历上呢

    在工作中,找工作的必要程序之一就是写简历.无论是在网上寻找工作还是在现实中面试,简历都是至关重要的.关于简历撰写,业内似乎有一条潜规则:如果工作经验不足半年,最好不要填写简历.那么3个月工作经历能不能 ...

  2. python工程师简历项目经验怎么写_简历上的项目经历怎么写 ?这 3 条原则不可忽视 !...

    阅读本文大概需要 5 分钟. 作者:黄小斜 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目. 不过还是有很多学生朋友来问我"没有项目怎么办",诚然,确实有 ...

  3. 某程序员哀叹:辛辛苦苦写几年代码,做了些业务,有了点成就感,但回头一看80%都没用,没法写到简历上!...

    什么事情会让你脊背一凉,细思极恐? 一位程序员说了一件很可怕的事: 辛辛苦苦写了几年代码,做了些业务,在一片祥和中有了点成就感.然而回头一看,80%是没啥用的,甚至没法写到简历上,让人脊背一凉! 有人 ...

  4. 用户分析与RFM模型实战|一个可以写在简历上的项目(下)

    大家好,我是芒果. 接上文:用户分析与RFM模型实战|一个可以写在简历上的项目(上) 本篇会继续对此数据对产品维度和用户分层维度进行分析. 依然结论先行: 重要结论

  5. 案例 github_2019年12月Github上最热门的Java开源项目,速来围观!

    转眼之间,已经进入了2020年,2019年发生的一切仿佛就在昨天.那么,刚过去不久的12月份GitHub上最热门的Java开源项目排行已经出炉啦.下面我带大家一起来看看上榜详情: 1.Alink ht ...

  6. 2016年GitHub上史上最全的Android开源项目分类汇总

    以下内容为转载 版主原网址 http://itindex.net/detail/51896-github-android-开源 GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时 ...

  7. GitHub上史上最全的Android开源项目分类汇总 (转)

    GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

  8. 阿里淘系优质开源项目推荐

    开源推动着互联网技术的发展.多年来,阿里巴巴淘系技术一直积极拥抱开源事业,无论是开源软件的应用.回馈以至自研技术的开源都非常活跃,近两年我们更是开源了MNN.飞冰ICE.3D-FUTURE & ...

  9. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)(转载)

    下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...

最新文章

  1. Ubuntu添加硬盘实验
  2. 【linux草鞋应用编程系列】_3_ 进程间通信
  3. 【web安全】第三弹:web攻防平台pentester安装及XSS部分答案解析
  4. 从未如此简单:10分钟带你逆袭Kafka!
  5. 微信小程序-自定义底部导航
  6. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(二)
  7. cvCompareHist() 直方图匹配
  8. 二进制、十进制、十六进制数值对照表
  9. codeforce 1260
  10. K8S故障排查指南- but volume paths are still present on disk
  11. 班级网站java,ssm班级网站
  12. matlab求包络线拟合,MATLAB 一堆散点如何求包络线
  13. python 绘图 坐标轴范围 颜色 保存
  14. gimtehseet工时管理系统介绍
  15. html帮助文档怎么翻译,HTML文档,HTML document,音标,读音,翻译,英文例句,英语词典
  16. 《解剖PetShop》系列之五
  17. JS中的函数参数传递到底是按值传递还是按引用传递
  18. android 实现发送彩信,android 实现发送彩信方法 (MMS)
  19. 利用随机森林对特征重要性进行评估
  20. Proteus实现555计时器模拟简易电子琴

热门文章

  1. 深度操作系统deepin安装pip
  2. 高质量的年会怎么策划
  3. 万能视频转换:实现难搞的监控视频.A64格式转成普通视频
  4. kali linux ettercap 嗅探
  5. VPS打SP2补丁的修复方法
  6. 【智能柜领域】智能柜快递员端APP原型作品(另有整个项目原型)
  7. 迅闪3.1助手发现一个小BUG
  8. uboot在nandflash和norflash是如何运行的
  9. python 使用 selenium 爬取中国福利彩票双色球历史中奖号码
  10. vue-lazyload 简单使用