`
文章列表
             最近在看ZooKeeper的源码,在zookeeper中用LeaderZooKeeperServer , FollowerZooKeeperServer和ObserverZooKeeperServer 这三个类来实现三种类型的服务器节点。            他们之间的关系是这样的,我用viso画张图先:        Zookeeper采用了责任链模式处理他们之间的各种请求,接下来我逐一分析他们处理请求的过程:   1.  LeaderZookeeperServer LeaderZookeeperServer处理的过程的文字描述:   1、接收 ...
         首先来了解一下ZooKeeper的数据模型,源代码中会有很多诸如zxid, czxid等这样的变量,那这些到底是什么呢?我在网上查了一些资料,分享一下:          以上举的那两个例子,叫做Zk的节点(znode)的状态信息,可以通过get命令获取,成为Stat:   czxid The zxid of the change that caused this znode to be created. mzxid The zxid of the change that last modified this znode. ctime ...
        最近看了很好的一篇博客:http://www.ibm.com/developerworks/cn/java/l-niosvr/          于是我按照作者给的源码做实验(源码以上传到附件中NIOServer.jar),我模拟发送1000次消息,服务器做出一千次响应。 public static void main(String args[]) { Socket client = null; DataOutputStream out = null; DataInputStream in = null; ...
       最近准备重新把《Java解惑》看一遍,为了以后可以快速的回忆起书中说到的一些陷阱,我把认为值得记下来的简要记录一下,以备以后看。         毕竟一天是看不完的,所以本博客是持续更新的.......        1.  想通过num%2==1判断num是不是奇数是有问题的,因为对于负奇数会等于-1而不是1。所以可以通过num%2!=0来判断是否为奇数。为了提高性能可以采用(num&1)!=0来判断是否为奇数。         2.   二进制数是无法准确表达所有小数的,比如说0.9。在需要精确答案的地方避免使用float和double;尽量使用int, ...
            发现很多面试题都会问道Get和Post的区别,今天来了兴致,好好地研究一下。Get和Post的区别在网上可以搜到很多,首先看一下基本的定义:              Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于
      最近在图书馆看书,偶然发现书架子上一本Java的书《Head First Java》。以前看过《Head First 设计模式》,感觉很不错,令人印象深刻。于是就把这本《Head First Java》借了回来。明天就是五一节了,导师的项目感觉进展比较顺利,早上就偷偷看看这本《Head First Java》,并把一些感觉重要的记录下来,算是拾遗了。       1,接口一定是public的,这一点毋庸置疑。接口的成员变量一定是public static final型的,不管你写不写这些关键字。就算你在接口中这样定义变量:     int num=0;(注意,IDE一定会提示你 ...
         缓冲区即可以用来输入也可以用来输出,这一点和流不同,流只能向一个方向传递数据。           ByteBuffer是Java的NIO中普遍使用的用于接收和发送消息的缓冲区。在读写数据时,它具有内部状态来跟踪缓冲区的当前位置。             1.缓冲区的内部状态:           capacity:      缓冲区的元素总数(不可修改)。           position:       下一个要读写的元素位置(从0开始)。           limit:             第一个不可读写的位置。           mark: ...
        最近在看三石-道的关于并发的一些博客,在一篇博客中看到了基于DCL实现的单例模式:               http://www.molotang.com/articles/407.html         于是在并发编程网上又看了两篇博客,以加深对单例模式的理解。         http://ifeve.com/doublecheckedlocking/         http://ifeve.com/syn-jmm-pre/         首先总结一下实现单例模式的几种办法:   1:最简单,预先初始化了单例的对象,有一定的内存消耗: publi ...
        有一段时间没写博客了,最近在给导师做并行通信的一个程序。在编码过程中发现了一个问题,查阅了很多资料,今天终于知道了原因。         问题描述:                        编写基于NIO服务器的时候,客 ...
         我要说的是一个小问题,感觉写在博客里面比较好。以后看到了可以回忆警示一下。     问题是这样的:在Java中数组之间能不能通过数组名直接赋值,为什么?                              在C中数组之间能不能通过数组名直接赋值,为什么? 我们先来分析C语言中的情况: char arr[3]={'a','b','c'}; char arrB[3]=arr; //错的。 int intArr[3]={1,2,3}; int intArr2[3]=intArr; //错的。       原因很简单,在C语言中 ...
        代码也很简单,空间复杂度为O(1)。 算法描述,pre记录前一个node,current记录当前node,temp存储current的下一个node。这样就形成了一个循环,temp存储current的下一个node之后又current的next指向pre节点;这样就逆序了一个节点。然后pre和current整体后移一位,继续逆序第二个节点。以此类推。 typedef struct Node{ int value; struct Node *next; }node; node* reverseList(node* head) { if(head==NUL ...
定义:       在计算机操作系统中,PV操作是进程管理中的难点。      首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:     P(S):①将信号量S的值减1,即S=S-1;            ②如果S>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。     V(S):①将信号量S的值加1,即S=S+1;            ②如果
           看了之前写的那篇博客,感觉有点长而且不容易懂。所以,打算最近将有关设计模式的一些博客慢慢换掉。好了言归正传,说到装饰模式,是一个对组合完美利用的模式。最经典的例子,莫过于卖咖啡,怎么加糖的问题了。相信大家都知道,就不啰嗦了。            为了灵活的组合出各式各样的咖啡,使用装饰模式最合适不过了。    首先定义一个借口,是所有产品的接口:包括价格和描述   package com.wjy.click; public interface Product { public abstract int price(); public abstract ...
          以前写过一些设计模式的博客,今天回过头看了看,竟然全是代码。还是不太好理解,毕竟这些博客都是从博客园搬家过来的,有些格式都出错了。今天准备重新写一次适配器模式,采用好理解的方式。在书上看了一个例子,感觉讲的很不错,贴出来分享一下:       看看这三张照片应该对适配器模式有一个完整的认识了(我将这三张照片对应的代码上传到附件里了(AdapterPatternA---C)),接下来我通过一个小故事讲述一下适配器模式: 我先讲个故事:狗狗王国有很多的狗狗,鼠鼠王国发生了饥荒,很多鼠鼠都迁移到了狗狗王国,现在狗狗王国的大街上可以看到很多的鼠鼠,为了统一,现在需要一个 ...
           Doug Lea教授写了一个并行处理的框架,最近偶然看见他的论文。拜读了一下感觉很好。这个框架佳作Fork/Join框架,顾名思义就是先进行fork再join组合结果的意思。下面是这篇论文的地址,英文好的同志可以好好看一下:http://gee.cs.oswego.edu/dl/papers/fj.pdf            如果觉得英文论文有点难懂,我按照我自己的理解写在下面帮助大家理解一下:       首先,关于Fork/Join的大篇幅的介绍就不在这里写了,大家可以百度了解一下。我主要介绍一下用法。       分治的思想在我们计算机圈是很有名的,分治分治 ...
Global site tag (gtag.js) - Google Analytics