java基础

1. wait() 和 sleep() 的区别:
sleep没有释放锁, wait() 方法释放锁 。

wait() , notify(), notifyAll()三个方法只能在同步方法或者同步控制块中使用, sleep 可以在任何地方使用。

wait() 方法基于 Object, sleep()方法基于 Thread类。

sleep()方法必须捕获异常,其他线程调用 interrupt(), 会抛出 interruptedException 异常,而 wait() 不需要。

2. HashMap, HashTable, ConcurrentHashMap的区别:

HashTable: 底层数组+链表实现,无论 key 还是 value都不能为 null, 线程安全,实现线程安全的方式是在修改数据时锁住整个 HashTable, 效率低, ConcurrentHashMap做了优化。

HashMap: 底层数组+链表实现,可以存储 null 键和 null 值,线程不安全,扩容整个 map,每次扩容的时候,原来数组的元素依次重新计算存放位置,并重新插入。

COncurrentHashMap: 底层采用分段的数组+链表实现,线程安全,把整个 map 分成 n个Segment, 默认16个桶。提供相同的线程安全,效率提升,读操作不加锁 (HashEntry的 value变量是 volatile 的,可以保证原子性)。扩容是段内扩容,不对整张表进行扩容。

3. spring原理:

通过反射解析类以及类的各种信息,包括构造器,方法以及参数,属性。然后将其封装成 bean 定义信息类,构造器信息类,方法信息类,属性信息类,最终放在一个 map 中。

IOC:动态注入,让一个对象的创建不用手动 new了,可以自动生产,利用的是 java 中的反射,反射就是在运行时去动态的创建调用对象, spring 就是在运行时,跟 spring的配置文件来动态的创建对象,和调用对象中的方法。

AOP: 面向切面编程,在调用某一类对象的具体方法前后调用指定的模块,从而达到对方法扩充的功能。

4. Spring源码:

Spring Bean的创建时典型的工厂模式,最底层的接口BeanFactory, ApplicationContext是 BEanFactory的一个高富帅实现,是 Spring提供的一个高级容器,除了能够提供IOC容器的基本功能外,还为用户提供了其他附加服务,如支持信息源,可以实现国际化,访问资源和支持应用事件。spring中有两种bean,一种是普通的 bean,另一种是工厂 bean.

5.springBean的作用域和生命周期:

(1) 作用域:

singleton: 是否是单例模式,全局只有一个实例

prototype: 每次调用产生一个新的实例

request: 每次请求产生一个 bean,在 webApplicationContext中用

session: 每个用户 session产生一个新的 bean, 不同用户之间的 bean 互相不影响,在 webApplicationContext 中用。

global-session: 作用和 session类似,多个 session 中可以共享,在 webApplicationContext中用。

6. ApplicationCOntext 和 BEanFactory都是 Spring的容器:

BeanFactory 是spring中比较原始比较古老的 Factory, 所以无法支持 Spring插件,如 AOP,Web等功能

ApplicationContext是 BeanFactory的子类,ApplicationContext基本替代了BeanFactory的功能,以一种更面向框架的工作方式以及对上下文进行分层和实现继承,并提供了一些其他功能。

ApplicationContext在加载配置文件的时候会创建所有的bean, 好处是预先加载,坏处是浪费内存。

BeanFactory:加载配置文件的时候不会创建所有的 bean,而是等到使用的时候才会创建,好处是节约内存坏处是速度慢。

没有特殊要求的情况下,要使用 ApplicationContext,因为BeanFactory能完成的事情, ApplicationContext都可以完成,并且提供了更多接近现在开发的功能。

7. Object类有哪些方法?

wait(), notify(), notifyAll(), toString(), equals(), finalize() 进行垃圾回收的时候会用到

clone() 克隆出另外一个当前已经存在的对象

hashCode()

8. Spring常用注解:

@Component: 注解声明这是一个 bean 对象

@Autowired 注解声明此处需要一个 bean 类型的对象装配注入

@Service 对于业务逻辑层进行注解

@Controllor 对于控制层进行注解

@Repository 对于 dao层进行注解

@RequestMapping 用于处理请求地址映射,可以作用在类和方法上

@RequestParam  用于获取传入参数的值

@PathViriable 用于获取路径中的参数的值

@RequestBody 作用于方法上,可以将整个返回结果以某种格式返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值