handler

springmvc源码部分理解

白昼怎懂夜的黑 提交于 2020-01-15 03:56:11
目录 初始化 处理请求 总结: 主要还是借鉴了很多大佬的分析,参考如下: 完整版: https://www.cnblogs.com/zgwjava/p/11040154.html 分步骤一: https://blog.csdn.net/gududedabai/article/details/83352106 分步骤一: https://blog.csdn.net/gududedabai/article/details/83375156 详细版: https://blog.csdn.net/qq_38410730/article/details/79507465 从代码角度看: 初始化 DispatcherServlet.onRefresh() protected void onRefresh(ApplicationContext context) { this.initStrategies(context); } ​ //根据web.xml中配置的和默认的设置初始化 protected void initStrategies(ApplicationContext context) { this.initMultipartResolver(context); //上传文件相关 this.initLocaleResolver(context); //default this

Android10源码 Handler、Looper和MessageQueue

自作多情 提交于 2020-01-14 23:24:24
源码使用Android Q 知识储备 知道Handler是干什么的,怎么使用的就可以了,如果不会可以看度娘。 获取Handler的方法 以下方法为Google官方文档提供的说明 构造方法 说明 Handler() 默认构造函数将Handler与当前线程的Looper关联。 Handler(Handler.Callback callback) 构造函数将Handler与当前线程的Looper关联,并接受一个回调接口,在该接口中可以处理消息。 Handler(Looper looper) 使用传入的Looper Handler(Looper looper, Handler.Callback callback) 结合2、3 Handler源码 构造方法 public Handler ( ) { this ( null , false ) ; } public Handler ( @Nullable Callback callback ) { this ( callback , false ) ; } public Handler ( @NonNull Looper looper ) { this ( looper , null , false ) ; } public Handler ( @NonNull Looper looper , @Nullable Callback

Handler的一些认识和思考

与世无争的帅哥 提交于 2020-01-14 15:01:26
Handler作用: 线程之间切换的转换工具,安卓中主要作用是将子线程切换到UI线程,避免UI线程做耗时操作出现ANR Handler代码架构: Handler本身只负责发送和接收消息,在activity启动的时候创建一个loop,背后是一个MessageQueue管理着Message,而Looper循环主体,负责监听Message变化,从MessageQueue取出消息,然后向Handler发送消息 Handler的一些思考 Handler如何与线程关联? Handler的应用是线程与线程之间的通信,在handler创建之初,需要先创建Looper,Looper是作为消息循环,当handler创建后,Looper的消息分发给Handler处理,Looper和Thread的对应规则为:一对多,其原因是Looper处理消息循环为死循环 Looper的创建,如何实现,为什么不会造成线程阻塞? Looper的创建可分为两种 在activity创建的时候跟随ActivityThread.main方法创建Looper对象并开启loop循环 在子线程中开启Looper.prepare();Looper.loop()循环 在ActivityThread.main是创建的loop循环会阻塞,但是不会卡住 主要原因有2个 epoll模型 当没有消息的时候会epoll.wait,等待句柄写的时候再唤醒

logging模块

无人久伴 提交于 2020-01-14 14:28:19
1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息; print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出 2 logging模块使用   函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')   默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。 灵活配置日志级别,日志格式,输出位置: import

SpringMVC的入门例子

谁说我不能喝 提交于 2020-01-14 13:39:35
MVC框架是什么 模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式。它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。通常,模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来自用户的请求,并调用后台服务(manager或者dao)来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。控制器收集这些数据及准备模型在视图层展示。MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。 在Spring MVC应用程序中,模型通常由POJO对象组成,它在业务层中被处理,在持久层中被持久化。视图通常是用JSP标准标签库(JSTL)编写的JSP模板。控制器部分是由dispatcher servlet负责,在本教程中我们将会了解更多它的相关细节。 一些开发人员认为业务层和DAO层类是MVC模型组件的一部分。我对此持有不同的意见。我不认为业务层及DAO层类为MVC框架的一部分。通常一个web应用是3层架构,即数据-业务-表示。MVC实际上是表示层的一部分。 Dispatcher Servlet(Spring控制器) 在最简单的Spring MVC应用程序中,控制器是唯一的你需要在Java web部署描述文件(即web.xml文件)中配置的Servlet

管道处理模型二(摘抄cainong2005博客)

和自甴很熟 提交于 2020-01-14 11:37:07
一.Httphandler: 在《模型一》的demo中,新建一个webform文件,MyWebForm.aspx,内容和简单,就是一行文字。 < body > < form id = "form1" runat = "server" > < div > This is MyWebForm </ div > </ form > </ body > 运行结果: 再看MyWebForm.aspx.cs文件代码: public partial class MyWebForm : System . Web . UI . Page { protected void Page_Load ( object sender, EventArgs e ) { } } 没有别的代码,只是实现了System.Web.UI.Page,Page又是什么呢?F12跟进去: 所以,在Webform中,我们申明的东西,写的页面,实现的业务逻辑,其实就是一个HttpHandler,而它是在PreRequestHandlerExecute 和 PostRequestHandlerExecute 这两个Event之间执行的。 这里有一个很重要的事件,MapRequestHandler,负责制定具体的handler处理请求: 它是在哪里配置的呢? 全局的webconfig中,(C:\Windows\Microsoft.NET

SAP AET fields的自定义行为

只愿长相守 提交于 2020-01-13 20:51:28
If the customer specific logic is too complex to be covered by the embedded formula in calculated field editor in AET, for example there are some ABAP coding involvled, we can try custom behavior logic provided by AET: (1) Create a new entry in table AXT_BEHAVIOR (2) Your custom behavior could be implemented in class ZCL_AXT_CUSTOM_BEHAVIOR, which inherites from class CL_AXT_ABST_BEHAVIOR_HDLR. Source code for ZCL_AXT_CUSTOM_BEHAVIOR: class ZCL_AXT_CUSTOM_BEHAVIOR definition public inheriting from CL_AXT_ABST_BEHAVIOR_HDLR final create public shared memory enabled . public section. methods IF

Android开发之sd卡存储和机身存储的路径获取

谁说胖子不能爱 提交于 2020-01-13 18:44:18
来源: https://blog.csdn.net/anjingshuai/article/details/84682779 开发过程中碰到将文件存储到手机中时,要先判断是否有sd卡,如下所示 // 判断是否有SD卡 private static boolean ExistSDCard () { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) { return true; } else return false; } 如果存在,则要获取sd卡的根目录路径,在目录下创建新的文件夹,sd卡根目录路径如下: public static String SDCARDPATH = Environment.getExternalStorageDirectory() .getPath(); 然后是将要复制的文件写到sd卡下新建的文件夹内,代码如下: private void copyzipfileToLocalDir ( final String path, final String filename) { File file = new File(path); if (file.exists()) { Uri uri = Uri.fromFile

jQuery事件绑定方法bind、 live、delegate和on的区别

…衆ロ難τιáo~ 提交于 2020-01-13 09:48:56
jQuery事件绑定方法bind、 live、delegate和on的区别 我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的。而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 1.准备知识 当我们在开始的时候,有些知识是必须具备的: 1).DOM树 下图仅仅是一个示例,这是一个在browser环境下的一棵模拟DOM树,在下面的代码中仅起到演示的作用: 2).Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们不人为的设置stopPropagation(Moder Browser), cancelBubble(IE),那么它的所有父元素,祖宗元素都会受之影响,它们上面绑定的事件也会产生作用。看一个示例: 复制内容到剪贴板 程序代码 $('a').bind('click', function() { alert("That tickles!") }); 当我们在a 上面点击的时候,首先会触发它本身所绑定的click事件,然后会一路往上,触发它的父元素,祖先元素上所有绑定的click事件,就像下图演示的那样。 3).示例HTML 为了对下面的代码进行演示,添加一些HTML代码: 复制内容到剪贴板 程序代码 1 <ul

前端必须掌握的自动化部署(webhooks)

蹲街弑〆低调 提交于 2020-01-12 23:25:20
缘起 最近用Gatsby 写了一个个人blog,link => http://new.ruoduan.cn/ Github 🙏🙏🙏 Star 发现 build 后体积太大,FTP 发文件 都要10几分钟,挑选来下自动化部署工具🔧,本打算用 jenkins 感觉有点重,而且学习成本较高。 看了一下觉得 使用 github的webHooks 是最合适的 Graph 大致流程是这样的:👇 话不多说直接上代码 代码分为三个部分 Nodejs => Server Shell 脚本 插件 install 我的环境是 CentOS 服务器 应具备 nodejs && git 首先先安装 github-webhooks的插件和pm2 服务器上 npm install -g github-webhook-handler pm2 nodejs 服务 webhooks.js var http = require ( 'http' ) // github-webhook-handler 的绝对路径 var createHandler = require ( '/usr/lib/node_modules/github-webhook-handler' ) var handler = createHandler ( { path : '/' , secret : 'xxx' } ) // 上面的 secret