监听器

【java web】监听器listener

≡放荡痞女 提交于 2020-01-07 15:21:14
一、简介 Java的监听器,也是系统级别的监听。监听器随web应用的启动而启动。Java的监听器在c/s模式里面经常用到,它会对特定的事件产生产生一个处理。监听在很多模式下用到,比如说观察者模式,就是一个使用监听器来实现的,在比如统计网站的在线人数。 1.1 监听器分类 1) 按监听的对象划分,可以分为:   ServletContext对象监听器   HttpSession对象监听器   ServletRequest对象监听器 2)按监听的事件划分   对象自身的创建和销毁的监听器   对象中属性的创建和消除的监听器   session中的某个对象的状态变化的监听器 二、适用场景 springMVC监听器主要的作用就是spring容器启动的时候加载一些数据,最常用的功能就是开发权限系统的时候,当监听器启动的时候,从数据库加载权限url。 三、实现 一、ContextLoaderListener ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,web.xml配置这个监听器启动容器时,就会默认执行它实现的方法。在ContextLoader-Listener中关联了ContextLoader这个类

ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL' 导致Oracle数据库无法启动

て烟熏妆下的殇ゞ 提交于 2020-01-06 18:00:40
前言    最近安装Oracle11g,重启电脑后,无法登陆数据库,到sqlplus登陆时就报错,没有例程。。。等等(忘记截图了),去看了下服务,监听器和实例服务都是开着的,就是无法启动数据库,到网上找了一些教程,通过 sqlplus / as sysdba 这种方式登录数据库,然后输入 startup 命令启动数据库就报了这两个错误。   个人分析,应该是监听器配置出现了问题,如果有知道的园友,麻烦告知一二。 解决步骤 1.先以 sqlplus / as sysdba 方式启动sqlplus sqlplus / as sysdba 2. 创建pfile create pfile from spfile 3.找到新建立的pfile,新建的pfile根据OS不同保存位置可能不一样(根据个人的Oracle安装路径查找) windows::\oracle\ product\11.2.0\dbhome_1\database\init$sid.ora UNIX:D:\oracle\ product\11.2.0\dbhome_1\database\INIT$sid.ora ($sid:是你的实例名,默认是orcl) 4.修改INIT$sid.ora文件 *.local_listener='(ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST =

Node.js 事件触发器详细总结

大憨熊 提交于 2020-01-05 02:00:56
Api目录   1、简单的注册、触发事件的流程   2、eventEmitter.defaultMaxListeners   3、emitter.setMaxListeners(n)   4、emitter.getMaxListeners(n)   5、emitter.prependListener(eventName, listener);   6、emitter.prependOnceListener(eventName, listener)   7、emitter.removeListener(eventName, listener)   8、emitter.removeAllListeners(eventName)   9、emitter.off(eventName, listener)   10、emitter.eventNames()   11、emitter.on('eventName', listener)   12、emitter.once('eventName', listener)   13、emitter.emit('eventName', params) 一、什么是事件模块(events) 1、大多数Node.js核心Api都是采用惯用的异步事件驱动架构 2、所有能触发事件的对象都是EventEmitter类的实例 3、事件流程:引入模块 ->

node事件循环

做~自己de王妃 提交于 2020-01-05 01:59:09
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。 Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。 Node.js 基本上所有的事件机制都是用设计模式中 观察者模式 实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例: // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); 以下程序绑定事件处理程序: // 绑定事件及事件的处理程序 eventEmitter.on('eventName', eventHandler); 我们可以通过程序触发事件: // 触发事件 eventEmitter.emit('eventName'); 实例 创建 main2.js 文件,代码如下所示: // 引入 events 模块 var events = require('events');

Node.js 学习(六)Node.js EventEmitter

谁说胖子不能爱 提交于 2020-01-05 01:56:29
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。 Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。 EventEmitter 类 events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。 你可以通过require("events");来访问该模块。 // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); EventEmitter 对象如果在实例化时发生错误,会触发 'error' 事件。当添加新的监听器时,'newListener' 事件会触发,当监听器被移除时,'removeListener' 事件被触发。 下面我们用一个简单的例子说明 EventEmitter 的用法: //event.js 文件 var EventEmitter = require('events')

vue双向绑定原理及实现

自闭症网瘾萝莉.ら 提交于 2020-01-04 00:45:19
vue双向绑定原理及实现 一、总结 一句话总结:vue中的双向绑定主要是通过发布者-订阅者模式来实现的 发布 订阅 1、单向绑定和双向绑定的区别是什么? model view 更新 单向绑定:model--->view(model更新view) 以往的MVC模式是单向绑定,即 Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新 双向绑定:model<--->view(model可以更新view,view也可以更新model) MVVM模式就是Model–View–ViewModel模式。它实现了View的变动,自动反映在 ViewModel,反之亦然。 我对于双向绑定的理解,就是 用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定。再说细点,就是在单向绑定的基础上给可输入元素(input、textare等)添加了change(input)事件,(change事件触发,View的状态就被更新了)来动态修改model。 2、双向绑定原理是什么? 发布 订阅 监听器 订阅者 解析器 vue数据双向绑定是通过 数据劫持 结合 发布者-订阅者模式 的方式来实现的。 我们已经知道实现数据的双向绑定,首先要对 数据进行劫持监听,所以我们需要设置一个 监听器Observer,用来 监听所有属性。如果属性发上变化了,

