handler

Vue—watch的简单用法

依然范特西╮ 提交于 2019-12-05 20:54:26
1.简单介绍 在vue中,使用 watch来监听数据 的变化。在改变的时候会有一个初始值,对初始值进行改变的时候,会把初始值记录下来,但同时也更新当前值。 举一个简单的例子(米与厘米的单位换算,在按下enter键的时候,alert我们换算的值) <body> <div id="app"> 米:<input type="text" v-model="mi" @keyup.enter="btn">= 厘米:<span>{{limi}}</span> </div> </body> <script> let myapp = new Vue({ el:"#app", data:{ mi:"", limi:"" }, methods:{ btn:function(){ this.limi = this.mi*100;   } } }) // watch 监听数据.因为在按下enter键的时候才使用监听,所以我们对换算后的厘米进行监听 myapp.$watch('limi',function(){ alert(myapp.mi+'米'+'='+myapp.limi+'厘米') }) </script> 2.handler方法和immediate属性 使用watch时有一个特点,就是当值第一次绑定的时候,不会执行监听函数,只有值发生改变才会执行。如果我们需要在 最初绑定值的时候也执行函数

Dubbo源码分析-Remoting层

余生长醉 提交于 2019-12-05 20:44:47
Dubbo Github地址 https://github.com/alibaba/dubbo.git Dubbo Remoting 模块是dubbo底层通信模块的实现。实现对请求/应答的各种逻辑处理,包括同步,异步,心跳等逻辑,最底层的通信借助netty或者mina实现,还有通过jetty servlet暴漏http服务的实现方式。 Remoting Api 公共基础接口类 Endpoint Endpoint 字面意思是端点,端点接口的基本操作有获取端点对应的URL,LocalAddress,及发送关闭Channel的操作; Channel Channel接口继承Endpoint ,多了对Attribute的操作接口(get,set,remove)及获取连接状态接口,多了获取远端的操作getRemoteAddress方法; ChannelHandler ChannelHandler 主要包含对Channel的一些处理: connected(Channel channel); disconnected(Channel channel); sent(Channel channel, Object message); received(Channel channel, Object message); Client Client继承了Endpoint, Channel,

08 jwt源码剖析

一曲冷凌霜 提交于 2019-12-05 20:38:02
目录 08 jwt源码剖析 1. jwt认证流程 2.jwt创建token 3. jwt使用 4. 源码剖析 总结: 08 jwt源码剖析 JSON Web Tokens,是一种开发的行业标准 RFC 7519 ,用于安全的表示双方之间的声明。目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目。 1. jwt认证流程 在项目开发中,一般会按照上图所示的过程进行认证,即:用户登录成功之后,服务端给用户浏览器返回一个token,以后用户浏览器要携带token再去向服务端发送请求,服务端校验token的合法性,合法则给用户看数据,否则,返回一些错误信息。 传统token方式和jwt在认证方面有什么差异? 传统token方式 用户登录成功后,服务端生成一个随机token给用户,并且在服务端(数据库或缓存)中保存一份token,以后用户再来访问时需携带token,服务端接收到token之后,去数据库或缓存中进行校验token的是否超时、是否合法。 jwt方式 用户登录成功后,服务端通过jwt生成一个随机token给用户(服务端无需保留token),以后用户再来访问时需携带token,服务端接收到token之后,通过jwt对token进行校验是否超时、是否合法。 2.jwt创建token 2.1 原理 jwt的生成token格式如下,即:由 . 连接的三段字符串组成。

Add/Remove handler to textbox

