自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小工匠

show me the code ,change the world

  • 博客(17)
  • 资源 (12)
  • 收藏
  • 关注

原创 Java Review - Java进程内部的消息中间件_Event Bus设计模式

文章目录概述概述在工作中,我们都会使用到MQ 比如 Apache Kafka等,某subscriber在消息中间件上注册了某个topic(主题),当有消息发送到了该topic上之后,注册在该topic上的所有subscriber都将会收到消息 。消息中间件提供了系统之间的异步处理机制。 主业务完成后即可向用户返回成功的通知,然后提交各种消息至消息中间件,这样注册在消息中间件的其他系统就可以顺利地接收通知了,然后执行各自的业务逻辑。消息中间件主要用于解决进程之间消息异步处理的解决方案,这里,我们

2021-12-19 08:59:43 32228 3

原创 Java Review - 并发编程_ 信号量Semaphore原理&源码剖析

文章目录概述小Demo概述Semaphore信号量也是Java中的一个同步器,与CountDownLatch和CycleBarrier不同的是,它内部的计数器是递增的,并且在一开始初始化Semaphore时可以指定一个初始值,但是并不需要知道需要同步的线程个数,而是在需要同步的地方调用acquire方法时指定需要同步的线程个数。小Demo...

2021-12-12 15:59:09 31217 1

原创 Java Review - 并发编程_ 回环屏障CyclicBarrier原理&源码剖析

文章目录PrePreJava Review - 并发编程_ CountDownLatch原理&源码剖析介绍的CountDownLatch在解决多个线程同步方面相对于调用线程的join方法已经有了不少优化,但是CountDownLatch的计数器是一次性的,也就是等到计数器值变为0后,再调用CountDownLatch的await和countdown方法都会立刻返回,这就起不到线程同步的效果了。所以为了满足计数器可以重置的需要,JDK开发组提供了CyclicBarrier类,并且Cyclic

2021-12-12 11:02:30 30985

原创 Java Review - 并发编程_ CountDownLatch原理&源码剖析

文章目录Pre小DemoPre每日一博 - CountDownLatch使用场景分析以及源码分析在日常开发中经常会遇到需要在主线程中开启多个线程去并行执行任务,并且主线程需要等待所有子线程执行完毕后再进行汇总的场景。在CountDownLatch出现之前一般都使用线程的join()方法来实现这一点,但是join方法不够灵活,不能够满足不同场景的需要,所以JDK开发组提供了CountDownLatch这个类,使用CountDownLatch会更优雅.小Demo...

2021-12-11 19:43:44 30918

原创 Java Review - 并发编程_ScheduledThreadPoolExecutor原理&源码剖析

文章目录概述类结构概述Java Review - 并发编程_ThreadPoolExecutor原理&源码剖析 我们复习了Java中线程池ThreadPoolExecutor的原理,ThreadPoolExecutor只是Executors工具类的一部分功能。下面来介绍另外一部分功能,也就是ScheduledThreadPoolExecutor的实现,这是一个可以在指定一定延迟时间后或者定时进行任务调度执行的线程池。类结构Executors其实是个工具类,它提供了好多静态方法,

2021-12-11 14:46:35 30634

原创 Java Review - 并发编程_ThreadPoolExecutor原理&源码剖析

文章目录线程池主要解决两个问题线程池主要解决两个问题一是当执行大量异步任务时线程池能够提供较好的性能。在不使用线程池时,每当需要执行异步任务时直接new一个线程来运行,而线程的创建和销毁是需要开销的。线程池里面的线程是可复用的,不需要每次执行异步任务时都重新创建和销毁线程。二是线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。每个ThreadPoolExecutor也保留了一些基本的统计数据,比如当前线程池完成的任务数目等。另外,线程池也提供了许多可调参数

2021-12-11 09:34:12 31177

原创 Java Review - 并发编程_DelayQueue原理&源码剖析

文章目录概述类图结构概述DelayQueue并发队列是一个无界阻塞延迟队列,队列中的每个元素都有个过期时间,当从队列获取元素时,只有过期元素才会出队列。队列头元素是最快要过期的元素。类图结构...

2021-12-05 23:48:52 30571

原创 Java Review - 并发编程_PriorityBlockingQueue原理&源码剖析

文章目录概述类图结构概述PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高或者最低的元素。其内部是使用平衡二叉树堆实现的,所以直接遍历队列元素不保证有序。默认使用对象的compareTo方法提供比较规则,如果你需要自定义比较规则则可以自定义comparators。类图结构...

2021-12-05 23:44:47 30030

原创 Java Review - 并发编程_ArrayBlockingQueue原理&源码剖析

文章目录概述类图结构概述Java Review - 并发编程_LinkedBlockingQueue原理&源码剖析介绍了使用有界链表方式实现的阻塞队列LinkedBlockingQueue,这里我们继续来研究使用有界数组方式实现的阻塞队列ArrayBlockingQueue的原理。类图结构...

2021-12-05 19:17:27 30034

原创 Java Review - 并发编程_LinkedBlockingQueue原理&源码剖析

文章目录概述类图结构主要方法offer操作概述Java Review - 并发编程_ConcurrentLinkedQueue原理&源码剖析介绍了使用CAS算法实现的非阻塞队列ConcurrentLinkedQueue,下面我们来介绍使用独占锁实现的阻塞队列LinkedBlockingQueue类图结构首先看一下LinkedBlockingQueue的类图结构,以便从全局对LinkedBlockingQueue有个直观的了解主要方法offer操作...

