回调函数

关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结

谁说胖子不能爱 提交于 2019-11-27 08:04:44
昨天面试的时候没有答上来同步与异步,阻塞与非阻塞的区别,回来搜了一下,发现这篇文章写的不错,转载学习一下,链接如下: https://blog.csdn.net/chen8238065/article/details/48315085 相关资料 IO基本概念 Linux环境 同步异步阻塞非阻塞 同步与异步 阻塞与非阻塞 IO模型Reference Link 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动异步IO模型 异步IO模型 总结 AIOBIONIO Java对BIONIOAIO的支持 AIOReference Link1ReferenceLink2 NIOReference Link epollselectpollReference Link LTETepoll select的几大缺点 poll实现 epollreference Link 总结 IOCP ReferenceLinkConcreteRealization 相关资料 IO基本概念 Linux环境 Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)

RPA手把手——urllib.request.urlretrieve()实现文件下载进度查看

孤者浪人 提交于 2019-11-27 07:45:46
艺赛旗 RPA9.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 函数参数说明 urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None) url: 文件下载链接 filename: 文件下载路径(如果参数未指定,urllib 会生成一个临时文件保存数据) reporthook: 回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度 data: 指 post 到服务器的数据。该方法返回一个包含两个元素的元组 (filename, headers),filename 表示保存到本地的路径,header 表示服务器的响应头 示例 import urllib.request def download(): #下载链接 down_url=r" https://av.sc.com/hk/zh/content/docs/hk-c-nddr-ff304m-ag-20190809.pdf " #储存路径 down_path=r"C:\Users\Administrator\Desktop\test\aa.pdf" #链接转义,防止链接中有中文或空格而报错 down_url

Ext js-02 -官方API文档使用

浪尽此生 提交于 2019-11-27 05:59:06
官方API文档地址: http://docs.sencha.com/extjs/6.5.3/classic/Ext.html 打开网页如下: 1.选择所使用的Ext js版本,后面offline docs是离线文档的下载 2.搜索功能:查找类,组件等 需要注意这个API下面modern是手机端对应的组件,classic对用的是电脑端的组件的介绍 例子:搜索messagebox,选择第二个Ext.window.MessageBox,打开如下: 3.看懂API对组件的介绍:如单例对象,组件类,xtype,config配置,properties配置,methods方法,events事件,继承体系等 (1)单例对象与组件类: 点击左侧的Ext ,在显示的界面上会看到一个SINGLETON的标识,表示这是一个单例对象( 注意,单例对象前面显示的是红色的图标 ),在整个应用当中,只有一个Ext对象, 下边configs,properties,methods是这个单例对象具有的一些属性,方法等 搜索messagebox时,会出现Ext.window.MessageBox,和Ext.MessageBox,后者是一个单例对象,如上图,而Ext.window.MessageBox是一个组件(每一个组件都是一个类),Ext.window.MessageBox 指明了 Ext

bootbox.js官方文档

杀马特。学长 韩版系。学妹 提交于 2019-11-27 05:47:08
简介 Bootbox.js 是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框。 不像原生的alert等对话框,所有的Bootstrap模态框生成的都是非阻塞事件。所以 在使用 confirm() 对话框时,请记住这一点,因为它不是本地确认对话框的替代。 任何取决于用户选择的代码都必须放在回调函数中。 alert alert是只有单个按钮的对话框,按ESC键或单击关闭按钮可关闭对话框。 bootbox.alert("Your message here…") message中可以放html语言,比如: bootbox.alert("Your message <b>here…</b>") 回调函数: bootbox.alert("Your message here…", function(){ /* your callback code */ }) options选项自定义对话框: bootbox.alert({ size: "small", title: "Your Title", message: "Your message here…", callback: function(){ /* your callback code */ } }) Confirm Confirm是具有确定和取消按钮的对话框,

【cocos2d-js官方文档】九、cc.loader

