发表于: 2018-03-17 22:09:41
1 715
任务一知识总结
一,深度思考:
(1)怎么样能让Maven跳过JUnit?
第一种:下载下载Surefire 插件(可以在pom.xml中配置) Maven命令 mvn install -Dmaven.test.skip=true。
第二种:配置 Maven 跳过单元测试的方法是给你项目的 pom.xml
添加这个配置。
(2)为什么要用Log4j来替代System.out.println?
log4j可以对日志分级别,还可以控制输出的类型和格式。能够得到自己想要的信息。如果用Sys.out.pringtln控制台打出一堆掺杂的信息,比较乱。
(3)为什么DB的设计中要使用Long来替换掉Date类型?
1. 因为DATE有固定的格式,不同的地区有不同的时间表示方法,而且外国有夏令时与冬令时之分,非常麻烦;
2. 其实使用BigInt也能较为清晰的表示时间;
3. 大多数时候我们并不关心某一个时间点,而是发生一个动作后,需要的时间,BigInt非常方便做减法而不用转化。
4,long也就是bigint,更容易实现储存和传输,提高效率。
(4)唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
区别:唯一索引不允许出现相同值,在插入之前会检查。
在某个字段数据唯一的时候可以使用;业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引.
(5)怎么进行分页数据的查询,如何判断是否有下一页?
使用limit进行分页查询,例如:
select * from student_copy where name like '%${value}%'limit 5
或者
select * from student_copy where name like '%${value}%'limit 5,5
详见:https://www.jianshu.com/p/1daccf24240c
(6)Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
Ioc—Inversion of Control,即“控制反转”
Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制
传统方式,对象和对象之间发生严重的依赖关系,耦合度非常高而且依赖关系都写死在了代码里,项目不易修改和维护,必须要改代码。
现在:通过IoC或DI,我们只需要通过简单的配置,而无需任何代码就可以指定UserManager中所需的UserDao的具体实现。
详细资料:https://www.jianshu.com/p/3ff0942efd2e;
http://blog.csdn.net/jiuqiyuliang/article/details/42920751;
(7)为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发生一次?
异常exception
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
异常发生的原因有很多,通常包含以下几大类:
1.用户输入了非法数据。
2.要打开的文件不存在。
3.网络通信时连接中断,或者JVM内存溢出。
Try/catch语法
使用 try 和 catch 关键字可以捕获异常。
try/catch 代码块放在异常可能发生的地方。try/catch代码块中的代码称为保护代码。
一个 try 代码块可以后面跟随多个 catch 代码块,叫多重捕获。
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
java提供了抛出异常捕获异常的逻辑用于处理异常,当程序抛出异常时,如果不存在捕获异常逻辑,正在执行的方法将停止执行,并将该异常向外抛出,调用该方法的程序进行同样的处理,如果也没有进行捕获,则将一层一层的向外抛出,直到到达当前线程处时将会终止线程的执行。
正常情况下mysql对于空闲的连接可能会8小时自动关闭。
(8)日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
在业务执行中,每一个步骤判断执行成功与否都要打日志,对于异常,视情况记录日志并进行相应处理。
需要打印出当前执行操作的如id,正在操作的对象,异常的具体内容等等。
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。
Loggers组件在此系统中被分为五个级别:DEBUG < INFO < WARN < ERROR < FATAL.
Appenders:控制日志输出的目的地.
Layouts:日志输出样式.
深度思考参考链接:http://www.jnshu.com/daily/51093?dailyType=others&total=63&page=16&uid=19000&sort=0&orderBy=3&cpage=1;
http://blog.csdn.net/creatill/article/details/79522131;
二,任务一问题及解决方法回顾。
(1)MySQL 创建表时,怎样设置时间字段自动插入当前时间。
(2)使用Mybatis的时候为什么不需要Impl。
MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
(3)使用JDBCTemplate连接数据库时出现Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory错误。
该问题在请教师兄后得知是导入同一类包下的各个jar包的版本不一致出现的。解决办法就是统一jar包版本。
(4)开始下载的最新的JDK9,结果运行程序总是出错,显示缺少文件,经百度后得知JDK9版本还不稳定有很多BUG,改为下JDK8后运行程序成功。启示:程序出现BUG 有可能不是code本身的问题,还可能是版本,软件之间不兼容,系统不支持。
(5)购买金山云服务器后,开始配置的window系统,后来师兄说linux系统更稳定,开发人员使用linux.改为linux后,下载Xshell, 用
Xshell下载及配置JDK与maven.在下载配置MySql时总是出现找不对应文件的消息,但是我远程服务器里明明有啊。后来百度后发现是
centOS不支持MySql,CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。解决办法是下载mysql的repo源。
详见:http://blog.csdn.net/win7system/article/details/53579500;
任务一思维导图:
评论