回调函数

C++传入成员函数作为回调函数

℡╲_俬逩灬. 提交于 2020-03-10 17:31:44
首先定义对应指针类型 typedef int(Test::*TestFunc)(int,int); 注册使用 通过关键字注册,再通过关键字进行调用对应成员方法,这种比用 if else/ switch case 要快速得多 #include<stdio.h> #include<map> #include<string> #define TESTADD 1 #define TESTLESS 2 #define TESTMINUS 3 class Test { public: typedef int(Test::*TestFunc)(int,int); public: Test() { funcs[1]=&Test::add; funcs[2]=&Test::less; funcs[3]=&Test::minus; } int less(int a,int b){return a<b;} int add(int a, int b){return a+b;} int minus(int a, int b){return a-b;} int calc(int a,int b,TestFunc func) { return (this->*func)(a,b); } int dosome(int a,int b,int op) { return (this->*funcs[op])(a,b)

jquery常见用法

我的未来我决定 提交于 2020-03-10 06:12:53
1 jQuery 事件方法 2 事件方法触发器或添加一个函数到被选元素的事件处理程序。 3 下面的表格列出了所有用于处理事件的 jQuery 方法。 4 bind ( ) 向元素添加事件处理程序 5 blur ( ) 添加 / 触发失去焦点事件 6 change ( ) 添加 / 触发 change 事件 7 click ( ) 添加 / 触发 click 事件 8 dblclick ( ) 添加 / 触发 double click 事件 9 delegate ( ) 向匹配元素的当前或未来的子元素添加处理程序 10 die ( ) 在版本 1.9 中被移除。移除所有通过 live ( ) 方法添加的事件处理程序 11 error ( ) 在版本 1.8 中被废弃。添加 / 触发 error 事件 12 event . currentTarget在事件冒泡阶段内的当前 DOM 元素 13 event . data包含当前执行的处理程序被绑定时传递到事件方法的可选数据 14 event . delegateTarget返回当前调用的 jQuery 事件处理程序所添加的元素 15 event . isDefaultPrevented ( ) 返回指定的 event 对象上是否调用了 event . preventDefault ( ) 16 event .

JS数组遍历方法every()和some()的实用技巧

為{幸葍}努か 提交于 2020-03-10 05:56:57
使用every和some代替forEach 因为forEach可以用return进行类似for循环中continue的功能,但for循环中break的功能无法实现,而every和some都通过控制return的值来控制循环中断跳出break。 具体做法是: every方法返回值是布尔类型,最终返回值为true需要每一次回调函数返回值都为true,如果某一次回调函数返回值为false则every方法结束对数组的遍历并返回false,所以在想要跳出循环时回调函数return false,因为every会对callback回调函数中的返回值做的判断处理类似于&&。 some方法返回值是布尔类型,最终返回值为true只需要任意一次回调函数返回值为true就会结束对数组的遍历,如果每一次回调函数返回值都为false的话则some方法就会一直遍历辖区并返回false,所以在想要跳出循环时回调函数return true,因为some会对callback回调函数中的返回值做的判断处理类似于||。 实际运用中,如果希望跳出循环时得到的判断值为true的话则用some,如果希望跳出循环时得到的判断值为false的话则用every。 来源: CSDN 作者: subwaysamurai 链接: https://blog.csdn.net/GahoYeung/article/details

Erlang OTP行为模式behaviour——gen_event

