摘要: 一、安装(单机模式、集群模式、伪集群模式) 1:安装JDK 2:解压zk压缩包 3:在conf目录下创建zoo.cfg配置文件。 设置超时时间,快照目录,事务日志文件目录,对外端口,服务IP 4:启动命令(bin目录下): sh zkServer.sh start 客户端连接:sh zkCli.sh 阅读全文
posted @ 2018-03-10 14:38 老人与JAVA 阅读(206) 评论(1) 推荐(0)
摘要: 一、概述 zookeeper主要分为:文件系统和通知机制。 Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 Zookeeper 作为一个分布式的 阅读全文
posted @ 2018-03-10 13:48 老人与JAVA 阅读(340) 评论(0) 推荐(0)
摘要: 外部临时表: 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话不可见,直到临时表被删除)。 内部临时表: 内部临时表是一种特殊轻 阅读全文
posted @ 2018-03-10 11:44 老人与JAVA 阅读(6730) 评论(1) 推荐(0)
摘要: 10 避免活跃性 在安全性与活跃性之间通常存在着某种制衡。例如加锁导致死锁,或者使用线程池和信号量来限制对资源的使用,但这些被限制的行为可能会导致资源死锁。、 10.1 死锁 当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么它们将永远被阻塞。 10.1.1 锁顺序死锁 如果用固定的顺序来获取锁,就不会发生死锁。 10.1.2动态的锁顺序死锁解决方案 其中一个线程... 阅读全文
posted @ 2018-03-10 11:15 老人与JAVA 阅读(221) 评论(0) 推荐(0)
摘要: 7 取消与关闭 7.1.5通过Future来实现取消 Future.get抛出异常,当你知道不在需要这个结果,可以调用Future.caneel来取消任务。 7.1.6 处理不可中断的阻塞(非标准的取消) 在Java库中,许多可阻塞的方法都是通过提前返回或者抛出InterruptedException来响应中断请求的,然而,并非所有的可阻塞方法或者阻塞机制都能响应中断;如果一个线程由于执行... 阅读全文
posted @ 2018-03-10 11:14 老人与JAVA 阅读(259) 评论(0) 推荐(0)
摘要: 5 基础构建模块 Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类(Synchronizer)。本章将介绍其中一些最有用的并发构建模块。 5.1同步容器类 同步容器类包括Vector和Hashtable,二者是早期JDK的一部分,此外还包括在JDK 1.2 中添加的一些功能相似的类,这些同步的封装器类是由Collect... 阅读全文
posted @ 2018-03-10 11:13 老人与JAVA 阅读(539) 评论(0) 推荐(0)
摘要: 6 任务执行 大多数并发应用程序都是围绕"任务执行(Task Execution)"来构造的。理想情况下,各个任务之间是相互独立的:任务并不依赖于其他任务的状态、结果或边界效应。当负荷过载时,应用程序的性能应该是逐渐降低,而不是直接失败。所以应该选择清晰的任务边界以及明确的任务执行策略。 A: 找出清晰的任务边界 大多数服务器应用程序都提供了一种自然的任务边界选择方式:以独立的客户请求为边... 阅读全文
posted @ 2018-03-10 11:11 老人与JAVA 阅读(429) 评论(0) 推荐(0)
摘要: 8 线程池 8.1 如何解决任务和执行策略之间的耦合性问题? 8.1.1任务与策略存在哪几种耦合性? a:依赖性任务 如果提交给线程池的任务需要依赖其他的任务,那么就隐含地给执行策略带来了约束,此时必须小心地维持这些执行策略以避免产生活跃性问题。 b:使用线程封闭机制的任务 任务要求其执行所,在的Executo:是单线程的。如果将Executor从单线程环境改为线程池环境,那么将会失去线程安全性。... 阅读全文
posted @ 2018-03-10 11:04 老人与JAVA 阅读(252) 评论(0) 推荐(0)
摘要: 4 对象的组合 组合模式能够使一个类更容易成为线程安全的,并且在维护这些类时不会无意中破坏类的安全性保证。 4.1设计线程安全的类 设计线程安全类的三个基本要素: A: 找出构成对象状态的祈有变童。 B: 找出钓束状态变量的不变性条件 C: 建立时象状态的并发访问管理策略 例如,LinkedList的状态就包括该链表中所有节点对象的状态。 4.1.1收集同步需求 4.1.2 依赖状态的操作 类... 阅读全文
posted @ 2018-03-10 11:02 老人与JAVA 阅读(513) 评论(0) 推荐(0)
摘要: 3 对象的共享 3.1 可见性 我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且希望确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。因此就需要通过显式的同步或者类库中内置的同步来保证对象被安全地发布。 3.1.1 失效数据 3.1.2 非原子的64位操作 JVM允许将64位的读操作或写操作分解为两个32位的操作。当读取一个非volatile类型的long变... 阅读全文
posted @ 2018-03-10 11:00 老人与JAVA 阅读(283) 评论(0) 推荐(0)
摘要: 2 线程安全 核心就是在访问对象的可变状态时,进行正确的管理。 2.1 对象及状态 对象的状态(也可理解为属性)是指存储在状态变量(例如实例或静态域)中的数据。对象的状态可能包括其他依赖对象的域。例如,某个HashMap的状态不仅存储在HashMap对象本身,还包含集合里面存储的对象。 如何安全地访问可变状态的变量? A: 不在多个线程之间共享(定义为私有) B:定义为final C: 使用同步 ... 阅读全文
posted @ 2018-03-10 10:58 老人与JAVA 阅读(448) 评论(0) 推荐(0)
摘要: 一、jar包管理(仓库) 最佳实践: 1:排除依赖 pom中依赖了某个第三方API,此API又依赖其它API,有可能出问题。(必须申明排除该第三方依赖) Spring-core又隐式的依赖了commons-logging,而quartz又隐式依赖了slf4j,导致log4j里面的mybatis的sq 阅读全文
posted @ 2018-03-10 10:38 老人与JAVA 阅读(1151) 评论(0) 推荐(0)