摘要:1、ServletContext 注册三大组件的时间 必须是在项目启动的时候,项目运行起来后就不行了,出于安全的考虑 2、ServletContext注册三大组件的位置 2.1 实现了ServletContainerInitializer接口的onStartup方法里 public class My
阅读全文
摘要:1、接口的作用 容器在启动应用的时候,会扫描当前应用每一个jar包里面META-INF/services/javax.servlet.ServletContainerInitializer指定的实现类,启动并运行这个实现类的onStartup方法;onStartup里面获取感兴趣的类型 2、代码事例
阅读全文
摘要:1、@WebServlet的作用 简化了配置,不用在web.xml中配置好多的 <servlet>的标签了,需要tomcat版本要7 及以上 2、用法 @WebServlet("/hello") public class MyServlet extends HttpServlet { @Overri
阅读全文
摘要:1、@Import注解的作用 通过手动导入的方式想IOC容器里面注入bean,这个注解的属性值放的是Class的数组 这里也可以把不在Spring Boot 的包扫描路径下的文件加载到容器里面 2、代码事例放不同类型的java类 放的类一定要有一个无参的构造器,否则会报错 @Import(默认的be
阅读全文
摘要:1、@Configuration 的作用 @Configuration 就相当于spirng的配置文件,配置文件里面的标签都可以在用@Configuration 注解的类里面配置。@Configuration 的底层依赖就包括@Component 也就是会把自己注册进spirng的ioc容器 2、代
阅读全文
摘要:1、@Conditional 的用的方式 放在类上或者方法上 2、@Conditional 的作用 用在方法上让用@Conditional的方法返回的bean是否生效,判断依据是@Conditional注解的属性写的类中matchs方法的返回值。 用在类上让用@Conditional的类以及如果类里
阅读全文
摘要:1、springboot 项目 如果你的其他包都在使用了@SpringBootApplication注解的main app所在的包及其下级包,则你什么都不用做,SpringBoot会自动帮你把其他包都扫描了如果你有一些bean所在的包,不在main app的包及其下级包,那么你需要手动加上@Comp
阅读全文
摘要:1、@RequestBody 是干啥的 RequestBody 是把POST请求中的请求体映射到后端接口中接收的参数里面,RequestBody只能针对POST请求,get请求没有请求体的 2、@RequestParam 是干啥的 RequestParam可以用在POST请求中也可以用在GET请求中
阅读全文
摘要:1、学习总结 1、servlet是什么 servlet 是运行在服务器上的一个程序,用来接收和对请求作出响应。 servlet 继续演进到mvc 2、mvc是什么 model(dao,service) view(jsp) controller(servlet) 模型 视图 控制器 是一种架构规范 3
阅读全文
摘要:1、回调就是是啥 最常见的就是Ajax 2、使用举例 @RequestMapping("/authForPerson") public void authForPerson(){ JSONObject queryData = new JSONObject(); queryData.put("sfzh
阅读全文
摘要:1、volatile 关键字的作用 /** * volatile 关键字的作用 * 1、volatile 是弱化版的synchronized * 2、保证可见性(多个线程操作同一个变量,不同 的线程能共享变量,一个线程修改了值,另一个线程能看到) * 3、不保证原子性(原子性:即一个操作或者多个操作
阅读全文
摘要:1、概念 接口提供一个默认实现的方法,并且不强制实现类重写此方法 默认方法使用default关键字来修饰 default修饰方法只能在接口中使用,在接口种被default标记的方法为普通方法,必须要写方法体。 接口中支持定义静态方法,将关键字换成static即可 这是jdk 8 后有的,7 没有 2
阅读全文
摘要:1、以后Map 怎么用 单线程用HashMap 多线程并发读写的时候用 ConcurrentHashMap public class CurrentHashMapDemo { public static void main(String[] args) { //判断当前机器最大的处理器数 就是看看是
阅读全文
摘要:1、读写锁是啥 读写锁就是对Lock的细化 import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.*; /** * * 读写锁(也叫独占锁或者共享锁) * 写的时候是线程独占的,读的时候是共
阅读全文
摘要:1、CountDownLatch 是什么 CountDownLatch 是一个减法计数器 2、阻塞一个线程 /** * * 减法计数器 * */ public class CountDownLatchDemo { private String[] strings = new String[]{"as
阅读全文
摘要:1、锁的东西就三个 对象和Class和自己定义的Object 2、锁的具体使用 这里用同步方法举例的 2.1 同一个类里面两个普通的 synchronized 方法 /** * * 这个类中的两个方法用的都是同一个锁 * */ public class WindowSell5 { public sy
阅读全文
摘要:1、需求三个线程操作同一个变量,顺序的操作 public class WindowSell4 { private Lock lock = new ReentrantLock(); Condition conditionA = lock.newCondition(); Condition condit
阅读全文
摘要:public class WindowSell2 { private int num=0; public synchronized void increade() throws InterruptedException{ while (num != 0){ this.wait(); } num++;
阅读全文
摘要:/** * * synchronized 和 lock 的区别 * 1、synchronized 是个关键字,lock是个类 * 2、synchronized 会自动释放锁,lock 需要手动释放,如果不是放造成死锁 * 3、synchronized无法判断是否获取锁的状态,Lock可以判断是否获取
阅读全文
摘要:/** * * wait 和sleep的区别 * 1、来自不同的类 wait是Object,sleep是Thread类 * 2、wait 会释放锁,sleep不会释放锁 * 3、wait 必须放到同步代码块中,sleep 哪里都可以 * * */
阅读全文
摘要:public enum State { //新线程 NEW, //运行中 RUNNABLE, //阻塞 BLOCKED, //等待中 WAITING, //过了时间就不等待了 TIMED_WAITING, //终止 TERMINATED; }
阅读全文
摘要:/** * 进程:就是一个程序,例如qq.exe,一个进程有多个线程,至少有一个 * * 线程:轻量级的进程 * java 默认两个线程一个是main,一个是GC线程。 * * java 真的可以开启线程吗? * 开不了,java调用 c++ native 方法开启线程 */
阅读全文
摘要:1、lambda表达式的作用 个人理解卵用没有,但是用的还很多,不会还不行。 2、什么情况下可以用 函数式接口的情况下用,什么是函数式接口呢,接口里有且只有一个接口的时候才能用表达式(@FunctionalInterface 这个注解修饰 )(除了接口中的 默认方法和静态方法) 3、lambda表达
阅读全文
摘要:1、super的理解 1、super理解:父类的 2、super可以用来调用父类的属性、方法、构造器。 2、super 的深入理解 常用的是在子类的构造器里面调用父类的构造器,对父类的一些属性进行初始化的动作。 /** * 属性: * 如果子类属性和父类一样的时候,子类要调用父类的属性时必须要显示
阅读全文
摘要:1、什么是泛型 在定义类,接口时通过一个标识表示类中某个属性的类型或者某个方法的返回值及参数类型。这个参数类型将在使用类或者接口时(例如 继承或者实现这个接口,用这个类型声明变量,创建对象时)确定(也就是实际传入的类型) 传入什么类型,就必须用这个类型,不能用别的类型了。如果没有定就是随便用了。如下
阅读全文