自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ScorpC的博客

人生是坚持理想的朝圣之路

  • 博客(26)
  • 收藏
  • 关注

原创 Zookeeper:zab算法详解

zab协议是为Zookeeper设计的分布式一致性协议。1. 什么是 ZAB 协议? ZAB 协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。 Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议。 ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持原子广播 .

2021-02-27 10:27:36 801

原创 java并发编程汇总13:经典面试题-生产者消费者问题(三种实现)

直接看你听大佬的写的博客吧:一篇文章,让你彻底弄懂生产者--消费者问题三种实现方式:wait/notify、Condition、BlockingQueue;其中:wait/notify、Condition用法基本一致,要注意的细节就是:Condition一定要finally解锁;BlockingQueue的话就是,由于BlockingQueue内部实现就附加了两个阻塞操作。即当队列已满时,阻塞向队列中插入数据的线程,直至队列中未满;当队列为空时,阻塞从队列中获取数据的线程,直至队列非空时为止。可

2021-02-22 11:06:49 154

原创 java并发编程汇总12:并发工具类:Semaphore,Exchanger,CountDownLatch,CyclicBarrier

参考以前写的博客:详解 Java并发工具类:Semaphore,Exchanger以及:大白话说java并发工具类-CountDownLatch,CyclicBarrier总体概括:1、Semaphore可以理解为信号量,用于控制资源能够被并发访问的线程数量,以保证多个线程能够合理的使用特定资源。Semaphore就相当于一个许可证,线程需要先通过acquire方法获取该许可证,该线程才能继续往下执行,否则只能在该方法出阻塞等待。当执行完业务功能后,需要通过release()方法..

2021-02-22 10:43:57 192

原创 java并发编程汇总11:Future、FutureTask

