监听器

案例分析:设计模式与代码的结构特性

亡梦爱人 提交于 2019-12-08 20:55:35
模式存在的意义 现实生活中的例子 在现实世界中,很多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或多个其他对象的行为也发生改变。 例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。像这样的例子还有很多,比如股票价格与股民的联系、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等等。 在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者。 所有这些,如果用观察者模式来实现就非常方便。 观察者模式的动机 对于上述现实中存在的问题,观察者模式建立起一种对象与对象之间的依赖关系,当一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。 在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机。 观察者模式的定义与结构 模式的定义 观察者(Observer)模式是指多个对象间存在 一对多的依赖关系 ,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 因此这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。

LitElement(五)事件

Deadly 提交于 2019-12-07 22:59:31
1、概述 1.1 在何处添加事件监听器 您需要以一种可以在事件发生之前触发的方法添加事件监听器。但是,为了获得最佳的加载性能,应尽可能晚添加事件监听器。 你可以在以下位置添加事件监听器: 1.1.1 组件的模板中 您可以在 render 函数内的模板中使用lit-html @event 绑定,将事件监听器添加到组件中。例如: render() { return html`<button @click="${this.handleClick}">`; } 1.1.2 在组件构造方法中 如果您需要监听将组件添加到DOM之前可能发生的事件,则可能需要在组件的构造函数中添加事件监听器。例如: constructor() { super(); this.addEventListener('DOMContentLoaded', this.handleLoaded); } 1.1.3 在firstUpdated中 firstUpdated 是一个LitElement 生命周期回调 。首次更新和渲染组件后,会触发firstUpdated。 如果您要处理的事件在第一次更新和呈现组件之前无法发生,那么在firstUpdated中为其添加监听器是安全有效的。 firstUpdated(changedProperties) { this.addEventListener('click', this

Oracle Lsnrctl监听器的启动和关闭

末鹿安然 提交于 2019-12-07 17:42:19
对于DBA来说,启动和关闭oracle监听器是很基础的任务,但是Linux系统管理员或者程序员有时也需要在开发数据库中做一些基本的DBA操作,因此了解一些基本的管理操作对他们来说很重要。本文将讨论用LSNRCTL命令启动、关闭和查看监听器的状态的方法。 1、怎样启动、关闭和重新启动oracle监听器 在启动、关闭或者重启oracle监听器之前确保使用lsnrctl status命令检查oracle监听器的状态。除了得到监听器的状态之外,你还可以从lsnrctl status命令的输出中得到如下的信息: 》监听器的启动时间 》监听器的运行时间 》监听器参数文件listener.ora的位置,通常位于$ORACLE_HOME/network/admin目录下 》监听器日志文件的位置 如果oracle监听器没用运行,你将得到如下的信息 $ lsnrctl status LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 04-APR-2009 16:27:39 Copyright (c) 1991, 2007, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521)))

Spring 中的事件机制

倾然丶 夕夏残阳落幕 提交于 2019-12-07 14:00:39
说到事件机制,可能脑海中最先浮现的就是日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知listener,从而针对变化做相应的动作。这些listener是怎么实现的呢?说listener之前,我们先从设计模式开始讲起。 观察者模式 观察者模式一般包含以下几个对象: Subject:被观察的对象。它提供一系列方法来增加和删除观察者对象,同时它定义了通知方法notify()。目标类可以是接口,也可以是抽象类或具体类。 ConcreteSubject:具体的观察对象。Subject的具体实现类,在这里实现通知事件。 Observer:观察者。这里是抽象的观察者,观察者有一个或者多个。 ConcreteObserver:具体的观察者。在这里维护观察对象的具体操作。 按照观察者对象,我们来写一个简单的观察者示例,定义一个气象中心,发布气象信息,观察者是各个电视台,订阅气象中心的信息,有新增的气象信息发布的时候,及时播报。 定义气象中心: public interface WeatherCenter { void publishWeatherInfo(); } 定义观察者对象: public interface Observer { void sendWeatherWarning(); } 定义具体的观察者: public class

JMeter压测监控服务器性能

笑着哭i 提交于 2019-12-07 12:57:02
性能测试时,我们的关注点有两部分 1 服务本身:并发,响应时间,TPS等 2 服务器的资源使用情况:cpu,memory,NT I/O,Disk I/O等 服务器资源的监控具体操作步骤如下(主要记录我的实践过程): 说明:我的jmeter版本是3.1 一 、下载插件 1.访问网址http://jmeter-plugins.org/downloads/all/,下载三个文件。其中JMeterPlugins-Standard和JMeterPlugins-Extras是 客户端 的,ServerAgent是 服务端 的。 2.解压客户端的两个文件,进入其路径JMeterPlugins-Extras(Standard)-1.3.1\lib\ext,复制JmeterPlugins-Extras.jar(JmeterPlugins-Standard.jar)两个文件,放到JMeter客户端的lib/ext文件夹中,打开JMeter,可在监听器中看到Permon Metrics Collector,客户端配置成功。 3.将ServerAgent-2.2.1.jar上传到被测服务器,解压,进入目录,Windows环境,双击ServerAgent.bat启动;linux环境执ServerAgent.sh启动,默认使用4444端口,出现如下情况即 服务端成功 : 若提示端口被占用,可尝试更换端口启动

怎样启动、关闭和重新启动oracle监听器 in linux

