2021年11月2日实习入职
这一天,我终于拥有了心心念念的Mac而且还是16+512的顶配版带Touch Bar的MacBook Pro
看到Terminal的那一刻,心里就感觉,这才是程序员应该玩的玩意儿嘛!
然后带我的大佬给我讲解了他们当前在做的项目,把我拉进了GitHub里公司的group,把准让我负责的项目clone下来开始看他们已经写好的代码,之后学着用Docker、K8,鼓起勇气找运维大佬开Docker仓库权限,给自己的demo部署CI/CD,终于在千辛万苦的努力下自己的demo能成功通过在GitHub中提交PR然后自动更新最后访问了,自己也算是终于明白了以前只在B站上才能看到up主秀的devops操作是怎样的一个流程。
以前一直用的Java,让我接手的项目用的是Kotlin,自己倒也没觉得难,学就完事儿了嘛,后来,后来,啊,Kotlin真香,写起来比Java舒服多了。
之后同时又接手了一个字段转换的Python项目,后来我问带我的大佬,为什么都不问我会不会Python就直接把这个项目扔给我让我维护了,他说咱们科班出身这些不是都是基本功嘛!我心想:当时Python课教的都是一些简单的皮毛,还好自己有做过Python相关的项目。然后接手这个Python项目之后,大概看得懂写的是啥,然后要改的时候,大概知道怎么改,有些代码不知道Python中怎么编写的就Google或者实在不知道 怎么写就鼓起勇气找项目原主人求助。
后来基本上就全都是业务相关的工作了,然后就听产品经理讲需求,码代码,修bug,怎奈年少轻狂,总感觉自己的代码写的没错,但……
其中有几次遇到了业务代码难点
比如
1、要修改一个层层嵌套的json里面的某个字段,就在json和object中来回倒腾,然后运行起来,测试,报错,再修改……
2、因为这个项目是我接手过来的,他们刚开始选择了jpa而不是我擅长的mybatis,其中遇到了jpa自动创建的表的格式虽然是utf-8但是字段默认编码是Latin然后新增数据的时候如果是中文就会新增失败,经过一系列操作修改了jpa的DefaultMysql57InnoDbDialect才得以解决。
3、还有就是业务中有每次刷新列表都要去请求es获取id,然后通过id查询数据库获取DocumentId的过程,就通过Guava的缓存优化了该过程。
4、以前只知道在Android里面要用OkHttp去请求后端获取数据,然后我负责的这个项目是中层自然也要请求上游获取数据做处理之后传给下游,所以,okhttp也捡了起来。
5、业务中需要接Knative以获取相应的cloud event,在带佬的帮助和自己的努力下,也接上Knative了,后来因为Knative的消息挤压问题,又转换成了直接从Kafka消费。
6、以前想过既然GitHub可以存代码,然后还看到其他仓库存几十M的PDF电子书的,那为什么不拿来当网盘呢,现在终于明白了,GitHub仓库最大是100M,如果超过100M就是大文件了,再想要存到GitHub就不能了,只能通过Git LFS来存储了,然后就遇到了通过Git LFS把三百多M的公司名字典上传到GitHub了但是,Argocd拉的是大文件的指针,然后就可想而知了,一用到这个大文件就报错。因为自己Argocd不是自己弄的,后来通过把大文件和jdk一块打成基础镜像,然后之后都FROM 该基础镜像解决的。
7、对了,上面说到大文件,就是那个字典,每次读取到内存的时候,自然之前配置的-Xmx512m就OOM了,后来配置到2048M才够用。