某万人中厂的实习总结

134次阅读
没有评论

共计 2590 个字符,预计需要花费 7 分钟才能阅读完成。

内容目录

 目前我实习工作所在的项目组就我一人搞开发,项目组负责安徽电信的数据需求挖掘这个方面,大部分人做的基本都是大数据挖掘,数据分析,我在里面搞开发主要做的也是报表,将数据可视化展示出来,前端+后端+运维上线均由我一人负责。工作了近2个月,完成了8个主要报表页面,权限校验,访问量统计,数据推送,数据调用。

 前端项目由我一人从0构建,组内没有提供任何的需求文档,技术选型说明;
 后端是基于万年Java Web老项目进行扩展,内部充满了JSP、HTML、JS、CSS、Servlet、Filter等;
 上线的服务器没有装MySQL、Redis,不提供容器化技术支持;

吐槽点

  • 项目开始时,丢了个老项目给我,说往上面加一些东西。实际上到目前为止,项目都做了个七七八八了,也没有发现现在做的这个项目与之前的老项目有什么关系。也就是说,明明可以独立出来的项目,非要往上面堆,造成在开发技术上的一种局限性。因为老项目是个Java Web项目,导致每次要进行测试,都需要打成war包,然后启动Tomcat容器;每次上线,还要打成war包,手动替换掉线上服务器里Tomcat的webapp内容。由于是集众多项目于一体的万年老项目,它非常具有历史蕴意,打个war包出来,war包大小300MB,并且连接线上的服务器还必须是Windows + 电信流量 + 一些特殊的认证工具才能连上,导致使用Mac的我,没法在自己的电脑上操作线上服务器,必须借其它大哥的电脑使用。我因为不想太麻烦别人,只敢在下班后才打包上线。项目不上线,就没法测试,也就是说,整个项目开发过程,一天只有下班后才有机会测试。问为什么没有测试环境?问就是没有。。。。

  • 项目经理是搞python数据挖掘和分析这块的,对整个要实现的项目所涉及的功能点及技术实现并没有很全面的了解。对于一个数据筛选权限校验的功能,甚至不知道怎么实现,还需要我提供实现思路(当然,我提供了说明我可以实现,自然就采用了我的)。所以整个项目开发过程中,除了一些通用的业务(如调用统一鉴权接口逻辑,以及一些无法自己解决+上网也无法解决的问题)需要找Mentor外,其它项目中特有的业务都是我自行摸索,项目经理除了每天追踪我这边的进度外基本没有太大帮助。

  • 开发测试需要的东西,要啥啥没有。因为项目中涉及到很多公司内部或电信内部接口的调用,为了安全性,调用这些接口都需要使用VPN和接口权限。我作为刚实习两个月不到的实习生,真的要啥啥没有,也不给帮忙申请。大多情况下,也无法借到,因为其他人开发时也需要使用VPN。在我开发前端页面时,这点到对我影响不大,提前给我一个json文件作为假数据就可以很轻松地把实际页面效果做出来,但是一旦做到后端那块,因为没有VPN,根本就没法进行后端的测试,整个项目做起来就跟黑盒子一样,需要凭借自己的推理+代码逻辑得到程序执行结果。

  • 除了上述几点外,其实还有很多我就不一一列举。我这只想说的是,作为一个近万人规模的中厂,太不把实习生当人看啦!尤其是一个大三的实习生!合肥3k多工资的实习生当正式员工用,没谁啦!

收获

  • 前端越来越熟练了,Vue3 + TS + Pinia + Axios + ElementUI这套技术栈基本可以让我直接根据一个原型图做出差不多的页面效果来。
  • 学会了打包,尤其是根据rollup来配置打包出来的目录结构,vite默认打包后所有的js、css和图片资源都放在assets下,我通过配置rollup后,打包出来的目录结构基本和传统目录结构保持一致,即:css、js、images、assets等;
  • 学会了页面加载优化,记得前端页面正式上线那周,页面加载得很卡,后面使用浏览器自带的性能分析工具发现是Echarts作图造成内存泄漏。因为一个页面涉及10多张echarts图,每次路由跳转时,都会一次性渲染10多张图,当频繁进行路由跳转时,就会出现页面卡顿甚至浏览器直接卡死的情况。为了解决内存泄漏这个问题,我选择使用Vue Router给页面设置缓存,即加载后的页面,内容就固定了下来,不会重新再次渲染,同时为了避免一次性渲染多个Echarts图,我采用延迟渲染的方法,先渲染用户看得到的区域所涉及到的图,再渲染用户后面看的到的Echarts图,这大大加快了页面加载时间。延迟渲染的方式也很简单,我尝试过记录加载帧和定时器两种方式。
  • 又回顾了Java Web内容,写了Servlet、Filter,因为老项目中没有用ORM框架,我也是使用了JDBC做数据库的操作。毕竟目前为止,涉及到数据库操作的 也就5个不到的功能,涉及到的SQL语句甚至10个都不到。同时又复习了一遍Tomcat服务器。这个项目Mentor拿到手的时候,他没有启起来,在我提供Tomcat的配置思路后才启动了起来。
  • 第一次使用Redisson。为了实现页面访问统计功能+定时推送访问数据的功能,我和Mentor讨论了该如何存储页面访问的统计数据,为了方便起见,最先考虑的是存储到Redis中,因为项目做到目前为止需要持久化存储的功能也就只有这里(我其实当时考虑到Redis作为缓存数据库,如果Redis中间挂掉或重启,可能会出现数据丢失的情况,我当时知道Redis是支持持久化存储的,但是需要进行配置才可以生效,后面Mentor转发了我一篇博客,里面提到现在的Redis不会出现数据丢失的情况),所以最开始,我实现了使用Redisson操作Redis统计页面访问数据。为什么选择Redisson?因为我觉得统计页面访问需要考虑加锁,Redisson对锁的使用非常方便,所以选择使用Redisson了。
  • 回顾了一遍Linux下安装MySQL和Redis。大部人在学习MySQL或在Linux上装MySQL时都是使用的最高权限admin或root用户安装。但是实际业务中,root用户或者说root权限是不提供使用的。而实习中使用非Root用户在Linux上安装MySQL算是收获点比较大的吧。

未来规划

  • 再实习一两个月,今年秋招跑路!
  • 抽空把我实习的项目抽离出来,做出传统的SpringBoot项目。今天项目经理告诉我,那个老项目现在没人用了,现在做的项目可以替换它,我听到这话高兴坏了,为什么不早说,知不知道每天打war包是件非常苦逼的事!
  • 这个项目后面或许要加个后台管理,如果真要做,我想试试我的React。
正文完
 
PG Thinker
版权声明:本站原创文章,由 PG Thinker 2024-08-01发表,共计2590字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
热评文章
Rust中所有权与借用规则概述

Rust中所有权与借用规则概述

在GC与手动管理内存之间,Rust选择了第三种:所有权机制...