- 浏览: 318839 次
- 性别:
- 来自: 西安
最新评论
-
yjq8116:
getString 这个方法你有没有试过,是错误的。这段代码被 ...
ByteBuffer和String的互相转换 -
OnlyForJava:
博主,友情的提醒下,你的Ubuntu写错了
Ubutun上配置hadoop,hbase,zookeeper环境并安装
文章列表
最近在看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解惑》拾遗 上部分
- 博客分类:
- Java解惑
最近准备重新把《Java解惑》看一遍,为了以后可以快速的回忆起书中说到的一些陷阱,我把认为值得记下来的简要记录一下,以备以后看。
毕竟一天是看不完的,所以本博客是持续更新的.......
1. 想通过num%2==1判断num是不是奇数是有问题的,因为对于负奇数会等于-1而不是1。所以可以通过num%2!=0来判断是否为奇数。为了提高性能可以采用(num&1)!=0来判断是否为奇数。
2. 二进制数是无法准确表达所有小数的,比如说0.9。在需要精确答案的地方避免使用float和double;尽量使用int, ...
[置顶] Get和Post的区别
- 博客分类:
- 网络
发现很多面试题都会问道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的单例模式的分析
- 博客分类:
- 并发编程
最近在看三石-道的关于并发的一些博客,在一篇博客中看到了基于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语言中 ...
[置顶] 头插法使得链表逆序
- 博客分类:
- 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)),接下来我通过一个小故事讲述一下适配器模式:
我先讲个故事:狗狗王国有很多的狗狗,鼠鼠王国发生了饥荒,很多鼠鼠都迁移到了狗狗王国,现在狗狗王国的大街上可以看到很多的鼠鼠,为了统一,现在需要一个 ...
[置顶] Fork/Join框架
- 博客分类:
- Java解惑
Doug Lea教授写了一个并行处理的框架,最近偶然看见他的论文。拜读了一下感觉很好。这个框架佳作Fork/Join框架,顾名思义就是先进行fork再join组合结果的意思。下面是这篇论文的地址,英文好的同志可以好好看一下:http://gee.cs.oswego.edu/dl/papers/fj.pdf
如果觉得英文论文有点难懂,我按照我自己的理解写在下面帮助大家理解一下:
首先,关于Fork/Join的大篇幅的介绍就不在这里写了,大家可以百度了解一下。我主要介绍一下用法。
分治的思想在我们计算机圈是很有名的,分治分治 ...