`
臻是二哥
  • 浏览: 184244 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论
文章列表

DelayQueue

    博客分类:
  • JAVA
DelayQueue就是一个优先级队列,他的优先级按照里面元素的延迟时间来决定,延迟时间小的(也就是时间先到的)放在队列头(这与add的顺序无关),与元素本身的属性值有关。 DelayQueue中的元素必须是实现了Delayed接口的,而Delayed接口又是Comparable的子接口,因此DelayQueue中的元素必须覆盖Delayed接口的getDelay(TimeUnit)方法和Comparable的compareTo()方法,其实两个方法的实现都很简单。 前者: public long getDelay(TimeUnit tu) {   return time.System.cu ...

java中的map

    博客分类:
  • JAVA
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它 ...
用fourinone实现的基于整型读写的上亿排序 import com.fourinone.BeanContext; public class ParkServerDemo { public static void main(String[] args) { BeanContext.startPark(); } } import com.fourinone.*; import java.util.*; import com.fourinone.ArrayAdapter.*; //public class Worker extends MigrantW ...
我们知道JMS规范提供了两种经典的消息服务模式:队列模式和主题订阅模式。我们看看fourinone是如何实现着两种模式的。 队列模式,我们将domain视为一个队列,domain中的每个节点看做一个队列消息,通过检查domain的变化来获取队列消息。 消息发送代码: import com.fourinone.*; import java.io.Serializable; public class Sender { public static void send(String queue,Object obj) { ParkLocal pl=BeanContext.get ...
在《大规模分布式系统架构与设计实战笔记》的第四章,提到了分布式缓存的负载均衡问题。 对于分布时的负载均衡问题,很多人会想到一致性算法,一致性算法提出了一个环的思想,用集群中的多个节点将环分成了好多段, ...
对于一个集群来讲,其中无非有两种角色:领导者和普通服务器,而处于实际考虑,通常领导者有主设备和从设备(当主设备宕机时,从设备担当领导者); 在集群中,有一下有几个问题:1主领导者宕机,备用机器顶上 2领导者知道集群中有哪些服务器(要求服务器启东时候到领导者那注册) 3服务器宕机后,集群中的其他服务器要知道。 基于以上三点: 基于fourinone的集群管理例子如下: 领导者代码 public class ParkMasterSlave { public static void main(String [] args) { String [][] master ...
当多个分布式应用都想使用同一个分布式系统的时候,我们使用分布式锁机制来解决。在fourinone框架中,分布式锁机制的实现也十分简单: 每个分布式应用都在fourinone框架中建立几个节点,节点的域名为“lock”,节点名为“应用的名字”,节点值为“应用的名字”,比如现在有三个分布式应用a,b,c:他们在fourinone框架中注册后lock域的情况如下 lock:    a:a    b:b    c:c 而每个分布式应用在建立完节点之后就不断地轮询lock域中的第一个节点,如果该节点的值与应用的名字相同,就获得该分布式锁(即获得分布式系统的使用权),待使用完毕后,删除当前节点。 按照此 ...
千峰老师的《大规模分布式系统架构与设计实战》的第三章讲的是分布式协调的实现,在工头-职介所-工人的模型中,分布式协调实际上就是职介所相关的一些内容,包括领导(职介所)怎么产生的,当前领导宕机了怎么办,领导如何管理各个员工(工人)等等一系列问题。 在fourinone中,选取领导并不像paxos算法一样实行基于抢占的少数服从多数的策略,而是一种谦让的策略,相当领导的人在发出当领导的申请之前先问问别人想不想当领导,如果想,他自己就先忍着,如果没有其他人他才出头。这样就避免了冲突。 当领导确定后,有领导统一发号施令,同步各个机器。 而领导又是如何同步各个机器的呢?fourinone框架通过par ...
在千峰老师的《大规模分布式系统架构与设计实战》一书中的有一个从赌钱游戏看PageRank算法,以下简称PR算法 首先我们来说下PR算法,PR(A)=(PR(B)/L(B)+PR(C)/L(C)+...+PR(X)/L(X))*q+1-q 其中q为逃脱因子,暂且不去理解它(取q=1),此时有公式PR(A)=PR(B)/L(B)+PR(C)/L(C)+...+PR(X)/L(X),说白了网页A的PR值等于他的所有入站链接的PR值得和。 但是网页的PR值我们没法孤立出来进行求算,你想啊,比如现在我想算网页A的PR值,那么我得知道链接到A的那些网页的PR值以及他们的L值,而要想知道这些网页的PR和L ...
好久没有写博客了,这段时间一直在读一本书《大规模分布式系统架构与设计实战》,这是淘宝千峰老师的作品,讲了一个分布式框架fourinone,我是吧这本书作为我走向分布式的启蒙老师的。 fourinone是一个分布式框架,它主要就是一种“包工头-职介所-工人”的结构,下面我们来说书中的一个例子,使用“并行计算实现上亿排序”。 对于上百G甚至上T的数据,这种数据量是巨大的,通常这些数据也无法在一台计算机上保存,这就使得数据本身就会分布在多个计算机上,即分布式存储。 现在假设我们有50G的无序数据等待排序,这50G的数据都是10万以内的数据。 当使用分布式计算时,首先我们获得10台计算机,这样每台计算 ...

linux学习

http://www.cnblogs.com/xiaoluo501395377/archive/2013/04.html 此博客写的很好,推荐给大家
第一步:查看Linux自带的JDK是否已安装 (卸载centOS已安装的1.4) 安装好的CentOS会自带OpenJdk,用命令 java -version ,会有下面的信息: java version "1.6.0" OpenJDK Runtime Environment (build 1.6.0-b09) OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode) 最好还是先卸载掉openjdk,在安装sun公司的jdk. 先查看 rpm -qa | grep java 显示如下信息: java-1.4.2-gcj-co ...

Java中的AOP

    博客分类:
  • JAVA
AOP编程是面向切面编程,说白了,一段代码的执行归根结底是方法的执行,当一个系统写好之后,往往需要新的功能或者添加一些新的操作,这些新的功能又是一些方法,这些方法需要嵌入到原来的系统中,让他们在系统原有方法的执行前或者后等等位置执行,这个时候,有两种方案,修改原来的代码,违背了OCP,方案二,使用AOP; AOP编程就是在程序的执行过程中找到一些切入点,嵌入一些新的方法,以改变程序原来的执行过程,宏观上看,程序的功能变强大了。 Java语言中AOP是用JDK动态代理技术来实现的:代码 import java.lang.reflect.InvocationHandler; import ...

JAVA IO常用总结

    博客分类:
  • JAVA
最近复习java,于是就对java的IO进行一个总结: 在Java中,存在着流这种概念,所谓流,可以理解为数据的流动(实际上为字节的流动)。在java中,存在字节流与字符流,但实际上,字符流在传递过程中也是传递的字节流,字节流与字符流唯一的区别是:字符流使用了缓冲区,而字节流没用使用缓冲区。 流的另外一种分类方法是可以分为节点流(node stream)与过滤流(filter) 在理解节点流时,牢记流是在“程序内存”和“目标地址”之间流动的,其中,流进程序内存的叫输入流,流出程序内存的叫输出流。 而对于过滤流,就是那些封装流的流。下面我们来看看这些流: OutputStream类 ...
前几天,小编写了一个关于ssh框架的系列博客,讲述了一下如何利用ssh框架进行快速的发发,最近在看设计模式的时候突然有所感悟,于是想记录下来: 单一职责原则(SRP):在编程的过程中,对每个类要做到高内聚,低耦合,最好是一个类制作一件事情,在前面的ssh应用博客中,可以看到,有其事struts框架,每个action都会对应一个action的类,这样的每个类仅仅做一件事使得系统的结构更加清晰。同时降低了耦合。 开发封闭原则(OCP):使用SSH框架开发几个系统之后,你会发现,对于每个系统的拓展嗾使极其方便的,要增加一个新的功能,仅仅需要添加几个极少的类,有些时候DAO以下甚至不用修改,这一原则 ...
Global site tag (gtag.js) - Google Analytics