public interface RunnableFuture<V> extends Runnable, Future<V> { void run();}public class FutureTask<V> implements RunnableFuture<V> { public FutureTask(Callable<V> callable) { if (callable == null) ...

2021-02-22 09:53:18 173

原创 java并发编程汇总10:线程池框架

主要参考以前写的博客:1:深入理解线程池、及线程池的使用2:java.util.concurrent.Executor、ExecutorService、ThreadPoolExecutor、Executors,ThreadFactory框架性总结:1、按顺序:java.util.concurrent.Executor、ExecutorService、ThreadPoolExecutor、Executors,ThreadFactory按以上总结:Executor:执行器接口..

2021-02-21 10:55:11 184

原创 java并发编程汇总9:详解 Condition

详见:详解 Condition的await和signal 等待/通知机制从整体上来看Object的wait和notify/notify是与对象监视器配合完成线程间的等待/通知机制;而Condition与Lock配合完成等待通知机制;前者是java底层级别的,后者是语言级别的,具有更高的可控制性和扩展性。两者除了在使用方式上不同外,在功能特性上还是有很多的不同:Condition能够支持不响应中断,而通过使用Object方式不支持; Condition能够支持多个等待队列(new 多个C

2021-02-19 11:37:50 170

原创 java并发编程汇总8:ReentrantReadWriteLock

总体见:详解 读写锁ReentrantReadWriteLock读写所允许同一时刻被多个读线程访问,但是在写线程访问时,所有的读线程和其他的写线程都会被阻塞。归纳总结:公平性选择:支持非公平性(默认)和公平的锁获取方式,吞吐量还是非公平优于公平; 重入性:支持重入,同一线程读锁获取后能再次获取,同一线程写锁获取之后能够再次获取写锁,同时也能够获取读锁; 锁降级:遵循先获取写锁,然后获取读锁再释放写锁的次序,写锁能够降级成为读锁要想能够彻底的理解读写锁必须能够理解这样几个问题:读写锁是怎

2021-02-19 11:06:17 134

原创 java并发编程汇总7:ReentrantLock

以前的博客:详解 ReentrantLockReentrantLock的源码非常简单,它通过内部类实现了AQS框架,Lock接口的实现仅仅是对AQS的api的简单封装。主要也就是ReentrantLock同步语义的学习:1. 重入性的实现原理;2. 公平锁和非公平锁。(默认实现:非公平锁)一、重入性的实现原理要想支持重入性,就要解决两个问题:1. 在线程获取锁的时候,如果已经获取锁的线程是当前线程的话则直接再次获取成功;2. 由于锁会被获取n次,那么只有锁在被释放同样的.

2021-02-19 10:23:12 122

原创 java并发编程汇总6:locks框架、AQS详解

由于是准备校招面试,这些知识不再是初学了,再按照初学那么整理进度太慢;决定直接看之前写的博客,这里仅做框架式的知识梳理,便于形成架构;若有疏漏的知识点再做详细补充;Java 并发编程(五):详解 Lock、AbstractQueuedSynchronizer一、关于lock:0、concurrent包架构:1、locks包架构、简介:2、lock与synchronized的简单对比3、Lock结构的常用方法:lock()、unlock()、lockInterru.

2021-02-19 09:59:38 168

原创 java并发编程汇总5:ThreadLocal、ThreadLocal内存泄漏问题及解决方法

1. ThreadLocal的简介在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对临界区资源的同步顺序从而解决线程安全的问题,但是这种加锁的方式会让未获取到锁的线程进行阻塞等待,很显然这种方式的时间效率并不是很好。线程安全问题的核心在于:多个线程会对同一个临界区共享资源进行操作,那么,如果每个线程都使用自己的“共享资源”,各自使用各自的,又互相不影响到彼此即让多个线程间达到隔离的状态,这样就不会出现线程安全的问题。事实上,这就是一种“空间换时间”的方案,

2021-02-18 15:24:43 421

原创 java并发编程汇总4:final关键字

之前明明及得做过final关键字的学习笔记啊。。。嗯。。。在本地文档库里找了半天没找到,补上吧,复习一遍~这一块主要是参考:「你听__」你以为你真的了解final吗?学习的,整理的非常好,推荐~仅整理关键部分,部分详细见原博文(尤其第四部分、第六部分)一、final简介final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。即使能够知道final具体的使用方法,我想对final在多线程中存在的重排序问题也很容..

2021-02-17 16:31:09 130

原创 java并发编程汇总3:synchronized、volatile、java对象结构、CAS

参考之前写的博客:Java 并发编程(三):synchronized、volatile 详解java对象结构梳理一下整体结构:1、synchronized关键字(锁:阻塞式、重量级)、对象锁机制monitor;2、CAS(锁:乐观、非阻塞、无锁)、以及存在的三个问题;3、Java对象头结构:包含:MarkWord、Klass Word、数组长度、对象体、对齐字; Klass Word:JVM通过这个指针确定对象是哪个类的实例。 MarkWord中锁的四种状态:无锁01、偏向.

2021-02-17 15:04:51 93

原创 java并发编程汇总2:JMM java内存模型、as-if-serial原则、happens-before原则、volatile关键字

总体介绍,看之前写的博客:Java 并发编程(二):Java内存模型以及 happens-before 规则整体架构也是:JMM介绍、抽象结构,重排序,as-if-serial,happens-before; 同时讲解:volatile关键字;另参考其他博主的优质博客:吃透Java并发四:Java内存模型然后再做一些补充:1、共享变量:再次强调实例字段、静态字段和数组对象;但是不包括局部变量和方法参数,因为后者是线程私有的,不会被共享,自然不存在竞争的问题。2...

2021-02-16 10:15:03 238

原创 java并发编程汇总1:并发、java线程(包括:状态、阻塞唤醒等)

在此将已掌握的并发编程知识进行汇总,形成一个框架、体系,便于以后的查阅。一、并发的概念1.1、什么是并发;通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升; 面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分。1.2、进程与线程;进程:分配和管理资源的基本单位 线程:CPU调度的最小单位,必须依赖进程而存在。 对Java语言来说,Java程序是运行在JVM上面的,每一个JVM其实就是一个进程。所有的资源分配都是基于JVM进程来的.

2021-02-14 15:36:49 261 1

原创 TreeMap详解

本质上:红黑树实现的,所以以此重点掌握红黑树即可;TreeMap与HashMap的比较(各自的优缺点、适用范围):HashMap存储方面的优势:我们知道HashMap,它保证了以O(1)的时间复杂度进行增、删、改、查,从存储角度考虑,这两种数据结构是非常优秀的;HashMap统计方面不是很好:但是HashMap还是有自己的局限性----它不具备统计性能,或者说它的统计性能时间复杂度并不是很好才更准确,所有的统计必须遍历所有Entry,因此时间复杂度为O(N);比如Map的Key.

2021-02-13 15:42:14 7800

原创 TreeSet详解

TreeSet继承结构:public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.SerializableTreeSet继承于AbstractSet 该类提供了Set 接口的骨架实现,以最大限度地减少实现此接口所需的工作量;TreeSet实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与指定目.

2021-02-13 15:09:31 1329

原创 HashSet详解

HashSet继承结构:public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.SerializableHashSet 继承于AbstractSet 该类提供了Set 接口的骨架实现,以最大限度地减少实现此接口所需的工作量。实现Set接口,标志着内部元素是无序的,元素是不可以重复的。实现Cloneable接口,标识着可以它.

2021-02-13 13:59:16 1268 1

原创 LinkedList详解

前言:咦~之前做的笔记实在是找不到了,那就重新梳理一下吧~关于LinkedList的基本内容(get、add、remove)以及与ArrayList的对比,在:ArrayList、LinkedList比较,ArrayList详解 - 总结这里对LinkedList做进一步的补充;LinkedList 继承结构:LinkedList 继承自 AbstractSequentialList 接口,同时了还实现了 Deque, Queue 接口。LinkedList 双向链..

2021-02-13 11:19:52 1212

原创 Java8新特性 - 个人总结

将之前做的java8新特性的笔记搬运到博客上来。目录:一、JDK8数据结构上的变化:【关于HashMap、LinkedHashMap、TreeMap见自己写的博客:】https://blog.csdn.net/ScorpC/article/details/902884671、HashMap: ----------------------------------------------------------------- 1.8之前: 数组+链表,默...

2021-02-12 17:23:01 344 1

原创 设计模式个-人总结

设计模式个人总结。其实在平常学习、做项目中,设计模式有意无意都能碰见;在去年选了《UML》课程后,相当于采用了明确的方式对这些设计模式进行了重新认识;本科其实也有这门课程,但是由于放在了靠后的学期,以及忙于实习、项目等其他事务,还有限于当时的水平,并没有充分认识到这门课的重要性;后来逐渐意识到平常学习、做项目中,处处都能遇到,所以建议可以不用专门去学习,因为核心在于学的是设计模式的思想,在有了系统性的理论知识后,在平常积累即可;这里列举积累的,大概介绍和应用场景:常用的设计模式:

2021-02-12 09:58:51 198

原创 MySQL实战进阶 24 - 主备延迟给读写分离带来的问题

MySQL实战进阶 24 - 主备延迟给读写分离带来的问题。总结:问题:

2021-02-05 15:24:00 87

原创 MySQL实战进阶 23 - 主备切换、GTID

MySQL实战进阶 23 - 主备切换、GTID。总结:问题:

2021-02-04 09:59:46 165

原创 MySQL实战进阶 22 - MySQL备库并行复制能力

MySQL实战进阶 21 - MySQL备库并行复制能力。总结:问题:

2021-02-02 16:55:49 108

原创 MySQL实战进阶 21 - MySQL如何保证高可用(主备延迟、原因、解决方法)

MySQL实战进阶 21 - MySQL如何保证高可用(主备延迟、原因、解决方法)。总结:问题:

2021-02-02 11:19:15 113

原创 MySQL实战进阶 20 - MySQL主备一致实现原理(binlog实现原理)

MySQL实战进阶 20 - MySQL主备一致实现原理。总结:问题:

2021-02-02 09:43:16 96

原创 MySQL实战进阶 19 - MySQL写入binlog、redolog的流程

MySQL实战进阶 19 - MySQL写入binlog、redolog的流程。redo log的写入机制问题1:问题2:

2021-02-01 15:27:47 235

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除