自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 浏览器缓存机制

强制缓存:Cache-Control用户首次请求服务器,如果服务器端设置了响应头Cache-Control,如:ctx.set("Cache-Control","max-age=60*60*24");//表示让浏览器缓存本次请求的静态文件,24小时内有效下次再请求这个静态文件时,不必请求服务器,直接从浏览器的缓存中获取该静态文件。对比缓存:Etag/If-None-Mat...

2019-04-09 19:07:14 164

原创 web开发

用户登录模块:浏览器输入网址; 服务器端:先判断请求中是否存在session.user;如果存在:服务器端渲染,将用户名一并渲染在页面,并在响应中添加cookies的'login=1';如果不存在:在响应中添加cookies的'login=0';浏览器端js解析document.cookie,拿到login的值,为1则隐藏登录模块,为0则显示登录模块。...

2019-04-09 16:51:22 123

原创 打印对象的所有函数名(包括原型链上的函数)

function getFnNames(obj){ if(!obj) return; //打印对象(本身和原型链上)所有函数的名字,包括不可枚举的 Object.getOwnPropertyNames(obj).forEach((key,index)=>{ let type = Object.prototype.toString.call(obj[...

2019-04-07 10:47:23 1011

原创 crypto(加密、签名)

哈希算法签名:(MD5或SHA1、sha256、sha512)const crypto = require('crypto');let hash = crypto.createHash('md5'); //创建hash对象// 可任意多次调用update();hash.update('abcd'); //添加数据hash.update('efg'); //添加数...

2019-03-28 22:25:06 1976

原创 获取变量类型

function getType(v){ let type = Object.prototype.toString.call(v); let arr = type.split(" "); let str = arr[1].slice(0,-1); return str;}let time = new Date();console.log(getType(...

2019-03-28 00:14:31 340

原创 url

将URL字符串解析为URL 对象:const url = require('url');url.parse('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1',true);/*{ protocol: 'https:', slashes: true, auth: null, host: 'www.baidu.c...

2019-03-27 19:07:48 129

原创 path(路径)

POSIX 和 Windows的路径区别:路径:D:\demo\abc\a.jswindows的路径:D:\\demo\\abc\\a.jsPOSIX的路径:/demo/abc/a.js返回路径中的文件名(含后缀):const path = require('path');path.basename('C:\\temp\\myfile.html'); //结果是:在...

2019-03-27 18:47:23 768

原创 readline(逐行读取)

逐行读取文件:const readline = require('readline');const fs = require('fs');let readStream = fs.createReadStream('a.txt');let rl = readline.createInterface({ input: readStream});//每读取一行触发函数rl.o...

2019-03-27 17:10:02 12553

原创 Stream(流)

可读流:Readableconst fs = require('fs');let data = Buffer.alloc(0);let readable = fs.createReadStream('a.text',{highWaterMark:64*1024});//{highWaterMark:64*1024}表示每次触发data事件读取的数据块不得超过64kbreadab...

2019-03-26 22:31:25 139

原创 fs(文件系统——目录操作)

创建目录:const fs = require('fs');fs.mkdir('./abc', err=>{ console.log('在当前目录下创建abc目录');});//递归创建目录fs.mkdir('./abc/a/b/c/d', {recursive:true}, err=>{ console.log('在当前目录下创建abc目录,abc目...

2019-03-26 02:26:32 1631

原创 fs(文件系统——文件操作)

读取文件:const fs = require("fs");// 异步读取fs.readFile('a.js', function (err, data) { console.log(data.toString());});// 同步读取let data = fs.readFileSync('a.js');console.log(data.toString());写...

2019-03-25 18:49:39 3532

原创 dns(域名解析)

域名解析: dns.lookup("host", (err,ip地址,网际协议版本)=>{}); 说明:得到域名对应的ipv4或ipv6地址,优先获取host的本地ip。比如在hosts文件里配置了如下规则:127.0.0.1 baidu.comconst dns = require('dns');dns.lookup('baidu.com', (err, ip, fam...

2019-03-25 16:04:08 469

原创 Buffer(缓冲器)和string_decoder(字符串解码器)

缓冲器是什么?储存字节的容器,buffer每个下标就是一个字节。创建缓冲器:let bf1 = Buffer.from("我是utf8字符串","utf8"); //用utf8解析字符串,变成字节,存进缓冲器let bf2 = Buffer.from("e4bda0","hex"); //用16进制解析"16进制字符串",存进缓冲器let bf3 = Buffer.fr...

2019-03-24 17:41:34 689

转载 字符编码:ASCII,Unicode 和 UTF-8的区别

转载:阮一峰一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二...

2019-03-24 16:08:42 71

原创 assert(断言)

主要用于测试,达不到预期时抛出错误: assert(value[, message]); 参数说明:assert( 表达式, "错误时的提示" ); 说明:表达式返回true,即达预期var assert = require('assert');function add (a, b) { return a + b;}var expect = add(1, 2);...

2019-03-24 14:02:51 482

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除