handler

drf-jwt认证

纵然是瞬间 提交于 2019-12-05 11:41:51
JWT认证 工作原理 """ 1) jwt = base64(头部).base(载荷).hash256(base64(头部).base(载荷).密钥) 2) base64是可逆的算法、hash256是不可逆的算法 3) 密钥是固定的字符串,保存在服务器 """ drf-jwt 官网 http://getblimp.github.io/django-rest-framework-jwt/ 安装子:虚拟环境 pip install djangorestframework-jwt 使用:user/urls.py from django.urls import path from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [ path('login/', obtain_jwt_token), ] 测试接口:post请求 """ postman发生post请求 接口:http://api.luffy.cn:8000/user/login/ 数据: { "username":"admin", "password":"admin" } """ drf-jwt开发 配置信息:JWT_AUTH到dev.py中 import datetime JWT_AUTH = { # 过期时间 'JWT_EXPIRATION

Drf模块详细分析

拜拜、爱过 提交于 2019-12-05 11:28:38
drf的请求模块 drf的request是在wdgi的request基础上再次封装 wsgi的request作为drf的request一个属性:_request 新的request对旧的request做了完全兼容 新的request对数据解析更规范化:所有的拼接参数都能解析到query_params中,所有数据包都被解析到data中,query_params和data属于QueryDict类型,可以.dict() 转化成原生dict类型 源码分析 drf的APIView类:重写了as_view(),但主体逻辑还是调用父类View的as_view(),局部禁用csrf认证, 重点: 所有继承drf的基本视图类APIView的视图类,都不在做csrf认证校验 drf的APIView类:重写了dispatch(),在内部对ruquest进行了二次封装:self.initialize_request(request,*args,**kwargs), 实例: print(request) print(request._request.GET) print(request.META) print(request.META.get('HTTP_LLL')) 内部核心: 走drf的Request初始化方法__init__:self.request=request

Android消息机制

