回调函数

大华摄像头java开发之抓图

▼魔方 西西 提交于 2020-03-08 09:02:50
大华摄像头java开发之抓图 继上一个海康的项目之后,这个月开始了大华网络摄像头的二次开发,在写正式的内容之前先容我吐槽一下: 1. 首先就是从官网下载的Demo,里面只有C写的,让我一个java开发怎么看的懂,这个方面就比海康要差一点了; 2. 遇到问题,咨询他们的技术的时候,每次回复都是寥寥数字,还得让我猜半天,但最后问题好歹都解决了(也有一小部分,他们也没法解决); 3. 每次我问问题的时候,都会给我回复一个附件,就是所问问题的Demo,既然有java的Demo,为什么不直接放官网呢,还要每次问一个给一个,相当无语。 好了言归正传,回到正题。我们拿到摄像头安装好之后,根据官网的工具,自己配置一下IP地址,然后下载官网的Demo(虽然是C的,但是开发文档和编程指导还是有用的),如果想要截图部分的代码的话,可以自己去下载 http://download.csdn.net/download/u012492535/10128871 ,里面还有预览功能、智能交通功能、下载录像功能。 既然是网络摄像头开发,那么流程就都是差不多的,都是按照流程来执行的: 1、第一步先初始化设备,大华的设备功能需要用到回调类,所以初始化也是有的: 代码 // 初始化SDK boolean binit = NetSdk.CLIENT_Init(m_DisConnectCB, new NativeLong(0)

MATLAB GUI之ABC

假装没事ソ 提交于 2020-03-07 20:54:43
GUIDE 属性设置 name 更改名字 logo 在GUI的“.m”文件中的OpeningFcn函数或者OutputFcn函数中添加以下代码: % 设置页面左上角的 LogoI = imread( 'Logo.jpg' ); % Logo.jpg为指定的图标javaImage = im2java( I );newIcon = javax.swing.ImageIcon( javaImage );figFrame = get( handles.figure1, 'JavaFrame' ); % 取得Figure的JavaFramefigFrame.setFigureIcon( newIcon ); % 修改图标 本问题参考了网址: https://blog.csdn.net/hycwoaiyl/article/details/80113594 ———————————————— 版权声明:本文为CSDN博主「Daniel__Shi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/shitao99/article/details/85955726 全局变量 “在函数或基本工作空间中,用global声明的变量为全局变量。” “声明了全局变量的函数或基本工作空间,共享该全局变量,都可以给它赋值。

学习Javascript之节流和防抖