北城以北 提交于 2019-12-07 04:23:34
对于DBA来说,启动和关闭oracle监听器是很基础的任务,但是Linux系统管理员或者程序员有时也需要在开发数据库中做一些基本的DBA操作,因此了解一些基本的管理操作对他们来说很重要。 本文将讨论用LSNRCTL命令启动、关闭和查看监听器的状态的方法。 怎样启动、关闭和重新启动oracle监听器 在启动、关闭或者重启oracle监听器之前确保使用lsnrctl status命令检查oracle监听器的状态。除了得到监听器的状态之外,你还可以从lsnrctl status命令的输出中得到如下的信息: 监听器的启动时间 监听器的运行时间 监听器参数文件listener.ora的位置,通常位于$ORACLE_HOME/network/admin目录下 监听器日志文件的位置 如果oracle监听器没用运行,你将得到如下的信息 view plaincopy to clipboardprint? $ lsnrctl status LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 04-APR-2009 16:27:39 Copyright (c) 1991, 2007, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)

Activiti使用总结

≡放荡痞女 提交于 2019-12-06 14:42:26
工作流在我们日常的工作中用得可谓相当普及,尤其在企业内部管理系统,如考勤、财务、合同等系统中更是离不开它。在我们金融科技领域,工作流主要用于贷款审批、风控审核等环节。早期工作流在企业信息化发挥着很重要的作用,随着信息化的初步完成,工作流核心技术也为国内很多大一点的系统集成的公司所掌握。比如我们合作过的宇信、神码、浪潮、企源等传统IT公司都拥有自主产权的的工作流框架。由于工作流具有一定的门槛,国内尚没有能满足企业级应用的工作流开源框架,一些国内CMS开源项目号称支持的工作流也只是对Activiti的简单引入或者是较简单的工作流实现,还不能完整的满足一般企业应用。 Activiti是目前最热门的开源工作流框架,由于中西方文化差异及组织架构上的不同,拿Activiti来做中国式的企业级应用难度很高,需要做大量的改造,这里记录下常见的思考点及解决思路,实际碰到的问题会更多且更复杂。 1 、待办已办在Activiti相关API中是面向任务的,需求是面向流程的 比如,如下图的需求 在Activit中一个流程是有多个Task组成,而我们中国式的审批需求是一个流程只允许出现一次,哪怕这个流程你在审批过程中参与过两次以上的审批任务,也仅需要显示一次。 这里就需要将TaskService查询出来的任务再按流程实例ID进行去重,去重后任务查询api的分页会变得不可用,对待办和已办未完结来说还好

testng.xml的运行机制部分总结

喜你入骨 提交于 2019-12-06 12:49:08
今天用到了testng的执行,确不太理解执行的机制是什么,就自己测试了一下、 1.testng.xml中存在两个标签groups和classes,执行是classes下边指定的TestCreateOrder类里的分组包含smoke分组的方法 <?xml version="1.0" encoding="UTF-8"?> <!--<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">--> <suite name="xjqa-scf-tset" preserve-order="true" thread-count="3" parallel="classes"> <!--SpringBaseTest代码中已经添加的监听器,请不要在这里重复添加,否则会导致监听器被多次调用--> <parameter name="save_result_to_db" value="true"/> <parameter name="enable_scf_config" value="true"/> <test verbose="5" preserve-order="true" name="xjqa-scf-tset"> <groups> <run> <include name="smoke"/> </run> </groups> <classes>

什么鬼,面试官竟然让我用Redis实现一个消息队列!!?

房东的猫 提交于 2019-12-06 07:48:49
GitHub 9.4k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 9.4k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 9.4k Star 的Java工程师成神之路 ,真的确定不来了解一下吗? 众所周知,redis是一个高性能的 key-value 数据库,在NoSQL数据库市场上,redis自己就占据了将近半壁江山,足以见到其强大之处。同时,由于redis的单线程特性,我们可以将其用作为一个 消息队列 。本篇文章就来讲讲如何将redis整合到spring boot中,并用作消息队列的…… 一、什么是消息队列 “消息队列”是在消息的传输过程中保存消息的容器。——《百度百科》 消息 我们可以理解为在计算机中或在整个计算机网络中传递的数据。 队列 是我们在学习数据结构的时候学习的基本数据结构之一,它具有先进先出的特性。 所以, 消息队列 就是一个保存消息的容器,它具有先进先出的特性。 为什么会出现消息队列? 异步:常见的B/S架构下,客户端向服务器发送请求,但是服务器处理这个消息需要花费的时间很长的时间,如果客户端一直等待服务器处理完消息,会造成客户端的系统资源浪费;而使用消息队列后,服务器直接将消息推送到消息队列中,由专门的处理消息程序处理消息,这样客户端就不必花费大量时间等待服务器的响应了; 解耦:传统的软件开发模式

Ehcache(06)——监听器

折月煮酒 提交于 2019-12-05 22:53:38
https://www.iteye.com/blog/elim-2119353 监听器 Ehcache中监听器有两种,监听CacheManager的CacheManagerEventListener和监听Cache的CacheEventListener。在Ehcache中,Listener是通过对应的监听器工厂来生产和发生作用的。下面我们将来介绍一下这两种类型的监听器。 1 CacheManager监听器 Ehcache中定义了一个CacheManagerEventListener接口来监听CacheManager的事件。CacheManagerEventListener可以监听的事件有CacheManager添加和移除Cache。其中定义有如下五个方法: Java代码 public interface CacheManagerEventListener { void init() throws CacheException; Status getStatus(); void dispose() throws CacheException; void notifyCacheAdded(String cacheName); void notifyCacheRemoved(String cacheName); } l init