运算符和分支语句:
+,-,*,/,%,
++,--,*=,/=
== != <= >=
===, !==(不完全相等:全部相等才为false)
if(){}else{}
if(){}else if(){}.........
switch(){
case 1:
.... break;
default:
..... break;
}
运算符和分支语句:
+,-,*,/,%,
++,--,*=,/=
== != <= >=
===, !==(不完全相等:全部相等才为false)
if(){}else{}
if(){}else if(){}.........
switch(){
case 1:
.... break;
default:
..... break;
}
函数:
创建方法:function 函数名(参数名){}
通过 return 来返回值
对象(链表):
几乎所有东西都是对象
{}相当于制造对象
var map={} == var map=new Object();
给对象赋予元素
通过 map[A]=???
元素显示为 map.A
数组和键值对:
数组 添加元素 1.数组名.push 2.数组名[下标数字]=??? 3.在数组最前面 数组名.unshift 4.数组名.splice (插入的下标,删除的数目,添加的数据???)
键值对:数据变为一个对象 类
赋值为{};
map={};
map["aa"]="aa"
map.aa
相等运算符:
同一行声明 只要添加逗号;
null的值和undefined的值是相等的
单等号 为 赋值对象
双等号 为判断条件
三等号 类型 值 相同 才能为true
JS基础知识:
基础数据类型:TestGrammer.js文件
字符串(双引号or单引号) 布尔型 数值 数组 链表
创建变量 var 变量名=???
console.log() 打印功能
数值 + 字符串 = 字符串
子父进程通信:
使用子进程对象 绑定事件message
收消息回调
绑定事件 send 发消息
第四种方法:
Fork 可执行js
端口被占用的时候 第二个参数写上execArgv:设置调试端口
第三个方法:
execFile 可执行文件
exec spawn 命令行
execFile是 exec和spawn的结合
打印错误方法:
stderr
A.exec和A.spawn 类似
exec 带有回调函数:
error,stdout stderr
子进程创建:充分利用多核CPU
使用子进程模块 require("child_process")
A.spawn 生成
分配任务添加命令, 执行文件
绑定控制台消息 stdout 输出 绑定事件
服务模型演变过程:
同步模型: 按顺序处理
复制进程模型:使用进程来解决并发
多线程模型:堆栈解决 使用CPU资源
事件驱动模型:Node 单线程
UDP发送消息小例子:
使用udp的listening事件进行监听
//客户端:
同样使用dgram
同样使用createSocket 使用send属性
msg作为形参,0,msg.length,1100,"127.0.0.1"
回调作为发送消息收到的回调function(err,data){
client.close();
}
创建UDP服务端:
用户数据包协议
TCP 面对链接
UDP 广播 资源消耗低
使用 dgram
dgram.createSocket('udp4');
创建TCP服务端:
请求net
创建net.createServer添加回调
连接事件的回调
socket作为参数
socket.on作为事件
data接收数据
三次握手:
SYN ACK SYN ACK
FIN 关闭连接 触发 end事件
网络编程基础概念:
Node无需额外的容器
提供了net dgron http https
TCP 传输 控制 协议
OSI模型 基层协议
应用层 表示层 会话层 传输层 网络层 链路层 物理层
三次握手 客户发请求到服务端
客户端收到
服务端知道客户端收到
字符串拼接的正确方式:
国内外文字差异性导致字符串乱码
第一种方式:
re.setEncoding("utf8");
第二种方式:
创建数组 创建保存数组的大小 把字符串 push进去数组 size+=字节的长度
结束的时候 创建一个Buffer.concat(数组,大小)进行项的合并
中文字符串拼接:要用utf-8
使用fs模块:
fs.createReadStream
绑定data事件 读取 内容
绑定end事件 读取完成 显示内容
绑定事件 都叫on属性
每个中文字3个字节
Buffer分配大对象:
pool的used就类似于一个指针
8K满了 就去申请一个新的slab
大的对象 直接分配大内存
Buffer分配小对象:
Node 用的是 slab内存分配
分成三种状态:
full parcical empty
8K对象为界限
小于8K 小对象 大于8K 大对象
使用pool
new Buffer对象大小为1024的时候 used就等于1024