handler

捕获系统异常崩溃的方法

杀马特。学长 韩版系。学妹 提交于 2019-12-05 06:48:27
1、使用PLCrashReporter框架 PLCrashReporterConfig *config = [[PLCrashReporterConfig alloc] initWithSignalHandlerType:PLCrashReporterSignalHandlerTypeMach symbolicationStrategy:PLCrashReporterSymbolicationStrategyAll]; PLCrashReporter *reporter = [[PLCrashReporter alloc] initWithConfiguration:config]; NSData *data = [reporter generateLiveReport]; PLCrashReport *report = [[PLCrashReport alloc] initWithData:data error:nil]; NSString *reportStr = [PLCrashReportTextFormatter stringValueForCrashReport:report withTextFormat:PLCrashReportTextFormatiOS]; NSLog(@"%@", reportStr); 2

I'd like to use multiple services on one transport ( Thrift )

て烟熏妆下的殇ゞ 提交于 2019-12-05 05:44:34
I'd like to create several services, and I want to use them with different identifiers. So I mean : I've got a Users and Projects service . I want to use these at the same time. I mean I can add more 'services' to the "handlermap" on xmlrpc. http://ws.apache.org/xmlrpc/server.html phm.addHandler("Users", Users.class); phm.addHandler("Projects", Projects.class); I would like to do the same in the thrift. Here is a simple example : test.thrift typedef i64 UserId struct Bonk { 1: string message, 2: i32 type } struct Insanity { 1: map<Bonk, UserId> userMap, 2: list<Bonk> xtructs } service

drf 的分页功能

自作多情 提交于 2019-12-05 05:18:24
1 settings中配置 page_size = 20 代表每页20条数据REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', ), 'DEFAULT_PAGINATION_CLASS': 'leapin.api.pagination.LeapinPageNumberPagination', 'PAGE_SIZE': 20, 'DEFAULT_AUTHENTICATION_CLASSES': ( 'leapin.api.authentication.CsrfExemptBasicAuthentication', 'leapin.api.authentication.CsrfExemptSessionAuthentication', ), 'EXCEPTION_HANDLER': 'leapin.api.exceptions.handler.api_exception_handler',} 来源: https://www.cnblogs.com/tangda/p/11908951.html

类注解、方法注解

