Linux学习笔记

2019/4/6 Linux

TIPS

Linux学习笔记

# Linux分类

  • Ubuntu 界面华丽, 有完善的管理系统和软件支持
  • centOs 很多公司在生产环境不是centOs, 来源于RHEL
  • Debian 内核非常小, 非常稳定, 适用于硬盘空间小内存小的机器
  • RedHat 基于Linux

Linux: FHS协议 (file system hierarchy standard) 文件层次化系统

根目录路径:

image-default
  • /usr (Unix software resource) 软件主要执行程序
  • /var (variable) 系统运行相关
  • /bin 可执行文件
  • /sbin 也是存放可执行文件, 只允许管理员
  • /boot
  • /dev
  • /etc 安装的配置文件
  • /home 用户目录 /root在根目录下
  • /opt 第三方软件目录

# 常用命令

  • cd 进入
  • cd .. 回到上一级目录
  • cd ~ 回到当前的主文件夹
  • ls ll 查看文件
  • ls -al 可以查看到隐藏文件
  • mkdir 创建一个路径
  • mkdir -p test1/test2 如果前面的路径没有则会自动创建
  • rmdir 删除空的路径
  • rm -rf 删除路径所有文件

# 文件权限

第一个字符

  • 普通文件的文件权限第一个字符为 "-"
  • 目录文件的文件权限第一个字符为 "d"
  • 字符设备文件的文件权限第一个字符为 "c", 块设备文件的文件权限第一个字符为 "b"
  • 符号链接文件的文件权限第一个字符为 "s"

后面分三组, 每组三个字符:

  • 第一组: 表示当前所属用户的权限

  • 第二组: 当前所属组的权限

  • 第三组: 其他用户的权限

  • r 有权限读

  • w有权限写

  • x有权限执行

rwx: 二进制表示 4 2 1, 可以用一个数代表一组的权限, 比如3代表 -wx

pwd 展示当前所处的路径

vi编辑中

  • h往左, j往下, k往上, l往右, 加数字表示往哪个方向移动多少
  • 翻页: ctrl + F B 翻半页 Ctrl + D U
  • + 光标移到下一个非空格行
  • 0 回到行首 $回到行尾 G最后一行 gg开头一行
  • / 向下查找最近的 ? 向上查找
  • tail 文件 查看文件最后十行
  • tail -f 文件 修改时会自动刷新
  • tail -20f 查看20行
  • cat 文件名 |grep "" 过滤带有关键字的行 也可以再加grep多层过滤
  • chmod rwx 加权限

# HTTP协议

  1. 五层网络协议

    • 应用层 (浏览器HTTP, FTP, DNS, SMPT, Telnet)
    • 传输层 (TCP/UDP)
    • 网络层 (IP, ICMP)
    • 数据链路层 (如何传输)
    • 物理层
  2. 七层网络协议

    • 应用层
    • 表示层 (加密格式转换)
    • 会话层 (解除或者建立和其他节点的建立)
    • 传输层
    • 网络层
    • 数据链路层
    • 物理层
  3. 返回码

    • 200 成功
    • 404 没找到
    • 302 重定向
    • 502 服务器错误
    • 304 多次请求出现

