钩子函数

vue学习日记03

依然范特西╮ 提交于 2020-03-01 17:29:43
vue组件生命周期   每个vue组件被创建的时候,都会经历一系列初始化过程。数据更新,组件销毁也都会触发一些钩子函数,让我们可以做一些操作。这一系列过程就是声明周期。生命周期主要分为3个阶段。具体如下: 其中创建阶段和销毁阶段,都只会触发一次,更新阶段可以触发多次。每个阶段的钩子函数,所处理的事情如下             写个计时器例子,刷新的页面的时候,触发创建的生命周期钩子函数,计时开始触发更新函数,返回主页,触发销毁。         来源: https://www.cnblogs.com/wangnothings/p/12390202.html

Dll注入技术之消息钩子

扶醉桌前 提交于 2020-02-27 04:00:23
DLL注入技术之消息钩子注入 消息钩子注入原理是利用Windows 系统中SetWindowsHookEx()这个API,他可以拦截目标进程的消息到指定的DLL中导出的函数,利用这个特性,我们可以将DLL注入到指定进程中。主要流程如下图所示 1.准备阶段 需要编写一个DLL,并且显式导出MyMessageProc()函数,主要代码如下: LRESULT WINAPI MyMessageProc( int code, WPARAM wParam, LPARAM lParam) { return CallNextHookEx(NULL, code, wParam, lParam); } 显示导出某个函数需要在.def文件中的EXPORTS填写MyMessageProc(),如下图所示: 2 .HOOK阶段 使用SetWindowsHookEx()之前首先需要将HOOK的DLL 加载到本身的进程中,以此得到DLL的模块句柄,再使用GetProcAddress()得到DLL中显示导出的函数MyMessageProc()的函数地址,最后遍历出待注入进程的线程ID,这样SetWindowsHookEx()就可以利用这些参数进行HOOK了。主要代码如下图所示: //加载DLL到本身进程 hMod = LoadLibrary(pDllName); if (!hMod) return FALSE;

Tomcat 优雅关闭之路

会有一股神秘感。 提交于 2020-02-26 10:48:26
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/ZqkmoAR4JEYr0x0Suoq7QQ 作者:马运杰 本文通过阅读Tomcat启动和关闭流程的源码,深入分析不同的Tomcat关闭方式背后的原理,让开发人员能够了解在使用不同的关闭方式时需要注意的点,避免因JVM进程异常退出导致的各种非预见性错误。 一、 Tomcat的启动过程 要了解Tomcat关闭的原理,首先需要关注下Tomcat是如何启动的。这里我们简单介绍下。 Tomcat启动的入口是Bootstrap类中的main方法,而后根据server.xml中的配置,对Server、Service、Enigin、Connector、Host、Context等组件进行初始化,之后便是启动这些组件。我们重点来看下启动之后,Tomcat做了哪些工作。 在Tomcat的各组件启动完毕之后,main主线程会进入Catalina.out的await()方法,而此方法又是主要调用了Server组件的await()方法,从名字便可以看出,这个方法的目的是为了阻塞当前线程(main主线程)。 分析await的源码(源码比较长,这里截取了部分,全部的可以自行拉取Tomcat源码进行阅读)。 (StandardServer.await()) 我们发现await()方法主要是根据server

vue-router总结 -- 路由钩子/导航守卫

