当前位置: 首页 > news >正文

前后端分离企业网站源码/搜狗指数

前后端分离企业网站源码,搜狗指数,网站开发怎么使用维语,免费二级域名空间注册缓冲区(Buffer) - Buffer的结构和数组很像,操作的方法也和数组类似- 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据- js数组性能较差;- 使用buffer不需要引入模块,直接使用即可- 在buff…

缓冲区(Buffer)

	-  Buffer的结构和数组很像,操作的方法也和数组类似- 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据- js数组性能较差;- 使用buffer不需要引入模块,直接使用即可- 在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示buffer中每一个元素的范围是从00 - ff   0 - 25500000000 - 11111111计算机 一个0 或一个1 我们称为1位(bit)8bit = 1byte(字节)1024byte = 1kb1024kb = 1mb1024mb = 1gb1024gb = 1tbbuffer中的一个元素,占用内存的一个字节- Buffer的大小一旦确定,则不能修改,Buffer实际上是对底层内存的直接操作
	var str = "Hello 程序猿";//将一个字符串保存到buffer中// var buf = Buffer.from(str);//// console.log(buf.length); //占用内存的大小    15  一个字符占1个字节,一个汉字占3个字节// console.log(str.length);//字符串的长度       9// console.log(buf);       //存的是二进制,但以16进制显示  <Buffer 48 65 6c 6c 6f 20 e5 b0 9a e7 a1 85 e8 b0 b7>//创建一个指定大小的buffer//buffer构造函数都是不推荐使用的// var buf2 = new Buffer(10);//10个字节的buffer// console.log(buf2.length);  // 10//创建一个10个字节的buffervar buf2 = Buffer.alloc(10);//通过索引,来操作buf中的元素// buf2[0] = 88;   // 10进制,打印出来显示是以16进制;// buf2[1] = 255;// buf2[2] = 0xaa;// buf2[3] = 255;   // 超过255, 转换成二进制后只取后8位保存//只要数字在控制台或页面中输出一定是10进制// console.log(buf2[2])   // 0xaa 10进制输出为170//console.log(buf2[2].toString(16));/*for(var i=0 ; i<buf2.length ; i++){console.log(buf2[i]);}*///Buffer.allocUnsafe(size) 创建一个指定大小的buffer,但是buffer中可能含有敏感数据;// 因为分配内存前不清空数据,如果只使用的内存小于分配的大小,剩余部分保存的还是之前的数据,即敏感数据// 不清空数据,所以allocUnsafe性能比alloc好/*var buf3 = Buffer.allocUnsafe(10);console.log(buf3);*/
  nodeJs作为服务器,接受用户的请求数据,响应数据;数据都存在Buffer
  • Buffer的方法 http://nodejs.cn/api/buffer.html

      - Buffer.from(字符串)- 将一个字符串中内容保存到一个buffer中- buf.toString()- 将buffer转换为一个字符串- Buffer.alloc(size)- 创建一个指定大小的buffer对象- Buffer.allocUnsafe(size)- 创建一个指定大小的buffer对象,可以包含敏感数据
    
	/*Buffer.from(str) 将一个字符串转换为bufferBuffer.alloc(size) 创建一个指定大小的BufferBuffer.alloUnsafe(size) 创建一个指定大小的Buffer,但是可能包含敏感数据buf.toString() 将缓冲区中的数据转换为字符串*/var buf4 = Buffer.from("我是一段文本数据");//console.log(buf4.toString());  // 我是一段文本数据

文件系统(File System)

• 在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端
• Node通过fs模块来和文件系统进行交互;文件系统简单来说就是通过Node的fs模块来操作系统中的文件
• 该模块提供了一些标准文件访问API来打开、读取、写入文件,以及与其交互。
• 要使用fs模块,首先需要对其进行加载;fs是核心模块,直接引入不需要下载
– const fs = require("fs");

fs模块API: http://nodejs.cn/api/fs.html

同步和异步调用

• fs模块中所有的操作都有两种形式可供选择同步和异步。 
• 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
• 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。

1.写入文件

