13 AlphaWang

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 6k+

How to Verify If Resilience4j Circuit Breaker Works

Resilience4j is a widely-used library which inspired by Hystrix, it helps with building fault tolerance distributed systems. We are using its circuit breakder module to prevent a cascade of failures w...

2019-12-25 15:50:15

Redis 知识图谱

原文发表于AlphaWang独立博客:http://alphawang.com/最近梳理了下 Redis 知识图谱,画了个脑图,涵盖了 Redis 数据类型、持久化机制、主从、哨兵、集群、应用及运维;具体见下图:...

2019-05-01 23:16:05

试译Google Dapper:Dapper, a Large-Scale Distributed Systems Tracing Infrastructure

最近在研究分布式链路追踪系统,Google的DAPPER当然是必读的论文了。目前网上能搜到一些中文翻译版,然而读下来感觉翻译比较生硬;这里试着基于前人的成果重新翻译一遍这个论文,权当是个人的学习笔记,如果同时能给其他人带来好处那更好了。如您发现有翻译错误,恳请提交github PR: https://github.com/AlphaWang/alpha-dapper-translation...

2019-04-11 10:01:51

Is the Improvement of String.substring() in Java7 Really Reasonable?

String#substring()在Java6和Java7中的实现是不一样的。这是因为Java6的实现可能导致内存问题,所以Java7中为了改善这个问题修改了实现方式。那么Java7中的实现就真的合理吗?首先让我们来猜测一下,Java是如何实现substring功能的。由于String是不可变的,可能我们会猜测实现机制如下图:user icon​然而,这个图并不完全正确,或者

2014-12-23 17:31:12

Utility Classes Are Evil

A utility class is a class filled with static methods. It is usually used to isolate a "useful" algorithm. However, in an object-oriented world, utility classes are considered a very bad practice.The use of utility classes to be an antipattern. More speci

2014-09-18 17:28:12

【Guava】Joiner、Splitter源码

Joiner作用:将多个对象拼接成一个字符串示例        Joiner joiner = Joiner.on(";").skipNulls();        return joiner.join(bpeApplication, pipeline, deviceName, field);源码  /**   * Returns a

2013-12-27 15:57:59

【Guava的用法】2. collection

创建List、MapBefore:MapString, MapLong, ListString>>> map=  new  HashMapString, MapLong,ListString>>>();   After:(JDK7将实现该功能)MapString, MapLong, ListString>>> map= Maps.newHas

2013-12-27 15:56:52

【Guava的用法】1. base

JoinerGuava中Joiner的用法: int [] numbers = {  1 ,  2 ,  3 ,  4 ,  5  };  String numbersAsString = Joiner.on( ";" ).join(Ints.asList(numbers));   另一种写法: String numbersAsStrin

2013-12-27 15:54:55

ClassLoader源码分析

层次结构和类图ClassLoader层次结构:   UML类图:  sun.misc.Launcher.ExtClassLoader sun.misc.Launcher.AppClassLoader 显式加载类在代码中显式加载某个类,有三种方法:this.getClass().getClassLoader().loadClass()

2013-12-06 10:22:00

Java集合类的UML类图

网上能搜到很多Java集合类的类图,但是感觉都不是非常明晰。于是自己绘制了一份。

2013-11-26 15:41:27

【设计模式】Builder模式

定义Separate the construction of a complex object from its representation so that the same construction process can create different representations.将复杂对象的创建过程与该对象的表示分离开来,以便让同一个创建过程可以创建出不同的表示。类图

2013-11-17 16:26:08

【OSGi】Service

服务服务就是:为别人完成的工作。目的:是让别人为你工作,而不是试图自己做一切事情。和方法调用的区别:服务是指提供者及其使用者之间的一个契约,使用者不关心服务的具体实现,甚至不关心是谁提供的,只要遵守约定的契约即可。面向服务的设计方式鼓励用即插即用的方式来进行软件开发,这意味着在开发、测试、部署、维护过程中有更大的灵活性。接口+依赖注入Java中一般是基于接口编程的,然而除非我们知道具体的接口实现类,否则我们无法创建一个接口实例。传统Java可以通过依赖注入(Dependency Inje

2013-11-17 09:56:02

【Effective Java】Ch4_Class:Item15_使可变性最小化

不可变类是指其实例不可被修改的类。实例中的所有信息都是在创建实例时提供的,并且在对象生命周期内保持不变。JDK中有许多这种不可变类,例如String、基本类型包装类、BigInteger、BigDecimal。不可变类有许多优点:易于设计、易于实现、易于使用。它们更不容易出错,并且更安全。

2013-11-07 10:45:10

ThreadLocal的正确用法

ThreaLocal的JDK文档中说明:ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread。如果我们希望通过某个类将状态(例如用户ID、事务ID)与线程关联起来,那么通常在这个类中定义private static类型的ThreadLocal 实例。

2013-11-06 12:36:50

HashMap实现原理分析

HashMap其实也是一个线性的数组实现的,所以可以理解为其存储数据的容器就是一个线性数组。这可能让我们很不解,一个线性的数组怎么实现按键值对来存取数据呢?这里HashMap有做一些处理。  首先HashMap里面实现一个静态内部类Entry,其重要的属性有 key , value, next,从属性key,value我们就能很明显的看出来Entry就是HashMap键值对实现的一个基础bean,我们上面说到HashMap的基础就是一个线性数组,这个数组就是Entry[],Map里面的内容都保存在Ent

2013-11-05 15:23:28

【NIO】2. Selector

Selector允许单线程处理多个Channel,能够检测一到多个Channel,并能够知晓通道是否为诸如读写事件做好准备。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。

2013-11-05 15:18:08

【NIO】1. Channel、Buffer

基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的; 通道可以异步地读写; 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。

2013-11-05 15:15:36

【OSGi】Require-Bundle与Import-Package

Require-Bundle的作用Require-Bundle的缺点1、不知道究竟导入了哪些包2、导出包的bundle重构后,会影响导入bundle3、导致导入大量无用的包为什么引入Require-Bundle?Require-Bundle的作用Another kind of constraint that can be placed on a bundle i

2013-10-27 20:12:48

ThreadLocal的误用可能会导致OutOfMemoryError

推荐Java Code Geeks上的两篇文章:When and how to use a ThreadLocalhttp://www.javacodegeeks.com/2013/10/when-and-how-to-use-a-threadlocal.html As our readers might already have guessed, I deal w

2013-10-27 12:13:50

Javascript 作用域和变量提升

http://justjavac.com/javascript/2013/06/12/declaration-in-javascript.html  下面的程序是什么结果? var foo = 1;  function bar() {      if (!foo) {          var foo = 10; 

2013-10-27 09:06:48

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。