介绍 LongAddr是JDK1.8才有的。其在高并发情况下,相比与AtomicLong的性能更高。本篇主要分析一下其实现原理。并且与AtomicLong做一个性能对比测试。...
介绍 LongAddr是JDK1.8才有的。其在高并发情况下,相比与AtomicLong的性能更高。本篇主要分析一下其实现原理。并且与AtomicLong做一个性能对比测试。...
本篇聊一聊MyBatis所用到的一些设计模式。 关于MyBatis一些实现原理,可以参考 MyBatis的Mapper机制 1.工场模式 关于工场模式的具体原理和实现可以参考...
对象包装对象,目的是功能增强。 最常见的JAVA IO。 Dubbo,Spring中都有一些wapper类。 上述代码在Dubbo中的具体原理参考文章 dubbo的filte...
过滤器链,拦截器链 树下应用,挺多的。 ① Struts2的过滤器链 ② Java web的过滤器链 ③ SpringMVC的拦截器链 ④ Dubbo的过滤器链 参考文档 d...
目的是共享内存中的某些对象资源 比如棋类游戏,每个棋子可以作为共享资源 我觉得这个模式用的不多,但某些场景非用不可。其实如果让某个程序员设计棋牌类游戏,就算他不知道有享元模式...
适配器,属于一种补偿模式,用于补偿原有设计的不足之处。 adapter持有adaptee目标对象的委托,对其调用。或者继承关系。 继承的方式 组合的方式 说一个Dubbo中运...
桥梁模式,我觉得是比较难理解的一个模式,它的定义很简单:将抽象和实现解耦,让它们可以独立变化。深刻理解却不容易。网上有很多案例,但这个模式如果以Demo来聊,我觉得无法学到它...
在抽象层方法中,定义一些列的行为骨架。并且设计好执行顺序(不变的流程)。具体的行为实现,由子类完成。 几乎任何一个框架,任何系统在抽象层都要使用模板方法。因为框架的骨架由实体...
当某个类的参数过多,构造细节过于复杂时,使用builder模式。build()方法可以做一些参数有效性的校验工作 不太好的地方:Builder类会把主类中的参数做一层冗余。这...
本篇只是总结下各个设计模式要表达的核心思想。算是我的笔记。 创建型 单例模式 对于某个类,在进程级别只允许一个实例存在。当然还有多进程间共享单例(一般也不常用)或者线程级别的...
两种角色. 1.观察者. 2.被观察者 被观察这一般会持有一个观察者的列表。当某些相关事件发生之后,循环调用每个观察者触发其update行为。 至于观察者的updat...
简单工场(使用pulic static T create/getInstance/valueOf(){},把创建对象的细节封装起来) 工场方法(针对单一维度) 工场方法,创建...
对于某个类,在进程级别只允许一个实例存在。当然还有多进程间共享单例(一般也不常用)或者线程级别的单例。 实现方式: ① 恶汉式(最常见,最简单) ② 懒汉式(双重检测,为防止...
真实动作的前面和后面分别做一些行为。真实动作使用委托的方式来调用。 静态代理 动态代理 动态代理的应用会比较多,其实原理挺简单,就是在运行时动态得给某个接口生成一个对象,这个...
在行为级别。把if else,switch替换掉的最好方式。 策略类型的存放,有些人喜欢用static map,我喜欢用Enum,我感觉更优雅。 Enum作为策略类型,实现类...
Mapper机制从流程上分为3个步骤 1.启动时做初始化动作 2.运行时使用getMapper方法生成动态代理 3.调用sql执行过程 Mapper机制初始化 系统启动首先会...
关于MyBatis本身的Mapper机制,请参考文档 MyBatis的Mapper机制 首先,在没有使用MyBatis-Spring的情况下,我们这么去访问Mapper 每次...
拿Dubbo源码为案例,来说说什么样的代码是优雅的。以下案例所用Dubbo源码版本2.6.4。 我先声明下哈,Dubbo是个好框架,我只是在鸡蛋里挑骨头,不是在指责它不好。 ...
优雅代码汇总篇 一些随机抽取的案例 案例1(没有必要的hash浪费) 案例2 案例3(if内容体,任何时候都加上大括号) 案例4(来一段复杂的)
优雅代码汇总篇 不是想说this的用法特点,而是想说对私有方法调用时,希望可以加上this关键字。有助于后期代码的阅读。当然,这只是我的个人习惯和观点。说说为什么,来看看代码...