event

guava的eventBus和disruptor比较

你。 提交于 2020-01-10 05:49:00
EventBus: 基于观察者模式实现的, 本文基于同步模式来操作 ;这里只介绍下几个常用操作的代码实现: register:注册观察者实现:主要就是以把观察者观察的类key,同类观察者的set集合为value构成一个ConcurrenHashMap 代码如下: private final ConcurrentMap<Class<?>, CopyOnWriteArraySet<Subscriber>> subscribers = Maps.newConcurrentMap(); 这里有两步加锁:map分段锁,copyOnWriteArraySet读写锁; EventBus.post(Object):发送事件实现:根据事件的class找subscribers中的观察者,通过反射执行所有观察者的@Subscribe注解注释的方法; 代码如下: public void post(Object event) { Iterator<Subscriber> eventSubscribers = subscribers.getSubscribers(event); if (eventSubscribers.hasNext()) { dispatcher.dispatch(event, eventSubscribers); } else if (!(event instanceof

Unity旋转角色

泄露秘密 提交于 2020-01-09 13:40:11
currentHero为当前角色模型 private void OnGUI ( ) { if ( Event . current . type == EventType . MouseDown ) { //判断当前手指是按下事件 touchFirst = Event . current . mousePosition ; //记录开始按下的位置 } if ( Event . current . type == EventType . MouseDrag ) { //判断当前手指是拖动事件 touchSecond = Event . current . mousePosition ; //记录拖动的位置 currentHero . transform . Rotate ( new Vector3 ( 0 , - ( touchSecond . x - touchFirst . x ) , 0 ) * 1.5f , Space . World ) ; touchFirst = touchSecond ; } } 来源: CSDN 作者: coooliang 链接: https://blog.csdn.net/cl61917380/article/details/103904519

MUI事件绑定

こ雲淡風輕ζ 提交于 2020-01-09 07:58:42
除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用 on()方法实现批量元素的事件绑定。on( event , selector , handler )event:Type 除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实现批量元素的事件绑定。 .on( event , selector , handler ) event:Type: String,需监听的事件名称,例如:'tap' selector:Type: String,选择器 handler:Type: Function( Event event ),事件触发时的回调函数,通过回调中的event参数可以获得事件详情 示例:点击新闻列表,获取当前列表项的id,并将该id传给新闻详情页面,然后打开新闻详情页面 mui(".mui-table-view").on('tap','.mui-table-view-cell',function(){ //获取id var id = this.getAttribute("id"); //传值给详情页面,通知加载新数据 mui.fire(detail,'getDetail',{id:id}); //打开新闻详情 mui.openWindow({ id:'detail', url:

js记录之回车替换成TAB

柔情痞子 提交于 2020-01-08 15:40:36
之前有提过,我所在的行业是税务行业,所以做的项目大多和报表相关。 由于页面有过多的input,所以前阵子产品就提了,能不能实现回车替换TAB的功能,即回车后自动跳到下一个可输入的input元素。 刚开始我想到的,点击回车,能不能触发TAB的点击事件。经尝试,发现不行。随后也搜索了一下网页,找到如下的代码: document.onkeydown = function enterToTab() { if(event.srcElement.type != "submit" && event.srcElement.type!="image" && event.srcElement.type != "textarea" && event.keyCode == 13) event.keyCode = 9; } } 在IE8及以下是行的,但在chrome下不可以。 既然这条路行不通,那就只能转换思路了。 自己来定制类似tab的规则,因为产品的需求很简单,所以我只需要实现针对可输入的input text框,回车后,跳到下一个可输入的input text框即可。 所以基于上面的代码,我简单改了一下: //处理点击enter跳到下一个input document.onkeydown = function enterToTab(event){ var inputs = document

使用Vertx构建微服务

孤人 提交于 2020-01-08 08:17:37
Vertx Vert.x is a tool-kit for building reactive applications on the JVM.(Vertx是运行在JVM上用来构建reactive application的工具集) Vertx Design 响应式的(Responsive):一个响应式系统需要在合理的时间内处理请求。 弹性的(Resilient):一个响应式系统必须在遇到异常(崩溃,超时, 500 错误等等)的时候保持响应的能力,所以它必须要为异常处理 而设计。 可伸缩的(Elastic):一个响应式系统必须在不同的负载情况下都要保持响应能力,所以它必须能伸能缩,并且可以利用最少的资源来处理负载。 消息驱动(Message driven):一个响应式系统的各个组件之间通过 异步消息传递 来进行交互。 支持多种语言:只要能运行在JVM上的语言,基本都支持。 简单的并发模型:就像写单线程代码一样简单,多线程并发由Vertx控制。 支持Event Bus:在同一个vertx集群,各个verticle 实例间可以通过event bus通信。同时也支持跨进程的TCP Event Bus ( tcp-eventbus-bridge ) Vertx与Netty的关系:Vertx使用Netty处理所有的IO。 Vertx 术语 Verticle Vertx部署和运行的代码

原生js移动端滑动事件

廉价感情. 提交于 2020-01-08 05:18:17
移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成。但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件。处理touch事件能跟踪到屏幕滑动的每根手指。 以下是四种 touch 事件 touchstart: //手指放到屏幕上时触发 touchmove: //手指在屏幕上滑动式触发 touchend: //手指离开屏幕时触发 touchcancel: //系统取消touch事件的时候触发,这个好像比较少用 每个触摸事件被触发后,会生成一个event对象,event对象里额外包括以下三个触摸列表 touches: //当前屏幕上所有手指的列表 targetTouches: //当前dom元素上手指的列表,尽量使用这个代替touches changedTouches: //涉及当前事件的手指的列表,尽量使用这个代替touches 这些列表里的每次触摸由touch对象组成,touch对象里包含着触摸信息,主要属性如下: clientX / clientY: //触摸点相对浏览器窗口的位置 pageX / pageY: //触摸点相对于页面的位置 screenX / screenY: //触摸点相对于屏幕的位置 identifier: //touch对象的ID target: //当前的DOM元素 注意:

Disruptor的简单介绍与应用

◇◆丶佛笑我妖孽 提交于 2020-01-07 22:47:31
前言 最近工作比较忙,在工作项目中,看了很多人都自己实现了一套数据任务处理机制,个人感觉有点乱,且也方便他人的后续维护,所以想到了一种数据处理模式,即生产者、缓冲队列、消费者的模式来统一大家的实现逻辑。 下面时是对Disruptor基本使用的演示。使用中需要引入依赖 <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.4.2</version> </dependency> 名称解释 Ring Buffer 环境的缓存区,3.0版本以前被认为是Disruptor的主要成员。3.0版本以后,环形缓冲区只负责通过Disruptor的事件方式来对数据进行存储和更新。在一些高级的应用场景中,Ring Buffer可以由用户的自定义实现完全替代。 Sequence Disruptor使用Sequence作为一种方法来确定特定组件的位置。每个使用者(EventProcessor)与Disruptor本身一样维护一个序列。大多数并发代码依赖于这些序列值的移动,因此序列支持AtomicLong的许多当前特性。事实上,两者之间唯一真正的区别是序列包含额外的功能,以防止序列和其他值之间的错误共享。 Sequencer Sequencer是真正的核心,该接口的两个实现(单生产者,

Disruptor的简单介绍与应用

扶醉桌前 提交于 2020-01-07 22:40:36
前言 最近工作比较忙,在工作项目中,看了很多人都自己实现了一套数据任务处理机制,个人感觉有点乱,且也方便他人的后续维护,所以想到了一种数据处理模式,即生产者、缓冲队列、消费者的模式来统一大家的实现逻辑。 下面时是对Disruptor基本使用的演示。使用中需要引入依赖 <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.4.2</version> </dependency> 名称解释 Ring Buffer 环境的缓存区,3.0版本以前被认为是Disruptor的主要成员。3.0版本以后,环形缓冲区只负责通过Disruptor的事件方式来对数据进行存储和更新。在一些高级的应用场景中,Ring Buffer可以由用户的自定义实现完全替代。 Sequence Disruptor使用Sequence作为一种方法来确定特定组件的位置。每个使用者(EventProcessor)与Disruptor本身一样维护一个序列。大多数并发代码依赖于这些序列值的移动,因此序列支持AtomicLong的许多当前特性。事实上,两者之间唯一真正的区别是序列包含额外的功能,以防止序列和其他值之间的错误共享。 Sequencer Sequencer是真正的核心,该接口的两个实现(单生产者,

PyQt5响应回车事件的方法 - python

二次信任 提交于 2020-01-07 08:12:40
我在编程时遇到一个问题,就是PyQt5不能响应回车时间,也就是下面这段代码不能执行: if (event.key() == Qt.Key_Enter): 解决方法: 打印出事件码: def keyPressEvent(self, event): #这里event.key()显示的是按键的编码 print("按下:" + str(event.key())) 然后直接判断事件码: if str(event.key())=='16777220':#回车 print('ok') 以上这篇PyQt5响应回车事件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。 文章来源: 嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 我在编程时遇到一个问题,就是PyQt5不能响应回车时间,也就是下面这段代码不能执行: if (event.key() == Qt.Key_Enter): 解决方法: 打印出事件码: def keyPressEvent(self, event): #这里event.key()显示的是按键的编码 print("按下:" + str(event.key())) 然后直接判断事件码: if str(event.key())=='16777220':#回车 print('ok')

索引的执行计划变化

核能气质少年 提交于 2020-01-07 07:03:29
Mon Jan 6 18:48:26 2020 autopilot@10.10.10.11 ((none)) > use event; Database changed Mon Jan 6 18:48:30 2020 autopilot@10.10.10.11 (event) > explain SELECT a.* FROM event as a INNER JOIN current as b on a.`event_id` = b.`event_id` AND a.`event_ts` = b.`event_ts` INNER JOIN event_receiver as c on a.`id` = c.`event_id` WHERE (c.`username` = 'zhaolilei' AND a.`priority` in ('0', '1', '2') AND b.`status` = 'PROBLEM') GROUP BY a.`id` ORDER BY c.`event_ts` desc LIMIT 100 OFFSET 0; +----+-------------+-------+--------+-----------------------------------+--------------+---------+------------------+---