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
skynet源码剖析
Redis
源码剖析
之AOF
书接上回,上回我们详细讲解了Redis的RDB机制,RDB解决了redis数据持久化一部分的问题,为什么说一部分?因为rdb是redis中某一时刻的快照,那么在这次快照后如果数据有新的变更,它是不会被持久化下来的,必须得等到下次rdb备份。然而,生成rdb是和消耗性能的,所以它就不适合很频繁生成。Redis为了弥补这一不足提供了AOF。AOF的全称是AppendOnlyFile,源码在aof.c。
·
2021-04-06 02:16
java
高并发系统的限流策略:漏桶和令牌桶(附
源码剖析
)
原文链接:高并发系统的限流策略:漏桶和令牌桶(附
源码剖析
)前言哈喽,大家好,我是正在学习PS技术的asong,这是我并发编程系列的第5篇文章,今天与大家聊一聊高并发系统中的限流技术,限流又称为流量控制,
·
2021-03-30 11:59
golang微服务限流
源码剖析
sync.WaitGroup(文末思考题你能解释一下吗?)
原文链接:
源码剖析
sync.WaitGroup(文末思考题你能解释一下吗?)
·
2021-03-30 11:28
golangsync并发编程
源码剖析
sync.cond(条件变量的实现机制)
原文链接:
源码剖析
sync.cond(条件变量的实现机制)sync.Cond的基本使用
·
2021-03-30 11:28
源码剖析
panic与recover,看不懂你打我好了!
前言哈喽,大家好,我是asong,今天与大家来聊一聊go语言中的"throw、try.....catch{}"。如果你之前是一名java程序员,我相信你一定吐槽过go语言错误处理方式,但是这篇文章不是来讨论好坏的,我们本文的重点是带着大家看一看panic与recover是如何实现的。上一文我们讲解了defer是如何实现的,但是没有讲解与defer紧密相连的recover,想搞懂panic与reco
·
2021-03-30 11:26
Linux glibc内存管理:用户态内存分配器——ptmalloc实现原理
文章目录ptmalloc设计假设ArenaChunkBins内存分配、释放流程总结C++STL:SGI-STL空间配置器
源码剖析
Linux内存管理|物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器
凌桓丶
·
2021-03-29 21:16
Linux操作系统
linux
内存管理
ptmalloc
操作系统
glibc
Redis
源码剖析
之RDB
我们小学三年级的时候就知道,redis是一个纯内存存储的中间件,那它宕机会怎么样?数据会丢失吗?答案是可以不丢。事实上redis为了保证宕机时数据不丢失,提供了两种数据持久化的机制——rdb和aof。rdb就定期将内存里的数据全量dump到磁盘里,下次启动时就可以直接加载之前的数据了,rdb的问题是它只能提供某个时刻的数据快照,无法保证建立快照后的数据不丢,所以redis还提供了aof。aof全程
·
2021-03-29 01:38
java
Redis
源码剖析
之RDB
我们小学三年级的时候就知道,redis是一个纯内存存储的中间件,那它宕机会怎么样?数据会丢失吗?答案是可以不丢。事实上redis为了保证宕机时数据不丢失,提供了两种数据持久化的机制——rdb和aof。rdb就定期将内存里的数据全量dump到磁盘里,下次启动时就可以直接加载之前的数据了,rdb的问题是它只能提供某个时刻的数据快照,无法保证建立快照后的数据不丢,所以redis还提供了aof。aof全程
·
2021-03-29 01:24
java
【OpenCV C++ 】线性邻域滤波:方框滤波、均值滤波、高斯滤波——详细讲解
boxblur函数三、均值滤波——blur函数1)均值滤波的理论简析2)均值滤波的缺陷3)在OpenCV中使用均值滤波——blur函数四、高斯滤波——GaussianBlur函数五、深入——OpenCV
源码剖析
本系列文章由
R-G-B
·
2021-03-25 22:04
OpenCV
C++
opencv
计算机视觉
六、持久层框架设计实现及MyBatis源码分析-MyBatis基础回顾及高级应用-MyBatis相关概念回顾(一)
基于前面章节的基础,我们实现了一个Mybatis框架的雏形,在完成了MyBatis雏形的基础之上,会对我们后续的MyBatis
源码剖析
的课程有一个极大的帮助,当然我们之前自定义持久层框架的功能并不是很完善
Love为何
·
2021-03-24 23:45
java实现gdal栅格矢量化,《GDAL
源码剖析
与开发指南》一一1.5 GDAL源码目录
本节书摘来自异步社区出版社《GDAL
源码剖析
与开发指南》一书中的第1章,第1.5节,作者:李民录更多章节内容可以访问云栖社区“异步社区”公众号查看。
首阳大君
·
2021-03-22 00:02
java实现gdal栅格矢量化
Android之Launcher介绍(一)
image.png目录Android之zygote
源码剖析
(一)Android之zygote
源码剖析
(二)Android之zygote
源码剖析
(三)Android之SystemServer介绍(一)Android
Lee_5566
·
2021-03-16 20:50
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
上一页
24
25
26
27
28
29
30
31
下一页
按字母分类:
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
其他