拥有回忆 提交于 2020-02-26 02:05:12
结构图 一、前言 在上一篇 vue-router总结 -- 基础使用 中,简单介绍了vue-router的安装、引用、嵌套路由、路由传参和重定向等内容,这是系列的第二篇,主要总结一下路由钩子函数的使用方法和一些常见的使用场景。 二、三大类钩子函数 路由钩子函数就是在发生路由跳转时,在每个时机调用的函数。这些函数分为三大类: 1.全局钩子函数 全局钩子函数有两个: beforeEach 和 afterEach ,由路由实例调用执行。 (1) beforeEach 进入路由之前被调用,通常进行判断登录状态、鉴权等操作。 应用:登录拦截,部分地方使用伪代码形式(因为懒啊) import Vue from 'vue' import Router from 'vue-router' import Home from './components/Home' import About from './components/About' Vue.use(Router) const router = new Router({ routes: [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: About, meta: { auth: true // 该路由需要登录权限

Tomcat 优雅关闭之路

霸气de小男生 提交于 2020-02-25 19:49:37
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/ZqkmoAR4JEYr0x0Suoq7QQ 作者:马运杰 本文通过阅读Tomcat启动和关闭流程的源码,深入分析不同的Tomcat关闭方式背后的原理,让开发人员能够了解在使用不同的关闭方式时需要注意的点,避免因JVM进程异常退出导致的各种非预见性错误。 一、 Tomcat的启动过程 要了解Tomcat关闭的原理,首先需要关注下Tomcat是如何启动的。这里我们简单介绍下。 Tomcat启动的入口是Bootstrap类中的main方法,而后根据server.xml中的配置,对Server、Service、Enigin、Connector、Host、Context等组件进行初始化,之后便是启动这些组件。我们重点来看下启动之后,Tomcat做了哪些工作。 在Tomcat的各组件启动完毕之后,main主线程会进入Catalina.out的await()方法,而此方法又是主要调用了Server组件的await()方法,从名字便可以看出,这个方法的目的是为了阻塞当前线程(main主线程)。 分析await的源码(源码比较长,这里截取了部分,全部的可以自行拉取Tomcat源码进行阅读)。 (StandardServer.await()) 我们发现await()方法主要是根据server

React的生命周期钩子函数

喜欢而已 提交于 2020-02-25 01:24:44
React的常用的声明周期钩子函数 数据初始化阶段 组件初始化会执行的四个钩子函数 1.constructor( props, context) //初始化动作 //用于初始化数据 2.static getDerivedStateFromProps(props,state) //静态方法 不能使用this 不实例化也可以通过 类名.方法名 来调用 能实时更新父组件传递过来的参数 3.render() 这个方法是必须的,当他被调用是,他讲计算 this.props和this.state 并返回以下一种类型 React 元素,通过 jsx 创建,既可以是 dom元素,也可以是用户自定义的组件 字符串或数字,他们将会以文本节点形式渲染到dom中 null,什么也不许安然 布尔值,也是什么都不许安然 4.componentDidMount 组件呗装配后立即调用,初始化时的DOM节点应该进行到这里 通常在这里进行 ajax 请求 如果要初始化第三方的dom库,也是在这里进行初始化 只有到这里才能获取到真是的dom节点 更新阶段的常用的四个钩子函数 1.shouldComponentUpdate(nextProps,nextState){ return boole } 判断组件是否需要更新 返回值是一个布尔值 true 就进行渲染 flase 就会渲染 默认为 true 如果

Vue生命周期钩子函数

无人久伴 提交于 2020-02-24 14:54:12
Vue生命周期钩子函数 vue 生命周期钩子函数 可以理解为 vue 实例从创建到销毁的一个个阶段,每个阶段的内部构造都是不一样的,可以在不同的阶段做相应的处理 Vue生命周期钩子函数包括: beforeCreate created beforeMount mounted beforeUpdate updated activated (keep-alive组件专属) deactivated (keep-alive组件专属) beforeDestroy destroyed errorCaptured (2.5.0+ 新增) 生命周期钩子 详情 beforeCreate 在实例初始化之后,数据观测(data observer) 之前调用该钩子,此时无法获取 data,不能使用 watch 监听,可以加入 loading 事件 created 实例已经创建完成之后调用该钩子,此时实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调 data 被初始化,可以获取 data和调用 watch 监听,但是页面还是空白,结束 loading 事件,可以进行一些数据,资源的请求 beforeMount 在挂载开始之前调用该钩子,相关的 render 函数首次被调用,完成 el 初始化,页面依然是空白 mounted el 被新创建的

Django中的Form和ModelForm

谁都会走 提交于 2020-02-19 13:54:49
Form 1.models表单定义: from django import forms # 导入表单模块 from django.core.exceptions import ValidationError class RegisterForm(forms.Form): # 自定义表单类,并继承forms.Form email = forms.EmailField(widget=forms.EmailInput( attrs={"class": "form-control"})) username = forms.CharField(min_length=4, max_length=12, widget=forms.TextInput( attrs={"class": "form-control"})) password = forms.CharField(min_length=6, widget=forms.PasswordInput( attrs={"class": "form-control"})) password2 = forms.CharField(min_length=6, widget=forms.PasswordInput( attrs={"class": "form-control"})) valid_code = forms.CharField(widget

vue生命周期钩子

只愿长相守 提交于 2020-02-15 15:16:47
vue生命周期钩子 生命函数的介绍 Vue 实例从开始创建、初始化数据、编译模板、挂载Dom和渲染、更新和渲染、卸载等一系列过程,这是 Vue 的生命周期 生命函数的一一讲解 beforeCreate 实例还没有完全创建出来之前执行 created 实例创建完成后立即调用 beforeMount 在挂载之前被调用 mounted 表示内存的模板已经渲染页面中,此时数据已经可以经过Vue的编译 beforeUpdate 当页面数据发生了改变,就会去触发,当前页面的数据不会改变,内存的数据发生改变,数据没有同步 updated 当事件执行的时候,页面的数据已经和内存里面的是一致的,数据已经同步 beforeDestroy 组件销毁的时候去执行的 destroyed 事件执行后,所有的对于vue实例的指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。 来源: CSDN 作者: 曹豆芽 链接: https://blog.csdn.net/qq_41108972/article/details/104325301

路由,生命周期钩子函数,数据间的交互,全局配置js与css

怎甘沉沦 提交于 2020-02-15 00:15:38
一、项目初始化 """ 1)根组件:App.vue <template> <div id="app"> <router-view /> </div> </template> 2)路由配置:router/index.js const routes = [ { path: '/', name: 'Home', component: Home } ]; 3)组件:views和components文件夹 i)删除除Home.vue以为的所有组件 ii)初始化Home.vue <template> <div class="home"> </div> </template> 4)分类管理资源:assets文件夹 建立img、css、js子文件夹,删除原来的资源 5)如果要修改页面标签图标 替换public文件夹下的favicon.ico图片文件 """ 二、组件数据局部化处理(数据隔离) """ 1)不管页面组件还是小组件,都可能会被多次复用 2)复用组件的原因,其实就是复用组件的 页面结构、页面样式、页面逻辑 3)但是页面上的数据需要区分(被复用的两个组件数据多少是有区别的),所以组件的数据要做局部化处理 4)借助函数可以产生局部作用域的特点,为每一次复用组件产生一个独立的作用域 语法: data () { return { // 数据们 } } """ - 子组件 <template>