11 2016 档案

摘要:本文将从系统模型、序列化与协议、客户端工作原理、会话、服务端工作原理以及数据存储等方面来揭示ZooKeeper的技术内幕。 一、系统模型 1.1 数据模型 ZooKeeper的视图结构使用了其特有的“数据节点”概念,我们称之为ZNode。ZNode是ZooKeeper中数据的最小单元,每个ZNode 阅读全文
posted @ 2016-11-30 16:42 飞轩 阅读(1231) 评论(0) 推荐(0)
摘要:ZooKeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布与订阅。另一方面,通过对ZooKeeper中丰富的数据节点类型进行交叉使用,配合Watcher事件通知机制,可以非常方便的构建一系列分布式应用中都会涉及的核心功能,如数据发布/订阅、负载均 阅读全文
posted @ 2016-11-30 16:36 飞轩 阅读(1239) 评论(0) 推荐(0)
摘要:ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如tong'yi统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper并没有直接采用Paxos算法,而是采用了一种被称为ZAB(ZooKeeper Atomic Broadcast)的 阅读全文
posted @ 2016-11-30 16:35 飞轩 阅读(903) 评论(0) 推荐(0)
摘要:本系列为本人读《从Paxos到ZooKeeper》一书的一些读书笔记,仅供学习使用,谢谢。 一、从集中式到分布式 1.1 分布式的定义: 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 一个标准的分布式系统在没有任何业务逻辑约束的情况下,都会有 阅读全文
posted @ 2016-11-30 16:34 飞轩 阅读(774) 评论(0) 推荐(0)
摘要:五、 新类库中的构件 Java SE5的java.util.concurrent引入了大量设计用来解决并发问题的新类。学习使用它们将有助于编写出更加简单而强壮的并发程序。 1. CountDownLatch 他被用来同步一个或多个任务,强制他们等待由其他任务执行的一组操作完成。 你可以向CountD 阅读全文
posted @ 2016-11-24 09:40 飞轩 阅读(562) 评论(0) 推荐(0)
摘要:二、共享受限资源 有了并发就可以同时做多件事情了。但是,两个或多个线程彼此互相干涉的问题也就出现了。如果不防范这种冲突,就可能发生两个线程同时试图访问同一个银行账户,或向同一个打印机打印,改变同一个值等诸如此类的问题。 1. 不正确地访问资源 考虑下面的例子,其中一个任务产生偶数,而其他任务消费这些 阅读全文
posted @ 2016-11-24 09:39 飞轩 阅读(829) 评论(0) 推荐(0)
摘要:三、终结任务 1. 在阻塞时终结 线程状态 一个线程可以处于以下四种状态之一: 1)新建(new):当线程被创建时,他只会短暂的处于这种状态。此时,他已经分配了必须的系统资源,并执行了初始化。此刻线程已经有资格获得CPU时间了,之后调度器将把这个线程转变为可运行zhuang't状态或阻塞状态。 2) 阅读全文
posted @ 2016-11-24 09:39 飞轩 阅读(306) 评论(0) 推荐(0)
摘要:注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。 一、定义注解 注解的定义看起来很像接口的定义。事实上,与其他任何Java接口一样,注解也将会编译成class文件。 除了@符号外,@Test的定义很像一个空的接口。定义注解时,会需要 阅读全文
posted @ 2016-11-24 09:37 飞轩 阅读(233) 评论(0) 推荐(0)
摘要:一、基本的线程机制 并发编程使我们可以将程序划分为多个分离的、独立运行的任务。通过使用多线程机制,这些独立任务中的每一个都将由执行线程来驱动。 线程模型为编程带来了便利,它简化了在单一程序中同时jiao'zhi'zai'yi'qi交织在一起的多个操作的处理。在使用线程时,CPU将轮流给每个任务分配其 阅读全文
posted @ 2016-11-24 09:37 飞轩 阅读(643) 评论(0) 推荐(1)
摘要:应该在以下情况下使用异常: 在恰当的级别处理问题(在知道该如何处理的情况下才捕获异常)。 解决问题并且重新调用产生异常的方法。 进行少许修补,然后绕过异常发生的地方继续执行。 用别的数据进行计算,以代替方法预计会返回的值。 把当前运行环境下能做的事情尽量做完,然后把相同的异常重抛到更高层。 把当前运 阅读全文
posted @ 2016-11-24 09:36 飞轩 阅读(327) 评论(0) 推荐(0)
摘要:一、输入和输出 编程语言的I/O类库中常使用 流 这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象。“流”屏蔽了实际的I/O设备中处理数据的细节。 Java类库中的I/O类分成输入和输出两部分。通过继承,任何自Inputstream或Reader派生而来的类都含有名 阅读全文
posted @ 2016-11-24 09:36 飞轩 阅读(235) 评论(0) 推荐(0)
摘要:1、java 容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1) Collection 。一个独立元素的序列,这些元素都服从一条或多条规则。 List 必须按照插入的顺序保存元素,而 Set 不能有重复元素。 Queue 按照排队规则来确定对象产生的顺序(通常与他们被插入的顺序相同) 阅读全文
posted @ 2016-11-24 09:35 飞轩 阅读(389) 评论(0) 推荐(0)
摘要:“确定接口是理想选择,因而应该总是选择接口而不是具体的类。”这其实是一种诱饵。当然,对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂。 许多人都掉进了这种诱惑的陷阱,只要有可能就去创建接口和工厂。这种逻辑看起来是因为需要使用不同的具体实现,因此总是应该添加这种抽象性。这实际上已经变成了 阅读全文
posted @ 2016-11-24 09:34 飞轩 阅读(205) 评论(0) 推荐(0)
摘要:今天继续读《java 编程思想》,读到了复用类一章,看到总结写的很好,现贴上来,给大家分享。 继承和组合都能从现有类型生成新类型。组合一般是将现有类型作为新类型底层实现的一部分来加以复用,而继承复用的是接口。 在使用继承时,由于导出类具有基类接口,因此它可以向上转型至基类,这对多态来讲至关重要。 尽 阅读全文
posted @ 2016-11-24 09:26 飞轩 阅读(500) 评论(0) 推荐(0)