git 命令

#Node
# node
一、安装 nodejs
下载地址:http://nodejs.cn/download/
二、安装 git
下载地址:https://git-scm.com/download/win


git clone -》克隆 下拉代码 git clone + 仓库地址 (master: 主分支 切换到开发分支)

git status -> 查看本地文件修改记录 修改了哪些文件

git diff -> 查看具修改了的内容 查看具体修改了哪些内容

git add . -> 新建本地仓库 由本地仓库发布到远程仓库

git commit -m "新增。。" -》 提交代码 增加修改记录

git push -》推送到远程仓库

git pull -》 更新远程仓库的代码

git branch -》查看分支
-> 分支
主分支: master (一个已经上线了的项目)
开发分支: dev_201807.....
上线前的分支:dev_release_20181821...

-》查看当前分支
git branch

git checkout dev_...... 本地开发分支
git checkout origin/dev.... 远程分支


配置 ssh :
查看 git 用户信息:
git config user.name // 查看用户名
git config user.email // 查看用户邮箱

git config --global user.name "zhangsan" // 设置用户名
git config --global user.email "a...com" // 设置邮箱

生成 sshkey
ssh-keygen -t rsa -C "wangshanshan@mgzf.com"

 

bower -> 包管理
安装: npm insall bower -g
安装淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
-> static: jquery,bootstrap,swiper,vue, react.....(js 库)
npm -> 包管理
npm install -g bower

初始化:
npm init -》package.json 文件
cnpm install jquery bootstrap swiper --save 下载开发所需要的依赖 --save(记录开发以来的版本号)
创建 package.json 文件

-> REPL
打开交互式解释器: node
交互式解释器
读取 打印 循环

-> 使用变量 将数据存储在变量中
-> console.log() 调试

-> 多行表达式
do while for while

-> 下划线
_ 获取上一个表达式的结果

REPL 命令
ctrl + c
-> 两次 -》


http 模块 (服务):
服务器 apache tomcat nginx

使用:
1. 引入 http 模块 =》 require('http')
2. 通过 http 模块创建 http 服务 =》http.createServer
http.listen() =》监听端口
response: 响应
request: 请求
response.writeHead('状态', content-type)

3. 发送请求与响应请求

Content-Type: text/html 以 html 形式返回
text/plain 以原样形式返回
text/json 以 json 形式返回
text/xml 以 xml 形式返回

events 模块
nodejs 异步操作 -》事件队列 a b c。。。

js 单线程

event 模块提供了一个对象:event.EventEmitter
events.eventEmitter
on 监听 支持多个监听
emit 触发

EventEmitter.addListener 为指定事件添加一个监听器到监听器数组的尾部

Buffer -> 缓冲区
buffer 类 -》 存放二进制数据

stream 模块 fs 模块
-》 可读性
-》 可写性
-》 可读可写
-》 先写再读
特点:
-》阻塞型
-》非阻塞型
1. 使用:
require('fs')
// 读取
fs.createReadStream 创建一个读取文件流 fs.createReadStream 创建一个读取文件流
fs.readerStream.setEncoding('UTF8') 设置编码格式
fs.readerStream.on -> data // 正在读取
-> end // 读取完成
// 写入
fs.createWriteStream 写入文件流
fs.wirteStream.write(data, 'UTF8') // 正在写入
fs.wirteStream.end() // 写入完成
fs.writeFile(文件名称, 写入内容, 回调函数) // 写入文件内容
fs.mkdir(文件夹名称, 回调) // 创建文件夹
fs.exists(文件夹名称, 回调) // 判断是否有文件夹
fs.appendFile('文件', 文件内容, 回调)

管道流: 从一个文件读取,将一个文件的内容写入到另外一个文件


path: 路径模块
path.normalize() // 标准化路径
path.join() // 路径整合
path.dirname() // 获取路径
path.basename() // 获取文件名
常量:
1. __dirname // 获取当前文件所在目录
2. __filename // 获取当前文件的目录和文件名

