面向实习的Golang服务端技能分析

背景:

这个文章就当总纲看吧,没什么内容,大概是我的一个学习计划

首先,该文章是我希望大二暑期能够找到Go后端开发岗位实习机会,结合boss、2024版go学习路线以及我一个go萌新的现有技能做出的大约四个月时间掌握开发技能的规划。随后我也会做一下自己关于这些技术栈的学习笔记,希望各位大佬多多分享学习资料,写的不对的地方还望多多纠正。

为什么是Go:

  1. 作为一个没有审美的工科生,我认为前端开发真干不了一点。前端对我而言是一个需要了解和会使用简单框架的了解向技能,大约掌握一下三件套、vue和如何和后端交互就差不多了。

  2. 对于开发岗位而言,我个人认为本科阶段就业或者企业实习,后端开发岗位都是性价比最高的岗位。在后端岗位中我了解到的go后端开发相对而言需求量和内卷程度都是适中的。

  3. 结合我个人写的一些Java和go代码,我认为go语言是更好上手和理解的。我个人浅显理解,Java好比是一个严谨的组织结构,每个类和方法等都可以画出清晰的结构图;而go就好像是搭积木,无论是接口或者"类",都可以使用简单的结构体来实现,需要属性就新建属性,需要方法就绑定一个新方法,就像搭积木一样。

  4. 然而,相比于Java成熟的体系,基本要学的每一项技术栈都有一个或者多个优秀的教程,go的资源可能就很有限了,这也是学习Golang不太爽的地方。

技术栈:

我认为需要学习的技术栈大致分为一下几类(不分先后):

开发项:

  1. 基础编程: 这一块主要是Go的基础语法以及Gin框架的简单使用,算是入门内容了。我认为这个大概做一个go的xx管理系统就大致过关了,可以看一下我之前写的Gin项目
  2. 网络编程: 主要是TCP/IP协议的使用,这个基本上实习岗位都会要求的。
  3. 并发编程: 这一块我认为需要大概了解一下如何开辟go协程,大概就是写一些锁。我认为这部分仿写不难,但是理解清楚如何设计是很重要的(建议多画图),这个看一下刘丹冰老师的8小时转职课后面的项目就好
  4. 数据库: 这个主要是Mysql和redis,其他一些DB据我的了解掌握这两个就很好上手。而go为这两类数据库提供了Gorm框架,直接搜文档cv就可以(不过感觉底层还是了解一下为好,我是找了Mysql技术内幕和Redis实现原理两本书看)

会使用项:

  1. 操作系统: 会用Linux,会在云服务器上部署项目感觉就差不多了
  2. 微服务: 很多时候要求的是“理解微服务结构”,我个人了解很少,只是会用grpc,我感觉找第一份实习的话这个其实要求并不高(乱说的啊)
  3. 工具: 会使用K8s和docker感觉也是很多岗位的要求,不过这个要求也就是会用即可

加分项:

  1. 大数据: 这个其实是整个后端开发的加分项,刚好寒假的字节青训营有这部分的课,我学了之后写一写学习笔记吧
  2. 云原生: 就像使用go的第一个程序是聊天程序一样(最有特点),云原生绝对是go的一个热门应用
  3. IM即时通讯: 这个我不太了解

学习资料

这个是牛客网给的学习路线:
在这里插入图片描述

基础语法

  1. 基础内容建议看一下刘丹冰老师的八小时转职go的课程;李文塔的《go语言核心编程》也是一本很好的入门书
  2. 几个经典的包也要看一看(runtime sync net io time reflect)这个看go语言中文文档就好(我接下来也会出一下自己对方法的总结和理解)
  3. Gin框架,这个我感觉做项目是最直接的方法,这是我写的一个小项目

数据库

  1. 数据库的内容建议先学习Gorm框架
  2. 之后尝试搭建一下redis的环境,简单操作
  3. 接下来就是看Mysql技术内幕和Redis实现原理(其他书也是可以的),了解一下底层的原理

并发

  1. 这个我觉得就是先做(抄)一个聊天类的项目
  2. 然后自己画出来这个程序信息的传输路径,这样最清楚

网络

  1. Tcpip这个我之后出一下自己的学习笔记(感觉这个也是了解底层的)
  2. http感觉也是要学的

面试

  1. 这个可以找一些面经,或者刷一些b站上几面几面的短视频,不过这个不着急,先把基础内容学会再看
### Golang 游戏服务端开发概述 Golang 是一种高效、简洁且适合构建高性能网络应用的语言,因此它成为许多开发者用于游戏服务端开发的选择。以下是关于如何使用 Golang 进行游戏服务端开发的相关教程、架构设计以及示例代码的内容。 --- #### 工具与环境准备 为了开始 Golang 的游戏服务端开发,需要先准备好必要的工具和环境: - **Go 编程语言**:需安装 Go 命令行工具,通过 `go build` 来编译 `.go` 文件为可执行文件[^1]。 - **集成开发环境 (IDE)**:推荐使用 Visual Studio Code 并安装 Go 插件及其工具链来提升开发效率[^1]。 --- #### 架构设计原则 在设计 Golang 游戏服务端时,合理的架构至关重要。以下是一些常见的设计理念: 1. **模块化结构** 将服务划分为多个独立的模块(如登录模块、战斗模块、聊天模块等),便于维护和扩展[^2]。 2. **高并发处理** 利用 Goroutine 和 Channel 实现高效的并发控制,这是 Golang 的核心优势之一[^2]。 3. **数据持久化** 使用数据库(如 MySQL 或 MongoDB)存储玩家数据和其他重要信息,确保数据的安全性和一致性。 4. **协议选择** 通常采用 TCP/UDP 协议进行客户端和服务端通信,具体取决于实时性需求。可以借助第三方库简化消息解析过程,例如 gRPC 或 Protobuf。 --- #### 示例代码:简单的 Echo Server 下面是一个基于 Net 包实现的基础 Echo Server 示例,展示基本的服务端逻辑: ```go package main import ( "fmt" "net" ) func handleConnection(conn net.Conn) { defer conn.Close() buffer := make([]byte, 1024) for { n, err := conn.Read(buffer) if err != nil || n == 0 { fmt.Println("Client disconnected:", err) break } message := string(buffer[:n]) fmt.Printf("Received from client: %s\n", message) conn.Write([]byte("Echo: " + message)) } } func main() { listener, err := net.Listen("tcp", ":8080") if err != nil { fmt.Println("Error starting server:", err) return } defer listener.Close() fmt.Println("Server started on port 8080...") for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting connection:", err) continue } go handleConnection(conn) } } ``` 此代码展示了如何创建一个监听特定端口的 TCP 服务器,并能够接收来自客户端的消息并返回响应[^1]。 --- #### 推荐学习资源 对于初学者来说,可以从以下几个方面入手获取更多知识: 1. 官方文档:https://golang.org/doc/ 2. 高质量博客文章或系列教程,例如《从零搭建 Go 游戏服务端》[^2]。 3. GitHub 上开源项目,比如 Beego 或 Gin 框架,这些框架虽然主要用于 Web 应用,但也提供了良好的基础思路。 --- #### 注意事项 尽管 Golang 提供了许多便利特性,但在实际开发过程中仍需要注意一些潜在问题: - 确保正确管理 Goroutines 生命周期,避免内存泄漏。 - 对于大规模在线游戏场景,可能还需要引入负载均衡机制以分担压力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值