2021-12-05 15:37:37 29832

原创 Java Review - 并发编程_StampedLock锁探究

@[toc]概述StampedLock是并发包里面JDK8版本新增的一个锁,该锁提供了三种模式的读写控制, 当调用获取锁的系列函数时,会返回一个long 型的变量,我们称之为戳记(stamp),这个戳记代表了锁的状态。其中try系列获取锁的函数,当...

2021-12-05 13:22:26 27348

原创 Java Review - 并发编程_ConcurrentLinkedQueue原理&源码剖析

文章目录概述ConcurrentLinkedQueue概述JDK中提供了一系列场景的并发安全队列。总的来说,按照实现方式的不同可分为阻塞队列和非阻塞队列,阻塞队列使用锁实现而非阻塞队列则使用CAS非阻塞算法实现ConcurrentLinkedQueueConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用CAS来实现线程安全。...

2021-12-05 08:48:21 27306

原创 Java Review - 并发编程_抽象同步队列AQS

文章目录概述 AQS——锁的底层支持概述 AQS——锁的底层支持AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。另外,大多数开发者可能永远不会直接使用AQS,但是知道其原理对于架构设计还是很有帮助的。AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素,队列元素的类型为Node。其中Node中的thread变量用来存放进入AQS队列里面的线程;Node节点内部的SH

2021-12-05 00:58:14 27030

原创 Java Review - 并发编程_读写锁ReentrantReadWriteLock的原理&源码剖析

文章目录ReentrantLock VS ReentrantReadWriteLock类图结构ReentrantLock VS ReentrantReadWriteLock解决线程安全问题使用ReentrantLock就可以,但是ReentrantLock是独占锁,某时只有一个线程可以获取该锁,而实际中会有写少读多的场景,显然ReentrantLock满足不了这个需求,所以ReentrantReadWriteLock应运而生。ReentrantReadWriteLock采用读写分离的策略,允许多

2021-12-04 16:46:57 26903

原创 Java Review - 并发编程_独占锁ReentrantLock原理&源码剖析

文章目录概述概述ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而被放入该锁的AQS阻塞队列里面。底层基于AQS实现,ReentrantLock的lock等方法,委托给其依赖sync的lock方法从类图可以看出,ReentrantLock最终还是使用AQS来实现的,并且根据参数来决定其内部是一个公平还是非公平锁,默认是非公平锁。 /** * Creates an instance of {@code ReentrantLo

2021-12-04 11:44:02 26686

原创 Java Review - 并发编程_LockSupport

文章目录概述主要方法概述位于rt.jar包的java.util.concurrent.locks目录中, 主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类的方法的线程是不持有许可证的。主要方法...

2021-12-01 20:18:27 26405

原创 Java Review - 并发编程_并发List_CopyOnWriteArrayList源码剖析

文章目录概述概述并发包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。...

2021-12-01 00:16:15 26026

Scalable IO in Java

NIO - Scalable IO in Java

2023-11-10

腾讯万亿级 Elasticsearch 架构实践

腾讯万亿级 Elasticsearch 架构实践

2023-07-24

实时分析引擎&实时分析引擎

实时分析引擎

2023-07-24

X86-NFS rpm包

gssproxy-0.7.0-21.el7.x86_64.rpm keyutils- libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config libnfsidmap libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind tcp_wrappers

2020-11-24

中标龙芯-MIPS- NFS rpm包

gssproxy-0.7.0-4.ns7_4.mips64 keyutils-1.5.8-3. libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config-1.3 libnfsidmap-0.25- libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind-0.2.0-42. tcp_wrappers-7.6

2020-11-24

mybatisSource.zip

MyBatis源码功能演示环境 ,演示MyBatis的Executor 、StatementHandler 、 SQL映射、对象转换 等核心功能

2020-06-14

apache-tomcat-8.5.50-src.zip

Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与initInternal方法 为什么这么设计? 分析Tomcat请求过程 链接器(Connector)与容器(Container) 解耦 Connector设计 监听服务端口,读取来自客户端的请求 将请求数据按照指定协议进行解析 根据请求地址匹配正确的容器进行处理 将响应返回客户端 Container设计 Servlet容器的实现。

2020-06-02

「Tomcat源码剖析」.pdf

Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑)

2020-06-01

Jest-5.3.4.zip

Jest是Elasticsearch 的Java Http Rest 客户端。 ElasticSearch已经具备应用于Elasticsearch内部的java API,但是Jest弥补了ES自有API缺少Elasticsearch Http Rest接口客户端的不足。 Jest 配置ES 集群 示例代码 及源码解读 - 核心原理 - NodeChecker源码解读 -

2020-01-19

MQ对比:Kafka VS Rocketmq VS Rabbitmq.pdf

MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料

2019-11-04

elasticsearch-analysis-ik-6.4.1.zip

修改ik分词器源码,支持从mysql中每隔一定时间,自动加载新的词库

2019-08-20

Nginx1.14.2 + zlib + pcre + openssl

1. nginx 主软件 和 3个依赖包 zlib + pcre + openssl

2019-03-12

Spring4CachingAnnotationsExample

Spring4CachingAnnotationsExample的示例,通过Java注解的方式整合EhCache框架

2017-10-04

ORACLE_AWR报告详细分析

ORACLE_AWR报告详细分析

2016-09-28

Java反编译工具

jd-gui.exe使用C++开发,主要具有以下功能: 一、支持众多Java编译器的反编译; 二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;

2015-06-04

空空如也

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

TA关注的人

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