监听器

web.xml可以配置哪些内容

微笑、不失礼 提交于 2020-02-22 11:01:35
web.xm用于配置Web应用的相关信息 如: 监听器(listener)[ @WebListener ] 、过滤器(filter)[ @WebFilter ]、Servlet [ @WebServlet ]、相关参数、会话超时时间、安全验证方式、错误页面等 配置Spring上下文加载监听器加载Spring配置文件并创建IoC容器 < context-param > < param-name > contextConfigLocation </ param-name > < param-value > classpath:applicationContext.xml </ param-value > </ context-param > < listener > < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class > </ listener > 配置Spring的OpenSessionInView过滤器来解决延迟加载和Hibernate会话关闭的矛盾 < filter > < filter-name > openSessonInView </ filter-name > < filter-class > org.springframework.orm

利用C#自带组件强壮程序日志

泪湿孤枕 提交于 2020-02-22 03:28:54
前言 在项目正式上线后,如果出现错误、异常、崩溃等情况, 我们往往第一想到的事就是查看日志。 所以日志对于一个系统的维护是非常重要的。 声明 本文中的示例代码旨在这个框架是怎么工作的,具体实现可以自由发挥。 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; 试想一下,如果你的日志完全是由第三方组件提供的; 那么就意味着,你的所有项目都必须引用这个dll; 也许你会说自己可以2次封装,那么依然需要所有项目都引用你的这个封装后的log项目, 另一方面 一些log组件需要实例化后才可以使用,比如log4net,这又意味着你得有一个全局的静态变量,或者你自己二次封装, 但其实微软已经为我们提供了2个十分方便的静态类,用于日志的记录。 System.Diagnostics.Trace和System.Diagnostics.Debug 关于这2个类的文档可以去看MSDN System.Diagnostics.Trace System.Diagnostics.Debug 它使用非常方便,不用引用任何dll。 调用它的方法也很简单 using System.Diagnostics; ... ... Trace.TraceError("这是一个Error级别的日志"); Trace.TraceWarning("这是一个Warning级别的日志"); Trace

在 .NET 程序中启用调试信息输出

