高并发基础
文章平均质量分 92
hongye301
时间太快,等一等。
展开
-
BIO、NIO、IO的三种机制
一、BIO-blocking IO:同步阻塞式IO在执行accept、 connect、 read、 write这四步操作的过程中都会产生阻塞。服务端:public static void main(String[] args) throws Exception { //1.创建服务端 ServerSocket ss = new ServerSocket(); //2.绑定监听指定端口...原创 2018-12-28 00:05:09 · 645 阅读 · 0 评论 -
SSH原理图文详解
原理: 非对称加密实现绵密登录整个工作流程: 有两个台服务器:服务器a和服务器b1、a生成自己的公钥私钥对(ssh-keygen命令)。2、将本机的公钥发给b服务器(ssh-copy-id b命令),注意这次是需要通过输入密码验证用户。3、b服务器将主机名a和对应的公钥存储在自己的known_hosts文件中。4、a下次连接b时(ssh b),发出免密连接的请求,b收到a的免密...原创 2019-01-02 22:50:42 · 586 阅读 · 0 评论 -
CAS无锁算法
` 锁是用来做并发最简单的方法,当然其代价也是最高的。 要实现无锁的非阻塞算法有多种实现方法,其中,CAS(比较与交换,compare and swop)就是其中一种。CAS在大多数处理器架构中都支持调用,组要注意的是:不同的处理器CAS对应的CPU指令也有差异。· CAS的语义:我认为V的值应该是A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际是多少。也就是:CAS有三个...原创 2019-01-18 22:31:28 · 1445 阅读 · 3 评论 -
Concurrent包HashMap、HashTable、ConcurrentMap
ConcurrentMap:并发映射HashMap` 基于hash表进行存储的映射。异步式线程不安全的映射—没有同步锁机制,多个线程访问的时候会有数据不明确的问题。` 虽然不安全,但是效率高。` 底层以数组+链表结构存储。` 底层数组初始大小:16HashTable` 同步式线程安全的映射。对外提供的方法大部分都是同步方法。如果同步方法是非静态,那么锁对象是this;如果同...原创 2019-01-06 23:40:31 · 195 阅读 · 0 评论 -
Zookeeper的观察者Observer
观察者Observer功能: 功能一就如同他的名字,只是一个观察者,对leader和follower的工作进行观察监听。 功能二就是动态扩展zookeeper集群,而又不影响集群的性能,接收客户端连接,执行leader更新系统状态的命令,不影响集群的性能是因为观察者节点不参与投票,即使是观察者节点宕机了,对集群的运行状态没有影响。使用场景: 网络状态不稳定的情况 Zookeep...原创 2019-01-06 23:25:25 · 4912 阅读 · 0 评论 -
Zookeeper搭建
笔者自己使用的XShell连接了三台服务器:zkp1、zkp2、zkp3。运行环境是linux。第一部分:下载zookeeper安装包-----(http://zookeeper.apache.org)第二部分:安装zookeeperZookeeper本身是基于java开发的,需要jdk支持。1、安装jdk(1)下载jdk安装包,注意是linux版本。(2)上传到linux中进行解...原创 2019-01-01 23:57:54 · 228 阅读 · 0 评论 -
Zookeeper概述、特点、原理
一、Zookeeper1、分布式环境下数据一致的基本问题· 分布式环境下,为了保证数据的可靠或者分布式的处理没数据往往具有多个副本,而当数据发生变化时,如何保证数据一致,这是分布式环境下数据分布式存储和处理的最基本的问题之一。2、Zookeeper概述· Zookeeper能够在分布式环境下实现数据的一致。他就是一个工具,利用这一特性,可以实现集群中的分布式协调服务。· 所谓的分布式协调...原创 2019-01-01 19:19:47 · 543 阅读 · 0 评论 -
序列化/反序列化Java自带自带序列化反序列化机制
一、序列化/反序列化概念` java是面向对象的语言,对象一般是存活在内存中动态变化的数据。有时候为了保存和传输,需要将内存中存活的动态变化的对象数据转化成可以固定的字节信息。序列化技术可以实现。将已经固定的对象的字节信息转换回内存对象的过程就是反序列化的过程。二、序列化/反序列化应用场景1、将对象序列化后保存,即持久化` 将内存中的对象信息序列化后保存到外部存储设备中。这个过程也称之为将...原创 2019-01-01 18:53:26 · 401 阅读 · 0 评论 -
Concurrent包第三部分
一、Lock和sychronized代码块的主要不同点lock和syncronized的区别(1)lock本身就是锁,不需要syncronized寻找指定锁对象;(2)lock可以配置公平策略,实现线程按照先后顺序获取锁,而synchronized代码块不能够保证进入访问等待的线程的先后顺序,它对于代码块的访问等待设置超时时间是不行的;(3)lock提供了trylock方法,可以试图获取锁...原创 2018-12-31 20:02:56 · 127 阅读 · 0 评论 -
Concurrent包第二部分
一、CyclicBarrier栅栏1、栅栏概述 Concurrent包中提供的一种并发构造,可以实现多个并发的线程在执行过程中,在某一个节点进行阻塞等待,直到所有的线程都到达了指定位置后,一起放开阻塞继续运行的效果。例子:赛马。2、APICyclicBarrier(int parties):构造方法,接收一个初始值,指定了栅栏要等待的线程的数量。通过创建一个新的 CyclicBarri...原创 2018-12-31 19:35:46 · 149 阅读 · 0 评论 -
Concurrent包第一部分
**一、Concurrent概述** Concurrent包是jdk5中开始提供的一套并发编程包,其中包含了大量和多线程开发相关的工具类,大大的简化了java的多线程开发,在高并发及分布式场景下应用广泛。Concurrent是java.util下的包。二、BlockingQueue 阻塞式队列1、概述 阻塞式队列是一种队列数据结构,和其他队列比起来,多了阻塞机制,从而可以在多个线程...原创 2018-12-28 23:51:11 · 433 阅读 · 0 评论 -
高并发基础之Zookeeper基本结构、命令、节点类型及信息05
一、基本结构1、根节点是/2、Zookeeper是一个树状结构—Znode树3、每一个Zookeeper节点是Znode节点4、每一个Zookeeper节点都必须存储数据5、在Zookeeper中所有的路径计算都是从根路径开始6、在Zookeeper中,任意一个持久节点都可以挂载子节点,临时节点没有子节点7、Znode树是维系在内存中,为了快速查询8、Zookeeper不适合存储大...原创 2019-01-02 23:17:16 · 274 阅读 · 0 评论