知识类化
----- 让知识成为我身体的一部分!
Linux 常用命令
ubuntu 远程登录不支持 root 远程
ifconfig 查看当前网络信息
sudo 普通用户执行一些或者全部的root命令的,就跟手拿圣旨一样!
pwd 该命令显示整个路径名,显示当前的所处位置
who 当前用户
Vim 的一些操作
- vim 有两种模式: 命令模式和插入模式(默认一进去就是命令模式下)
- 使用 vim 文件名
- :set nu 显示行号(带冒号,就是在命令模式下)
- 进入插入模式:
- i (当前光标位置的前面插入) 、I (行首)
- a (当前光标的后面插入)、A (行尾)
- o (下一行插入)、O (上一行)
yy 复制当前行
p 黏贴,当前光标行的下一行
dd 删除当前行 10 dd 删除10行,删除当前光标行的下1行
d 删除一个字母
:8 移动到第8行
gg 第一行
GG 最后一行
:w 写入 :q 退出 :wq 保存退出
:q! 强制退出,这样在Linux里有个机制,这种强行退出,会生成一个临时文件在当前目录,可以查看之前的信息
sudo su 切换root 用户, exit切换回之前的用户
文件处理命令
1、ls 命令
-a 显示所有文件,包括隐藏文件
-l 显示详细信息,也叫长格式
-d 查看目录属性
2、10位文件描述符
0123456789
第0位:
d 表示目录
l 软链接文件 link
2 表示二进制文件
第1-3位:文件所有者u拥有权限
第4-5位:所属组g用户有的权限
第7-9位:其他用户o拥有的权限
r 读权限 w 写权限 x 执行权限
3、cd 命令
切换根目录:cd /
切换到上一级目录: cd ..
4、touch命令
创建空文件
5、cp 命令
复制文件:cp 原文件名 目标地址
复制目录:cp -R 原目录 目标地址
6、mv命令
移动文件和更改文件名: mv 原文件名 目标地址(新文件名)
7、rm命令
强制删除文件: rm -f 文件名
强制删除目录: rm -rf 目录名(这里目录下的文件也都会删除)
8、cat 命令
显示文件内容 : cat 文件名
9、more 命令
分页显示文件内容: more 文件名
下一页: 空格 或 f
下一行: 回车键
退出查看: q 或者 Q
10、head命令
显示文件的前20行(默认10行): head -20 文件名
11、tail 命令
显示文件的结尾5行(默认10行): tail -5 文件名
-f 动态显示,用在一边写一边看情况
12、ln 命令
创建软连接: ln -s 源文件 链接文件名,相当于win下的快捷方式,源文件没了就不能通过软链接访问了
创建硬链接: ln 源文件 链接名,相当于拷贝了一份新的文件,但是他俩是同步更新的,删除后任然可以访问
13、mkdir 命令
创建目录: mkdir 目录名
递归创建目录 mkdir -p /www/html/a1/a2/a3
递归创建多个目录 mkdir -p /www/html/a1 a2 a3
Node.js 了解
- Node.js 就是运行在服务器端的Javascript。
- Node.js 是一个基于Chrome Javascript 运行时建立的一个平台。
- Node.js 是一个事件驱动I/O服务器端Javascript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
- Node.js 搭建自己的服务,让你更快的明白程序底层的原理!
扩展
Javascript 语言最大的特点就是单线程的,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。
详细,请看
首先来搭建下我们的开发环境
详细步骤 详细,请看
安装成功后,在命令行窗口输入:node -v 查看你当前node.js 的版本 (项目开发推荐使用 LTS版的)
环境搭建好了,那我们来个小实例吧!
Node.js Web 模块
使用 Node 创建Web服务器
Node.js 提供了http模块,http模块主要用于搭建HTTP服务器端和客户端,使用HTTP服务器或客户端功能必须调用http模块,代码如下:
var http = require('http');
以下是官方文挡给的一个实例: 最基本的HTTP服务器架构(使用端口1337),创建一个server.js文件,代码如下:
const http = require('http');
const fs = require('fs');
const url = require('url');
// 创建一个服务器
http.createServer( function (request,response)) {
// 解析请求,包括文件名
var pathname = url.parse(request.url).pathname;
// 输出请求的文件名
console.log(" Request for "+ pathname + "received.");
// 从文件系统中读取请求的文件内容
fs.readFile(pathname.substr(1),function (err,data)) {
if (err) {
console.log(err);
// HTTP 状态码: 404 : Not Found
// Content Type : text/plain
response.writeHead(200,{'Content-Type': 'text/html'});
// 响应文件内容
response.write(data.toString());
}
// 发送响应数据
response.end();
});
}).listen(8081);
// 控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8081/');
这个小例子是根据,官方文档修改的!
const http = require('http');
const net = require('net');
const url = require('url');
// 创建一个HTTP代理服务器
var proxy = http.createServer( (req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('okay');
});
proxy.on('connect', (req, cltSocket, head) => {
// connect to an origin server
var srvUrl = url.parse(`http://${req.url}`);
var srvSocket = net.connect(srvUrl.port, srvUrl.hostname, () => {
cltSocket.write('HTTP/1.1 200 Connection Established\r\n' +
'Proxy-agent: Node.js-Proxy\r\n' +
'\r\n');
srvSocket.write(head);
srvSocket.pipe(cltSocket);
cltSocket.pipe(srvSocket);
});
});
// now that proxy is running
proxy.listen(1337, '127.0.0.1', () => {
// make a request to a tunneling proxy
var options = {
port: 1337,
hostname: '127.0.0.1',
method: 'CONNECT',
path: 'www.google.com:80'
};
var req = http.request(options);
req.end();
req.on('connect', (res, socket, head) => {
console.log('got connected!');
// make a request over an HTTP tunnel
socket.write('GET / HTTP/1.1\r\n' +
'Host: www.google.com:80\r\n' +
'Connection: close\r\n' +
'\r\n');
socket.on('data', (chunk) => {
console.log(chunk.toString());
});
socket.on('end', () => {
proxy.close();
});
});
});