java监听器实现与原理

不问归期 提交于 2020-01-03 08:53:16
监听器,字面上的理解就是监听观察某个事件(程序)的发生情况,当被监听的事件真的发生了的时候,事件发生者(事件源) 就会给注册该事件的监听者(监听器)发送消息,告诉监听者某些信息,同时监听者也可以获得一份事件对象,根据这个对象可以获得相关属性和执行相关操作。 监听器模型涉及以下三个对象,模型图如下: (1)事件:用户对组件的一个操作,或者说程序执行某个方法,称之为一个事件,如机器人程序执行工作。 (2)事件源:发生事件的组件就是事件源,也就是被监听的对象,如机器人可以工作,可以跳舞,那么就可以把机器人看做是一个事件源。 (3)事件监听器(处理器):监听并负责处理事件的方法,如监听机器人工作情况,在机器人工作前后做出相应的动作,或者获取机器人的状态信息。 执行顺序如下: 1、给事件源注册监听器。 2、组件接受外部作用,也就是事件被触发。 3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器。 4、事件处理器启动,并执行相关的代码来处理该事件。 监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法;更形象地说,监听者模式是基于:注册-回调的事件/消息通知处理模式,就是被监控者将消息通知给所有监控者。 1、注册监听器:事件源.setListener。 2、回调:事件源实现onListener。 下面是一个模仿监听器的demo,需求

事件监听和触发Signal信号模式使用文档及Signal,redux-saga结合使用实例

大兔子大兔子 提交于 2020-01-02 18:31:40
js中常见的事件触发模式有订阅发布者模式,代码简洁,使用方便,但是这种模式并不能自动完成(除非把value作为常量或者变量存储),相对的Signal信号模式不需要创建常量来存储字符串值,轻松控制事件广播和订户,接下来是对该模式的一些总结。 使用: var Signal = require('signals'); var mySignal = new Signal(); mySignal实例 1,属性 mySignal.active = false/true; //该信号监听调度是否停止,默认true可用 mySignal.memorize = false/true; //该信号是否记录之前的调度参数并且自动执行,默认为false不记录 mySignal.VERSION = ''; //记录当前信号的版本 2,方法: add();添加监听器 //add(listener, listenerContext, priority); //listener 属于function类型,是信号操作函数 //listenerContext 属于object类型,是监听器的执行上下文环境,可选 //priority 属于Number类型,是该监听器的优先级,高优先级的先执行,默认为0,可选 //返回值是 SignalBinding 类型 mySignal.add(listener,

使用JMeter性能测试框架对FTP服务进行测试实践

烂漫一生 提交于 2020-01-02 08:47:21
软件测试工具,期末的一个小小的实训考核,参照官方文档 http://www.testclass.net/jmeter/jmeter-doc-07 ,做了一点点东西,非常简陋,大佬路过了千万忍住别怼我,我不接受(~ ̄▽ ̄)~ !!。 测试过程要求 参考testclass.net网站的相关文档,配置FTP及JMeter界面的对话框及参数输入,逐一实现如下过程: 配置一:用Serv-U软件架设FTP服务,要求: 1.局域网内部或本机环境,使用普通PC机或笔记本运行,尽可能关闭无关进程和杀毒软件; 2.涉及帐号及目录、文件命名以本人姓名的完整拼音构建,必要时在末尾加上1、2、3等数字作为区分。如张三命名为zhangsan1、zhangsan2……; 3.注意Serv-U软件的默认属性设置参数,必要时进行调整,以免与JMeter的操作产生冲突。 注:此配置不属于测试重点,不用过于详细的操作记录和描述。 (配置一的详细实现过程,移步我刚刚发布的另一篇博客“Windows中IIS和Serv-U两种方式搭建FTP服务 https://blog.csdn.net/weixin_42365530/article/details/103791330 ”,这里不在详细赘述如何实现) 配置二:在JMeter中创建FTP测试计划,要求: 1.参考http://www.testclass.net/jmeter

Jmeter(四十九)_常用的性能测试监听器

点点圈 提交于 2019-12-31 03:41:59
概述 jmeter中提供了很多性能数据的监听器,我们通过监听器可以来分析性能瓶颈 本文以500线程的阶梯加压测试结果来描述图表。 常用监听器 1:Transactions per Second 监听动态TPS,用来分析吞吐量。 其中横坐标是运行时间,纵坐标是TPS值。红色表示通过的TPS,绿色表示失败的。 最大TPS大约在140左右,从1分26秒左右,开始有未通过的事物 2:Hits per Second 动态监听单位时间的点击率,也就是触发的请求数。其中横坐标是运行时间,纵坐标是HPS值。 点击率波动较大,且不能持续上升。说明性能很不稳定 3:Response Times Over Time 监听整个事物运行期间的响应时间。其中横坐标是运行时间,纵坐标是响应时间(单位是毫秒) 响应时间在4950ms左右开始稳定下来,后续又经历一次大的波动 4:Response Times vs Threads 线程活动期间的响应时间监听。其中横坐标是活动的线程数(也就是并发数),纵坐标是响应时间(单位是毫秒) 5: Active Threads Over Time 监听单位时间内活动的线程数。其中横坐标是单位时间(单位是毫秒),纵坐标是活动线程数(也就是并发数) 6:Response Times Percentiles 监听响应时间分布的百分比。其中横坐标是请求数的百分比,纵坐标是响应时间