基于java的完整项目总结
项目总结
我的第一个完整项目总结
实习俩个月期间,主要是从一个学习往一个工作的状态转变,完成了安卓,web以及后端的任务,
项目整体框架是前辈搭建的,我在其基础上完成相关功能的开发,现在在这里总结一下,作为记录。
学习优良的开发习惯
从学习往工作过渡,有很多开发细节需要注意,为了尽量去避免一些不必要的错误和BUG,我们在设计系统的时候就要深入考虑:
- 异常处理 ,对可能出现异常的地方进行异常处理;
- 注释 多用注释,方便以后自己查看以及他人维护;
- 版本 无论是JDK还是其他一些工具的版本,尽量保持一致,避免版本不同带来的问题;
- 多态 多态的使用降低了系统耦合度,可拓展性提高;
- 新特性 我们在工作的时候也是需要不断的学习的,善于使用一些技术的新特性可以大大地 降低工作的复杂度和提升工作效率;
- 分布式 在进行系统设计的时候就必须考虑这个系统是往哪个方向设计,如果设计成分布式的,那么代码的设计就需要体现出模块化的思想,比如像@Cacheable这种的缓存注解就不能使用了,可以使用Redis来替代;
- 配置化 系统中的一些配置变量要统一写到application配置文件中;
- 日志 日志类似@slf4j的使用,便于调试和测试或者其他时候对操作的记录和查看。
- swagger 在前后端分离的时候,前后端的连接就需要接口文档了,swagger就可以作为一个可测试的动态接口文档,swagger的配置和信息需要后端在代码中体现。
- postman 同样是前后端分离的情况下,后端对于接口的测试工具,可单接口测试和批量测试。
- navicat 作为一款可视化数据库管理工具,觉得非常好用。
- 设计模式 23款设计模式
- 线程安全 线程安全的类选择和数据库的类型选择都很重要。
Android
安卓这方面我主要完成了两个功能:
1.登录模块2.拍照动态显示和点击预览
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
上线计划的内容包括 : 代码发布
,数据库修改
, 数据迁移
,初始数据配置
等一系列信息;信息需要在测试环境验证后才可以用于生产。上线计划的内容要确保上线时,无脑根据上线计划的步骤和内容执行。
结尾
自我学习是必要的,人总是在不断的自我提升达到新的高度。
基于java的完整项目总结相关推荐
- ISV客户博客系列:Persistent Systems 使用Windows Azure交付基于Java的CloudNinja项目
编者注:本文作者是Persistent Systems 的云计算助理副总裁Shreekanth Joshi,描述了该公司是如何使用Windows Azure为他们的ISV客户开发和交付基于Java的应 ...
- 基于Java EE平台项目管理系统的设计与实现(论文+PPT+源码)
分类号_______________ 密级________________ UDC _______________ 学号 毕业设计(论文) 论文题目 基于Java EE平台项目管理系统的设计与实现 T ...
- 基于Java+Swing+Mysql项目信息管理系统
基于Java+Swing+Mysql项目信息管理系统 一.系统介绍 二.功能展示 1.主页 2.新增项目信息 3.删除项目信息 三.数据库 四.其他系统实现 五.获取源码 一.系统介绍 该系统实现了查 ...
- 【23】基于java教师科研项目管理系统
毕设 基于java教师科研项目管理系统 背景及意义 目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用.在对网络工具的认知程度上,较为传统的office软件等仍是人们 ...
- 基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库 ...
- 基于java的信访项目_基于JAVA的某省人大信访信息系统的设计与实现
分 类 号 : TP 3 1 1 . 5 单 位 代码 : 1 01 8 3 研 究 生 学 号 : 2 0 1 35 3 H3 08 密 级 : 公 开 吉 林 大 学 硕 士 学 位 ...
- java地图完整项目-地图找房(基于百度地图-MongoDB)
1.BMapGLLib库 网址: GitHub - huiyan-fe/BMapGLLib: 百度地图JSAPI GL版JavaScript开源工具库 该库相关辅助功能可通过点击上述网址进行查看! 2 ...
- 基于java的科研项目管理系统
科研项目管理系统采用了java的web技术servlet进行开发,基于B/S架构模式,以Myeclipse为开发平台,mysql为数据库,jsp为开发语言制作而成.并且文档方面包括,任务书,开题报告, ...
- 基于java的在线商城项目(1)
目录 一.创建Maven项目 二.MyBatis框架 三.实现数据的增删改查 一.创建Maven项目 1.配置maven环境: 进入setting弹窗-->选择build,Execution,D ...
最新文章
- SharePoint文档库,如何在新窗口打开中的文件
- 互联网1分钟 | 0214 2018 年超1/3的婚姻由约会交友类App促成;刘强东新开设 “南京京东云计算有限公司”...
- 深度学习笔记(14) 评估指标
- 异常Exception(Java)
- hive体系架构以及各个组件的作用
- repo/git下载android源码断后重新下载
- VMvare桥接网络连接不上解决办法
- OJ 2309 Problem C 	Lemon
- 在小县城做什么赚钱?来看看这十种赚钱的项目吧!
- 山西省将率先实现全覆盖社保“一卡通”
- 商品品牌信息的增删改查操作步骤_畅购商城(三):商品管理
- MSN、QQ、阿里旺旺在线客服源代码
- SPA Matlab Code(转载)
- 密码学应用-身份认证+数字证书
- VUE搭建云音乐播放器(App版本)
- Ehabs Last Corollary
- 廖雪峰Git学习笔记(上)
- codeforces 448CPainting Fence
- 【Coggle 30 Days of ML】糖尿病遗传风险检测挑战赛(2)
- 软件开发工期估算系列(5)——規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2
热门文章
- SELECT CASE WHEN 用法
- 正大国际:稳定盈利的期货交易者是否能感到所谓盈利?
- 企业管理知行合一感悟_多合一网站发布和托管服务是否对个人或企业更具吸引力?...
- Linux下基于LAMP的WEB应用安全防范加固防护方法
- Mtlab中函数histeq的使用及直方图的均衡化、规定化
- Springboot毕设项目大学生心理辅导系统njqlvjava+VUE+Mybatis+Maven+Mysql+sprnig)
- Flutter高仿微信-第32篇-单聊-语音
- C++之函数参数默认值
- 图数据库JanusGraph实战[5]: JanusGraph可视化之Gephi
- C语言关于windows下清屏