handler

设计模式-责任链模式【二】

烈酒焚心 提交于 2020-03-20 22:56:10
3 月,跳不动了?>>> 什么是责任链模式? 客户端发出一个请求,链上的对象都有机会处理这个请求,客户端不需要知道谁是具体的处理对象。 好处: 发送者和接受之间结耦,并且客户端可以实现动态组合责任链,编程更加方便灵活。 应用场景 : 过滤器,api限流,权限控制,参数过滤,session过滤,表单过滤,请求头过滤等 项目结构和结果 这里我们以拦截关的形式,链表形式,开始上代码! 数据库表结构 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for gateway_handler -- ---------------------------- DROP TABLE IF EXISTS `gateway_handler`; CREATE TABLE `gateway_handler` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `handler_name` varchar(32) DEFAULT NULL COMMENT 'handler名称', `handler_id` varchar(32) DEFAULT NULL COMMENT 'handler主键id',

《es6标准入门》知识整理(3)

血红的双手。 提交于 2020-03-18 22:36:42
3 月,跳不动了?>>> Proxy介绍 Proxy 用于修改某些操作的默认行为;可以理解成,在目标对象之前架设一层"拦截",外界对对象的访问,都必须先通过这层拦截,因此提供了一层机制,可以对外界的访问进行过滤和改写。 const proxy = new Proxy(target,handler); target表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。 const obj = new Proxy({}, { get: function(target, key, receiver) { console.log(`getting ${key}`); return Reflect.get(target, key, receiver); }, set: function(target, key, value,receiver) { console.log(`setting ${key}`) return Reflect.set(target, key, value, receiver) } }) obj.count = 1 console.log(++obj.count)//2 proxy实例的常见方法 get(target,prop,receiver ) :拦截某个属性的读取,三个参数依次为目标对象、属性名和 proxy 实例本身 receiver,

Attempt to read from field 'android.view.View android.support.v7.widget.RecyclerView$ViewHolder.itemView'

怎甘沉沦 提交于 2020-03-18 12:52:48
问题 I am trying to select recyclerview item randomly with delay.I need to start random selection method after fragment load without any user interaction,But getting the following error. Afterward I put it on ImageView click to check but again I am getting same exception.Will anybody here tell me where I am making a mistake,or what else could be better way to achieve this.Below is my code package com.apponative.bjja.fragments; import android.os.Bundle; import android.os.Handler; import android

责任链模式