无人久伴 提交于 2019-12-05 20:28:27
问题 I am adding a handler to textbox using the following code: private void frmLogin_Load(object sender, EventArgs e) { foreach (Control tb in this.Controls) { if (tb is TextBox) { TextBox tb1 = (TextBox)tb; tb1.KeyDown += new KeyEventHandler(TextBox_KeyDown); } } } I am also removing handler using the following code: private void frmLogin_FormClosed(object sender, FormClosedEventArgs e) { foreach (Control tb in this.Controls) { if (tb is TextBox) { TextBox tb1 = (TextBox)tb; tb1.KeyDown -= new

CEF4Delphi初识

喜你入骨 提交于 2019-12-05 20:28:04
代码模块与职责 所有的代码都在src目录下,这会导致一上手的时候无法快速划分模块,不便于理解,如果分类然后放文件夹就会好一些。 最关键的部分在于uCEFApplication,是和dll链接的部分 uCEFInterfaces.pas ,可以在这个文件内找到所有关于接口类型的声明,抽象了基本类型使用的接口,结构清晰。几乎是个功能都能找到对应的接口。和cef提供的接口有高度一致性。除了cef相关的接口外,还有自定义的一些工具接口。 uCEFClient.pas ,继承自ICefClient,用于实现获取Handler的接口 uCEFTypes.pas ,这个文件声明了大量的类型,但是不知道是不是所有的类型声明都在这里面。 uCEFChromium.pas ,存放了TChromium的类型声明,是实现功能的关键类。 uCEFLoadHandler ,存放了loadHandler相关类型,回调处理器的一个具体实现,还有很多其他的handler。 uCEFApplication.pas 是核心,涉及到关键部分,有关键的类 TCefApplication ,加载了dll并获取函数,是使用CEF4Delphi的入口。 关键类型和关键接口 ICefBrowser :主要是浏览器级别的接口,获取frame,后退前进,中断加载等接口(浏览器进程的功能接口); ICefFrame :加载网页的对象

委托实现异步调用

天涯浪子 提交于 2019-12-05 19:37:34
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Net; using System.Net.Http; using System.Reflection; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Web.Script.Serialization; namespace ConsoleApp7 { class Program { public delegate void AddHandler(int i); static void Main(string[] args) { for (int i = 0; i < 10; i++) { // Thread.Sleep(2000); HandlerUploadData(i); } Console.ReadKey(); } static private void

Netty 应用:Http服务器

蹲街弑〆低调 提交于 2019-12-05 19:12:10
netty作为http服务器的服务端代码清单,实际开发中可拆分为netty自带的处理器initializer,自定义处理器handler两种,便于区分。 服务端实现 /** * Created by fubin on 2019/7/10. * curl -X POST http://localhost:8899 */ public class HttpServer { public static void main(String[] args) throws Exception { //两个死循环,联想到Tomcat和操作系统的设计 EventLoopGroup bossGroup = new NioEventLoopGroup();//接收连接 EventLoopGroup workerGroup = new NioEventLoopGroup();//处理连接 try{ ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(bossGroup,workerGroup) .channel(NioServerSocketChannel.class) //子处理器,自己编写的 .childHandler(new HttpServerInitializer());

第五章、drf-JWT认证

☆樱花仙子☆ 提交于 2019-12-05 18:57:30
目录 JWT认证 JWT认证方式与其他认证方式对比: 优点 格式 drf - jwt 插件 官网 安装 token的签发与校验初识: 签发token 校验token 自定义drf-jwt配置 settings.py 案例:实现多方式登陆签发token 总结: 案例:自定义认证反爬规则的认证类 总结: JWT认证 JWT认证方式与其他认证方式对比: 优点 1) 服务器不要存储token,token交给每一个客户端自己存储,服务器压力小 2)服务器存储的是 签发和校验token 两段算法,签发认证的效率高 3)算法完成各集群服务器同步成本低,路由项目完成集群部署(适应高并发) 格式 1) jwt token采用三段式:头部.载荷.签名 2)每一部分都是一个json字典加密形参的字符串 3)头部和载荷采用的是base64可逆加密(前台后台都可以解密) 4)签名采用hash256不可逆加密(后台校验采用碰撞校验) 5)各部分字典的内容: 头部:基础信息 - 公司信息、项目组信息、可逆加密采用的算法 载荷:有用但非私密的信息 - 用户可公开信息、过期时间 签名:头部+载荷+秘钥 不可逆加密后的结果 注:服务器jwt签名加密秘钥一定不能泄露 签发token:固定的头部信息加密.当前的登陆用户与过期时间加密.头部+载荷+秘钥生成不可逆加密 校验token:头部可校验也可以不校验

【转】Spark History Server 架构原理介绍

时间秒杀一切 提交于 2019-12-05 18:22:08
【From】 https://blog.csdn.net/u013332124/article/details/88350345 Spark History Server 是spark内置的一个http服务,通过sbin/sbin/start-history-server.sh启动。History Server启动后,会监听一个端口,同时启动两个定时任务线程,分别用来解析eventLog日志文件和清理过期的eventLog日志文件。 Spark History Server启动后,我们可以直接在浏览器输入 http://ip:port 访问。一般默认端口是18080 一、eventLog日志文件以及相关参数 eventLog日志文件介绍 eventLog需要将配置spark.eventLog.enabled设置为true来开启,默认是关闭的。 开启这个配置后,当我们提交spark job到集群中运行时,之后spark job在运行过程中会不断的一些运行信息写到相关的日志文件中。具体的eventLog存放目录由配置spark.eventLog.dir决定的。 Spark job在运行中,会调用EventLoggingListener#logEvent()来输出eventLog内容。spark代码中定义了各种类型的事件,一旦某个事件触发,就会构造一个类型的Event

Store and Restore event handler

五迷三道 提交于 2019-12-05 18:17:42
Please help to fix my function, store event of one element and delete them, then re-install; I don't know where is the problem, the function will only delete the event of element and will not restore. Please help to fix. HTML <a href="#" id="a">a</a> <a href="#" id="b">b</a>​ JS $("#a").hover(function(){alert("test")}); $("#b").click(function(){ Test_Handle('#a'); } function Test_Handle(id) { target = $(id); if($.hasData(target.get(0))){ // if the elment has event || target = element target[0].event_name = []; target[0].event_handler = []; events = $._data(target.get(0), 'events'); // take all