项目总结

我的第一个完整项目总结

实习俩个月期间,主要是从一个学习往一个工作的状态转变,完成了安卓,web以及后端的任务,
项目整体框架是前辈搭建的,我在其基础上完成相关功能的开发,现在在这里总结一下,作为记录。

学习优良的开发习惯

从学习往工作过渡,有很多开发细节需要注意,为了尽量去避免一些不必要的错误和BUG,我们在设计系统的时候就要深入考虑:

  1. 异常处理 ,对可能出现异常的地方进行异常处理;
  2. 注释 多用注释,方便以后自己查看以及他人维护;
  3. 版本 无论是JDK还是其他一些工具的版本,尽量保持一致,避免版本不同带来的问题;
  4. 多态 多态的使用降低了系统耦合度,可拓展性提高;
  5. 新特性 我们在工作的时候也是需要不断的学习的,善于使用一些技术的新特性可以大大地 降低工作的复杂度和提升工作效率;
  6. 分布式 在进行系统设计的时候就必须考虑这个系统是往哪个方向设计,如果设计成分布式的,那么代码的设计就需要体现出模块化的思想,比如像@Cacheable这种的缓存注解就不能使用了,可以使用Redis来替代;
  7. 配置化 系统中的一些配置变量要统一写到application配置文件中;
  8. 日志 日志类似@slf4j的使用,便于调试和测试或者其他时候对操作的记录和查看。
  9. swagger 在前后端分离的时候,前后端的连接就需要接口文档了,swagger就可以作为一个可测试的动态接口文档,swagger的配置和信息需要后端在代码中体现。
  10. postman 同样是前后端分离的情况下,后端对于接口的测试工具,可单接口测试和批量测试。
  11. navicat 作为一款可视化数据库管理工具,觉得非常好用。
  12. 设计模式 23款设计模式
  13. 线程安全 线程安全的类选择和数据库的类型选择都很重要。

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的完整项目总结相关推荐

  1. ISV客户博客系列:Persistent Systems 使用Windows Azure交付基于Java的CloudNinja项目

    编者注:本文作者是Persistent Systems 的云计算助理副总裁Shreekanth Joshi,描述了该公司是如何使用Windows Azure为他们的ISV客户开发和交付基于Java的应 ...

  2. 基于Java EE平台项目管理系统的设计与实现(论文+PPT+源码)

    分类号_______________ 密级________________ UDC _______________ 学号 毕业设计(论文) 论文题目 基于Java EE平台项目管理系统的设计与实现 T ...

  3. 基于Java+Swing+Mysql项目信息管理系统

    基于Java+Swing+Mysql项目信息管理系统 一.系统介绍 二.功能展示 1.主页 2.新增项目信息 3.删除项目信息 三.数据库 四.其他系统实现 五.获取源码 一.系统介绍 该系统实现了查 ...

  4. 【23】基于java教师科研项目管理系统

    毕设 基于java教师科研项目管理系统 背景及意义 目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用.在对网络工具的认知程度上,较为传统的office软件等仍是人们 ...

  5. 基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库 ...

  6. 基于java的信访项目_基于JAVA的某省人大信访信息系统的设计与实现

    分 类 号 : TP 3 1 1 . 5 单 位 代码 : 1 01 8 3 研 究 生 学 号 : 2 0 1 35 3 H3 08 密 级 : 公 开 吉 林 大 学 硕 士 学 位 ...

  7. java地图完整项目-地图找房(基于百度地图-MongoDB)

    1.BMapGLLib库 网址: GitHub - huiyan-fe/BMapGLLib: 百度地图JSAPI GL版JavaScript开源工具库 该库相关辅助功能可通过点击上述网址进行查看! 2 ...

  8. 基于java的科研项目管理系统

    科研项目管理系统采用了java的web技术servlet进行开发,基于B/S架构模式,以Myeclipse为开发平台,mysql为数据库,jsp为开发语言制作而成.并且文档方面包括,任务书,开题报告, ...

  9. 基于java的在线商城项目(1)

    目录 一.创建Maven项目 二.MyBatis框架 三.实现数据的增删改查 一.创建Maven项目 1.配置maven环境: 进入setting弹窗-->选择build,Execution,D ...

最新文章

  1. SharePoint文档库,如何在新窗口打开中的文件
  2. 互联网1分钟 | 0214 2018 年超1/3的婚姻由约会交友类App促成;刘强东新开设 “南京京东云计算有限公司”...
  3. 深度学习笔记(14) 评估指标
  4. 异常Exception(Java)
  5. hive体系架构以及各个组件的作用
  6. repo/git下载android源码断后重新下载
  7. VMvare桥接网络连接不上解决办法
  8. OJ 2309 Problem C Lemon
  9. 在小县城做什么赚钱?来看看这十种赚钱的项目吧!
  10. 山西省将率先实现全覆盖社保“一卡通”
  11. 商品品牌信息的增删改查操作步骤_畅购商城(三):商品管理
  12. MSN、QQ、阿里旺旺在线客服源代码
  13. SPA Matlab Code(转载)
  14. 密码学应用-身份认证+数字证书
  15. VUE搭建云音乐播放器(App版本)
  16. Ehabs Last Corollary
  17. 廖雪峰Git学习笔记(上)
  18. codeforces 448CPainting Fence
  19. 【Coggle 30 Days of ML】糖尿病遗传风险检测挑战赛(2)
  20. 软件开发工期估算系列(5)——規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2

热门文章

  1. SELECT CASE WHEN 用法
  2. 正大国际:稳定盈利的期货交易者是否能感到所谓盈利?
  3. 企业管理知行合一感悟_多合一网站发布和托管服务是否对个人或企业更具吸引力?...
  4. Linux下基于LAMP的WEB应用安全防范加固防护方法
  5. Mtlab中函数histeq的使用及直方图的均衡化、规定化
  6. Springboot毕设项目大学生心理辅导系统njqlvjava+VUE+Mybatis+Maven+Mysql+sprnig)
  7. Flutter高仿微信-第32篇-单聊-语音
  8. C++之函数参数默认值
  9. 图数据库JanusGraph实战[5]: JanusGraph可视化之Gephi
  10. C语言关于windows下清屏