发表于: 2017-05-23 22:46:58
1 1320
今天所做:
深度思考的一些问题,
深度思考:
1.Maven是什么,和Ant有什么区别?
查到Ant是build工具
是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
Maven和ant区别:
每一个Maven工程都包含一个pom.xml文件,包含了工程的配置,缺陷跟踪系统信息,工程的组织,许可协议,工程的路径,依赖等信息,从而达到一定的项目管理的功能。
Maven有内置的构建生命周期,内置定义了build,test,package,deploy等task。
Maven的dependence management用来管理所有此project的dependences,且在dependence repository中自动查找和下载dependence。
2.clean,install,package,deploy分别代表什么含义?
Maven package是打包到本项目,在项目target目录下面。项目之间互相依赖时,编译其中一个项目会报错,
Maven install是打包到本地仓库,如果没有设置本地仓库,就在用户/.m2下面。如果a项目依赖于b项目,那么install b时,会在本地仓库同时生成pom文件和jar文件,可以看install b的日志
maven deploy:打包上传到远程仓库/私服,需要配置pom文件
3.怎么样能让Maven跳过JUnit?
mvn package -DskipTests=true
或者在mavenbuild时候在eclipse里勾选skiptest
4.为什么要用Log4j来替代System.out.println?
用System.out.println时,程序要等待System.out.println的动作完成,占用了资源。
Log是异步线程,不会使程序处于等待状态。Log4j不仅可以在控制台显示,还能记录到文件。方便以后查看。
Log4j可以对日志信息进行级别限制。
Log4j建议使用4个级别,优先级从高到低分别是error,warn,info和debug。通过使用日志级别,可以控制应用程序中相应级别日志信息的输出。例如,如果使用info级别,则应用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。
5.为什么DB的设计中要使用Long来替换掉Date类型?
使用long类型是把时间转换为毫秒存储在数据库中,节省空间,存储方便。
自增id删除数据后,id不连续。
删除掉以前的数据后,再插入的数据从删除的id开始。
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
相当于一个目录的东西。建立索引会提高查询速度。
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
普通索引是为了加快数据的访问速度,为经常出现在查询条件或者排序条件的数据列创建。
唯一索引是为没有重复值的列创建索引,增加访问速度的同时, 保证数据的唯一性。
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
需要判断是否存在。当我数据表里online_id有重复时都不能执行下面这句话。
ALTER TABLE `student1` ADD UNIQUE (`online_id`)
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
创建时间是插入时候赋值,后者修改时候赋值。
11.修真类型应该是直接存储Varchar,还是应该存储int?
存储Varchar
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
VARCHAR,TEXT类型是变长类型。VARCHAR需要定义大小,有65535字节的最大限制;TEXT则不需要。
大文本推荐用Text。
varchar可以有默认值,text不能指定默认值。
13.怎么进行分页数据的查询,如何判断是否有下一页?
为什么要进行分页查询:http://blog.csdn.net/XiaoYouSiFang/article/details/5659667
用limit语句。
14.为什么不可以用Select * from table?
用*会很低效。
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型是指使用的领域对象中只有setter和getter方法(POJO),所有的业务逻辑都不包含在领域对象中而是放在业务逻辑层。
看了一下网上的,我还没有这方面的概念。
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
控制反转。用spring 的ioc可以实现解耦。
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
接口可以重复使用。隐藏了实际功能,但提供给用户统一的操作界面和使用方式
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
不处理异常,程序就不能正常运行。
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
Error、Warn和Info这三个级别的Log会出现在生产环境上
Error:影响到程序正常运行、当前请求正常运行的异常情况,例如:
打开配置文件失败
Warn:不应该出现但是不影响程序、当前请求正常运行的异常情况,例如:
有容错机制的时候出现的错误情况
找不到配置文件,但是系统能自动创建配置文件
即将接近临界值的时候,例如:
缓存池占用达到警告线
Info:系统运行信息
Debug和Trace这俩个级别主要是在开发期间使用或者当系统出现问题后开发人员介入调试的时候用的,需要有助于提供详细的信息。
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
能一步一步执行。
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
好好学习。
评论