本文用来简单记录Java
中Comparator
和Comparable
接口特点与使用。
首先,分别查看官方对这两个接口的描述定义:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
A comparison function, which imposes a total ordering on some collection of objects.
可以看出官方对该接口的描述是,它是一种比较函数,用于对一些集合中的对象进行总的排序。即:对集合中的元素进行排序。通过其源码可以看出,除了compare(T o1,T o2)
方法,其他方法都给了默认实现。
1 | int compare(T o1, T o2); |
所以要想使用该接口,就得实现该接口的此方法。那么,该接口的作用是什么呢?
在之前的文章Servlet
的整个原理做了大概介绍。我们知道客户端发送的请求是交给Servlet
中的service
方法进行处理。而在实际使用时,并没有直接重写service
方法,而是继承了HttpServlet
,重写了doGet
、doPost
等方法,而这期间又发生了什么呢。
首先,我们观察Servlet
这个接口:
1 | public interface Servlet { |
Servlet
是一个接口,其中包含5个方法,我们大多真正使用的是service
方法,其他的几个方法并不常用。因此,就出现了以下两个实现类:
在介绍Servlet
之前,简单对web
方面的知识做个小结。
这里的软件架构,指服务器软件工作的两种方式:
C/S
:客户端/服务器端B/S
:浏览器/服务器端IP
:电子设备(计算机)在网络中的唯一标识。作用:用于定位到具体的电子设备,这里指具体的一台计算机。port(端口)
:应用程序在计算机中的唯一标识,其范围在0~65536
。作用:用于定位计算机中的具体应用程序(每个应用程序都在监听着具体的端口号)。tcp
:安全协议,三次握手,速度稍慢。udp
:不安全协议,速度较快。使用通用Mapper
的目的是为了替我们生成常用增删改查操作的SQL
语句,并能够简化对于Mybatis
的操作。
1 | CREATE TABLE `tabple_emp` ( |
初学Spring
、SpringMVC
以及Mybatis
时,将其整合时步骤繁多,新手容易不理解,面对繁多的XML
配置,往往也不易跑通代码,这里用于记录一次整合的配置。
整合的目的:通过Spring
的IoC
和AOP
对组件进行管理。即:通过IoC
解决组件间的动态依赖注入;通过AOP
来对事务进行控制,即通过Spring
来整合SpringMVC
及Mybatis
。
想法:对Mybatis
的整合是,在Service
层调用dao
层的接口时,使其自动装配。
首先:一张数据库表对应一个实体类,一个实体类对应一张Mapper.xml
配置文件。在resources
文件夹下创建一个mapper
文件夹,用于存放实体类的Mapper
文件。这里创建EmployeeMapper.xml
配置文件。
本章用于记录自定义Springboot-starter
的学习过程。
在我们自定义starter
之前,我们首先观察一下SpringBoot
自身的starter
的形式都是什么样的。我们以spring-boot-starter-web
为例。
通过spring-boot-starter-web
,可以看出当前引入的依赖是空的JAR
文件。它的作用是仅提供辅助依赖管理,这些依赖可用于自动装配或者其他类库。继续点入,可以看见其引入了spring-boot-starter
,再进一步点入,又能看见其引入了spring-boot-autoconfigure
。
1 | <!-- 在spring-boot-starter-web中引入了以下依赖 --> |
在字节流(以字节为单位)中,输出数据使用OutStream
类完成,输入使用的是InputStream
类完成。(所有字节流的父类)
在字符流(以字符为单位)中,输出数据使用Writer
类完成,输入使用Reader
完成。(所有字符流的父类)
其中,字节流主要操作byte
类型数据,以byte
数组为准。
如果想对文件进行读写,首先需要创建一个文件对象,如下:
1 | public class FileDemo01 { |
从上面代码段可以看出,File
接收的参数是文件路径,返回的是File
对象。但是,直接打印File
时,返回的是pathname
,即为传入的参数。所以,在File
类中,重写了toString
方法。后面当我们拿到File
对象后,就可以进行后续对当前文件的一系列操作了。
服务器端分成三层架构。
导入坐标依赖
1 | <!-- 版本锁定 --> |
配置核心的控制器(类似servlet
类 – dispatcherServlet
)
1 |
|
当<url-pattern>/</url-pattern>
时,默认就是拦截所有路径连静态资源也不能访问。但是Controller
中配置@RequestMapping
的路径是不会被拦截的,配置了@RequestMapping
就相当于在web.xml
中注<servlet>
。
1 / 2