今日完成
深入思考:
1.maven是什么,和Ant有什么区别?
maven是一个项目管理工具,不用手动的去添加jar包,可以在pom里,描述jar包的信息,maven会自动帮助下载并依赖。
maven可以对多个项目进行管理。那些繁琐的路径配置信息,以及复杂的三方库,统统不用考虑
2.clean,install,package,deploy分别代表什么含义?
clean 清除项目下的target文件。
install 将项目打包成jar包,并放到本地厂库,再通过pom文件配置依赖引入到当前工程,也可以作为其他项目的依赖。
package 打包项目成不同的格式,默认格式为jar。
deploy 把项目部署到服务器上。
3.怎么样能让Maven跳过JUnit?
可以在idea,maven中点击闪电的标志跳过junit,也可以在pom文件中加入下面的配置可以在install时跳过junit。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
4.为什么要用Log4j来替代System.out.println?
log4j可以对日志信息分级别,还可以控制日志信息输出的类型和位置。
5.为什么DB的设计中要使用Long来替换掉Date类型?
因为时区不同,使用long记录的是时间戳,有统一的标准。
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
不连续,当删除ID为6的数据后,ID6将再也不会出现。
当有其他的数据唯一,可作为主键,可以不使用自增ID。
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引就是对数据表建一个目录,一般情况下在查找表的时候是查询所有列的信息,建立索引后查询有索引的列时,就不会查询所有的列。
如果数据比较少,就不用建立索引,因为当有索引时,批量插入数据就会变慢。
索引应该建立在经常查询的列中,比如名字,QQ等。
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引不允许有相同的值在同一列,普通索引可以。
当表中有唯一特性的字段可以建立,比如QQ,电话。
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要,因为系统会自行判断。
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
create_at和update_at可以在插入数据时一起赋值,也可以只给创建时间赋值。
update_at在数据进行修改的时候进行赋值。
不开放接口。
11.修真类型应该是直接存储Varchar,还是应该存储int?
修真类型较少可以用int类型存储用于多表连接,减少数据大小。
不过要再建立以个修真类型的表。
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
存储可变长度的字符串,不预先分配存储空间,但是不能超过设置的最大长度。
text和longtext也是可存储可变长度字符串。
text的最大长度为2^16字符,textLong最大长度为2^32字符。
13.怎么进行分页数据的查询,如何判断是否有下一页?
使用limit进行分页查询。
SELECT*FROM game WHERE ....LIMIT 10,30;
14.为什么不可以用Select * from table?
一般我们不需要查询所有的列,select*from是查询所有的列,影响查询效率。
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型:是指model层中只有set和get方法,需要分离出来DAO层。我用的层数有model层,DAO层,service层。
充血模型:只model层中不仅只有set和get方法,业务逻辑也方进去。这种模型是把model层和DAO层合在一起,上面直接就是service层。
因为充血模型强调面向对象,业务逻辑,使用贫血模型更好。
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
IOC控制反转。直接在对象内部new对象叫正转,是对象控制对象的生成。
把对象交给IOC来控制是反转,因为对象的控制权交给了IOC。
实现低耦合。
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
只关心业务逻辑,不需要关心实体类,业务实现只需要通过该接口的实现类来完成。当需求有变化时,只需改动业务逻辑新实现类,通过更改配置文件中该接口的实现类就可以完成需求,不需要改现有代码,减少影响。
降低耦合,利于程序扩展和维护。
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
如果程序不处理异常会运行不了,比如让用户输入数字,他输入的是字符,可以用Try/catch来提示用户。
在MySQL等待8小时后会自动断开连接。
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
日志可以用System.out.println()和log4j来打印。
log4j可以对日志信息分级别,还可以控制日志信息输出的类型和位置。
需要打印输出级别,时间,线程,代码行数。
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
单步调试是指开发过程中,为了找到程序出现bug的位置,采用的一种手段,一步一步跟着程序执行流程,来找到出现bug的位置。
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
可以连接远程调试,比较麻烦。打日志,调试,找bug,修改,测试,放到服务器,再测试。
明日计划
开始任务二
遇到的问题
无
收获
转至元数据起始
任务总结
1,任务名称:java-task1
2,成果连接:https://github.com/a1337550831/myGit
3,任务耗时:6月8日至6月11日,在家里有自学过一段时间。
4,技能脑图

官方脑图:

5,任务总结
首先下载安装MySQL、Navicat,并学习SQL语句,学会使用Navicat连接数据库,并且直接对数据库进行增删改查。
安装java、下载开发工具idea,配置java环境。学习java基础语言,编写一些程序。
学习了普通的jdbc,然后感觉好傻,当初还写了一个运行程序包括增删改查。废了我三天时间。
学习maven管理工具,生成maven项目,在pom里配置依赖包。一开始我不知道,直接在网上找jar包然后配置路径,真心好难找,而且还容易出错。
学习junit框架,可以在单个测试一个类,而且还有断言功能,不用再去写测试的main方法。
学习log4j,知道如何打印日志,但是对日志却看不懂。
学习spring框架,学习springjdbc,学到这里才感觉当初敲jdbc是多么傻。
学习mybatis框架,发现对数据库的操作又简单了,而且在代码中不会看到SQL语言。
学习spring整合mybatis,发现更简便了,一些固定的代码都会被封装起来。
最后部署远程服务器并,在服务器上跑通main方法。
总的来说现在只知道这些东西怎么用,但是原理却不是很了解。
评论