javaSE面试题 继承Exception类:自定义的异常类需要继承Java的Exception类。定义异常信息:可以在自定义异常类中定义一个字符串变量来存储异常信息。构造函数:自定义异常类应该包含一个构造函数,它接收一个字符串参数作为异常信息,并将其传递给父类的构造函数。String.intern()是一个Native方法,它的作用是:如果字符常量池中已经包含一个等于此String对象的字符串,则返回常量池中字符串的引用,否则,将新的字符串放入常量池,并返回新字符串的引用’
docker详解 默认情况下,每次重启虚拟机我们都需要手动启动Docker和Docker中的容器。# Docker开机自启 systemctl enable docker # Docker容器开机自启 docker update -- restart=always [ 容器名 / 容器id ]数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。html:放置一些静态资源conf:放置配置文件如果我们要让Nginx代理我们的静态资源,最好是放到html目录;
下一个更大元素(单调栈解) 具体地,每次我们移动到数组中一个新的位置 i,就将当前单调栈中所有小于 nums2[i] 的元素弹出单调栈,当前位置右边的第一个更大的元素即为栈顶元素,如果栈为空则说明当前位置右边没有更大的元素。因为题目规定了 nums2是没有重复元素的,所以我们可以使用哈希表来解决第 2 个子问题,将元素值与其右边第一个更大的元素值的对应关系存入哈希表。倒序遍历 nums2,并用单调栈中维护当前位置右边的更大的元素列表,从栈底到栈顶的元素是单调递减的。第 2 个子问题:如何存储第 1 个子问题的结果。
二分查找概述 通过对经典二分查找的修改,达到日常查找的各种需求,如1、查找某个值 target,2、查找第一个大于 target 的值,3、查找第一个小于 target 的值,4、查找第一个大于等于 target的值,5、查找第一个 小于等于 target 的值。对于经典的算法,只要进行简单的修改,即可满足多种情况。条件:left <= right结束时:left 指向第一个不满足 if 条件中的值,如。
分布式事务 TCC模式的每个阶段是做什么的?Try:资源检查和预留Confirm:业务执行和提交Cancel:预留资源的释放TCC的优点是什么?一阶段完成直接提交事务,释放数据库资源,性能好相比AT模型,无需生成快照,无需使用全局锁,性能最强不依赖数据库事务,而是依赖补偿操作,可以用于非事务型数据库TCC的缺点是什么?有代码侵入,需要人为编写try、Confirm和Cancel接口,太麻烦软状态,事务是最终一致。
Seata 解决分布式事务的方案有很多,但实现起来都比较复杂,因此我们一般会使用开源的框架来解决分布式事务问题。在众多的开源分布式事务框架中,功能最完善、使用最多的就是阿里巴巴在2019年开源的Seata了。
HashMap与ConcurrentHashMap 的高 16 位异或低 16 位实现的:``(h = k.hashCode()) ^ (h >>> 16)`,主要是从速度,功效和质量来考虑的,通过位移运算来提升Hash值的散列度,降低Hash冲突的概率从而减少系统的开销。,比如table 数组大小为 16,装载因子为 0.75 时,threshold 就是12,当 table 的实际大小超过 12 时,table就需要动态扩容;如果数据很大的情况下,扩展时将会带来性能的损失,在性能要求很高的地方,这种损失很可能很致命。JDK 1.8 中,是通过。
线程池详解 是一种并发编程中常用的技术,用于管理和重用线程。它由线程池管理器、工作队列和线程池线程组成。线程池的基本概念是,在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被其他任务复用。线程池的设计思想是为了避免频繁地创建和销毁线程的开销,以及控制并发执行的线程数量,从而提高系统的性能和资源利用率。
并发工具类 Java 的并发工具类提供了一系列方便实用的方法,用于简化多线程编程。以下是一些常见的并发工具类:Semaphore:实现信号量,控制资源的访问。CountDownLatch:用于等待一组线程完成。CyclicBarrier:让一组线程等待彼此到达某个同步点。
AQS详解 AQS是一个用来构建锁和同步器的框架,使用**AQS**能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的`ReentrantLock`,`Semaphore`,其他的诸如`ReentrantReadWriteLock`,`SynchronousQueue`,`FutureTask`等等皆是基于**AQS**的。
JMM(Java 内存模型) JMM(Java 内存模型) 主要定义了对于一个共享变量,当另一个线程对这个共享变量执行写操作后,这个线程对这个共享变量的可见性。JMM并不真实存在,它是一种规范,规定了程序中变量在内存中的访问方式。