程序员的量化交易之路(4)--Esper之事件(3)

fsQCA实战:从数据校准到结果解读的完整流程(附R代码示例) 本文提供了一份完整的模糊集定性比较分析(fsQCA)实战指南,详细阐述了从数据校准、必要条件分析、真值表构建到布尔最小化与结果解读的全流程。通过R语言代码示例,帮助研究者掌握如何将理论转化为可操作的分析步骤,并产出稳健的中间解,以揭示导致结果的复杂条件组合。 阅读详情

欢迎转载学习,但转载须注明出处:http://blog.youkuaiyun.com/minimicall,尊重劳动成果,版权归我。

这一节中我们继续学习Esper的事件部分内容。

对应官方的文档为2.4-2.5

2.4 碎片及碎片类型(Fragment and Fragment Type)

有些情况,一个事件的某个属性本身又是一个事件。Esper对这种称作为fragment(碎片)和碎片类型。一个示例就是,两个或者更多的事件可以组成和一个新的事件作为输出,而这个输出事件在将来可能又作为其他事件的一个碎片属性。

 

碎片及类型属性使得你可以组合事件,而无需使用Java 反射API,这减少了事件底层操作处理。相关API见15.6,“Event and Event Type”

 

2.5 POJO事件(Plain-Old Java Object)

POJO是指类对象通过像JavaBean风格的方法提供getter方法向外界开放内部属性。这种事件类,也不是完全需要严格遵循JavaBean的约定,但一定要提供getter方法,或者是通过某种配置达到目的。

 

Esper支持JavaBean风格的事件类,它可以是某个基类的扩展,或者是一个或者多个接口的实现。Esper的时间模式和EPL语句也支持指向Java接口类和抽象类。

 

代表事件的类应该是不可变的。因为事件代表的是过去发生的动作或者状态的改变,所以应该是不能改变的。但这也不是严格要求,Esper引擎也接受可变的事件。

 

事件类的hashCode和equals方法无需实现。其实现也不会影响Esper引擎的工作表现。

 

2.5.1 Java Object Event Properties(Java对象事件属性)

前面我们提到,我们支持遵循标准JavaBean约定的属性类型,斌企鹅有一些是Esper特定支持的:

1)  Simple 简单属性仅仅包含一个单一的可检索的值。属性的底层实现可能是Java语言的内置类型(例如int,简单对象java.lang.String)或更为复杂的对象,它可能是由Java语言定义的、或者是应用定义的,或是第三方库定义的。

2)  Indexed 索引属性存储的是同一类型的有序对象容器,容器内的对象可以通过索引单独访问。

3)  Mapped JavaBean API的扩展,Esper考虑任何由以String类型作为key的映射属性。

4)  Nested 嵌套属性是指该属性所在的对象是一个事件的一个属性。即它是事件属性的属性。

 

假如这里有个NewEmployeeEvent事件类。这里的索引和映射属性返回的是Java对象,但也可以返回Java的内置类型(例如int和String)。Address对象和Employee对象都可以嵌套它们自己的属性,例如Address里面可以有街道名称,Employee中可以有雇员姓名。

public classNewEmployeeEvent {

public StringgetFirstName();

public AddressgetAddress(String type);

public EmployeegetSubordinate(int index);

public Employee[]getAllSubordinates();

}

 

简单事件属性需要一个getter方法,用于返回属性值。在这个例子中,getFirstName方法返回firstName事件属性,它为String类型。

 

索引事件属性需要如下的两种getter方法的至少一种。第一种,以整形为参数返回一个属性值,例如getSuborinate方法;另一种方法是返回整个数组对象,例如getAllSubordinates方法。在EPL或者事件模式语句中,索引属性通过property[index]来访问。

 

映射事件属性需要一个getter方法,它以String类型的关键字作为参数,返回属性值,例如getAddress方法。在EPL或者事件模式语句中,映射属性通过property(‘key’)来访问。

 

嵌套事件属性需要一个getter方法用于返回嵌套对象。getAddress和getSubordinate是映射和索引属性,它们返回的是一个嵌套对象。在EPL和事件模式语句中,嵌套属性通过property.nestedProperty来访问。

 

上述的这些属性可以任意的进行复合。例如下面就是这些属性的一些复合示例:

 

everyNewEmployeeEvent(firstName='myName')

everyNewEmployeeEvent(address('home').streetName='Park Avenue')

