- Java中,4种对象引用之间的区别
- 强引用:只要引用关系还在,对象永远不会被回收
- 软引用:非必须存活的对象,JVM会再内存溢出前对其进行回收
- 弱引用:非必须存活的对象,不管内存是否够用,下次GC一定回收
- 虚引用:必须和引用队列一起使用,等同于没有引用,对象被回收时会被通知。
- Java中保证线程安全的方式有哪些?
- 使用同步关键字synchronized或Lock使线程互斥同步
- 使用自旋CAS保证原子操作,实现共享变量的线程安全
- 使用ThreadLocal实现多个线程之间的数据隔离
- 什么是CAS
- CAS是Compare And Swap(比较并替换)的缩写,是Java并发实现原子操作的一种方式。
- 将内存位置的数值与预期的数值进行比较,如果相等,则内存位置的值替换为新的值,如果不相等则什么也不做
- 线程和进程有什么区别
- 进程是系统资源分配的最小单位,线程是程序执行的最小单位
- 先有进程后有线程,进程有独立的地址空间,而线程必须依赖进程而存在
- 进程之间不能共享资源,而线程共享所在进程的地址空间和其他资源。
- 异步和多线程的关系
- 同步:是线程的的顺序执行,必须执行完一个再执行下一个,需要等待,协调运行
- 异步:是让主线程不需要等待另一个线程的完成,也可以继续执行其他任务
- 对比:异步和多线程并不是同等的关系,实现异步的方式有很多,多线程只是实现异步的一种方式。
- Spring中用到了哪些设计模式
- 工厂模式:比如BeanFactory就是简单工厂模式的体现,用来创建对象的实例
- 单例模式:比如说Spring中的Bean默认为单例模式
- 装饰器模式:比如BeanWrapper,访问Bean的属性和方法
- 策略模式:SimpleInstantiationStrategy,Bean的实例化策略。
- 适配器模式:MVC模块中的HandlerAdapter
- 代理模式:AOP模块的AopProxy,采用JDK动态代理和CGLIB字节码生成技术。
- 模板方法模式:Restemplate、JdbcTemplate、用来解决代码重复的问题
- 观察者模式:ApplicationLister,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知。
- 导致Spring事务失效的原因有哪些?
- @Transcational事务注解添加再不是public修饰的方法上
- 类没有被Spring托管,导致Spring无法实现代理
- 抛出的异常被catch处理了,导致@Transcational无法回灌而失效
- 调用同一个类中的方法,导致@Transcational失效
- propagation事务传播配置错误?
- rollbackFor参数设置错误?
- 数据库配置了不支持事务的引擎,或者是数据库本身不支持事务
- Spring中几种依赖注入的方式
- 通过构造器注入,这也是Spring官方推荐
- 通过setter方法注入,这种方式日常研发中不太常见
- 通过Field属性注入,比如用@Autowired、@Resource等注解注入
- 简述SpringMVC执行流程
- 客户端发送请求到DispatcherServlet
- DispatcherServlet从handlerMapping中获取对应的HandlerAdapter调用
- 从HandlerAdapter中找到对应的handler,从而调用Controller执行业务逻辑
- 执行完业务逻辑后,返回ModelAndView
- 调用ViewResolver解析ModelAndView,返回View对象
- DispatcherServlet执行view的渲染方法并填充数据,再返回给浏览器
- Spring中异步调用的三种方式
- 再配置类上加上@EnableAsync来启用异步注解,然后在方法上加@Async标注异步方法
- 使用Spring内置的线程池,比如ThreadPoolTaskExecutor 和SimpleAsyncTaskExecutor
- 自定义线程池,实现AsyncConfigurer接口或者继承AsyncConfigureSupport类来自定义线程池
- 注:异步方法所在类必须被Ioc容器管理,同级Seervice内直接调用异步方法无法实现异步
- SpringMVC中九大组件的理解
- MultipartResolver:多文件上传组件,用于支持多文件上传
- LocalResolver:多语言环境组件,用于支持国际化多语言切换
- ThemeResolver:主题模板处理器,用于对页面多主题风格的处理
- HandlerMapping:url映射处理器,主要保存url对应业务逻辑的关系
- HandlerAdapter:业务逻辑适配器,主要功能是动态解析参数以及适配对应业务逻辑Handler
- HandlerExceptionResolver:异常拦截器,主要用于拦截对不同异常的个性处理
- RequestViedwNameTranslator:视图提取器,可以从Request中获取viewName
- ViewResolver:视图转换器,相当于模板引擎
- FlashMapManager:参数闪存管理器,用于对请求重定向后,参数不丢失支持
- Netty中提供了哪些线程模型
- ?
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/267205.html