╄→гoц情女王★ 提交于 2020-03-18 02:18:24
目的: 将多个对象组成一条职责链,按照职责链的顺序一个个找出谁负责处理,弱化请求方和处理方之间的关联关系,让双方都成为可独立复用的组件 使用责任链提高程序灵活性,但也可能会导致处理延迟,如果请求者和处理者之间的关系是确定的,而且需求非常快的处理速度,不使用 chain of Responsibility demo1: package app; import java.util.Arrays; import java.util.List; import java.util.function.Function; public class App { public static void main(String[] args) throws Exception { String res = new Handler( Arrays.asList( x -> x.replace("script", "******"), x -> x.replace("fuck", "love"), x -> x.replace("hate","love") ) ).doFilter("<script>: alert(fuck java,hate you) "); System.out.println(res); } static class Handler { public Handler(List

Android的Handler,Message,Looper的原理详解

狂风中的少年 提交于 2020-03-17 16:46:20
某厂面试归来,发现自己落伍了!>>> 先说说Looper类:Looper就是为每一个线程创建一个Looper对象,维护一个MessageQueue,并循环从MessageQueue中取出消息并分发给Handler执行。下面是Looper源码中如何使用的一个示例 class LooperThread extends Thread { * public Handler mHandler; * * public void run() { * Looper.prepare(); * * mHandler = new Handler() { * public void handleMessage(Message msg) { * // process incoming messages here * } * }; * * Looper.loop(); * } * } 我们看看Looper.prepare干了些什么事 public static void prepare() { prepare(true); } //判断当前线程是否有Looper对象,没有则new一个并放到ThreadLocal中 private static void prepare(boolean quitAllowed) { if (sThreadLocal.get() != null) { throw new

Sending a simple message from Service to Activity

限于喜欢 提交于 2020-03-17 10:53:51
问题 I am trying to find a way to send an integer value from my Service to my MainActivity, yet I can't figure it out with the tutorials on the internet. I am using a Handler to receive my messages which I'm sending from a Thread in my Service. My code for the Thread in the service: private class ServiceThread extends Thread { @Override public void run() { super.run(); try{ Log.i("Service", "TASK PERFORMED"); int x = 0; for (int i = 0; i < 20; i++){ x += (random.nextInt(20) + 20); } theInteger = x

Spring MVC框架——原理及使用

ぃ、小莉子 提交于 2020-03-17 09:24:07
核心组件     1 、 DispatcherServlet :前端控制器器,负责调度其他组件的执行,可降低不同组件之间的耦合性,是 Spring MVC 的核心模块。     2 、 Handler :处理器,完成具体的业务逻辑。     3 、 HandlerMapping : DispatcherServlet 是通过 HandlerMapping 将请求映射到不同的 Handler 。     4 、 HandlerInterceptor :处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。     5 、 HandlerExecutionChain :处理器执行链,包括两部分内容, Handler 和 HandlerInterceptor 。     6 、 HandlerAdapter :处理器适配器,它可以完成执行业务逻辑之前的一些预处理,数据类型转换、封装等, DispatcherServlet 通过 HandlerAdapter 调用不同的 Handler 。     7 、 ModelAndView :装载了模型数据和视图信息,作为 Hanlder 的处理结果,返回给 DispatcherServlet 。     8 、 ViewResolver :视图解析器器, DispatcherServlet 通过它将逻辑视图转换成物理视图

SpringMVC的流程

放肆的年华 提交于 2020-03-17 06:56:46
起点:tomcat调用FrameworkServlet的service(ServletRequest req, ServletResponse res)方法: 1)FrameworkServlet的service(ServletRequest req, ServletResponse res) 方法转到2) 2)HttpServlet的service(ServletRequest req, ServletResponse res) 方法转到3) 3)FrameworkServlet的doGet(HttpServletRequest request, HttpServletResponse response) 方法转到4) 4)FrameworkServlet的processRequest(HttpServletRequest request, HttpServletResponse response) 方法转到5) 5)DispatcherServlet的doService(HttpServletRequest request, HttpServletResponse response) 方法转到6) 6) DispatcherServlet的doDispatch(HttpServletRequest request, HttpServletResponse response) /

架构师内功心法,必须完全掌握吃透的踢皮球方式的责任链模式详解

前提是你 提交于 2020-03-16 17:50:55
某厂面试归来,发现自己落伍了!>>> 在日常生活中责任链模式还是挺常见的,我们平时工作处理一些事务,往往都是各个部门协同合作完成某一个项目任务。而每个部门都有自己的职责,所以很多时候事情完成了一部分,便会交给下一个部门,直到所有的部门全部完成所有的工作之后,那么这个项目任务才算最终完成。还有平时说的过五关斩六将其实也是一种责任链的模式。 一、责任链模式的应用场景 责任链模式(Chain of Responsibility Pattern)是将链中的每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护下一个节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直到有对象处理这个请求为止。责任模式主要是解耦请求与处理,客户只要将请求发送到对应的链上即可,无需关心请求的具体内容和处理细节,请求会自动进行传递直至有节点的对象进行处理。 责任链模式适用于以下几个场景: 多个对象可以处理同一请求,但是具体由哪个对象处理则在运行时动态决定的; 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求; 可动态指定一组对象处理请求。 责任链模式主要包含两种角色: 抽象处理者(Handler):定义一个请求处理的方法,并维护下一个处理节点Handler对象的引用; 具体处理者(ConcreteHandler):对请求进行处理,如果不感兴趣,则进行转发。

SpringMVC工作原理

二次信任 提交于 2020-03-15 20:35:31
转自: 平凡希 老师 https://www.cnblogs.com/xiaoxi/ SpringMVC的工作原理图: SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、 DispatcherServlet调用HandlerAdapter处理器适配器。 5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、 Controller执行完成返回ModelAndView。 7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。 8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。 9、 ViewReslover解析后返回具体View。 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 11、 DispatcherServlet响应用户。 组件说明: