发表于: 2018-03-28 22:07:59
2 556
今天完成的事情:
昨天使用注解来配置mybatis,师兄的意思应该是在DAO接口里直接注解注入SQL 语句.
深度思考:
1.maven是什么,和Ant有什么区别?
maven的目标是软件项目管理和理解工具,maven拥有以下特点,而这些特点都是ant没有的
1)拥有约定,知道你的代码在哪里,放到哪里去
2)拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
3)只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
4)拥有依赖管理,仓库管理
2.clean,install,package,deploy分别代表什么含义?
clean清除target目录下的文件
install将项目本身编译并打包,并且安装到本地仓库,供其他项目使用
package是把jar打到本项目的target下
deploy是将jar包上传到服务器
3.怎么样能让Maven跳过JUnit?
pom.xml 添加配置
4.为什么要用Log4j来替代System.out.println?
首先,println对于开发后期的工作不友好,当不再需要println 的时候只能一句一句地删除或者注释掉,但是log4j只需要修改配置文件即可.其次就是println输出的很多时候不可控,log4j有优先级别,输出目的地,输出格式的划分.
5.为什么DB的设计中要使用Long来替换掉Date类型?
long是java类型,对应mysql类型是 bigint.在JAVA中有很多时间类型,插入mysql的时候会很容易混淆,所以我们使用long 类型可以在不同的地方都容易识别.
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
其他表数据导入很难保证ID不冲突.当数据删除(不完全删除干净),再插入的时候会接着删除之前的ID续下去.分布式数据库不应使用,因为无法用自增ID来做唯一标识
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引就是加快检索表中数据的方法,就像书本的目录.万条数据开始建立索引已经会有性能差别.当记录数量达到万条或以上,且数据重复少(基本上值都不一样,例如姓名,ID,学号这一类)就应建立索引提高查询时候的速度
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引和普通索引的区别在于唯一,建立唯一索引的字段下不会出现相同的值,而普通索引允许有相同的值.当表中记录存在唯一标识的字段的时候,该字段就应建立唯一索引
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要,因为唯一索引的原因,如果QQ号已经存在,该记录是不能插入的
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
不应开放接口,create_at应该在创建该记录的时候通过调用时间写入,而后不能进行更改,update_at应该在每次修改记录的时候更改.
11.修真类型应该是直接存储Varchar,还是应该存储int?
站在减少数据库的压力来说,应该建立int型,写入数据的时候分配不同的序号代表不同的修真类型,调用的时候再根据序号给出修真类型.站在减少程序代码量来书就直接存varchar,程序就少了转换这一步.
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
varchar根据你字符长短自动 改变所占用内存,超出会更改为向上的类型. 也就是longtText
13.怎么进行分页数据的查询,如何判断是否有下一页?
使用limit语句来分页(删除操作也能使用limit来分批删除数据)
14.为什么不可以用Select * from table?
数据量大的时候,查找所有数据费时费资源,甚至可能引起程序崩溃
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
所谓贫血模型就是对象只拥有属性,不包含方法.充血模型即对象既有属性又有方法.因为在DB层面,就耦合度来说贫血模型比充血模型低得多,贫血模型能反复调用,也相对比较简单
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
IOC即控制反转,把对象交给IOC容器来管理.当我们调用对象的时候,只需要向容器取,不用直接去调用该对象,当该对象发生变化的时候不同改变调用的代码,大大降低耦合度
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
同一个Interface可以存在多个实现类,当数据库发生变化,不用对原来的实现类进行修改(因为你不知道什么时候就可能要用到),可以重新写一个实现类,调用哪个实现类就看需求即可.
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
程序会出现各种各样的问题,当用户使用的时候直接报错是十分不友好的,但是如果我们提前预料到程序哪个步骤可能出现问题,当出现的时候可以捕获,然后保证程序能够接着走下去,对于用户的体验要友好得多
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
一些重要的步骤以及出错的地方应该打日志,打印出时间,进程,错误信息
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
单步调试可以查看每个步骤数据发生怎样的变化,以便我们查找出程序的问题出在哪里,方便修改
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
个人认为不应在线上调试,当项目上线了,即已经有用户在使用了,这时候进行调试,对用户是十分不友好.遇到问题应该先封闭(在测试服务器上查找出问题的所在,修改方案,然后预估需要耗费的时间,然后给出维护公告,在维护时间内将问题解决)
明天计划的事情:
开始任务2.
评论