回调函数

node第一个参数必须是err

匿名 (未验证) 提交于 2019-12-02 21:53:52
Node.js 约定回调函数第一个参数必须是错误对象err: 问题:Node.js约定回调函数第一个参数必须是错误对象err,如果没有错误该参数就是null 原因:异步执行分成两段,在两段之间抛出异常和错误程序无法直接捕获,只能当做参数传入第二段 文章来源: node第一个参数必须是err

CORS 跨域 实现思路及相关解决方案

匿名 (未验证) 提交于 2019-12-02 21:53:32
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果没有同源策略,攻击者可以通过JavaScript获取你的邮件以及其他敏感信息,比如说阅读私密邮件,发送虚假邮件,查看聊天记录等等。所谓同源是指,协议,域名,端口相同。三者只有有一个不相同,就认为不同源! JSONP: JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。 原理:含有src属性的标签都可以跨域,如img、script、iframe! 本质:只是执行了javascript脚本! 简单来说,就是在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数(返回带数据参数的回调函数的字符串,在客户端刚好被动态执行了!)。 jQuery中提供了两个方法来实现:$.getJSON()和$.ajax(),常用的是底层的$.ajax()方法! 1.$.getJSON(): $.getJSON(url?jsoncallback=?,data,fn(data){…}) 关键点:在url后带上参数jsoncallback=?,后台返回随机命名的callback函数

jQuery总结

匿名 (未验证) 提交于 2019-12-02 21:40:30
1.什么是jQuery?   jQuery是一个快速、简洁的JavaScript框架。jQuery设计的宗旨是“write Less,Do More”,即写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作(DOM)、事件处理、动画设计和Ajax交互。 2.怎么使用jQuery   1.下载     下载地址:https://github.com/jquery/jquery/releases   2.导入jQuery库     <script type="text/javascript" src="js/jquery.min.js"></script>   3.语法:$("选择器").动作() 3.jQuery 对象和 DOM 对象相互转换   jQuery ---> DOM     1.[index] 方法,就是在 jQuery 对象后面加上索引,比如: var $cr = $(#cr); // jQuery 对象 var cr = $cr[0]; // 将 jQuery 转化为 DOM 对象     2.get(index) 方法 var $cr = $(#cr); // jQuery 对象 var cr = $cr.get(0); // 将 jQuery 转化为 DOM 对象      DOM

指针函数 函数指针 回调函数

混江龙づ霸主 提交于 2019-12-02 21:24:19
指针函数 : 指针函数本质是一个函数,只不过返回值为某一类型的指针(地址值)。 函数返回值必须用同类型的变量来接受,也就是说,指针函数的返回值必须赋值给同类型的指针变量。 指针函数的定义格式: 类型名 *函数名(函数参数列表) ; /* !< 指针函数 */ #include <stdio.h> int *sum(int a, int b); int main() { int a = 1; int b = 2; int *p = NULL; p = sum(a, b); printf("%d\n", *p); return 0; } int *sum(int a, int b) { static int sum = 0; sum = a + b; return ∑ } 函数指针 : 函数指针本质是一个指针,只不过这个指针指向一个函数。 常见的函数都有其入口,比如main()函数是整个程序的入口,我们调用的其他函数都有其特定的入口,正如我们可以通过地址找到相应的变量一样,我们也可以通过地址找到相应的函数。而这个存储着函数地址的指针就是函数指针。 换言之,我们所说的指针变量通畅指向一个整形、字符型、或者数组等变量,而函数指针指向的是函数。 正如我们可以通过指针访问相应的变量,函数指针也可以像函数一样用于调用函数、传递参数。 函数指针定义格式: 类型名 (*函数名)(函数参数列表)

Django之AJAX传输JSON数据

我是研究僧i 提交于 2019-12-02 16:40:17
目录 Django之AJAX传输JSON数据 AJAX 中 JSON 数据传输: django响应JSON类型数据: django 响应 JSON 类型数据: Django之AJAX传输JSON数据 AJAX 中 JSON 数据传输: AJAX请求JSON类型数据: AJAX通过GET或者POST方式都可以发送JSON数据请求,需要指定内容类型:‘Content-Type':'application/json',post请求必须设置 headers :{ 'X-CSRFToken' : $ ( ' input [ name =csrfmiddlewaretoken]' ).val()},在请求头部进行csrf认证; 请求数据data经过 JSON .stringify()进行序列化 AJAX在前端发送的JSON数据,django不能自动解析,因此request.GET或request.POST都为空,JSON数据在请求体request.body中需要手动解析(解码反序列化)。 django响应JSON类型数据: django视图函数通过 import json导入模块,对数据需要返回的数据进行json.dumps()序列化 AJAX 请求 JSON 类型数据: 以post请求为例,get请求不需要csrf认证,故不需要JSON数据请求的headers信息 login.html <

