面试题

jdk自带的线程池

newFixedThreadPool 固定大小线程池

同时可运行的线程数量是固定的。当提交新任务时,如果线程池中已有线程正在执行任务且数量达到上限,则新任务将被放入队列中等待,直到有线程空闲出来。适用于处理长期存在且可以并行执行的任务,有助于防止资源过度消耗。

newCachedThreadPool 缓存线程池

线程池的大小不固定,可根据需要自动调整。当提交新任务时,若线程池中没有空闲线程,则会创建新的线程来执行任务。同时,对于空闲线程,线程池会根据其空闲时间进行回收以避免资源浪费。适用于处理大量短生命周期的异步任务,任务的并发度可能会动态变化。

newSingleThreadExecutor 单线程线程池

线程池只有一个工作线程,所有任务按顺序(通常为FIFO)执行

newScheduledTheadPool 定时/周期性任务线程池

除了具备基本的线程池功能外,还支持定时执行任务一次(延时执行)或定期重复执行任务(周期执行)。线程池大小可以自定义,但通常保持相对固定。适用于需要调度定时任务或周期性任务的场景。

阿里巴巴不让使用JDK自带的线程池

资源耗尽

newCachedThreadPool 由于没有预设最大线程数限制,当任务量过大时,可能导致线程数无限制增长,从而耗尽系统资源宕机

队列容量

FixedThreadPoolSingleThreadPool所使用的阻塞队列长度为21亿。这意味着当任务提交速率远大于处理速率时,大量任务会堆积在队列中,可能导致内存溢出

线程池的核心参数有那些

线程池大小、最大线程数、任务队列最大数

项目中有没有用过调度器

  1. Redis 定期检查key 的数量
  2. 消息队列 Rabbit MQ 定期检查队列信息
  3. 蚂蚁组队 定期检查超出时间的出行单

Spring 自带的tack与xxl-Job的区别

分布式,将项目发布到多态服务器上时,Spring Task不能保证在同一时刻只有一台服务器的任务在执行。而xxl-job可以通过调度器实现同一时刻只有一台服务器的任务在运行

MongoDB 与MySQL的区别?优势?

MySQL关系模型数据库,使用表格(tables)来组织数据 MongoDB 非关系型数据库文档采用类似JSON的BSON格式

在这里插入图片描述

Mongodb在哪些场景应用

灵活多变的数据(广告,推荐),日志,小程序、公众号的数据

ES是什么?分词器?

Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。Elasticsearch 可以处理大量数据,并且具备横向扩展能力,能够通过增加更多的硬件资源来应对数据和查询量的增长。

ik_smart 尽量进行较少的、更有意义的拆分,减少无意义的子词组合,提高搜索准确率,降低误报率

ik_max_word 最大化地拆分文本,即尽可能多地生成可能的词语组合,包括单字、双字直至整个短语

什么是MDC,原理

在日志记录领域,尤其是使用如log4j、logback等日志框架时,MDC是一种辅助多线程环境下日志追踪和关联的技术。

其原理是在每个线程的上下文中维护一个键值对映射表,用于存储与该线程执行上下文相关的特定信息(如用户ID、事务ID、请求ID等)。当线程在执行过程中生成日志时,MDC中的信息可以自动附加到日志条目中,无需在代码中手动传递这些上下文信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值