日常啰嗦
这两天也一直在纠结这一篇文章该写什么东西,前面临时加的两篇文章就有些打乱了整体节奏,这一篇又想去写一下代码层面优化的事情,可是也不太能抓住重要的点,不太确定从何入手,因为这件事情牵涉了太多技术问题,存在于项目的方方面面,如果想要透彻的去讲这件事,我也知道是不可能的,纠结了两天,这篇文章就着眼于最近的一些改动上吧。
花了一周的时间,把项目小小的优化了一下,虽然只是一部分,但是慢慢积累下来,效果应该会越来越明显的。
我的github地址
原因
前面的文章讲了log、maven、测试、版本控制,这些可能都是在项目维度上的一些优化方案,但是我想了一下,好像代码这一层的优化确实没有刻意的去记录过,觉得平时实现功能和解决bug的都是必须的再正常不过的事情了,因此也没有单独写一篇文章去说这个事情。
为什么今天会写这么一篇文章,也是因为最近的个人状态不怎么好吧,要工作,要更新代码,要新增功能,还要写博客,实在是有些无法全部兼顾,尤其是最近代码的修改和提交也比较频繁,写博客这件事就有些跟不上进度了。几件事情都想要去做好,但是精力有限,因此最近状态也有些起伏,希望这几天可以调整好。(这两句话是发发牢骚,顺便凑凑文章的字数)。
平时做练习的时候,也不止写了这一个项目,以后也会陆陆续续放到github上来。这个小demo更新了也有两个月了,打算就在这篇文章里讲讲对代码的改动和一些自己的想法,当然,都是围绕这个demo及最近的一些修改去论述,以往的修改以及以后的计划可能就不会提太多。
至于这次修改的原因,一方面,是自己想对项目小小的动一次刀,另一方面,是开源到网上之后,很多朋友都给了反馈,指出了许多的问题,因此也更坚定了心中的想法,还有一个原因,就是有些朋友的做法我不是很理解。
如何优化
首先是优化目标的明确,结合网友的反馈和自己的想法,总结了以下四点:
- 代码整洁
- 提升响应速度
- 体验优化
- 减少资源开销
然后是要找到优化的关键点,确认优化的方向使得方案落地。
代码整洁:
- 代码命名规则
项目不大的时候可能也不会有特别不协调的感觉,但是如果项目越来越大,参与其中的同事越来越多,差异性和不协调行就体现出来了,每个人都按照自己的方式、每个人都天马行空、每个人都按照自己的想法不作出妥协,最终得到的可能是一团一团乱麻一样的代码,如果项目中新增一位成员,看着各种风格的代码,应该会疯吧。
这是15年写的代码,那时候对于命名规则还不怎么关注,编写代码的时候只讲究功能实现,写的时候也就天马行空任意发挥,想怎么写怎么写,不考虑后期的维护或者和同事之间的合作。如果一直这样肯定不会有什么进步,实现了功能后,也要想想怎么更好的实现功能,怎么使得代码更美观,怎么使得响应速度更快,怎么更安全,怎么更健壮....
针对于此做了两个方面的改动,一是检查了java代码中的命名规则,其中不合理的做了修改,改为驼峰命名法,二是修改了一下数据库表中字段的命名方式,统一改为蛇形命名方式,以后都会遵循这两种方试,做好代码规范。
- 清理程序中多余的代码
代码中有很多注释,或者一些暂时用不到的代码,由于担心可能会用到或者担心项目经理突然改变主意了,因此就注释掉放在项目里不管了,少量代码还好,如果时间长了,这种不在意的代码越积越多,影响代码观感,也影响后期维护人员,因为在熟悉代码时不仅要看正常的代码,这些注释了未删除的代码也要一并看了,不然他也觉得会漏掉东西,这就是个不良循环,实际上没用或者说连编码者都不知道什么时候会用到的代码充斥在项目里,实在不是一件好事,因此,该果断删掉的就果断删掉,即使将来用到,你也完全可以查询版本记录。
由于一些原因,删除了书架的功能,一开始是想注释掉的,觉得可能有人会用到,后来还是全部删除了,这种"无用"代码存在于项目里真的不是一件舒心的事。
体验优化和速度提升:
布局不合理,页面卡住,加载速度慢,bug太多,这些因素都会导致用户体验很差,屎一样的东西没人愿意用的,针对这几个问题做了如下修改。
- 页面布局修改
不止一次有人留言说过页面中布局不合理,没有做自适应,页面会随着浏览器的拉伸而卡住,一开始并没有立刻修复,因为当时有其他功能需要上线,所以就搁置了,这次重新修改了页面布局,看起来比原来清爽许多,也不会因为拉伸而卡住了。
- 提高加载速度
在原来的列表页面,打开都比较慢,加载动画就一直转啊转,用户看到这个页面就只能一直等,直到页面渲染完成,这个过程就比较煎熬。导致这个问题的原因就是请求时pageSize设置不合理,数值过大导致加载较慢,100条数据就说明网络请求需要从后端服务器传输100个数据量的数据,得到这100个量的数据还要通过js去渲染这100条数据到页面中,现在pageSize改为10,只需要从后端获取并传输10个数据量的数据,前端js也只需要渲染10条数据就完成整个渲染过程,10和100的比较,速度对比还是很明显的。
- bug修复
bug太多,用户在页面中得不到正确的响应,也很影响体验,url跳转错误和重复alert的bug修复后,首页的体验应该会好一些。
减少资源开销:
尽量重用对象
减少使用new关键字创建对象
程序中有多线程线程编码时使用线程池
使用数据库连接池
下一篇开始详细介绍
总结
其实代码优化这件事呢,一直在做,可以在github上看到一条条的commit,记录着代码的变化及功能改动。以往呢确实没着重的去讲这个点,因为这是一件会持续下去的事情,即使讲也只能讲其中的一部分,实在太多知识点了,刚好这周并没有做太多的功能,只是做了一些修修补补,于是用一篇文章来对这周完成的工作做个总结,以后还会用更多的篇幅来讲述项目的改进和优化。
吐槽
其他事情不说了,就说现在的网站吧,我本来想的就是大家下载代码之前可以先体验一下,但是有些人做的事情怎么就这么讨厌呢?两件事让我有点儿烦躁,1.改admin密码,2.胡乱添加数据。
我是真的想不通啊,体验测试可以,修改数据可以,但是为什么你连登陆信息也要改,你改了别人就不看了?还有些人呢,添加了n多的数据,往一张表里添加了1000万条左右的数据,导出来都是几百兆的文件,我也是很烦躁,哈哈哈。可能有些人会说,谁让你自己写的不严谨的,活该。他妈的,我代码公开的,账密也公开的,我还怎么严谨?有些时候也不能只考虑自己完全不顾及别人吧。也因此修改了部分功能,这种人也真的是无聊幼稚。
算了,也不怪别人了,有问题就自己修复吧,怪也没用,谁理你。
相关推荐
完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
这是一个基于Java技术栈的Web应用开发整合包,主要包含了Spring、SpringMVC、MyBatis、Maven和easyUI这五个关键组件。下面将详细解释这些技术及其整合方式。 **Spring框架**:Spring是一个全面的Java企业级应用开发...
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
基于Spring+SpringMVC+Mybatis+easyUI实现的后台管理系统,可用作管理系统开发模板 项目经过严格测试,确保可以运行! 功能简介 本项目实现了一个简单的后台管理系统,可以作为ssm项目学习的脚手架,主要包含以下...
本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...
总的来说,"Spring+SpringMVC+MyBatis+Maven+EasyUI整合代码"提供了一个完整的Java Web开发环境,涵盖了后端服务、数据库操作、项目构建以及前端展示,是企业级应用开发的常用选择。这个压缩包文件"ssm-maven"可能...
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
【Spring+SpringMVC+Mybatis+easyUI】是一个经典的Java Web开发框架组合,广泛应用于企业级应用系统中。这个组合提供了模型-视图-控制器(MVC)架构模式的实现,以及数据库操作的便捷支持和用户界面的美化。下面我们...
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
在IT行业中,构建Web应用程序是一项常见的任务,而SSM(Spring、SpringMVC、MyBatis)框架组合是Java开发中的主流选择。本项目利用这三个框架与前端的EasyUI库协同工作,创建出一个功能丰富的应用程序。在此,我们将...
基于spring+springMVC+mybatis+easyui技术实现的医药后台管理系统 项目描述 基于spring+springMVC+mybatis+easyui技术实现的医药管理系统 运行环境 jdk7+tomcat7+mysql+eclipse/IntelliJ IDEA+maven 项目技术...
"SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...
基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
总的来说,单元测试在Spring+SpringMVC+MyBatis+EasyUI项目中起着关键作用,它确保了每一个组件和功能的正确性,提升了整体系统的可靠性。通过编写详尽的测试用例,开发者可以更自信地进行代码修改和系统扩展,从而...
在本项目中,"Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统",我们看到一个基于Java技术栈的Web应用开发实例。这个系统利用了多个核心技术来构建一个功能完备的员工管理...
在"Spring+SpringMVC+MyBatis+Maven+easyUI整合代码(2017年4月12日)"这个项目中,开发者已经完成了上述的整合工作,你可以下载"ssm-maven"压缩包,查看并学习整个项目的结构和配置,加深对SSM整合的理解。...
基于spring+springMvc+mybatis 开发的企业门户网站基于spring+springMvc+mybatis 开发的企业门户网站基于spring+springMvc+mybatis 开发的企业门户网站基于spring+springMvc+mybatis 开发的企业门户网站基于spring+...