不打扰是莪最后的温柔 提交于 2020-02-22 03:28:31
我们在开发当中,有时需要添加一些调试信息,以便在脱离集成调试环境时捕捉错误。Win32 编程常用 OutputDebugString 这个函数配合 DebugView 等工具来在程序中插入调试信息。为了将调试信息写入日志,也有很多方法和第三方工具,比如著名的 log4cxx。 .Net 平台下,我们只需要简单的调用 Trace 和 Debug 这两个类,即可实现大部分调试输出。 一、 Trace 和 Debug 的异同。 Trace 与 Debug 类均位于 System.Diagnostics. 我们在使用时,只需要引入该 namespace,同时在任何需要的地方直接调用即可。最大的区别在于,Debug 类仅在 Debug 模式下编译有效,而 Trace 类在 Debug 和 Release 模式下均可工作。例如这段代码: if (null == param1) { Debug.Fail("Debug: Parameter is null!"); // A return; } Trace.TraceInformation("Trace: Application Started!"); // B … 默认情况下,在 Debug 模式下编译,以上 A,B 两个均输出到调试环境中,比如,如果开启了DebugView,就可以看到类似如下的输出: Debug: Parameter is

轻量级RPC设计与实现第五版(最终版)

一世执手 提交于 2020-02-19 23:59:11
在最近一段时间里,通过搜集有关资料加上自己的理解,设计了一款轻量级RPC,起了一个名字 lightWeightRPC 。它拥有一个RPC常见的基本功能。主要功能和特点如下: 利用Spring实现依赖注入与参数配置 利用Netty来实现客户端与服务端的远程通信 利用Hessian来实现序列化 设置Zookeeper作为注册中心 新设监控器,通过心跳机制来判断服务端与监控器的网络连接状况,当出现不稳定时,认为服务端出现了问题,在注册中心删除相关的服务信息。 利用Netty的Promise来实现异步的传送 构建线程池来管理发送的请求线程 添加服务缓存机制,在注册中心宕机的情况下仍能进行服务消费。 支持服务扩展点发现机制(SPI),对Spring的SPI机制进行改进,解决了依赖注入问题。 在客户端从注册中心获取服务时,添加监听器,当注册中心对应节点发生变化时通知客户端修改本地缓存信息。 以上是 lightWeightRPC 的全部功能,本版本添加的内容就是最后一个功能,为服务节点添加监听器。 因为之前在本地添加了持久化的缓存,当服务消费时会先从缓存中查找信息,查不到再到注册中心查找,但是当服务地址等信息发生变化时,如果不对缓存信息进行修改就可能会发生错误。所以在本版本中为服务节点添加了监听器。 如何添加监听器 当客户端首次从注册中心获取服务信息时,会对有关服务节点添加监听器,具体方法在

SpringBoot自定义监听器

删除回忆录丶 提交于 2020-02-19 22:06:38
【问题】实现ApplicationListener接口和实现SmartApplicationListener 接口? 实现ApplicationListener接口针对单一事件监听 实现SmartApplicationListener 接口针对多种事件监听 其它注意: Order值越小越优先执行 使用application.properties中定义的优于其它方式 【问题】如何自定义监听器? 一、实现方式1 1、创建监听器类FirstListener.java @Order(1) public class FirstListener implements ApplicationListener<ApplicationStartedEvent> { @Override public void onApplicationEvent(ApplicationStartedEvent event) { System.out.println("hello, first listener"); } }    2、在spring.factories文件中增加配置监听器 org.springframework.context.ApplicationListener=com.example.demo.listener.FirstListener 3、运行查看效果 二、实现方式2 1、创建监听器类

【JMeter】初识JMeter(1)

会有一股神秘感。 提交于 2020-02-19 19:28:02
一、JMeter介绍 JMeter是一款开源桌面应用软件,可以用来模拟用户负载来完成性能测试工作。JMeter的功能在版本升级的过程中已经十分强大,现在多数互联网公司都在使用JMeter来完成产品或者项目的性能测试工作。因为开源所以更具扩展性,能够胜任更多的工具具有更多的可能性。 JMeter的体系结构 图3-1的中的每一个标签就是组件 X空间分为5个维度,Y空间分为2个维度,Z空间1个维度 X1~X5是负载模拟的一个过程,使用这些组件来完成负载的模拟。 Y1:包含负载模拟部分,负责模拟用户请求 Y2:结果验证部分,负责验证结果的正确性 Z:负责结果的收集,实践上只有一个组成部分--监听器,监听器不仅可以放在线程组内,也可以放在线程组之外 二、JMeter下载安装与运行 1)JMeter 安装 1.下载地址:http://jmeter.apache.org/(下载最新版本的JMeter,并解压到任意位置) 2.安装JDK,配置环境变量(JAVA_HOME),最低要求jdk 1.6及以上版本 2)JMeter 运行 1.进入到目录:D:\jmeter\Jmeter\ apache-jmeter-2.9\bin ,下运行jmeter.bat启动jmeter 注意:打开的时候会有图形化界面与命令窗口界面 2.打开之后,是中文界面,如果需要展示英文界面, 选项->选择语言->英语 ,即可

AWT事件处理

不想你离开。 提交于 2020-02-19 13:57:22
AWT事件处理基本概念 AWT事件处理过程中,主要涉及3类对象: ① Event(事件) :用户对组件的一个操作,称之为一个事件,以类的形式出现,例如,键盘操作对应的事件类是KeyEvent。其实例在该事件发生时由系统自动产生。每一种事件都对应专门的监听者。 ② Event Source(事件源 ):事件发生的场所,通常就是各个组件,例如按钮Button。 ③ Event Monitor(事件监听器) :接收事件对象并对其进行处理的类的对象,通常其中某个成员方法对事件进行相应的处理。 注:Java采取了事件委托处理模型,事件源自己不处理事件,而是把其自身所有可能发生的事件委托给事件监听器来处理。 事件: AWT的相关事件继承于java.awt.AWTEvent类,这些事件分为两大类:低级事件和高级事件。 低级事件是值基于组件和容器的事件,当一个组件发生事件,如鼠标进入、点击、拖放或组件的窗口开关等时,触发了组件事件。 ComponentEvent 组件事件:组件尺寸的变化、移动 ContainerEvent 容器事件:组件增加、移动 WindowEvent 窗口事件:关闭窗口、窗口闭合、图标化 FocusEvent 焦点事件:焦点的获得和丢失 KeyEvent 键盘事件:键按下、释放 MouseEvent 鼠标事件:鼠标单击、移动 高级事件是基于语义的事件

