1.maven依赖
1.依赖配置:
依赖是指当前项目运行所需要的jar,一个项目可以设置多个依赖
格式:在pom.xml中配置
<!-- 设置当前项目所依赖的所有jar-->
<dependencies>
<!-- 设置具体的依赖-->
<dependency>
<!--依赖所属群组的id-->
<groupId>junit</groupId>
<!--依赖所属项目id-->
<artfactId>junit</artfactId>
<version>4.12</version>
<dependency>
</dependencies>
2.依赖传递
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:当前项目间接的依赖其他的资源
直接依赖和间接依赖都是相对的.
<groupId>com.liusaidh</groupId>
<artifactId>maven-project</artifactId>
<packaging>pom</packaging>
前提:假定project1依赖project2
3.可选依赖:(project2不想让project1看到project2中的依赖)
指对外隐藏当前所依赖的资源--不透明
<!-- 设置project2所依赖的所有jar-->
<dependencies>
<!-- 设置具体的依赖-->
<dependency>
<!--依赖所属群组的id-->
<groupId>junit</groupId>
<!--依赖所属项目id-->
<artfactId>junit</artfactId>
<version>4.12</version>
<!--设置为true-->
<optional>true</optional>
<dependency>
</dependencies>
4.排除依赖(project1不想要project2中的依赖)
指主动断开依赖的资源,被排除的资源无需指定版本--不需要
<dependency>
<groupId>com.liusaidh</groupId>
<artifactId>project2</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 排除依赖-->
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
5.依赖的范围(了解)
依赖的jar包默认在任何情况下都可以使用,可以通过scope标签限定它的使用范围
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围有效)
是否参与打包(package指令范围内有效)
6.依赖范围的传递性(了解)
带有依赖范围的资源在进行传递时,作用范围将受到影响
2.equals和hashCode方法的区别与联系。
区别:(1)equals方法的效率相对于hashCode方法的效率较低,因为equals方法里比较全面、复杂,而hashCode方法只需要生成一个hash值进行比较即可
(2)equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的;hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。
联系:equals和hashCode方法在java中都是比较两个对象是否相等,我们一般先用hashCode()进行比较,如果hashCode()相同,再用equal()验证,如果hashCode()都不同,则肯定不同,这样对比的效率就很高了。
3.请求转发和重定向
转发(Forward)是指在服务器内部将请求从一个组件(如 servlet 或控制器)传递到另一个组件。在转发过程中,浏览器并不知道请求被转发到了另一个组件,因为整个处理过程是在服务器端进行的。浏览器发送的初始请求的 URL 仍然保持不变,用户感知不到请求的实际目标组件。
重定向(Redirect)则是通过发送特定的 HTTP 响应状态码(通常是 301 或 302)和相应的 Location 头信息,告诉浏览器要重新发送一个新的请求到指定的 URL。浏览器会根据响应中的 Location 头信息自动发起新的请求,并更新地址栏中的 URL。重定向会导致浏览器发送一个全新的请求到新的 URL。
两者的主要区别在于:
1.用户感知:转发对用户是透明的,用户不会看到 URL 的变化。而重定向会让用户看到浏览器地址栏中的 URL 发生了改变。
2.请求次数:转发只涉及一次服务器端的请求处理,而重定向会导致浏览器发起新的请求,即两次请求。
3.数据共享:在转发过程中,请求参数和会话信息可以在服务器端自动传递到目标组件。而在重定向中,由于是新的请求,请求参数需要在 URL 中传递或者通过其他方式在新的请求中传递。
4.性能:一般来说,转发的性能比重定向要好,因为它避免了额外的网络请求。
转发的地址栏不变,而重定向变成转发后的资源。
转发是一次请求,而重定向是两次请求。所以一般可以说重定向是2次转发。
转发只能在自己内部服务器资源内相互转发,而重定向可以访问其他站点。