图解Disruptor框架(二):核心概念 概述 上一个章节简单的介绍了了下Disruptor,这节就是要好好的理清楚Disruptor中的核心的概念.并且会给出个HelloWorld的小例子. 在正式开始之前,我觉得有一点我感触非常的深刻,那就是:外国人取的类名真的真的非常的合适以及形象!看看接下来的内容就知道了! 核心概念介绍 下面这张图,非常好的总结了Disruptor中需要了解的核心概念: 多生产者多消费者模型 RingBuffer: Disruptor中的数据结构,用于存储生产者生产的…
图解Disruptor框架(一):初识Ringbuffer 概述 1. 什么是Disruptor?为什么是Disruptor? Disruptor是一个性能十分强悍的无锁高并发框架.在JUC并发包中,号称是性能最好的ArrayBlockingQueue(简称:ABQ),在Disruptor的面前,也只能低下骄傲的头颅了.现在我们来看一下官方给出的测试数据. 吞吐量 上图是官方给出的在不同的模式下,使用ABQ以及Disruptor的吞吐量对比图.可见,在相同的模式之下,ABQ的性能跟Disrupt…
核心概念 middleware 类似express 的中间件模型(实际上是构建在koa中间件模型上的),但是和koa 的中间件有差异 fusionjs 的中间件同时可以运行在浏览器页面加载的时候 services service 是任务可以暴露编程接口的library,主要与普通library的区别是fusion的service 可以动态的注入系统,通过es6 的import 操作(依赖注入) plugin 一个fusion的插件是一个包含service 以及middleware 的容器,插件定…
Spring其主要精髓 就是IOC和AOP.掌握好了这两点对于理解Spring的思想颇有意义. IOC(英文 Inversion of Control)就是控制反转的意思.就是把新建对象(new Object())的权利交给Spring容器去管理.程序员用的时候只需到容器中去取就可以.无需自己在去new一个对象.有很多的资料和书籍也称其为依赖注入.在我刚学这儿的时候也经常受到“依赖注入”和“控制反转”这样概念类的困扰,其实我倒是建议楼主不必为这些概念咬文嚼字.用了一段时间之后自己自然就会体会其中…
逻辑表 水平拆分的数据库(表)的相同逻辑和数据结构表的总称. 例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order. 真实表 在分片的数据库中真实存在的物理表.即上个示例中的t_order_0到t_order_9. 数据节点 数据分片的最小单元.由数据源名称和数据表组成,例:ds_0.t_order_0. 绑定表 指分片规则一致的主表和子表.例如:t_order表和t_order_item表,均按照order_id分片,则此两张表互…
核心术语 RingBuffer(容器): 被看作Disruptor最主要的组件,然而从3.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用户(使用其他数据结构)完全替代. Sequence(槽位置): Disruptor使用Sequence来表示一个特殊组件处理的序号.和Disruptor一样,每个消费者(EventProcessor)都维持着一个Sequence.大部分的并发代码依赖这些Sequence值的运转,因此Sequence支持…
一.Disruptor图解 二.disruptor核心概念 1.RingBuffer到底是啥?正如名字所说的一样,他是一个环(首尾相接的环)它用做在不同上下文(线程)间传递数据的buffer RingBuffer拥有一个序号,这个序号指向数组中下一个可用的元素 Ringbugger:基于数组的缓存实现,也是创建sequencer与定义WaitStrtegy的入口 Disruptor:持有RingBuffer.消费者线程池Executor.消费者集合ConsumerRepository等引用 2.…
一.AOP的核心概念回顾 https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/core.html#aop 我们先来看一下下面的这张图 说明: 程序运行时会调用很多方法,调用的很多方法就叫做Join points(连接点,可以被选择来进行增强的方法点),在方法的前或者后选择一个地方来切入,切入的的地方就叫做Pointcut(切入点,选择增强的方法),然后把要增强的功能(Advice)加入到切入点所在…
一.Storm核心概念 1.1 Topologies(拓扑) 一个完整的Storm流处理程序被称为Storm topology(拓扑).它是一个是由Spouts 和Bolts通过Stream连接起来的有向无环图,Storm会保持每个提交到集群的topology持续地运行,从而处理源源不断的数据流,直到你将主动其杀死(kill)为止. 1.2 Streams(流) Stream是Storm中的核心概念.一个Stream是一个无界的.以分布式方式并行创建和处理的Tuple序列.Tuple可以包含大多…
一.Storm核心概念 1.1 Topologies(拓扑) 一个完整的 Storm 流处理程序被称为 Storm topology(拓扑).它是一个是由 Spouts 和 Bolts 通过 Stream 连接起来的有向无环图,Storm 会保持每个提交到集群的 topology 持续地运行,从而处理源源不断的数据流,直到你将主动其杀死 (kill) 为止. 1.2 Streams(流) Stream 是 Storm 中的核心概念.一个 Stream 是一个无界的.以分布式方式并行创建和处理的…
原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/79200022 基本概念介绍 Elasticsearch是一个基于Lucene构建的开源.分布式.RESTful的搜索引擎,能够实现近实时(NRT)搜索,稳定.可靠.安装方便.Elasticsearch 不…
Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 ​ Docker镜像其实与虚拟机镜像很类似,我们可以将其理解为面向一个Docker引擎的只读模板,其中包含了文件系统.镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供一个简单的机制来创建和更新现有的镜像,当然我们也可以直接下载一个现成的应用镜像来直接使用. 2.Docker容器 ​ Docker类似一个轻量级的…
  本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 1.核心概念.     内容概览 前言 核心概念 RxSwift Combine 总结 参考内容   前言   未来已来,只是尚未流行! 响应式编程 这个名词已经久负盛名,但是在实际项目中采用了响应式编程的公司其实不多.如果您有 iOS 开发经历,那么您多半听说过 RxSwift,而 Rx 源自微软.提到Rx,往往也会提到源自微软的 MVVM模式.不过,本文不会讲解 MVVM. 由于 Combi…
