- 博客(126)
- 资源 (7)
- 收藏
- 关注
原创 RocketMQ成神之路目录
RocketMQ成神之路目录傻子都看得明白的RocketMQ安装以及测试RocketMQ的核心概念以及架构图RocketMQ之Java API大全精讲RocketMQ事务消息原理以及代码精讲RocketMQ顺序消息原理以及代码RocketMQ的Producer生产消息源码剖析RocketMQ的Producer发送消息queue的选择源码剖析RocketMQ的Broker接收消息以及消息持久化存储源码RocketMQ怎么保证的消息不丢失(吊打面试官)?源码剖析RocketMQ为什么同一个消
2020-07-20 15:15:42 722
原创 “源码”到底该怎么学?
编程界的小学生一、简介1、为什么写这文章?2、这文章能帮助我们什么?3、“源码”为什么加双引号?二、为什么学习三、方法论四、总结五、个人名言一、简介首先说下为啥要写这个文章,以及这篇文章能帮助我们什么。1、为什么写这文章?曾经的我对“源码”二字一头雾水,听见这两字都害怕,谁在我面前提源码,我就佩服的五体投地,果断认为他是大佬。现在的我有了N个“狐朋狗友”,有见过面的,有没见过的,由于我喜欢再各大社区/Q群等社交平台装逼,所以很多人加我好友问我如下几个不带脑子的问题:N连问:1.大神,你x
2020-06-16 16:23:08 1220
原创 史无前例的设计模式目录
史无前例的设计模式-评判代码质量好坏的标准史无前例的设计模式-单一职责原则史无前例的设计模式-里氏替换原则史无前例的设计模式-接口隔离原则史无前例的设计模式-依赖反转原则...
2020-05-06 13:01:04 459
原创 劝退Redis文章目录
劝退Redis文章目录你真的明白redis的安装步骤吗?你真的懂Redis的string类型?Redis的bitmap从基础到业务一文带你彻底掌握Redis为什么这么快?Redis的list类型核心知识Redis的hash类型核心知识Redis的set类型核心知识Redis的sorted_set类型核心知识Redis高级特性之geo你知道Redis慢查询吗?Redis性能调优...
2020-04-02 11:37:44 4402 1
原创 1、数据结构&算法是什么、为什么、怎么学?
1、是什么数据结构指的是一组数据的存储结构,算法指的是操作数据的一组方法数据结构是为算法服务的,算法是要作用再特定的数据结构上的,所以二者是不可分割的。2、为什么熟悉算法和数据结构才能写出性能更优的代码、或者说写代码之前就会想到怎么才能写出最高效的代码,而不是一味的crud、cv大法!很好的锻炼人的思维能力,多动脑才能更灵活!面试或者和同行唠嗑的时候可以吹牛逼!3、怎么学...
2019-11-08 16:22:27 613
原创 如何自己实现一个ArrayList?
文章目录一、实现ArrayList的关键点二、怎么存储数据?三、API1、增(add)1.1、直接在数组末尾增加1.2、在固定位置增加1.3、扩容2、删(remove)3、改(set)4、查(get)四、总结五、广告一、实现ArrayList的关键点怎么存储数据?怎么增删改查数据?二、怎么存储数据?首先想到的就是数组,用int[]?还是String[]?既然我们也不知道类型,那干脆用Objec[]来表示。所以变成了如下:public class ArrayList { // 存放元素
2021-09-24 19:08:32 955 2
原创 Zookeeper实现分布式锁的核心原理
文章目录INFO一、回顾二、实现思路三、安全性INFO作者: 编程界的小学生日期: 2021/09/20修订: 初版,未修订。2021/09/20版权: 内部资料,切勿泄漏,违者必究。一、回顾之前我们花了十几个篇幅来讲解分布式锁是什么以及Redis实现分布式锁的各种方式的底层源码剖析。实现分布式锁的方式不仅有Redis,还有Zookeeper,那Zookeeper如何实现分布式锁呢?相当于Redis来讲,Zookeeper实现分布式锁太简单了!也相对更可靠。二、实现思路Zookeeper实
2021-09-20 14:52:54 479
原创 【目录】从0到1玩转分布式锁底层原理
分布式锁是什么?为什么需要分布式锁?如何用MySQL实现一把分布式锁?Redis实现分布式锁的核心原理以及利弊分布式锁核心类库Redisson初识Redisson加锁的核心底层源码Redisson锁是如何做到可重入和互斥性的?Redisson的看门狗watchDog机制是怎么实现的?Redisson释放锁的核心底层源码Redisson分布式公平锁的核心架构和核心源码剖析Redisson分布式读写锁的核心架构和核心源码剖析Redisson的RedLock红锁实现原理是什么zk分布式锁原理
2021-09-19 13:04:01 443
原创 Redisson分布式锁总结
文章目录INFO阶段性小结1、可重入锁2、公平锁3、联锁/红锁4、读写锁5、信号量/可过期性信号量/闭锁6、总结INFO作者: 编程界的小学生日期: 2021/09/09修订: 初版,未修订。2021/09/17版权: 内部资料,切勿泄漏,违者必究。阶段性小结至此,我们讲解完了Redisson里面各种锁以及各种锁加锁和解锁的核心底层源码,也就是下面这些:1、可重入锁第一个被官方称之为可重入锁,我觉得不如叫非公平锁,因为他确实是非公平的,而且他很简单,只是基础的加锁和解锁流程,但是他确是核
2021-09-19 12:47:16 337
原创 Redisson闭锁CountDownLatch底层剖析
文章目录INFO一、回顾二、什么是闭锁三、源码剖析1、getCountDownLatch2、trySetCount3、await4、countDown四、总结五、和信号量区别INFO作者: 编程界的小学生日期: 2021/09/12修订: 初版,未修订。2021/09/12版权: 内部资料,切勿泄漏,违者必究。一、回顾再看看这个图,我们距离成功还差一步之遥,闭锁!今天的重点。二、什么是闭锁设置一个锁数量,然后必须达到这么多数量之后才能进行下面的执行,否则一直阻塞。和JDK下的CountD
2021-09-19 12:47:07 301
原创 Redisson信号量Semaphore底层剖析
文章目录INFO一、回顾二、什么是Semaphore三、源码剖析1、getSemaphore2、trySetPermits(n)3、acquire(n)4、release(n)四、总结五、可过期性信号量六、应用场景INFO作者: 编程界的小学生日期: 2021/09/12修订: 初版,未修订。2021/09/12版权: 内部资料,切勿泄漏,违者必究。一、回顾我们前面花了大量篇幅详细讲解了Redisson的各种锁的实现原理和源码分析,比如非公平锁可重入锁、公平可重入锁、联锁、红锁以及最复杂的读写
2021-09-19 12:46:57 1284 3
原创 Redisson的RedLock红锁实现原理是什么
文章目录INFO一、Demo二、RedLock设计思想三、RedissonRedLock源码1、加锁2、解锁四、总结INFO作者: 编程界的小学生日期: 2021/09/11修订: 初版,未修订。2021/09/11版权: 内部资料,切勿泄漏,违者必究。一、Demo直接照着官方抄来的Demo,官方地址附属到下面了。RLock lock1 = redissonInstance1.getLock("lock1");RLock lock2 = redissonInstance2.getLock(
2021-09-19 12:46:47 1340
原创 Redisson的MultiLock联锁实现原理是什么
文章目录INFO一、Demo二、RedissonMultiLock是什么三、核心原理四、核心源码1、构造器2、lock()3、unlock()五、总结INFO作者: 编程界的小学生日期: 2021/09/11修订: 初版,未修订。2021/09/11版权: 内部资料,切勿泄漏,违者必究。一、Demo直接照着官方抄来的Demo,官方地址附属到下面了。RLock lock1 = redissonInstance1.getLock("lock1");RLock lock2 = redissonI
2021-09-19 12:46:36 800
原创 Redisson分布式读写锁的核心架构和核心源码剖析
文章目录INFO一、什么是读写锁?二、读写锁的核心原理1、读写锁具备哪些特点?2、写锁如何加锁?3、读锁如何加锁?4、watchDog怎么工作?1、写锁2、读锁5、读锁怎么释放?6、写锁怎么释放?三、RedissonReadWriteLock的实现1、如何加读锁?2、如何加写锁?3、读读怎么共享的?4、读写怎么互斥的?5、写写怎么互斥的?6、watchDog怎么工作的?1、写锁2、读锁7、可重入锁是怎么做的?1、写锁2、读锁8、读锁怎么释放的?1、安全检查2、删除锁3、续期/删除9、写锁怎么释放的?1、安全
2021-09-19 12:46:23 276
原创 Redisson分布式公平锁的核心架构和核心源码剖析
文章目录INFO一、什么是公平锁和非公平锁?1、公平锁2、非公平锁二、公平锁和非公平锁的核心原理1、公平锁2、非公平锁三、Redisson的公平锁1、加锁2、重入3、排队4、超出等待时长四、总结INFO作者: 编程界的小学生日期: 2021/09/13修订: 初版,未修订。2021/09/13版权: 内部资料,切勿泄漏,违者必究。一、什么是公平锁和非公平锁?1、公平锁比如A、B、C三个线程,A先抢到锁了,后来C比B先到一步,那么,A执行完会释放锁,释放锁后C会继续持有锁,而不是B,这就是公平
2021-09-18 23:32:00 297
原创 Redisson释放锁的核心底层源码
文章目录INFO一、回顾二、原理三、总结INFO作者: 编程界的小学生日期: 2021/09/09修订: 初版,未修订。2021/09/09版权: 内部资料,切勿泄漏,违者必究。一、回顾前面讲解了一把锁的基本功能和基本原理,比如加锁流程、watchDog、锁重入以及锁的互斥性实现原理,既然锁加成功了,那今天这篇该知道是如何释放的呢?二、原理@Overridepublic void unlock() { try { // 核心在unlockAsync方法
2021-09-18 23:30:16 378
原创 Redisson的看门狗watchDog机制是怎么实现的?
文章目录INFO一、回顾二、WatchDog1、啥意思2、原理三、总结INFO作者: 编程界的小学生日期: 2021/09/09修订: 初版,未修订。2021/09/09版权: 内部资料,切勿泄漏,违者必究。一、回顾上一篇讲解了加锁的核心流程、可重入是怎么做的以及互斥性是怎么实现的,但是如果业务代码没执行完锁却过期了,这时候怎么办?这不就线程不安全了吗?别急,Redssion内部有个看门狗机制,WatchDog!二、WatchDog1、啥意思如果业务代码没执行完,锁却过期了,这时候其他线
2021-09-18 23:28:40 7070 5
原创 Redisson锁是如何做到可重入和互斥性的?
文章目录INFO一、回顾二、可重入三、互斥性四、总结INFO作者: 编程界的小学生日期: 2021/09/08修订: 初版,未修订。2021/09/08版权: 内部资料,切勿泄漏,违者必究。一、回顾上一篇讲解了加锁的核心流程,稍微提到了一点如何做到可重入的,如何做到互斥的。这篇就来详细分析下可重入和互斥的源码细节。二、可重入可重入就在于一段lua脚本:"if (redis.call('hexists', KEYS[1], ARGV[2]) == 1) then " + "redi
2021-09-18 23:26:27 358
原创 Redisson加锁的核心底层源码
文章目录INFO一、Demo1、pom2、Java3、最简单的lock二、源码剖析1、create(config)2、getLock("myLock")3、小结4、lock()5、给哪台机器加锁?三、总结1、图解2、核心2.1、加锁lua2.2、重入lua2.3、阻塞lua3、补充INFO作者: 编程界的小学生日期: 2021/09/08修订: 初版,未修订。2021/09/08版权: 内部资料,切勿泄漏,违者必究。一、Demo1、pom<dependency> <g
2021-09-18 23:24:04 290
原创 分布式锁核心类库Redisson初识
文章目录INFO一、文档二、核心功能三、整合SpringBoot1、pom2、Java3、最简单的lock四、总结INFO作者: 编程界的小学生日期: 2021/09/07修订: 初版,未修订。2021/09/07版权: 内部资料,切勿泄漏,违者必究。一、文档源码地址:https://github.com/redisson/redisson中文文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95英文文档:https:
2021-09-18 23:21:53 305
原创 Redis实现分布式锁的核心原理以及利弊
文章目录INFO一、关键点1、原子性2、过期时间3、锁续期4、释放锁二、Redis实现分布式锁的几种方式1、单机2、哨兵3、集群4、红锁三、Redis实现分布式锁的利弊1、优点2、缺点四、总结INFO作者: 编程界的小学生日期: 2021/09/06修订: 初版,未修订。2021/09/06版权: 内部资料,切勿泄漏,违者必究。一、关键点原子性过期时间释放锁锁续期1、原子性比如如下就不具有原子性,就是错误的代码:boolean lockStatus = stringRedisT
2021-09-18 23:19:56 1410
原创 如何用MySQL实现一把分布式锁?
文章目录INFO一、原理二、代码实现1、SQL2、锁工具类3、使用INFO作者: 编程界的小学生日期: 2021/09/05修订: 初版,未修订。2021/09/05版权: 内部资料,切勿泄漏,违者必究。一、原理mysql分布式锁主要实现核心就是利用唯一索引插入重复数据会报错来实现。插入冲突后就代表并发了,然后就休息一段时间继续重试,或者不休息直接CAS进行重试,插入成功后就代表抢锁成功,执行完后需要释放锁。(如果没看明白的话不要紧,下一篇会介绍mysql实现分布式锁的核心伪代码以及原理)不
2021-09-18 23:17:55 978
原创 分布式锁是什么?为什么需要分布式锁?
文章目录INFO一、为什么需要分布式锁?1、为什么需要锁?2、JVM锁二、什么是分布式锁?三、分布式锁必须具备的东西四、实现分布式锁的常用方式1、mysql2、redis3、zookeeper4、etcd五、常见的分布式锁应用场景六、总结INFO作者: 编程界的小学生日期: 2021/09/03修订: 初版,未修订。2021/09/05版权: 内部资料,切勿泄漏,违者必究。一、为什么需要分布式锁?1、为什么需要锁?假设现在就做个同时在线人数的功能,那我们怎么做?小菜鸡想到了:public
2021-09-18 23:16:40 412 2
原创 多线程超神目录以及100%有你不会的原理和面试题
多线程精品目录一、Thread基础二、AbstractExecutorService三、ThreadPoolExecutor一、Thread基础CSDN:https://blog.csdn.net/ctwctw/article/details/116455457微信公众号:https://mp.weixin.qq.com/s/YbZmM1OhJoc-Id_btaDRbA包含如下考点:什么是进程,什么是线程?什么是线程的切换?单核CPU设定为多线程有意义吗?线程数是不是越大越好?怎么合理设置
2021-09-18 23:11:07 250
原创 拆解ThreadPoolExecutor之关闭线程池和钩子函数方法的各个细节
文章目录如果下面的问题你都会的话就别在这浪费时间啦零、初始shutdown和shutdownNow一、shutdown1、全貌2、为什么上锁?3、checkShutdownAccess4、advanceRunState4.1、拆解1:runStateAtLeast4.2、拆解2:compareAndSet4.3、小结5、interruptIdleWorkers5.1、拆解1:参数onlyOne5.2、拆解2:为什么上锁5.3、拆解3:for(Worker w : workers)5.4、拆解4:if判断5.
2021-05-31 15:51:00 1054 1
原创 拆解ThreadPoolExecutor之runWorker方法的各个细节?
文章目录如果下面的问题你都会的话就别在这浪费时间啦一、runWorker全貌二、拆解runWorker1、大有学问的unlock2、while循环拿任务3、中断判断4、beforeExecute5、任务执行6、afterExecute7、finally8、completedAbruptly9、processWorkerExit10、小结三、getTask全貌四、拆解getTask1、timed2、释放线程3、小结五、总结author:编程界的小学生date:2021/05/30flag:不写垃圾没有
2021-05-30 22:35:36 929
原创 拆解ThreadPoolExecutor之addWorker方法的各个细节?
- addWorker的流程知道吗?- addWorker里面为什么在add和remove的时候要上锁?- 提交的任务会包装成Worker对象对吧?Worker存到哪里了?- Worker添加失败或者添加成功但是线程启动失败会怎样?
2021-05-30 18:43:20 992 1
原创 拆解ThreadPoolExecutor之execute方法的各个细节?
编程界的小学生如果下面的问题你都会的话就别在这浪费时间啦1、execute全貌2、拆解第一步2.1、NPE判断2.2、获取ctl2.3、开启线程执行任务2.4、小结3、拆解第二步3.1、将任务加到任务队列3.2、recheck3.3、检查是否设置了允许核心线程超时3.4、小结4、拆解第三步4.1、开启非核心线程处理任务5、总结author:编程界的小学生date:2021/05/30flag:不写垃圾没有营养的文章!由于之前写过线程池状态是怎么存储计算的文章,所以此处不在废话。如不清楚线程池的
2021-05-30 16:45:20 566 4
原创 从底层存储结构带你分析Elasticsearch7.x为什么把type给干掉了?
编程界的小学生零、补充一、介绍二、type的底层存储1、概念讲解2、代码讲解3、总结三、ES7.x为什么删除了type?零、补充ES7去掉type的官方文档所解释的原因:https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html#_why_are_mapping_types_being_removed一、介绍ES7之前是有type的,属于index下,一个index可以有不同的type,
2021-05-25 19:15:28 896
原创 Elasticsearch的bulk批量处理API使用以及底层原理大揭秘
编程界的小学生一、api1、概念2、语法3、Demo3.1、需求一3.2、需求二二、补充1、格式2、优化三、底层原理1、问题2、答案3、两种格式对比3.1、优雅格式3.2、丑陋的JSON格式一、api1、概念就是批量操作,将多条PUT/POST/DELETE命令合并成一个bulk命令进行操作,节省代码量也提高性能。2、语法PUT /_bulk{"action":{"metadata"}}{"data"}action取值(如下是常用的):index:普通的PUT操作,可以是创建文档,也可
2021-05-24 23:02:09 732
原创 Elasticsearch的文档id生成方式与各种元数据的含义(各种字段的含义)
编程界的小学生一、document的id生成方式1、自动生成1.1、语法1.2、案例1.3、id规则2、手动生成3、两种id应用场景二、document核心元数据三、_source元数据四、_search结果元数据一、document的id生成方式1、自动生成1.1、语法很简单,就是index/type后面别跟id了,这时候就代表自动生成。POST index/_doc{ "field": value}1.2、案例POST test_index/_doc{ "name": "c
2021-05-24 22:57:13 1768
原创 Elasticsearch的实战快速入门CRUD篇
编程界的小学生一、前面介绍了ES的一大堆知识点,什么分布式、什么各种名字的概念,今天就先来感受下,看几个核心API,看看增删改查的语法以及格式。一、【微信公众号】
2021-05-24 21:35:21 377
原创 Elasticsearch索引、集群、节点、分片的核心API以及集群状态是个啥?
编程界的小学生一、index相关API二、node相关API三、cluster相关API四、shard相关API五、集群状态是个啥一、index相关API#查看索引相关信息GET kibana_sample_data_ecommerce#查看索引的文档总数GET kibana_sample_data_ecommerce/_count#查看前10条文档,了解文档格式POST kibana_sample_data_ecommerce/_search{}#_cat indices API
2021-05-23 19:34:50 354
原创 Elasticsearch的分布式架构、自动负载均衡、高可用以及容错性到底咋玩的?
编程界的小学生一、分布式架构二、自动负载均衡1、一图胜千言2、答疑三、高可用1、回忆下Shard2、高可用。2.1、两node2.2、三node五、天然支持水平扩容1、垂直扩容2、水平扩容3、ES咋扩容六、容错性一、分布式架构极其简单,开箱即用,几乎零配置ES天然支持分布式和集群,使用起来很简单,配置少之又少。自动分片(shard)我们知道一个index可以有很多个Primary Shard,一个document只能存到一个Primary Shard上,那问题来了,当我们创建一个do
2021-05-23 19:06:27 1334 7
原创 Elasticsearch的这几个概念你还不知道啥意思呢?
编程界的小学生一、node1、核心概念2、node种类二、shard1、啥意思2、种类3、Primary Shard4、Replica Shard5、Shard的个数设定6、shard自动负载均衡6.1、概念6.2、画图说明三、index四、type五、document六、field七、mapping八、DSL语句九、贯穿全文的总结一、node1、核心概念节点。一个ES实例就是一个node,本质上就是一个Java进程,但并不是说一台机器就是一个node,因为一台机器可以运行多个ES实例,也就是多个J
2021-05-23 17:07:50 358
原创 一分钟让你彻底明白Elasticsearch到底是个什么玩意
编程界的小学生一、搜索是啥意思?二、Elasticsearch是个啥?三、Elasticsearch有啥用?四、Elasticsearch谁在用?五、最后看下Elastic Stack生态圈一、搜索是啥意思?大家都知道ES是搜索引擎,搜索框架,反正就是干搜索的,那搜索到底是个啥?大白话来剖析搜索的含义就是:你想查个东西,输入了你要查的关键词,然后给你返回来一堆匹配度最高的文章,也就是你想要的结果。这就是搜索!再比如:搜索引擎:百度、Google等,这不都是搜索吗?!站内搜索:淘宝、京东、新
2021-05-23 15:48:18 3041 2
原创 一文搞定Centos7.x安装ELK的7.6.2版本以及Cerebro集群监控
编程界的小学生一、Centos7安装Elasticsearch7.6.21、下载2、安装3、进行配置3.1、修改elasticsearch.yml3.2、修改jvm参数3.3、修改sysctl.conf3.4、修改limits.conf3.5、reboot3.6、启动ES3.7、验证ES3.8、如外网无法访问二、Centos7安装Kibana7.6.21、下载2、安装3、配置4、启动5、验证三、Centos7安装Logstash7.6.2且导入MovieLens数据集1、下载Logstash7.6.22、解
2021-05-23 12:39:09 475
原创 ThreadPoolExecutor的核心参数以及线程池状态到底是咋玩的?
文章目录如果下面的问题你都会的话就别在这浪费时间啦1、线程池参数1.1、线程池参数有哪些?都啥意思?1.2、线程池是怎么创建线程的?1.3、任务拒绝策略有哪些?1.4、线程池的原理是什么?2、线程池的状态2.1、线程池有哪几种状态?2.2、线程池的状态是怎么存储的?2.3、线程池的状态是怎么计算的?2.4、为什么要用-1代表RUNNING状态?2.5、new一个线程池,他的活跃线程数是多少?怎么计算的?2.6、线程池状态是怎么转换的?author:编程界的小学生date:2021/05/16flag
2021-05-16 15:59:00 885
原创 线程池的鼻祖AbstractExecutorService模板模式真香(下)
文章目录如果下面的问题你都会的话就别在这浪费时间啦1、invokeAll1.1、源码1.2、要点总结1.3、Demo1.3.1、代码1.3.2、结果1.3.3、分析2、invokeAll(timeout)2.1、源码2.2、要点总结2.2.1、核心流程2.2.2、答疑环节2.3、Demo2.3.1、代码2.3.2、结果2.3.3、分析3、invokeAny3.1、源码3.2、要点总结3.2.1、核心流程3.2.2、答疑环节3.3、Demo3.3.1、代码3.3.2、结果3.3.3、分析4、从中学到了什么思想
2021-05-15 14:37:59 374 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人