E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
nginx-rtmp源码剖析
Android之Launcher介绍(二)
image.png目录Android之zygote
源码剖析
(一)Android之zygote
源码剖析
(二)Android之zygote
源码剖析
(三)Android之SystemServer介绍(一)Android
Lee_5566
·
2021-03-16 20:46
Vue.js
源码剖析
-模板编译
模板编译简介模板编译的主要目的是将模板(template)转换为渲染函数(render)titlesomecontent渲染函数renderh('div',[h('h1',{on:{click:this.handler}},'title'),h('p','somecontent')])模板编译的作用Vue2.x使用VNode描述视图及各种交互,用户自己编写VNode比较复杂用户只需要编写类似HTM
翔子丶
·
2021-03-15 19:30
Redis
源码剖析
之内存淘汰策略(Evict)
Redis作为一个成熟的数据存储中间件,它提供了完善的数据管理功能,比如之前我们提到过的数据过期和今天我们要讲的数据淘汰(evict)策略。在开始介绍Redis数据淘汰策略前,我先抛出几个问题,帮助大家更深刻理解Redis的数据淘汰策略。何为数据淘汰,Redis有了数据过期策略为什么还要有数据淘汰策略?淘汰哪些数据,有什么样的数据选取标准?Redis的数据淘汰策略是如何实现的?何为Evict我先来
·
2021-03-14 21:49
java
Vue.js
源码剖析
-虚拟 DOM
什么是虚拟DOM虚拟DOM(VirtualDOM)是使用JavaScript对象来描述DOM,虚拟DOM的本质就是JavaScript对象,使用JavaScript对象来描述DOM的结构。应用的各种状态变化首先作用于虚拟DOM,最终映射到DOMVue.js中的虚拟DOM借鉴了Snabbdom,并添加了一些Vue.js中的特性,例如:指令和组件机制为什么使用虚拟DOM可以避免用户直接操作DOM,开发
翔子丶
·
2021-03-12 17:14
源码剖析
AQS(AbstractQueuedSynchronizer)-抽象队列同步器
前言:上一节实现了一个自定义锁,并且验证了其功能,这节将从源码出发,解析J.U.C的源码,并引出抽象队列同步器(AQS)。1JDK的ReentrantLock1.1ReentrantLock上节我们自己实现了tryLock、lock、unlock三个方法,我们先从这三个方法入手,看JDK的实现跟我们自己的实现有什么异同。先给出类图:从类图可以看出,ReentrantLock有三个内部类,而Sync
Vander1991
·
2021-03-06 17:10
SpringBoot
application.yamlapplication.properties属性注入常用注解@Value属性注入@ConfigurationProperties批量注入第三方配置松散绑定@Value与@ConfigurationProperties的对比日志框架源码
源码剖析
依赖管理
源码剖析
自动配置
哈哈海
·
2021-02-26 22:17
yolov5深度剖析+源码debug级讲解系列(一) yolov5的架构和源码debug准备
博主还是保持着一贯的风格,依旧采用debug级别的
源码剖析
。目的就是让大家可以通过一个系列的文章就把yolov5的架构、设计理念和每一行源码都弄懂。
欧气吸收大王
·
2021-02-26 17:47
目标检测
yolov5
深度学习
pytorch
目标检测
源码
通俗易懂的JUC
源码剖析
-CompletionService
前言相信大多数人对ExecutorService比较熟悉,那么CompletionService是什么东东呢?使用场景我们来看JDK官方doc给的栗子,假设现在有个计算问题,伪代码可抽象为Resultcompute(),且有一组解决方案,每个方案都会返回结果Result,我们希望并行执行这些方案,然后采取一定策略去决定使用哪个方案的结果。比如,使用最先返回结果的方案,然后取消执行其他方案的线程。代
·
2021-02-21 15:28
java
源码剖析
sync.cond(条件变量的实现机制)
原文链接:
源码剖析
sync.cond(条件变量的实现机制)sync.Cond的基本使用
·
2021-02-21 15:50
通俗易懂的JUC
源码剖析
-CompletionService
前言相信大多数人对ExecutorService比较熟悉,那么CompletionService是什么东东呢?使用场景我们来看JDK官方doc给的栗子,假设现在有个计算问题,伪代码可抽象为Resultcompute(),且有一组解决方案,每个方案都会返回结果Result,我们希望并行执行这些方案,然后采取一定策略去决定使用哪个方案的结果。比如,使用最先返回结果的方案,然后取消执行其他方案的线程。代
·
2021-02-21 14:11
java
java并发实现_Java并发实现原理:JDK
源码剖析
本书全面系统地讲解了Java并发实现原理,从基础的多线程知识讲起,全面介绍了Concurrent包的每个部分,详细分析多线程背后的原理,同时从源码角度进行了剖析,为的一本好书。本书全面而系统地剖析了JavaConcurrent包中的每一个部分,对并发的实现原理进行了深刻的探讨。全书分为8章,章从很基础的多线程知识讲起,理清多线程中容易误解的知识点,探究背后的原理,包括内存重排序、happen-be
SME情报员
·
2021-02-21 00:51
java并发实现
通俗易懂的JUC
源码剖析
-FutureTask
前言实现原理先来看类结构publicclassFutureTaskimplementsRunnableFuture{}publicinterfaceRunnableFutureextendsRunnable,Future{}publicinterfaceFuture{//booleancancel(booleanmayInterruptIfRunning);//booleanisCancelled
·
2021-02-20 01:26
java
通俗易懂的JUC
源码剖析
-CompletableFuture
前言CompletableFuture是JDK1.8新增的类。它实现了CompletionStage接口和Future接口。Future接口用来描述一个线程异步执行的结果,我们想要获取结果时只能通过isDone()轮询或者get()阻塞式的获取,这显然违背了异步编程的初衷。CompletableFuture吸收了Guava的设计思想,加入了许多扩展功能,使得我们能够更优雅地获取线程异步执行结果。使
·
2021-02-20 01:55
java
通俗易懂的JUC
源码剖析
-FutureTask
前言实现原理先来看类结构publicclassFutureTaskimplementsRunnableFuture{}publicinterfaceRunnableFutureextendsRunnable,Future{}publicinterfaceFuture{//booleancancel(booleanmayInterruptIfRunning);//booleanisCancelled
·
2021-02-20 01:45
java
通俗易懂的JUC
源码剖析
-CompletableFuture
前言CompletableFuture是JDK1.8新增的类。它实现了CompletionStage接口和Future接口。Future接口用来描述一个线程异步执行的结果,我们想要获取结果时只能通过isDone()轮询或者get()阻塞式的获取,这显然违背了异步编程的初衷。CompletableFuture吸收了Guava的设计思想,加入了许多扩展功能,使得我们能够更优雅地获取线程异步执行结果。使
·
2021-02-20 01:45
java
通俗易懂的JUC
源码剖析
-ForkJoinPool
前言ForkJoinPool常用于将大任务分解(Fork)成若干小任务并行执行,然后再把每个小任务的执行结果合并起来(Join)得到大任务的最终结果。下面是示意图(ps:盗网上网上盗的图,禁止套娃!)ForkJoinPool通常配合ForkJoinTask一起使用,ForkJoinTask代表一个任务,它是个抽象类,它的常见子类有RecursiveTask和RecursiveAction,其中Re
·
2021-02-18 23:09
java
通俗易懂的JUC
源码剖析
-ForkJoinPool
前言ForkJoinPool常用于将大任务分解(Fork)成若干小任务并行执行,然后再把每个小任务的执行结果合并起来(Join)得到大任务的最终结果。下面是示意图(ps:盗网上网上盗的图,禁止套娃!)ForkJoinPool通常配合ForkJoinTask一起使用,ForkJoinTask代表一个任务,它是个抽象类,它的常见子类有RecursiveTask和RecursiveAction,其中Re
·
2021-02-18 23:30
java
凝渊的 Java 技术目录
一、开源框架SpringSpring--概述Spring--手写IOC和AOPSpring--IOC基础应用Spring--IOC高级特性Spring--IOC
源码剖析
Spring--AOP基础应用MyBatis
Travis_Wu
·
2021-02-18 22:13
通俗易懂的JUC
源码剖析
-ScheduledThreadPoolExecutor
前言ScheduledThreadPoolExecutor是一种带有延迟,定时执行任务的线程池。它在很多延时任务、定时任务的场景中有丰富的应用场景。今天就来分析下它的实现原理吧。实现原理先看看类图结构:publicclassScheduledThreadPoolExecutorextendsThreadPoolExecutorimplementsScheduledExecutorService{}
·
2021-02-17 17:40
java
通俗易懂的JUC
源码剖析
-ScheduledThreadPoolExecutor
前言ScheduledThreadPoolExecutor是一种带有延迟,定时执行任务的线程池。它在很多延时任务、定时任务的场景中有丰富的应用场景。今天就来分析下它的实现原理吧。实现原理先看看类图结构:publicclassScheduledThreadPoolExecutorextendsThreadPoolExecutorimplementsScheduledExecutorService{}
·
2021-02-17 17:03
java
通俗易懂的JUC
源码剖析
-Semaphore
前言Semaphore意为信号量,它用来限制某段时间内的最大并发资源数。例如数据库连接池,停车位等。下面通过停车位的栗子来说明Semaphore的使用方式。importjava.util.concurrent.Semaphore;publicclassSemaphoreDemo{privatestaticSemaphoresemaphore=newSemaphore(10);publicstati
·
2021-02-17 12:59
java
通俗易懂的JUC
源码剖析
-Semaphore
前言Semaphore意为信号量,它用来限制某段时间内的最大并发资源数。例如数据库连接池,停车位等。下面通过停车位的栗子来说明Semaphore的使用方式。importjava.util.concurrent.Semaphore;publicclassSemaphoreDemo{privatestaticSemaphoresemaphore=newSemaphore(10);publicstati
·
2021-02-17 12:51
java
浅谈阻塞队列 BlockingQueue
关于阻塞队列,具体写过几篇
源码剖析
的文章。
every__day
·
2021-02-17 10:16
并发编程
BlockingQueue
阻塞队列
offer
take
通俗易懂的JUC
源码剖析
-CyclicBarrier
前言我们知道,CountDownLatch的计数器是一次性的,它不能重置。也就是说,当count值变为0时,再调用await()方法会立即返回,不会阻塞。本文要说的CyclicBarrier就是一种可以重置计数器的线程同步工具类。CyclicBarrier字面意思是“回环屏障”,它可以让一组线程全部到达一个状态后再全部同时往下执行。之所以叫回环是因为当所有线程执行完毕,并重置CyclicBarri
·
2021-02-16 15:44
java
通俗易懂的JUC
源码剖析
-CountDownLatch
前言在实际开发中,有时会遇到这样的场景:主任务需要等待若干子任务完成后,再进行后续的操作。这时可以用join或者本文的CountDownLatch实现。它们的区别在于CountDownLatch更加灵活。比如,子任务的工作分为两个阶段,主任务只需子任务完成第一个阶段即可开始主任务,无需等第二个阶段完成。这种场景join就无法做到,CountDownLatch就可以实现。下面是实例代码。import
·
2021-02-16 15:44
java
通俗易懂的JUC
源码剖析
-CyclicBarrier
前言我们知道,CountDownLatch的计数器是一次性的,它不能重置。也就是说,当count值变为0时,再调用await()方法会立即返回,不会阻塞。本文要说的CyclicBarrier就是一种可以重置计数器的线程同步工具类。CyclicBarrier字面意思是“回环屏障”,它可以让一组线程全部到达一个状态后再全部同时往下执行。之所以叫回环是因为当所有线程执行完毕,并重置CyclicBarri
·
2021-02-16 15:09
java
通俗易懂的JUC
源码剖析
-CountDownLatch
前言在实际开发中,有时会遇到这样的场景:主任务需要等待若干子任务完成后,再进行后续的操作。这时可以用join或者本文的CountDownLatch实现。它们的区别在于CountDownLatch更加灵活。比如,子任务的工作分为两个阶段,主任务只需子任务完成第一个阶段即可开始主任务,无需等第二个阶段完成。这种场景join就无法做到,CountDownLatch就可以实现。下面是实例代码。import
·
2021-02-16 15:37
java
通俗易懂的JUC
源码剖析
-ReentrantLock&AQS
AQS概述大家可能对AQS听得很多,它的全称是AbstractQueuedSynchronizer,即抽象队列同步器,它是JUC包中很多同步组件的基础。先来看看它的类层次以及内部数据结构吧。publicabstractclassAbstractQueuedSynchronizerextendsAbstractOwnableSynchronizerimplementsjava.io.Serializ
·
2021-02-09 01:54
java
通俗易懂的JUC
源码剖析
-StampedLock
StampedLock的作用StampedLock是JDK1.8新增的类,它类似ReadWriteReentrantLock,也有读写锁的功能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。StampedLock有三种模式mode和一个版本号stamp。三种模式:悲观写模式:writeLock
·
2021-02-09 01:54
java
通俗易懂的JUC
源码剖析
-ThreadPoolExecutor
前言ThreadPoolExecutor相信大家都很熟悉:线程池的实现类。今天我们就来看看它内部是怎么实现的。实现原理先来看看它的类结构:publicclassThreadPoolExecutorextendsAbstractExecutorService{}publicabstractclassAbstractExecutorServiceimplementsExecutorService{}p
·
2021-02-09 01:22
java
通俗易懂的JUC
源码剖析
-ThreadPoolExecutor
前言ThreadPoolExecutor相信大家都很熟悉:线程池的实现类。今天我们就来看看它内部是怎么实现的。实现原理先来看看它的类结构:publicclassThreadPoolExecutorextendsAbstractExecutorService{}publicabstractclassAbstractExecutorServiceimplementsExecutorService{}p
·
2021-02-09 01:45
java
通俗易懂的JUC
源码剖析
-StampedLock
StampedLock的作用StampedLock是JDK1.8新增的类,它类似ReadWriteReentrantLock,也有读写锁的功能,它还多了一种乐观读锁,它与ReadWriteReentrantLock的区别在于它是不可重入的,ReadWriteReentrantLock是可重入的。StampedLock有三种模式mode和一个版本号stamp。三种模式:悲观写模式:writeLock
·
2021-02-09 01:45
java
通俗易懂的JUC
源码剖析
-ReentrantLock&AQS
AQS概述大家可能对AQS听得很多,它的全称是AbstractQueuedSynchronizer,即抽象队列同步器,它是JUC包中很多同步组件的基础。先来看看它的类层次以及内部数据结构吧。publicabstractclassAbstractQueuedSynchronizerextendsAbstractOwnableSynchronizerimplementsjava.io.Serializ
·
2021-02-09 01:45
java
源码剖析
sync.WaitGroup(文末思考题你能解释一下吗?)
原文链接:
源码剖析
sync.WaitGroup(文末思考题你能解释一下吗?)
·
2021-02-08 20:29
golangsync并发编程
通俗易懂的JUC
源码剖析
-DelayQueue
前言DelayQueue是BlockingQueue接口的实现类,它是带有延时功能的无界阻塞队列,意思就是每个元素都有过期时间,当从队列获取元素时,只有过期元素才会出队列。队列的头部元素是最快要过期的元素。实现原理先来看看它的类结构:publicclassDelayQueueextendsAbstractQueueimplementsBlockingQueue{}可以看到,存放的元素必须实现了De
·
2021-02-08 00:18
java
通俗易懂的JUC
源码剖析
-DelayQueue
前言DelayQueue是BlockingQueue接口的实现类,它是带有延时功能的无界阻塞队列,意思就是每个元素都有过期时间,当从队列获取元素时,只有过期元素才会出队列。队列的头部元素是最快要过期的元素。实现原理先来看看它的类结构:publicclassDelayQueueextendsAbstractQueueimplementsBlockingQueue{}可以看到,存放的元素必须实现了De
·
2021-02-08 00:01
java
Redis
源码剖析
之数据过期(expire)
我之前统计过我们线上某redis数据被访问的时间分布,大概90%的请求只会访问最新15分钟的数据,99%的请求访问最新1小时的数据,只有不到千分之一的请求会访问超过1天的数据。我们之前这份数据存了两天(近500g内存数据),如果算上主备的话用掉了120多个Redis实例(一个实例8g内存),光把过期时间从2天改成1天就能省下60多个redis实例,而且对原业务也没有啥太大影响。当然Redis已经实
·
2021-02-07 14:11
java
通俗易懂的JUC
源码剖析
-PriorityBlockingQueue
前言PriorityBlockingQueue是BlockingQueue接口的实现类,它是一种优先级阻塞队列,每次出队都返回优先级最高或最低的元素,其内部是用平衡二叉树堆实现的。这里的优先级指的是元素类必须实现Comparable接口,然后用compareTo()方法比较元素的优先级大小,当然也可指定自定义的比较器comparator。实现原理先来看看它的重要属性://队列默认容量为11priv
·
2021-02-06 23:09
java
通俗易懂的JUC
源码剖析
-PriorityBlockingQueue
前言PriorityBlockingQueue是BlockingQueue接口的实现类,它是一种优先级阻塞队列,每次出队都返回优先级最高或最低的元素,其内部是用平衡二叉树堆实现的。这里的优先级指的是元素类必须实现Comparable接口,然后用compareTo()方法比较元素的优先级大小,当然也可指定自定义的比较器comparator。实现原理先来看看它的重要属性://队列默认容量为11priv
·
2021-02-06 23:55
java
net/rpc中一个函数调用的旁白
(源码)net/rpc中一个函数调用的旁白身份介绍正题收益坏处net/RPC
源码剖析
主要名词解释客户端流程讲解:服务端流程讲解:初始化启动从设计模式的角度理解net/rpc源码的设计身份介绍大家好,我的名字叫小
Simonthatsme
·
2021-02-06 12:08
rpc
源码
rpc
go
源码
设计模式
通俗易懂的JUC
源码剖析
-ArrayBlockingQueue
前言ArrayBlockingQueue也是BlockingQueue接口的实现类,从它的命名就能猜出来,它底层是用数组实现的,不同于LinkedBlockingQueue的链表结构。实现原理首先来看它的关键属性://存放元素的数组finalObject[]items;//记录下次take操作的数组位置inttakeIndex;//记录下次put操作的数组位置intputIndex;//数组长度i
·
2021-02-06 02:02
java
通俗易懂的JUC
源码剖析
-ArrayBlockingQueue
前言ArrayBlockingQueue也是BlockingQueue接口的实现类,从它的命名就能猜出来,它底层是用数组实现的,不同于LinkedBlockingQueue的链表结构。实现原理首先来看它的关键属性://存放元素的数组finalObject[]items;//记录下次take操作的数组位置inttakeIndex;//记录下次put操作的数组位置intputIndex;//数组长度i
·
2021-02-06 02:56
java
k8s-client-go
源码剖析
(二)
简介:云原生社区活动---Kubernetes
源码剖析
第一期第二周本周是K8S源码研习社第一期第二周,学习内容是学习Informer机制,本文以这个课题进行展开。
·
2021-02-05 16:39
通俗易懂的JUC
源码剖析
-LinkedBlockingQueue
前言LinkedBlockingQueue实现了BlockingQueue,它是阻塞队列的一种,可用于线程池中。不同于ConcurrentLinkedQueue的CAS非阻塞算法,它底层是用锁实现的阻塞队列。实现原理先来看关键属性://队列容量,最大为Integer.MAX_VALUEprivatefinalintcapacity;//队列长度privatefinalAtomicIntegerco
·
2021-02-05 00:43
java
通俗易懂的JUC
源码剖析
-LinkedBlockingQueue
前言LinkedBlockingQueue实现了BlockingQueue,它是阻塞队列的一种,可用于线程池中。不同于ConcurrentLinkedQueue的CAS非阻塞算法,它底层是用锁实现的阻塞队列。实现原理先来看关键属性://队列容量,最大为Integer.MAX_VALUEprivatefinalintcapacity;//队列长度privatefinalAtomicIntegerco
·
2021-02-05 00:30
java
通俗易懂的JUC
源码剖析
-ConcurrentLinkedQueue
简介ConcurrentLinkedQueue是JUC包下的线程安全的无界非阻塞队列,它与BlockingQueue接口实现类最大的不同就是,BlockingQueue是阻塞队列,而ConcurrentLinkedQueue是非阻塞队列。这里的阻塞非阻塞,指的是队列满了或为空的时候,线程移除或放入元素的时候,是否需要阻塞挂起。BlockingQueue底层是用锁实现的,而ConcurrentLin
·
2021-02-02 23:40
java
通俗易懂的JUC
源码剖析
-ConcurrentLinkedQueue
简介ConcurrentLinkedQueue是JUC包下的线程安全的无界非阻塞队列,它与BlockingQueue接口实现类最大的不同就是,BlockingQueue是阻塞队列,而ConcurrentLinkedQueue是非阻塞队列。这里的阻塞非阻塞,指的是队列满了或为空的时候,线程移除或放入元素的时候,是否需要阻塞挂起。BlockingQueue底层是用锁实现的,而ConcurrentLin
·
2021-02-02 23:26
java
通俗易懂的JUC
源码剖析
-LockSupport
前言LockSupport是rt.jar下的工具类,它的作用是挂起和唤醒线程,它在JUC很多同步组件中都会用到,比如AQS。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类方法的线程是没有许可证的。LockSupport内部是用Unsafe的park和unpark方法实现的。主要方法(1)voidpark()调用park()方法会阻塞当前线程,
·
2021-01-30 02:09
java
通俗易懂的JUC
源码剖析
-LockSupport
前言LockSupport是rt.jar下的工具类,它的作用是挂起和唤醒线程,它在JUC很多同步组件中都会用到,比如AQS。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类方法的线程是没有许可证的。LockSupport内部是用Unsafe的park和unpark方法实现的。主要方法(1)voidpark()调用park()方法会阻塞当前线程,
·
2021-01-30 02:33
java
阿里P9枕边书“Java并发实现原理:JDK
源码剖析
”
前言并发编程可选择的方式有多进程、多线程和多协程。对于Java来说,它既不像C++那样,在运行中调用Linux的系统API去“fork”出多个进程;也不像Go那样,在语言层面原生提供多协程。在Java中,并发就是多线程模式。在JDK1.5发布之前,Java只在语言级别上提供一些简单的线程互斥与同步机制,也就是synchronized关键字、wait与notify。如果遇到复杂的多线程编程场景,就需
该用户快成仙了
·
2021-01-27 22:03
java
并发编程
jdk
jdk源码
Java并发实现
上一页
21
22
23
24
25
26
27
28
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他