process 模块:
process.version // node 版本号
process.pid // 进程号
process.title // 进程的标题

queryString 模块: 对 http 请求数据进行处理
queryString.parse // 将字符串参数转化为对象
queryString.stringfy // 将对象抓暖胃字符串
queryString.escape
queryString.unescape

url 模块:
url.parse =>
url.port // 获取端口号
url.protocol // 获取协议
url.hostname // 主机名称
url.hash // hash 参数
url.search // 获取 serach 参数
url.query
url.pathname
express 模版:
nodejs web 应用框架 route http 请求等等
1. 可以用中间件来处理 http 请求
2. 可以使用 router
3. 可以利用模版来传参到页面

使用:
1.npm install express 引入 express
// 创建服务
express().get('/index.html')
http.createServer
// ajax 前后端通信 get post put delete
// 处理静态资源
app.use(express.static( 静态文件的位置))
app.get() get 请求 请求与响应

路由:可以提取到请求的 url 获取 get 参数 post 参数
app.get() // 查询数据
app.post() // 提交数据
app.put() // 修改数据
app.delete() // 删除数据

 

body-parser 中间件 接收到客户端请求时,都会给 req 添加属性
使用: npm install body-parser --save
-》解析数据 json string
bodyParser.json()
bodyParser.urlencoded({extended: true/false}) false: 处理字符串 或者 数组 true: 处理所有类型的数据
cookie-parser 本地会话存储 -》 设置过期时间 由服务端发送给客户端
http -> 无状态协议 客户端与服务端在数据传输完成之后就会中断连接
需要客户端主动发送请求
cookie -> 保持会话连接的机制

cookie-parser : 设置、获取、删除 cookie

res.cookies() // 设置 cookie
req.cookie() // 获取 cookie

 

模版引擎 -》 jade -> 静态页面 -> 定义和使用变量 -> 最终会渲染成 html
-> 服务端 ->res 模板引擎 -> 加载数据

// 使用模板引擎
npm install jade
express().set('view engine', 'jade')
set('views', 'www') // 路径
jade -> html + 数据

res.render() 渲染响应的数据 将 jade 页面和数据整合

#{} // 加载变量
定义变量

mysql 是当今最流行的关系型数据库 -》 数据库:按数据结构来组织、存储和管理数据的仓库
特点一:以表格的形式出现
购买时间 商品名称 价格 商品 id 。。。 存储在表格里面
特点二:数据库是由若干张表组成的 表格之间建立联系 -> 关系型数据库
php java

安装数据库:https://dev.mysql.com/downloads/mysql/
windows
同意协议
安装类型: server only
执行 mysql 的下载

navcat -> 数据库的可视化工具
wampServer -> apache 服务 资源: www 目录下 -》 服务 集成了 mysql 服务

创建数据库和表 表是存储在数据库内的。
表里面存储的是字段,那么字段分为以下几种类型:
数字类型
int -> (大整数值)
-> TINYINT (0, 255) 存储小整数值
-> SMALLINT (0, 65535) 存储大的整数值
字符串类型
char 大小 0-255 字节 用途类型:定长字符串
varchar 大小 0-60000+ 字节 用途类型:变长字符串
日期时间类型
date -> 大小 3 日期值:YYYY-MM-DD
time -> HH:MM:SS 时间
datetime -> 日期和时间 YYYY-MM-DD HH:MM:SS
timeStamp -> 时间戳 YYYY-MM-DD HH:MM:SS

use mysql -> 使用数据库
create DATABASE + 名称 -> 创建数据库
create DATABASE IF NOT EXISTS + 名称
show DATABASES -> 查看数据库
drop database + 名称 -> 删除数据库
use + 数据库名称 -> 使用数据库

show tables; -> 查看表格
create table if not exists user (
'id' INT NOT NULL AUTO_INCREMENT,
'username' varchar(20) NOT NULL,
'age' INT NOT NULL,
PRIMARY KEY (id)
)
主键:id
id username age id 是不能重复的,并且不能为 null

