初学者第一个Java项目总结
我的第一个完整项目总结
实习俩个月期间,主要是从一个学习往一个工作的状态转变,完成了安卓,web以及后端的任务,
项目整体框架是前辈搭建的,我在其基础上完成相关功能的开发,现在在这里总结一下,作为记录。
学习优良的开发习惯
从学习往工作过渡,有很多开发细节需要注意,为了尽量去避免一些不必要的错误和BUG,我们在设计系统的时候就要深入考虑:
-
异常处理 ,对可能出现异常的地方进行异常处理;
-
注释 多用注释,方便以后自己查看以及他人维护;
-
版本 无论是JDK还是其他一些工具的版本,尽量保持一致,避免版本不同带来的问题;
-
多态 多态的使用降低了系统耦合度,可拓展性提高;
-
新特性 我们在工作的时候也是需要不断的学习的,善于使用一些技术的新特性可以大大地 降低工作的复杂度和提升工作效率;
-
分布式 在进行系统设计的时候就必须考虑这个系统是往哪个方向设计,如果设计成分布式的,那么代码的设计就需要体现出模块化的思想,比如像@Cacheable这种的缓存注解就不能使用了,可以使用Redis来替代;
-
配置化 系统中的一些配置变量要统一写到application配置文件中;
-
日志 日志类似@slf4j的使用,便于调试和测试或者其他时候对操作的记录和查看。
-
swagger 在前后端分离的时候,前后端的连接就需要接口文档了,swagger就可以作为一个可测试的动态接口文档,swagger的配置和信息需要后端在代码中体现。
-
postman 同样是前后端分离的情况下,后端对于接口的测试工具,可单接口测试和批量测试。
-
navicat 作为一款可视化数据库管理工具,觉得非常好用。
-
设计模式 23款设计模式
-
线程安全 线程安全的类选择和数据库的类型选择都很重要。
Android
安卓这方面我主要完成了两个功能:
- 登录模块
- 拍照动态显示和点击预览
1)登录模块 使用的底层HTTP请求方式,原本是使用了Redis来存储和更新token的,但是由于Redis的BUG导致服务器被攻击,所以就撤除了Redis的代码,(Redis最好在内网使用)改用静态变量保存token,前后端使用json数据来交流。
2)拍照预览 这部分真的很烦,除了第三方的库,差不多还写了3000+行,与服务器的交互使用的http协议,具体实现在我的简书上有总结:链接:点击这里.
后端
后端在整个项目里面反而是最轻松的,因为后端比较看重逻辑,实际写的代码并不是很多,不过前前后后好像也不少。后端实际体现在一些注解的使用,代码逻辑性强,先来说一下后端的Token 实现吧:
- 基于拦截器(WebMVCConfigurer):拦截器拦截所有的请求然后判断进行哪些处理。
- 拦截器(HandlerInterceptor):拦截http请求,从头部取出token进行验证。
- 自定义注解:可以通过添加自定义注解来实现跳过验证等操作。
- Token 下发器:每次请求验证成功,生成一个token下发给C端。
- 良好的加密素质:密码这种东西不可能是明文保存和传输的,一般在C端进行一次加密(MD5,SHA256,Bcrypt都可以)传入后端后再使用salt混合加密一次,这样安全性基本上就得到了有效保障
说到加密再总结一下spring security吧:
核心理念还是:拦截器,过滤器和权限配置
放个入门教程,需要的自己看看吧:链接(http://www.sanjinbest.com/spring/spring-security-入门教程/).
web端的后端就稍微提一下吧: 状态位,一般我们都是在数据库里面增加一个字段来记录和控制状态,但是这样却给后期维护带来了很大的困难,所以,具体的状态要用具体的状态位来控制,这样便于后期维护和协调代码的逻辑性。
联调阶段
项目进入后期,前后端联调,这个时候就要拿出你的接口文档了,PS:你设计系统时候的业务逻辑图和技术逻辑图以及时序图,UML图等等的都拿出来过一遍,接口的改变和信息要清晰明了。
测试阶段
测试的话就是找问题,测出你想的到的和想不到的问题,测每个功能要细心,所有可视化的东西都点一遍,测试阶段要注意后台日志,可能有些操作是存在问题的,但是在前端上并没有体现出来
上线阶段
点击这里,你就知道是什么 心情了。
// An foreach
while(1==1){
...
}
上线阶段:首先你需要准备全套的 sql
上线计划的内容包括 : 代码发布,数据库修改, 数据迁移,初始数据配置等一系列信息;信息需要在测试环境验证后才可以用于生产。上线计划的内容要确保上线时,无脑根据上线计划的步骤和内容执行。
结尾
自我学习是必要的,人总是在不断的自我提升达到新的高度。