发表于: 2017-10-08 18:54:00

1 754


今天完成:

任务一深度思考,对REST浅层理解。

明日计划:

开始做REST。

以下是我对深度思考的回答。

1.maven是什么,和Ant有什么区别?

Maven是一个自动的构建工具,会根据配置文件对项目进行操作。

Ant还没有用过,所以只能网上搜索来了解,ant的脚本目录需要自己写,命令中包含的依赖、编译、打包,而maven只需要在配置文件写好打目录就可以了,网络依赖这个是比ant好的,不需要在本地下载包,直接从网上下载,打包时会自动生成(需设置),在***withdependcy那个文件就是可以直接运行的文件,其实原理都是一样,但他的中央库就方便很多。

2.clean,install,package,deploy分别代表什么含义?

Clean:清理项目生成的临时文件。

Install:把打包的文件复制到本地仓库中,包含package动作。

Package:生成文件(jarwar等可执行文件)在项目的target目录。

Deploy:将打包的文件发布到远程参考,给别人下载依赖,没用过,应该是上传的maven的中央库去吧。

3.怎么样能让Maven跳过JUnit?

在配置文件里加入下面的就可以了,

<plugin>

       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
         <skip>true</skip>
       </configuration>
 </plugin>

4.为什么要用Log4j来替代System.out.println

首先log4j是别人打包好的包,浪费精力来做这种事,肯定是对自带的打印有情绪了,根据我用了一次的体验来说,这个可以在配置文件里直接设置很多东西,比如不同级别异常输出在不同的文件下,然后可以指定地址,也可以设置多久产生一个新的文件之类的,好像还有不用编程语言都通用的特点,而System.Out.println只能是在java环境下运行,这个我还没接触到。

5.为什么DB的设计中要使用Long来替换掉Date类型?

因为date是一个对象,有固定的格式,还有许多对我们没用的信息,在传达给前端时需要转换,而long更易于理解,jslongdate进行转换的难度和时间有差距。

6.自增ID有什么坏处?什么样的场景下不使用自增ID

在进行数据库导入合并迁移之类的操作时同id会覆盖,好像还会在程序后台添加测试,这个不清楚。

7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?

索引是与表关联的磁盘上结构,包含由表中一列或多列生成的键。通常是十万条数据以上就开始建索引,所以应该是十万以上开始会有性能的差别。

8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。

唯一索引性能会好一些,在查找数据时,唯一索引只要找到数据就会停止,而普通索引还会继续直到所有完成,其中唯一索引下的列不能有重复值,我觉得在数据量大且每一行的数据较长时需要建唯一索引。

9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?

是,也许这个qq号之前被用过了,而唯一索引下的列不能存在相同数据。

10.CreateAtUpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?

这是数据库的变量,我觉得createat是在创建行时赋值的,updateat是在行内列被修改时赋值的,不应该开放,因为这样就影响了数据库的独立性,可能会导致一系列问题。

11.修真类型应该是直接存储Varchar,还是应该存储int?

Varchar是在自由乱填的情况下使用的,而int应该是在有选项的前提下使用,int性能更好且统一性高,但需要做到对数据精确分类,如果在选择页面是用下拉框或者打勾之类的时候用int存储,而如果是输入框输入的话varchar更好(虽然在以修真类型为检索时会出问题,因为难保证不同人在描述一个类型时使用相同的描绘),结论是优先int

12.varchar类型的长度怎么确定?有什么样的原则,和TextLongText的区别是什么?

靠经验吧,varchar长度不一样的情况下相同数据占用的容量是相同的,但对索引有影响,设定最大长度还能防止错误数据导入,比如编码格式错误时导入乱码到数据库时,varchar2000)可以导入而varchar20)会报错过长,所以通过数据可能最大值来设定,比如名字就varchar20),毕竟外国人名字很长。区别是长度,text6.5万字节,longtext2的三十二次方字节。

13.怎么进行分页数据的查询,如何判断是否有下一页?

分页数据查询有两种方法,一种是把整个数据库都加载进来,然后通过后台来划分页数传输,另一种是根据数据库自带的分页来加载,即要哪页就加载哪页。如何判断有下一页,把数据库的数据数传到后台之后自己设计算法计算。

14.为什么不可以用Select * from table?

显而易见数据库性能会差,但这个影响不大,主要是在数据库结构改变时需要修改数据库代码,而用列名代替*就会方便后来者查看理解。

15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?

贫血模型就是modleservice分离,各自只尽各自的职责,是模块化思想。充血模型是说有东西都在一个类中,有存储数据操作数据等功能,自成生态的思想。因为一个项目工作了大,贫血模型体现了模块化思想,可以更好的分工,出现问题也好修改,而充血模型有工作量大和难交接的问题,这个充血模式也会造成脑充血吧。

16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

是控制反转容器的意思,作用就是反转二次开发时的修改顺序,在此基础上再把所有的类都放在一个配置文件中,实际上就是把依赖链中双双依次依赖的形式改为在中间商配置文件这里寻找依赖。

17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?InterfaceImpl这种方式的好处是什么?

因为interface下可能会有不同的子类,这样就可以根据不同的情况选择用不同的类,而直接用一个实体类确实是简单直接,但对于二次开发来说理解起来较难,维护成本高,分离了了操作类和方法类在使用时不用了解类的细节,避免了高耦合,

18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?

因为防止程序在遇到错误后还继续运行,在不知道方法是否完善的时候使用,防止了异常过多程序崩溃,然后catch里写记录日志给用户进行整改,连接不上的错误应该不会吧,我都能连上,可能是在连接被占用的时候会错误吧。

19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?

应该是在一个方法调用后打日志,根据方法运行状态选择五种级别(debuginfowarnerrorfatal)中一种打印,通常放在项目根目录中。

20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?

单步调试可以清晰看到参数的值和传递路径或方法的调用,怎么找到的没了解过,应该是通过import找到路径。

遇到的困难:

有点了解REST理念,但不知道怎么实现。

进度:

任务二开始。



返回列表 返回列表
评论

    分享到