@Autowire可谓是Java开发最常用的注解了,那么它的原理你了解吗?为什么类字段上加上这个注解就可以自动注入一个对象呢?下面慢慢揭开它的神秘面纱首先看看它的定义元注解:@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementTy
Spring框架常问面试题
之前我整理过Spring基础入门笔记,有兴趣的同学可以先看那篇Spring IoC 11Q1:IoC 是什么?IoC 即控制反转,简单来说就是把原来代码里需要实现的对象创建、依赖反转给容器来帮忙实现,需要创建一个容器并且需要一种描述让容器知道要创建的对象间的关系,在 Spring 中管理对象及其依赖
Java并发包之信号量、闭锁和栅栏
面试遇到过的一个问题,也是Java并发面试中常问的,需要熟记!Java多线程相关的包:描述线程的类:Runable和Thread都属于java.lang包。内置锁synchronized属于jvm关键字,内置条件队列操作接口Object.wait()/notify()/notifyAll()属于ja
Java并发常问面试题
JMM 8Q1:JMM(Java 内存模型) 的作用是什么?Java 线程的通信由 JMM 控制,JMM 的主要目的是定义程序中各种变量的访问规则。变量包括实例字段、静态字段,但不包括局部变量与方法参数,因为它们是线程私有的,不存在多线程竞争。JMM 遵循一个基本原则:只要不改变程序执行结果,编译器
JVM逃逸分析优化实践
面试的过程中,了解到JVM逃逸分析方面的知识,但网上的资料比较混乱,于是我做了一下总结和实践概念引入众所周知,Java创建的对象都是被分配到堆内存上,但是事实并不是这么绝对。通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中创建出来的对象并不一定分配在堆内存上。这两个点分别是Jav
JVM相关常问面试题
众所周知,我之前分享过一篇《深入理解Java虚拟机》读书笔记,但那篇文章是一个系统的学习总结,面临面试的同志在理解那篇文章的基础上,还需要针对常考的问题做到心中有数,最好能够熟背于心内存区域划分 8Q1:运行时数据区是什么?虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干不同的数据区
Java基础面试常问题
最近在为了暑假找Java实习做准备,整理了一下Java基础部分常问的题语言特性 12Q1:Java 语言的优点?① 平台无关性,摆脱硬件束缚,"一次编写,到处运行"。② 相对安全的内存管理和访问机制,避免大部分内存泄漏和指针越界。③ 热点代码检测和运行时编译及优化,使程序随运行时
Mybatis源码解析
前言Mybatis是一个ORM框架, 将数据库表和字段映射为java对象和属性.如果不使用ORM框架原生的JDBC, Java Database Connectivity是用来规范客户端程序如何来访问数据库的接口,提供了诸如查询和更新数据库中数据的方法。组成主要在java.sql包中, Drive
jdk和cglib动态代理的区别
一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实
Spring的观察者模式
Spring框架使用了许多经典的设计模式,下面就介绍一下观察者模式在Spring中的妙用一、Spring 中观察者模式的四个角色1. 事件(ApplicationEvent)ApplicationEvent 是所有事件对象的父类。ApplicationEvent 继承自 jdk 的 EventObj