发表于: 2017-08-28 23:44:08
1 1071
今天完成的事
重构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
评论