插入数据:
insert into 表格名称 (id,name) values ('1','王五')
查看数据:
select * from + 表名
select + 字段名 + from + 表名

条件查询:
SELECT id,username from userdata WHERE username = '王五';
更新数据:
update + 表名 + set username = '范冰冰' where id = 3;
删除数据:
delete from + 表名 + where 。。。
模糊查询:
select * from + 表名 where ... like '% 手机'

union 操作符 用于连接两个以上的 select 语句的结果

order by 排序 DESC 倒叙 ESC 正序
group by 分组 根据一个或者多个列对结果进行分组

mysql 的连接使用:
在一张表里面进行操作,关系型数据库,表与表之间是关联的
mysql 多张表之间的连接:
inner join : 内连接 a 表 b 表 获取两张表中字段相匹配的记录
left join : 左连接
right join : 右连接
mysql 事务:
处理操作量大 复杂度高的数据
可以维护数据库的完整性,保证 sql 语句 全部执行或者全部不执行
事务管理:insert,update,delete 等语句 可能不止一条 sql 语句 如果其中的一条
sql 语句没有执行成功,那么其他的 sql 语句也不会执行成功。
特性:
原子性:一个事务中的操作,要么全成功,要么全部不成功。
一致性:保证数据库的完整性
持久性:事务处理成功后,对数据的修改是永久的
语句:
BEGIN -> 开启一个事务
COMMIT -> 提交一个事务
ROOLLBACK -> 回滚,撤销正在进行的未提交的修改

删除一个用户 -》 用户信息存储在几张表内 其中一张表的数据删除失败,就执行回滚操作,只能当所有的表的数据都删除,才执行最后的删除。

alert 命令 修改数据库表名或者字段
alert table + 表名 + drop/add + 字段名
ALTER TABLE ibf_student RENAME TO bfw_student; -> 修改表的名称

mysql 的索引:
索引可以提高 mysql 的检索速度
索引是应用在 sql 与剧中的 where 语句中的。
select ... from ibf_student where id = 10
ibf_student 数据量很大,查询速度会非常慢
索引可以提升查询速度,但是降低更新表的速度
优化查询速率
mysql 创建临时表
保存临时数据,只在当前连接可见,当连接断开,mysql 会自动清除这些表
create temporary table + 表名

# node 案例 websocket

websocket 模块
http 服务 -》 前端发起请求,后端响应 http 请求 -》 无状态的
websocket 服务 长连接 后端可以主动发送响应给前端

使用: npm install nodejs-websocket
1. 引入 websocket
require('nodejs-websocket')
webSocket.createServer()
ws.on('text') // 监听客户端的发送的数据
ws.send() // 客户端发送数据到服务端
ws.sendText() // 服务端发送数据到客户端
ws.onmessage() // 接受到服务端传来的数据


任务:
使用 sql 语句:
1. 新建一张员工表:employee
字段:
nu -> 编号 -》 主键 非空 自增
name -> 姓名 -》 非空
gender -> 性别 -》 非空
dept_no -> 部门编号 -》 非空
job -> 职位 -》 非空
salary -> 薪水 -》 非空
hireDate -> 入职日期 -》 非空
2. 部门结构表: dept
nu -> 部门编号 -》 主键 非空
name -> 部门名称 -》 非空
location -> 部门地址 -》 非空


nodejs 连接 mysql:
mysql 模块:
1. cnpm install mysql --save
2. 引入 mysql 模块 -》 require('mysql')
mysql.createConnection() // 建立连接
-> host: 'localhost'
-> user: ''
-> password: ''
-> database

任务一:
mysql 练习
表一:学生表 表名 student 字段:学生编号 -》sid 学生姓名 -》sname
学生年龄 -》sage 学生性别 -》ssex
表二:课程表 表名 course 字段:课程编号 -》cid 课程名称 -》 cname
教师编号 tid
表三:教师表 表名 teacher 字段:教师编号 tid 教师姓名:tname
表四:成绩表 表名 sc 字段:学生编号 -》sid 课程编号 -》cid 成绩 -》score

