发表于: 2017-12-13 22:28:30
3 603
今天完成的任务:
(1)复盘项目几个新概念:
需求文档:描述产品的主要功能、面向群体、重点要求、重点功能,更详细的,为了保证项目顺利的有质量的验收,前期需要跟技术多次评审后,明确文档中详细的业务流程,以及整个产品的生命周期中的所有操作过程。小到一个登陆按钮的登陆提示,大到产品涉及的所有展示界面。尽量避免出现“等等”、“自行参照”、“自行判断定义”这种字样。
原型图:描述产品原型的图,产品原型可以概括的说是整个产品面市之前的一个框架设计。以网站注册作为例子,整个前期的交互设计流程图之后,就是原形开发的设计阶段,简单的来说是将页面的模块、元素、人机交互的形式,利用线框描述的方法,将产品脱离皮肤状态下更加具体跟生动的进行表达。
UI设计图:指对软件的人机交互、操作逻辑、界面美观的整体设计,即界面设计。
接口文档:在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。
总结之前没有考虑过的深度思考:
(1)自增ID有什么坏处?什么样的场景下不使用自增ID?
自增ID在合并数据库、旧数据导入、时需重新编辑数据,否则会互相覆盖;当数据类型中有不重复、检索频率高的情况下, 不使用自增ID;在分布式系统下不使用自增ID
(2)修真类型应该是直接存储Varchar,还是应该存储int?
修真类型数量有限,可以用int数据直接代替,已节约数据库的空间,调用时再使用接口还原
(3)为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
大多数错误处理机制依靠的是程序员自身的警惕性,而不是编程语言强制的,因如果程序员不够警惕,出错的几率很大。java中把异常处理机制放到编程语言中,因此强制程序员去使用他,不然无法编译通过。更重要的是异常不能被忽略,保证一定要去处理它。异常提供了从错误状态进行可靠恢复的途径,而不需要退出程序。在可能会抛出异常的地方使用Try/Catch。
(4)日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
位置:1. 对外部的调用封装 2.状态变化 3.系统入口与出口 4.业务异常 5.非预期执行 6.很少出现的else情况
参数:1. 程序运行时间 2. 大批量数据的执行进度 3.关键变量及正在做哪些重要的事情
(5)Spring MVC和Struts的区别是什么,为什么更倾向于使用Spring MVC?
1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。
2、由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。
3、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
4、 拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。
5、SpringMVC的入口是servlet,而Struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
6、SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
7、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。
8、Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。
9、 设计思想上,Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。
10、SpringMVC开发效率和性能高于Struts2。
11、SpringMVC可以认为已经100%零配置。
(6)Annotation和XML两种配置的差别,为什么更喜欢使用Annotaion来配置Spring MVC?
注解的优势:
a.简化了XML配置;其实大部分注解一定确定后很少会改变,所以在一些中小项目中使用注解可以提升开发效率;
b.编辑期可以验证正确性,查错变得容易
注解的劣势:
a.注解都分散在类中,不好管理和维护。
b.与源代码绑定,所以在修改配置的时候就需要涉及到修改源代码,并且在修改过后还需要重新打包,发布,重新启动服务。
XML的优势:
a.降低耦合,与源代码分开,修改配置不需要涉及到源代码,并且在修改配置后只需要重启服务即可。
b.配置文件集中,查看比较方便。在处理大的业务量的时候,用XML配置应该更加好一些。因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。
c.相对于注解功能更加齐全。
XML的劣势:
XML方式在项目比较大的时候会看起来冗长。代码量比较大,配置文件读取和解析需要耗时。
为什么更喜欢使用Annotaion来配置Spring MVC?
1. SpringMVC框架给出了专用的几个注解,使其层次更加分明
2. MVC层次较为简单,而url映射也十分简单,哪个网址出错可以立即找到其映射类。
明天的计划:补基础。
遇到的问题:暂无。
收获:以上。
评论