diff --git a/README.md b/README.md index 7a53f59..b2ad4c7 100644 --- a/README.md +++ b/README.md @@ -7,99 +7,220 @@ 一个处于萌芽阶段的知识库,用于持续分享自己的所见、所学、所思! -# :coffee: JAVA -+ [Java 反射与注解](notes/Java_反射与注解.md) -+ [Java 并发编程](notes/Java_并发编程.md) -+ [Java 设计模式](notes/Java_设计模式.md) -+ [Java 虚拟机](notes/Java_虚拟机.md) +## :coffee: JAVA +1. [Java 反射与注解](notes/Java_反射与注解.md) + 反射机制、自定义注解、@Target 与 @Retention、注解的继承 -## 💻 前端基础 +2. [Java 并发编程](notes/Java_并发编程.md) -- [JavaScript 基础](notes/JavaScript_基础.md) -- [ECMAScript 6.0 基础](notes/ES6_基础.md) + 非原子性协定、计算机多级高速缓存、缓存一致性协议、写缓冲与无效化队列、内存屏障、锁机制、无锁 CAS、线程池 -## :globe_with_meridians: 网络基础 -+ [计算机网络模型](notes/计算机网络.md) +3. [Java 设计模式](notes/Java_设计模式.md) -## 💾 数据库 + 软件设计原则、单例模式(使用序列化和反射破坏单例、防御序列化和反射攻击、枚举类单例)等 23 种设计模式 + +4. [Java 虚拟机](notes/Java_虚拟机.md) + + Java 内存区域、垃圾收集算法、经典垃圾收集器、双亲委派模型、分层编译、热点代码探测、方法内联、逃逸分析 + +5. Jvm 监控工具 + +6. Java 8 函数式编程 + +7. 静态代理与动态代理 + +8. IO、NIO、AIO + +9. Socket 网络编程系列 + +10. 高性能网络框架 Netty + +11. Java 集合类源码解析 + +12. Tomcat 架构解析 + +
+ +## :globe_with_meridians: 计算机与网络基础 + +1. [计算机网络模型](notes/计算机网络.md) + + 四层、五层、七层计算机网络模型、信道复用、PPP 协议、ARP 协议、划分子网与构成超网、TCP 三次握手与四次挥手 + +2. HTTP 协议详解 + +3. HTTPS 协议详解 + +4. 抓包神器 Wireshark + +5. 计算机组成原理 + +
+ +## :computer: 前端基础 + +1. [JavaScript 基础](notes/JavaScript_基础.md) + + 基本数据类型、引用类型、内置对象(Global 与 window)、作用域与闭包、对象设计 + +2. [ECMAScript 6.0 基础](notes/ES6_基础.md) + + 变量声明、对象字面量、对象解构、Symbol、迭代器与生成器、类、代理与反射、模块化 + +3. CSS 基础 + + 选择器、非局部样式、布局样式、效果属性、CSS 动画 + +4. JavaScript 设计模式 + +
+ +## :dolphin: 数据库 ### MySQL -+ [MySQL 核心概念](notes/MySQL_基础.md) -+ [MySQL 备份详解](notes/MySQL_备份.md) -+ [MySQL 二进制日志复制、GTID 复制与半同步复制](notes/MySQL_复制.md) -+ [MySQL 高可用架构之 PXC 集群](notes/MySQL_PXC集群.md) -+ [MyCat 读写分离与分库分表](notes/MySQL_Mycat中间件.md) -+ [MySQL 查询性能分析之 Explain](notes/MySQL_EXPLAIN.md) +1. [MySQL 核心概念](notes/MySQL_基础.md) + + B+ Tree 树、聚集索引和非聚集索引、共享锁与排他锁、意向共享锁与意向排它锁、一致性锁定读与一致性非锁定读 + +2. [MySQL 备份详解](notes/MySQL_备份.md) + + 备份类型、mysqldump 备份、mysqlpump 备份、Xtrabackup 备份、二进制日志备份 + +3. [MySQL 复制详解](notes/MySQL_复制.md) + + 基于二进制日志的复制、基于 GTID 的复制、半同步复制、高可用架构 MMM 和 MHA + +4. [MySQL 高可用架构之 PXC 集群](notes/MySQL_PXC集群.md) + +5. [MyCat 读写分离与分库分表](notes/MySQL_Mycat中间件.md) + +6. [MySQL 查询性能分析之 Explain](notes/MySQL_EXPLAIN.md) ### Redis -+ [Redis 基本数据类型和常用命令](notes/Redis_数据类型和常用命令.md) -+ [Redis AOF 和 RDB 持久化策略原理](notes/Redis_持久化.md) -+ [Redis 哨兵模式](notes/Redis_哨兵模式.md) -+ [Redis 集群模式](notes/Redis_集群模式.md) +1. [Redis 基本数据类型和常用命令](notes/Redis_数据类型和常用命令.md) + +2. [Redis AOF 和 RDB 持久化策略原理](notes/Redis_持久化.md) + +3. [Redis 哨兵模式](notes/Redis_哨兵模式.md) + + 复制机制、哨兵模式架构说明、哨兵模式搭建 + +4. [Redis 集群模式](notes/Redis_集群模式.md) + + 数据分区、节点通信、请求路由、故障发现与恢复、集群扩容与缩容 + +5. 使用 Redis 实现分布式锁 + ### MongoDB -+ [MongoDB 基础](notes/MongoDB_基础.md) -+ [MongoDB 索引](notes/MongoDB_索引.md) -+ [MongoDB 聚合](notes/MongoDB_聚合.md) -+ [MongoDB 复制](notes/MongoDB_复制.md) -+ [MongoDB 分片](notes/MongoDB_分片.md) +1. [MongoDB 基础](notes/MongoDB_基础.md) +2. [MongoDB 索引](notes/MongoDB_索引.md) + 单字段索引、复合索引、多键索引、哈希所有、地理空间索引、文本索引;唯一索引、稀疏索引、部分索引、TTL 索引 -## 📟 系统与容器 +3. [MongoDB 聚合](notes/MongoDB_聚合.md) -+ [Linux 常用 Shell 命令](notes/Linux_常用Shell命令.md) -+ [Sehll 脚本编程基础](notes/Shell_基础.md) -+ [Docker 基础](notes/Docker_基础.md) + 常用聚合管道、单用途聚合方法、MapReduce +4. [MongoDB 复制](notes/MongoDB_复制.md) + 复制功能、故障发现、优先选举、投票成员、副本集搭建 -## :books: 常用技术栈 +5. [MongoDB 分片](notes/MongoDB_分片.md) + + 分片副本集配置、配置副本集配置、路由服务配置 + +
+ +## :whale: 系统与容器 + +1. [Linux 常用 Shell 命令](notes/Linux_常用Shell命令.md) + +2. [Sehll 脚本编程基础](notes/Shell_基础.md) + + 创建脚本、分支语句、循环语句、处理用户输入、处理用户输出、创建函数、处理信号、定时作业 + +3. [Docker 基础](notes/Docker_基础.md) + + 核心概念(镜像、容器、仓库)、Docker 常用命令、DockerFile 常用指令 + +
+ +## :package: 常用技术栈 ### RabbitMQ -+ [RabbitMQ 核心概念](notes/RabbitMQ_基础.md) -+ [RabbitMQ 客户端开发](notes/RabbitMQ_客户端开发.md) -+ [HAProxy + KeepAlived 搭建 RabbitMQ 高可用集群](notes/RabbitMQ_高可用集群架构.md) +1. [RabbitMQ 核心概念](notes/RabbitMQ_基础.md) + +2. [RabbitMQ 客户端开发](notes/RabbitMQ_客户端开发.md) + +3. [HAProxy + KeepAlived 搭建 RabbitMQ 高可用集群](notes/RabbitMQ_高可用集群架构.md) ### Nginx -+ [Nginx 基础之静态网站部署,负载均衡,动静分离](notes/Nginx_基础.md) +1. [Nginx 基础之静态网站部署,负载均衡,动静分离](notes/Nginx_基础.md) +2. HTTP 模块详解 +3. Nginx 性能优化 ### Kafka -+ [Kafka 简介](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka简介.md) -+ [基于 Zookeeper 搭建 Kafka 高可用集群](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/基于Zookeeper搭建Kafka高可用集群.md) -+ [Kafka 生产者详解](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka生产者详解.md) -+ [Kafka 消费者详解](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka消费者详解.md) -+ [深入理解 Kafka 副本机制](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka深入理解分区副本机制.md) +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) +3. [Kafka 生产者详解](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Kafka生产者详解.md) +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) ### ZooKeeper -+ [ZooKeeper 简介及核心概念](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper简介及核心概念.md) -+ [ZooKeeper 单机环境和集群环境搭建](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Zookeeper单机环境和集群环境搭建.md) -+ [ZooKeeper 常用 Shell 命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper常用Shell命令.md) -+ [ZooKeeper Java 客户端](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper_Java客户端Curator.md) -+ [ZooKeeper ACL 权限控制](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Zookeeper_ACL权限控制.md) +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 客户端](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) +6. 使用 ZooKeeper 实现分布式锁 +## ElasticSearch -## :hammer: 软件安装 +TODO -+ [Redis 单机环境安装](notes/installation/Redis单机环境搭建.md) -+ [RabbitMQ 单机环境安装](notes/installation/RabbitMQ单机环境搭建.md) -+ [Nginx 单机环境安装](notes/installation/Nginx编译方式安装.md) -+ [MySQL 单机环境安装](notes/installation/MySQL单机环境搭建.md) -+ [MongoDB 单机环境安装](notes/installation/MongoDB单机环境搭建.md) -+ [ElasticSearch + Kibana 单机环境安装](notes/installation/ElasticSearch+Kibana单机环境搭建.md) +
+ +## :rocket: 测试与运维 + +1. 性能测试之 Jmeter +2. 性能测试之 LoadRunner +3. Jenkins 持续交付与自动化部署 + +
+ +## :bullettrain_side: 微服务与分布式 + +1. 分布式锁的实现 +2. 分布式选举算法 +3. 分布式事务实现原理 +4. 分布式全局 ID 的生成 +5. CAP 理论和 BASE 理论 + +
+ +## :hammer_and_wrench: 常用软件安装 + +1. [Redis 单机环境安装](notes/installation/Redis单机环境搭建.md) +2. [RabbitMQ 单机环境安装](notes/installation/RabbitMQ单机环境搭建.md) +3. [Nginx 单机环境安装](notes/installation/Nginx编译方式安装.md) +4. [MySQL 单机环境安装](notes/installation/MySQL单机环境搭建.md) +5. [MongoDB 单机环境安装](notes/installation/MongoDB单机环境搭建.md) +6. [ElasticSearch + Kibana 单机环境安装](notes/installation/ElasticSearch+Kibana单机环境搭建.md)
diff --git a/notes/Docker_基础.md b/notes/Docker_基础.md index d491806..e0b0075 100644 --- a/notes/Docker_基础.md +++ b/notes/Docker_基础.md @@ -17,7 +17,7 @@ Docker 使用 Go 语言进行开发,基于 Linux 内核的 cgroup,namespace - **runc** :是一个 Linux 命令行工具,用于根据 [OCI容器运行时规范](https://github.com/opencontainers/runtime-spec) 创建和运行容器。 - **containerd** :是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。 -下图体现了 Docker 和传统虚拟化方式的不同之处:传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,再在该系统上运行所需应用进程;而 Docker 容器内的应用进程则是直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,因此要比传统虚拟机更为轻便。 +下图体现了 Docker 和传统虚拟化方式的差异:传统虚拟机技术是虚拟出一套硬件后,再在其上运行一个完整操作系统,之后可以在该系统上运行所需的应用进程;而 Docker 容器内的应用进程则是直接运行于宿主的内核,容器没有自己的内核,也没有进行硬件虚拟,因此要比传统虚拟机更为轻便。
@@ -101,7 +101,7 @@ run 是 docker 中最为核心的一个命令,用于新建并启动容器, + **-i** :表示使用交互模式,始终保持输入流开放; + **-t** :表示分配一个伪终端,通常和 `-i` 结合使用,表示使用伪终端与容器进行交互; + **-d** :以后台方式运行容器; -+ **--name** :指定容器启动容器的名字,如果不指定,则由 docker 随机分配; ++ **--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` 代表只读模式。 diff --git a/notes/MongoDB_基础.md b/notes/MongoDB_基础.md index aed9cef..2b06899 100644 --- a/notes/MongoDB_基础.md +++ b/notes/MongoDB_基础.md @@ -33,7 +33,7 @@ | Undefined | “undefined” | 该数据类型已经废弃 | | ObjectId | “objectId” | 对象 id | | Boolean | “bool” | 布尔值 | -| Date | “date” | 日志类型 | +| Date | “date” | 日期类型 | | Null | “null” | 空 | | Regular Expression | “regex” | 正则表达式 | | DBPointer | “dbPointer” | 该数据类型已经废弃 | @@ -348,4 +348,4 @@ db.user.deleteOne( + 官方文档:[MongoDB CRUD Operations](https://docs.mongodb.com/manual/crud/) -+ Kristina Chodorow . MongoDB权威指南(第2版). 人民邮件出版社 . 2014-01 \ No newline at end of file ++ Kristina Chodorow . MongoDB权威指南(第2版). 人民邮件出版社 . 2014-01 diff --git a/notes/MySQL_基础.md b/notes/MySQL_基础.md index fed7948..92b2a1f 100644 --- a/notes/MySQL_基础.md +++ b/notes/MySQL_基础.md @@ -221,7 +221,7 @@ InnoDB 存储引擎支持以下两种标准的行级锁: 基于多版本并发控制和一致性非锁定读,可以避免获取锁的等待,从而提高并发访问下的性能。 -**2. 一致性锁定度** +**2. 一致性锁定读** 一致性锁定读则允许用户按照自己的需求在进行 SELECT 操作时手动加锁,通常有以下两种方式: