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

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

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

不过大项目: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上写的是正常请求并响应了,但是客户端的操作并不良好。

相关推荐
hlsd#43 分钟前
go mod 依赖管理
开发语言·后端·golang
陈大爷(有低保)1 小时前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、1 小时前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头1 小时前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
2401_857439691 小时前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧6661 小时前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
阿华的代码王国1 小时前
【SpringMVC】——Cookie和Session机制
java·后端·spring·cookie·session·会话
小码编匠2 小时前
领域驱动设计(DDD)要点及C#示例
后端·c#·领域驱动设计
德育处主任Pro2 小时前
『Django』APIView基于类的用法
后端·python·django
哎呦没4 小时前
SpringBoot框架下的资产管理自动化
java·spring boot·后端