Dubbo概述Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的方案。它的核心功能包括:#remoting:远程通讯基础,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。#Cluster:服务框架核心,提供基于接口方法的远程过程调用,包括多协议支持,并提供软负载均衡和容错机制的集群支持。#
分类:
其他好文 时间:
2018-11-28 12:34:10
阅读次数:
164
《C语言接口与实现:创建可重用软件的技术》概念清晰、实例详尽,是一本有关设计、实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南。书中提供了大量实例,重在阐述如何用一种与语言无关的方法将接口设计实现独立出来,从而用一种基于接口的设计途径创建可重用的API。《C语言接口与实现:创建 ...
分类:
编程语言 时间:
2018-11-18 23:44:41
阅读次数:
271
Callable接口和FutureTask实现类,是JUC(Java Util Concurrent)包中很重要的两个技术实现,它们使获取多线程运行结果成为可能。它们底层的实现,就是基于接口回调技术。接口回调,许多程序员都耳熟能详,这种技术被广泛应用于异步模块的开发中。它的实现原理并不复杂,但是对初 ...
分类:
其他好文 时间:
2018-11-10 15:15:15
阅读次数:
215
动态代理的总结 1.动态代理分类 我们设计一个应用的场景: 以前的导演剧组找演员的时候,直接到家里找这个演员谈价格就可以让他演戏,但是随着时代的发展,出现了经济公司,签约演员。 现在让演员演出就要直接找经济公司,不能找演员。 1.1基于接口的动态代理 然后我们模拟一个剧组,通过经济公司来找演员,但是 ...
分类:
其他好文 时间:
2018-10-24 17:52:56
阅读次数:
163
以下针对JDK 1.8版本中的 HashMap 进行分析。 概述 哈希表基于 接口的实现。此实现提供了所有可选的映射操作,并且允许键为 ,值也为 。HashMap 除了不支持同步操作以及支持 的键值外,其功能大致等同于 Hashtable。这个类不保证 ...
分类:
编程语言 时间:
2018-10-21 16:49:27
阅读次数:
187
1 核心功能 首先要了解Dubbo提供的三大核心功能: Remoting:远程通讯 提供对多种NIO框架抽象封装,包括“同步转异步”和“请求 响应”模式的信息交换方式。 Cluster: 服务框架 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群 ...
分类:
其他好文 时间:
2018-10-18 20:13:48
阅读次数:
225
HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.
方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的. 这个要求大家习惯基于接口编程,因为返回的并不是HashMap,而是一个Map的实现.
方法二:重新改写了HashMap,具体的可以查看java.util.concurrent.ConcurrentHashMap. 这个方法比方法一有了很大的改进.
下面对这2中实现方法从各个角度进行分析和比较.
实现原理
锁机制的不同
如何得到/释放锁
优缺点
1)实现原理
方法一原理:
通过Collections.synchronizedMap()来封装所有不安全的HashMap的方法,就连toString, hashCode都进行了封装. 封装的关键点有2处,1)使用了经典的synchronized来进行互斥, 2)使用了代理模式new了一个新的类,这个类同样实现了Map接口.
HashMap
分类:
编程语言 时间:
2018-09-13 18:37:48
阅读次数:
210
DHCP原理及配置(华为)目录DHCP原理配置基于接口地址池的DHCP配置基于全局地址池的DHCP配置中继DHCP1、DHCP原理1.1、什么是DHCP?DHCP(DynamicHostConfigurationProtocol)IETF制定的一种Server/Client模式的动态主机配置协议,提供动态分配网络配置参数的机制,并且可以向后兼容BOOTP协议。其中Server/Client都是指一
分类:
其他好文 时间:
2018-09-09 15:07:32
阅读次数:
166
基本概念:IEnumerable:使用的是LINQ to Object方式,它会将AsEnumerable()时对应的所有记录都先加载到内存,然后在此基础上再执行后来的QueryIQeurable(IQuerable<T>):不在内存加载持久数据,因为这家伙只是在组装SQL,(延迟执行) 到你要使用 ...
分类:
编程语言 时间:
2018-09-06 02:28:45
阅读次数:
413
【SPI的设计目标】 面向对象的设计里,模块之间是基于接口编程,模块之间不对实现类进行硬编码。 一旦代码里设计具体的实现类,就违法了可插拔的原则,如果需要替代一种实现,就要修改代码。 为了实现在模块装配的时候,不在模块里面写死代码,就需要一种服务发现机制。 Java spi 就是提供了这样一种机制: ...
分类:
其他好文 时间:
2018-09-05 08:58:11
阅读次数:
153