空扰寡人 提交于 2020-03-07 11:43:16
前言 本文1012字,阅读大约需要4分钟。 总括: 本文通过实例介绍了什么是节流函数,什么是防抖函数。 公众号:「前端进阶学习」,回复「666」,获取一揽子前端技术书籍 社会犹如一条船,每个人都要有掌舵的准备。 正文 节流函数和防抖函数相信很多人都在日常业务开发中使用过,其实不管是节流函数还是防抖函数都是一种简单的高阶函数,他们都是通过将一个关键的外部变量保存在外层作用域,通过对这个变量的判断和操作来决定是否调用回调函数。 节流函数 函数节流让指函数有规律的进行调用,应用场景: 游戏中发射子弹的频率(比如1秒发射一颗); 滚动事件; 所谓节流即让回调函数在一定时间内只能调用一次,因此我们的节流函数需要的参数有两个: 回调函数; 延迟执行的时间; 实现如下: /** * @param {function} fun 调用函数 * @param {number} delay 延迟调用时间 * @param {array} args 剩余参数 */ const throttle = (fun, delay, ...args) => { let last = null; return (...rest) => { const now = + new Date(); let _args = [...args, ...rest]; if (now - last > delay) { fun

Linux USB 鼠标驱动程序解析

大憨熊 提交于 2020-03-07 04:41:21
USB 总线引出两个重要的链表!   一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。   USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)的区别是什么?   USB 设备驱动程序包含 USB 设备的一些通用特性,将与所有 USB 设备相匹配。在 USB core 定义了:struct usb_device_driver usb_generic_driver。usb_generic_driver 是 USB 子系统中唯一的一个设备驱动程序对象。而 USB 驱动程序则是与接口相匹配,接口是一个完成特定功能的端点的集合。   设备是如何添加到设备链表上去的?   在设备插入 USB 控制器之后,USB core 即会将设备在系统中注册,添加到 USB 设备链表上去。   USB 设备驱动程序(usb device driver)是如何添加到驱动链表上去的?   在系统启动注册 USB core 时,USB 设备驱动程序即将被注册,也就添加到驱动链表上去了。   接口是如何添加到设备链表上去的?   在 USB

回调函数

浪尽此生 提交于 2020-03-07 04:07:44
编程分为两类:系统编程(system programming)和应用编程(application programming)。所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用。系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用。所以在抽象层的图示里,库位于应用的底下。 当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为 回调函数 (callback function)。 打个比方,有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去敲门,睡得死怕耽误事的,还可以要求往自己头上浇盆水。这里,“叫醒”这个行为是旅馆提供的,相当于库函数,但是叫醒的方式是由旅客决定并告诉旅馆的,也就是回调函数。而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为 登记回调函数 (to register a callback function)。如下图所示(图片来源:维基百科):

【读书笔记】《深入浅出nodejs》第三章 异步I/O

帅比萌擦擦* 提交于 2020-03-07 01:57:46
1. 为什么要异步I/O   (1)用户体验上:     并发的优势: M+N+... -> max(M,N,...) --> 使后端能够快速的响应资源     *并发的劣势:...   (2)资源分配:     单线程同步编程模型会因阻塞I/O导致硬件资源得不到更优的使用。 -> 硬件使用效率低 -----                                                | -----> Node:利用单线程,远离多线程死锁,状态同步等问题;利用异步I/O,让单线程远离阻塞,以更好的使用CPU。     多线程编程模型会因为编程中的死锁、状态同步等问题让开发人员头疼。 -> 编程上的困难 ----- 2. Node的异步I/O   (1)Node自身的执行模型 -- 事件循环 (令回调函数十分普遍)     当进程启动时,Node会创建一个类似于while(true)的循环,没执行一次循环体的过程称为一次"Tick"(“滴答”一声)。     每个Tick中,Node会:       A. 查看是否有事件待处理(什么是事件?) 事件的来源:文件I/O,网络请求       B. 如果有,取出事件以及相关的回调函数       C. 如果存在关联的回调函数,就执行他们       D. 进入下一个循环       E. A -> 没有事件了 -> 退出

Node.js编程之异步

别来无恙 提交于 2020-03-06 15:00:16
异步操作 Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务。这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。 由于这种特性,某一个任务的后续操作,往往采用回调函数(callback)的形式进行定义。 var isTrue = function(value, callback) { if (value === true) { callback(null, "Value was true."); } else { callback(new Error("Value is not true!")); } } 上面代码就把进一步的处理,交给回调函数callback。 如果没有发生错误,回调函数的第一个参数就传入null。这种写法有一个很大的好处,就是说只要判断回调函数的第一个参数,就知道有没有出错,如果不是null,就肯定出错了。另外,这样还可以层层传递错误。 Node约定,如果某个函数需要回调函数作为参数,则回调函数是最后一个参数。另外,回调函数本身的第一个参数,约定为上一步传入的错误对象。 var callback = function (error, value) { if (error) { return console.log

Node.js的三大特点

╄→гoц情女王★ 提交于 2020-03-06 02:17:18
单线程 Nodejs跟Nginx一样都是单线程为基础的,这里的单线程指主线程为单线程,所有的阻塞的全部放入一个线程池中,然后主线程通过队列的方式跟线程池来协作。线程池主要由一堆callback回调函数构成的,然后主线程在循环间隙中适当调用,并清空队列。 在Java、PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让Web应用程序支持更多的用户,就需要增加服务器的数量,而Web应用程序的硬件成本当然就上升了。 **Node.js不为每个客户连接创建一个新的线程,而仅仅使用一个线程。**当有用户连接了,就触发一个内部事件,**通过非阻塞I/O、事件驱动机制,让Node.js程序宏观上也是并行的。**使用Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接。 另外,单线程的带来的好处,还有操作系统完全不再有线程创建、销毁的时间开销。 坏处,就是一个用户造成了线程的崩溃,整个服务都崩溃了,其他人也崩溃了。 话不多说,上图! 上图说明,单线程也能造成宏观上的“并发”。 非堵塞I/O 当用户在访问数据库取得数据的时候,需要一段请求时间。在传统的单线程处理机制中,在执行了访问数据库代码之后,整个线程都将暂停下来,等待数据库返回结果

jQuery Ajax总结

一笑奈何 提交于 2020-03-06 00:57:34
jQuery对Ajax的操作进行了封装。jQuery中$.ajax()属于最底层的方法,这个放在后面说,首先看看封装了$.ajax()的方法。 load()方法 load()可以远程载入HTML并插入到DOM中。结构为: load(url [,data] [,callback]) url (String):服务端资源的url。 data (Obejct):发送到服务器的key/value数据 callback (Function):请求完成时(无论成功或失败)的回调函数,在响应数据已经加载到包装集元素之后被调用。传入这个函数的参数是响应文本、状态码、以及xhr实例。 加载HTML文档 首先构造一个要被load()方法加载的新闻评论页面,comment.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>最新评论</title> </head> <body> <div class="comment"> <p> <a href="#" class="username">张三</a> <span class="location">[北京市网友]</span> </p> <p class="contentTxt">一楼给度娘</p> </div> <div class="comment">

七、 数组类型操作属性

不羁的心 提交于 2020-03-05 23:55:21
1. Array.of和new Array都可以创建一个新数组 | 区别:它们的区别在于当只设置一个参数的时候 | new Array:参数只有一个的时候,表示数组的长度 | Array of:参数只有一个的时候,表示数组只有一个元素且是传递的那个参数 2. 数组类型检测 | Array.isArray(参数):参数为所需要检测的数据 3. 数组类型转换为字符串 | .toString():大部分数据类型在调用该方法的时候,都会将其转换为字符串类型 | .Join(参数):此方法可以设置字符串之间的连接符号 | 参数是表示指定的连接符号,比如:"-" 4. Array.from(对象,回调函数) | 此方法可以将类数组转换为数组格式 | 什么是类数组? 就是具有"length"属性或者可以遍历迭代的对象,比如:字符串 | 这里的回调函数可以对数组里的每一个元素进行函数处理 5. 展开语法 | 使用"..."展开语法可以将NodeList转换为数组操作 6. 数组合并 | 方法一:利用展开语法 --> 类似于把一个数组元素都遍历出来在添加入另一个数组里 | let a = [1,2,3, ...数组对象]; | 方法二:.concat() | 数组A.concat(数组B) --> 返回值是数组A和数组B合并后的新数组 | let 数组C = 数组A.concat(数组B) | 注意