RESTful API 介绍
- REST 是 Representational State Transfer 的缩写
- 所有的东西都是资源,所有操作都通过对资源的增删改查 (CRUD) 实现
- 对资源的增删改查对应对 URL 的操作 (POST, DELETE, PUT, GET)
- 无状态的
URL 中都应该是名词,不应该出现动词
关于 RESTful API 更详细可参考阮一峰老师的 RESTful API 最佳实践
RestController

URL 中都应该是名词,不应该出现动词
关于 RESTful API 更详细可参考阮一峰老师的 RESTful API 最佳实践

io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
handler 继承了 SimpleChannelInboundHandler,SimpleChannelInboundHandler 中 channelRead 代码如下:
1 | public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { |
在 finally 代码块中释放了 msg
handler 改继承 ChannelHandlerAdapter
Linux软件安装管理 学习笔记
软件包分类:
源码包的优点:
源码包的缺点:
二进制包的优点:
二进制包的缺点:
脚本安装包:把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装。但实际安装的还是源码包和二进制包。
rpm 包的来源 :在系统光盘中(/mnt/cdrom/Packages)
rpm 包命名规则 :httpd-2.2.15-15.el6.centos.1.i686.rpm
rpm 包依赖性:
包全名与包名:
rpm -ivh 包全名
rmp -Uvh 包全名
rmp -e 包名
rpm -q 包名 :查询包是否安装
rpm -qa :查询所有已经安装的 rpm 包
rpm -qi 包名 :查询软件包详细信息
rpm -ql 包名 :查询软件包安装位置
rpm 包默认安装路径:
| 路径 | 释义 |
|---|---|
| /etc/ | 配置文件安装目录 |
| /usr/bin/ | 可执行的命令安装目录 |
| /usr/lib/ | 程序所使用的函数库保存位置 |
| /usr/share/doc/ | 基本的软件使用手册保存位置 |
| /usr/share/man/ | 帮助文件保存位置 |
rpm -qf 系统文件名 :查询系统文件属于哪个 rpm 包
rpm -qR 包名 :查询软件包的依赖性
rpm -V 已安装的包名
验证内容的8个信息:
文件类型:
rpm2cpio 包全名 | cpio -idv .文件绝对路径 :rpm 包中文件提取
cpio 选项 < [文件|设备]
将所有软件包放到官方服务器上,当进行 yum 在线安装时,可以自动解决依赖性问题
redhat 的 yum 在线安装需要付费
/etc/yum.repos.d/CentOS-Base.repo
yum list :查询所有可用软件包列表
yum search 关键字 :搜索服务器上所有和关键字相关的包
yum -y install 包名
yum -y update 包名
yum -y remove 包名
服务器使用最小化安装,用什么软件安装什么,尽量不卸载
yum grouplist :列出所有可用的软件组列表
yum groupinstall 软件组名 :安装指定软件组,组名可以由 grouplist 查询出来
yum groupmove 软件组名 :卸载指定软件组
注:软件组名必须为英文
源码包和 rpm 包的区别:
安装位置不同带来的影响:
安装准备:安装 C 语言编译器
注:windows 向 Linux 上传文件使用 WinSCP
安装注意事项:
源码包安装过程:
Linux网络管理 学习笔记
ifconfig eth0 192.168.0.200 netmask 255.255.255.0 #临时设置 eth0 网卡的 IP 地址与子网掩码
DEVICE=eth0 #网卡设备名
BOOTPROTO=none #是否自动获取 IP(none, static, dhcp)
HWADDR=00:0c:29:17:c4:09 #MAC 地址
NM_CONTROLLED=yes #是否可以由 Network Manager 图形管理工具托管
ONBOOT=yes #是否随网络服务启动,eth0 生效
TYPE=Ethernet #类型为以太网
UUID=”…” #唯一识别码
IPADDR=192.168.0.252 # IP 地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.0.1 #网管
DNS1=202.106.0.20 #DNS
IPV5INT=no #IPv6 没有启用
USERCTL=no #不允许非 root 用户控制此网卡
NETWORKING=yes
HOSTNAME=localhost.localdomain
hostname [主机名] :查看与临时设置主机名
nameserver 202.106.0.20
search localhost
Linux网络管理 学习笔记
ISO :国际标准化组织
OSI :开放系统互联模型

应用层、表示层、会话层服务于用户
传输层、网络层、数据链路层、物理层服务于实际数据传输
帧包含计算机的 MAC 地址,报文包含计算机的 IP 地址。MAC 地址负责局域网通信,IP 地址负责外网通信。
| 层 | 作用 |
|---|---|
| 应用层 | 用户接口 |
| 表现层 | 数据的表现形式、特定功能的实现(如加密) |
| 会话层 | 对应用会话的管理、同步 |
| 传输层 | 可靠与不可靠的传输(TCP/UDP)、传输前的错误检测、流控 |
| 网络层 | 提供逻辑地址、选路 |
| 数据链路层 | 成帧、用 MAC 地址访问媒介、错误检测与修正 |
| 物理层 | 设备之间的比特流的传输、物理接口、电气特性等 |

| 层 | 作用 |
|---|---|
| 网络接口层 | 负责监视数据在主机和网络之间的交换。事实上,TCP/IP 本身并未定义该层的协议,而由参与互联的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP 的网络接入层进行连接。地址解析协议(ARP)工作在此层,即 OSI 参考模型的数据链路层 |
| 网际互连层 | 主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP) |
| 传输层 | 为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要协议:传输控制协议(TCP)和用户数据报协议(UDP) [TCP 是面向连接、可靠的;UDP 面向事务、不可靠] |
| 应用层 | 为用户提供所需要的各种服务,例如 FTP, Telnet, DNS, SMTP 等 |

