在公司做的项目和自己在学校做的有什么区别?

前言

只有光头才能变强。

文本已收录至我的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到线上的脚本

于是乎,我们就登录到堡垒机上,然后再连上线上机器就去查看日志了。查看日志怎么看?

还有一点就是,在公司开发都要申请权限才能对数据库/机器/各种资源进行操作。而不像我们个人开发各种root权限,数据库各种DDL/DML随便玩。

DML/DDL数据库操作都要申请权限,发布代码到线上也要申请权限,想要去线上的机器上查看日志也要权限.....

最后

总结:

  1. 版本控制工具
  2. 远程连接Debug调试
  3. 不再使用e.printStackTrace();,而是log.error()来替代
  4. 各种权限都需要申请和审批

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!

觉得我的文章写得不错,点

原文地址:https://www.cnblogs.com/Java3y/p/11180240.html

时间: 2024-10-20 19:09:45

在公司做的项目和自己在学校做的有什么区别?的相关文章

在较成熟的中大型公司做创业项目,是种什么样的体验?

在体制发展较成熟的中大型公司里,搞创业项目,也是创业的一种姿态. 记得之前经常会碰到一些即将毕业的或者面临择业的朋友,会问到“依照现在国内互联网公司发展的情况,现在选择去一些较成熟的公司,如BAT这类的公司更好呢,还是选择去一些创业公司更好呢?” 很多专业的职业规划指导师,都会列出N条这样选择或者那样选择的优缺点,但是今天我想和大家分享另外一种工作的姿态,如标题所示. 什么样的公司称得上较成熟的中大型公司呢?这个当然也没有统一标准,不过按照目前国内互联网公司的现状来说的话,除了以BAT为首的大佬

5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——使用datagrid做报表统计

需要说明一点:数据库访问我使用的是EF框架,但是在报表统计着一块由于使用到了动态表,即根据每一天单独生成了一张数据表,所以不好使用EF进行预先添加,于是我在数据库访问层里面封装了两套数据库访问框架,一个就是EF,一个就是传统的ADO.NET.当设计到使用动态表时,我就调用用ADO.NET进行数据库访问操作了. 先看下View,这里我使用的是jquery easyUI里面的datagrid来做的报表.如下: 单击选中日报: 年报如下: @model YKT.Model.SubCompanyRepo

<转>国内一些大公司的开源项目

昨天看阿里的MetaQ文档,感觉对于消息系统的理解,比起大多数文章都要出色得多了,有些分析也非常的有实用性.估计还有很多优秀的项目没被发掘,于是就调研了一下,国内一些大公司的开源项目. 阿里 阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分.有很多重量级的项目,例如LVS.Tengine,或者很有实践价值的中间件,例如MetaQ(分布式消息系统).dubbo(RPC框架).cobar(数据库中间件),或者是Java世界的工具,例如druid.fastjson.都说国内Java公司的技术架构

经验之谈—如何快速熟悉公司的旧项目

我们打个比方,假如你去到一家公司,然后一开始,要下载公司的旧代码,接下来就是熟悉公司的旧代码,假如这个项目是两三年前做的,那么一直搞到现在,假设有10万行代码,那么让你来熟悉这些旧代码,然后在旧代码的基础上,增加新的功能模块,是非常苦逼的,有时候,都不懂怎么入手.如果你想从上往下一行一行的来阅读,那么当你花了大量的时间去阅读完之后,一无所获,看完之后,都忘了.这时候,就显得非常的悲催... 方法:搜索 这样我们就能不用读懂别人的代码就能改需求.将我们搜索到的页面,将页面截图和控制器,做成笔记,保

【转载】工程师必看:做完项目之后的九问!

工程师必看:做完项目之后的九问! 及时的自我总结,从技术上讲,每作完一个项目/电路设计,或者项目时间比较长,就在一段工作时间之后,好好小结一下最近的工作成绩,我觉得这是很有必要的.根据我个人的体会,可以参照下面的几点去总结. 另外我还想说,项目的完成,是公司的获得,股东的收益,而自我的获得和提高,主要是表现在以下几个方面的.如果以下所列,你的回答都是否的话,那很遗憾,你自己的收获为零,这肯定不是我们希望的. 1. 对于相同的电路/架构,是否有更深入的理解?Note:比如一个简单的bias电路,一

阿里,腾讯内部十二个大数据项目,你都有做过吗?

随着社会的进步,大数据的高需求,高薪资,高待遇,促使很多人都来学习和转行到大数据这个行业.学习大数据是为了什么?成为一名大数据高级工程师.而大数据工程师能得到高薪.高待遇的能力在哪?自然是项目经验.下面给大家大概介绍一下在阿里的"双11"."双12"."双旦"即将到来的"618"与腾讯大数据都用上的十二个大数据项目:阿里,腾讯内部十二个大数据项目,你都有做过吗?一个大数据分析项目关键构成如下: 信息采集组.数据清洗组.数据融合

外包项目复杂的环境中做项目管理真的很糟糕

突然之间想写点什么,可能是写了一天的材料有点感慨,怎么开头呢,突然不好下手了. 我给这点感慨起了一个题目叫"在外包项目复杂的环境中做项目管理真的很糟糕". 项目形态,客户(甲方)国企-承建厂商(乙方)-承建方供应商(N个丙方),而我只是一个丙方中的一员.至于为什么项目的管理让丙方的我来干,大致原因是这是一个非开发的技术类项目(实施技术项目),建立企业级数据中心,采用的是大规模并行数据库+Hadoop平台(cloudera),其中采用的都是一套成熟的套装软件,乙方基本上的定位都是项目集经

从零开始,跟我一起做jblog项目(二)从Maven到Gradle

从零开始,跟我一起做jblog项目(一)引言 从零开始,跟我一起做jblog项目(二)Maven 从零开始,跟我一起做jblog项目(二)从Maven到Gradle 上一节讲到项目构建工具Maven,对JAR包的管理不可谓不强大 博主在使用maven引入Spring框架时,了解到Spring推荐使用gradle工具来构建项目 百度了一下,发现Gradle也是一套很优秀的项目构建工具 Gradle使用Groovy语言配置项目和依赖,在极大地提升灵活性和配置性之外,甚至配置代码要比XML结构的POM

最近在做政务项目,此种项目,本来并不大,主要原因呢,就是要理好业务需要。

主要就是码td画面了,我码了很久,一直像不得要领,究其原因,主要是自己在得到一个块儿时没有一个完整性的认知. 很多零星的点,自己就把它当了零星的点来做,最后的结果就是,做过的点到最后又散成一团. 其实不应该是这样的! 而应该一开始就应该将.net里的ioc和service给整合好. 从前觉得service区分有些没用,如今看是我错了,service还是需要分开的,因为一时用了代码生成器生成了service工作单元的基础代码,这样最后就走背道了... 被自己给误导了. 还是应该 将mvc中的ioc