handler

Linux驱动开发之中断编程

时光毁灭记忆、已成空白 提交于 2020-02-12 22:56:05
2020-02-12 关键字: 在 Linux 内核当中,处理一个中断事件需要知道两件事: 1、中断号码 2、中断处理函数 而在 ARM 中处理中断则需要知道以下四件事: 1、中断源号码 2、初始化中断控制器 3、初始化 CPU 中断功能 4、中断处理函数 获取中断号有以下两种方式: 1、宏定义 通过查询芯片手册上记载的相应中断编号,再经过系统预置的 IRQ_EINT(编号) 来得到中断号。 2、设备树文件 首先查询相应设备树头文件 dtsi,找到我们要用的那个中断组的描述,形如下所示: gpx1: gpx1{   gpio-controller;   #gpio-cells = <2>;   interrupt-controller;   interrupt-parent = <&gic>;   interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>, <0 28 0>;   #interrupt-cells = <2> }; 上面的 interrupt-controller; 表示以下描述的是和中断控制器相关的信息。 interrupts 描述的是 gpx1 这个节点所要控制或者说使用的中断号列表。 #interrupt-cells 描述的是长度,记住是长度就好了。 其次再在我们自己的 dts 里添加上我们想要的中断信息节点:

SpringMVC 参数映射与文件上传

落爺英雄遲暮 提交于 2020-02-11 23:50:10
handler参数映射: 接下来就是Spring的各个处理细节了,无论框架如何疯转其实我们处理请求的流程是不变的,设计到的操作也是固定的,举个例子,当我们要实现一个登陆功能时: 创建一个用于处理登录请求的Servlet 实现doget等其他http方法(一些情况可能根据业务需要限制请求方法) 从request对象中取出数据 处理编码 验证参数是否符合要求 对参数数据类型进行转换(需要时) 开始业务逻辑处理(登录) 可能需要操作session来完成 组织响应给数据,可能是html可能是json, 异常处理 Header与cookie的处理 整个SpringMVC其实就是帮我们对上面的操作进行封装,当然了SpringMVC也提供了更多的功能,如国际化.. Handler方法特殊参数 在handler方法中我们可以添加一下参数,用于获取一些特殊的对象: HttpServletRequest,HttpServletResponse HttpSession Model ModelMap ​ model 是框架帮我们创建好的的Model对象,若使用该参数作为返回的model,则需要修改方法返回值为String用于指定视图名称; 案例: @RequestMapping("/courseList2.action") public String courseList(Model model) {

jQuery(三)

删除回忆录丶 提交于 2020-02-11 14:44:13
1. jQuery特殊属性操作 1.1. val方法 val方法用于设置和获取表单元素的值,例如input、textarea的值 //设置值 $("#name").val(“张三”); //获取值 $("#name").val(); 【案例:京东搜索.html】 1.2. html方法与text方法 html方法相当于innerHTML text方法相当于innerText //设置内容 $(“div”).html(“<span>这是一段内容</span>”); //获取内容 $(“div”).html() //设置内容 $(“div”).text(“<span>这是一段内容</span>”); //获取内容 $(“div”).text() 区别:html方法会识别html标签,text方法会那内容直接当成字符串,并不会识别html标签。 1.3. width方法与height方法 设置或者获取高度 //带参数表示设置高度 $(“img”).height(200); //不带参数获取高度 $(“img”).height(); 获取网页的可视区宽高 //获取可视区宽度 $(window).width(); //获取可视区高度 $(window).height(); 1.4. scrollTop与scrollLeft 设置或者获取高度 //获取页面被卷曲的高度 $(window)

netty心跳检测机制

為{幸葍}努か 提交于 2020-02-11 12:33:50
Netty存在心跳检测机制,当客户端的连接超过一定时间没有读,或者写的时候,服务端可以检测出来并提示 IdleStateHandler 是netty处理空闲状态的处理器 具体实现步骤为: 1.readerIdleTime : 表示多长时间没有读,就会发送一个心跳检测包检测是否连接 2.writerIdleTime : 表示多长时间没有写,就会发送一个心跳检测包检测是否连接 3.allIdleTime : 表示多长时间没有读和写,就会发送一个心跳检测包检测是否连接 4.当有空闲的时候,就会触发 IdleStateEvent 事件 5.当 IdleStateEvent 触发后,就会传递给管道的下一个handler去处理,通过回调触发,下一个handler的userEventTiggered,在该方法中去处理当IdleStateEvent(读空闲,写空闲,读写空闲) 实现服务端的代码: package com . jym . heart ; import io . netty . bootstrap . ServerBootstrap ; import io . netty . channel . * ; import io . netty . channel . nio . NioEventLoopGroup ; import io . netty . channel . socket

cbv+resful+APIView源码分析

情到浓时终转凉″ 提交于 2020-02-11 07:48:52
CBV源码分析 1概念:什么是cbv和fbv 已经什么是API class bass View ---基于类的视图 function bass View ---基于函数的视图 API(Application Programming Interface)API 就是应用程序编程接口。它是能用来操作组件、应用程序或者操作系统的一组函数 2什么是幂等性 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其再支付场景。 幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品使用约支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条... 在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等。

ecshop的订单状态及对应值的详解

时间秒杀一切 提交于 2020-02-11 03:57:32
订单状态 未确认 取消 确认 已付款 配货中 已发货 已收货 退货 order_status 0 2 1 1 1 5 5 4 shipping_status 0 0 0 0 3 1 2 0 pay_status 0 0 0 2 2 2 2 0 1、ecshop订单状态对应值简单版: order_status = 0  订单未确认        shipping_status = 3  已配货      pay_status = 0  未付款 order_status = 1  订单已经确认       shipping_status = 1  已发货      pay_status = 2  已付款 order_status = 2  订单已经取消       shipping_status = 2  已收货 2、ecshop订单状态详细版本: 下订单               取消                确认                退货        order_status   0        order_status   2        order_status   1        order_status   4 shipping_status  0        shipping_status  0        shipping_status 

Jetty 安装、启动与项目部署

我只是一个虾纸丫 提交于 2020-02-10 18:08:19
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。-------百度百科 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器。它有一个基本数据模型,这个数据模型就是 Handler(处理器),所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。 整个 Jetty 的核心组件由 Server 和 Connector 两个组件构成,整个 Server 组件是基于 Handler 容器工作的,它类似与 Tomcat 的 Container 容器。Jetty 中另外一个比不可少的组件是 Connector,它负责接受客户端的连接请求,并将请求分配给一个处理队列去执行。 (图: Jetty 的基本架构图) (图: tomcat的基本架构图) Jetty与Tomcat的对比: ①Jetty 比较容易贴合第三方框架,比如你可以直接用 Spring 配置一个 Jetty 服务器 ②直接可以将 Jetty

异常模块的使用

China☆狼群 提交于 2020-02-10 17:29:24
异常模块的使用 重写异常模块的目的是记录异常信息(日志记录) 一、异常模块的使用 # 1. 配置异常模块,通过settings.py获取 REST_FRAMEWORK = { # 异常模块配置 # Exception handling # 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler', # 默认 'EXCEPTION_HANDLER': 'api.utils.exception_handler', # 自己重写的路径 'NON_FIELD_ERRORS_KEY': 'non_field_errors', } # 2.编写异常模块,创建一个新的文件.py重写exception_handler方法 from rest_framework.response import Response def exception_handler(exc, context): # 在exception_handler函数完成异常信息的返回以及异常信息的logging日志 print(exc) print(context) print(type(exc)) # exc.detail 携带错误的信息 return Response(f'{context["view"].__class__.__name__}{exc}') # 2

常用模块(subprocess/hashlib/configparser/logging/re)

半腔热情 提交于 2020-02-10 16:55:48
一、subprocess(用来执行系统命令) import os cmd = r'dir D:xxx | findstr "py"' # res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) # # 从管道中读取数据 管道就是 两个进程通讯的媒介 # # print(type(res.stdout.read().decode("GBK"))) # print(res.stdout.read().decode("GBK")) # print(res.stderr.read().decode("GBK")) subprocess使用当前系统默认编码,得到结果为bytes类型,在windows下需要用gbk解码。Conclusion subprocess 主要用于执行系统指令 (启动子进程) 与os.system的不同在于 subprocess 可以与这个子进程进行数据交换 二、hashlib(加密) hash是一种算法 是将一个任意长的数据 根据计算 得到一个固定长度特征码 特征: 不同输入 可能会有相同的结果 几率特别小, 相同的输入 必然得到相同结果, 由于散列(特征)的性质,从原理来看是不可能 反解。 用来 验证 两个输入的数据是否一致 使用场景: 1.密码验证 2

AJAX阿贾克斯(一)基础知识

偶尔善良 提交于 2020-02-10 09:38:07
AJAX 即“ Asynchronous Javascript And XML ”(异步JavaScript和XML),是指一种创建 交互式 网页应用的网页开发技术。 AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。 AJAX 是一种 用于创建快速动态网页的技术 。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着 可以在不重新加载整个网页的情况下,对网页的某部分进行更新 。 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。 这个术语源自描述从基于 Web 的应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。 AJAX 的核心是 JavaScript 对象 XMLHttpRequest 。该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术。简而言之, XMLHttpRequest使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户 。 先引用jQuery,再写代码 代码格式: $.ajax({ url:"",//要将此次请求发送到哪个服务端去 data:{},//给服务端带的数据,可以没有,也可以是多个 type