- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 [jvm]JVM内存模型
如图,JVM的内存模型及大致功能题外话,还有一部分直接内存。 并不是虚拟机运行时数据区的一部分,但是也被频繁使用,并可能导致OutOfMemoryError。 NIO可以直接使用Native函数库分配这一部分内存,在某些场景下能显著提升性能,因为避免了在Native和Java堆中来回复制数据。
2017-05-12 09:50:47
722
原创 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
2677
原创 Java常量放在Class还是Interface?
overview之前习惯性把常量定义在interface中, 因为可以少些很多遍的 “public static final”, 但是近来浏览业务代码, 发现很多代码还是坚持将常量定义在class中, 因此尝试去探究其区别.区别大致整合区别如下: 1. interface的语义应该是高层的抽象, 他的所有特性都应该由实现类来体现, 常量违背了interface的定义. 2. interface提
2017-02-06 18:45:58
2893
原创 MessageQueue 队列设计(待续)
MessageQueue 队列设计MessageQueue 队列设计Overview队列设计重点Rpc通信协议消费关系处理可靠投递最终一致性实现事务丢失 重复批量 异步 性能Overview 消息队列中的队列, 一大设计核心队列设计重点 RPC通信协议 存储选型 消费关系处理 实现事务 防丢失、重复 批量、异步与性能Rpc通信协议市面上有不
2017-02-04 18:30:47
418
原创 MessageQueue 消息队列概述
Message QueueOverview 大致解释一下什么是消息队列,为什么使用消息队列,并以QMQ为基础解释一下消息队列的实现Message QueueOverview消息队列使用场景解耦一致性强一致性最终一致性广播错峰与流控延时消息队列的特点消息队列的本质消息队列使用场景 消息队列,顾名思义,是一个由消息组成的队列数据结构,是一种常见的异步RPC手段 存在
2017-02-04 11:51:02
745
原创 RpcMonitorFilter——monitor dubbo by filter
package com.qunar.flight.pangolin.pay.filter;import com.alibaba.dubbo.common.Constants;import com.alibaba.dubbo.common.extension.Activate;import com.alibaba.dubbo.rpc.Filter;import com.alibaba.dubbo
2016-12-18 10:54:00
720
原创 ValidateUtil by Annotation and HibernateImplements
package com.qunar.flight.pangolin.pay.util;import com.qunar.flight.pangolin.pay.exception.PayException;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.lang3.ArrayUtils
2016-12-18 10:52:16
405
原创 远程Debug
配置远程机器配置Idea特别注意socat debug配置远程机器1、 打开对应tomcat脚本[root@l-noahcef39gzl1.auto.beta.cn0 /home/q/www]# cat /home/q/www/pangolin_pay.qunar.com/startenv.sh/"*******************下面是命令执行结果********************
2016-12-18 10:48:12
551
原创 编码规范和最佳实践
Overview听了如题这么一个分享,醍醐灌顶Overview主旨架构业务系统架构业务服务架构框架工具监控主旨从大到小,自顶向下。 扩大系统中不变的,缩小可变的,定时审视不变的是否正确,是否过时等。 比如 架构 -> 框架 -> 工具 -> 编码架构业务系统架构多个系统对同一份数据感兴趣 比如我们的tts_store架构业务服务架构多个业务线使用同一种服务 比如收银台、清结算架
2016-12-18 10:41:21
534
原创 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
379
原创 logback 自定义
Overview自定义Converter,通过conversionRule或者layout实现注入 常规使用Logback的方式不在本篇wiki的范围内 本文旨在解决我写的common_util.log组件在包装slf4j后丢失行号的问题,这是给出的logback解决方案LineConverter包装logback + slf4j之后,使用会丢失行号 // 注入Converter,全局覆盖
2016-12-18 10:30:31
1388
原创 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
301
原创 Exception thrown in catch and finally clause
Overview有趣的问题,在catch、finally中抛出异常,会怎么样?QuestionAnswer 每当抛出一个异常,都会离开当前代码块,例如 try -> catch -> finally 每当抛出一个异常,上一个异常会立刻结束,并展开新异常的堆栈ResourcesException thrown in catch and finally clause – stackOverFlow
2016-12-14 21:32:51
265
原创 ServiceLoader
Overview原理用法OverviewServiceLoader是JDK提供的SPI发现加载类原理基于Iterable、LazyIterator实现懒加载 加载就是读文件、实例化 基于LinkedHashMap做缓存用法ServiceLoader<T> loader = ServiceLoader.load(T); //loadServiceLoader本身就实现了Iterable,接下来
2016-12-14 21:21:09
389
原创 SPI
SPISPI什么是SPIAPI SPI really cool descriptiondeference between SPI and API example for SPI and API as JNDIJDK的SPI加载类Dubbo的SPI注解注解加载类什么是SPISPI:为Service Provider Interface扩展点接口普通开发人员可能不熟悉,因为这个是针对
2016-12-14 21:16:05
285
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人