发表于: 2018-01-19 22:36:29
1 550
完成
1.深度思考
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型是指使用的领域对象中只有setter和getter方法(POJO),所有的业务逻辑都不包含在领域对象中而是放在业务逻辑层。
充血模型将大多数业务逻辑和持久化放在领域对象中,业务逻辑(业务门面)只是完成对业务逻辑的封装、事务和权限等的处理。贫血模型的优点就是系统层次结构清楚,各层单向依赖。
贫血模型与充血模型之间的差别一定程度上造成了面向过程化编程和面向对象编程的两个分支。
那么差别到底是什么呢?说起来很简单,就是业务逻辑由谁去处理。贫血模型仅仅被当做数据结构来使用,而充血模型会持有业务逻辑方法。
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
IOC是控制反转,就是控制权由user交给了spring,new 的类实例不便于统一管理,spring 提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
所謂的接口就是只給出了函數聲明,但是沒有函數體的類 ,函數體在實現類中給出。
举个例子吧 , 比如有个需求, 需要保存客户信息, 有些客户从网站来, 有些从手机客户端来, 有些从后台管理系统录入, 假设不同来源的客户有不同的处理业务流程, 这个时候我定义接口来提供一个保存客户的方法, 然后不同平台实现我这个保存客户的接口, 以后保存客户的话, 我只用知道这个接口就可以了, 具体调用哪个方法 去实例化具体你需要用的类,这也就是JAVA的多态的体现。 而如果你不用接口的话 , 首先我需要哪个方法 我就去实例化哪个类, 冗余很高, 其次扩展很差。
接口就是一个规范, 其子类都会有他提供的方法。 统一管理。
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
2). 必须对异常进行处理,否则会降低用户使用体验。
真实的系统,网络一旦中断,肯定连不上数据库,多久发生一次不了解。
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
5) 对于日志中的特殊信息(如会话号、IP地址等),用特殊的符号进行标识,其主要目的是为了便于搜索。
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
单步调试可以查看每步的运行结果,从而判断错误发生在哪个位置。
debug找源码就是F7查看方法内容等,然后就通过不断的查看就会跳到源码。
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
真实项目中,我们可以通过远程连接的方式,进行远程调试:服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。排查方案暂时不清楚。
2.用测试类跑了一遍SpringTemplate,学了一些新知识点
1)final用法
2)statement和preparestatement区别
PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中。
被封装的sql语句代表某一类操作,语句中可以包含动态参数“?”,在执行时可以为“?”动态设置参数值。
PrepareStatement可以减少编译次数提高数据库性能。
3)ToString用法
public String toString 这个就是重写方法,返回的是一个String类的值,所以public后跟String。
问题
目前为止,从0到1,对知识只是浅尝辄止,没有深究。
对知识点背后的业务逻辑没有直观的认识。
收获
解决各种细节问题。
计划
准备提交任务1
小课堂准备
评论