java
额仑白狼
这个作者很懒,什么都没留下…
展开
-
面试|threadPool相关问题
文章目录问题概览1.线程池化好处2.线程池创建3.核心参数4.execute执行流程4.1 or 线程池如何接收并执行一个或者多个任务?4.2 or线程池中的线程间是如何调度的?即调度机制是什么?5. worker6.没有工作会删除线程吗?6.1 or 线程池中的线程如何创建?何时创建?存活到何时?6.2 or 线程池如何销毁?何时销毁?7.最大线程满了之后?8.线程池如何存放多余任务?9.线程池状态问题概览线程池好处多线程怎么创建线程池参数execute执行流程worker没有工作会删除线原创 2021-01-25 20:44:38 · 186 阅读 · 0 评论 -
hashMap 链表与树节点相互转化
最近一次面试问到hashMap相关hashMap ->1.7、1.8区别->1.8链表转化树节点阈值?树转化链表阈值?1、为什么1.8会采用树节点(TreeNode)?大部分使用bins(链表),当链表足够大,转化为红黑树。2、为什么转化成红黑树的阈值是8?为了配合使用分布良好的hashCode,树节点很少使用。并且在理想状态下,受随机分布的hashCode影响,链表中的节点遵循泊松分布,而且根据统计,链表中节点数是8的概率已经接近千万分之一,而且此时链表的性能已经很原创 2021-01-03 21:15:15 · 820 阅读 · 0 评论 -
线上问题排查 too many open files
场景描述单体应用改造成分布式(未知原因,埋下暗雷),旧应用每日定时重启,所以实际不会存在too many open files。分布式应用基本每周发布一次,要扛过一周,逐渐运行会报too many open files异常。改造的新系统因为办公室政治原因必须有突破,不能也每天重启。分析:高并发文件读,单个文件读写有上限。常规处理思路1、操作系统局部最大文件打开数-个进程能打开的文件数(操作系统中-一个网络连接,也算是文件打开数)ulimit-n查看限制修改限制: /etc/se...原创 2020-10-13 22:17:23 · 1988 阅读 · 0 评论 -
缓存ehcache
业务场景介绍保险核心系统,hibernate 部分险别费率基础数据需要频繁使用,系统使用了Ehcache,原系统单体,目前改造成分布式微服务架构。最合理建议ehcache->redis或其他,目前去掉缓存。(ehcache不适合分布式,原因见下文,实际遇到硬盘缓存文件高并发时too many files open问题)。故学习记录一下。Ehcache在Java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache...原创 2020-10-11 13:05:06 · 176 阅读 · 0 评论 -
hashMap(一)——拉链法冲突处理与hashMap源码分析
在研究hashMap之前先了解下hashMap冲突处理采取的处理方式。因为hashMap对于冲突处理采用的是拉链法,所以对拉链法进行详解。其他后续再说。一、哈希?散列表,根据key值快速访问value二、哈希冲突解决1、开放定址法 a、线性探查法 b、线性补偿探查法 c、随机探测2、拉链法 拉链法数据结构参考(1)拉链法解决冲突的做法是:将所有关键原创 2017-05-03 20:00:31 · 4003 阅读 · 0 评论 -
jetty插件java.lang.OutOfMemoryError: PermGen space内存溢出
项目运行时,有时遇到java.lang.OutOfMemoryError: PermGen space问题。例如启动线程异步导入excel、excel导出时,会出现如上问题。原因分析:PermGen space,全称是Permanent Generation space,指的是内存中的永久区域。当java中间件启动时,会将相关的jar包和.class加载到永久区域,而用就区域的空间是固原创 2017-05-03 10:13:36 · 2849 阅读 · 0 评论 -
项目解析-spring异步线程池配置与使用
一、Spring配置实际项目简单配置<bean class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> 较完整参考原创 2017-05-03 09:39:23 · 4322 阅读 · 1 评论 -
List去除重复元素
方法一:循环元素删除 // 删除ArrayList中重复元素 public static void removeDuplicate(List list) { for ( int i = 0 ; i 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (li原创 2016-09-30 11:19:07 · 616 阅读 · 0 评论