自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

2019-04-11 10:01:51

阅读数 1158

评论数 0

原创 学习JDK源码:编程习惯和设计模式

JDK代码的可取之处。

2013-07-26 17:01:10

阅读数 4054

评论数 0

原创 学习JDK源码:可进一步优化的代码

JDK代码的问题。

2013-07-26 16:59:39

阅读数 4412

评论数 5

原创 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...

2019-12-25 15:50:15

阅读数 21

评论数 0

原创 Redis 知识图谱

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

2019-05-01 23:16:05

阅读数 396

评论数 1

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

String#substring()在Java6和Java7中的实现是不一样的。这是因为Java6的实现可能导致内存问题,所以Java7中为了改善这个问题修改了实现方式。那么Java7中的实现就真的合理吗? 首先让我们来猜测一下,Java是如何实现substring功能的。由于String是不可变...

2014-12-23 17:31:12

阅读数 2892

评论数 0

原创 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 w...

2014-09-18 17:28:12

阅读数 3281

评论数 0

原创 【Guava】Joiner、Splitter源码

Joiner 作用:将多个对象拼接成一个字符串 示例         Joiner joiner = Joiner.on(";").skipNulls();         return joiner.join(bpeApplication, pipelin...

2013-12-27 15:57:59

阅读数 4888

评论数 0

原创 【Guava的用法】2. collection

创建List、Map Before: MapString, MapLong, ListString>>> map =  new  HashMapString, MapLong,ListString>>>();     After:(JD...

2013-12-27 15:56:52

阅读数 8050

评论数 0

原创 【Guava的用法】1. base

Joiner Guava中Joiner的用法: int [] numbers = {  1 ,  2 ,  3 ,  4 ,  5  };   String numbersAsString = Joiner.on( ";" ).join(Ints.a...

2013-12-27 15:54:55

阅读数 3367

评论数 0

原创 ClassLoader源码分析

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

2013-12-06 10:22:00

阅读数 12087

评论数 1

原创 Java集合类的UML类图

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

2013-11-26 15:41:27

阅读数 13548

评论数 4

原创 【设计模式】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

阅读数 3214

评论数 0

原创 【OSGi】Service

服务 服务就是:为别人完成的工作。目的:是让别人为你工作,而不是试图自己做一切事情。 和方法调用的区别:服务是指提供者及其使用者之间的一个契约,使用者不关心服务的具体实现,甚至不关心是谁提供的,只要遵守约定的契约即可。 面向服务的设计方式鼓励用即插即用的方式来进行软件开发,这意味着在开发、测试...

2013-11-17 09:56:02

阅读数 13009

评论数 5

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

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

2013-11-07 10:45:10

阅读数 4185

评论数 0

原创 ThreadLocal的正确用法

ThreaLocal的JDK文档中说明:ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread。如果我们希望通过某个类将状态(例如...

2013-11-06 12:36:50

阅读数 49049

评论数 1

原创 HashMap实现原理分析

HashMap其实也是一个线性的数组实现的,所以可以理解为其存储数据的容器就是一个线性数组。这可能让我们很不解,一个线性的数组怎么实现按键值对来存取数据呢?这里HashMap有做一些处理。   首先HashMap里面实现一个静态内部类Entry,其重要的属性有 key , value, next...

2013-11-05 15:23:28

阅读数 376522

评论数 140

翻译 【NIO】2. Selector

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

2013-11-05 15:18:08

阅读数 4789

评论数 0

翻译 【NIO】1. Channel、Buffer

基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。 Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是...

2013-11-05 15:15:36

阅读数 5174

评论数 0

原创 【OSGi】Require-Bundle与Import-Package

Require-Bundle的作用 Require-Bundle的缺点 1、不知道究竟导入了哪些包 2、导出包的bundle重构后,会影响导入bundle 3、导致导入大量无用的包 为什么引入Require-Bundle? Require-Bundle的作用 Another ...

2013-10-27 20:12:48

阅读数 11485

评论数 0

原创 ThreadLocal的误用可能会导致OutOfMemoryError

推荐Java Code Geeks上的两篇文章: When and how to use a ThreadLocal http://www.javacodegeeks.com/2013/10/when-and-how-to-use-a-threadlocal.html   ...

2013-10-27 12:13:50

阅读数 6338

评论数 1

转载 Javascript 作用域和变量提升

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

2013-10-27 09:06:48

阅读数 2730

评论数 0

原创 【OSGi】OSGi类加载流程

OSGi每个模块都有自己独立的classpath。如何实现这一点呢?是因为OSGi采取了不同的类加载机制: OSGi为每个bundle提供一个类加载器,该加载器能够看到bundle Jar文件内部的类和资源; 为了让bundle能互相协作,可以基于依赖关系,从一个bundle类加...

2013-10-19 21:29:37

阅读数 15506

评论数 1

原创 【OSGi】OSGi如何解决Java模块化的不足

为什么说Java缺少对高级模块化的支持?Java确实以面向对象的方式提供了某种程度的模块化,但它从未考虑支持粗粒度的模块化编程。

2013-10-07 12:46:50

阅读数 9484

评论数 2

原创 Promise in AngularJS

What's promise Angular’s event system provides a lot of power to our Angular apps. One of the most powerful features that it enables is automat...

2013-10-07 12:43:50

阅读数 8561

评论数 0

原创 基于Equinox构建OSGi项目

几种OSGi框架 Several independently implemented OSGi frameworks exist today, including four that are available as open source software. Equinox  is th...

2013-10-07 11:07:43

阅读数 2460

评论数 0

原创 【OSGi】OSGi生命周期

OSGi生命周期层有两种不同的作用: 在应用程序外部,定义了对bundle生命周期的相关操作。OSGi生命周期层允许在执行时,从外部安装、启动、更新、停止、卸载不同的bundle,进而定制应用的配置。 在应用程序内部,定义了bundle访问其执行上下文的方式,为bundle提供了...

2013-10-07 10:17:47

阅读数 8452

评论数 2

原创 Firefox启动太慢?用speedyfox!

我的Firefox一直启动很慢,今天发现一款工具:speedyfox,运行之后速度提升显著! 下载: http://www.crystalidea.com/speedyfox 它还能提升chrome、skype的启动速度,是一款很棒的工具!

2013-09-27 09:29:14

阅读数 1834

评论数 0

原创 【OSGi】OSGi与Maven、Eclipse PlugIn的区别

Maven也具有模块化系统的特征;但是它只是一个编译时工具,而不是运行时框架。Maven并不是OSGi的竞争者,而是OSGi的一个补充。 然而Maven并没有解决JAR文件的缺点: 同样使用全局的classpath; 同样不能做到包级别的信息隐藏; 而且pom.xml的格式与OS...

2013-09-16 21:50:48

阅读数 6208

评论数 0

原创 Mixed Content Blocking导致Firefox23 无法显示iframe

前些天遇到了一个神奇的问题:有个网页包含了iframe,之前一直运行良好,但是Firefox升级到最新的23.0版本后,发现iframe内的内容变成空的了!查看元素iframe里只有<html><body></body></html>。其他浏览器都没...

2013-09-14 21:53:59

阅读数 12496

评论数 0

原创 【OSGi】OSGi依赖解析

OSGi框架执行的最重要的任务之一就是自动化管理依赖,也就是bundle依赖解析。OSGi框架的优势之一就是支持并行的多版本。如果导入bundle可以找到多个对应的导出bundle,OSGi如何确定使用哪个导出bundle呢?

2013-08-25 17:00:42

阅读数 4397

评论数 0

原创 【Java线程】volatile的适用场景

Volatile 变量具有 synchronized 的可见性特性,但是不具备原子性。这就是说线程能够自动发现 volatile 变量的最新值。 Volatile 变量可用于提供线程安全,但是只能应用于非常有限的一组用例:多个变量之间或者某个变量的当前值与修改后值之间没有约束。因此,单独使用 v...

2013-08-19 17:32:00

阅读数 28200

评论数 18

原创 【OSGi】2. bundle与模块化

模块层是OSGi框架的最基础层次,是OSGi其他部分的基础。 1、模块 定义: 一个从逻辑上封装实现类的集合,一个基于实现类子集的可选公共API,一个对外部代码依赖关系的集合。 package是Java提供的一种内建的模块化方式,但它有一些限制:http://blog.csdn.net/v...

2013-08-18 18:31:57

阅读数 7911

评论数 0

原创 【Java线程】锁机制:synchronized、Lock、Condition

Lock可以实现synchronized的相同功能,它能以更优雅的方式处理线程同步问题。 与互斥锁定相比,读-写锁定允许对共享数据进行更高级别的并发访问。虽然一次只有一个线程(writer 线程)可以修改共享数据,但在许多情况下,任何数量的线程可以同时读取共享数据(reader 线程) Cond...

2013-08-14 17:15:55

阅读数 92335

评论数 20

原创 【OSGi】OSGi框架的三个层次

网络上很多OSGi的文章上来就Activator实例,看得云里雾里。要想了解OSGi,首先要知道为什么要用OSGi?它有哪些好处? 首先要明确:Java缺少对高级模块化的支持。OSGi服务平台是专门针对Java对模块化支持不足的情况,由OSGi联盟定义的一个行业标准,它引入了一个面向服务的编程模型...

2013-08-04 12:26:48

阅读数 14517

评论数 2

原创 【Java线程】Java线程池ExecutorService

// 创建可以容纳3个线程的线程池 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); // 线程池的大小会根据执行的任务数动态分配 ...

2013-07-30 17:56:14

阅读数 51069

评论数 6

翻译 【Effective Java】Ch4_Class:Item14_在public类中应该使用访问方法而不是public域

public类永远不要暴露其可变的字段。而public类暴露其不可变字段随然是有问题,但危害性要小一些。然而,package-private或者private的嵌套类暴露其字段则是可行的,无论该字段是可变还是非可变。

2013-07-26 16:52:05

阅读数 1539

评论数 0

原创 【Java线程】Callable和Future

Callable和Future一个产生结果,一个拿到结果。 Callable接口类似于Runnable,但是Runnable不会返回结果,而Callable可以返回结果,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值。

2013-07-25 16:54:48

阅读数 12446

评论数 3

原创 【REST】REST和JAX-RS相关知识介绍

REpresentational State Transfer;代表性状态传输、具象状态传输 REST定义了应该如何正确地使用Web标准,例如HTTP和URI。REST并非标准,而是一种开发 Web 应用的架构风格,可以将其理解为一种设计模式。 Java API for RESTful Web S...

2013-07-24 13:31:54

阅读数 22373

评论数 2

翻译 【Effective Java】Ch4_Class:Item13_最小化类及其成员的可访问性

要区别一个模块是否设计良好,最重要的因素是,对于其他模块而言该模块隐藏其内部数据和其他实现细节的程度。设计良好的模块应该隐藏所有实现细节,将API与其实现清晰地隔离开来。这样,模块之间通过他们的API进行通信,而不必知道其他模块的内部工作情况。这个概念被称为信息隐藏(information hid...

2013-07-09 17:57:06

阅读数 1261

评论数 0

提示
确定要删除当前文章?
取消 删除