发表于: 2017-10-10 23:28:40
1 642
今天完成的事情:
一、对任务一进行了深度思考
1、怎么能让maven跳过JUnit?
maven 在编译的时候跳过 test junit的写法,把下面这个写到 pom.xml 的<pluigins>里面
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
2、为什么要让log4j代替System.out.println?
Log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。Log4j除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息。 程序员经常会遇到脱离java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试。这样会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System.out.println的东西了就只能一行行的把这些垃圾语句注释掉。若哪天又需调试变量值,则只能再一行行去掉这些注释恢复System.out.println语句。使用log4j可以很好的处理类似情况。
3、为什么DB设计中选择long来替换掉date类型
因为DATE有固定的格式,不同的地区有不同的时间表示方法,而且外国有夏令时与冬令时之分,非常麻烦,其实使用long也能较为清晰的表示时间,大多数时候我们并不关心某一个时间点,而是发生一个动作后,需要的时间,long非常方便做减法而不用转化。
4、自增ID有什么坏处?什么样的场景下不使用自增ID?
自增ID产生的ID不能重复使用,也就是说自增ID删除掉一个,并不会有对象补上该ID;在对ID有自动排序需求或者不允许出现ID断带的时候不允许用; 使用自增ID 数据重复了不会提示和处理 比如再NAVICAT中插入人名,出现多个同样的名字,这是不会出现任何提示;在面对对象时不能保证完整性,在使用某个对象调用数据,发现数据不完整,这时候无法控制这个ID; 分库的是后ID不唯一 第二个数据库ID又会从0开始自增 ID将不唯一;在有其他能唯一标识的数据列存在的时候,就不需要使用过自增ID;在需要做分库的时候,同步自增id会出现很多问题,这种情况不该使用自增ID。
5、什么是DB索引,多大的数据量下建立索引会有性能的差别,什么样的情况该队字段建立索引?
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度,
当数据量过少,不建立索引提取列数据所用时间也极短,一般在数据量达到10W的情况下对字段建立索引。
6、唯一索引和普通索引的区别是什么,什么时候需要建立唯一索引?
唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样。但是他允许有空值,当有数据为null的时候就需要用唯一索引。
7、如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断QQ号已经存在了?
不需要,因为唯一索引允许空值存在,可以为NULL,所以不需要判断。
8、CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值,是否应该开放给外部调用的接口?
在创建和修改的时候赋值,觉得不应该开放给外部接口调用,有可能涉及到个人隐私,所以可以只开放内部接口调用。
9、修真类型应该是直接储存Varchar,还是应该储存int?
储存int类型,调出后把对应的数字换成字符型。
10、varchar类型长度怎么确定?有什么的原则,和Text和LongText的区别是什么?
Varchar 最长支持长度255字节的数据,一个英文字母占一个字节的空间,一个中文汉字占两个字节的空间。原则是要够用但不能过多占用系统空间,varchar字符集和text,longtext文本型的区别在于文本型最多可以储存20亿长度的数据,而varchar最长只支持255.原则是尽量节约使用内存资源,以提高性能。
11、为什么不可以用select * from table?
对系统消耗太大,会把很多用不到的列查出来。
12、什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型:是指领域对象里只有get和set方法,或者包括少量的CRUD方法,所有的业务逻辑都不包括在内而是放在Business Logic层。
充血模型:层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object 里面,Business Logic只是简单封装部分业务逻辑以及控制事务、权限等
技术逻辑不行的话就只能先用贫血模型了,充血模型对技术要求和逻辑思维较高
13、Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
IOC是控制反转不是什么技术,而是一种思想。在Java开发中,IOC意味着讲你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。IOC控制了对象,控制了外部资源获取(不只是对象包括文件等)。因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;主要就是依赖对象的获取被反转了。
14、为什么要使用interface,而不是直接使用一个实体类来完成任务?Interface和impl这种方式的好处是什么?
对代码进行解耦,使用Spring的IOC容器来进行资源的控制,使用注入来传递资源,这样做可以降低代码的耦合程度,代码可以有更高的复用率,修改和复用更加方便。
明天计划的事情:
自我反省,查漏补缺!
遇到的问题:
无
收获:
将之前的任务一的内容进行了深度思考。
评论