
Java
ExtraMile
编程以明志,调试以致远
展开
-
HashMap:为什么容量总是为2的次幂
HashMap:为什么容量总是为2的次幂HashMap是根据key的hash值决策key放入到哪个桶(bucket)中,通过 tab=[(n - 1) & hash] 公式计算得出。其中tab是一个哈希表为什么要保证 capacity 是2的次幂呢?(1)在get方法实现中,实际上是匹配链表中的 Node[] tab 中的数据。(n - 1) & hash实际上是计算出 key 在 tab 中索引位置,当key的hash没有冲突时,key在HashMap存储的位置就是匹配的node转载 2021-04-10 19:11:24 · 197 阅读 · 0 评论 -
minor GC 、 full GC、新生代(young )、老年代(old)的一些理解
Minor GCMinor GC是俗称,新生代(新生代分为一个 Eden区和两个Survivor区)的垃圾收集叫做 Minor GC。 清除 Eden 和 from ,转到to中。接下来from与to转换。继续清除 Eden和新from,转到to。清除一次后存活超过年龄的 ,转到老年代。to到了阈值后,部分对象转到老年代。晋升老年代参数:XX:+MaxTenuringThreshold(至于为什么是 15次,原因是 HotSpot会在对象头的中的标记字段里记录年龄,分配到的空间只有4位,所以最多只能记转载 2021-04-10 12:00:01 · 575 阅读 · 0 评论 -
Java虚拟机JVM知识整理
通过阅读《深入理解Java虚拟机》该书的一些总结,供大家学习参考,有不足的地方欢迎指出!原创 2021-04-10 11:51:11 · 248 阅读 · 0 评论 -
Java将任意十进制数转换成指定进制的数
在开发过程中,可能需要将10进制的数据转换成指定进制的数并输出,借用数学中除数求余数的方式,可以得到任意进制的数据: public static void transform(int sourceNumber, int scale) { int[] destArrs = new int[100]; int index = 0; int count = 0; while (sourceNumber != 0) { in原创 2021-04-10 00:25:00 · 584 阅读 · 0 评论 -
更优雅的初始化
在我们之前添加变量的时候,大多数情况下都是一个个去add、put的,类似这样,显得不够优雅Map<String, String> msgTypeMap = new HashMap<String, String>(); msgTypeMap.put("CUSTOMS_DECLARE_RESULT_CALLBACK", EPORT_RECEIPT); msgTypeMap.put("CUSTOMS_CEB_CALLBACK", CEB_CALLBACK);List<Inte原创 2021-03-25 17:44:42 · 259 阅读 · 0 评论 -
对比protostuff和JDK序列化性能测试
maven&lt;dependency&gt; &lt;groupId&gt;com.dyuproject.protostuff&lt;/groupId&gt; &lt;artifactId&gt;protostuff-core&lt;/artifactId&gt; &a原创 2020-05-12 19:44:10 · 717 阅读 · 0 评论 -
SpringCloudGateway集成Sentinel
SpringCloudGateway集成Sentinel介绍Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。(https://github.com/alibaba/Sentinel)整体结构图如下,将原有的 Spring Cloud G原创 2020-05-12 12:45:39 · 6666 阅读 · 1 评论