发表于: 2020-05-20 23:38:05

1 1348


任务小结:

完成用时:5.8-5.19共11天。

任务一主要是一些很基础的东西,包括java环境搭建,常用的开发工具maven,idea,Navicat等的安装以及使用,通过这些工具对数据库实现增删改查。总的来说任务一的第17个小任务之前都比较简单、重点也就mysql的一些语法;17之后则直接要写java源代码了。我在开始任务之前自己看过一些java基础视频,基本的java语法、封装继承多态等都有所了解,所以感觉还可以。但是对于完全零基础的来说,可能会有一些困难,可能需要先补一下相关基础知识,之后就按部就班的进行下去就行了,后面的重点主要就是Spring,MyBatis这两部分。然后其他的知识也要了解。


深度思考:

1.Mybatis有哪些常用标签?怎么使用标签来完成动态查询?   

<if>通常用于WHERE语句中,通过判断参数值来决定是否使用某个查询条件, 他也经常用于UPDATE语句中判断是否更新某一个字段,还可以在INSERT语句中用来判断是否插入某个字段的值。

<where>可以过滤掉条件语句中的第一个and或or关键字

<choose>按顺序判断when中的条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行 otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。

<foreach>主要用于构建in条件,他可以在sql中对集合进行迭代。


2.什么叫反射?反射的坏处是什么?有哪些反射的应用场景?

 java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

使用反射更慢,我们在使用JDBC连接数据库时使用Class.forName()通过反射加载数据库的驱动程序。


6.Spring的IOC有几种方式?它们之间的差别是什么,应该选择Annonation还是应该选择XML?   

有set注入,构造器注入,注解注入,静态工厂注入。如果经常改动、修改,推荐使用xml。如果配置是一劳永逸的,选择annotation。


7.JDBCTemplate和JDBC

JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spring对jdbc的封装的模板。


8.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

ioc 控制反转,也就是通过spring来控制类的创建和注入,避免了A类依赖B中方法时new B()类时造成的耦合,通过配置文件定义类的模型,在需要的时候由ioc容器创建并注入。


14.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?

贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。

充血模型:层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic(业务逻辑层)只是简单封装部分业务逻辑以及控制事务、权限等。

贫血模型在实体类中没有逻辑,更适合大型项目开发和合作开发,解耦也方便后期维护。


15.为什么不可以用Select * from table?   

1,不需要的字段会增加数据传输的时间,即使mysql服务器和客户端是在同一台机器上,使用的协议还是tcp,通信也需要额外的时间。

2,select * 可能会获取到自己不需要的列,如果以后表结构修改了,同样也可能会对代码产生影响。比如表增加了一个字段,而我代码与其对接的对象属性里没有这个字段,select * 就会导致报错。


16.clean,install,package,deploy分别代表什么含义?

clean 可以清除根目录下生成的target文件。

install 项目安装到本地仓库了,并且是jar和pom同时安装。

package 项目打包到项目的target目录下。

deploy 是将jar包上传远程库的命令。


17.怎么样能让Maven跳过JUnit?  

1,使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译。

2,使用 mvn package -DskipTests 跳过单元测试,但是会继续编译。

3,直接在pom中配置。


18.为什么要用Log4j来替代System.out.println?

System.out日志打印不可控制、打印时间无法确定、不能添加过滤器、日志没有级别区分。在Log中可以根据需要添加一个自定义的过滤器,在成百上千条日志中轻松找到我们要想要的信息。


20.自增ID有什么坏处?什么样的场景下不使用自增ID?   

自增ID不存在连续性,使用分布式数据库以及数据合并的情况下时不能使用自增ID的。


22.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。 

唯一索引的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

23.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?   

需要。


24.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口? 

CreateAt在使用insert语句添加数据的时候赋值,UpdateAt在使用update语句更新数据的时候赋值,不应该开放外部调用的接口。


25.修真类型应该是直接存储Varchar,还是应该存储int?   

都可以,用int更快。


28.maven是什么,和Ant有什么区别?

Maven是一个项目管理工具,可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

Maven 拥有约定,只要遵守约定,它就知道你的源代码在哪里。Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。

而ant没有约定,项目生命周期,它是命令式的。所有操作都要手动去创建、布置。甚至连build.xml文件都需要手动创建。


返回列表 返回列表
评论

    分享到