- 博客(18)
- 收藏
- 关注
原创 RabbitMQ:The channelMax limit is reached. Try later.
RabbitMQ:The channelMax limit is reached. Try later. 这个问题是我当初写项目时遇到的,因为用RabbitMQ做削峰处理,高并发情况下,channel数到达了限制,所以不能继续创建,相信大家也遇到过。 正常来说,这个错误还是比较少见的,只不过项目需要保证消息的可靠性,所以采取了发送确认和消费手动确认机制,导致并发性能下降,从而出现这个问题。、 这里先上结论,方便着急的小伙伴们改bug。 结论:RabbitMQ java客户端在创建连
2020-06-12 18:41:33
13636
2
原创 HashMap浅析(二)
HashMap浅析(二)扩容机制首先上扩容的代码,每一行都写了注释,尽可能的让大家明白这个过程。final Node<K,V>[] resize() { //将table赋值给oldTab Node<K,V>[] oldTab = table; //声明oldTab的容量给oldCap int oldCap = (oldTab == null) ? 0 : oldTab.length; //扩容阈值赋值给oldT
2020-06-11 15:19:56
199
原创 HashMap浅析(一)
HashMap浅析(一) 无论几年的程序猿,面试必问的题,HashMap算一大山,这座山翻不过去,离自己梦想的公司想必是无缘的。 很多人觉得会用HashMap不就行了吗,为什么非要研究它的原理呢? 摸一摸自己的大光头,你真的会用吗?如何用效率高?除了当普通的数据结构使用,其他地方可不可以用到呢? 接下来我会大致的对HashMap进行一个简短的分析。学习是一个循循渐进的过程,不要妄想一晚上学会什么原理,教你的是骗子,但你不能当傻子。 第一节是对于数组容量为2的幂次方的解惑。后续
2020-06-10 21:20:42
211
原创 @Autowired浅析
@Autowired浅析首先放几段代码和几个问题,带着思考去看接下来的结论第一个问题第一段代码:容器初始化完毕,控制台是否会打印(“This is a method from TeachService”)这句话?@Servicepublic class StudyService { public void setTeacherService(TeachService teacherService){ teacherService.teach(); }}@Service
2020-06-08 21:45:15
3011
原创 读《深入理解Java虚拟机》小记——第二部分
第二部分 自动内存管理机制第一章 运行时数据区域 一、程序计数器 程序计数器是一种较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这个计数器值则为空。此内存区域是惟一一个在 Java 虚拟机规范中没有规定任何 O...
2018-06-04 15:22:34
104
原创 读《深入理解Java虚拟机》小记——第一部分
第一部分 走进Java第一章 Exact VM 在JDK1.2时,曾在Solaris平台发布过一款名为Exact VM的虚拟机,具备:两级即时编译器、编译器与解释器混合工作模式。它使用准确式内存管理(Exact Memory Management 或者叫做 Non-Conservative/Accurate Memory Management)而闻名,换句话说,即虚拟机知道内...
2018-06-01 14:50:28
185
原创 JDBC、mybatis和Hibernate比较
1.1 jdbc问题总结如下:1、 数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能。如果使用数据库连接池可解决此问题。2、 Sql语句在代码中硬编码,造成代码不易维护,实际应用中sql变化的可能较大,sql变动需要改变java代码。3、 使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql
2017-09-06 16:39:58
470
转载 springmvc与struts2不同
1、 springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。2、 springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。3、 Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springm
2017-09-06 16:36:31
170
转载 Hibernate一级缓存、二级缓存区别
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发
2017-08-15 19:08:42
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人