回调函数

关于 React Refs

只愿长相守 提交于 2019-11-26 16:35:40
一、什么是 ref React 提供了 ref 属性,用来对元素进行 DOM 操作 二、使用 ref 的方式 1、字符串模式 绑定 ref 属性 XX,通过 this.refs.XX 获取 class refTest extends React.Component { constructor(props) { super(props); this.state = { } } handleClick() { console.log(this.refs.inputElem.value) } render() { return ( <React.Fragment> <div> <input type="text" ref="inputElem" /> </div> <button onClick={this.handleClick.bind(this)}>toConsole</button> </React.Fragment> ) } } 字符串模式不支持静态类型检测,且 React 不建议使用 2、回调函数模式 在 ref 属性中设置回调函数,通过 this.XX 获取 class refTest extends React.Component { constructor(props) { super(props); this.state = { } } handleClick() {

Linux IO 概念(2)【转】

那年仲夏 提交于 2019-11-26 15:57:02
转自: https://www.cnblogs.com/qq289736032/p/9188455.html 在上一篇 IO底层的概念 中杂合了很多模糊的概念,受知识水平的限制,只是从网上抄了很多过来.从linux一切皆文件的设计哲学,介绍了文件描述符,从进程的运行内存分配,进程的切换,介绍了进程的阻塞,以及引出了阻塞IO. 在讲到阻塞IO的时,候受限于知识水平,也没有实际操作过,还是没有理解进程和IO函数的调用关系,IO又是如何操作磁盘,文件描述符又是怎样工作,进程怎么去拷贝字节流, 了解linuxIO的最终目的我是想知道JavaIO和JavaNIO在虚拟机中是如何调用的,虚拟机作为一个linux进程又是如何跟底层IO进行交互的.这些问题最终还是要去图书馆查阅书籍才能理解的更清楚, 下面继续在网络上搬迁别人家的博客 注:以下下文章整理自网络 阻塞IO 非阻塞IO 多路复用IO, 多路复用IO是为了处理多个IO问价句柄的数据操作,一个典型场景是当有很多socket服务监听不同端口以接收数据时,如果采用阻塞IO则需要多线程,每个线程和进程负责一个端口socket.但是,大量的线程和进程往往造成CPU的浪费 linuxIO多路复用技术提供一个单进程,单线程内监听多个IO读写时间的机制,其基本原理是各个IO将句柄设置为非阻塞IO,然后将各个IO句柄注册到linux提供的IO复用函数上

MFC定时器使用

二次信任 提交于 2019-11-26 14:57:36
MFC定时器实现方法 方法一:CWnd类提供的成员函数SetTimer实现定时器功能,只能在CWnd类或其派生类中调用。 方法二:Windows API函数SetTimer来实现。 MFC定时器 启动定时器 启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下: UINT_PTR SetTimer( UINT_PTR nIDEvent,//指定一个非零的定时器ID UINT nElapse,//指定间隔时间,单位为毫秒 void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD ) //指定一个回调函数的地址, //如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。 //参数lpfnTimer如果此函数成功则返回一个新的定时器的ID,我们可以使用此ID通过KillTimer成员函数来销毁该定时器,如果函数失败则返回0。 ); 处理定时事件 1 通过WM_TIMER消息的消息响应函数 2 通过回调函数 。 如果要启动多个定时器就多次调用SetTimer成员函数。另外,在不同的CWnd中可以有ID相同的定时器,并不冲突。 如果调用CWnd::SetTimer函数时最后一个参数为NULL,则通过WM_TIMER的消息处理函数来处理定时事件。添加WM

【JDK】JDK源码分析-CyclicBarrier

六眼飞鱼酱① 提交于 2019-11-26 14:17:55
概述 CyclicBarrier 是并发包中的一个工具类,它的典型应用场景为:几个线程执行完任务后,执行另一个线程(回调函数,可选),然后继续下一轮,如此往复。 打个通俗的比方,可以把 CyclicBarrier 的执行流程比作:几个人(类比线程)围着操场跑圈,所有人都到达终点后(终点可理解为“屏障(barrier)”,到达次序可能有先后,对应线程执行任务有快慢),执行某个操作(回调函数),然后再继续跑下一圈(下一次循环),如此往复。 该类与 CountDownLatch 相比,可以把后者理解为“一次性(one-shot)”操作,而前者是“可循环”的操作,下面分析其代码实现。 代码分析 CyclicBarrier 的主要方法如下: 其中常用的是两个 await 方法,作用是让当前线程进入等待状态。 成员变量及嵌套类: // 内部嵌套类 private static class Generation { boolean broken = false; } /** The lock for guarding barrier entry */ private final ReentrantLock lock = new ReentrantLock(); /** Condition to wait on until tripped */ private final Condition

同步、异步、回调函数面试经典问题

試著忘記壹切 提交于 2019-11-26 14:16:24
1、首先需要记住的是这么一句话 同步先行==》异步靠边=》回调垫底 <script> var a = new Promise(function () { console.log(1); setTimeout(() => consoel.log(2), 0); console.log(3); console.log(4); resolve(true); }) a.then(v => { console.log(8) }); var b = new Promise(function () { console.log(5); setTimeout(() => console.log(6), 0); }); console.log(7); </script> 上面这道题打印的顺序是什么? 首先来分析一下:还是那句话 同步先行==》异步靠边=》回调垫底 Promise是一个异步操作,是指的是then(),catch()方法,内部的代码还是同步的! 1.进入a的promise函数里面先打印1,遇到setTimeout回调垫底,扔到消息队列中排队等候 2.打印为134,遇到异步的 resolve(true) 靠边,因为同步还没有执行完毕 3.进入b的promise函数里面,打印5,遇到setTimeout回调垫底,扔到消息队列中排队等候 4.bpromise出来之后打印7,然后打印异步8

(day06)jquery的事件处理&nbsp;+jquery动画+jquery的类数组+ajax(用法)+

烈酒焚心 提交于 2019-11-26 14:09:25
2019.08.06(day06) jquery jquery的事件处理 使用jquery实现事件绑定: 语法: $obj.bind("事件类型",事件处理函数); 比如: $obj.bind("click",function(e){}); 简写方式: $obj.click(function(e){}); 获取事件对象event $obj.click(function(e){}); 方法的参数中的e就是事件对象,但已经经过jquery对底层 的事件进行了封装 注意,封装后jquery事件对象e,就已经可以兼容各个浏览器 e.target 事件触发的那个dom对象(在哪个对象上触发了事件) e.pageX e.pageY 获取鼠标触发事件时的坐标 事件冒泡: 在子节点产生的事件会依次向上抛给父节点 在原生js中终止事件冒泡,需要知道浏览器的差异 在jquery中不需要了解浏览器差异,只需要e.stopPropagation() 终止事件传播 合成事件: hover(mouseenter,mouseleave);模拟鼠标悬停事件 toggle() 在多个事件响应中切换 模拟事件操作: 语法: $obj.trigger(事件类型); 比如: $obj.trigger("focus"); 简写形式: $obj.focus(); jquery动画: 显示,隐藏的动画效果 show()

day28(jquery编程)

╄→гoц情女王★ 提交于 2019-11-26 13:57:50
jquery:是一个优秀javascript框架,一个轻量级的js库 兼容css3,及各种浏览器 使用户更方便的处理html,event,实现动画效果 并且方便网站提供ajax交互 使用户的html页面保持html和代码分离 注意:jquery2.x开始不再支持ie6,7,8 jquery的核心理念:write less,do more,写的少,做的多 官方网站:http://jquery.com jquery的编程步骤: 1.引入jquery的js文件 2.使用jquery的选择器,定位要操作的节点 3.调用jquery的方法进行业务操作 什么是jquery对象: jquery为了解决浏览器的兼容问题而提供的一种统一 封装后的对象描述 query提供的方法都是针对jquery对象特有的,而大部分 方法的返回类型也是jquery对象,所以方法可以连续调用(方法链) 用法: jquery对象.方法().方法().方法().... html中 标签, 节点 ,对象 元素 css 中 样式: 属性和值 id选择器,class选择器,元素选择器,派生选择器,伪类选择器 js 中 javascript对象 内置对象,外置对象,自定义对象 有属性,有方法体的方法 json 中 java中json对象,java中的json字符串 相互转换 javascript中json对象

libevent简述

浪尽此生 提交于 2019-11-26 10:34:24
一。libevent概念 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。 二。安装 1.从官网下载安装包libevent-2.1.8-stable.tar.gz 2.解压 jar zxvf libevent-2.1.8-stable.tar.gz 3.进入解压目录 4. ./congifure 5. make 5.sudo make install 6.以上完成后会在/usr/local/lib下生成库文件,将/usr/local/lib加入到 /etc/ls.so.conf内 7.sudo ldconfig -v 三。基本函数 1.创建事件处理框架 2.创建事件 what的参数可以设为: 3.将事件加入到事件处理框架中(让事件处于未决状态) 4.事件处理框架循环处理事件(事件触发后执行事件的回调函数) 5.将事件从事件处理框架中卸下(将事件设置为非未决) 6.释放事件 7.释放事件处理

Promise 的使用

半世苍凉 提交于 2019-11-26 08:59:19
  Promise 的使用,用于异步处理 ,以及解决地狱回调的;   1. Promise 是一个构造函数,既然是构造函数,我们就可以 new Promise() 就可以得到一个 Promise 的实例   2. 在 Promise 上分别有两个函数,分别叫做 reslove(成功的回调函数)和 reject (失败之后的回调函数)   3. 在 Promise 的构造函数 prototype 的属性上,有一个 .then() 的方法,也就是说,只要是 Promise 的构造函数创建的实例,都可以访问 .then() 的方法   4. Promise 表示一个异步操作,每当我们 new Promise 的实例,就表示具体的异步操作   5. 既然 Promise 创建的实例是一个异步操作,那么这个异步操作只能由两种状态     5.1 状态一:异步执行成功了,需在内部调用成功的回调函数 reslove 把结果返回给调用者     5.2 状态二:异步执行失败了,需在内部调用失败的回调函数 reject 把结果返回给调用者     5.3 由于 Promise 实例,是一个异步操作,所以内部拿到操作结果后,无法使用 return 把操作结果返回给调用者,这时候只能使用 回调函数的形式,来把成功或失败的结果返回给调用者   6. 我们可以在 new 出来的 Promise 实例上,调用

promise对象

為{幸葍}努か 提交于 2019-11-26 07:32:22
promise对象 概念: promise 是一个 构造函数 , 我们就可以通过 new Promise() 得到一个Promise的实例对象 在Promise 上, 有两个函数分别叫做 resolve(成功后执行的回调函数) 和 reject(失败后执行的回调函数) 在Promise 构造函数的 prototype 属性上, 有一个 .then() 方法, 只要是Promise 构造函数创建的实例, 都可以访问到这个 .then()方法 Promise 表示一个 异步操作; 每当我们new 一个 Promise的实例 , 而这个实例,就表示一个具体的异步操作 既然Promise 创建的实例 是一个异步的操作, 那么只能有两种的返回结果: 状态1 : 异步执行成功了,需要在内部调用,成功的回调函数 resolve 把结果返回给 调用者; 状态2 : 异步执行失败了,需要在内部调用,失败的回调函数 reject 把结果返回给 调用者; 由于Promise 的实例 是一个异步的操作,内部拿到的 结果 无法使用 return 把操作的结果返回给调用者, 这时候只能使用回调函数的形式 来把 成功/或者失败的结果 返回给调用者 我们可以在new 出来的 Promise实例上 调用.then()方法, 【预先】为这个Promise异步操作 指定 成功(resolve) 和 失败(reject)