百般思念 提交于 2019-11-27 05:23:45
概述 原来的 cc.Loader 被改造为一个单例 cc.loader ,采用了插件机制设计,让loader做更纯粹的事。 各种资源类型的loader可以在外部注册进来,而不是直接将所有的代码杂揉在 cc.Loader 中,更好的方便管理以及用户自定义loader的创建。 cc.loader 中包含了一些网络资源获取的基本api,例如加载js、加载image等。 API描述 (注:以下描述中,全路径的意思为 "资源的根路径" + "资源路径", 例如设置图片资源根路径(cc.loader.resPath)为"res",图片资源路径为"a.png", 那么全路径为"res/a.png",非全路径为"a.png"。) resPath 资源的根路径(音频资源除外)。 audioPath 音频资源的根路径。 getXMLHttpRequest 获取XMLHttpRequest对象。 loadJs 加载js文件。 参数: url 资源路径(注意,必须是全路径) cb 回调函数 返回值: 无 用法1: cc.loader.loadJs("src", [ "a.js", "b.js" ], function(err){ if(err) return console.log("load failed"); //success }); 用法2: cc.loader.loadJs([ "src/a

zookeeper(三)java操作zookeeper

别等时光非礼了梦想. 提交于 2019-11-27 05:06:37
首先要使用java操作zookeeper,zookeeper的javaclient是我们更轻松地去对zookeeper进行各种操作,我们引入zookeeper-3.3.4.jar和zkclient-0.1.jar即可。 zookeeper-3.3.4.jar为官方提供的javaAPI,zkclient-0.1.jar则为在原生api基础上进行扩展的开源JAVA客户端。 (1)创建会话方法 : 客户端可以通过一个zookeeper实例来连接zookeeper服务器。 Zookeeper(Arguments)方法(一共有4个构造方法,根据参数不同) 参数说明如下: connectString :连接服务器列表,用"逗号"分割。 sessionTimeout: 心跳检测时间周期(毫秒)。 wather: 事件处理通知器。 canBeReadOnly :标识当前会话是否支持只读。 sessionId 和 sessionPassword :提供连接zookeeper的sessionId和密码,通过这两个确定唯一一台客户端,目的是客户提供重复会话。 注意:zookeeper客户端和服务器端会话的建立是一个异步过程,也就是说在程序中,我们程序方法在处理完成客户端初始化后立即返回(也就是说程序往下执行代码,这样,大多数情况下我们并没有真正构建好一个可用会话,在会话的生命周期处于

Ajax 完整教程-(三)

大兔子大兔子 提交于 2019-11-27 04:43:19
原文地址: https://www.ibm.com/developerworks/cn/xml/wa-ajaxintro3/index.html 在本系列的 上篇文章 中,我们将详细介绍 XMLHttpRequest 对象,它是 Ajax 应用程序的中心,负责处理服务器端应用程序和脚本的请求,并处理从服务器端组件返回的数据。由于所有的 Ajax 应用程序都要使用XMLHttpRequest 对象,因此您可能会希望熟悉这个对象,从而能够让 Ajax 执行得更好。 但是对于希望掌握 Ajax 的开发人员来说,必须要全面理解: HTTP 状态代码 HTTP 就绪状态 XMLHttpRequest 对象 。 XMLHttpRequest 对象,它是 Ajax 应用程序的中心,负责处理服务器端应用程序和脚本的请求,并处理从服务器端组件返回的数据。所有的 Ajax 应用程序都要使用 XMLHttpRequest 对象。 重点介绍这个请求对象的 3 个关键部分的内容: •HTTP 就绪状态 •HTTP 状态代码 •可以生成的请求类型 如果您不仅仅是想了解 Ajax 编程的常识,而是希望了解更多内容,就需要熟悉就绪状态、状态代码和请求本身的内容。当应用程序出现问题时 —— 这种问题总是存在 —— 那么 如果能够正确理解就绪状态、如何生成一个 HEAD 请求或者 400 的状态代码的确切含义

利用InjectedBundle定制自己的Webkit(一)

跟風遠走 提交于 2019-11-27 04:15:48
Webkit是一个多进程构架,内核WebCore和JS引擎JavaScriptCore都处在WebProcess进程中,而用户界面相关的处理则处在UIProcess进程中。(详见 Webkit客户端进程解析 ) Webkit提供了大量的API供客户程序调用,但是这些API都是在客户进程中调用的,我们无法访问到内核部分的数据结构并处理,如DOM树、Render树、加载的Web资源等等。 为了解决这一问题,Webkit提供了一个运行在内核进程的InjectedBundle来提供对内核数据的操作。 InjectedBundle类似于一个插件,单独编译成一个动态库,在内核进程运行到特定情况时会调用InjectedBundle中注册的对应函数来实现自定义操作。每个WebProcess只能加载一个InjectedBundle,用户可以在创建WebProcess的时候指定使用哪个InjectedBundle。 接下来我们就动手制作一个自己的InjectedBundle然后用Webkit加载它。 1. 准备工作 我采用的编译环境是VC2005 (1)首先需要下载并编译Webkit( 详见 Windows平台编译Webkit ) (2)然后创建一个空项目,修改项目属性   a. 配置类型:动态库(.dll)      b. 添加附加包含目录:Webkit生成文件路径\inlude 和

一、调用栈堆(不知道为什么开始写博客,大概是CV太累了吧~缓缓)

杀马特。学长 韩版系。学妹 提交于 2019-11-27 03:38:07
放在最前面 掘金上一个大佬关于调用栈堆的文章 .他的文章比较详细风趣,图文并茂,以下只是我的学习历程 一、调用栈堆 1.js是单线程!单线程!单线程语言 2.js事件循环(直接上图) 同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。 当指定的事情完成时,Event Table会将这个函数移入Event Queue。 主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。 上述过程会不断重复,也就是常说的Event Loop(事件循换)。 总结:先完成同步的操作,然后读取异步的回调函数,执行函数中代码,之后继续这一过程,直至没有请求为止。 3.定时器(setTimeout)和延时器(setInterval) setTimeout(() => { console.log('延时3秒'); },3000) 定时器和延时器是典型的异步执行操作,上面的定时器设置了三秒延迟,但不是3秒之后就一定触发了,在第二点中说过,异步操作需要等待同步操作的完成,设置时间为零毫秒同理。 延时器有点特殊,延时器是每隔多少毫秒就把对应的回调函数丢进对应的异步栈中,所以当异步回调函数的执行时间高于延时器设置的毫秒数,看起来就跟没有延迟一样。(作者原话:一旦setInterval的回调函数fn执行时间超过了延迟时间ms