做了很多项目,说说我的感受
The following article is from 编程导航 Author 星球-哒
大家好,我是鱼皮。今天给大家分享的是编程导航知识星球的哒同学的项目感悟以及经验分享:
星球原文链接:https://t.zsxq.com/0aueQaNcx
先介绍一下我的个人情况。
我在星球冒泡较少,但没有冒泡的时候都在默默的努力学习,加入星球快一年了,我是大二上学期开始学 java,如今跟着皮总的路线,已经到了 java 高级部分,就是学到了 juc 和 jvm 这里,我花费了一年时间,也不知道是快还是慢。
我做过的项目,从最开始的 javaWeb 视频的书城->皮总的用户中心->瑞吉外卖->黑马点评->仿 QQ 的聊天项目->学之思的在线考试系统(只实现了后台部分)->谷粒学院->课设的购物商城
其实从我这学期学习软件工程,我学习到软件工程的竞品分析->需求分析->原型设计-<数据库设计,系统设计,系统类的设计,然后我就发现我做过的系统,无论是我独自开发的系统还是跟着视频教程敲的系统,视频的教学基本就没有数据库的设计,系统设计,系统类的设计,甚至于复杂的逻辑也没有多少
首先说数据库设计,大多数视频都是直接给你建表的 sql 语句,直接让你运行,根本就不会教你分析项目的需求去建表,其次是系统设计,大多数视频项目根本就没有系统设计和系统类(类与类之间的关系)的设计,你试想一些根据你的系统画系统的类图,你就会发现你的类之间基本就没有关系(如果不了解关系有什么可以去看 图解设计模式)
我就是这种情况,我几乎分析了我的所有项目,根本就没有我自己设计类之间的关系,我都是用 mybatisX 工具生成 controller,service,serviceImpl,Mapper,然后写一些拦截器,过滤器,统一异常处理器,统一接口的响应结果,写一些基本的配置类,而数据库设计因为有学校的各种课设,每一个课设都需要数据库设计,现在设计表尚还算熟练。
我接着进一步思考,因为我发现我在做项目的过程中,发现后端来来去去都是增删改查,因为非常没有意思,对 java 的兴趣越来越低,甚至萌生了转行的想法。
但在我写课设的购物商城时,我用了从来没有学过的 vue 来写项目,因为我觉得有很多模板可以直接拿过来用,修修改改就可以了。起初我发现模板里的组件跟我自己要设计的页面还差很多东西,也就是很多东西都要自己写,这一点破碎我了之前天真的前端页面都是模板罢了的愚蠢想法。
然后为了进度我直接去网上下载别人商城前端,想着自己改交互接口就行了,结果我发现了下载下来的页面非常复杂,改了接口系统会有各种意想不到问题出现,与此同时我发现我同校的同学在 Gitee 上面有个商城项目,starts 有700多个,而且完全是用 jsp 写的页面,写的非常的华丽,我就在想原来 jsp 也能创造这么牛逼的东西嘛。
到这里引发了我对基础深入思考,然后我发现无论是前端还是后端的那些框架,其实都是别人用基础的写出来再封装好的,比如后端最原始的 web 开发应该是 jsp+servlet,因为对象管理不够好了,所以涌现了 spring 框架的 IOC 容器帮我们管理,因为要实现不侵入代码就可以对代码的功能进行拓展,所以涌现了 spring 的 AOP 切片编程,因为 servlet 作为接口接收请求,接口的方法映射做的不够好,涌现了 springmvc 的处理器映射器,因为 servlet 作为接口接收请求参数时需要我们手动获取参数和进行参数的类型转换,所以涌现了 springmvc 的方法参数解析器,同理还有 springmvc 的返回值解析器,mybatis 的代码与 sql 语句相分离,mybatis 的一级缓存和二级缓存,springsecuity 的登录校验,权限控制,还有 springboot 的自动配置,这些都是别人在原有的技术不足的基础上涌现出来的华丽设计。(ps这里举例是用了我熟悉的后端的技术来举例,前端的技术暂时没有深入了解,就不举例了)
而我们做项目之所以没有设计,因为设计框架基本都帮我们做好了,所以我们只要专注的写业务逻辑代码就可以了,但殊不知道如果我们长期都使用别人的设计而没有自己的设计,我们的设计能力会进一步递减,甚至到最后完全不会设计,这是有多悲哀的,如果自己不懂设计,那 java 的乐趣可就大大减少了,通俗点来说就是我们一直在使用别人的轮子,而自己完全没有造轮子的能力
直到现在,我感觉做一个系统后台的技术部分,由四部分组成:数据库设计->系统设计->系统类的设计->业务逻辑的理解设计,而我们如今的实现只能满足数据库设计和基本的业务逻辑,复杂的业务逻辑我现阶段还很难理解,在系统设计和系统类的设计方面我是根本就不会,所以现在我变成了一个真正的码农,不夸张的说,给任何一个人和我同样学习的时间,我能掌握的,他都能掌握
接下来我打算用原生的 jsp+servlet 重构我写过的系统,你没听错就是用最原始的 jsp+servlet,因为我想自己感受这些技术的不足,想自己设计轮子去优化他们(不知道有没有这个必要?还是我先把别人设计好的轮子用明白先再去尝试自己去设计轮子?)
最后补充一点:
我发现我在学习技术的过程不断的追求高新的技术框架,诸如 springboot+Redis+Rabbitmq+springcloud....到最后我竟然发现这些都是别人用最基础java语法设计出来的,而我在却学习这些技术的过程越来越忽视基础,倍感羞愧,其实很多技术的高级部分大家可以先不去学,诸如 mysql 的高级,Redis 的高级,还有阅读框架的源码,因为如果没有大量的实践经验,根本就不可能学会 sql 优化,Redis 的什么缓存雪崩啊,缓存穿透,缓存数据库和持久层数据库的数据一致性,什么分布式锁...我相信这些你离开了视频,独自面对一个没有人借鉴的项目需求时,你根本就不懂得合理使用这些技术,通俗点来说就是这些你也就是听个响而已,甚至不夸张的说 mysql 的索引怎么加,怎么进行合理的连表查询,Redis 的五种数据结构你都用不明白(我相信有很大一部分人一直只是在用 Redis 的 String 结构吧?)
与此同时,我觉得我们不能一开始就要求别人懂得设计,就好像开车一样,你不能一开始就要求人们懂得汽车是怎么造的才能让别人开车吧?所以现阶段我觉得虽然我没有造轮子的能力,但我使用轮子的能力在逐渐提升,等到提升到一定的阶段后再逐渐过度到设计阶段,在使用轮子的时候不断的感受和学习别人系统设计的魅力,直到最后自己能独立的设计出轮子,能根据现实的需求设计出各种各样的的轮子,帮助我们最终实现需求
以上是我关于技术的一些个人想法,如有不同,欢迎大家讨论和指出我的问题。
加入我们
欢迎加入鱼皮的编程导航知识星球,鱼皮会 1 对 1 回答您的问题、直播带你做出项目、为你定制学习计划和求职指导,还能获取海量编程学习资源,和上万名学编程的同学共享知识、交流进步。
💎 加入星球后,您可以:
1)添加鱼皮本人微信,向他 1 对 1 提问,帮您解决问题、告别迷茫!点击了解详情
2)获取海量编程知识和资源,包括:3000+ 鱼皮的编程答疑和求职指导、原创编程学习路线、几十万字的编程学习知识库、几十 T 编程学习资源、500+ 精华帖等!点击了解详情
3)找鱼皮咨询求职建议和优化简历,次数不限!点击了解详情
4)鱼皮直播从 0 到 1 带大家做出项目,已有 50+ 直播、完结 3 套项目、10+ 项目分享,帮您掌握独立开发项目的能力、丰富简历!点击了解详情
外面一套项目课就上千元了,而星球内所有项目都有指导答疑,轻松解决问题
星球提供的所有服务,都是为了帮您更好地学编程、找到理想的工作。诚挚地欢迎您的加入,这可能是最好的学习机会,也是最值得的一笔投资!
长按扫码领优惠券加入,也可以添加微信 yupi1085 咨询星球(备注“想加星球”):
往期推荐