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

2023-11-06

前言

哈喽,大家好,我是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,我们下期见。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • ArcGIS小技术 —— 修改字段顺序的三种方法

    修改字段顺序的四种方法 数据字段如下 方法一 合并 方法二 追加 方法三 删除并按顺序重新创建字段 数据字段如下 方法一 合并 使用合并工具调整字段顺序 方法二 追加 1 创建一个新的数据 并且按照想要的顺序添加好字段 2 使用 追加 工具
  • 采用face_recognition进行人脸识别时,解决摄像头太远人脸太小导致无法检测的问题

    经测试发现 把图像resise放大后再进行人脸识别 可以识别出非常小的人脸区域 以上相片站在10米开外 分辨率300万的笔记本电脑上都可以识别 不过处理速度非常的慢 很卡 不知道换1080TI或者以上显卡能否提高效率 本来离摄像头不到1米的
  • 用ESP学习单片机之Arduino_Esp-32s获取2.8‘‘TFT LCD屏幕的触摸数据_ILI9341_SPI_XPT2046

    简介 点亮该屏幕的笔记 既然都能显示了 肯定要获取触摸位置啊 从实物图中可知该屏幕的触摸IC为XPT2046 Arduino IDE需配置esp32开发环境 开发板 ESP 32 触摸过程 这里实现的是触摸屏幕获取坐标 IO映射 TFT L
  • 医学知识-CT的窗宽窗位

    CT的窗技术 窗技术是CT检查中用以观察不同密度的正常组织或病变的一种显示技术 包括窗宽 window width 和窗位 window level 由于各种组织结构或病变具有不同的CT值 因此欲显示某一组织结构细节时 应选择适合观察该组织
  • 为什么软件开发很难?真相了

    为什么软件开发很难 真相了 作者 Jeremy Mikkol 本文认为这种困难与编程语言无关 因为现代的编程语言已经足够好了 那么 原因到底是什么 有一种观点认为 使用更好的编程语言就会让软件开发变得更容易 更高效 在汇编或 Fortran
  • vue ajax异步提交文件,vue中用ajax上传文件

    直接上代码 uploadCompany function event this file event target files let formdata new FormData formdata append file this file
  • 深度学习中常用的Adam算法

    一 Adam算法 Adam Adaptive momentum 是一种自适应动量的随机优化方法 A method for stochastic optimization 经常作为深度学习中的优化器算法 二 算法详细步骤 引用 三 Adam优
  • Java开发的模板引擎--freemarker

    模板引擎 freemarker 一 基础知识 1 1 模版引擎 1 2 关于freemarker 1 3 常用的java模版引擎 1 4 快速入门 1 4 1 指定了SpringBoot的版本 1 4 2 指定了pom xml文件依赖 1
  • dataframe将某列的空值填充为12

    工作中遇到某列数据中空值需要替换为12 df 支付周期 fillna 12 inplace True
  • 配置描述文件mobileconfig的生成

    为什么80 的码农都做不了架构师 gt gt gt 使用总结 http huodong kuaiyong com kymobile trust mobileconfig 可以把这个文件下载下来之后 借用一下 http app shouyou
  • CUDA矩阵乘法的优化

    本文以 深入浅出谈cuda 中矩阵乘法优化的部分为主线 体会cuda的并行执行过程 文章目录 1 实验环境 2 实验过程 2 1 初始版本 2 2 第一次改良 提高精度 2 3 第二次改良 使用共享内存 2 4 第三次改良 使用cudaMa
  • 四十七.快速排序C语言实现

    include
  • vim命令模式操作

    问题 以下所有操作都在命令模式进行 把 etc passwd文件 拷贝到 opt命名为nsd txt 对 opt nsd txt进行如下操作 切换到最后一行 切换到第一行 删除第二行 复制第一行到最后一行 查找root字符串 方案 本题主要
  • QRadioButton 选中/取消选中

    QRadioButton 选中的方法比较简单 ui gt radioButton gt setChecked true 取消选中怎么办 如果单纯使用 ui gt radioButton gt setChecked false 你会发现 然并
  • 写一个个人认为比较详细的adaboost算法

    最近在看机器学习中adaboost adaptive boostint 算法部分的内容 在csdn上面查找一番发现 好像没有讲的特别的详尽的 当然可能是我人品不佳 所以没有找到 为了防止同样的事情发生在其他人的身上 所以就写了这篇博文 尽量
  • 城堡争霸服务器维护,城堡争霸 - 阵营守护神(国际服)无法连接服务器是什么原因...

    城堡争霸 阵营守护神 国际服 无法连接服务器是什么原因 相信大家在玩城堡争霸 阵营守护神 国际服 的过程中 经常会遇到这样的问题 下面ourplay小编就简单为大家介绍几种常见的解决方案 城堡争霸 阵营守护神 国际服 游戏简介 城堡争霸 阵
  • Mac安装zmap

    安装 zmap官网地址 https github com zmap zmap brew install zmap 然后就可以试一下调用 zmap h 如果无法提示zmap 导入路径即可 echo export PATH PATH usr l
  • MATLAB中深度学习的多级神经网络构建

    创建一个简单的有向无环图 DAG 网络用于深度学习 训练网络对数字图像进行分类 layers imageInputLayer 28 28 1 Name input convolution2dLayer 5 16 Padding same N
  • python 数据全部显示,去掉中间省略号的终极办法

    data describe T 因为有省略号所以不能显示全 试了很多方法都不好用 包括 import numpy as np np set printoptions threshold np inf import pandas as pd
  • 推荐几个可以写到简历上的Go方向优质开源项目(需花点心思研究)

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