结营感受:从入门到入土 | 青训营

结营感受:从入门到入土 | 青训营

我参加了字节跳动青训营 第六届 后端方向 并组建了队伍:轮椅人 。虽然最后就剩我和另外一个队员。

不过大项目:WheelChair-tiktok 好歹是肝出来了(以前没写过项目,bug嘎嘎多呀,晚上嗷嗷写呀)

下面我来分享我的心路历程。

1.开营前夕

以前对Go语言很感兴趣,稍微了解过Go语言的语法,快放暑假的时候,看到学工部的老师在学院QQ群里甩了一个链接:字节跳动青训营,我点开一看,哟!GO语言,还是字节跳动的活动,打着提升自己编程能力的想法,也想写个项目练练手,就报名参加了,一开始本想报进阶班,加了唠嗑群一看,都是985、211的大佬,还有许多硕士研究生,吓得我赶紧把报名信息的进阶班改为了基础班。

就这样,过了十几天,收到了笔试的通知,这笔试题就会做其中的几道,提交后本以为不会被录取,没想到又过了几天,我收到了通过的通知,那就充满干劲地学吧

2.开营后

看了看课表,感觉课程安排挺好的,就听了那个开营班会,了解了结营的条件。

然后就在群里看到了一堆大佬的组队信息,哇!都学历这么高,有的还是oier,大一就开始打ACM了,而我上了大学之后才开始接触编写的,大一的时候就写过几个python的爬虫。我也不敢向这些大佬发组队申请,索性就自己组建了一个队伍------轮椅人♿️ ,邀请了5个同样是小白的网友来组队。

第一天我就在群里设置了定时机器人🤖️,来督促同学们进行沸点打卡和学习,一开始一切都好,本以为会如此欣欣向荣下去。

前几次的课程都是基础语法和简单的练习题,跟上学习是完全没问题的,后面的开始就感觉看不懂,这时第一个队友说自己学不会来,打算放弃。我挽留了几次,还是退出了。没办法,为了结营证书,认真学吧。

3.开营中期

这时候,我开始准备考驾照了,冬天报了名没学。我简简单单地刷了600多道驾考宝典的题,在b站上看了看课程,然后在app上模拟了几次考试,每次都是六七十分,通过率才19.4%,我就开始约上科目一考试。万幸,我以90分的成绩一次通过科目一考试,然后学了几天的golang,就到了8月初了。

8月初,我开始去驾校练习科目二,在1号到14号这十几天里,我上午看课程学习,下午2-7点练习科目二的项目,晚上沸点打卡后就早早地睡了,这期间的课程比较难,没有基础,听不懂,所以就草草的学了一下。

期间又有一名队友选择了退出,看来坚持下来还是不容易呀!

到了16号,我去考科目二,两次机会,都挂了。索性就准备全心全意地做项目。

由于剩下的3名队友同样是小白,也没项目经验,所以我决定我的队伍的项目不用微服务,使用单体架构。

但是单体应用也没经验呀,我就去Github上找前几届的项目,第一页前几个都是微服务架构的,即使是单体应用我对他么的架构也不满意,我就去看了kan用Golang开发的知名项目Gin-Vue-Admin 发现他的架构我可以拿来参考,所以我就大体确立了如下的文件结构:

go 复制代码
├── cache         //用来放redis相关的用来储存token
│   ├── redis.go
│   └── token.go
├── config    //配置文件的加载,我选用了godotenc
│   └── config.go
├── controller  //controller
│   ├── comment.go
│   ├── favorite.go
│   ├── feed.go
│   ├── publish.go
│   └── user.go
├── logger      //日志相关的配置,选用了viper
│   └── logger.go
├── main.go  //程序入口
├── middleware  //中间件 用来验证token
│   └── auth.go
├── model    //储存一些模型 和初始化数据库
│   ├── comment.go
│   ├── database-operator.go
│   ├── favorite.go
│   ├── follow.go
│   ├── response  //响应用到的结构体
│   │   ├── auth.go
│   │   ├── comment.go
│   │   ├── favorite.go
│   │   ├── publish.go
│   │   ├── user.go
│   │   └── video.go
│   ├── user.go
│   └── video.go
├── public  //静态资源储存目录
├── readme.md
├── router  //路由组
│   └── router.go
├── service  //一些service
│   ├── favorite.go
│   ├── publish.go
│   ├── upload.go
│   ├── user.go
│   └── video.go
└── utils   //一些工具函数
    ├── check.go
    ├── crypt.go
    ├── ffmpeg.go
    ├── hash.go
    ├── jwt.go
    ├── storage  //储存系统相关的
    │   ├── local.go
    │   ├── storage.go
    │   └── tencent_cos.go
    └── string2time.go

