共计 1676 个字符,预计需要花费 5 分钟才能阅读完成。
前言
只有光头才能变强。
文本已收录至我的 GitHub 仓库,欢迎 Star:https://github.com/ZhongFuCheng3y/3y
不知道大家还是学生的时候有没有这个问题:公司做的项目和自己在学校练手的项目有多大的区别。我以前在学校跟着视频做一些项目练手,总感觉公司做的东西会要难很多,不知道跟公司的真实项目区别在哪。
总的来说,我实习的总时间也快半年了,谈谈我觉得公司项目和自己练手的项目有啥区别,欢迎补充。
一、区别
在视频练的项目大多数都是由讲师在 本地 编码来讲解整一个项目的开发过程,而我们去到公司做的第一件事是啥?把项目 clone(checkout)到本地来看。
这就有两个区别:
- 去到公司往往 不是从零开发一个项目 ,项目的框架和代码都已经写好了。我们更多要做的就是 迭代 这个项目(或者说修复这个项目原本就有的 Bug)
- 一个项目往往都会有几个人进行开发,这就肯定要用到 版本管理工具(SVN/Git)。所以,去公司做项目之前最好是提前去学学 Git/SVN 这些工具的使用
比如说,我们使用 Git 的时候,要修改代码的时候会新建一个分支,改完了再合并到 master 分支上。
好了,现在项目已经在本地上了,那我们要将项目 在本地上 启动起来吗?这得 问同事。在公司做项目,一般都分了好几个环境
- 线上(现在正在给用户用的)
- 测试(写完功能,先看一下在测试环境下有没有问题,没问题才发布到线上环境)
- … 等等(可能名字叫起来不一样,但不可能在本地上写完的代码直接就放到线上去跑了)
有的时候,可能环境过于复杂(各种系统相互依赖),clone(checkout)下来的项目就很难在本地上启动起来,或者说在本地上的数据跟线上的数据差距太大了(比较难看出效果)。所以,有的时候 可能 就不用在本地将项目启动起来。
那问题来了,我写完的代码怎么调试啊?我们可以这样干的:将本地写好的代码 push 到测试环境,然后本地 远程连接 测试环境,对其进行调试。
还有,我们自己做项目的时候,try-catch
完了之后,习惯可能就e.printStackTrace();
但公司的项目不会有 e.printStackTrace();
这种代码的存在。因为这打印出来的错误信息 没有日期、等级 等等,分析起来不方便。
在公司一般将错误的信息(或者有用的信息)写到 log(日志)中。
- 比如说:
LOG.error("send java3y article failed, {}", e);
于是,一般出现了问题,我们先去登上机器,查一下 日志的信息 是怎么样的。而登上线上的机器上,也 不是直连 的,会经过一层 堡垒机。堡垒机是做啥的?
每次登录线上的机器都要 ssh xxxxip 到堡垒机上,然后再到堡垒机上输入线上机器 IP 连接,着实麻烦。于是大佬们就会写 自动登录堡垒机,直接输入 IP 到线上的脚本
于是乎,我们就登录到堡垒机上,然后再连上线上机器就去查看日志了。查看日志怎么看?
- 直接
cat console.log
吗,那得找到什么时候啊? vim console.log
吗,我想根据某个关键字来查怎么在 vim 上操作啊?如果log
文件太大了,vim 打开太卡了怎么搞啊 …所以,常用 inux 命令还是得学学的呀
- https://www.cnblogs.com/xiashan17/p/7059978.html
- https://blog.csdn.net/qq_31617637/article/details/71426904
还有一点就是,在公司开发都要申请权限才能对数据库 / 机器 / 各种资源进行操作。而不像我们个人开发各种 root 权限,数据库各种 DDL/DML 随便玩。
DML/DDL 数据库操作都要申请权限,发布代码到线上也要申请权限,想要去线上的机器上查看日志也要权限 …..
最后
总结:
- 版本控制工具
- 远程连接 Debug 调试
- 不再使用
e.printStackTrace();
,而是log.error()
来替代 - 各种权限都需要申请和审批
乐于输出 干货 的 Java 技术公众号:Java3y。公众号内 有 200 多篇原创 技术文章、海量视频资源、精美脑图,关注即可获取!
觉得我的文章写得不错,点 赞!