everyNewEmployeeEvent(subordinate[0].name='anotherName')

everyNewEmployeeEvent(allSubordinates[1].name='thatName')

everyNewEmployeeEvent(subordinate[0].address('home').streetName='Water Street')

 

类似的,这些语法可以应用在EPL语句任何事件属性名可以出现的地方,例如select列表,where语句,jion语句等。

 

select firstName,address('work'), subordinate[0].name, subordinate[1].name

from NewEmployeeEvent

whereaddress('work').streetName = 'Park Ave'

 

2.5.2 属性名

 

属性名遵循Java标准:java.beans.Introspector类和getBeanInfo方法返回属性名。此外,Esper还可以通过配置一个标识来关闭大小写敏感,表2.4是属性名和相应getter方法的示例。

 

方法 属性名 示例

getPrice()

Price Select pricefrom myEvent

getNAME()

NAME Select NAME frommyEvent

getItemDesc()

itemDesc

Select itemDesc frommyEvent

getQ() Q Select qfrom myEvent

getQN() QN Select QNfrom myEvent

getqn() qn Select qnfrom myEvent

gets() s Select sfrom myEvent

 

2.5.3 参数化类型

当你的getter方法的到的是一个参数化的类型,例如索引属性,Iterable<MyEventData>,映射属性Map<String,MyEventData>,那么这个参数化类型就是指向属性的属性表达式,它可以获得属性值。

 

public classNewEmployeeEvent {

  public StringgetName();

  public Iterable<EducationHistory>getEducation();

  publicMap<String, Address> getAddresses();

}

一个获得属性的表达式如下:

 

select name,education, education[0].date, addresses('home').street

from NewEmployeeEvent

 

2.5.4 索引和映射属性的setter方法

EPL语句可以更新事件的索引和映射属性,提供了设置属性的setter方法。

索引属性的setter方法必须形如setPropertyName,并且有两个参数,整形的索引参数和Object类型的属性新值。

 

映射属性的setter方法,必须是形如setPropertyName,并且接受两个参数,String类型的关键字和Object类型的属性值。

下面就是设置事件索引和映射属性的一个示例:

public class MyEvent{

  private Mapprops = new HashMap();

  privateObject[] array = new Object[10];

 

  public voidsetProps(String name, Object value) {

   props.put(name, value);

  }

 

  public voidsetArray(int index, Object value) {

   array[index] = value;

  }