TCP/IP 模型与 OSI 模型的比较:

IP 地址分类:
| 网络类别 | 最大网络数 | IP 地址范围 | 最大主机数 | 私有 IP 地址范围 |
|---|---|---|---|---|
| A | 126(2^7-2) | 1.0.0.0 - 126.255.255.255 | 2^24-2 | 10.0.0.0 - 10.255.255.255 |
| B | 16384(2^14) | 128.0.0.0 - 191.255.255.255 | 2^16-2 | 172.16.0.0 - 172.31.255.255 |
| C | 2097152(2^21) | 192.0.0.0 - 223.255.255.255 | 2^8-2 | 192.168.0.0 - 192.168.255.255 |
A 类第一位数代表网段,B 类前两位数代表网段,C 类前三位数代表网段
IP 和子网掩码不能单独使用,必须同时使用
子网掩码用来确定 IP 地址当中哪一位数字代表同一网段,哪一位数代表同一网段中的不同主机


常见端口号:
netstat -an :查看本机启用的端口
hosts 是做静态 IP 和域名对应,hosts 文件的优先级高于 DNS 解析
DNS 查询类型:
从查询方式上分:
从查询内容上分:
Linux达人养成计划 I 学习笔记
Shell 是什么:
Shell 的分类:
注:系统支持的Shell类型可以在 /etc/shells 文件查询
| 控制字符 | 作用 |
|---|---|
| \a | 输出警告音 |
| \b | 退格键 |
| \n | 换行符 |
| \r | 回车键 |
| \t | 制表符 |
| \v | 垂直制表符 |
| \0nnn | 按照八进制ASCII码表输出字符,其中0是数字零,nnn是三位八进制数 |
| \xhh | 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 |
echo -e “\e[1;颜色代号 输出内容 \e[0m”
脚本执行:
命令生效顺序:
常用快捷键:
历史命令默认会保存1000条,可以在环境变量配置文件 /etc/profile 中进行修改
历史命令的调用:
在 Bash 中,按 “Tab” 键就会自动进行补全
标准输入输出:
| 设备 | 设备文件名 | 文件描述符 | 类型 |
|---|---|---|---|
| 键盘 | /dev/stdin | 0 | 标准输入 |
| 显示器 | /dev/sdtout | 1 | 标准输出 |
| 显示器 | /dev/sdterr | 2 | 标准错误输出 |
输出重定向:
| 类型 | 符号 | 作用 |
|---|---|---|
| 标准输出重定向 | 命令 > 文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 |
注:把命令结果输出到 /dev/null 相当于丢弃输出结果
| 符号 | 作用 |
|---|---|
| 命令 < 文件 | 把文件作为命令的输入 |
| 命令 << 标识符 … 标识符 | 把标识符之间内容作为命令时的输入 |
多命令顺序执行:
| 多命令执行符 | 格式 | 作用 |
|---|---|---|
| ; | 命令1 ; 命令2 | 多个命令顺序执行,命令之间没有任何逻辑关系 |
| && | 命令1 && 命令2 | 当命令1正确执行,则命令2才会执行 |
| || | 命令1 || 命令2 | 当命令1执行不正确,则命令2才会执行 |
| 通配符 | 作用 |
|---|---|
| ? | 匹配一个任意字符 |
其他特殊符号:
| 符号 | 作用 |
|---|---|
| ‘’ | 在单引号中所有的特殊符号都没有特殊含义 |
| “” | 在双引号中特殊符号都没有特殊含义,但是”$”, “`”, “"例外 |
| `` | 反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错 |
| $() | 和反引号作用一样,用来引用系统命令 |
$ | 用来调用变量的值
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true