接口

Spring事件发布

ぐ巨炮叔叔 提交于 2020-03-24 07:47:34
Spring 事件发布 Author: xiaolu 概要: Spring 的 ApplicationContext 在 BeanFactory 的基础上,支持事件的发布(包括同步 - 默认,和异步事件)。 事件发布和事件监听处理本质上是观察者模式的一种使用方式。对于 Spring 事件的发布,包含三个部分: 事件实体、事件监听器、事件发布者。 事件实体: 事件实体定义了什么事件,同时包含了要传递的参数信息。 Spring 的事件发布中,自定义事件实体需要继承 ApplicationEvent 类。即所有的事件都是 ApplicationEvent 类的子类。 事件监听者: 事件监听者,即对某个事件感兴趣的部分,在特定事件发生后,需要去进行某种逻辑的处理。 Spring 中事件监听者需要实现 ApplicationListener 接口。在其 onApplicationEvent 函数中进行事件的处理。 事件发布者: 事件发布者即发布事件的部分,它推动了事件流程的开始。 Spring 中,事件的发布可以使用 ApplicationContext 类的 publishEvent 方法来进行发布。 代码示例: 1) Java 配置部分(替代 xml 文件配置方式) 2) 事件定义 此处定义一个 StartEvent 事件,继承于 ApplicationEvent 3) 事件监听者

Sax读取xml文件(一)

风流意气都作罢 提交于 2020-03-24 06:23:57
SAX是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。   常见的事件处理器有三种基本类型:   ● 用于访问XML DTD内容的DTDHandler;   ● 用于低级访问解析错误的ErrorHandler;   ● 用于访问文档内容的ContentHandler,这也是最普遍使用的事件处理器。 解析器读取输入文档并在处理文档时将每个事件推给文档处理器(MyContentHandler)。   与DOM相比,SAX解析器能提供更好的性能优势,它提供对XML文档内容的有效低级访问。SAX模型最大的优点是内存消耗小,因为整个文档无需一次加载到内存中,这使SAX解析器可以解析大于系统内存的文档。另外,你无需像在DOM中那样为所有节点创建对象。最后,SAX“推”模型可用于广播环境,能够同时注册多个ContentHandler,并行接收事件,而不是在一个管道中一个接一个地进行处理。   SAX的缺点是你必须实现多个事件处理程序以便能够处理所有到来的事件,同时你还必须在应用程序代码中维护这个事件状态,因为SAX解析器不能交流元信息,如DOM的父/子支持,所以你必须跟踪解析器处在文档层次的哪个位置

五分钟让你了解RPC原理详解

人盡茶涼 提交于 2020-03-24 01:20:42
RPC 功能目标 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性 。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。 下面我们将具体细化 stub 结构的实现。 RPC 调用分类 RPC 调用分以下两种 : 同步调用 客户方等待调用执行完成并返回结果。 异步调用 客户方调用后不用等待执行结果返回,但依然可以通过回调通知等方式获取返回结果。 若客户方不关心调用返回结果,则变成单向异步调用,单向调用不用返回结果。 异步和同步的区分在于是否等待服务端执行完成并返回结果。 RPC 结构拆解 如下图所示。 RPC 服务方通过 RpcServer 去导出(export)远程接口方法,而客户方通过 RpcClient 去引入(import)远程接口方法。 客户方像调用本地方法一样去调用远程接口方法,RPC 框架提供接口的代理实现,实际的调用将委托给代理 RpcProxy 。 代理封装调用信息并将调用转交给 RpcInvoker 去实际执行。 在客户端的 RpcInvoker 通过连接器 RpcConnector 去维持与服务端的通道 RpcChannel , 并使用 RpcProtocol 执行协议编码(encode)并将编码后的请求消息通过通道发送给服务方。 RPC 服务端接收器

目的与原则

谁都会走 提交于 2020-03-23 17:51:44
1. 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好的   1) 代码重用性 (即:相同功能的代码,不用多次编写)   2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解)   3) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)   4) 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)   5) 使程序呈现高内聚,低耦合的特性 原文链接: https://www.cnblogs.com/zhaye/p/11176906.html 2. 七大设计原则 1.开闭原则:用抽象构建架构,用实现扩展细节 2.依赖倒置原则:高层模块不应该依赖于底层模块,二者都应该依赖其抽象 3.单一职责原则:单个接口或类不应该有多个职责,应该尽可能的划分职责,通过组合的方式,完成更为复杂的业务 4.接口隔离原则:一个接口不要包含过多的职责,应合理划分,跟单一职责原则相辅相成 典型场景:动物、人、鸟,人和鸟都会吃,人会走路,鸟会飞,应该把走路和飞这两个行为抽象成接口,通过组合的方式让人拥有走路的行为,让鸟拥有飞的行为。再细划分,人有多个走路姿势,鸟有多个飞行方式,可以分别继承走路和飞的抽象行为扩展其具体的行为 5.迪米特法则:也就最少知道原则

Fiddler导出接口抓包数据

