3 光与热

尚未进行身份认证

暂无相关描述

等级
TA的排名 1w+

负载均衡之一致性哈希算法

说到负载均衡的hash算法,自然会联想起如下这样的算法hash(object)%nodeTotal而在集群中,机器的动态上下线是常见的情况,如果集群是无状态的,那么上述的算法没有问题.但是如果是缓存之类的集群,节点的动态上下线会导致几乎所有的key的重新映射,这样造成的影响是数据错乱,相同备份的数据同时存在于集群中的多个节点,造成内存空间的浪费为了解决上述的问题,一致性哈希算法就被...

2018-03-21 21:12:05

负载均衡之轮询策略

轮询算法是最简单的一种负载均衡算法,它的原理是将用户的请求轮流分配给内部的服务器,并且轮询算法并不需要记录当前所有连接的状态,所以它是一种无状态的调度.简单轮询策略下面是简单轮询算法的实现publicclassRouteRoundimplementsLoadBalance{privateintcount=0;@Overridep...

2018-03-19 21:26:14

WeakHashMap

WeakHashMap,此种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值,见实例:此例子中声明了两个Map对象,一个是HashMap,一个是WeakHashMap,同时向两个map中放入a、b两个对象,当HashMap remove掉a并且将a、b都指向nu...

2018-03-09 10:34:24

Reactor与Proactor模型

I/O模型在文章《unix网络编程》(12)五种I/O模型中提到了五种I/O模型,其中前四种:阻塞模型、非阻塞模型、信号驱动模型、I/O复用模型都是同步模型;还有一种是异步模型。Reactor模型       Reactor模式是处理并发I/O...

2018-03-06 17:05:19

IdentityHashMap

在HashMap中,对于两个键值对key1-value1,key2-value2,在key相同(key1.equals(key2)==true)的情况下value1与value2不能共存,有没有一种数据结构使value1与value2共存呢?有,那就是IdentityHashMap.IdentityHashMap在比较键时候不是使用equals方法而是比较两个对象的引用,如果对象引用不同即使对象e...

2018-03-03 21:18:31

netty参数配置

通用参数说明netty参数说明CONNECT_TIMEOUT_MILLIS连接超时毫秒数,默认值30000毫秒即30秒。MAX_MESSAGES_PER_READ一次Loop读取的最大消息数,对于ServerChannel或者NioByteChannel,默认值为16,其他Channel默认值为1。默认值这样设置,是因为:ServerChann...

2018-02-25 23:26:11

Maven常用配置

1.统一项目字符集<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>2.dependencyscope配置compile,缺省值,适用于所有阶段,会随着项目一起发布。prov...

2018-02-12 22:43:45

GC - 四种引用

Java中一共有4种类型的引用:StrongReference、SoftReference、WeakReference以及PhantomReference这4种类型的引用与GC有着密切的关系,让我们逐一来看它们的定义和使用场景:1.StrongReferenceStrongReference是Java的默认引用实现,它会尽可能长时间的存活...

2018-02-11 21:28:15

guava - EventBus源码解析

订阅发布这种设计模式是一种最常见不过的设计模式.而EventBus是对Publisher和Subscriber的一种实现下面是EventBus的一个DemopublicclassEvent{/***事件总线使用该方法向监听者发送事件**@parammessage*/@Subscribepublic...

2018-02-10 23:03:26

观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象,如果这个主题在状态上发生了变化,会通知所有的观察者对象,让他们自动更新自己观察者模式有如下四个角色1.被观察接口2.具体的被观察者3.观察者接口4.具体的观察者接口类图关系如下原生观察者模式通过程序实例理解观察者模式被观察者接口包括注册观察者,移除观察者,通知观察者p...

2018-02-09 23:11:31

Runtime

java的runtime类是一个封装了JVM进程的类,每一个java程序实际上都是启动了一个JVM进程.每一个程序都对应一个Runtime实例,实例是由JVM初始化的,我们可以利用java的Runtime类获取进程的相关信息,启动其它进程,关闭当前进程等操作实例化runtime类Runtime类在整个jvm中只存在一个Runtime对象,通过Runtime类的静态方法进行实例化操作而不...

2018-02-08 23:06:38

避免NPE

在java开发中中NPE异常是常见异常,在阿里java开发手册中就明确强调防止NPE是调用者的责任是程序员基本修养,本篇博客讲解利用一些小技巧避免NPE1.1equals方法publicvoidequals(){//代表未知的对象,可能会是NULL也可能不是NULLObjectunKnowObject=null;//这样某些情况下可能会抛出

2018-02-06 22:35:22

EnumMap

EnumMap是Map接口的一种实现,专门用于枚举类型的键,所有枚举的键必须来自同一个枚举EnumMap不允许键为空,允许值为空EnumMap成员变量privatefinalClasskeyType;privatetransientK[]keyUniverse;privatetransientObject[]vals;p

2018-02-05 22:40:46

java transient关键字

java对象在实现了Serilizable接口后这个对象就可以被序列化,但是java的这种序列化机制会将这个类的所有属性和方法都序列化.有时候我们的一些敏感信息比如密码并不想序列化传输给对方,这个时候transient关键字就派上用场了,如果一个类的变量加上了transient关键字那么这个字段就不会被序列化下面这个例子我们利用transient避免User序列化过程中密码字段的序列化

2018-02-04 22:23:50

Builder内部类

今天在看当当网的开源项目分布式任务调度框架源码的时候,感到很奇怪,代码如下@AllArgsConstructor(access=AccessLevel.PRIVATE)publicfinalclassLiteJobConfigurationimplementsJobRootConfiguration{privatefinalJobTypeConfigura

2018-01-17 19:53:50

idea 链式调用模板

#set($paramName=$helper.getParamName($field,$project))#if($field.modifierStatic)static###end$class.nameset$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifi

2018-01-17 18:52:42

Java ClassLoader机制

一、什么是ClassLoader?        大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则

2018-01-07 18:22:58

Fork Join框架

1.1核心思想Fork/Join框架是Java7提供了的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架,其实现思想与MapReduce有异曲同工之妙。Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+…+10000,可以分割成10个子任务,每个子任务分别

2018-01-06 20:44:33

IOC - 方法注入

当有两个beanA,B.其中A的内部会调用B,A是单例的,而A每次调用到B的时候都需要重新实例化B,为了解决这个需求难道我们得放弃Spring容器?并不用,Spring可以通过方法注入来实现动态改变A内的BSpring的方法注入依赖于CGLIB,需要用到方法注入的方法必须满足以下声明规范public|protected>[abstract]return-type>theMeth

2018-01-06 15:12:38

责任链模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(ChainofResponsibility)模式的:  责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责

2018-01-06 14:14:27

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!