别等时光非礼了梦想. 提交于 2019-12-05 10:39:48
一、消息机制概述 1.消息机制的简介 在Android中使用消息机制,我们首先想到的就是Handler。没错,Handler是Android消息机制的上层接口。Handler的使用过程很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去执行。通常情况下,Handler的使用场景就是更新UI。 如下就是使用消息机制的一个简单实例: 1234567891011121314151617181920212223 public class extends android.app. { private Handler mHandler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println(msg.what); } }; public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); setContentView(R.layout.activity_main); new Thread(new Runnable() {

linux中断管理(二)

两盒软妹~` 提交于 2019-12-05 10:02:43
一、linux中断注册 1、request_irq函数 request_irq 函数就是驱动开发者向内核注册一个中断的接口。它有五个参数,分别是响:中断号,应中断时的中断处理函数,中断的触发方式,中断的名字,传给中断处理的参数。代码块如下: /********************************************************* * irq : 中断号 * handler : 中断处理函数 * irqflags : 中断的触发方式 * devname : 中断名称 * dev_id : 传给中断服务函数的参数 *********************************************************/ int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) { struct irqaction *action; int retval; #ifdef CONFIG_LOCKDEP /* * Lockdep wants atomic interrupt handlers: */ irqflags |= IRQF_DISABLED; #endif /* *

Handler postDelayed and Thread.sleep()

怎甘沉沦 提交于 2019-12-05 09:40:45
I have a thread.sleep and a handler postDelayed in my code: handler.postDelayed(new Runnable() { @Override public void run() { Log.e(TAG, "I ran"); mIsDisconnect = false; } }, DISCONNECT_DELAY); After the handler code and after the user press the button I have this: while (mIsDisconnect) { try { Thread.sleep(DELAY); } catch (InterruptedException e) { Log.e(TAG, "problem sleeping"); } } If the user wait long enough I can get the "I ran" in my log. But if the user press the button before the delay is up, it seems that the postDelayed never gets a chance to execute. My question is, does the

Vue响应式变化

一个人想着一个人 提交于 2019-12-05 09:08:40
Vue有一个很方便的特性就是Vue的双向绑定,即响应式变化,在Vue2.X版本中,Vue响应式变化靠的是Object.defineProperty方法实现的,但是这个方法有个问题,就是对数组的支持不全面,如我们想要通过arr[0] = 11这种下标修改值的方式,Vue是不会监听并重新渲染组件的,以及arr.length = 0这种方式清空数组,也是不支持的。 那么在Vue中,是如何实现数据的双向绑定的呢?我们可以简单模拟一下。 实现原理就是:给数据绑定get/set方法,当修改对应的属性值时,会触发对应的get/set方法,在get/set方法中实现绑定逻辑。如果是数组,会重写数组的方法,如果是对象,会使用Object.defineProperty方法。 先定义一个最简单的对象obj let obj = {   name:"Alice",   age:18 } 定义一个渲染函数 function render(){ console.log("渲染") } 给对象obj的每一个属性都绑定get/set方法 let handler = function(obj,key,value){ Object.defineProperty(obj,key,{ get(){ return value; }, set(newValue){ if(value!==newValue){ value =

监控端主程序

天涯浪子 提交于 2019-12-05 08:42:16
#include <stdio.h> #include <unistd.h> #include <stdbool.h> #include <fcntl.h> #include <sys/epoll.h> #include <main.h> struct event_ext { int fd; bool epolled; uint32_t events; void (*handler)(int fd,void *arg); void *arg; }; struct event_ext *epoll_event_create(int fd,uint32_t type,void (*handler)(int,void *), void *arg) { struct event_ext *e = calloc(1,sizeof(struct event_ext)); e->fd = fd; e->events = type; e->handler = handler; e->arg = arg; return e; } int epoll_add_event(int epfd,struct event_ext *ev) { struct epoll_event epv; int op; //2. 初始化epoll_event(将附加结构挂载到epoll_event) epv.data

SCTP 库的简述和代码 (2)

╄→гoц情女王★ 提交于 2019-12-05 08:21:51
本站首发兼远创, 全拼, 写字不易, 程序调试更烦. 所以, 如果转请保持作者信息和此联接, 给我动力 :) 咱写C的, 好多很炫的方法用不上, 只能用土的, 状态表. 既然是闲扯,咱就扯远点, 为什么用状态转移表呢? 首先, 我们有些什么模式可以选呢? 1. switch/case 大哥/大姐, 什么时代了, 写协议软件状态转移用switch/case? 不转昏始作蛹者(别和我说是你)的头, 也搞死维护的兄弟. 但是,但是, 世事无绝对, switch简单啊. 好象,我说好象,无根据,别乱猜, 有一个业界有很很有名的公司是这样写sctp协议栈的,不可说,不可说. 2. 状态转移表 先整个表看看,好不好, bug多多, 多多指正. //---------------SCTP message proc table --------------------------------------------------------------- static fsm_handler_proc sctp_closed_msg_proc[SCTP_MSG_MAX] = { {(fsm_handler_fn)&sctp_send_abort, SCTP_STATE_CLOSED}, /*(0) 8.4, ootb data, abort */ {(fsm_handler_fn)&sctp

挖矿病毒入侵-分析总结

…衆ロ難τιáo~ 提交于 2019-12-05 07:57:10
  最近,托管云平台出现大量的挖矿病毒;没有安全意识的小伙伴们就只能乖乖交智商睡了;   抓了好几次,终于反过来抓到入侵脚本;在此做下简单的分析,希望能给大伙一些小小的灵感; ##一个朴实无华的脚本,base64 编码,一脸懵逼;要不是从 /proc/PID 找到线索,还真得被毒打一顿; #!/bin/bash exec &>/dev/null sleep $((RANDOM % 600)) {echo

学习第九天(2019-11-22)

你说的曾经没有我的故事 提交于 2019-12-05 07:42:21
第十四章 表单脚本 一、表单的基础知识 在HTML中,表单是由<form>元素来表示的,在JavaScript中,表单对应的是HTMLFormElement 类型。HTMLFormElement 继承了 HTMLElement,因而与其他HTML元素具有相同的默认属性。不过,HTMLFormElement有自己独有的属性和方法。 在javaScript中可以提交表单、重置表单以及操作表单的字段。 下面是一个例子: 假设有一个文本框,我们只允许用户输入数值。此时,可以利用 focus 事件修改文本框的背景颜色,以便更清楚地表明这个字段获得了焦点。可以利用 blur 事件恢复文本框的背景颜色,利用change事件在用户输入了非数值字符时再次修改背景颜色。 实现代码: 1 <html> 2 <head> 3 </head> 4 <body> 5 <form method="post" id="myForm">表单<br> 6 <input type="text" size="20" maxlength="50" value="mytext"> 7 </form> 8 <script type="text/javascript" src="myscript.js"></script> 9 </body> 10 </html> 1 var EventUtil = { 2 addHandler