∥☆過路亽.° 提交于 2020-03-23 17:22:57
选择要抓包的接口 1.导出 .har文件 File-->Export Sessions-->Selected Sessions ,选择HTTPArchive v1.2-->Next,选择文件保存位置即可。 2.导出text文件 选择的接口右键-->Save -->Selected Sessions -->as Text 来源: https://www.cnblogs.com/may18/p/12552976.html

java中抽象类跟接口的区别

别说谁变了你拦得住时间么 提交于 2020-03-23 16:40:42
3 月,跳不动了?>>> 含有abstract修饰符的class 即为抽象类,abstract类不能创建实例对象,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不必是抽象的,抽象来中定义抽象方法必须放在具体子类中实现,所以呀,不能有抽象的构造方法或抽象的静态方法,如果子类没有实现抽象父类中的所有 方法,那么,子类也必须定义为抽象类。 接口(interface)可以说成是抽象类的特例。接口中的所有方法都必须是抽象的,接口中的方法定义默认为public abstract 。接口中的变量是全局常量,即public static final修饰的。 看一下他们在语法上的区别吧! 1,抽象类里可以有构造方法,而接口内不能有构造方法。 2,抽象类中可以有普通成员变量,而接口中不能有普通成员变量。 3,抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。 4,抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 5,抽象类中可以包含静态方法,接口内不能包含静态方法。 6,抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意

创龙TI AM5728浮点双DSP C66x +双ARM Cortex-A15开发板RTC座、USB OTG/USB HUB接口

六月ゝ 毕业季﹏ 提交于 2020-03-23 15:35:25
3 月,跳不动了?>>> 处理器 基于TI A M5728浮点 双 DSP C66 x +双ARM Cor t ex-A15 工业 控制及高性能 音 视频处理器 。 拥有多种工业接口资源,下图 为 A M5728 CPU资源框图: RTC 通过外部扩展RTC时钟控制器, 通过不可充电 CR1220型RTC座引出接口, 电压值为3V。 引脚定义如下图: USB OTG/USB HUB 接口 CON 1 0 为 Micro USB 2.0 接口,应用于各种不同的移动设备间的 连 接,进行数据交换 ,传输 速度高达480Mbps。CON9是USB 3.0接口,理论速度5.0Gbps,可以接USB摄像头、USB键盘、USB鼠标、U盘等常见的USB外设。对应引脚定义如下图: USB OTG原理图 USB HUB原理图 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/3209056

工厂方法模式

让人想犯罪 __ 提交于 2020-03-23 13:32:48
@ 目录 一、概述 二、模式结构图 三、模式中包含的角色及职责 四、具体代码实现 1、创建产品接口和工厂接口 2、创建具体产品 3、创建具体的产品工厂类 4、调用实现 五、简单工厂模式和工厂方法模式的比较 一、概述 工厂方法模式同样属于类的创建型模式,工厂方法模式是定义一个工厂接口,将实际创建工作推迟到子类当中。核心工厂不在负责产品对象的创建,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是可以是系统在不修改工厂角色的情况下引进新的产品。 二、模式结构图 三、模式中包含的角色及职责 组成(角色) 关系 作用 抽象产品(Product) 具体产品的父类 描述具体产品的公共接口 具体产品(Concrete Product) 抽象产品的子类;工厂类的目标类 描述生产的具体产品 抽象工厂(Factory) 具体工厂的父类 描述具体工厂的公共接口 具体工厂(Concrete Factory) 抽象工厂的子类;被外界调用 描述具体工厂FactoryMethod工厂方法创建产品的实例。 四、具体代码实现 1、创建产品接口和工厂接口 还是用水果工厂举例,首先我们需要水果接口和水果工厂接口来约束具体的水果类和水果工厂类; package 工厂方法模式; public interface Fruit { // 生产水果 public void get(); } package 工厂方法模式;

自动化接口测试之Postman

不羁岁月 提交于 2020-03-23 10:30:41
我们先思考一下,如果需要达到自动化接口测试的效果,那么我们在基本的模拟请求上还需要做哪些呢? 以下我粗略概括为 3 个问题(欢迎更多补充与建议): 如何判断接口是否请求成功 如何进行接口批量、定期测试 如何处理依赖接口问题(比如商品下单的接口必须要求先登录) 所以,接下来就主要分为 3 个部分进行介绍,以分别解决这 3 个问题。 一、接口结果判断 首先 , 既然是自动化测试 , 那么我们肯定需要 工具 (Postman) 或者代码能帮我们直接判断结果是否符合预期。那么在接口测试上,大体就两个思路: 判断请求返回的 code 是否符合预期 判断请求返回的内容中是否包含预期的内容(关键字) 接下来我们看看如何利用 Postman 来解决上述的问题: 1、功能区 在 Postman 中相关的功能在非常显眼的地方, Tests 功能的使用需要我们有一定的编程语言基础,目前支持的脚本语言即为 JavaScript 。 但比较好的一点是,我们不需要再去考虑上下文问题以及运行环境的问题 ,也就是说我们只需要在这边完成结果逻辑判断的代码块即可。而 Postman 还为我们提供了一些常用的代码模板,在 Tests 面板右边的 SNIPPETS 功能区中,所以对 JavaScript 不大了解问题也不大。代码编写相关将在下文进行具体介绍。 2、脚本相关 先看上图的代码部分,我们可以发现