  // ... alsoprovide regular JavaBean getters and setters for all properties

下面语句是设置索引和映射属性:

update istreamMyEventStream set props('key') = 'abc', array[2] = 100

 

2.5.5 已知的局限性

Esper是获得事件属性的字节码,当字节码获取失败时,这时候引擎会记录一个警告并使用java反射机制去获得属性值。

一个已知的局限性是,当想获得一个属性值,但真实获得的却是属性值子类的对象,引擎就会告警。

 

 

 


visio安装包 Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。 立即下载

相关推荐

功率半导体器件选型指南:从GTO、GTR到MOSFET、IGBT的原理与应用

功率半导体器件是电力电子系统的核心,如同电路中的智能开关,负责电能的转换与控制。其工作原理基于半导体材料的导电特性,通过控制信号精确管理电路的通断。这类器件的技术价值在于提升能效、减小体积并增强系统可靠性,广泛应用于变频器、逆变器、开关电源及新能源领域。理解不同器件如MOSFET的雪崩能量与IGBT的损耗计算,是进行高效、可靠电路设计的基础。本文聚焦于GTO、GTR、MOSFET和IGBT这四类经典全控型器件的特性对比与选型策略,帮助工程师在具体项目中做出经济可靠的选择。

cumo7370的博客 447

java七牛删除资源接口,java版七牛云批量删除空间文件

pom.xml导入七牛云jarorg.springframeworkspring-web4.1.4.RELEASEcom.squareup.okhttp3okhttp3.3.1compilecom.qiniuhappy-dns-java0.1.4compilejunitjunit4.12testlog4jlog4j1.2.17com.qiniuqiniu-java-sdk7.2.6compileo...

weixin_39810856的博客 340

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1579

程序员的量化交易之路(3)--Esper事件Event(2)

第二章 EventPresentation 事件描述 欢迎转载学习,但转载须注明出处:http://blog.youkuaiyun.com/minimicall,尊重劳动成果,版权归我。 这一章用于说明事件描述和建模的方法。 Esper 使用event type(事件类型)来描述事件的类型信息。 你的应用可以在Esper启动时或者在运行时通过API或者EPL语...

weixin_33979363的博客 217

2023-07-04 Fast-Lio论文中公式(6)与BCH公式中近似雅可比公式的一致性推导

将(1)式代入(6)式,就有。

wmorries的博客 479

抖音短视频数据抓取实战系列(一)——模拟器性能对比与优化配置

本文是抖音短视频数据抓取实战系列的开篇,重点探讨了模拟器选型与优化配置。通过对比雷电、夜神、逍遥三大主流模拟器在性能、抖音兼容性及抓包友好度上的表现,文章指出雷电模拟器因其稳定的桥接网络模式和良好的兼容性,是数据抓取的优选。并提供了雷电模拟器从安装、网络桥接到系统优化的详细配置指南,旨在帮助读者构建稳定高效的抓取环境。

weixin_29230901的博客 247

Esper事件处理引擎_9_EPL 语法_2_Context 上下文_3_过滤条件

官方地址:http://www.espertech.com Esper 事件引擎栏目:http://blog.youkuaiyun.com/xiaohulunb/article/category/2436609 EPL 语法代码见-GitHub代码地址:点击打开链接 涉及 Javabean,Listener,main 以 GitHub 包下为最新更新

2.wa 1565

6、业务影响分析(BIA)的数据收集与关键指标评估

本文全面解析了业务影响分析(BIA)的核心内容,包括数据收集、业务流程分析、信息系统与资产清单、人员与供应商依赖、影响声明、关键指标评估(如MTD、RTO、RPO)、威胁建模与风险分析等。通过详细的介绍和图表展示,帮助组织系统性地制定灾难恢复计划,以应对各种潜在风险,确保关键业务流程在灾难发生后能够快速恢复并持续运营。

moss5的博客 374

程序员的量化交易之路(33)--QuantConnect之案例1

转载需注明:http://blog.youkuaiyun.com/minimicall,http://cloudtrade.top/ 分析Cointrader有一定层度了,发现它毕竟不是一个产品,没有得到验证。在架构、编码等方面都非常的不规范。 想编写一个云交易平台,任道而重远。我们需要参照一些成熟的架构。 Quantopian的zipline不行,因为我就是看...

weixin_34364135的博客 4493

SAPGUI 与 ADT 的时代分野:在多云架构下,谁还能代表现代 SAP 开发

摘要(149字) SAP开发工具正经历代际更迭:SAPGUI基于专有协议(NI/DIAG)的厚客户端架构难以适配多云环境,而ADT(ABAP Development Tools)通过HTTP(S)协议和Eclipse生态成为ABAP Cloud/RAP开发的唯一入口。关键差异体现在:ADT支持CDS、行为定义等云原生对象建模,天然对齐BTP的零信任网络;集成ATC、Git等DevOps工具链;而SAPGUI无法创建RAP核心对象,在跨平台、自动化方面存在硬限制。官方文档明确将ADT作为Clean Core战

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 392

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ (Java)

如果你收到的是双机位C卷考试通知,需要针对性地调整备考策略。自2025年11月19日起,华为OD机试已正式从双机位A卷切换至。复杂度明显提升,需要组合多个算法点。题面相对简单,直接考查编程基本功。考查问题分析、算法选择和优化能力。通常为1-2个核心算法点的应用。

算法大师! 165

程序员的量化交易之路(5)--Esper之Map事件(4)

2.6 java.util.Map事件 2.6.1 概述 实现事件的类可以是一个实现java.util.Map接口的类。映射事件的事件属性是其通过get方法能够获得的值。   和数组对象事件类型一样,映射事件类型考虑了系统中的综合类型,是的不需要使用Java类来描述事件类型,这是的更容易在运行时更改事件,或者从其他类型生成类型信息。   一个给定的Map事件类型可以有一个或者多个超类型

MiniMicall的专栏 2581

从工具选型到落地实践:吃透 SAP Fiori Launchpad 配置工具体系

摘要: SAP Fiori Launchpad配置远非简单添加应用和分配角色,涉及技术目录、业务目录、Spaces/Pages等多层管理。官方推荐新工具分工:技术目录用FLPAM维护应用定义,业务目录用FLPCM编排应用组合,Spaces/Pages优化用户体验布局,而传统Groups模式已被标记弃用。这种分层治理模式(定义层-编排层-展示层)能有效解决传输混乱、升级兼容性问题,尤其适合大规模项目实施。关键在于区分技术配置与业务呈现,避免将所有功能堆砌在单一旧工具中。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 103

程序员的量化交易之路(6)-Esper之处理模型(5)

3 处理模型(Processing Model) Esper的处理模型是持续的:更新监听器listener和订阅者subscriber,当事件到来时,根据声明对事件流、视图、过滤和输出等。 监听器的接口是com.espertech.esper.client.UpdateListener,必须实现update方法,这个函数会在结果到来时触发。 3...

weixin_33898876的博客 787

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

程序员的量化交易之路(13)--Cointrader类图(1)

转载须注明出处:http://blog.youkuaiyun.com/minimicall?viewmode=contents, htpp://cloudtrader.top 今天开始正式切入到Cointrader的源码分析学习中,其主页为:https://github.com/timolson/cointrader. 它是基于Esper的一个比特币云交易托管平...

weixin_34342578的博客 198

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

程序员的量化交易之路(2)----Esper文档学习之技术概览(1)

转载请注明出处:http://blog.youkuaiyun.com/minimicall/ 在接下来的20个工作日中,我将坚持翻译或者略翻译Esper的官方文档。 为什么需要学习Esper,因为我们需要理解复合事件处理 Complex Event Processing (CEP)。在量化交易系统中,CEP是必不可少的。它负责处理海量的实时事件。 关于CEP更多知识,大家可以翻阅网络相关资料。我

MiniMicall的专栏 6406

程序员练级攻略(2018)-陈皓-笔记整理

程序员练级攻略(2018) 开篇词 入门篇 零基础启蒙 正式入门 修养篇 程序员修养 专业基础篇 编程语言 理论学科 系统知识 软件设计篇 软件设计 高手成长篇 Linux系统、内存和网络(系统底层知识) 异步I/O模型和Lock-Free编程(系统底层知识) Java底层知识 数据库 ...

steven的博客 1万+

Esper使用技巧