elasticsearch核心概念 (1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒):基于es执行搜索和分析可以达到秒级 (2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常 (3)Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节…
本文基于最新的3.4.2的版本文档进行翻译,翻译自: https://github.com/LMAX-Exchange/disruptor/wiki/Introduction https://github.com/LMAX-Exchange/disruptor/wiki/Getting-Started Disruptor简介 最好的方法去理解Disruptor就是将它和容易理解并且相似的队列,例如BlockingQueue.Disruptor其实就像一个队列一样,用于在不同的线程之间迁移数据,但…
本文讲解大纲,分8个核心概念讲解说明: NRT Cluster Node Document&Field Index Type Shard Replica Near Realtime(NRT)近实时 Elasticsearch的核心优势就是(Near Real Time NRT)近乎实时,我们称之为近实时. NRT有两个意思,下面举例说明下: 从写入索引数据到数据可以被搜索到有一个小延迟(大概1秒): 举个例子:电商平台新上架一个新商品,1秒后用户就可搜索到这个商品信息,这就是近实时. 基于Ela…
RabbitMQ是什么? RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议,在完全不同的应用之间共享数据,RabbirMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的. 为什么使用RabbitMQ? 开源.性能优秀.稳定性保障 提供可靠的消息投递模式(comfirm).返回模式(return) 与SpringAMQP完美整合,API丰富 集群模式丰富.表达式配置.HA模式(高可用模式).镜像队列模式 保证数据不丢失的前提下做到高可靠性,可用性 解耦…
Disruptor是一款java高性能无锁并发处理框架.和JDK中的BlockingQueue有相似处,但是它的处理速度非常快!!!号称“一个线程一秒钟可以处理600W个订单”(反正渣渣电脑是没体会到). Disruptor功能十分强大,比如消费者阻塞等待:生产者-消费者一对一.一对多.多对一.多对多:构建消费者串/并行处理链等等. 具体的概念模型可以参考:https://www.cnblogs.com/haiq/p/4112689.html 下面是我基于Disruptor框架封装的工具.采用f…
一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述了一些要点,并配合一些代码样例,这有助于快速理解 spring 框架. 二.spring架构 核心容器层 Core 模块 提供了框架的基本组成部分,包括 IoC 及依赖注入功能. Bean 模块 实现 Bean 管理,包括自动装配机制等功能: 其中BeanFactory是一个工厂模式的实现. Con…
一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进行数据索引. Lucene只是一个框架,要利用它的功能,需要使用JAVA,并且在程序中集成Lucene.更糟的是,Lucene非常复杂,需要做很多的学习了解,才能明白它是如何运行的. Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,…
 Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口. • Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能.Struts2提供一个ActionSupport基类去 实现 常用的接口.Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Ac…
第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处理 5:使用第三方框架的良好整合 理解:控制反转:也称依赖注入,是面向切面编程中的一种设计理念,用来降低程序之间的代码耦合度的. 什么是依赖:在代码中一般指通过局部变量,方法参数,返回值等建立的对于其他对象的调用关系. 二:理解面向切面编程: 1面向切面编程(aop)是软件编程思想发展到一定阶段产物…
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Aspect(切面):通常是一个类,里面可以定义切入点和通知 (2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用 (3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around…
TensorFlow.js是通过WebGL加速.基于浏览器的机器学习js框架.通过tensorflow.js,我们可以在浏览器中开发机器学习.运行现有的模型或者重新训练现有的模型. 一.安装     有两种方法可以在你的项目中引入tensorflow.js.一种是通过script标签引入,另外一种就是通过npm进行安装. (1)通过script标签,如下: <!DOCTYPE html> <html lang="en"> <head> <met…
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(四)——Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 version:项目的当前版本 packaging:项目的打包方式,最为常见的jar和war两种 样例:…
一.Zookeeper简介 二.Zookeeper设计目标 三.核心概念         3.1 集群角色         3.2 会话         3.3 数据节点         3.4 节点信息         3.5 Watcher         3.6 ACL 四.ZAB协议         4.1 ZAB协议与数据一致性         4.2 ZAB协议的内容 五.Zookeeper的典型应用场景         5.1数据的发布/订阅         5.2 命名服务   …
一.组件(Components): 组件是构成 Angular 应用的基础和核心,它是一个模板的控制类,用于处理应用和逻辑页面的视图部分.组件知道如何渲染自己及配置依赖注入,并通过一些由属性和方法组成的 API 与视图进行交互,每个组件都能独立完成各自的功能. 我们可以通过一张图来理解一下组件: 组件要素:JavaScript.HTML.CSS 创建 Angular 组件的方法有三步: ① 从 @angular/core 中引入 Component 修饰器 ② 建立一个普通的类,并用 @Comp…
Maven学习总结(四)--Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 version:项目的当前版本 packaging:项目的打包方式,最为常见的jar和war两种 样例: 1.3.Maven为什么使用坐标? Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范. 拥有了统一规范,就可以把查找工作交给机器…
一.Zookeeper简介 Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护.Zookeeper可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知.集群管理.Master选举.分布式锁和分布式队列等功能.它具有以下特性: 顺序一致性:从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到Zookeeper中: 原子性:所有事务请求的处理结果在整个集群中所有机器上都是一致的:不存在部分机器应用了该事务,而另一部分没有应用的情况: 单一视图…
一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知.集群管理.Master 选举.分布式锁和分布式队列等功能.它具有以下特性: 顺序一致性:从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到 Zookeeper 中: 原子性:所有事务请求的处理结果在整个集群中所有机器上都是一致的:不存在部分机器应用了该事务,而另一部分没有应用的情…