callback

ajax的原理和运行机制

谁说胖子不能爱 提交于 2020-03-13 11:02:48
关于ajax,是最近炒得非常火的一种技术,并且时下它也是非常流行。当然,它并不是什么新技术,而是在各种已有的技术和支持机制下的一个统一。在我的项目中,偶尔也会用到ajax,用来给用户一些无刷新的体验。用过几次之后,我个人决定对它的原理和运行机制做一个总结。 ajax这个名字据说是Asynchronous JavaScript + XML的简写,实际上,它由下列几种技术组合而成。 1.使用CSS和XHTML来表示。 2. 使用DOM模型来交互和动态显示。 3.使用XMLHttpRequest来和服务器进行异步通信。 4.使用javascript来绑定和调用。 ajax的原理 XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。 所以我们先从XMLHttpRequest讲起,来看看它的工作原理。 首先,我们先来看看XMLHttpRequest这个对象的属性。 它的属性有: onreadystatechange 每次状态改变所触发事件的事件处理程序。 responseText 从服务器进程返回数据的字符串形式。 responseXML 从服务器进程返回的DOM兼容的文档数据对象。 status 从服务器返回的数字代码,比如常见的404

jquery自定义对话框alert、confirm和prompt

╄→гoц情女王★ 提交于 2020-03-12 03:22:50
jQuery Alert Dialogs,又一个基于jQuery的提示框插件,主要包括Alert、Confirm、prompt这三种,还有一个高级范例,可以在提示框内嵌入HTML语言,可以自定义风格样式。jQuery的提示框插件有很多种,每一款都是出自不同的高人之手,因此都比较有自己的特点,包括风格和使用方法等。 效果体验: http://keleyi.com/keleyi/phtml/jqplug/ 英文版: http://keleyi.com/keleyi/phtml/jqplug/1.htm 这个Jquery插件的目的是替代JavaScript的标准函数a l ert(),confirm(),和 prompt()。这个插件有如下这些特点: 1:这个插件可以使你可以支持你自己的css制定。使你的网站看起来更专业。 2:允许你自定义对话框的标题。 3:在IE7中,可以使你避免使用JavaScript 的prompt()函数带来的页面重新加载。 4:这些方法都模拟了Windows的模式对话框。在你改变改变浏览器窗口大小时候,它能够自适应用户 窗口的调整。 5:如果你引入了jQuery UI Draggable plugin插件,那这个插件也可以被自由拖动。 jquery.alerts.js代码: // Download by http://keleyi.com // 由 柯乐义

Node.js 文件系统

时光怂恿深爱的人放手 提交于 2020-03-11 20:09:35
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。 异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。 建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。 创建 test.txt 文件 这是在test.txt中的内容 创建 main.js 文件 var fs=require("fs"); //异步 fs.readFile("test.txt",function(err,data){ if(err){ return console.error(err); } console.log("异步:"+data.toString()); }) //同步 var data=fs.readFileSync("test.txt"); console.log("同步:"+data.toString()); 异步模式下打开文件 fs.open(path, flags[, mode], callback) path - 文件的路径。 flags - 文件打开的行为。具体值详见下文。 mode - 设置文件模式(权限),文件创建默认权限为

express的路由(Route)功能

£可爱£侵袭症+ 提交于 2020-03-11 16:23:38
之前: 子模块:var router = express.router(); 使用router.get,router.post设置子路由,主模块引入子模块,并添加到中间件中app.use('/getConfig') ============上篇随笔中有写到 看到其他博客中,这叫做: 路由拆分(设置二级路由)获取动态数据 修改: 子模块:var app = express(); 使用app.use,app.get/post;主模块引入子模块,并添加到主模块的app实例的中间件中app.use('/getConfig') 知识点: 1、中间件:访问到最终目标之前做的事情,可以使用app.use,参考 功能):   1.可以进行权限判断   2.可以对res和req的属性进行扩充   3中间键放在要执行的路径上面   4中间键默认情况下都匹配,可以指定匹配什么开头 使用):在匹配到路由返回数据之前,如果想做一些处理,可以使用中间件 express内部有个map,对于每一种请求方法(get,post...)都有映射,每个都映射到一个 路由对象的数组。 //var app = express(); app.get('/',callback);//callback是一个函数 //map的get属性就会push进一个Route,即使多次对同一个路径进行app.get。当然可以给app