期间部分的改动例如一开始是有gobal模块的,但是因为bug,我又删除了。

这个也是经过了好多次改动的。

自从8月17号我创建了Github仓库后,邀请队友成为Contributor,就两个队员回应我了,但是只有一个队员和我写了这个项目,另一个队员说不会,放弃了,此时队里还剩3个人,另一个人说电脑坏了,修不好了,也退了,队伍就剩两个人了。

其实刚创建仓库的时候,我也不怎么会,都是参考 别人的代码,看各种教学视频,Chatgpt慢慢搓得,队友也是个小白。为此我们对于这个怎么写讨论的很激烈,我给他分配的任务是写数据相关的表和初始化数据库的操作,我去写utils里的储存模块和jwt。对于这个储存模块,我可是费了牛鼻子劲了。真难写。重构了n次,用了一周的时间才定型。

队友写的model就很简单了,直接从别的库里copy过来的,所有的流程处理都是controller里一把梭,写的不太认真,程序跑不起来呀,能跑起来之后响应也是错的,只有注册用户的能用,最后发现的是响应不对,我就把响应的结构体和数据库储存数据的结构体分开,重写了队友的,然后就重写了很多代码,这时也开学了,前几天没课,我就从白天写到半夜,改bug,测试。

3.结营

这时候就来到了8月27号及以后了,9月初就要交代码答辩,我就让队友写了几个接口,没想到他写的都是bug,一个能用的都没有,跟他说了具体代码要塞service里,controller里主要是用来处理请求与响应的,还是一个文件一把梭,没办法,只能由我来重写,写到点赞,关注的时候,由于对数据库操作比较多,容易报错,我才从chatgpt里了解到了数据库事务,我打算把它列为todo的,写完逻辑后再具体添加上,此时项目马上就完工了。

4.个人感受和总结

作为队长的感受: 作为领导者,选择是很重要的,当要选择基于什么开发时,选择不分上下时,一定要定下来。协同开发沟通很重要!! ,不同开发人之间有信息差,和每个人写的代码风格不一样,一定要制定一套规范,所有人都要按着这个规范来写,这样就不会造成代码不匹配的情况。

对个人来说: 写项目一定要多重构,开发时一定要多dubug,好多情况都要考虑到,不能想用户的所有操作都是正确的,一定要根据具体情况来判断,要多调试,多看底层,否则你server上写的是正常请求并响应了,但是客户端的操作并不良好。

相关推荐
martinzh1 小时前
Spring AI 项目介绍
后端
前端付豪1 小时前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python
爱学习的小学渣1 小时前
关系型数据库
后端
武子康1 小时前
大数据-33 HBase 整体架构 HMaster HRegion
大数据·后端·hbase
前端付豪1 小时前
19、用 Python + OpenAI 构建一个命令行 AI 问答助手
后端·python
凌览1 小时前
斩获 27k Star,一款开源的网站统计工具
前端·javascript·后端
全栈凯哥2 小时前
02.SpringBoot常用Utils工具类详解
java·spring boot·后端
狂师2 小时前
啥是AI Agent!2025年值得推荐入坑AI Agent的五大工具框架!(新手科普篇)
人工智能·后端·程序员
星辰大海的精灵2 小时前
使用Docker和Kubernetes部署机器学习模型
人工智能·后端·架构
MikeWe2 小时前
C++宏的解析:从基础语法到实战场景
后端