从事电商Java后端一年的思考与总结

从事电商Java后端一年的思考与总结,第1张

文章目录
  • 1 前言
  • 2 学校的那些事儿
  • 3 某行的软件研发中心暑期实习总结
  • 4 某医疗行业的3个月实习
  • 5 沉淀2个月
  • 6 跨境电商行业实习并转正

1 前言

笔者于2021年毕业,计算机科学与技术专业,目前使用的语言是Java(其实用哪种语言并不重要)。于2020年7月在某行的软件研发中心开始为期2个月的线上实习。于2020年9月在某医疗行业的小公司开始为期3个月的线下实习。于2021年2月在某电商行业的公司开始为期5个月的线下实习,并于7月在该公司转正。

2 学校的那些事儿

在学校学习的是常规计算机专业的课程,大部分主要是以理论教学为主,没有教如何用代码写项目。大厂确实也以理论为主来面试,其中包括但不限于计算机网络、 *** 作系统、算法等。

3 某行的软件研发中心暑期实习总结

由于疫情原因,只在线上进行的暑期实习,银行的人才基本都是研究生为主,本科生极少,笔者被分配到大数据挖掘的小组做一个小课题,奈何主要都是神经网络深度学习的东西,笔者没法发挥积极性。期间每天都看视频零基础学SpringBoot。

收获:

  • 掌握了基本的SpringBoot开发,能独立阅读简单的springboot项目。
  • 初步掌握将web应用部署到云服务器上。

不足之处:

  • 指导老师级别很高,很忙,而且是偏大数据挖掘管理岗方向的,笔者缺乏专业的指导,没有了解到企业级开发的常规流程,比如需求评审、确定需求、技术评审、api接口文档、正式开发、测试、交付。
4 某医疗行业的3个月实习

刚进去的时候,项目只有我和一个职别为架构师的大佬。大佬很nice,亦师亦友。入职第一天安装好开发环境,第二天直接上手项目。

收获:

  • springboot常规的增删改,业务级别的增删改,除了增删改还是增删改
  • 上linux查看日志,基本掌握了常规的linux命令 *** 作
  • 整合过feign的远程调用框架
  • 了解mysql集群、redis集群、docker、分布式事务、k8s等概念,开始有一些中间件、集群的知识
  • 学习氛围很好,上下班的通勤路程都有学习
  • 有大佬推荐《大型网站技术架构》一书,笔者在随后的几个月里阅读完,确实不错
  • 初步涉及了企业级开发流程,有需求评审会议
  • 不懂的问题,自己先独立思考或解决。解决不了再去找大佬或者将自己的思考讲述出来请大佬给建议

不足之处:

  • 基本都是数据库级别的增删改,没有涉及其他中间件,比如缓存、消息队列、线程池等等。无法学到更加深层次、更互联网的东西。可能也由于业务限制,根本不需要那么多技术栈,常规的增删改就能完成,不需要考虑引入其他中间件搞得那么复杂。
  • 用户量不大,开发的时候不用考虑性能问题,基本都是很常规的增删改,根本没有并发问题。
  • 开发流程仍然不规范。没有完整的开发流程,多次反复改需求,返工严重。ui交互不人性化,一套模板打天下。
5 沉淀2个月

考虑到继续待下去无法学习到更多高级深层次的东西,加上还要做毕业设计、毕业论文,实习期满后,没有继续留下来学习。

  • 做毕业设计,内容是研究并发环境下如何提高数据加载速率。在此过程中,了解了nginx缓存、jvm内存缓存、j2Cache、redis集群、Linux文件根、netty、Linux IO等等。(印象最深刻的是nginx+redis的缓存架构)
  • 复习源码级别的spring bean生命周期的原理,用于包装简历、加分
  • 学习源码级别的nacos自动注册原理,用于包装简历、加分
  • 复习jvm的基础知识,堆、虚拟机栈、方法区、程序计数器、本地方法栈、创建对象的过程等等(还没实习前就看过关于jvm基础知识的博客并总结,后续还粗略地看了周志明写的《深入理解Java虚拟机》)
  • 年前面试若干家公司,还能测试所学知识的掌握程度
6 跨境电商行业实习并转正

与前面的医疗行业的实习对比,期间学到或用到的东西确实不仅仅在MySQL这些,还会有缓存、分布式锁、MQ队列、线程池、设计模式。用户量虽然不多,但是代码实现时需要考虑性能以及可靠性,不仅仅局限于数据的增删改。

  • 主要做营销业务偏多,比如第N件打折的活动、满件减价、满件打折、满额打折、满额减价等等。使用策略模式+模板方法,提高营销活动业务代码的扩展性。其实所有的活动类型无非就是减价、打折、赠送,而享受活动的条件规则有无限种。后面出一个详细文章总结。总结来说就是学到了设计模式,其实都是一些套路。详情见用设计模式解决电商项目的更新库存业务
  • 优化运费配送区域和税费的接口。涉及到MySQL锁知识,学习了InnoDB的存储架构以及一些锁知识。后面出一个文章详细总结。详情见MySQL高级专栏
  • 商品导入接口。涉及到MQ队列,停留在会用的层面,没有了解原理。期间遇到消息还没发完就被提前消费,业务上应该要等消息全部发完才允许消费者消费。
  • CRUD的业务涉及事务、分布式锁、MySQL锁、缓存的修改与删除等,学到了如何完美地写出CRUD。详情见InnoDB锁和事务模型之锁、MySQL锁之InnoDB锁实战、面试必备——MySQL的ACID实现原理、电商缓存的设计思想、
  • 大批量更新百万级商品缓存。有两种方案,详情见电商缓存之如何更新20万个商品缓存。
  • 需求上线时需要考虑数据配置、数据更新、数据一致性。必须兼容生产环境上的数据,必须保证生产环境能够稳定运行。运维方面需要考虑回滚机制、发布方案。
  • 拿到手的需求,不必直接上手写代码。先从整体上理解需求,从业务背景切入,从UI交互方式考虑需求是否符合、是否便捷、是否人性、是否成本过大。再思考具体的解决方案,即详细设计,比如架构设计、持久化方式、消息、缓存等。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/726567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存