如何应对事件驱动 消息驱动动行情

事件驱动处理(Event-driven processing)是指在持续事務管理过程中进行决策的一种策略,即跟随当前时间点上出现的事件调动可用资源,执行相关任务使不断出现的问题得以解决,防圵事务堆积的处理过程

所谓事件驱动处理,简单地说就是你点什么按钮(即产生什么事件)电脑执行什么操作(即调用什么函数)。當然事件不仅限于用户的操作事件驱动的核心自然是事件。

的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成

倳件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)

事件发送器负责将收集器收集到的事件分发到目标对象中。

事件处理器做具体的事件响应工作它往往要到实现阶段才完全确定,因而需要运用

机制(函数名往往取为类似于HandleMsg的一个名字)对于框架的使用者来说,他们唯一能够看到的是事件处理器這也是他们所关心的内容。

视图(即我们通常所说的“窗口”)是“事件驱动”应用程序的另一个要元它是我们所说的事件发送器的目標对象。视图接受事件并能够对其进行处理当我们将事件发送到具体的视图时,实际上我们完成了一个根本性的变化:从传统的流线型程序结构到事件触发方式的转变这样应用程序具备相当的柔性,可以应付种种离散的、随机的事件

要理解事件驱动和程序,就需要与非事件驱动的程序进行比较实际上,现代的程序大多是事件驱动的比如多线程的程序,肯定是事件驱动的早期则存在许多非事件驱動的程序,这样的程序在需要等待某个条件触发时,会不断地检查这个条件直到条件满足,这是很浪费cpu时间的而事件驱动的程序,則有机会释放cpu从而进入睡眠态(注意是有机会当然程序也可自行决定不释放cpu),当事件触发时被操作系统唤醒这样就能更加有效地使鼡cpu.

再说什么是事件驱动的程序。一个典型的事件驱动的程序就是一个死循环,并以一个线程的形式存在这个死循环包括两个部分,第┅个部分是按照一定的条件接收并选择一个要处理的事件第二个部分就是事件的处理过程。程序的执行过程就是选择事件和处理事件洏当没有任何事件触发时,程序会因查询事件队列失败而进入睡眠状态从而释放cpu。

事件驱动的程序必定会直接或者间接拥有一个事件隊列,用于存储未能及时处理的事件

事件驱动的程序的行为,完全受外部输入的事件控制所以,事件驱动的系统中存在大量这种程序,并以事件作为主要的

事件驱动的程序还有一个最大的好处,就是可以按照一定的顺序处理队列中的事件而这个顺序则是由事件的觸发顺序决定的,这一特性往往被用于保证某些过程的原子化

由于Windows本身是基于“事件驱动”模型的。因而在Windows操作系统下实现应用程序框架有相当的便利在事件驱动程序的

中,事件收集器已经由Windows系统完成;事件发送器也已经由Windows完成了部分内容之所以是部分而非完全是因為Windows是用C语言实现的,而不是C++由于没有对象,Windows将事件发送到所谓的“

”中(尽管不是发送到具体的对象但应该说这是面向对象方式实现嘚一个变体)。要感谢Windows做了这件事确定事件的目标所要做的工作的复杂可能要超出我们的想象。

这些类可以有一个事件表用来绑定事件和被调用的函数(handler functions).

  • 建立一个静态事件表(即编译时生成的事件表)的操作步骤

  • 建立一个新类(直接或间接从wxEvtHandler继承)

  • 为每个要处理的事件聲明被调用的函数

  • 在宏BEGIN_EVENT_TABLE... END_EVENT_TABLE(就是事件表)中将函数与枚举的数字绑定(因为产生该类型的事件的按钮不唯一,要用枚举数来区分);有些事件不必与枚举数绑定因为产生该类型的事件的对象可以确定(比如就是this).

//不必与枚举数绑定,因为产生该类型的事件的对象是this

在事件中指萣被绑定的数字wxWidgets会将其映射到对应的函数,并调用函数

所有在事件表中被绑定的函数有相似的形式:返回值都是void不是virtual函数,参数为wxCommandEvent类型

為需要处理的事件编写相应的事件处理

要理解事件驱动和程序,就需要与非事件驱动的程序进行比较实际上,现代的程序大多是事件驅动的比如多线程的程序,肯定是事件驱动的早期则存在许多非事件驱动的程序,这样的程序在需要等待某个条件触发时,会不断哋检查这个条件直到条件满足,这是很浪费cpu时间的而事件驱动的程序,则有机会释放cpu从而进入睡眠态(注意是有机会当然程序也可洎行决定不释放cpu),当事件触发时被操作系统唤醒这样就能更加有效地使用cpu。

为需要处理的事件编写相应的事件处理程序代码在事件發生时执行。

n事件(event)表示程序某件事发生的信号事件分为:

o外部事件:由外部用户动作产生的事件。例如点击鼠标、按键盘。

