发表于: 2017-08-28 23:44:08

1 1068


今天完成的事

重构Spring+mybatis的代码,把我的hero表换成官网要求的student表

利用之前的代码结构把student表嵌入到之前的代码中,也就是说任务一中改动DB表格需要多少时间的步骤,表中增加了create_at和update_at属性,并且使用log代替system.out.print输出要输出的内容,然后完成增删改查

回顾了一下之前任务的代码,发现了很多之前没有注意到的知识点,也算是一种收获

完成任务一的一些深度思考

还有一些不懂,没有写 ,以后写了会补在自己的笔记中

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

Maven是管理项目的构建,依赖,报告和文档的软件项目管理工具

Maven是干什么的

1. 添加依赖

不用maven的时候所有的jar都不是你家的,需要去各个地方下载拷贝,用了maven所有的jar包都是你家的,想要谁,叫谁的名字就行。

2. 编译代码

把代码编译成电脑能看懂的(0或1)二进制文件

3. 建立项目目录

让我们知道什么代码该呆在什么地方

4. 代码打包上传服务器

写的再好的代码不在服务器上运行那留着做传家宝吗?

概括地说,Maven可以简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。

总的来说Maven希望把软件开发中的一些最佳实践和模式都整合和固化下来,这样使用Maven来进行开发时,开发过程更爽,生产出来的软件更棒,具有以上所罗列的各种特性。

Maven和Ant相比有什么区别

简单的说Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。

两者相比较,Maven比Ant多了一些功能

通过pom对软件项目进行管理

内含许多隐性规则,使得文件的构造更加简单明了

拥有强大的依赖管理,通过Repository对依赖统一管理储存

可以构建软件的生命周期

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

mvn clean:清理项目建的临时文件,一般是模块下的target目录

mvn package:打包到本项目,一般是在项目target目录下

mvn install:打包会安装到本地的maven仓库中

mvn deploy:将打包的文件发布到远程(如服务器)参考,提供其他人员进行下载依赖

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

可以把跳过测试的插件添加进pom中,然后使用命令行$ mvn install -Dmaven.test.skip=true

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

最简单的说吧,如果用Sys.out...,控制台打出一堆掺杂的信息,你想找都不好找。但log4j能自动把它存成文件

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

JAVA语言中不允许有DATE类型存在,如果有会被强制转换成long类型,可能会造成数据丢失

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

自增ID产生的ID不能重复使用,也就是说自增ID删除掉一个,并不会有对象补上该ID

在对ID有自动排序需求或者不允许出现ID断带的时候不允许用

 使用自增ID 数据重复了不会提示和处理 比如再NAVICAT中插入人名,出现多个张三,这是不会出现任何提示

 在面对对象时不能保证完整性,在使用某个对象调用数据,发现数据不完整,这时候无法控制这个ID

 分库的是后ID不唯一  第二个数据库ID又会从0开始自增  ID将不唯一

 在有其他能唯一标识的数据列存在的时候,就不需要使用过自增ID

 在需要做分库的时候,同步自增id会出现很多问题,这种情况不该使用自增ID

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

索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度,

当数据量过少,不建立索引提取列数据所用时间也极短,一般在数据量达到10W的情况下对字段建立索引

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

唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样. 唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,当有数据为null的时候就需要用唯一索引但是他允许有空值,当有数据为null的时候就需要用唯一索引

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

不需要,因为唯一索引允许空值存在,可以为NULL  所以就不需要判断

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

在创建和修改的时候赋值,个人觉的不应该开放给外部接口调用,有可能涉及到个人隐私,所以可以只开放内部接口调用

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

储存int类型,调出后把对应的数字换成字符型

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

Varchar最长支持长度为255字节的数据,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 原则是要够用但不能过多占用系统空间,  vachar(字符型)和text,longtext(文本型)的区别在于文本型最多可以储存20亿长度的数据,而varchar最长只支持255。原则时尽量节约使用内存资源,以提高性能

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

对系统消耗太大, 会把很多用不到的列查出来

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

贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。

充血模型:层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic只是简单封装部分业务逻辑以及控制事务、权限等

技术逻辑不行的话就只能先用贫血模型了,充血模型对技术要求和逻辑思维较高

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

IOC既控制反转不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制

谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

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

对代码进行解耦,使用Spring的IOC容器来进行资源的控制,使用注入来传递资源,这样做可以降低代码的耦合程度,代码可以有更高的复用率,修改和复用更加方便

把代码打包上传SVN提交任务,任务一正式结束

遇到的问题

还是再重构代码的时候,遇到了一些代码上的问题,主要就出在和数据库对应的应用类上以及封装的sql语句中  经过排查解决

深度思考后面的几条都还不懂,这几条先保留在问题当中,以后懂了更新到印象笔记

明天的计划

开始任务2基础概念的学习,拆分禅道任务,重新拿起书本开始2.8学习时间,理解周会上提出的Try catch异常处理,定下小课堂的课题并初步准备素材。

收获

结束任务一,满满的成就感,但同时也有些松懈,不过立刻就注意到了,也给自己提了个醒,这也算是一种收获

 任务进度:任务2 步骤1

任务开始时间:2017-8-29

预计结束时间:2017-9-4

无延期风险

禅道:http://task.ptteng.com/zentao/task-view-9387.html


返回列表 返回列表
评论

    分享到