精华内容
下载资源
问答
  • 这里介绍一下AOP的基本概念,和相关名词的解释。 1.AOP的基本概念介绍 AOP:Aspect Oriented Programming的缩写,中文意思为面向切...2.AOP相关名词解释 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个

    这里介绍一下AOP的基本概念,和相关名词的解释。

    1.AOP的基本概念介绍

    AOP:Aspect Oriented Programming的缩写,中文意思为面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术

    主要功能:日志记录、性能统计、安全控制、事务处理、异常处理等等。

    2.AOP相关名词解释

    切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。

    连接点(Joinpoint):程序执行过程中某个特定的点。

    通知(Advice):在切面的某个特定的连接点上执行的动作。

    切入点(Pointcut):匹配连接点的断言,在AOP中通知和一个切入点表达式的关联。

    引入(Introduction):在不修改类代码的前提下,为类添加新的方法和属性。

    目标对象(Target Object):被一个或者多个切面所通知的对象。

    AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。

    织入(Weaving):把切面连接到其他应用程序类型或者对象上,并创建一个被通知的对象,分为:编译时织入,类加载时织入,执行时织入。

    3.Advice的类型

    前置通知(Before advice):在某个连接点(join point)之前执行的通知,但不能阻止连接点前的执行(除非它抛出一个异常)。

    返回后通知(After returning advice):在某连接点(join point)正常完成后执行的通知。

    抛出异常后通知(After threowing advice):在方法抛出异常后退出时执行的通知。

    后通知(After(finally)advice):在某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

    环绕通知(Around Advice):包围一个连接点(join point)的通知。



    展开全文
  • 名词解释

    2015-03-26 17:47:45
    这几天在做一个通用兑换的框架,看到这句话的时候,觉得很贴切。   ...框架往往都是针对某个特定应用领域的,是在对这个应用领域进行深刻理解的基础上,抽象出该应用的概念模型,在这些抽象的...

    这几天在做一个通用兑换的框架,看到这句话的时候,觉得很贴切。

     

    框架:框架本身规划了应用程序的骨干,让程序遵循一定的流程和动线,展现一定的风貌和功能。这样就使程序员不必费力于通用性的功能的繁文缛节,集中精力于专业领域。

     

    放之四海而皆准的框架是不存在的,也是最没有用处的。框架往往都是针对某个特定应用领域的,是在对这个应用领域进行深刻理解的基础上,抽象出该应用的概念模型,在这些抽象的概念上搭建的一个模型,是一个有形无体的框架。不同的具体应用根据自身的特点对框架中的抽象概念进行实现,从而赋予框架生命,完成应用的功能。

    展开全文
  • 1.什么是Flink? Apache Flink is a framework and distributed processing engine for stateful ...Apache Flink是一个分布式处理引擎的框架,用对“有界数据“ 和“无界数据”流进行状态计算 1.1有界流和...

    1.什么是Flink?

    Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. 
    

    Apache Flink是一个分布式处理引擎的框架,用对“有界数据“ 和“无界数据”流进行状态计算

    1.1有界流和无界流怎么理解?

    • Unbounded streams :have a start but no defined end.
    • Bounded :streams have a defined start and end.
      在这里插入图片描述
      简单的来说,无界流就是有开始,没有结束。有界流就是有开始,也有结束

    1.2 有状态流式处理怎么理解?

    传统流计算处理方式:
    以时间划分,划分成一个一个批次,用批次运算引擎spark或mr去处理。但是举个例子:

    • a. 要实现每一个小时事件A->事件B conversion出现的次数
    • b. 而且假设A发生在3点59分,B发生在4点01分
    • c .先接受到B,在接收到A

    那么上述的情况如何处理呢?
    上述情况下就需要有一个中间状态保存中间计算结果,而且累积的状态会影响结果的产出。这就是我所理解的状态计算。

    综上总结下状态流计算的特点:

    • a.有办法累积和维护大量的状态
    • b.有办法依据时间决定所有的数据都接收完毕才产生结果,可以产出精准的result

    2.Flink对状态计算的处理

    2.1 状态容错(State Fault Tolerance)

    如何确保状态拥有exactly-once guarantee的容错保证?
    在每次触发计算完成后,对结果进行一次snapshot保存
    例如:
    第x次计算,保存x的位置和x的状态
    在这里插入图片描述
    第y次计算,保存y的位置和y的状态
    在这里插入图片描述
    但是 flink 在计算时是分布式计算,那么就需要保证每个节点的operator的状态在进行保存时全部保存,那么flink设计了global consisent snapshot 即全局一致的快照,也被称为checkpoint。checkpoint功能实现状态的保存,在故障恢复时会重新读取保存在dfs上的checkpoint进行恢复。

    那么分布式快照(distributed snapshots)是如何实现的呢?
    在这里插入图片描述
    flink引入了checkpoint barrier的概念来实现全局一致快照,后续章节我们会详细讲解。

    2.2 状态维护( state Management)

    注册状态
    在flink中调用以下方法进行状态注册

    val state = getRuntimeContext().getState();
    

    state 很小的时候可以在本地内存进行维护,假如state很大,则可以使用RocksDb进行状态维护,代价就是在状态写入和读取的时候需要进行序列化和反序列化。

    2.3 Event-Time处理( event-time processing)

    在这里插入图片描述
    首先需要理解三种time的含义:

    • Processing time: Processing time refers to the system time of the machine that is executing the respective operation. 处理事件时的时间
    • Event time: Event time is the time that each individual event occurred on its producing device. 事件产生的时间
    • Ingestion time: Ingestion time is the time that events enter Flink. 事件进入flink的时间

    假设我们需要计算3点到4点直接数据的count数,我们应该在什么时间去触发计算呢?在flink中引入了一个watermarks机制来进行处理。

    watermarks:
    watermarks是flink中的特殊事件,一个带有时间戳t的watermark会让opeator不会在接受任何小于t的事件

    2.4 状态保存与迁移(save point and Migration)

    流式计算是一直在运行的,那么当你需要

    1. 更改逻辑
    2. 版本升级
    3. 并行度调整

    不得不停掉服务的时候,而且希望在重启后接着上次的位置继续进行计算,在flink中采用savepoint进行实现。savepoint可以理解成一个手动的checkpoint.

    3.Flink的架构

    Flink可以部署在多种环境下

    • yarn
    • mesos
    • stand-alone
    • k8s

    4.Flink的API

    flink提供了三层api供开发者使用,如下图
    在这里插入图片描述

    • ProcessFunctions提供对时间和状态的细粒度控制,实现复杂的事件业务逻辑,控制力度细,抽象能力差。
    • DataStream API 一般面向开发者,介于两者之间
    • SQL & Table API 即我们使用的sql,操作简单上手容易,但是控制力度比较粗,抽象能力强
    展开全文
  • 核心名词解释:Job:是Spring-batch框架的核心概念,它包含了批处理的所有操作Step:每一个Job由一个或多个Step组成,每个Step中涉及到itemReader,itemProcessor,ItemWriter,这三个接口顾名思义,一个负责数据源,一...

    Spring-batch框架学习总结(1)
    一.初识Spring-batch框架:
    1.核心名词解释:
    Job:是Spring-batch框架的核心概念,它包含了批处理的所有操作
    Step:每一个Job由一个或多个Step组成,每个Step中涉及到itemReader,itemProcessor,ItemWriter,这三个接口顾名思义,一个负责数据源,一个负责业务逻辑,一个负责处理后的数据输出;
    JobRepository:定义Job时,需要指定一个JobRepository,用来存储Job在运行过程中的状态信息,对于存储状态信息的原因为:如果Job运行失败了,Spring支持从失败的地方重新运行,而不是从头开始;
    JobLauncher:很好理解launchuer是用来执行Job的,如果不设置,系统也会默认给Job配置默认的Launcher;
    2.图解各名词关系:
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    3.Spring-Batch架构组件分类:
    Application(应用层):包含开发者应用Spring-batch编写的所有批处理作业和自定义代码;
    Batch Core(核心层):包含加载和控制批处理作业所必需的核心类,它包含了Job,Step,JobLauncher的实现;
    Infrastructure(基础架构层):基础架构层包含了Reader(ItemReader),Writer(ItemWriter),Services可以被应用层和核心层使用;

    4.各层关系图解:

    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    二.创建一个简单的Spring-batch项目
    1.创建spring-batch工程,将其导IDE中
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理

    2.创建一个简单的Job
    (1)创建一个Configuration包;

    (2)创建一个Configuration类:需加上@Configuration;@EnableBatchProcessing;

    (3)注入使用的依赖@Autowired:JobBuilderFactory;StepbuilderFactory;

    (4)类展示:

    package com.dhcc.batch.batchDemo.config;
    
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.Step;
    import org.springframework.batch.core.StepContribution;
    import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
    import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
    import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
    import org.springframework.batch.core.launch.JobLauncher;
    import org.springframework.batch.core.scope.context.ChunkContext;
    import org.springframework.batch.core.step.tasklet.Tasklet;
    import org.springframework.batch.repeat.RepeatStatus;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    
    @Configuration 
    @EnableBatchProcessing
    public class JobConfiguration {
        @Autowired
        private JobBuilderFactory jobBuilderFactory;
        @Autowired
        private StepBuilderFactory stepBuilderFactory;
    
        @Primary
        @Bean
        public Job helloWord() {
            return jobBuilderFactory.get("helloWordJob").start(step1()).build();
    
        }
    
        JobLauncher
        @Bean
        public Step step1() {
            return stepBuilderFactory.get("step1").tasklet(new Tasklet() {
    
                @Override
                public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                    System.out.println("Hello Spring Batch....");
                    return RepeatStatus.FINISHED;
                }
            }).build();
    
        }
    }
    

    (5)打开BatchDemoApplication启动服务器异常信息:
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    解决办法:分析spring-batch运行时需要数据库支持,而我们没有连接任何的数据库,故我们以spring中的内存数据库H2为例,进行配置,如下:

    <!-- 内存数据库h2 -->
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
            </dependency>

    添加完成,我们继续启动项目,查看控制台:
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    项目运行成功,我们看见控制台输出信息,我们成功创建了Job以及step,并打印出hello word Batch...
    三.开发环境的搭建
    前提:在MySQL数据库中创建我们需要的数据库,我创建的数据库名为springbatch;
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    1.我们以MySQL数据库为例,首先先加入Jdbc以及mysql数据库的一些依赖(记得注释掉H2内存数据库依赖);

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>

    2.在application.properties下添加配置信息;

    spring.datasource.url=jdbc:mysql://localhost:3306/springbatch?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=qitao1996
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.schema=classpath:/org/springframework/batch/core/schema-mysql.sql
    
    spring.batch.initialize-schema=always

    配置完成后,我们再次启动我们的项目,观察控制台:
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理

    可以看见项目运行成功,现在我们在进入数据库中观察我们的springbatch数据库结果我们发现运行之前没有任何表的数据库现在出现了如下表:
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    四.总结SpringBatch中的重要概念(经过二,三的学习对一进一步认识)
    1.Job:是一个接口,接口中定义了一个作业是怎么样执行的;JobInstance是为Job的一次运行,我们可以将其理解为Job的一个实例;JobExceution是JobInstace的每一次执行,他会记录状态,根据状态尝试执行,未执行成功,下一次继续执行
    2.JobInstance:是job的一次执行,一个JobInstance可重复执行,如果上一次执行失败下次执行的时候还会重新执行上次失败的job,每一次执行就是一个JobExceution
    3.JobParameters:作为参数可以用来启动Job,并且可以用来标识不同的Job,运行时提供给JobInstance,jonExceution根据状态和参数决定下一次是否继续执行
    4.JobExceution:每一次尝试执行一个Job的时候,我们就可以将其称为一个JobExceution,这个执行的结果可以为成功,也可以为失败,例如一个JobInstance执行失败了,下一次执行他传入的参数是上次执行的时间,他将会继续执行,这样始终执行的是一个JobInstance,而产生了两个JobExceution
    图例:
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    5.Step:主要分为两块
    (1)Tasklet:接口他其中包含了一个唯一的方法execute();
    (2)Chunk-based:一个一个处理Step中如下模块:
    ·itemReader:数据输入input:对于一个Step而言,每次读取一个条目;
    ·itemProcessor:数据处理processing
    ·ItemWriter:数据输出output:对于一个Step而言,每次根据设定输出批量一个条目;
    6.StepExecution:一个Step的每一次尝试执行,都会创建一个StepExection,在一个Step实际开始执行的时候创建(如下图解)
    Spring-Batch学习总结(1)——重要概念,环境搭建,名词解释,第一个项目及异常处理
    7.ExecutionContext:执行上下文,代表的是一个key-value键值对的集合,可以被Spring框架进行在持久化管理,能够是开发人员存储持久化状态,每一个JobExecution以及每一个StepExecution的执行都会对应一个执行上下文(ExecutionContext);对于StepExecution在每一次提交点时就会保存一下执行上下文,而对于Job是在每一个StepExecution执行之间进行保存,例如,我们从Step1换到Step2是就会保存;
    8.JobRepository:此条不再重复解释
    9.JobLauncher:接口,用于启动和加载Job,根据传入的参数进行启动,返回Job一次执行的情况,如下接口方法;

    public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException,
                JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException;
    

    下面附完整pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.dhcc.batch</groupId>
        <artifactId>batchDemo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>batchDemo</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-batch</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.batch</groupId>
                <artifactId>spring-batch-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- 内存数据库h2 
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
            </dependency>
            -->
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    转载于:https://blog.51cto.com/13501268/2176808

    展开全文
  • spark种的名词解释

    千次阅读 2016-04-21 07:31:59
    1.Application Appliction的概念和hadoop MR中的有些相似,都是指用户编写的Spark应用程序,其中...使用Driver这一个概念的分布式框架很多,比如hive等,Spark中的Driver即运行上述Application的main函数并创建SparkCo
  • 从J2EE的概念说起,到它的优势,到J2EE典型的四层模型,和它的框架结构,最后是J2EE十三种核心技术的一个简介。本文分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍,相信看完此文,读者会对...
  • 一、微软平台的发展史二、.Net框架包含的东西1、名词解释 BCL:基类库(Base Class Library)系统和底层提供的最基本的类库 CLR:公共语言运行时(Common Language Runtime) CLS:公共语言规范(Common Language Sp...
  • OneFlow 概念清单

    2021-02-15 06:54:22
    在算法开发部分,将解释深度学习算法开发过程中常用的一些概念名词,而在框架开发部分,则侧重于介绍 OneFlow 框架内部设计概念、重要数据结构。 算法开发 Placeholder Placeholder 即数据占位符,此概念用于描述...
  • Hibernate框架

    2018-09-09 10:51:53
    轻量级JavaEE应用的持久层框架,是一个完全的ORM框架。(说完这句话,肯定有很多人懵圈了,下面我来一个个解释) ... 知道了一些大概的名词解释,现在来看看hibernate在一个工程中到底处于一个什么样的地位
  • 老师懂得占一大部分,自己又不解释清楚或者压根解释不清楚,名字概念本身就有问题,其实就是个名词作表语,这个名词扩展为短语或者句子就okey了,强烈要求先教成份,再教词性,先打框架再填充材料,框架就好比永远...
  • 框架设计 ...名词解释 1、Registry:注册中心,一般是使用Zookeeper作为注册中心。用于服务的注册与发现。 2、Provider:暴露服务的服务提供方,会将服务注册到Registry注册中心。 3、Consume...
  • 什么叫持久层框架

    万次阅读 多人点赞 2017-03-14 20:19:07
    下面就对 持久层这个令我懵逼了好久的名词进行解释什么是持久层?持久是相对于瞬时来说的,* 持久层,可以理解成数据 保存在 数据库或者 硬盘一类可以保存很长时间的设备里面,不像放在内存中那样断电就消失了,也...
  • 文章目录一、AOP概念二、AOP的作用及优势三、AOP相关名词解释 一、AOP概念 AOP(全称Aspect Oriented Programming) 即:面向切面编程。 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是...
  • 前言 这篇文章主要是对AEM前沿技术文档的研究,主要整理了Adobe Experience Management官方文档对于集成SPA框架的各类文档,并加以略微梳理,本篇...文章目录前言1 名词解释2 AEM混合架构2.1 架构对比2.2 Content Fr
  • 一、名词解释 1. OAF(Oracle Application Framework) 是针对EBS12的新的框架,UI比其他版本(form)要好,功能也有所增强, 12里不少新的功能都是基于OAF开发的 2. BC4j(Business Component for java) 业务...
  • 今天梳理了与架构有关的几个容易混淆的概念,包括系统与子系统、模块与组件、框架与架构,解释了架构的定义,希望对各位有所帮助。 系统与子系统 关于系统,维基百科的定义如下: 系统泛指有一群有关联的个体组成...
  • SpringBoot+Dubbo+Zookeeper一、名词解释1、RPC2、SOA二、dubbo1、概念2、dubbo连接方式3、Dubbo 架构流程图三、Zookeeper1、介绍:2、Zookeeper 在Linux系统的安装3、服务启动四、Demo1、搭建环境ZooKeeper:dubbo-...
  • 在spring框架学习过程中,涉及到两个新名词:DI和IOC。开始总是混淆两者的概念,稀里糊涂,后来上网搜了一下又和同学讨论之后,基本上理解了二者的概念。实际上DI(依赖注入)和IOC(控制反转)就是同一个概念,只是...
  • 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词解释。最近空来整理了一下Spring中IoC的相关概念,即是复习,也是...
  • elasticsearch基本概念

    千次阅读 2013-11-05 12:37:24
    1. 名词解释  (1) 节点(node)  每一个运行实例称为一个节点,每一个运行实例既可以再同一台机器上,也可以在不同的机器上,所谓运行实例,就是一个服务器进程。在测试环境内,可以再一台服务器上运行多个...
  • 名词解释: 1. ⽬标类 原始类 指的是 业务类 (核⼼功能 --> 业务运算 DAO调⽤) 2. ⽬标⽅法,原始⽅法 ⽬标类(原始类)中的⽅法 就是⽬标⽅法(原始⽅法) 3. 额外功能 (附加功能) ⽇志,事务,性能 代理类的...
  • TP框架下钩子HOOK函数的出现原因

    千次阅读 2019-04-14 10:44:01
    钩子概念对初学者来说可能比较抽象难懂,但是只要掌握了他的工作方式,那么自己动手写一个钩子机制也不难。 Hook这个词很有意思,以下引用自某网络词典: Hook用作名词时意思是“钩”,转化为动词时可表示把某物弯...
  • 1 什么是 RabbitMQ ? RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。...名词解释 – Erlang语言 Erlang 是一种面向并发运行环境的通用编程语言,具有以下特征: ...
  • AOP名词解释: AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一...
  • 那么,接下来,笔者再根据安装过程中的一些名词对象进行解释,以及大致的运行原理。最后,再获取hadoop-example jar中的单词计数源码,进行解释并在hadoop环境中运行。一、hadoop基本概念hadoop包括两个核心组成: ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 110
精华内容 44
关键字:

概念框架名词解释