java
丁国航
分布式架构&并发编程
展开
-
hashCode
xxx其实一直觉得31这个挺碍眼的,不知道是处于什么考虑//String中使用了这样的方式来生成hashCodepublic int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i =原创 2016-12-18 10:22:20 · 289 阅读 · 0 评论 -
[jvm]JVM内存模型
如图,JVM的内存模型及大致功能题外话,还有一部分直接内存。 并不是虚拟机运行时数据区的一部分,但是也被频繁使用,并可能导致OutOfMemoryError。 NIO可以直接使用Native函数库分配这一部分内存,在某些场景下能显著提升性能,因为避免了在Native和Java堆中来回复制数据。原创 2017-05-12 09:50:47 · 713 阅读 · 0 评论 -
[jvm]对象的创建
上图是对象的创建 下图是句柄和直接指针的存储方式1⃣️句柄 2⃣️直接指针原创 2017-06-08 17:03:31 · 246 阅读 · 0 评论 -
String#intern
OverviewString#intern How to use. How it does in jdk6 and jdk7. How to instead.栗子使用场景猜想当需要大量的字符串,并且不是直接声明的常量时,通过String#intern,有效使用常量池,复用String对象,可以增加程序的运行速度。 需要注意的是,StringPool是不可动态扩容的,所以过量使用String#原创 2016-12-18 10:37:49 · 369 阅读 · 0 评论 -
MpscLinkedQueue 无锁队列
Overview数据结构实现OfferPoll伪共享OverviewNetty的无锁队列适用于单消费者多生产者场景A lock-free concurrent single-consumer multi-producer Queue数据结构 里面有三种需要提一下的数据结构Node, DefaultNode, Ref 1. Node: 声明了的next, volatile原创 2017-02-16 10:54:17 · 2648 阅读 · 0 评论 -
Java常量放在Class还是Interface?
overview之前习惯性把常量定义在interface中, 因为可以少些很多遍的 “public static final”, 但是近来浏览业务代码, 发现很多代码还是坚持将常量定义在class中, 因此尝试去探究其区别.区别大致整合区别如下: 1. interface的语义应该是高层的抽象, 他的所有特性都应该由实现类来体现, 常量违背了interface的定义. 2. interface提原创 2017-02-06 18:45:58 · 2817 阅读 · 0 评论 -
logback 自定义
Overview自定义Converter,通过conversionRule或者layout实现注入 常规使用Logback的方式不在本篇wiki的范围内 本文旨在解决我写的common_util.log组件在包装slf4j后丢失行号的问题,这是给出的logback解决方案LineConverter包装logback + slf4j之后,使用会丢失行号 // 注入Converter,全局覆盖原创 2016-12-18 10:30:31 · 1357 阅读 · 0 评论 -
编码规范和最佳实践
Overview听了如题这么一个分享,醍醐灌顶Overview主旨架构业务系统架构业务服务架构框架工具监控主旨从大到小,自顶向下。 扩大系统中不变的,缩小可变的,定时审视不变的是否正确,是否过时等。 比如 架构 -> 框架 -> 工具 -> 编码架构业务系统架构多个系统对同一份数据感兴趣 比如我们的tts_store架构业务服务架构多个业务线使用同一种服务 比如收银台、清结算架原创 2016-12-18 10:41:21 · 520 阅读 · 0 评论 -
[jvm]GC 垃圾收集和内存分配 -- 待续
如图,垃圾收集器算法相关 待续原创 2017-06-15 10:13:15 · 240 阅读 · 0 评论