• fs中提供了四种不同的方式将数据写入文件– 简单文件写入– 同步文件写入– 异步文件写入– 流式文件写入
  • 1.1 同步文件的写入

      - 手动操作的步骤1.打开文件fs.openSync(path, flags[, mode])- path 要打开文件的路径- flags 打开文件要做的操作的类型r 只读的w 可写的- mode 设置文件的操作权限,一般不传返回值:- 该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作2.向文件中写入内容fs.writeSync(fd, string[, position[, encoding]])- fd 文件的描述符,需要传递要写入的文件的描述符- string 要写入的内容- position 写入的起始位置- encoding 写入的编码,默认utf-83.保存并关闭文件fs.closeSync(fd)- fd 要关闭的文件的描述符
    
   var fs = require("fs");//打开文件var fd = fs.openSync("hello.txt" , "w");//向文件中写入内容fs.writeSync(fd , "今天天气真不错~~~", 2);//关闭文件fs.closeSync(fd);console.log("程序向下执行~~~");
  • 1.2 异步文件的写入

     	 异步文件写入fs.open(path, flags[, mode], callback)- 用来打开一个文件- 异步调用的方法,结果都是通过回调函数的参数返回的- 回调函数两个参数:err 错误对象,如果没有错误则为nullfd  文件的描述符fs.write(fd, string[, position[, encoding]], callback)- 用来异步写入一个文件fs.close(fd, callback)- 用来关闭文件
    
	//引入fs模块var fs = require("fs");//打开文件fs.open("hello2.txt","w",function (err , fd) {//判断是否出错if(!err){//如果没有出错,则对文件进行写入操作fs.write(fd,"这是异步写入的内容",function (err) {if(!err){console.log("写入成功~~");}//关闭文件fs.close(fd , function (err) {if(!err){console.log("文件已关闭~~~");}});});}else{console.log(err);}});console.log("程序向下执行~~~");
  • 1.3 简单文件的写入

       fs.writeFileSync(file, data[, options])    // 同步fs.writeFile(file, data[, options], callback)    // 里面是对上面两种方法的封装- file 要操作的文件的路径- data 要写入的数据- options 选项,可以对写入进行一些设置- callback 当写入完成以后执行的函数- flag    有多种状态,wx/r+等r 只读w 可写a 追加
    
	//引入fs模块var fs = require("fs");/*fs.writeFile("hello3.txt","这是通过writeFile写入的内容",{flag:"r+"} , function (err) {if(!err){console.log("写入成功~~~");}else{console.log(err);}});*///C:\Users\lilichao\Desktop\hello.txt//C:\\Users\\lilichao\\Desktop\\hello.txt    //字符串中把\以为为转义;解决方法:改成 \\  ; 或者 /fs.writeFile("C:/Users/lilichao/Desktop/hello.txt","这是通过writeFile写入的内容",{flag:"w"} , function (err) {if(!err){console.log("写入成功~~~");}else{console.log(err);}});
  同步、异步、简单文件的写入都不适合大文件的写入,性能较差,容易导致内存溢出
  • 1.4 流式文件的写入

      • 往一个文件中写入大量数据时,最好的方法之一是使用流。相当于与文件连接一个水管(可写流),然后将数据通过水管流传进文件• 若要将数据异步传送到文件,首需要使用以下语法创建一个Writable对象:– fs.createWriteStream(path[, options])  创建一个可写流  • path 文件路径• options {encoding:"",mode:"",flag:""}• 一旦你打开了Writable文件流,就可以使用write()方法来写入它,写入完成后,在调用end()方法来关闭流。可以通过监听流的open和close事件来监听流的打开和关闭on(事件字符串,回调函数)- 可以为对象绑定一个事件once(事件字符串,回调函数)  性能较好- 可以为对象绑定一个一次性的事件,该事件将会在触发一次以后自动失效
    
	var fs = require("fs");//流式文件写入   水管(可写流)与文件建立连接var ws = fs.createWriteStream("hello3.txt");ws.once("open",function () {console.log("流打开了~~~");});ws.once("close",function () {console.log("流关闭了~~~");});//通过ws向文件中输出内容ws.write("通过可写流写入文件的内容");ws.write("今天天气真不错");ws.write("锄禾日当午");ws.write("红掌拨清清");ws.write("清清真漂亮");//关闭流  不能使用ws.close()  close相当于拔掉文件端的水管连接头,不能保存数据完全流入文件ws.end();   

2.读取文件

• fs中提供了四种读取文件的方式
– 简单文件读取
– 同步文件读取
– 异步文件读取
– 流式文件读取

• 1.1 简单文件的读取

	• fs.readSync(fd, buffer, offset, length, position) – 参数:• fd 文件描述符• buffer 读取文件的缓冲区• offset buffer的开始写入的位置• length 要读取的字节数• position 开始读取文件的位置

• 1.2 简单文件的读取

• fs.read(fd, buffer, offset, length, position, callback) – 参数:• fd 文件描述符• buffer 读取文件的缓冲区• offset buffer的开始写入的位置• length 要读取的字节数• position 开始读取文件的位置• callback 回调函数 参数err , bytesRead , buffer