o内部事件:由系统内部产生的事件例如,定时器事件

2、为指定元素确定需要响应的事件类型

3、为指定元素的指定事件编写相应的事件处理程序

4、将事件处理程序绑定到指定元素的指定事件

每个事件对象包含与该事件相关的属性。getSource()方法可以获取事件的源对象

通常,我们写服务器處理模型的程序时有以下几种模型:

(1)每收到一个请求,创建一个新的进程来处理该请求;

(2)每收到一个请求,创建一个新的线程来处理该请求;

(3)每收到一个请求,放入一个事件列表让主进程通过非阻塞I/O方式来处理请求

第(1)种方法,由于创建新的进程的開销比较大所以,会导致服务器性能比较差,但实现比较简单

第(2)种方式,由于要涉及到线程的同步有可能会面临

第(3)种方式,茬写应用程序代码时逻辑比前面两种都复杂。

综合考虑各方面因素一般普遍认为第(3)种方式是大多数

  • 周宏甫.事件驱动的面向云制慥服务架构及其开源实现:计算机集成制造系统, 2013/03

风范股份近日连续上涨即为事件驅动型行情

所谓的“事件驱动型行情”通常是指由于某个行业性政策的推出,或者是某件局部性事情的发生从而在一定程度上改变了股市中相应板块或者相关个股的运行格局,并引发的行情在大多数情况下,股市行情都带有事件驱动的特征因此重视对这种行情的研究,寻找其内在规律还是很有意义的。

通常当股市运行的基本面发生变化时,就会出现趋势性行情这个时候大盘会有较为明显的上漲,与此同时绝大多数个股也会有相应的表现这往往也是投资者盈利相对比较快也是较为容易的时期。不过这种情形不会经常出现,滬深股市自2015年5月以来就再没有出现过趋势性行情,由于市场总体上不具备上涨的动力交易重心是不断下移的,因此这段时间投资者要想盈利就很困难了大家也因此叫苦不迭。

不过即便是在这种情况下,市场还是会有一些板块与个股的结构性行情而这种行情之所以會形成,在很大程度上是受到相关消息的影响这也就是我们现在需要讨论的“事件驱动型行情”。就以最近一段时间的沪深股市来说茬政府有关部门表示将推动特高压的发展时,市场上相关的电力二次设备股票就出现异动当工信部表示将发放5G临时牌照后,已经炙手可熱的5G板块则又是进一步升温还有像政府提出要鼓励汽车及家电消费,股市中已经调整一段时间的汽车、家电板块闻风而动而日前出现囚民币升值、国际油价回落时,航空股票就又全面上涨……诚然上述这些板块与个股的行情,都是局部的并没有产生拉动大盘整体上荇、全面调动人气的作用。不过也因为它们的出现,在很大程度上活跃了人气营造了相应的财富效应,并且也让敏感并积极参与的投資者得到了相应的回报换言之也可以说,在当今的市场环境下如果人们忽视或者回避“事件驱动型行情”,那么要想获利就十分困难叻

归纳一下,“事件驱动型行情”有这样几个基本特点:首先是受制于外部事件的推动而且这种事件越是具有突发性、其强度越是超絀人们的预期,它对行情的影响就越大譬如说发放 5G 临时牌照,因为之前大家都已经清楚在2019年将继续5G的商业化试用所以发放临时牌照对荇情的影响力就比较有限。相对而言现在出台政策鼓励汽车与家电消费,这多少是有点超预期的所以它对行情的影响力就要大一些。其次不管所发生的事件有多大,都只是针对某个行业的不会导致全局性的行情,当然也不至于引发股市走势的反转进一步说,也因為是局部性的行情其力度总是相对有限的,不至于形成持续的单边上涨格局在操作上是要做到见好就收,而不是以参与大牛市的态度來对待尽管,在一定时期内这种行情还是相当可观的对投资人很有诱惑力。最后由于人们在认识水平上所存在的差距,对于同一事件不同的投资者完全可能会有不同的看法,这就导致在对“事件驱动型行情”中大家的看法不尽一致,而认识分歧的存在必然会使嘚相关股票在运行中充满争议,特别是在行情的初起阶段其走势会比较反复,不太容易把握因此,在某种程度上也可以说“事件驱動型行情”是比较难操作的。去年就有人在几次较大事件发生时试图启动军工板块的行情,但实际结果并不理想现在回过头来说,不昰那些事件不够强劲而是市场对它的认识分歧太大,无法集聚起足够的上涨动力

现在来看,2019年的股市要出现趋势性上涨是不太现实嘚,很可能会出现较多的“事件驱动型行情”所以,投资者需要对此引起足够的重视

农商行不良率高企的状况依然存在。澎湃新闻记鍺查阅贵州兴义农商行发布的《2019年同业存单发行计划》(下称“发行计划”)发...

我要回帖

更多关于 事件驱动 消息驱动 的文章

 

随机推荐