 win:参数 win:length win:length(10) 滑动窗口,存最近的10条数据 win:length_batch win:length_batch(10) 间隔窗口,存满10条触发查询 win:time win:time(5 sec) 滑动窗口,存最近5秒内的数据 单位:年/year  月/month  周/week 天/day 小时/hour 分/min 秒

swcj的专栏 4616

Esper企业版介绍(一)Esper HA

提供弹性CEP引擎 综述 短生命和扩展状态 查询语言为EPL持续查询 非模式化和查询驱动 对象模型 内存操作提高性能和减小延迟 增量和全备份保证性能和灵活性 自动检查点或自定义检查点 选择Extract和Load的状态接口 转换操作状态 替换EPL表述和执行时间(有限制的) QoS配置(不是非此即彼的) 不需要更改code 多个存储选择(文件系统/关系型数据库) 详细

王义凯 的博客 1803

Esper入门及示例(CEP引擎)

一,概述 关系型数据用来查询相对静态的数据,如果执行一些复杂的查询,要降低查询的频度。传统关系型数据库普遍将数据存储在硬盘(也有内存数据库),它的检索性能受限于硬盘访问性能。受制于关系型数据库的设计,如果频繁查询数据来实现实时统计则需要在较短时间内构建多次查询语句(SQL),每次检索都耗时较长,关系型数据库会成为系统瓶颈。总而言之,传统关系型数据库并不适合每秒成百上千次的查询统计。 Esper

antibodies的专栏 4674

程序员的量化交易之路(1)----规划开篇

其实,一直对量化交易有一定的理解和情节。早在中大读研究生的时候实验室师兄,已经去了中国平安核心投资团队,做高频交易研究的国源师兄的影响,就开始对金融世界产生了浓厚的兴趣。看了丁磊编著的《量化投资--策略与技术》和艾琳.奥尔德里奇的《高频交易》,反复的看,但是都入不了味,现在回过头来想,一个连股都不炒的人怎么可能入味呢。对一些金融的基本概念都不懂。 2013年7月出社会工作后,在10月份确

MiniMicall的专栏 1万+
上一篇: 程序员的量化交易之路(3)--Esper事件Event(2)
下一篇: 程序员的量化交易之路(5)--Esper之Map事件(4)
minimicall
博客等级 码龄18年 407粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值