• 1.3 简单文件的读取

 fs.readFile(path[, options], callback)fs.readFileSync(path[, options])- path 要读取的文件的路径- options 读取的选项- callback回调函数,通过回调函数将读取到内容返回(err , data)err 错误对象data 读取到的数据,会返回一个Buffer
	var fs = require("fs");var path = "C:/Users/lilichao/Desktop/笔记.mp3";fs.readFile("an.jpg" , function (err , data) {if(!err){//console.log(data);  //将data写入到文件中   拷贝数据fs.writeFile("C:/Users/lilichao/Desktop/hello.jpg",data,function(err){if(!err){console.log("文件写入成功");}} );}});
如果读取的文件data大于内存,一次性读取容易造成内存溢出

• 1.4 流式文件的读取

流式文件读取也适用于一些比较大的文件,可以分多次将文件读取到内存中
• 从一个文件中读取大量的数据时,最好的方法之一就是流式读取,这样将把一个文件作为Readable流的形式打开。
• 要从异步从文件传输数据,首先需要通过以下语法创建一个Readable流对象:– fs.createReadStream(path[, options])
• path 文件路径
• options {encoding:"",mode:"",flag:""}
• 当你打开Readable文件流以后,可以通过readable事件和read()请求,或通过data事件处理程序轻松地从它读出。
	var fs = require("fs");//创建一个可读流var rs = fs.createReadStream("C:/Users/lilichao/Desktop/笔记.mp3");//创建一个可写流var ws = fs.createWriteStream("a.mp3");//监听流的开启和关闭rs.once("open",function () {console.log("可读流打开了~~");});rs.once("close",function () {console.log("可读流关闭了~~");//数据读取完毕,关闭可写流   可读流是自动关闭的ws.end();});ws.once("open",function () {console.log("可写流打开了~~");});ws.once("close",function () {console.log("可写流关闭了~~");   // });//如果要读取一个可读流中的数据,必须要为可读流绑定一个data事件,data事件绑定完毕,它会自动开始读取数据rs.on("data", function (data) {//console.log(data);     // 大文件的话,多次读取会打印多个buffer//console.log(data.length);     // 一次最多读取65535//将读取到的数据写入到可写流中   拷贝数据ws.write(data);});
 简单的实现方式
	var fs = require("fs");//创建一个可读流var rs = fs.createReadStream("C:/Users/lilichao/Desktop/笔记.mp3");//创建一个可写流var ws = fs.createWriteStream("b.mp3");// 监听流的开启和关闭  可省略//pipe()可以将可读流中的内容,直接输出到可写流中rs.pipe(ws);
请求和响应其实就是数据流,相当于浏览器和服务器之间连接可读流和可写流;

3.其他方法
fs模块API: http://nodejs.cn/api/fs.html

• 验证路径是否存在
– fs.exists(path,callback)
– fs.existsSync(path) • 获取文件信息
– fs.stat(path, callback) – fs.statSync(path) • 删除文件
– fs.unlink(path, callback) – fs.unlinkSync(path)
• 列出文件
– fs.readdir(path[, options], callback) – fs.readdirSync(path[, options])
• 截断文件
– fs.truncate(path, len, callback) – fs.truncateSync(path, len) • 建立目录
– fs.mkdir(path[, mode], callback) – fs.mkdirSync(path[, mode])
• 删除目录
– fs.rmdir(path, callback) – fs.rmdirSync(path)
• 重命名文件和目录
– fs.rename(oldPath, newPath, callback) – fs.renameSync(oldPath, newPath) • 监视文件更改写入
– fs.watchFile(filename[, options], listener)
http://www.jmfq.cn/news/5056021.html

相关文章:

  • 昆明做网站哪家便宜/百度seo快速排名优化
  • 杭州企业营销网站建设公司/网络seo是什么工作
  • 学校网站建设的作用/百度公司的企业文化
  • 三明鑫龙建设工程网站/泰州seo外包公司
  • 西安做企业网站排名/app推广代理平台
  • 宁夏快速自助制作网站/免费制作自己的网页
  • 西宁网站推广/福州短视频seo方法
  • 嘉兴自助建站模板/深圳seo网络优化公司
  • 公司网站首页怎么制作/网站快速优化排名官网
  • 网站开发core文件作用/新闻软文范例大全
  • 杭州 高端网站建设 推荐/网络推广网络营销和网站推广的区别
  • 企业微信下载官方网站/百度招聘
  • 怎样用b2b网站开发客户/上海网站建设关键词排名
  • 毕设做网站太简单/网站建设的流程及步骤
  • 3d建模一般学费多少/yoast seo教程
  • 软件开发网站建设维护/网络公司取什么名字好
  • 以前自己做的网站怎么样删除/营口seo
  • 设计成功一个电子商务网站/企业员工培训内容及计划
  • 小程序在哪个网站做/千锋教育课程
  • 网站做微信小程序号码/互联网营销是什么
  • 东莞公司网站价格/seo顾问服
  • 网络营销的培训课程视频/seo推广外包报价表
  • 优而思 网站/ip营销的概念
  • 自己的网站怎么做商城/开发一个网站的步骤流程
  • 高大上的企业网站/怎么样建网站
  • 网站功能模块表格/新人跑业务怎么找客户
  • 政府网站建设 文件/营销策略有哪些有效手段
  • 关于网站的建设论文/国外常用的seo站长工具
  • 郑州做网站优化电话/今晚日本比分预测
  • 网站建设套餐/互联网营销做什么