angular4.0使用JSONP数据请求

℡╲_俬逩灬. 提交于 2020-03-11 09:02:42
ng4中有很多获取数据的API,为了满足跨域的需求,我选择JSONP模块; 应该有很多小伙伴遇到这个报错吧 injected script did not invoke callback; 下面我写个完整的demo来解决这个问题。 一、在app.module.ts模块中,注入JsonpModule模块 import {JsonpModule} from "@angular/http"; @NgModule({ imports: [ JsonpModule //注入JSonpModule模块 ] }) 二、创建服务httpService,并注入jsonp和map import { Injectable } from '@angular/core'; import {Jsonp} from "@angular/http"; //注入Jsonp模块 import 'rxjs/add/operator/map'; //注入map @Injectable() export class HttpService { } 三、拼接请求url,编写统一请求方法 这步最关键了,我们知道jsonp的请求地址是需要写callback回调参数的,用作script标签的id名; 就像下面的代码,至于为啥callback="__ng_jsonp__.__req0.finished"这样的形式;我也不是很明白。

Dubbo基本原理机制

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-11 06:49:10
转自:http://blog.csdn.net/paul_wei2008/article/details/19355681 分布式服务框架: –高性能和透明化的RPC远程服务调用方案 –SOA服务治理方案 -Apache MINA 框架基于Reactor模型通信框架,基于TCP长连接 Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。 分析源代码,基本原理如下: client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的 将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object 向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object) 将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁, 再先检测是否已经获取到结果,如果没有,然后调用callback的wait(

Dubbo基本原理机制

被刻印的时光 ゝ 提交于 2020-03-11 05:26:57
分布式服务框架: –高性能和透明化的RPC远程服务调用方案 –SOA服务治理方案 -Apache MINA 框架基于Reactor模型通信框架,基于tcp长连接 Dubbo缺省协议采用单一长连接和NIO异步通讯, 适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况 分析源代码,基本原理如下: client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的 将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object 向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object) 将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁, 再先检测是否已经获取到结果,如果没有,然后调用callback的wait()方法,释放callback上的锁,让当前线程处于等待状态。 服务端接收到请求并处理后,将结果(此结果中包含了前面的ID,即回传

alibaba远程调用框架dubbo原理

隐身守侯 提交于 2020-03-11 04:32:51
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西来解决这些问题。 基本原理如图: 在我们的系统中,经常会有一些跨系统的调用,如在A系统中要调用B系统的一个服务,我们可能会使用RMI直接来进行,B系统发布一个RMI接口服务,然后A 系统就来通过RMI调用这个接口,为了解决容灾,扩展,负载均衡的问题,我们可能会想很多办法,alibaba的这个办法感觉不错。 本文只说dubbo,原理如下: ConfigServer 配置中心,和每个Server/Client之间会作一个实时的心跳检测(因为它们都是建立的Socket长连接),比如几秒钟检测一次。收集每个Server提供的服务的信息,每个Client的信息,整理出一个服务列表,如: serviceName serverAddressList clientAddressList UserService 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4 172.16.0.1,172.16.0.2 ProductService 192.168.0.3

面试实题:No.13

梦想的初衷 提交于 2020-03-10 10:51:59
1、简单介绍一下dubbo,dubbo的作用,以及dubbo的原理 。 Dubbo是阿里巴巴公司开源的一个高性能优秀的分布式服务框架。 分析源代码,基本原理如下: client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object)将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁, 再先检测是否已经获取到结果,如果没有,然后调用callback的wait()方法,释放callback上的锁,让当前线程处于等待状态。 服务端接收到请求并处理后,将结果(此结果中包含了前面的ID,即回传)发送给客户端,客户端socket连接上专门监听消息的线程收到消息,分析结果,取到ID,再从前面的ConcurrentHashMap里面get(ID)

跨域问题

那年仲夏 提交于 2020-03-08 20:12:40
转载: https://segmentfault.com/a/1190000000718840 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70.32.92.74/b.js 域名和域名对应ip 不允许 http://www.a.com/a.js http://script.a.com/b.js 主域相同,子域不同 不允许 http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问) http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 不允许