面试题

tech2022-08-19  5

单例 

public class Singleton2 { private Singleton2() { } private static class Innrer { private static final Singleton2 INSTANCE = new Singleton2(); } public static Singleton2 getInstance() { return Singleton2.getInstance(); } }

 

public class Singleton1 { private static Singleton1 instance; private Singleton1() { } public static Singleton1 getInstance() throws InterruptedException { if (instance == null) { synchronized (Singleton1.class) { if (instance == null) { TimeUnit.SECONDS.sleep(1); instance = new Singleton1(); } } } return instance; } }

 传播属性                  描述

REQUIRED               如果有事务在运行,当前方法就在这个事务内运行,否则就启动一个新事务,并在自己的事务内运行

REQUIRED_NEW     当前方法必须启动新事务,并在它自己的事务内运行,如果有事务在运行,应该将它挂起              

SUPPORTS               如果有事务在运行,当前的方法就在这个事务内运行,否则它可以不运行在事务中

NOT_SUPPORTED  当前方法不应该运行在事务中,如果有事务运行则应该将它挂起

MANDATORY            当前方法必须运行在事务当中,如果没有运行的事务,则抛出异常

NEVER                      当前方法不应该运行在事务当中,如果有运行的事务则抛出异常

NESTED                    如果有事务在运行,当前的方法就应该在这个事务的嵌套事务内运行,否则,就启动一个新事务,并在他自己的事务内运行

 

 

 

数据库隔离级别

 一般用读已提交

 

 POST请求中文乱码问题,在web.xml中配一个CharacterEnCodingFilter 过滤器

 

 GET请求中文乱码问题解决方式,修改Tomcatserver.xml配置文件

 

 

 

 

 

 

 

 Linux常用命令

 

 

 

 

 

 

 

 

 

 

 

 

简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。

类加载器 就是根据指定全限定名称将class文件加载到JVM内存,转为Class对象。 启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在\lib目录或-Xbootclasspath参数指定的路径中的类库加载到内存中。

其他类加载器:由Java语言实现,继承自抽象类ClassLoader。

扩展类加载器(Extension ClassLoader):负责加载\lib\ext目录或java.ext.dirs系统变量指定的路径中的所有类库。

应用程序类加载器(Application ClassLoader)。负责加载用户类路径(classpath)上的指定类库,我们可以直接使用这个类加载器。一般情况,如果我们没有自定义类加载器默认就是用这个加载器。

打破: 线程上下文加载器(Thread Context ClassLoader)   打破双亲委派机制则不仅要继承ClassLoader类,还要重写loadClass和findClass方法。 1:自己写一个类加载器 2:重写loadclass方法 3:重写findclass方法

 

最新回复(0)