本文用来简单记录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