日常题记录

  1. 线程池原理和7个参数,说说项目中哪些地方用到线程池了,怎么用的,解决什么问题:

7个参数:最大线程数 核心线程数 最大线程空闲生存时间 时间单位 任务队列 线程工厂 拒绝策略(discardpolicy abortpolicy discardoldestpolicy callerunspolicy )

原理:

当用户向线程池提交一个任务(也就是线程)时,线程池会先将任务放入workQueue中。workerSet中的线程会不断的从workQueue中获取线程然后执行。当workQueue中没有任务的时候,worker就会阻塞,直到队列中有任务了就取出来继续执行。

线程池执行所提交的任务过程中:

 1、先判断线程池中核心线程池所有的线程是否都在执行任务。 如果不是,则新创建一个线程执行

刚提交的任务,否则,核心线程池中所有的线程都在执行任务,则进入第2步;

 2、判断当前阻塞队列是否已满,如果未满,则将提交的任务放置在阻塞队列中;否则,则进入第

3步;

 3、判断线程池中所有的线程是否都在执行任务,如果没有,则创建一个新的线程来执行任务,否

则,则交给饱和策略进行处理。

使用场景:

图片上传,用户选择的图片上传大小格式都不一样的,但是显示出来的是一样的,也就是服器上面要保存两份图,一份是标准图,一份是用户上传的图,那么把用户上传的图片标准化的过程是使用线程池完成的(缩略图);下载报表;调用第三方接口的时候,因为第三方是不可控的;

解决问题:

资源管理问题:在并发环境下,系统无法确定任意时刻有多少任务需要执行和多少资源需要投入,这可能导致资源频繁申请和销毁,以及调度资源的额外消耗。

资源复用:线程池通过复用现有的线程来执行任务,避免多次创建和销毁线程,从而降低资源消耗。

提高响应速度:由于省去了创建线程的步骤,线程池可以立刻开始执行任务,从而提高系统的响应速度。

资源限制控制:线程池的关键参数如核心线程数和最大线程数量,有助于提高阻塞队列中任务的处理效率,避免资源利用率过高的问题。

  1. 什么是IOC,aop,他们的好处是什么,你哪个场景用了?

IOC:控制反转 控制:把创建使用的过程叫控制 反转:本来用的是new一个对象,现在反转就是把这个控制权交给spring容器。

1.好处:松耦合性 可维护性 可重用性。

2.应用场景:

对象创建:通过Spring容器管理对象的创建,例如创建数据源、Hibernate Session以及Service等。

松耦合:通过依赖注入管理对象之间的依赖关系,达到松耦合的效果,让开发者更容易编写测试和单元测试。

配置管理:通过配置文件管理应用程序的配置,例如数据源配置、日志配置等。

希望这些详细的解释能够更好地帮助你理解Spring AOP和IOC的原理和应用场景。

AOP:面向切面编程 就是在不修改源代码的基础上对代码进行增强。

1.好处:减少重复代码 维护方便 提高开发效率。

2.应用场景:

日志记录:记录方法的调用时间、参数信息等,用于问题排查和性能优化。

权限验证:对用户的请求进行拦截,校验用户权限,增加应用的安全性。

事务管理:统一管理数据库的事务,确保数据的一致性和完整性。

性能监控:统计方法的执行时间、资源消耗等,进行性能调优。

异常处理:捕获方法执行过程中的异常,并进行统一处理和日志记录。

  1. 事务失效的场景
  2. 慢Sql的优化
  3. SpringBoot启动流程
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值