摘要: 哈希冲突 如果两个不同的元素,通过哈希函数得到的实际存储地址相同怎么办?也就是说,当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。 哈希函数的设计至关重要,好的哈希函数会尽可能地保证简单和散列地址分布均匀。但是我 阅读全文
posted @ 2019-11-26 15:49 超人不会飞er 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 了解双亲委派,需要先了解下JAVA的类加载器ClassLoader,java的类加载器主要有以下几种 什么是类加载器? 类加载器是jre的一部分,负责动态将类添加到Java虚拟机。 类加载分类 1、启动类加载器 bootstrap classloader :加载jre/lib/rt.jar 2、扩展 阅读全文
posted @ 2019-11-26 15:38 超人不会飞er 阅读(21319) 评论(2) 推荐(3) 编辑
摘要: Java中重写equals方法为什么要重写hashcode方法? 直接看下面的例子: 首先我们只重写equals()方法 public class Test { public static void main(String[] args) { User user1 = new User(); Use 阅读全文
posted @ 2019-11-26 11:32 超人不会飞er 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 1. ArrayList 和 Vector 的区别 ArrayList和Vector底层实现原理都是一样得,都是使用数组方式存储数据 Vector是线程安全的,但是性能比ArrayList要低。 ArrayList,Vector主要区别为以下几点: (1):Vector是线程安全的,源码中有很多的s 阅读全文
posted @ 2019-11-19 11:03 超人不会飞er 阅读(596) 评论(0) 推荐(1) 编辑
摘要: 1.为了支撑多线程之间的协作,JDK提供了两个非常重要的线程接口:等待wait()方法和通知notify()方法。 这两个方法并不是在Thread类中的,而是输出在Object类。这意味着任何对象都可以调用这两个方法。 这两个方法如下 当在一个对象实例上调用wait()方法后,当前线程就会在这个对象 阅读全文
posted @ 2019-10-10 11:25 超人不会飞er 阅读(1435) 评论(0) 推荐(1) 编辑
摘要: 1.多线程的所有状态都在Thread中的State枚举中定义,如下所示: 2.绘制一张简单的状态图,观察一下线程的生命周期 3。多线程的几种状态 New状态表示刚刚开始,这种线程还没有开始执行。等到线程的start()方法调用时,才表示线程开始执行。 当线程执行时,处于RUNNABLE状态,表示线程 阅读全文
posted @ 2019-10-09 17:34 超人不会飞er 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 1.同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次方法调用。 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续操作。 2.并发(Concurren 阅读全文
posted @ 2019-10-09 10:47 超人不会飞er 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 根据前端请求的url,nginx转发到指定的tomcat容器 原理如图: 现在我们有2个tomcat,一个tomcat的端口为9001,另一个tomcat的端口为9002 1.找到nginx的配置文件nginx.conf,在server标签中进行修改; location /sass/ { proxy 阅读全文
posted @ 2019-08-29 16:24 超人不会飞er 阅读(3427) 评论(0) 推荐(0) 编辑
摘要: Springboot项目默认jar包,且内置Tomcat。现需要将项目打成war包,并部署到服务器tomcat中。 1、修改pom.xml文件。将jar修改为war。 2、在spring-boot-starter-web依赖中移除tomcat模块。 3、添加servlet依赖。 4、在pom.xml 阅读全文
posted @ 2019-08-22 16:45 超人不会飞er 阅读(775) 评论(0) 推荐(1) 编辑