day31总结

你离开我真会死。 提交于 2019-12-02 16:02:03
目录 线程队列 线程定时器 线程池和进程池 进程池和线程池--- concurrent.futures 什么时候用进程池还是什么时候用线程池? 线程池和信号量的区别 协程 什么是协程 什么样的协程是有意义的 为什么要有协程 gevent模块实现I/O监测和任务切换 线程队列 import queue q = queue.Queue(2) q.put('蔡启龙') # q.put('才气龙') print(q.get()) # 蔡启龙 q.task_done() q.join() q = queue.LifoQueue() # last in first out 先进后出队列---堆栈 q.put('123') q.put('456') print(q.get()) # 456 q = queue.PriorityQueue() # 优先级队列,可以根据优先级取数据 q.put('2') q.put('1') q.put('3') print(q.get()) # 1 # 通常放入的元组数据第一个值是int类型,数值小的先取出 线程定时器 import threading import time def task(): print('开始...') time.sleep(3) print('结束...') t = threading.Timer(5, task) #

node js

给你一囗甜甜゛ 提交于 2019-12-02 15:19:35
周末的整理 js之间的传输 require-----------接收数据 首先引入自定义模块(相对路径写完整) 设置变量连接require module.exports----发送数据 设置module.exports发送某个变量或数据 读取文件的内容 引入内置的fs模块 异步读取方式 fs.readFile // 异步 fs.readFile(filePath,'utf8',(err,data)=>{ if(err){ console.log('读取文件内容失败:'+err.message) return } console.log('文件内容是:'+data) }) 同步的读取方式 fs.readFileSync // 同步读取内容时如何处理错误信息,避免导致后面代码不执行 try...catch try{ //有错误时执行catch let content = fs.readFileSync(filePath,'utf8') console.log('====================',content) }catch{ console.log('发送错误:'+e.message) } 将文件的内容写入 如果路径没有改文件,会自动新建一个 覆盖式的写入------fs.writeFile(写入的路径,写入的内容,回调函数) const fs = require('fs'

nodejs学习笔记

左心房为你撑大大i 提交于 2019-12-02 15:17:29
nodejs创建服务器 http.createServer(),response.writeHead(),response.end() var http = require ( 'http' ); http . createServer ( function ( request , response ) { // 发送 HTTP 头部 // HTTP 状态值 : 200 : OK // 内容类型 : text/plain response . writeHead ( 200 , { 'Content-Type' : 'text/plain' }); // 发送响应数据 "Hello World" response . end ( 'Hello World\n' ); }). listen ( 8888 ); // 终端打印如下信息 console . log ( 'Server running at http://127.0.0.1:8888/' ); nodejs回调函数 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能

要想弄明白轮子的构造,就自己造一个!

会有一股神秘感。 提交于 2019-12-02 15:01:11
全文共 1944 字,预计学习时长 4 分钟 图源Unsplash,拍摄者JonCartagena 某天,笔者给一名应聘高级职位的JavaScript开发者面试。面试中有一道题目是要求面试者编写一个能够展示HTTP呼叫的函数,若没写出来就多试几次。 由于是在白板上写,只要面试者能写出伪代码,就已经足够了。但如果他还能分享一些对该问题的理解,那就更好了。很遗憾,他没能想出一个好方法。 我们看出他的紧张,决定把题改得简单些,让他将回调函数改为承诺函数。 他也失败了。 能看得出他曾见过类似编码,也或多或少知道操作的方法。写出伪代码表明他已理解概念,这本已足够了。 但是他写在白板上的代码完全没意义。他只略懂JavaScript承诺函数的概念,但并不能很好地解释它。 如果作为中级开发者,他还能蒙混过关,但要应聘高级职位,就行不通了。他如何能解析一个复杂的承诺链,并解释给别人听呢? 开发者需要不假思索地使用抽象 开发者和抽象打交道。他们要提取代码,使其变抽象,否则就要重做。所以当人们把精力放在更重要的部分上,他们理所当然地断定抽象能发挥作用。 通常来说,抽象确实能起作用。但当事情变得复杂,开发者就要真正了解抽象是如何运作的。 竞争高级开发者职位的面试者就理所当然地使用了承诺抽象。如果他在某一处发现了一段代码,他很可能知道如何使用它,但他并未真正理解概念,因而无法在面试时重现操作。