# 查询 编号为 1 的课程比编号为 2 的课程成绩高的学生的编号
# (SELECT sid,score FROM sc WHERE cid = '1')
查询 课程编号为 1 的学生 id、分数
# (SELECT sid,score FROM sc WHERE cid = '2')
查询 课程编号为 2 的学生 id、分数
SELECT * FROM (SELECT sid,score FROM sc WHERE cid = '1') a INNER JOIN
(SELECT sid,score FROM sc WHERE cid = '2') b on a.sid = b.sid WHERE a.score > b.score;

# 查询平均成绩大于 60 分的同学的学号和平均成绩
SELECT sid,AVG(score) FROM sc GROUP BY sid HAVING AVG(score) > 60;
聚合函数 -》HAVING
WHERE HAVING

任务二:
nodejs 操作 mysql

查询数据:
server.query(查询语句,结果集)
插入数据:
server.query(插入语句,需要插入的数据,结果集)


任务: 安装 mongodb
1. 下载安装 mongodb
https://www.mongodb.com/download-center#community
2. 配置环境变量
在我的电脑 -》 属性 -》高级系统设置 -》环境变量
C:\Program Files\MongoDB\Server\3.2\bin
3. 配置数据目录
01. 创建数据存放目录:mkdir data
02. 自定义数据存放目录:mongod --dbpath "d:\data"
4. 启动 mongodb
mongo --port 27017
5. 在 windows 里面添加 mongodb 服务
01. 设置数据库的存放路径:--dbpath "d:\data\db"
02. 设置日志存放路径:--logpath "d:\data\log"
03. 设置日志的记录方式:--logappend
04. 设置数据库的端口号: --port 27017
05. 设置服务的名称:--serverName "..."
06. 添加到 windows 服务;--install
All: mongod --dbpath "d:\data\db" --logpath "d:\data\log\log.txt" --logappend --serviceName "MongoDB" --install
6. 启动 mongodb 服务
以管理员身份运行 cmd
net start mongoDB
7. 开启 mongdb
mongo --port 端口号
mongodb 命令:
查看数据库:show dbs
创建数据库:use + 数据库名称 (数据库存在则使用这个数据库,否则创建这个数据库)
插入数据:db.ibf_data.insert({})
删除数据库:db.dropDatabase()
查询数据:db + 数据库名称 + find()
条件查询:db + 数据库名称 + findOne()
更新语句:db + 数据库名称 + update() 参数:查询条件 更新内容 如果查询条件不存在,默认插入数据 true:查询匹配
全部数据
移除数据:db + 数据库名称 + reomve()
limit : db + 数据库名称 + find()+ limit()
skip: db + 数据库名称 + find()+ skip()
sort: db + 数据库名称 + find()+ sort() 1 / -1
设置索引:db + 数据库名称 + createIndex


任务:
nodejs 连接 mongodb
操作 mongodb
ajax

mongodb 中间件:
1. 安装 mongod / mongoose
npm install mongodb
npm install mongoose
2. 引入 mongodb / mongoose
3. 连接数据库:
mongodb.MongoClient()-> connect()
mongoose.connect()

创建表:
1. 创建模型骨架 -》 定义 key 值类型
mongoose.Schema() -》创建模型骨架
2. 创建数据模型
mongoose.model()
3. 添加数据
mongoose.model().create()
4. 更新数据
mongoose.model.update('查询条件','更新内容')
5. 删除数据
mongoose.model.remove('查询条件')


ajax: 异步请求
作用:前后端通信,将后端数据异步渲染到页面上

1. 创建 ajax 请求对象
2. 打开操作
3. 绑定 xmlhttprequest 对象监听
4. 发送请求


任务:
1. 完成 node 项目案例
2. 回顾 nodejs 课程