TCP和UDP的区别:
1.基于连接与无连接;(TCP是面向连接协议,UDP是无连接协议)
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
线程和进程
一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
一个线程包含以下内容:
一个指向当前被执行指令的指令指针;
一个栈;
一个寄存器值的集合,定义了一部分描述正在执行线程的处理器状态的值;
一个私有的数据区。
手写HTTP
在全局下面创建一个index.js,写入:
let http = require('http');//nodejs的核心文件http
let PORT = 7000;//监听端口号
let APP = require('./app/index')//进行一个中间层的抽离
let server = new APP();
http.createServer(server.initSever()).listen(PORT,()=>{
console.log('sever run~~~')
})//创建一个服务器,端口号为7000
进入全局建立APP文件夹,并在下面创建一个index.js。进入全局,创建public文件夹,并在下面写一个index.html,我们要做的就是启动服务器让index.html能够跑起来
class APP{
initSever(){
return (request,response)=>{
let {url} = request;//ES6的字符串结构
let urlHeader = './public'
let getPath = (url)=>{
return path.resolve( process.cwd(),urlHeader+url)
} //使用path.resolve使它的路径转成绝对路径。
if(url=='/') url = '/index.html';//因为开启服务器,它默认的url为'/'
//我们想让它的url锁定public下面的index.html,所以我们需要对url进行一些处理。
url = getPath(url)//这时候打开端口首页就是public/.index.html
//接下里我们就可以读取文件了
fs.readFile(url,'utf8',(error,data)=>{
response.end(data);
})
}
}
}
module.exports = APP
写好之后我们可以开启服务器了:我先在html写<h2>hello world</h2>,
在终端里面写npm run start
现在我可以在浏览器开启:http://localhost:7000
排序算法区别
适配移动端,vue和react
XSS
将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.
只允许用户输入我们期望的数据。 例如: 年龄的textbox中,只允许用户输入数字。 而数字之外的字符都过滤掉。
对数据进行Html Encode 处理
过滤或移除特殊的Html标签, 例如: <script>, <iframe> , < for <, > for >, " for
过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。
网友评论