- 博客(16)
- 收藏
- 关注
原创 clickhouse高可用集群部署
一、集群方案及表引擎选用 目的是搭建一套3分片1副本的高可用集群,因此使用ReplicatedMergeTree + Distributed方案。ReplicatedMergeTree用于复制表,副本间同步数据,Distributed做分布式表,用于数据写入和查询。二、逻辑部署图三、部署细节1、分片设置port端口为ck中配置的tcp_port,用于集群间通信<shard> <internal_replication>true</internal_repl
2021-04-20 12:00:33
1067
原创 【网络编程】NIO三大件及与BIO的区别
NIO三大件及与BIO的区别一、Buffer1、简单demo2、图解属性3、申请堆外内存二、Channel三、Selector四、BIO与NIO的区别一、BufferBuffer本质上就是一块内存区,可以用来写入数据,实现子类有ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer 和 ShortBuffer。1...
2020-04-12 17:41:22
297
原创 【网络编程】网络协议
网络协议一、OSI七层模型二、TCP三、UDP四、TCP/UDP区别一、OSI七层模型二、TCP三次握手模拟打电话场景:A:hello,你能听到么?B:我能听到,你能听到我么?A:能听到开始会话…四次挥手A:我这边完事了B:好的,你稍等下,我这边还有点工作,做完我通知你B:我也完事了,可以下班了A:好的,我们下班吧会话结束…三、UDP四、TCP/UD...
2020-04-12 09:47:26
149
原创 【多线程】并发处理
并发处理一、业务场景二、fork/join框架1、 示意图2、简单demo二、CountDownLatch实现并发效果三、FutureTask1、简单demo2、源码分析3、自己实现一个FutureTask一、业务场景分布式系统中调用多个系统接口,汇总数据处理结果数据处理,结果统计二、fork/join框架1、 示意图递归、分而治之工作窃取2、简单demopublic c...
2020-04-11 23:56:16
652
原创 【容器类】画图理解HashMap、ConcurrentHashMap
画图理解HashMap、ConcurrentHashMap一、HashMap二、ConcurrentHashMap三、绘图工具一、HashMap二、ConcurrentHashMapJDK1.7JDK1.8三、绘图工具ProcessOn
2020-04-11 09:55:57
341
原创 【多线程】AQS共享锁应用之Semaphore/CountDownLatch/CyclicBarrier
共享锁实现一、信号量1、简单示例2、实现原理3、自己实现信号量及AQS共享锁二、CountDownLatch1、示例一、信号量控制多个线程拥有许可数,用于处理并发限流。acquire请求许可,release释放许可1、简单示例public class SemaphoreTest { private int[] info = new int[6];// 下标为桌号,置为使用状态 pub...
2020-04-10 00:01:19
237
原创 【多线程】锁的实现机制及AQS抽象
锁的实现机制及AQS抽象一、自己先实现一个锁二、jdk中的锁实现三、AQS封装及使用一、自己先实现一个锁思路:使用CAS原子操作实现线程安全+使用阻塞队列实现排队等待上代码:public class MyLock implements Lock { volatile AtomicReference<Thread> flag = new AtomicReference<T...
2020-04-09 21:13:33
165
原创 【多线程】线程锁概念及两种实现
线程锁相关知识整理一、相关概念一、相关概念自旋锁对某数据的修改如果失败,不会放弃当前CPU执行权,而是循环使用CAS进行尝试修改直到成功。悲观锁假设会发生并发操作,因此对数据的相关操作从读开始就上锁乐观锁假设不会有并发操作,在修改数据时如果发现数据不一致了,则读取最新数据再尝试进行修改...
2020-04-08 20:54:24
460
1
原创 【多线程】线程安全之可见性分析
线程安全之可见性分析一、JVM内存模型二、可见性问题引入1、CUP缓存2、指令重排优化一、JVM内存模型jvm内存模型是对java程序访问内存进行读写过程的抽象。分为线程共享和线程私有两大块:线程共享:所有线程都能访问的内存数据,随虚拟机或GC创建或销毁线程私有:每个线程都会单独开辟空间,随线程创建和销毁二、可见性问题引入首先我们看一段代码:public class ThreadV...
2020-04-07 15:52:50
178
原创 【多线程】线程安全之原子性CAS实现
线程安全之原子性CAS一、概念二、CAS机制一、概念原子性操作是针对访问共享变量的操作而言的,且是从该操作的执行线程以外的线程来描述的,即多线程环境下。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分(不可中断性),即强调其不可分割性。这种“不可分割”是指访问(读、写)某个共享变量的操作从其执行线程以外的任何线程来看,该操作要么已经...
2020-04-07 15:45:20
266
原创 【多线程】线程池相关知识
类型名称说明接口Executor顶层接口,定义了执行任务的execute方法接口ExecutorService继承Executor接口,扩展了shutdown、submit等方法接口ScheduledExecutorService继承了ExecutorService接口,增加了定时任务相关方法实现类ThreadPoolExecutor标准的线...
2020-04-01 22:36:09
211
原创 【多线程】ThreadLocal为线程创建副本储存独享变量
ThreadLocal为线程创建副本储存独享变量一、线程封闭二、使用ThreadLocal创建线程副本变量一、线程封闭并发编程经常需要共享数据,因此需要涉及到线程间数据同步问题,但有时会有不需要线程间共享的数据,因此就有了线程封闭这个概念。线程封闭即线程所使数据只在线程内部使用,不需要给其他线程使用,不用考虑线程安全问题。二、使用ThreadLocal创建线程副本变量先上代码看下使用Thr...
2020-03-31 22:20:21
652
1
原创 【多线程】线程间通信三种方式代码实现
线程间通信方式一、jdk弃用suspend/resume方式1、正常情况2、同步块中请求同一把锁造成死锁3、执行顺序造成死锁二、wait/notify通信一、jdk弃用suspend/resume方式当前线程调用suspend方法会被挂起,当再次调用resume时恢复执行。但suspend操作不会释放锁,容易造成死锁,且suspend必须在resume方法之前执行,编写程序易出死锁BUG,因此...
2020-03-31 21:27:23
268
原创 【多线程】线程正确结束的两种方式
线程正确结束的两种方式一、jdk弃用stop方法二、interrupt方法三、设置标志位一、jdk弃用stop方法public class Task implements Runnable { private int i = 0; private int j = 0; @Override public void run() { synchronized (this) {//实现一...
2020-03-30 22:09:06
603
原创 【源码学习】ArrayList源码初探(JDK8)
概括动态数组、线程不安全,允许为空一、类结构public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableArrayList实现了List、RandomAccess、Cl...
2019-06-04 21:48:00
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人