HTTP (hypertext transfer protoc)

  • reque: 请求头, 数据体 (文本格式, 二进制格式 (带有分隔符)
  • response: 返回头, 返回体
  • cache control可否缓存
  • public: 可以被任何中间服务器缓存, 包括服务器代理服务器
  • private: 只能被一个东西缓存, 服务器可以, 代理服务器不能
  • no-cache: 不要相信缓存, 使用缓存前要向服务器验证
  • only-if-cached: 只要有缓存就不请求服务器

到期时间:

  • max-age: 缓存的最大时间, 单位s
  • max-stale: 表示客户端可以接受过期资源, 但不能超过自己所设的过期时间
  • min-fresh: 表示客户端希望在指定时间内获得最新的响应

重新验证加载:

  • must- revalidate 在使用缓存之前验证资源状态, 如果资源过期则不能使用
  • proxy-revalidate: 和上面的相同, 适用于共享缓存
  • no-store不适用缓存
  • no-transform: 不许对缓存资源进行资源转换

# 后端的规范与思想

  1. 分层

    1. web层 (接受和发送http请求, 封装)

    2. 业务逻辑层 (服务层: XXXService)

    3. DAO层

      DateBase (DB) : 存数据 业务: 对对象进行操作 如果要存储: 对象转为数据 如果要读取: 数据转为对象

    4. 持久层: 存在磁盘上

      文件, 数据库

    每层的命名:

    • web层: LoginController (接受参数, 判断是否非法, 传给服务层)
    • 服务层: LoginService (获取这个用户的密码, 进行比较)
    • DAO: LoginDAO (从数据库获取数据, 并转换为对象)
    • Domain: User
  2. 模块化

    • Es6导入和导出
    • Require ("") 引入模块, 如果是自己的则需要写全路径
    • exports和module.exports开始都是指向同一个对象 (exports == module.exports 为true) , 如果修改属性则是都可以访问, 如果直接修改对象则导出的永远是 module.exports

Nodejs的模块是运行在一个函数中, 相当于有五个参数 exports, require, module, __filename, __dirname

# Socket

  1. 事件

    • connect
    • data: 发送的信息
    • end
    • timeout
    • error
    • close
  2. 属性

    • remoteAddress 远端的地址
    • remotePort 端口
    • localAddress
    • localPort
  3. 方法

    • setTimeout
    • write: 发送消息
    • setEncoding
    • end: 关闭

# Server

  1. 事件

    • server.on("",function(){})
    • listening: 服务启动触发
    • connection: 有新的连接触发, 有一个参数socket
    • close: 关闭
    • error: 出错
  2. 方法

    • listen: 启动监听
    • close: 关闭
    • address: 查看地址

# fs文件系统

fs.write(path, data, options, callback)
1

options: 可选参数, 该参数是一个对象, 用于指定在写入文件时需要使用的选项, 该对象包括的属性有flag属性, mode属性, encoding属性

  • flag属性表示对该文件执行何种操作
  • mode属性可以用于指定该文件被打开时的读写权限, 默认值为066 (可读可写 rwx) , 该属性值是用一个3位数字表示文件或目录所有者, 所属组以及其他人的读写权限, 1表示可执行权限, 2表示可写权限, 4表示可读权限
  • encoding属性可以用于指定以何种字符编码方式将内容写入到文件中, 默认的编码方式是"utf8", 也可以改成"base64", "ascii"或者其他的字符编码方式

flag参数:

参数 说明
r 以读取模式打开文件, 如果文件不存在抛出异常
r+ 以读写模式打开文件, 如果文件不存在抛出异常
rs 以同步的方式读取文件
rs+ 以同步的方式读取和写入文件
w 以写入模式打开文件, 如果不存在则创建
wx 类似 w, 但是如果路径存在, 则文件写入失败
w+ 以读写模式打开文件, 如果文件不存在则创建
wx+ 类似 wx+, 但是如果路径存在, 则文件读写失败
a 以追加模式打开文件, 如果文件不存在则创建
ax 类似 a, 但是如果路径存在, 则文件追加失败
a+ 以读取追加模式打开文件, 如果文件不存在则创建
ax+ 类似 a+, 但是如果路径存在, 则文件读取追加失败
参数 可读 可写 可创建 可追加
r
r+
rs
rs+
w
wx
w+
wx+
a
ax
a+
ax+

TIPS

r表示读, w表示写, a表示可追加写入

带s表示同步, 带x表示排他性, 意思是自己操作的时候别人不能操作, +表示如果是读则还可以写, 如果是写则还可以读

# 数据库数据类型

  1. 整数 int
  2. 长整数 bigint(21) 括号里面为长度, 一般用21
  3. 浮点数 float
  4. 双精度浮点数 double
  5. 字符串 varchar(16)
  6. 文本 text

# 创建表SQL语句

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'student id',
  `stu_num` int(11) NOT NULL COMMENT 'student num',
  `name` varchar(32) NOT NULL COMMENT 'student name',
  `age` int(11) NOT NULL COMMENT 'student age',
  `class` int(11) NOT NULL COMMENT 'student class',
  PRIMARY KEY (`id`),
  UNIQUE KEY `student_stu_num_uindex` (`stu_num`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1
2
3
4
5
6
7
8
9
  • ENGINE表示数据库引擎, 主要用两个: MYISAM和InnoDB
  • MYISAM: 适用于读很多, 写非常少, 写是表级锁
  • InnoDB: 适用于读较多, 写也较多, 行级锁

分别修改数据库, 表和字段的编码格式

alter database school character set utf8;
alter table student default character set utf8;
alter table student convert to character set utf8;
1
2
3
-- 计算查询到的个数
select count(1) from student;

-- 对所有的年龄求和
select sum(age) from student;

-- 对某个字段求平均数, as是给查询的字段去一个新的字段名
select avg(age) as avg_age from student;

-- 按照班级分组, 并求每个组的人数
select count(1) from student group by class;

-- limit后面有两个参数, 第一个表示偏移量 (偏移量为页数减一乘以每一页的个数)
-- 第二个表示每一页多少个, 用作分页显示, 即表示一页两个, 2, 2表示前面偏移两个, 即第二页再显示两个
select * from student limit 2,  2;

-- 按id倒序排列
select * from student order by id desc ;  order by id desc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

web层引 service 层, service 层引 dao 层, dao 层访问数据库

最近更新: 2023年03月21日 14:47:21