ⅰ亾dé卋堺 提交于 2019-12-05 04:54:00
定义注解类: @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface SignCheck { RequiredType required() default RequiredType.FORCE; } 定义拦截器: public class ApiSignInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { SignCheck signCheck = InterceptorUtils.getAnnotaion(handler, SignCheck.class); if (signCheck == null) { return true; } else { return signCheck(request, response); } } private boolean signCheck(HttpServletRequest request,

设计模式18——Chain of Responsibility设计模式

我们两清 提交于 2019-12-05 03:37:30
Chain of Responsibility(CoR)责任链设计模式是用一系列请求处理器试图处理一个请求,这些请求处理器之间是一个松散耦合,唯一的共同点是在他们之间传递请求。例如客户端发送一个请求,请求处理器A先处理,如果A没有处理或者无法处理,就将请求传递给请求处理器B,如果B没有处理或者无法处理,就将请求传递到请求处理器C去处理,所有这些请求处理器构成一条请求处理责任链。Chain of Responsibility责任链设计模式的结构如下: Chain of Responsibility责任链设计模式的时序图如下: 一个处理数字,字母和特殊符号的例子演示Chain of Responsibility,代码如下: //抽象请求处理器 abstract class Handler{ private Handler successor; public Handler(Handler successor){ this.successor = successor; } public Handler getSuccessor(){ return successor; } public void handRequest(Request request); } //Request请求类 class Request{ private String type; public Request

用注解实现SpringMvc

亡梦爱人 提交于 2019-12-05 03:36:11
在第一次完成spirngmvc代码的基础上: 开始时代码 index.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <h2>Hello World!</h2> <%--href="some"时是到发布的项目目录下找:访问网址是http://localhost/springmvc/some href="/some"是直接到服务器下找:访问网址是http://localhost/some--%> <a href="some.do">请求</a> </body> </html> web.xml <!--中央调度器--> <servlet> <servlet-name>springmvc</servlet-name> <!--写的那个servlet--> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <

drf的五大模块

寵の児 提交于 2019-12-05 03:12:10
1、请求模块:drf的request是对wsgi的request二次封装,且完全兼容,拓展query_params和data两个属性 request._request request._request = request request.query_params = request._request.GET request.data(form-data,urlencoded,json) 2、渲染模块:可以全局和局部配置渲染方式 renderer_classes = [] DEFAULT_RENDERER_CLASSES: [] 3、解析模块:可以全局和局部配置能解析的数据包 parser_classes = [] DEFAULT_PAARSER_CLASSES: [] 4、异常模块:自定义异常模块,可以自定义异常返回以及提供记录异常的接口(这里接口的意思就是该需求后期可以在这里添加) 'EXCEPTION_HANDLER': 'api.utils.exception_handler', from rest_framework.views import exception_handler as drf_exception_handler def exception_handler(exc, context): response = drf_exception_handler(exc,

SpringMVC之拦截器

时光怂恿深爱的人放手 提交于 2019-12-05 03:00:36
1 概述 SpringMVC可以使用兰机器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须HandlerInterceptor接口。 HandlerInterceptor接口的定义如下: package org.springframework.web.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.lang.Nullable; import org.springframework.web.method.HandlerMethod; public interface HandlerInterceptor { /** * 这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求进行处理。如果程序员决定拦截器对请求拦截处理后 * 还要调用其他拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求, * 则返回false。 */ default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object

DRF请求响应组件

♀尐吖头ヾ 提交于 2019-12-05 02:54:14
DRF请求响应组件 1.请求模块 1、drf的request是在wsgi的request基础上再次封装 2、wsgi的request作为drf的request一个属性:_request 3、新的request对旧的request做了完全兼容 4、新的request对数据解析更规范化:所有的拼接参数都解析到query_params中,所有数据包数据都被解析到data中 5、query_params和data属于QueryDict类型,可以 .dict() 转化成原生dict类型 #drf的request是对wsgi的request二次封装,且完全兼容,拓展query_params和data两个属性 request._request request._request = request request.query_params = request._request.GET request.data(form-data,urlencoded,json) """ 源码分析 1、drf的APIView类:重写了as_view(),但主体逻辑还是调用父类View的as_view(),局部禁用了csrf认证 重点:所有继承drf的基本视图类APIView的视图类,都不在做csrf认证校验 2、drf的APIView类:重写了dispatch(),在内部对request进行了二次封装:self

Netty学习篇⑤--编、解码

ⅰ亾dé卋堺 提交于 2019-12-05 02:18:29
前言 学习Netty也有一段时间了,Netty作为一个高性能的异步框架,很多RPC框架也运用到了Netty中的知识,在rpc框架中丰富的数据协议及编解码可以让使用者更加青睐; Netty支持丰富的编解码框架,其本身内部提供的编解码也可以应对各种业务场景; 今天主要就是学习下Netty中提供的编、解码类,之前只是简单的使用了下Netty提供的解码类,今天更加深入的研究下Netty中编、解码的源码及部分使用。 编、解码的概念 编码(Encoder) 编码就是将我们发送的数据编码成字节数组方便在网络中进行传输,类似Java中的序列化,将对象序列化成字节传输 解码(Decoder) 解码和编码相反,将传输过来的字节数组转化为各种对象来进行展示等,类似Java中的反序列化 如: // 将字节数组转化为字符串 new String(byte bytes[], Charset charset) 编、解码超类 ByteToMessageDecoder: 解码超类,将字节转换成消息 解码解码一般用于将获取到的消息解码成系统可识别且自己需要的数据结构;因此ByteToMessageDecoder需要继承ChannelInboundHandlerAdapter入站适配器来获取到入站的数据,在handler使用之前通过channelRead获取入站数据进行一波解码;