Merge branch 'master' of github.com:heibaiying/Full-Stack-Notes
This commit is contained in:
commit
4acd83ce21
123
README.md
123
README.md
@ -1,42 +1,39 @@
|
||||
# :memo:全栈工程师笔记
|
||||
# :coffee: JAVA
|
||||
|
||||
# :coffee: Java
|
||||
- Java 基础
|
||||
- GOF 23 种设计模式 ( Java 语言实现 )
|
||||
- 深入理解 Java 虚拟机
|
||||
- 网络编程原理
|
||||
- Netty 编程模式
|
||||
|
||||
1. Java 基础
|
||||
2. GOF 23 种设计模式 (Java 语言实现)
|
||||
3. 深入理解 Java 虚拟机
|
||||
4. 无锁并行计算框架 Disruptor
|
||||
6. 网络编程原理
|
||||
6. Netty 编程模式
|
||||
|
||||
## 💻 前端
|
||||
|
||||
1. JavaScript 三座大山 —— 原型与原型链,作用域与闭包,异步与单线程
|
||||
2. ECMAScript 6.0 核心知识
|
||||
## 💻 前端基础
|
||||
|
||||
- JavaScript 核心概念 —— 原型与原型链,作用域与闭包,异步与单线程
|
||||
- ECMAScript 6.0 基础
|
||||
|
||||
|
||||
|
||||
## 💾 数据库
|
||||
|
||||
### 1. Oracle
|
||||
### MySQL
|
||||
|
||||
|
||||
|
||||
### 2. MySQL
|
||||
|
||||
+ [MySQL 基础](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_基础.md)
|
||||
+ [MySQL 常用备份方式](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_备份.md)
|
||||
+ [MySQL 核心概念](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_基础.md)
|
||||
+ [MySQL 备份详解](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_备份.md)
|
||||
+ [MySQL 二进制日志复制、GTID 复制与半同步复制](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_复制.md)
|
||||
+ [MySQL 高可用架构之 PXC 集群](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_PXC集群.md)
|
||||
+ [MyCat 分库分表](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_分库分表.md)
|
||||
+ [MySQL 查询性能分析之 Explain](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MySQL_EXPLAIN.md)
|
||||
|
||||
### 3. Redis
|
||||
### Redis
|
||||
|
||||
+ [Redis 基本数据类型和常用命令](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Redis_数据类型和常用命令.md)
|
||||
+ [Redis AOF 和 RDB 持久化策略原理](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Redis_持久化.md)
|
||||
+ [Redis 哨兵模式](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Redis_哨兵模式.md)
|
||||
+ [Reids 集群模式](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Redis_集群模式.md)
|
||||
|
||||
### 4.MongoDB
|
||||
### MongoDB
|
||||
|
||||
+ [MongoDB 基础](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MongoDB_基础.md)
|
||||
+ [MongoDB 索引](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MongoDB_索引.md)
|
||||
@ -44,58 +41,48 @@
|
||||
+ [MongoDB 复制](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MongoDB_复制.md)
|
||||
+ [MongoDB 分片](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/MongoDB_分片.md)
|
||||
|
||||
|
||||
|
||||
## 📟 操作系统
|
||||
|
||||
+ [Linux 常用 Shell 命令](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Linux_常用Shell命令.md)
|
||||
|
||||
- [Docker 基础](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Docker_基础.md)
|
||||
- Kubernetes 简介及集群搭建
|
||||
|
||||
|
||||
## 🌳 Spring
|
||||
|
||||
### 1.spring 基础
|
||||
## 🌳 Spring 系列
|
||||
|
||||
### Spring
|
||||
|
||||
+ AOP
|
||||
+ IOC
|
||||
+ Spring事务机制、事务的传播与监控
|
||||
+ ......
|
||||
|
||||
### 2.spring Boot
|
||||
|
||||
+ spring 自动装配原理
|
||||
+ 理解 SpringApplication
|
||||
+ Web MVC REST
|
||||
+ WebFlux 核心
|
||||
+ ......
|
||||
|
||||
## 🚀 分布式框架
|
||||
|
||||
### 1. Dubbo
|
||||
|
||||
+ Dubbo 管理中心及监控平台安装部署
|
||||
+ Dubbo 负载均衡和服务降级
|
||||
|
||||
### 2. Spring Cloud
|
||||
### Spring Cloud
|
||||
|
||||
- Eureka 服务的注册和发现
|
||||
- Eureka 高可用集群搭建
|
||||
- Ribbon 客户端负载均衡 RestTemplate 服务远程调用
|
||||
- OpenFeign 声明式服务调用、服务容错处理
|
||||
- Hystix 服务容错保护、Hystrix Dashboard 断路器监控、Turbine 断路器聚合监控
|
||||
- Ribbon 客户端负载均衡,RestTemplate 服务远程调用
|
||||
- OpenFeign 声明式服务调用,服务容错处理
|
||||
- Hystix 服务容错保护,Hystrix Dashboard 断路器监控,Turbine 断路器聚合监控
|
||||
- Zuul 网关服务
|
||||
- Sleuth + Zipkin 服务链路追踪
|
||||
- Config 分布式配置中心 、集成 Bus 消息总线实现配置热更新
|
||||
- Config 分布式配置中心 ,集成 Bus 消息总线实现配置热更新
|
||||
|
||||
### 3.分布式解决方案
|
||||
### 分布式解决方案
|
||||
|
||||
+ 全局 id 生成方案
|
||||
+ 分布式 session 解决方案
|
||||
+ 全局 ID 生成方案
|
||||
+ 分布式 Session 解决方案
|
||||
+ 分布式事务解决方案实战
|
||||
+ 分布式锁解决方案
|
||||
|
||||
|
||||
## 中间件
|
||||
|
||||
### 1. 消息中间件:Kafka
|
||||
## 常用技术栈
|
||||
|
||||
### Kafka
|
||||
|
||||
1. [Kafka 简介](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka简介.md)
|
||||
2. [基于 Zookeeper 搭建 Kafka 高可用集群](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/基于Zookeeper搭建Kafka高可用集群.md)
|
||||
@ -103,37 +90,33 @@
|
||||
4. [Kafka 消费者详解](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka消费者详解.md)
|
||||
5. [深入理解 Kafka 副本机制](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka深入理解分区副本机制.md)
|
||||
|
||||
### 2. 消息中间件:RabbitMQ
|
||||
### RabbitMQ
|
||||
|
||||
- [RabbitMQ 基础](https://github.com/heibaiying/BigData-Notes/blob/master/notes/RabbitMQ_基础.md)
|
||||
- [RabbitMQ 客户端开发](https://github.com/heibaiying/BigData-Notes/blob/master/notes/RabbitMQ_客客户端开发.md)
|
||||
- [基于 HAProxy + KeepAlived 搭建 RabbitMQ 高可用集群](https://github.com/heibaiying/BigData-Notes/blob/master/notes/RabbitMQ_高可用集群架构.md)
|
||||
- [RabbitMQ 核心概念](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/RabbitMQ_基础.md)
|
||||
- [RabbitMQ 客户端开发](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/RabbitMQ_客户端开发.md)
|
||||
- [基于 HAProxy + KeepAlived 搭建 RabbitMQ 高可用集群](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/RabbitMQ_高可用集群架构.md)
|
||||
|
||||
### 3.负载均衡中间件 Nginx
|
||||
### ZooKeeper
|
||||
|
||||
1. [ZooKeeper 简介及核心概念](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper简介及核心概念.md)
|
||||
2. [ZooKeeper 单机环境和集群环境搭建](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Zookeeper单机环境和集群环境搭建.md)
|
||||
3. [ZooKeeper 常用 Shell 命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper常用Shell命令.md)
|
||||
4. [ZooKeeper Java 客户端 —— Apache Curator](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper_Java客户端Curator.md)
|
||||
5. [ZooKeeper ACL 权限控制](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper_ACL权限控制.md)
|
||||
|
||||
### Nginx
|
||||
|
||||
- Nginx 反向代理及负载均衡服务配置实战
|
||||
- 利用 keeplived+Nginx 实现 Nginx 高可用方案
|
||||
- Nginx 动静分离实战
|
||||
|
||||
### 4.分布式协调服务 Zookeeper
|
||||
### Dubbo
|
||||
|
||||
1. [Zookeeper 简介及核心概念](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper简介及核心概念.md)
|
||||
2. [Zookeeper 单机环境和集群环境搭建](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Zookeeper单机环境和集群环境搭建.md)
|
||||
3. [Zookeeper 常用 Shell 命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper常用Shell命令.md)
|
||||
4. [Zookeeper Java 客户端 —— Apache Curator](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper_Java客户端Curator.md)
|
||||
5. [Zookeeper ACL 权限控制](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper_ACL权限控制.md)
|
||||
|
||||
## Docker
|
||||
|
||||
- [Docker 基础](https://github.com/heibaiying/Full-Stack-Notes/blob/master/notes/Docker_基础.md)
|
||||
- kubernetes 简介及集群搭建
|
||||
- Dubbo 管理中心及监控平台安装部署
|
||||
- Dubbo 负载均衡和服务降级
|
||||
|
||||
|
||||
|
||||
## 📊 数据结构
|
||||
## 📊 算法
|
||||
|
||||
数组、栈、队列、链表、二分搜索树、集合、映射、优先队列、堆、线段树、Trie、并查集、AVL、红黑树、哈希表
|
||||
|
||||
|
||||
|
||||
## 算法基础
|
||||
TODO
|
||||
|
@ -14,8 +14,8 @@ Docker 是一个构建,发布和运行应用程序的开放平台。Docker 以
|
||||
|
||||
Docker 使用 Go 语言进行开发,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
|
||||
|
||||
- runc :是一个 Linux 命令行工具,用于根据 [OCI容器运行时规范](https://github.com/opencontainers/runtime-spec) 创建和运行容器。
|
||||
- containerd :是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。
|
||||
- **runc** :是一个 Linux 命令行工具,用于根据 [OCI容器运行时规范](https://github.com/opencontainers/runtime-spec) 创建和运行容器。
|
||||
- **containerd** :是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。
|
||||
|
||||
下图体现了 Docker 和传统虚拟化方式的不同之处:传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,再在该系统上运行所需应用进程;而 Docker 容器内的应用进程则是直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,因此要比传统虚拟机更为轻便。
|
||||
|
||||
@ -79,10 +79,10 @@ Docker 提供了大量命令用于管理镜像、容器和服务,命令的统
|
||||
|
||||
列出所有顶层镜像的相关信息。常用参数如下:
|
||||
|
||||
- -a :显示所有镜像,包括中间隐藏的镜像
|
||||
- -q :只显示镜像 ID
|
||||
- --digests :显示摘要信息
|
||||
- --no-trunc :显示完整镜像信息
|
||||
- **-a** :显示所有镜像,包括中间隐藏的镜像
|
||||
- **-q** :只显示镜像 ID
|
||||
- **--digests** :显示摘要信息
|
||||
- **--no-trunc** :显示完整镜像信息
|
||||
|
||||
#### 3. docker pull 镜像名 [:TAG]
|
||||
|
||||
@ -98,23 +98,23 @@ Docker 提供了大量命令用于管理镜像、容器和服务,命令的统
|
||||
|
||||
run 是 docker 中最为核心的一个命令,用于新建并启动容器,其拥有众多可用参数,可以使用`docker run --help`查看所有可用参数。常用参数如下:
|
||||
|
||||
+ -i :表示使用交互模式,始终保持输入流开放;
|
||||
+ -t :表示分配一个伪终端,通常和`-i`结合使用,表示使用伪终端与容器进行交互;
|
||||
+ -d :以后台方式运行容器;
|
||||
+ --name :指定容器启动容器的名字,如果不指定,则由 docker 随机分配;
|
||||
+ -c :用于给运行在容器中的所有进程分配 CPU 的 shares 值,这是一个相对权重,实际的处理速度与宿主机的 CPU 相关;
|
||||
+ -m :用于限制为容器中所有进程分配的内存总量,以B、K、M、G为单位;
|
||||
+ -v :用于挂载数据卷 volume,可以用多个`-v`参数同时挂载多个 volume。volume 的格式为:`[host-dir]:[container-dir]:[rw:ro]`,`[rw:ro]`用于指定数据卷的模式,`rw`代表读写模式,`ro`代表只读模式。
|
||||
+ -p :用于将容器的端口暴露给宿主机的端口,格式为:`hostPort:containerPort`,通过端口的暴露,可以让外部主机能够访问容器内的应用。
|
||||
+ **-i** :表示使用交互模式,始终保持输入流开放;
|
||||
+ **-t** :表示分配一个伪终端,通常和`-i`结合使用,表示使用伪终端与容器进行交互;
|
||||
+ **-d** :以后台方式运行容器;
|
||||
+ **--name** :指定容器启动容器的名字,如果不指定,则由 docker 随机分配;
|
||||
+ **-c** :用于给运行在容器中的所有进程分配 CPU 的 shares 值,这是一个相对权重,实际的处理速度与宿主机的 CPU 相关;
|
||||
+ **-m** :用于限制为容器中所有进程分配的内存总量,以B、K、M、G为单位;
|
||||
+ **-v** :用于挂载数据卷 volume,可以用多个`-v`参数同时挂载多个 volume。volume 的格式为:`[host-dir]:[container-dir]:[rw:ro]`,`[rw:ro]`用于指定数据卷的模式,`rw`代表读写模式,`ro`代表只读模式。
|
||||
+ **-p** :用于将容器的端口暴露给宿主机的端口,格式为:`hostPort:containerPort`,通过端口的暴露,可以让外部主机能够访问容器内的应用。
|
||||
|
||||
#### 2. docker ps [OPTIONS]
|
||||
|
||||
列出当前所有正在运行的容器。常用参数如下:
|
||||
|
||||
- -a :列出所有容器,包括运行的和已经停止的所有容器
|
||||
- -n :显示最近创建的 n 个容器
|
||||
- -q :只显示容器编号
|
||||
- --no-trunc :不要截断输出信息
|
||||
- **-a** :列出所有容器,包括运行的和已经停止的所有容器
|
||||
- **-n** :显示最近创建的 n 个容器
|
||||
- **-q** :只显示容器编号
|
||||
- **--no-trunc** :不要截断输出信息
|
||||
|
||||
#### 3. 启动\重启\停止\强制停止容器
|
||||
|
||||
@ -131,8 +131,8 @@ run 是 docker 中最为核心的一个命令,用于新建并启动容器,
|
||||
|
||||
想要退出正在运行的容器,有以下两种常用方法:
|
||||
|
||||
+ exit :退出并停止容器;
|
||||
+ ctrl+P+Q :退出。
|
||||
+ **exit** :退出并停止容器;
|
||||
+ **ctrl+P+Q** :退出。
|
||||
|
||||
#### 6. docker rm 容器名或ID
|
||||
|
||||
@ -150,12 +150,12 @@ docker inspect --format='{{.NetworkSettings}}' 32cb3ace3279
|
||||
|
||||
可以使用`docker logs [OPTIONS] CONTAINER`查看容器中进程的运行日志,常用参数如下:
|
||||
|
||||
- --details :显示日志详情
|
||||
- -f :跟随日志输出显示
|
||||
- --tail :从末尾开始显示指定行的数据
|
||||
- -t :显示时间戳
|
||||
- --since :开始时间
|
||||
- --until : 结束时间
|
||||
- **--details** :显示日志详情
|
||||
- **-f** :跟随日志输出显示
|
||||
- **--tail** :从末尾开始显示指定行的数据
|
||||
- **-t** :显示时间戳
|
||||
- **--since** :开始时间
|
||||
- **--until** : 结束时间
|
||||
|
||||
## 四、DockerFile
|
||||
|
||||
|
@ -143,6 +143,7 @@ rabbitmqctl set_cluster_name my_rabbitmq_cluster
|
||||
除了可以使用命令行外,还可以使用打开任意节点的 UI 界面进行查看,情况如下:
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/rabbitmq-集群模式.png"/> </div>
|
||||
|
||||
### 2.5 配置镜像队列
|
||||
|
||||
#### 1. 开启镜像队列
|
||||
@ -508,6 +509,7 @@ systemctl start keepalived
|
||||
此时只有 hadoop001 上是存在虚拟 IP 的,而 hadoop002 上是没有的。
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/rabbitmq-keepalived-vip2.png"/> </div>
|
||||
|
||||
### 4.6 验证故障转移
|
||||
|
||||
这里我们验证一下故障转移,因为按照我们上面的检测脚本,如果 HAProxy 已经停止且无法重启时 KeepAlived 服务就会停止,这里我们直接使用以下命令停止 Keepalived 服务:
|
||||
|
84
notes/installation/Nginx编译方式安装.md
Normal file
84
notes/installation/Nginx编译方式安装.md
Normal file
@ -0,0 +1,84 @@
|
||||
# Nginx 编译方式安装
|
||||
|
||||
## 一、安装依赖
|
||||
|
||||
+ **PCRE**:安装 PCRE 库来支持正则表达式,它主要被 NGINX Core 和 Rewrite 模块所需要:
|
||||
|
||||
```shell
|
||||
# PCRE库的编译需要该组件,所以需要预先安装
|
||||
$ yum -y install gcc-c++
|
||||
|
||||
$ wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
|
||||
$ tar -zxf pcre-8.42.tar.gz
|
||||
$ cd pcre-8.42
|
||||
$ ./configure
|
||||
$ make
|
||||
$ sudo make install
|
||||
```
|
||||
|
||||
+ **zlib** :安装 zlib 库来支持 header 头压缩,它主要被 NGINX Gzip 模块所依赖:
|
||||
|
||||
```shell
|
||||
$ wget http://zlib.net/zlib-1.2.11.tar.gz
|
||||
$ tar -zxf zlib-1.2.11.tar.gz
|
||||
$ cd zlib-1.2.11
|
||||
$ ./configure
|
||||
$ make
|
||||
$ sudo make install
|
||||
```
|
||||
|
||||
+ **OpenSSL**:安装 OpenSSL 库来支持 HTTPS 协议,它主要被 NGINX SSL 模块和其他模块所依赖:
|
||||
|
||||
```shell
|
||||
yum install openssl openssl-devel
|
||||
```
|
||||
|
||||
## 二、安装 Nginx
|
||||
|
||||
### 2.1 下载并解压
|
||||
|
||||
下载所需版本的 Nginx 并进行解压,Nginx 版本号的规则为:`主版本号.次版本号.修订号`,其中稳定版的次版本号为偶数,测试版的次版本号为奇数,生产环境下应尽量下载稳定版:
|
||||
|
||||
```shell
|
||||
$ wget https://nginx.org/download/nginx-1.16.1.tar.gz
|
||||
$ tar -zxvf nginx-1.16.1.tar.gz
|
||||
```
|
||||
|
||||
### 2.2 编译安装
|
||||
|
||||
按需编译 Nginx,可以使用 `--with` 来包含非默认安装的模块,或使用 `--without` 来排除默认安装的模块。关于全部模块的信息,可以使用 ` ./configure --help` 命令进行查看或查阅官方文档:https://nginx.org/en/docs/configure.html :
|
||||
|
||||
```shell
|
||||
$ cd nginx-1.16.1
|
||||
|
||||
$ ./configure \
|
||||
--prefix=/usr/app/nginx-1.16.1 \
|
||||
--with-pcre=/usr/app/pcre-8.42 \
|
||||
--with-zlib=/usr/app/zlib-1.2.11 \
|
||||
--with-http_ssl_module \ # 启用HTTPS支持
|
||||
--with-stream \ # 启用TCP和UDP代理功能
|
||||
--with-mail=dynamic # 启用邮件代理功能
|
||||
|
||||
$ make
|
||||
$ sudo make install
|
||||
```
|
||||
|
||||
### 2.3 配置环境变量
|
||||
|
||||
```shell
|
||||
$ vim /etc/profile
|
||||
```
|
||||
|
||||
增加如下配置:
|
||||
|
||||
```shell
|
||||
export NGINX_HOME=/usr/app/nginx-1.16.1
|
||||
export PATH=${NGINX_HOME}/sbin:$PATH
|
||||
```
|
||||
|
||||
使得配置的环境变量立即生效:
|
||||
|
||||
```shell
|
||||
$ source /etc/profile
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user