匆匆过客 提交于 2020-03-09 18:26:49
说明 最近笔者在学习otp行为模式,在查阅相关资料时发现网上有关erlang的资料不是很多,也不够详细。在参考官方文档以及其他作者的文章后,决定写这篇博客。算是自己对知识的复习,也为诸君提供一些参考。 1.gen_event 简介 Gen_event实现了通用事件处理,通过其提供的标准接口方法以及回调函数,在OTP里面的事件处理模块是由一块通用的事件管理器和任意数量的事件处理器,并且这些事件处理器可以动态的添加和删除。一个事件可以用来记录error,alarm,info, warning等信息。一个事件管理器可以安装一个或多个事件处理器,当一个事件管理器接受到一个事件的通知时,这个事件将会被所有的已安装的事件处理器依次处理。 事件管理器是作为一个进程实现的,每个事件处理器都是一个回调模块。且事件管理器实质上是一个{Module,State} 组成的列表,Module是事件处理器,State为该事件处理器内部状态。 2.事件处理器 不多废话,直接上代码,以下为一个事件处理器标准模板,具体函数将在后面做出详细解释。事件处理器可以有多个。 -module(info_logger). -behaviour(gen_event). %% gen_event callbacks -export([init/1, handle_event/2, handle_call/2, handle

Python调用大华SDK取图

谁说胖子不能爱 提交于 2020-03-09 11:20:20
之前写了一个大华SDK取图程序,中间遇见很多问题,查找解决办法的时候发现网上关于大华SDK的调用,用Python写的少得可怜,基本没有。记录一下开发中遇见的问题和解决办法。 业务场景是识别人脸到人脸的时候保存背景图和人脸图。根据开发文档,流程为初始化SDK,登录设备,订阅智能事件,在智能事件回调函数中可以取到需要的图片信息。 声明函数调用 python调用C语言函数,需要先声明函数及函数返回值类型参数类型,下面以SDK初始化及设备登录函数举例。 SDK初始化第一个参数为回调函数。需要根据文档先注册回调函数。 Init_Callback = CFUNCTYPE(c_void_p,c_longlong,c_char_p,c_long,c_ulonglong) CFUNCTYPE()第一个参数为返回值类型,后面依次为参数类型 然后声明函数调用及返回值类型和参数类型 CLIENT_Init = NetSDK_dll.CLIENT_InitCLIENT_Init.restype = c_boolCLIENT_Init.argtypes = (Init_Callback,c_ulonglong) 设备登录函数前几个参数传递方式是input,后两个是output,实际调用传参需要通过byref方式,声明的时候需要声明为POINTER指针 CLIENT_LoginEx2 = NetSDK_dll

JavaScript基础——Promise函数

混江龙づ霸主 提交于 2020-03-08 23:03:24
异步操作 JavaScript的异步处理可以用回调函数,回调函数的使用就是确保一段代码执行完毕之后再执行另一段代码的方式 function doHomework ( subject , callback ) { console . log ( "start my " + subject + " homework." ) ; callback ( ) ; } function finish ( ) { console . log ( "finish my homework." ) ; } doHomework ( 'math' , finish ) ; // start my math homework. // finish my homework. finish函数作为回调函数,确保doHomework函数执行完毕之后才执行 promise函数用于 异步操作 ,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。同时把类似的异步处理对象和处理规则进行规范化,并按照采用统一的接口来编写,而采取规定方法之外的写法都会报错。 Promise函数基本用法 其实Promise函数的使命,就是构建出它的实例,并且负责帮我们管理这些实例。而这些实例有以下三种状态: pending: 初始状态,未履行或拒绝 resolve: 意味着操作成功 rejecte: 意味着操作失败 基本用法如下

Node.js基础知识梳理

你说的曾经没有我的故事 提交于 2020-03-08 22:03:49
Node.js基础知识梳理 一、nodeJs概述 1、nodejs解决了高并发的问题,支持大量用户的并发连接;它不是为新连接的用户新开一个线程,而是为新连接用户触发一个事件 2、js引擎内置了JIT(即时编译),提高了js的执行速度,几乎接近于本地运行速度 3、nodejs采用非阻塞型I/O及时间循环机制;即它的I/O操作是不会阻塞线程的,并且通过事件的回电函数形成触发时间环 4、nodejs适合用于,大量处理输入/输出的应用,即如聊天器、电商网站等 5、nodejs中是通过以模块为单位来划分所有功能的,模块的导出和引入 //foo.js exports.printFoo = function(){ return "foo" } //bar.js var foo = require('./foo.js'); console.log(foo.printFoo); 核心模块有: assert、buffer、child_process、cluster、console、crypto、debugger、dns、domian、events、fs、http、https、net、os、path、punycode、querystring、readline、repl、stream、string_decoder、tls、tty、url、util、vm、zlib 二、基础知识 1、控制台 1.1

详解js跨域问题

◇◆丶佛笑我妖孽 提交于 2020-03-08 20:06:20
注:本文转载自---- https://segmentfault.com/a/1190000000718840 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing )跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。 CORS 背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。 <script type="text/javascript"> var xhr = new XMLHttpRequest(); xhr.open("GET", "/trigkit4",true); xhr.send(); </script> 以上的 trigkit4 是相对路径,如果我们要使用 CORS ,相关 Ajax 代码可能如下所示: <script type="text/javascript"> var xhr = new XMLHttpRequest(); xhr.open("GET", "http://segmentfault.com/u/trigkit4/",true); xhr.send(); </script> 代码与之前的区别就在于相对路径换成了其他域的绝对路径,也就是你要跨域访问的接口地址。

Python3爬虫(十二) 爬虫性能

陌路散爱 提交于 2020-03-08 17:24:56
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、简单的循环串行 一个一个循环,耗时是最长的,是所有的时间综合 import requests url_list = [ 'http://www.baidu.com', 'http://www.pythonsite.com', 'http://www.cnblogs.com/' ] for url in url_list: result = requests.get(url) print(result.text) 二、通过线程池 整体耗时是所有连接里耗时最久的那个,相对于循环来说快了不少 import requests from concurrent.futures import ThreadPoolExecutor def fetch_request(url): result = requests.get(url) print(result.text) url_list = [ 'http://www.baidu.com', 'http://www.bing.com', 'http://www.cnblogs.com/' ] pool = ThreadPoolExecutor(10) for url in url_list: #去线程池中获取一个线程,线程去执行fetch_request方法

JS基础(回调函数)

﹥>﹥吖頭↗ 提交于 2020-03-08 14:29:13
什么是回调函数? 一个回调函数,也被称为高阶函数,是一个被作为参数传递给另一个函数(在这里我们把另一个函数叫做“otherFunction”)的函数, 回调函数在otherFunction中被调用。 一个回调函数本质上是一种编程模式(为一个常见问题创建的解决方案),因此,使用回调函数也叫做回调模式。 一个函数作为参数传递给了click方法。click方法会调用(或者执行)我们传递给它的函数。这是Javascript中回调函数的典型用法, 它在jQuery中广泛被使用。 回调函数是怎样运作的? 因为函数在Javascript中是第一类对象,我们像对待对象一样对待函数,因此我们能像传递变量一样传递函数, 在函数中返回函数,在其他函数中使用函数。当我们将一个回调函数作为参数传递给另一个函数是,我们仅仅传递了函数定义。 我们并没有在参数中执行函数。我们并不传递像我们平时执行函数一样带有一对执行小括号()的函数。 需要注意的很重要的一点是回调函数并不会马上被执行。它会在包含它的函数内的某个特定时间点被“回调”(就像它的名字一样) 这个匿名函数稍后会在函数体内被调用。即使有名字,它依然在包含它的函数内通过arguments对象获取。 回调函数是闭包 都能够我们将一个毁掉函数作为变量传递给另一个函数时,这个毁掉函数在包含它的函数内的某一点执行,就好像这个回调函数是在包含它的函数中定义的一样