Java精选笔记_Servlet事件监听器

走远了吗. 提交于 2020-02-19 13:54:26
Servlet事件监听器 概述 在程序开发中,经常需要对某些事件进行监听,如监听鼠标点击事件、监听键盘按下事件等,此时就需要使用事件监听器。 事件监听器用于对程序中发生的事件进行监听,在监听的过程中会涉及几个重要组成部分: 事件(Event) 用户的一个操作,如点击一个按钮、调用一个方法、创建一个对象等。 事件源 产生事件的对象。 事件监听器(Listener) 负责监听发生在事件源上的事件。 事件处理器 监听器的成员方法,当事件发生的时候会触发对应的处理器(成员方法)。 Servlet事件监听器是一个实现特定接口的Java程序,专门用于监听Web应用程序,根据监听事件的不同可将这些接口分为三类 用于监听域对象创建和销毁的事件监听器 ServletContextListener接口 HttpSessionListener接口 ServletRequestListener接口 用于监听域对象属性增加和删除的事件监听器 ServletContextAttributeListener接口HttpSessionAttributeListener接口ServletRequestAttributeListener接口 用于监听绑定到HttpSession域中某个对象状态的事件监听器 HttpSessionBindingListener接口

Java事件监听的四种实现方式

只愿长相守 提交于 2020-02-19 13:52:34
1.事件对象: 一般继承自java.util.EventObject对象,由开发者自行定义. 2.事件源: 就是触发事件的源头,不同的事件源会触发不同的事件类型. 3.事件监听器: 事件监听器负责监听事件源发出的事件.一个事件监听器通常实现java.util.EventListener这个标识接口. 其整个处理过程是这样的,事件源可以注册事件监听器对象,并可以向事件监听器对象发送事件对象.事件发生后,事件源将事件对象发给已经注册的所有事件监听器. 监听器对象随后会根据事件对象内的相应方法响应这个事件. 以下为四种实现方式 Java代码: package TT; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.RootPaneContainer; /** *自身类作为事件监听器 : */ class EventListener1

事件机制(一)

浪子不回头ぞ 提交于 2020-02-19 12:02:12
我现在已经写完了委托事件模型,观察者模式1标准实现,以及一些先导文件. 以下是感想: 事件处理机制的目标之一是实现一个类似反射弧的反射. 即我在一个感受器给出特定的刺激之后会得到特定的响应. 翻译成计算机语言: 产生刺激的事物就是事件源 特定的刺激就是外部事件 特定的响应就是内部事件. 在来说说具体实现: *.特定的响应我们肯定用函数来做, 而且响应肯定和刺激有关,所以也确定了它的两个参数: 刺激发生地和刺激内容. 我们至此部分的确定了响应函数,谁来调用它还是个问题 *.刺激内容,这是个变化的,生动的,由人来给出,而且是以参数的形式给出, 而且是给到一个函数中,这个函数我暂且命名为刺激函数. 但是谁来调用刺激函数,刺激函数的效果是啥? *.基本猜想1:由感受器调用刺激函数(?),刺激函数的效果是改变感受器的参数 *.基本问题:感受器和响应部分是如何练习到一起的. *.联系已有模型,观察者模式: 被观察者类,又名Observable,watched,subject,model 刺激就是notifyObserver()的参数args,所以说,其实是你通过被观察者这个类产生刺激 所以说被观察者类其实是真实刺激源(你)和神经系统(这个软件)的中介, 所以说被观察者类才是真正的感受器. 所以说notifyObserver()方法其实就是感受方法,连接方式就是该方法中调用观察者的 update