diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..ee4d5a97
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,7 @@
+sudo: required
+script: bash ./assets/deploy/deploy.sh
+branches:
+ only:
+ - master
+notifications:
+ email: true
\ No newline at end of file
diff --git a/README.md b/README.md
index b45dcde7..81e69d8c 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,54 @@
-![full stack developer tutorial](assets/1537592021705.png)
-
-
-
-
-
- 嗨,欢迎来做客,即刻开始 CS 学习之旅.
-
-
- Hey, welcome to visit and start the computer science learning journey.
-
-
-
+![full stack developer tutorial](assets/fullstack-tutorial-logo.png)
| I | II | III | IV | V | VI | VII | VIII | IX | X | XI | XII |
| :--------------------------: | :-------------------: | :----------------------: | :---------------------: | :--------------: | :---------------: | :----------------------: | :----------------------: | :----------------------: | :----------------------: | :----------------------: | :----------------------: |
-| 算法
[:pencil:](#一数据结构与算法) | Java
[:coffee:](#二java) | Python
[:snake:](#三python) | 前端
[:link:](#四前端) | 数据库
[:floppy_disk:](#五数据库) | 操作系统
[:computer:](#六操作系统) | 网络通信
[:cloud:](#七网络通信) | 分布式
[:page_with_curl:](#八分布式) | 机器学习
[:mag:](#九机器学习) |工具
[:hammer:](#十工具) |Learn
[:books:](#learning-books) |Talking
[:bulb:](#talking-bulb) |
+| 算法
[📝](#一数据结构与算法) | Java
[☕️](#二java) | Python
[🐍](#三python) | 前端
[🔗](#四前端) | 数据库
[💾](#五数据库) | 操作系统
[💻](#六操作系统) | 网络通信
[☁️](#七网络通信) | 分布式
[📃](#八分布式) | 机器学习
[🔍](#九机器学习) |工具
[🔨](#十工具) |Learn
[📖](#learn-) |Talking
[💡](#talking-bulb) |
@@ -37,6 +57,7 @@
+
## 前言
- [全栈修炼手册:如何选择自己的技术栈?](notes/如何选择自己的技术栈.md)
@@ -47,6 +68,17 @@
工欲善其事,必先利其器。这里我将推荐开发过程中的提效工具、开发利器、协作工具、文档技术等等。
+- [XP 极限编程](notes/XP极限编程.md)
+
+ 敏捷软件开发中可能是最富有成效的几种方法学之一
+
+
+
+## 技能图谱
+
+- [backend skill](notes/SkillTree/backend-skill.md)
+
+ 后台开发技能图谱,从程序员的内功修炼到后台语言,分布式系统架构
@@ -64,31 +96,31 @@
## 二、Java
-- [Java 基础概念](notes/JavaArchitecture/01%20Java%20基础.md)
+- [Java 基础概念](notes/JavaArchitecture/01-Java基础.md)
基本概念、面向对象、关键字、基本数据类型与运算、字符串与数组、异常处理、Object 通用方法
-- [Java 集合框架](notes/JavaArchitecture/02%20Java%20集合框架.md)
+- [Java 集合框架](notes/JavaArchitecture/02-Java集合框架.md)
数据结构 & 源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap
-- [Java 并发编程](notes/JavaArchitecture/03%20Java%20并发编程.md)
+- [Java 并发编程](notes/JavaArchitecture/03-Java并发编程.md)
线程状态、线程机制、线程通信、J.U.C 组件、JMM、线程安全、锁优化
-- [Java I/O](notes/JavaArchitecture/04%20Java%20IO.md)
+- [Java I/O](notes/JavaArchitecture/04-Java-IO.md)
磁盘操作、字节操作、字符操作、对象操作、网络操作、NIO
-- [Java 虚拟机](notes/JavaArchitecture/05%20Java%20虚拟机.md)
+- [Java 虚拟机](notes/JavaArchitecture/05-Java虚拟机.md)
运行时数据区域、垃圾收集、内存分配机制、类加载机制、性能调优监控工具
-- [Java 设计模式](notes/JavaArchitecture/06%20设计模式.md)
+- [Java 设计模式](notes/JavaArchitecture/06-Java设计模式.md)
Java 常见的 10 余种设计模式,全 23 种设计模式逐步更新
-- [Java Web](notes/JavaArchitecture/07%20Java%20Web.md)
+- [Java Web](notes/JavaArchitecture/07-JavaWeb.md)
包含 Servlet & JSP、Spring、SpringMVC、Mybatis、Hibernate、Structs2 核心思想,如 IOC、AOP 等思想。SSM 更详细请转向:[Spring](notes/JavaWeb/Spring.md) | [SpringMVC](https://github.com/frank-lam/SpringMVC_MyBatis_Learning) | [MyBatis](https://github.com/frank-lam/SpringMVC_MyBatis_Learning)
@@ -96,7 +128,7 @@
## 三、Python
-- Python 语言基础
+- [Python 语言基础](notes/Python/Python简介及基础语法.md)
- Scrapy 爬虫框架
- Flask
- Django
@@ -105,6 +137,18 @@
## 四、前端
+- [前端知识体系](notes/Frontend/前端知识体系.md)
+- Vue
+ - 第一个 Vue 应用程序
+ - Vue-cli 脚手架
+ - vue-router 路由
+ - vuex 状态管理
+- Webpack
+
+
+
+TODO LIST
+
- HTML(5)
- CSS(3)
@@ -143,6 +187,10 @@
- npm
- yarn
+
+
+
+
## 五、数据库
@@ -201,9 +249,28 @@
容器化引擎服务
-- 微服务思想
+- [微服务](notes/微服务.md)
+
+ 微服务简介、API 网关、服务注册发现、服务通信
+
+- 分布式锁
+
+ 基于 Redis、MySQL、Zookeeper 的分布式锁实现
+
+- FastDFS
+
+ 轻量级分布式文件管理系统
+
+
+
+
+【说明】**分布式专题** 笔者也在学习中,这里列举了一些技能列表,笔者将局部更新。敬请期待
+
- 服务拆分,持续集成、持续交付、持续部署
+
+
+
+TODO LIST
- Kubernetes(k8s)
@@ -215,7 +282,7 @@
- Zookeeper
- 分布式协调服务
+ 分布式协调服务,服务注册发现
- Dubbo、Thrift(RPC 框架)
@@ -247,48 +314,50 @@
- DevOps
- 自动化运维
+ 自动化运维,持续集成、持续交付、持续部署
- Go
并发的、带垃圾回收的、快速编译的语言
-【说明】**分布式专题** 笔者也在学习中,这里列举了一些技能列表,笔者将局部更新。敬请期待
+
## 九、机器学习
-- 经典机器学习算法
-
- K 近邻算法、线性回归、梯度下降法、逻辑回归、支持向量机、决策树、集成学习
-- 基础框架
+- [深度学习初识](notes/DeepLearning/深度学习初识.md)
- Tensorflow,Scikit-learn
+- 经典机器学习算法
-【说明】学习过一段时间算法,但一直未来得及整理。敬请期待
+ K 近邻算法、线性回归、梯度下降法、逻辑回归、支持向量机、决策树、集成学习
## 十、工具
-- [Git](notes/Git.md)
+- [Git](notes/git-tutorial.md)
- 基本概念,常见命令,速查表
+ 学习指引,将用最极简的语言带你进入 Git 版本控制的世界
- [Git 工作流](notes/Git工作流.md)
集中式工作流,功能分支工作流, GitFlow 工作流,Forking 工作流,Pull Requests
-- [正则表达式](notes/EfficiencyTools/正则表达式.md)
+- [正则表达式](notes/正则表达式.md)
常见符号含义,速查表
+- [手把手教你搭建内网穿透服务](https://github.com/frank-lam/lanproxy-nat)
+
+ 基于 lanproxy 穿透服务,为你定了一键启动的服务端和客户端 Docker 镜像
+- [什么是 TDD 及常见的测试方法](notes/软件测试.md)
-## Learn :books:
+
+## Learn 📖
- [LEARN_LIST](notes/LEARNLIST.md)
@@ -300,62 +369,39 @@
## Talking :bulb:
- 本仓库致力于成为一个全栈开发爱好者的学习指南,给初学者一个更明确的学习方向,同时也是对自己技能的强化和巩固。在架构师这条路上,希望和大家一起成长,帮助更多的计算机爱好者能够有一个明确的学习路径。持续不间断的维护本仓库,也欢迎有更多的极客们加入。
+本仓库致力于成为一个全栈开发爱好者的学习指南,给初学者一个更明确的学习方向,同时也是对自己技能的强化和巩固。在架构师这条路上,希望和大家一起成长,帮助更多的计算机爱好者能够有一个明确的学习路径。持续不间断的维护本仓库,也欢迎有更多的极客们加入。
- 都说好记性不如烂笔头,定期的学习和整理必然对学习巩固有所帮助,这里通过索引的方式对全栈开发技术做一个系统分类,方便随时巩固和学习,当然还有面试。在学习这条路上难免会有很多盲点和学不完的知识。有道无术,术尚可求,掌握好思维能力才能应对千变万化的技术。不要把大脑当成硬盘,也不要做高速运转的 CPU,而修行自己的大脑成为一个搜索引擎,学会分析解决问题。
+都说好记性不如烂笔头,定期的学习和整理必然对学习巩固有所帮助,这里通过索引的方式对全栈开发技术做一个系统分类,方便随时巩固和学习,当然还有面试。在学习这条路上难免会有很多盲点和学不完的知识。有道无术,术尚可求,掌握好思维能力才能应对千变万化的技术。不要把大脑当成硬盘,也不要做高速运转的 CPU,而修行自己的大脑成为一个搜索引擎,学会分析解决问题。
- Since 20,May,2018
+Since 20,May,2018
-### Reference
+## Reference
- 个人的能力有限,在编写的过程中引用了诸多优秀的 GitHub 仓库。本项目的启发来自 [@CyC2018](https://github.com/CyC2018) 的学习笔记,是一个非常优秀的开源项目,在本仓库中部分内容引用文字和图例;引用了 [@计算所的小鼠标](https://github.com/CarpenterLee) 中对于 JCF 的源码分析和理解;引用了 [阿里面试题总结](https://www.nowcoder.com/discuss/5949) 中全部的面试题,并对面经进行了整理勘误,并进行了知识拓展和修改;引用了 [牛客网](https://www.nowcoder.com) 上的面试经验贴。也引用了知乎上的热门回答和优秀博客的回答。在这里特别鸣谢,我将每篇文章中做外链引用说明。
+个人的能力有限,在编写的过程中引用了诸多优秀的 GitHub 仓库。本项目的启发来自 [@CyC2018](https://github.com/CyC2018) 的学习笔记,是一个非常优秀的开源项目,在本仓库中部分内容引用文字和图例;引用了 [@计算所的小鼠标](https://github.com/CarpenterLee) 中对于 JCF 的源码分析和理解;引用了 [阿里面试题总结](https://www.nowcoder.com/discuss/5949) 中全部的面试题,并对面经进行了整理勘误,并进行了知识拓展和修改;引用了 [牛客网](https://www.nowcoder.com) 上的面试经验贴。也引用了知乎上的热门回答和优秀博客的回答。在这里特别鸣谢,我将每篇文章中做外链引用说明。
- 文中我也推荐了学习的书籍和学习课程,都将附着上最高清、最形象的配图进行讲解。在文中的配图都来自自己绘制的、博客、Github、PDF书籍等等,这里没法一一感谢,谢谢你们。
+文中我也推荐了学习的书籍和学习课程,都将附着上最高清、最形象的配图进行讲解。在文中的配图都来自自己绘制的、博客、Github、PDF书籍等等,这里没法一一感谢,谢谢你们。
- 推荐一些优秀的开源项目,供大家参考,[reference](notes/reference.md)。
+推荐一些优秀的开源项目,供大家参考,[reference](notes/reference.md)。
-### Contributors
+## Contributors
- 该项目还在萌芽起步阶段,在编写的过程中难免遇到错误和不足,你可以在 issue 中提出,或是提交你的 contribution。[【开源贡献】如何给我的仓库贡献?](notes/docs/如何给我的仓库贡献.md)
+Thank you to all the people who already contributed to fullstack-tutorial !
- 感谢以下伙伴们对于本仓库的贡献,如想加入本开源项目,请联系笔者。
+Please make sure to read the [Contributing Guide/如何给我的仓库贡献](notes/docs/如何给我的仓库贡献.md) before making a pull request.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-### License
+## License
- 本作品采用 [知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-sa/4.0/) 进行许可。使用者可以对本创作进行转载、节选、混编、二次创作,但不得运用于商业目的,且使用时须进行署名,采用本创作的内容必须同样采用本协议进行授权。
+
-
+Copyright (c) 2018-present, Frank Lam
@@ -365,7 +411,7 @@
在颠覆世界的同时,也要好好关照自己。
-
+
@@ -374,5 +420,4 @@
from zero to hero.
-
-
+
\ No newline at end of file
diff --git a/assets/1537589029422.png b/assets/1537589029422.png
deleted file mode 100644
index 7f7b8980..00000000
Binary files a/assets/1537589029422.png and /dev/null differ
diff --git a/assets/4yH8v1.png b/assets/4yH8v1.png
deleted file mode 100644
index fd9bbb95..00000000
Binary files a/assets/4yH8v1.png and /dev/null differ
diff --git a/assets/deploy/deploy.sh b/assets/deploy/deploy.sh
new file mode 100644
index 00000000..bc41e956
--- /dev/null
+++ b/assets/deploy/deploy.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env sh
+
+# 确保脚本抛出遇到的错误
+set -e
+
+
+rm gh-pages -rf; mkdir gh-pages; cp -r notes/* gh-pages/;
+cd gh-pages;
+
+
+# 将子目录的所有图片全部复制到文档根目录中,解决docsify图片索引不到的问题
+rm assets/ -rf
+mkdir assets
+
+rm pics/ -rf
+mkdir pics
+
+
+for f in $(find ../notes/ -type f -print | grep assets)
+ do
+ cp $f ./assets
+ done
+
+for f in $(find ../notes/ -type f -print | grep pics)
+ do
+ cp $f ./pics
+ done
+
+# 进入生成的文件夹
+
+#创建.nojekyll 防止Github Pages build错误
+touch .nojekyll
+
+git init
+git add -A
+git commit -m 'deploy'
+
+git push -f "https://${GH_TOKEN}@github.com/frank-lam/fullstack-tutorial.git" master:gh-pages
+
+cd -
\ No newline at end of file
diff --git a/assets/fullstack-tutorial-2019-2.png b/assets/fullstack-tutorial-2019-2.png
new file mode 100644
index 00000000..31646e4e
Binary files /dev/null and b/assets/fullstack-tutorial-2019-2.png differ
diff --git a/assets/fullstack-tutorial-2019.png b/assets/fullstack-tutorial-2019.png
new file mode 100644
index 00000000..205e88c7
Binary files /dev/null and b/assets/fullstack-tutorial-2019.png differ
diff --git a/assets/fullstack-tutorial-logo.png b/assets/fullstack-tutorial-logo.png
new file mode 100644
index 00000000..3038642b
Binary files /dev/null and b/assets/fullstack-tutorial-logo.png differ
diff --git a/assets/fullstack-tutorial-logo.svg b/assets/fullstack-tutorial-logo.svg
new file mode 100644
index 00000000..b6b44c2b
--- /dev/null
+++ b/assets/fullstack-tutorial-logo.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/assets/fullstack-tutorial-logo2.svg b/assets/fullstack-tutorial-logo2.svg
new file mode 100644
index 00000000..105a823a
--- /dev/null
+++ b/assets/fullstack-tutorial-logo2.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/assets/hot.svg b/assets/hot.svg
new file mode 100644
index 00000000..ed438f1e
--- /dev/null
+++ b/assets/hot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/mind/2019-learning.xmind b/assets/mind/2019-learning.xmind
new file mode 100644
index 00000000..b33c2d2d
Binary files /dev/null and b/assets/mind/2019-learning.xmind differ
diff --git a/assets/wechat-fullstack3.png b/assets/wechat-fullstack3.png
new file mode 100644
index 00000000..a88f81c3
Binary files /dev/null and b/assets/wechat-fullstack3.png differ
diff --git "a/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/01 Java \345\215\225\344\275\223\345\272\224\347\224\250.md" "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/01 Java \345\215\225\344\275\223\345\272\224\347\224\250.md"
new file mode 100644
index 00000000..f76e50bd
--- /dev/null
+++ "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/01 Java \345\215\225\344\275\223\345\272\224\347\224\250.md"
@@ -0,0 +1,147 @@
+## Java 单体应用
+
+| **章节** | **记录** |
+| --------------------------------------------------------- | -------- |
+| **开篇** | |
+| 1 开篇-程序员的玄学与佛学-1 | |
+| 2 开篇-程序员的玄学与佛学-2 | |
+| 3 开篇-程序员的玄学与佛学-3 | |
+| | |
+| **第01章** | |
+| 4 第01章-使用 Intellij IDEA-IDEA 简介 | |
+| 5 第01章-使用 Intellij IDEA-第一个 IDEA 应用程 | |
+| 6 小知识-使用 Markdown 记笔记 | |
+| | |
+| **第02章** | |
+| 7 第02章-使用 Maven 构建应用-Maven 简介 | |
+| 8 第02章-使用 Maven 构建应用-Maven 安装配置 | |
+| 9 第02章-使用 Maven 构建应用-Maven 本地仓库 | |
+| 10 第02章-使用 Maven 构建应用-Maven 中央仓库 | |
+| 11 第02章-使用 Maven 构建应用-Maven 依赖机制 | |
+| 12 第02章-使用 Maven 构建应用-Maven POM | |
+| 13 第02章-使用 Maven 构建应用-Maven 快照 | |
+| 14 第02章-使用 Maven 构建应用-第一个 Maven 应用程序 | |
+| | |
+| **第03章** | |
+| 15 第03章-三层架构+MVC-什么是三层架构 | |
+| 16 第03章-三层架构+MVC-什么是 MVC 模式 | |
+| 17 小知识-高内聚,低耦合 | |
+| 18 课后练习-三层架构-1 | 12/27 |
+| 19 课后练习-三层架构-2 | |
+| 20 小知识-关于如何自学的一些心得 | |
+| | |
+| **第04章** | |
+| 21 第04章-使用 Bootstrap-Bootstrap 简介 | |
+| 22 第04章-使用 Bootstrap-Bootstrap 环境安装 | |
+| 23 第04章-使用 Bootstrap-Bootstrap 网格布局 | |
+| 24 第04章-使用 Bootstrap-媒体查询的用法 | |
+| 25 第04章-使用 Bootstrap-Bootstrap 表格 | |
+| 26 第04章-使用 Bootstrap-Bootstrap 字体图标 | |
+| | |
+| **第05章** | |
+| 27 第05章-基础框架入门-Spring-Spring 简介 | |
+| 28 第05章-基础框架入门-Spring-Spring 体系结构 | |
+| 29 第05章-基础框架入门-Spring-Spring 的特点 | |
+| 30 第05章-基础框架入门-Spring-Spring 与 IoC | |
+| 31 第05章-基础框架入门-Spring-第一个 Spring 应用程 | |
+| 32 小知识-什么是 TDD 及常见的测试方式 | |
+| 33 第05章-基础框架入门-JUnit-JUnit 简介 | |
+| 34 第05章-基础框架入门-JUnit-第一个 JUnit 单元测试 | |
+| 35 第05章-基础框架入门-JUnit-JUnit 断言 | |
+| 36 第05章-基础框架入门-Log4j-Log4j 简介 | |
+| 37 第05章-基础框架入门-Log4j-Log4j 日志级别 | |
+| 38 第05章-基础框架入门-Log4j-Log4j 日志输出控制文件 | |
+| 39 第05章-基础框架入门-Log4j-第一个 Log4j 日志文件 | |
+| 40 综合复习-本周知识总结 | |
+| 41 综合复习-创建项目 | |
+| 42 综合复习-Bootstrap 管理模板-AdminLTE | |
+| 43 综合复习-Bootstrap 管理模板-创建登录页 | |
+| 44 综合复习-实现登录功能-完成后台编码 | |
+| 45 综合复习-实现登录功能-增强用户体验 | |
+| | |
+| **第06章** | |
+| 46 第06章-Spring Web 与 Bean 装配-Spring | |
+| 47 第06章-Spring Web 与 Bean 装配-容器中 Bea | |
+| 48 第06章-Spring Web 与 Bean 装配-基于注解的装配 | |
+| 49 课后作业-记住我 | |
+| | |
+| **第07章** | |
+| 50 第07章-Spring MVC 与 Maven 模块化开发-Spr | |
+| 51 第07章-Spring MVC 与 Maven 模块化开发-Spr | |
+| 52 第07章-Spring MVC 与 Maven 模块化开发-第一个 | |
+| 53 第07章-Spring MVC 与 Maven 模块化开发-Spr | |
+| 54 第07章-Spring MVC 与 Maven 模块化开发-Mav | |
+| 55 课后练习-重新完善功能代码 | |
+| | |
+| **第08章** | |
+| 56 第08章-MyBatis 数据持久化-MyBatis 简介 | |
+| 57 第08章-MyBatis 数据持久化-Druid 简介 | |
+| 58 第08章-MyBatis 数据持久化-Spring 整合 Drui | |
+| 59 第08章-MyBatis 数据持久化-Spring 整合 MyBa | |
+| 60 小知识-utf8 与 utf8mb4 字符集 | |
+| 61 第08章-MyBatis 数据持久化-第一个 MyBatis 对象 | |
+| | |
+| **第09章** | |
+| 62 第09章-MyBatis 表操作-单表 CRUD 操作 | |
+| 63 项目实战-MyShop-实现用户登录功能 | |
+| 64 项目实战-MyShop-实现首页布局 | |
+| 65 项目实战-MyShop-用户管理功能-用户列表展示 | |
+| 66 项目实战-MyShop-用户管理功能-实现新增用户功能 | |
+| 67 项目实战-MyShop-用户管理功能-使用 Spring MVC | |
+| 68 项目实战-MyShop-用户管理功能-使用 jQuery Vali | |
+| 69 项目实战-MyShop-用户管理功能-使用动态 SQL 实现搜索功 | |
+| 70 项目实战-MyShop-用户管理功能-优化搜索功能 | |
+| 71 项目实战-MyShop-用户管理功能-使用 jQuery iChe | |
+| 72 项目实战-MyShop-用户管理功能-实现批量删除功能1 | |
+| 73 项目实战-MyShop-用户管理功能-实现批量删除功能2 | |
+| 74 项目实战-MyShop-用户管理功能-使用 DataTables | |
+| 75 项目实战-MyShop-用户管理功能-使用 DataTables | |
+| 76 项目实战-MyShop-用户管理功能-实现编辑和查看功能 | |
+| 77 项目实战-MyShop-用户管理功能-重新实现搜索功能 | |
+| 78 项目实战-MyShop-用户管理功能-最后的收尾工作 | |
+| 79 项目实战-MyShop-内容管理功能-内容分类功能准备 | |
+| 80 项目实战-MyShop-内容管理功能-使用 TreeTable 展 | |
+| 81 项目实战-MyShop-内容管理功能-内容列表功能准备 | |
+| 82 项目实战-MyShop-内容管理功能-使用 zTree 展示内容分 | |
+| 83 项目实战-MyShop-使用 Lombok 插件简化 Bean 代 | |
+| 84 项目实战-MyShop-使用 Spring Validation | |
+| 85 项目实战-MyShop-内容管理功能-Spring MVC + D | |
+| 86 项目实战-MyShop-内容管理功能-封装 Dropzone 插件 | |
+| 87 项目实战-MyShop-内容管理功能-使用 wangEditor | |
+| 88 项目实战-MyShop-内容管理功能-实现 wangEditor | |
+| 89 项目实战-MyShop-内容管理功能-实现关联关系查询 | |
+| 90 项目实战-MyShop-重构代码-提取统一的数据访问和业务接口 | |
+| 91 项目实战-MyShop-内容管理功能-实现内容分类的新增功能 | |
+| 92 项目实战-MyShop-重构代码-深度封装业务逻辑层1 | |
+| 93 项目实战-MyShop-重构代码-深度封装业务逻辑层2 | |
+| 94 项目实战-MyShop-重构代码-封装控制器层 | |
+| | |
+| **第11章** | |
+| 95 第11章-Spring 的事务管理-Spring 事务管理简介 | |
+| 96 第11章-Spring 的事务管理-使用 AspectJ 的 AO | |
+| 97 项目实战-MyShop-使用 Spring 注解管理事务 | |
+| | |
+| **第12章** | |
+| 98 第12章-解决模块间的通信问题-项目改动说明 | |
+| 99 第12章-解决模块间的通信问题-后台管理与门户数据展示说明 | |
+| 100 第12章-解决模块间的通信问题-为什么存在通信问题 | |
+| 101 第12章-解决模块间的通信问题-Apache HttpClien | |
+| 102 第12章-解决模块间的通信问题-Apache HttpClien | |
+| 103 第12章-解决模块间的通信问题-使用 Jackson 处理 JS | |
+| 104 第12章-解决模块间的通信问题-创建 API 接口模块 | |
+| 105 小知识-POJO、VO、DTO、Entity、Domain 的区 | |
+| 106 第12章-解决模块间的通信问题-RESTful 风格的 API | |
+| 107 第12章-解决模块间的通信问题-使用 Spirng MVC 实现 | |
+| | |
+| 108 项目实战-MyShop-创建 Web UI 门户模块 | |
+| 109 项目实战-MyShop-实现 UI 模块与 API 模块的通信 | |
+| 110 项目实战-MyShop-实现门户首页的幻灯片展示 | |
+| 111 项目实战-MyShop-实现门户登录-实现 API | |
+| 112 项目实战-MyShop-实现门户登录-对接 API | |
+| 113 项目实战-MyShop-实现门户登录-使用拦截器禁止重复登录 | |
+| 114 小知识-验证码的作用与如何打码 | |
+| 115 项目实战-MyShop-解决 Maven 无法下载依赖的问题 | |
+| 116 项目实战-MyShop-实现门户登录-增加 Kaptcha 验证 | |
+| 117 项目实战-MyShop-使用 Apache Commons Em | |
+| 118 课程完结-阶段总结,撒花,撒花,可喜可贺,可喜可贺 | |
+
diff --git "a/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/02 Java \345\276\256\346\234\215\345\212\241\346\236\266\346\236\204.md" "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/02 Java \345\276\256\346\234\215\345\212\241\346\236\266\346\236\204.md"
new file mode 100644
index 00000000..7d79dc7c
--- /dev/null
+++ "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/02 Java \345\276\256\346\234\215\345\212\241\346\236\266\346\236\204.md"
@@ -0,0 +1,96 @@
+## Java 微服务架构
+
+| 章节 | 记录 |
+| ----------------------------------------------------- | ---- |
+| 1 关于博客改版的一些说明 | |
+| 2 第01章-微服务简介-构建单体应用模型 | |
+| 3 第01章-微服务简介-走向单体地狱 | |
+| 4 第01章-微服务简介-微服务解决复杂问题 | |
+| 5 第01章-微服务简介-微服务的优点 | |
+| 6 第01章-微服务简介-微服务的缺点 | |
+| | |
+| 7 第02章-基础设施即服务-Linux-简介 | |
+| 8 第02章-基础设施即服务-Linux-关于操作系统的选型 | |
+| 9 第02章-基础设施即服务-Linux-安装 Ubuntu Serve | |
+| 10 第02章-基础设施即服务-Linux-服务器远程控制 | |
+| 11 第02章-基础设施即服务-Linux-目录结构说明 | |
+| 12 第02章-基础设施即服务-Linux-操作文件目录命令 | |
+| 13 第02章-基础设施即服务-Linux-系统管理命令 | |
+| 14 第02章-基础设施即服务-Linux-重启与压缩命令 | |
+| 15 第02章-基础设施即服务-Linux-编辑器的使用 | |
+| 16 第02章-基础设施即服务-Linux-软件的安装与卸载 | |
+| 17 第02章-基础设施即服务-Linux-用户和组管理 | |
+| 18 第02章-基础设施即服务-Linux-文件权限管理 | |
+| 19 第02章-基础设施即服务-Linux-安装 Java | |
+| 20 第02章-基础设施即服务-Linux-安装 Tomcat | |
+| 21 第02章-基础设施即服务-Linux-安装 MySQL | |
+| 22 第02章-基础设施即服务-Linux-部署应用到生成环境 | |
+| 23 第02章-基础设施即服务-Docker-什么是 Docker | |
+| 24 第02章-基础设施即服务-Docker-为什么要用 Docker | |
+| 25 第02章-基础设施即服务-Docker-引擎 | |
+| 26 第02章-基础设施即服务-Docker-架构 | |
+| 27 第02章-基础设施即服务-Docker-镜像与容器 | |
+| 28 第02章-基础设施即服务-Docker-仓库 | |
+| 29 第02章-基础设施即服务-Docker-安装 | |
+| 30 第02章-基础设施即服务-Docker-加速器 | |
+| 31 第02章-基础设施即服务-Docker-镜像-获取镜像 | |
+| 32 第02章-基础设施即服务-Docker-镜像-列出镜像 | |
+| 33 第02章-基础设施即服务-Docker-镜像-删除镜像 | |
+| 34 第02章-基础设施即服务-Docker-镜像-Dockerfile | |
+| 35 第02章-基础设施即服务-Docker-镜像-Dockerfile | |
+| 36 第02章-基础设施即服务-Docker-镜像-Dockerfile | |
+| 37 第02章-基础设施即服务-Docker-镜像-Dockerfile | |
+| 38 第02章-基础设施即服务-Docker-镜像-Dockerfile | |
+| 39 第02章-基础设施即服务-Docker-守护态运行容器 | |
+| 40 第02章-基础设施即服务-Docker-容器数据持久化 | |
+| 41 第02章-基础设施即服务-Docker-部署数据库 | |
+| 42 第02章-基础设施即服务-Docker-部署项目到容器 | |
+| 43 第02章-基础设施即服务-Docker Compose-简介与安装 | |
+| 44 第02章-基础设施即服务-Docker Compose-基本使用 | |
+| 45 第02章-基础设施即服务-Docker Compose-部署项目到 | |
+| 46 第02章-基础设施即服务-Docker Compose-YAML | |
+| | |
+| 47 第03章-平台即服务-GitLab-使用 Git 托管代码 | |
+| 48 第03章-平台即服务-GitLab-简介与安装 | |
+| 49 第03章-平台即服务-GitLab-基本设置 | |
+| 50 第03章-平台即服务-GitLab-第一个托管项目 | |
+| 51 第03章-平台即服务-GitLab-使用 SSH 免密登录 | |
+| 52 第03章-平台即服务-Nexus-简介与安装 | |
+| 53 第03章-平台即服务-Nexus-在项目中使用 Maven 私服 | |
+| 54 第03章-平台即服务-Registry-简介与安装 | |
+| 55 第03章-平台即服务-Registry-配置 WebUI 与客户端 | |
+| 56 Docker-真正实现:一次构建,到处运行 | |
+| | |
+| 57 第04章-再谈微服务-传统架构与微服务架构的区别 | |
+| 58 第04章-再谈微服务-微服务的特征 | |
+| 59 第04章-再谈微服务-微服务的实践1 | |
+| 60 第04章-再谈微服务-微服务的实践2 | |
+| 61 小知识-单点故障与分布式锁 | |
+| 62 第04章-再谈微服务-微服务架构设计模式 | |
+| | |
+| 63 第05章-微服务框架-SpringBoot-简史 | |
+| 64 第05章-微服务框架-SpringBoot-简介 | |
+| 65 第05章-微服务框架-SpringBoot-优缺点 | |
+| 66 第05章-微服务框架-SpringBoot-第一个应用程序 | |
+| 67 第05章-微服务框架-SpringBoot-单元测试 | |
+| 68 第05章-微服务框架-SpringBoot-常用配置 | |
+| 69 第05章-微服务框架-SpringBoot-Thymeleaf-简 | |
+| 70 第05章-微服务框架-SpringBoot-Thymeleaf-为 | |
+| 71 第05章-微服务框架-SpringBoot-Thymeleaf-第 | |
+| 72 第05章-微服务框架-SpringBoot-MyBatis-整合 | |
+| 73 第05章-微服务框架-SpringBoot-MyBatis-测试 | |
+| 74 第05章-微服务框架-SpringCloud-简介 | |
+| 75 第05章-微服务框架-SpringCloud-创建统一的依赖管理 | |
+| 76 第05章-微服务框架-SpringCloud-服务注册与发现 | |
+| 77 第05章-微服务框架-SpringCloud-创建服务提供者 | |
+| 78 第05章-微服务框架-SpringCloud-创建服务消费者(Ri | |
+| 79 第05章-微服务框架-SpringCloud-创建服务消费者(Fe | |
+| 80 第05章-微服务框架-SpringCloud-使用熔断器防止服务雪 | |
+| 81 第05章-微服务框架-SpringCloud-使用熔断器仪表盘监控 | |
+| 82 第05章-微服务框架-SpringCloud-使用路由网关统一访问 | |
+| 83 第05章-微服务框架-SpringCloud-使用路由网关的服务过 | |
+| 84 第05章-微服务框架-SpringCloud-分布式配置中心-服务 | |
+| 85 第05章-微服务框架-SpringCloud-分布式配置中心-客户 | |
+| 86 第05章-微服务框架-SpringCloud-服务链路追踪 | |
+| 87 第05章-微服务框架-SpringCloud-服务监控-服务端 | |
+| 88 第05章-微服务框架-SpringCloud-服务监控-客户端 | |
\ No newline at end of file
diff --git "a/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/03 Java \345\276\256\346\234\215\345\212\241\345\256\236\346\210\230.md" "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/03 Java \345\276\256\346\234\215\345\212\241\345\256\236\346\210\230.md"
new file mode 100644
index 00000000..5879f262
--- /dev/null
+++ "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/03 Java \345\276\256\346\234\215\345\212\241\345\256\236\346\210\230.md"
@@ -0,0 +1,71 @@
+## Java 微服务实战
+| 章节 | 记录 |
+| ------------------------------------------- | ---- |
+| 1 开篇-倾力打造互联网 Java 全栈工程师 | |
+| 2 白皮书 | |
+| 3 项目简介 | |
+| 4 开发前的准备-了解敏捷开发 | |
+| 5 开发前的准备-了解 XP 极限编程 | |
+| 6 开发前的准备-创建 GitLab 项目组 | |
+| 7 开发前的准备-完善各服务配置 | |
+| 8 开发前的准备-部署服务到容器1 | |
+| 9 开发前的准备-部署服务到容器2 | |
+| 10 部署持续集成-持续集成的基本概念 | |
+| 11 部署持续集成-持续集成的操作流程 | |
+| 12 部署持续集成-使用 GitLab 持续集成 | |
+| 13 部署持续集成-使用 GitLab Runn | |
+| 14 部署持续集成-使用 GitLab Runn | |
+| 15 部署持续集成-第一个 GitLab Run | |
+| 16 部署持续集成-实战分布式配置中心 | |
+| 17 部署持续集成-实战服务注册与发现 | |
+| 18 管理员服务-提供者1 | |
+| 19 管理员服务-提供者2 | |
+| 20 管理员服务-提供者3 | |
+| 21 管理员服务-消费者 | |
+| 22 反向代理负载均衡-Nginx 简介 | |
+| 23 反向代理负载均衡-Nginx 虚拟主机 | |
+| 24 小知识-Nginx 惊群问题 | |
+| 25 反向代理负载均衡-Nginx 反向代理 | |
+| 26 反向代理负载均衡-Nginx 负载均衡 | |
+| 27 反向代理负载均衡-Nginx 搭建伪 CD | |
+| 28 数据缓存服务-Redis 简介 | |
+| 29 数据缓存服务-Redis 高可用方案 | |
+| 30 数据缓存服务-Redis Sentinel | |
+| 31 数据缓存服务-提供者 | |
+| 32 单点登录服务-单点登录系统机制 | |
+| 33 单点登录服务-多系统登录的复杂性 | |
+| 34 单点登录服务-单点登录系统流程 | |
+| 35 单点登录服务-实战单点登录1 | |
+| 36 单点登录服务-实战单点登录2 | |
+| 37 单点登录服务-实战单点登录3 | |
+| 38 单点登录服务-实战单点登录4 | |
+| 39 单点登录服务-实战单点登录5 | |
+| 40 单点登录服务-使用 Nginx 反向代理解 | |
+| 41 单点登录服务-实战单点登录完结篇 | |
+| 42 进入下半场的准备工作 | |
+| 43 番外篇-重构改善既有代码的设计-数据库 | |
+| 44 番外篇-重构改善既有代码的设计-领域模型 | |
+| 45 番外篇-重构改善既有代码的设计-业务逻辑层 | |
+| 46 番外篇-重构改善既有代码的设计-管理员服务 | |
+| 47 番外篇-重构改善既有代码的设计-管理员分页 | |
+| 48 文章服务-提供者 | |
+| 49 文章服务-配置 MyBatis Redis | |
+| 50 文章服务-配置 Swagger2 接口文档 | |
+| 51 文章服务-消费者 | |
+| 52 文章服务-消费者-分页功能 | |
+| 53 文章服务-消费者-提取 Thymeleaf | |
+| 54 文章服务-消费者-保存功能 | |
+| 55 文件上传服务-FastDFS | |
+| 56 文件上传服务-提供者 | |
+| 57 文章服务-消费者-文件上传功能 | |
+| 58 后台服务聚合-页面拆分1 | |
+| 59 后台服务聚合-页面拆分2 | |
+| 60 后台服务聚合-页面聚合1 | |
+| 61 后台服务聚合-页面聚合2 | |
+| 62 数字货币服务-前言 | |
+| 63 消息队列-消息队列的流派 | |
+| 64 消息队列-Actor 模型 | |
+| 65 消息队列-RabbitMQ 简介 | |
+| 66 消息队列-RabbitMQ 安装 | |
+| 67 消息队列-RabbitMQ 使用 | |
+| 68 任务调度-Quartz | |
\ No newline at end of file
diff --git "a/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/04 Java \345\276\256\346\234\215\345\212\241\346\236\266\346\236\204 Dubbo \347\257\207.md" "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/04 Java \345\276\256\346\234\215\345\212\241\346\236\266\346\236\204 Dubbo \347\257\207.md"
new file mode 100644
index 00000000..026fd639
--- /dev/null
+++ "b/course/Java \346\236\266\346\236\204\345\270\210\346\210\220\351\225\277\344\271\213\350\267\257/04 Java \345\276\256\346\234\215\345\212\241\346\236\266\346\236\204 Dubbo \347\257\207.md"
@@ -0,0 +1,72 @@
+## Java 微服务架构 Dubbo 篇
+
+| 章节 | 记录 |
+| --------------------------------------------------- | ---- |
+| 01 实现微服务架构-课程回顾-微服务架构需要解决的问题 | |
+| 02 实现微服务架构-Zookeeper-什么是分布式协调服务 | |
+| 03 实现微服务架构-Zookeeper-什么是分布式锁1 | |
+| 04 实现微服务架构-Zookeeper-什么是分布式锁2 | |
+| 05 实现微服务架构-Zookeeper-什么是分布式锁3 | |
+| 06 实现微服务架构-Zookeeper-服务注册与发现 | |
+| 07 实现微服务架构-Zookeeper-集群崩溃恢复1 | |
+| 08 实现微服务架构-Zookeeper-集群崩溃恢复2 | |
+| 09 实现微服务架构-Zookeeper-集群数据同步 | |
+| 10 实现微服务架构-Zookeeper-如何实现分布式锁 | |
+| 11 实现微服务架构-Zookeeper-基于 Docker | |
+| 12 实现微服务架构-Zookeeper-配置说明 | |
+| | |
+| 13 实现微服务架构-Dubbo-简介1 | |
+| 14 实现微服务架构-Dubbo-简介2 | |
+| 15 实现微服务架构-Dubbo-服务治理 | |
+| 16 实现微服务架构-Dubbo-核心功能与组件角色 | |
+| 17 实现微服务架构-Dubbo-管理控制台 | |
+| 18 实现微服务架构-Dubbo-服务提供者 | |
+| 19 实现微服务架构-Dubbo-服务消费者 | |
+| 20 实现微服务架构-Dubbo-负载均衡 | |
+| 21 实现微服务架构-Dubbo-使用 Kryo 实现高速序 | |
+| 22 实现微服务架构-Dubbo-使用 Hystrix 实现 | |
+| 23 实现微服务架构-Dubbo-使用 Hystrix 熔断 | |
+| 24 实现微服务架构-Dubbo-系统架构的演进 | |
+| | |
+| 25 实现微服务架构-项目实战-搭建通用模块项目 | |
+| 26 实现微服务架构-项目实战-搭建用户管理服务 | |
+| | |
+| 27 实现微服务架构-持续集成-GitLab Runner | |
+| 28 实现微服务架构-持续集成-实战服务提供者 | |
+| 29 实现微服务架构-持续集成-实战服务消费者 | |
+| | |
+| 30 实现微服务架构-持续交付-基于 Docker 安装 J | |
+| 31 实现微服务架构-持续交付-配置 Jenkins | |
+| 32 实现微服务架构-持续交付-创建第一个任务 | |
+| 33 实现微服务架构-持续交付-实战服务提供者 | |
+| | |
+| 34 实现微服务架构-用户管理服务-Metronic 模板介 | |
+| 35 实现微服务架构-用户管理服务-实现基本布局 | |
+| 36 实现微服务架构-用户管理服务-PageHelper分页 | |
+| 37 实现微服务架构-用户管理服务-PageHelper分页 | |
+| | |
+| 38 实现微服务架构-内容管理服务-实现基本功能 | |
+| | |
+| 39 实现微服务架构-服务聚合-API 网关1 | |
+| 40 实现微服务架构-服务聚合-API 网关2 | |
+| | |
+| 41 实现微服务架构-分布式文件系统-什么是 FastDFS | |
+| 42 实现微服务架构-分布式文件系统-基于 Docker 安 | |
+| 43 实现微服务架构-分布式文件系统-FastDFS Jav | |
+| | |
+| 44 实现微服务架构-使用 Nginx 解决跨域问题-跨域现 | |
+| 45 实现微服务架构-使用 Nginx 解决跨域问题-Ngi | |
+| 46 实现微服务架构-使用 Nginx 解决跨域问题-Ngi | |
+| 47 实现微服务架构-使用 Nginx 解决跨域问题-Ngi | |
+| 48 实现微服务架构-使用 Nginx 解决跨域问题-Ngi | |
+| 49 实现微服务架构-使用 Nginx 解决跨域问题-COR | |
+| 50 实现微服务架构-使用 Nginx 解决跨域问题-假请求 | |
+| | |
+| 51 实现微服务架构-使用 Redis 实现数据缓存-创建缓 | |
+| 52 实现微服务架构-使用 Redis 实现数据缓存-MyB | |
+| | |
+| 53 实现微服务架构-使用 Solr 实现全文检索-Solr | |
+| 54 实现微服务架构-使用 Solr 实现全文检索-搜索引擎 | |
+| 55 实现微服务架构-使用 Solr 实现全文检索-基于 D | |
+| 56 实现微服务架构-使用 Solr 实现全文检索-Solr | |
+| 57 实现微服务架构-使用 Solr 实现全文检索-Spri | |
\ No newline at end of file
diff --git a/notes/DeepLearning/README.md b/notes/DeepLearning/README.md
index c4550737..4430ef94 100644
--- a/notes/DeepLearning/README.md
+++ b/notes/DeepLearning/README.md
@@ -1 +1,2 @@
-深度学习板块
\ No newline at end of file
+深度学习板块
+
diff --git a/notes/DeepLearning/assets/1*OvTgvr5SNAp579n9kyBzAw.png b/notes/DeepLearning/assets/1*OvTgvr5SNAp579n9kyBzAw.png
new file mode 100644
index 00000000..2a768b83
Binary files /dev/null and b/notes/DeepLearning/assets/1*OvTgvr5SNAp579n9kyBzAw.png differ
diff --git a/notes/DeepLearning/assets/1388465484-5b78f514b3a47.png b/notes/DeepLearning/assets/1388465484-5b78f514b3a47.png
new file mode 100644
index 00000000..920e64e6
Binary files /dev/null and b/notes/DeepLearning/assets/1388465484-5b78f514b3a47.png differ
diff --git a/notes/DeepLearning/assets/1404020359-5b79057c59609.png b/notes/DeepLearning/assets/1404020359-5b79057c59609.png
new file mode 100644
index 00000000..9a2c97cb
Binary files /dev/null and b/notes/DeepLearning/assets/1404020359-5b79057c59609.png differ
diff --git a/notes/DeepLearning/assets/1867956752-5b78fbe0b8f6b.png b/notes/DeepLearning/assets/1867956752-5b78fbe0b8f6b.png
new file mode 100644
index 00000000..76a89222
Binary files /dev/null and b/notes/DeepLearning/assets/1867956752-5b78fbe0b8f6b.png differ
diff --git a/notes/DeepLearning/assets/2112343587-5b78f2b533cd1.png b/notes/DeepLearning/assets/2112343587-5b78f2b533cd1.png
new file mode 100644
index 00000000..8f579002
Binary files /dev/null and b/notes/DeepLearning/assets/2112343587-5b78f2b533cd1.png differ
diff --git a/notes/DeepLearning/assets/2845056518-5b790706ce05b.png b/notes/DeepLearning/assets/2845056518-5b790706ce05b.png
new file mode 100644
index 00000000..a6b5c8cb
Binary files /dev/null and b/notes/DeepLearning/assets/2845056518-5b790706ce05b.png differ
diff --git a/notes/DeepLearning/assets/3893839953-5b78f3ea9066e.png b/notes/DeepLearning/assets/3893839953-5b78f3ea9066e.png
new file mode 100644
index 00000000..6406afed
Binary files /dev/null and b/notes/DeepLearning/assets/3893839953-5b78f3ea9066e.png differ
diff --git a/notes/DeepLearning/assets/5c723ebb0001776719201080.jpg b/notes/DeepLearning/assets/5c723ebb0001776719201080.jpg
new file mode 100644
index 00000000..9775f5cf
Binary files /dev/null and b/notes/DeepLearning/assets/5c723ebb0001776719201080.jpg differ
diff --git a/notes/DeepLearning/assets/640.jpeg b/notes/DeepLearning/assets/640.jpeg
new file mode 100644
index 00000000..e3159c96
Binary files /dev/null and b/notes/DeepLearning/assets/640.jpeg differ
diff --git a/notes/DeepLearning/assets/b248f2b9d659c18808a7b75d7537dea09a886564.jpg b/notes/DeepLearning/assets/b248f2b9d659c18808a7b75d7537dea09a886564.jpg
new file mode 100644
index 00000000..73ea5123
Binary files /dev/null and b/notes/DeepLearning/assets/b248f2b9d659c18808a7b75d7537dea09a886564.jpg differ
diff --git a/notes/DeepLearning/assets/gradient.png b/notes/DeepLearning/assets/gradient.png
new file mode 100644
index 00000000..6460baab
Binary files /dev/null and b/notes/DeepLearning/assets/gradient.png differ
diff --git a/notes/DeepLearning/assets/image-20190405103241674.png b/notes/DeepLearning/assets/image-20190405103241674.png
new file mode 100644
index 00000000..c4dbec2a
Binary files /dev/null and b/notes/DeepLearning/assets/image-20190405103241674.png differ
diff --git a/notes/DeepLearning/assets/image-20190405111251357.png b/notes/DeepLearning/assets/image-20190405111251357.png
new file mode 100644
index 00000000..a0fe82f6
Binary files /dev/null and b/notes/DeepLearning/assets/image-20190405111251357.png differ
diff --git a/notes/DeepLearning/assets/image-20190405111638911.png b/notes/DeepLearning/assets/image-20190405111638911.png
new file mode 100644
index 00000000..cc3a2d81
Binary files /dev/null and b/notes/DeepLearning/assets/image-20190405111638911.png differ
diff --git a/notes/DeepLearning/assets/image-20190405111736469.png b/notes/DeepLearning/assets/image-20190405111736469.png
new file mode 100644
index 00000000..1a5a5f1f
Binary files /dev/null and b/notes/DeepLearning/assets/image-20190405111736469.png differ
diff --git a/notes/DeepLearning/assets/image-20190405111848924.png b/notes/DeepLearning/assets/image-20190405111848924.png
new file mode 100644
index 00000000..18af1276
Binary files /dev/null and b/notes/DeepLearning/assets/image-20190405111848924.png differ
diff --git a/notes/DeepLearning/assets/image-20190405111934921.png b/notes/DeepLearning/assets/image-20190405111934921.png
new file mode 100644
index 00000000..2e69b775
Binary files /dev/null and b/notes/DeepLearning/assets/image-20190405111934921.png differ
diff --git a/notes/DeepLearning/assets/image_1_0_0.jpg b/notes/DeepLearning/assets/image_1_0_0.jpg
new file mode 100644
index 00000000..410892f4
Binary files /dev/null and b/notes/DeepLearning/assets/image_1_0_0.jpg differ
diff --git a/notes/DeepLearning/assets/neural-network-3.png b/notes/DeepLearning/assets/neural-network-3.png
new file mode 100644
index 00000000..bb4af819
Binary files /dev/null and b/notes/DeepLearning/assets/neural-network-3.png differ
diff --git a/notes/DeepLearning/assets/river-starrynight-combined.png b/notes/DeepLearning/assets/river-starrynight-combined.png
new file mode 100644
index 00000000..1a732eb6
Binary files /dev/null and b/notes/DeepLearning/assets/river-starrynight-combined.png differ
diff --git a/notes/DeepLearning/assets/v2-4bcf97eff1afd63aab37c95d751f270f_r.jpg b/notes/DeepLearning/assets/v2-4bcf97eff1afd63aab37c95d751f270f_r.jpg
new file mode 100644
index 00000000..57d8050e
Binary files /dev/null and b/notes/DeepLearning/assets/v2-4bcf97eff1afd63aab37c95d751f270f_r.jpg differ
diff --git a/notes/DeepLearning/assets/v2-718f95df083b2d715ee29b018d9eb5c2_1200x500.jpg b/notes/DeepLearning/assets/v2-718f95df083b2d715ee29b018d9eb5c2_1200x500.jpg
new file mode 100644
index 00000000..c2dfc49c
Binary files /dev/null and b/notes/DeepLearning/assets/v2-718f95df083b2d715ee29b018d9eb5c2_1200x500.jpg differ
diff --git "a/notes/DeepLearning/\346\267\261\345\272\246\345\255\246\344\271\240\345\205\245\351\227\250\350\257\276\347\250\213.md" "b/notes/DeepLearning/\346\267\261\345\272\246\345\255\246\344\271\240\345\205\245\351\227\250\350\257\276\347\250\213.md"
new file mode 100644
index 00000000..f27474c9
--- /dev/null
+++ "b/notes/DeepLearning/\346\267\261\345\272\246\345\255\246\344\271\240\345\205\245\351\227\250\350\257\276\347\250\213.md"
@@ -0,0 +1,17 @@
+## 入门课程
+
+> 简介:本课程首先介绍机器学习与深度学习,包括机器学习的应用、岗位职责,深度学习的等。然后通过讲解神经元及其衍生模型逻辑斯底回归、目标函数、梯度下降等深度学习基础知识。最后通过Tensorflow来实现课程讲解的模型。
+
+深度学习之神经网络入门最佳路径
+https://www.imooc.com/learn/1063
+
+
+
+深度学习-初识 - Corwien - SegmentFault 思否
+https://segmentfault.com/a/1190000016068053
+
+
+
+## 从入门到实战
+
+实战课已经上线:https://coding.imooc.com/class/259.html
\ No newline at end of file
diff --git "a/notes/DeepLearning/\346\267\261\345\272\246\345\255\246\344\271\240\345\210\235\350\257\206.md" "b/notes/DeepLearning/\346\267\261\345\272\246\345\255\246\344\271\240\345\210\235\350\257\206.md"
new file mode 100644
index 00000000..89d05b33
--- /dev/null
+++ "b/notes/DeepLearning/\346\267\261\345\272\246\345\255\246\344\271\240\345\210\235\350\257\206.md"
@@ -0,0 +1,252 @@
+
+
+- [深度学习初识](#深度学习初识)
+ - [一、入门基本概念](#一入门基本概念)
+ - [机器学习简介](#机器学习简介)
+ - [机器学习应用举例](#机器学习应用举例)
+ - [机器学习应用流程](#机器学习应用流程)
+ - [机器学习岗位职责](#机器学习岗位职责)
+ - [深度学习简介](#深度学习简介)
+ - [深度学习与机器学习关系](#深度学习与机器学习关系)
+ - [深度学习算法集合](#深度学习算法集合)
+ - [深度学习进展](#深度学习进展)
+ - [二、神经网络](#二神经网络)
+ - [人体神经元模型](#人体神经元模型)
+ - [人工神经网络](#人工神经网络)
+ - [1. 神经元](#1-神经元)
+ - [2. 逻辑回归模型](#2-逻辑回归模型)
+ - [目标函数](#目标函数)
+ - [梯度下降](#梯度下降)
+ - [三、Tensorflow基础](#三tensorflow基础)
+ - [Tensorflow简介](#tensorflow简介)
+ - [计算图模型](#计算图模型)
+ - [TensorFlow 安装](#tensorflow-安装)
+ - [参考资料](#参考资料)
+
+
+
+# 深度学习初识
+
+## 一、入门基本概念
+
+### 机器学习简介
+
+**机器学习**:无序数据转化为价值的方法
+**机器学习价值**:从数据中抽取规律,并预测未来
+
+
+
+#### 机器学习应用举例
+
+- 分类问题:图像识别、垃圾邮件识别
+- 回归问题:股价预测、房价预测
+- 排序问题:点击率预估、推荐
+- 生成问题:图像生成、图像风格转换、图像文字描述生成
+
+
+
+#### 机器学习应用流程
+
+![image-20190405103241674](assets/image-20190405103241674.png)
+
+
+
+#### 机器学习岗位职责
+
+- 数据处理(采集+去噪)
+- 模型训练(特征+模型)
+- 模型评估与优化(MSE、F1-score、AUC+调参)
+- 模型应用(A/B测试)
+
+
+
+### 深度学习简介
+
+![img](assets/b248f2b9d659c18808a7b75d7537dea09a886564.jpg)
+
+人工智能、机器学习、深度学习之间的关系
+
+```
+人工智能(AI)> 机器学习(Machine Learning)> 深度学习(Deep learning)
+```
+
+
+
+#### 深度学习与机器学习关系
+
+- 机器学习是实现人工智能的方法
+- 深度学习是实现机器学习算法的技术
+
+
+
+#### 深度学习算法集合
+
+- **卷积神经网络**(Convolutional Neural Network, CNN)
+ - CV 领域使用较多
+- **循环神经网络**(Recurrent Neural Networks,RNNs)
+ - NLP 领域使用较多
+ - 处理不定长数据
+- 自动编码器
+- 稀疏编码
+- 深度信念网络
+- 深度学习 + 强化学习 = **深度强化学习**
+ - AlphaGo
+ - AlphaZero
+
+
+
+#### 深度学习进展
+
+1. 图像分类
+
+ImageNet: http://image-net.org/
+
+![v2-718f95df083b2d715ee29b018d9eb5c2_1200x500](assets/v2-718f95df083b2d715ee29b018d9eb5c2_1200x500.jpg)
+
+
+
+2. 机器翻译
+
+![机器翻译](assets/640.jpeg)
+
+3. 图像生成
+
+![image_1_0_0](assets/image_1_0_0.jpg)
+
+![v2-4bcf97eff1afd63aab37c95d751f270f_r](assets/v2-4bcf97eff1afd63aab37c95d751f270f_r.jpg)
+
+![river-starrynight-combined](assets/river-starrynight-combined.png)
+
+- [Implementing Neural Artistic Style Transfer | L2Program](http://l2program.co.uk/945/implementing-neural-artistic-style-transfer)
+
+4. 字体生成
+
+5. AlphaGo
+
+
+
+## 二、神经网络
+
+### 人体神经元模型
+
+神经网络模型是模仿人类的大脑神经构造而构造的。先来看人体神经元模型。
+
+![img](assets/neural-network-3.png)
+
+神经元的可以分为四个区域:
+
+- 接收区(receptive zone):树突接收到输入信息。
+- 触发区(trigger zone):位于轴突和细胞体交接的地方,决定是否产生神经冲动。
+- 传导区(conducting zone):由轴突进行神经冲动的传递。
+- 输出区(output zone):神经冲动的目的就是要让神经末梢,突触的神经递质或电力释出,才能影响下一个接受的细胞(神经元、肌肉细胞或是腺体细胞),此称为突触传递。
+
+
+
+### 人工神经网络
+
+人工神经网络(ANN:Artificial Neural Network),简称神经网络(NN:Neural Network)。迄今为止,人工神经网络尚无统一定义, 其实一种模拟了人体神经元构成的数学模型,依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
+
+![img](assets/1*OvTgvr5SNAp579n9kyBzAw.png)
+
+上图显示了人工神经网络是一个分层模型,逻辑上可以分为三层:
+
+- 输入层:输入层接收特征向量 x 。
+- 输出层:输出层产出最终的预测 h 。
+- 隐含层:隐含层介于输入层与输出层之间,之所以称之为隐含层,是因为当中产生的值并不像输入层使用的样本矩阵 X 或者输出层用到的标签矩阵 y 那样直接可见。
+
+
+
+
+
+### 1. 神经元
+
+![img](assets/2112343587-5b78f2b533cd1.png)
+
+![img](assets/3893839953-5b78f3ea9066e.png)
+
+
+
+![image-20190405111251357](assets/image-20190405111251357.png)
+
+
+
+### 2. 逻辑回归模型
+
+```
+神经元 -> 激活函数sigmoid -> 二元类逻辑斯蒂回归模型
+```
+
+![img](assets/1388465484-5b78f514b3a47.png)
+
+
+
+神经元 -> 多输出
+
+- W从向量扩展为矩阵
+- 输出W*x则变成向量
+
+![img](https://image-static.segmentfault.com/342/024/3420244370-5b78f5943f6bc)
+
+
+
+多输出神经元 -> softmax -> 多分类逻辑斯蒂回归模型
+
+![image-20190405111638911](assets/image-20190405111638911.png)
+
+![image-20190405111848924](assets/image-20190405111848924.png)
+
+![image-20190405111934921](assets/image-20190405111934921.png)
+
+### 目标函数
+
+也称为损失函数,衡量对数据的拟合程度
+
+
+
+### 梯度下降
+
+- 下山算法
+ - 找方向
+ - 走一步
+
+- 梯度下降算法
+
+![img](assets/gradient.png)
+
+## 三、Tensorflow基础
+
+### Tensorflow简介
+
+Google Brain 第二代机器学习框架
+
+
+
+### 计算图模型
+
+- 命令式变成
+- 声明式变成
+
+![img](assets/1867956752-5b78fbe0b8f6b.png)
+
+
+
+## TensorFlow 安装
+
+- [TensorFlow 官方文档](https://tensorflow.google.cn/)
+
+- [TensorFlow 安装方法](https://tensorflow.google.cn/install)
+
+
+
+1. 基于 VirtualEnv 的安装
+2. 原生 pip
+3. Docker
+4. 从源代码安装
+
+
+
+## 参考资料
+
+- [机器学习入门(五) -- 神经网络](https://waltyou.github.io/Neural-Network/#%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E5%AE%9A%E4%B9%89)
+
+- [深度学习-初识 - Corwien - SegmentFault 思否](https://segmentfault.com/a/1190000016068053)
\ No newline at end of file
diff --git a/notes/Docker.md b/notes/Docker.md
index e23e01ce..1fa12ee6 100644
--- a/notes/Docker.md
+++ b/notes/Docker.md
@@ -75,7 +75,10 @@
Docker 容器化引擎,更详细请转向:[Docker_Tutorial: Docker 容器化引擎入门手册](https://github.com/frank-lam/Docker_Tutorial)
-> 本文内容均来自:【千锋-李卫民老师博客,推荐大家学习】http://www.funtl.com/
+> 参考资料:
+>
+> - http://www.funtl.com/
+> - [Docker —— 从入门到实践](https://yeasy.gitbooks.io/docker_practice/content/)
>
> 基于以上部分内容做一定的修改
diff --git "a/notes/Docker\345\237\272\347\241\200.md" "b/notes/Docker\345\237\272\347\241\200.md"
index 39a0368a..c68941a9 100644
--- "a/notes/Docker\345\237\272\347\241\200.md"
+++ "b/notes/Docker\345\237\272\347\241\200.md"
@@ -35,6 +35,9 @@
本文部分内容引用来自:【千锋-李卫民老师博客,推荐大家学习】http://www.funtl.com/
+A simple, interactive and fun playground to learn Docker:[Play with Docker](https://labs.play-with-docker.com/)
+
+
## 初探 Docker
### 什么是 Docker
@@ -172,6 +175,11 @@ vim /var/log/docker
+在 Ubuntu 16.04 LTS 上 离线安装 Docker / Docker-compose - TonyZhang24 - 博客园
+https://www.cnblogs.com/atuotuo/p/9272368.html
+
+
+
## Docker 镜像加速器
1. 加速器服务
@@ -222,6 +230,8 @@ Redirecting to /bin/systemctl start docker.service
- -p:端口映射
- --name:是给容器起一个名字,可省略,省略的话 docker 会随机产生一个名字
+- --restart:always
+
### 3. 启动的容器列表
```shell
@@ -375,6 +385,8 @@ Docker-Compose 是一个部署多个容器的简单但是非常必要的工具.
+
+
# 四、Docker 实战
## 实战1:快速搭建 MySQL
diff --git "a/notes/Docker\345\256\236\346\210\230.md" "b/notes/Docker\345\256\236\346\210\230.md"
new file mode 100644
index 00000000..14899089
--- /dev/null
+++ "b/notes/Docker\345\256\236\346\210\230.md"
@@ -0,0 +1,63 @@
+# Docker实战系列
+
+## Docker搭建自己的Gitlab CI Runner
+
+> 这里主要将采用 docker 镜像方式安装
+>
+
+1. 拉取gitlab-runner镜像
+
+```
+docker pull gitlab/gitlab-runner:latest
+```
+
+2. 添加 gitlab-runner container
+
+```
+sudo docker run -d --name gitlab-runner --restart always \
+ -v /srv/gitlab-runner/config:/etc/gitlab-runner \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ gitlab/gitlab-runner:latest
+
+ sudo docker run -d --restart always \
+ -v /srv/gitlab-runner/config:/etc/gitlab-runner \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ gitlab/gitlab-runner:latest
+```
+
+3. 注册runner
+
+```
+sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
+```
+
+4. 注册
+
+```shell
+sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
+```
+
+
+
+
+
+
+
+sudo docker run -d --name gitlab-runner --restart always \
+ -v /srv/gitlab-runner/config:/etc/gitlab-runner \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ gitlab/gitlab-runner:latest
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Docker搭建自己的Gitlab CI Runner - 哎_小羊的博客 - CSDN博客](https://blog.csdn.net/aixiaoyang168/article/details/72168834)
diff --git a/notes/FastDFS.md b/notes/FastDFS.md
new file mode 100644
index 00000000..6b3b6968
--- /dev/null
+++ b/notes/FastDFS.md
@@ -0,0 +1,9 @@
+# FastDFS
+
+手把手教你搭建分布式文件存储系统
+
+
+
+用FastDFS一步步搭建文件管理系统 - bojiangzhou - 博客园
+https://www.cnblogs.com/chiangchou/p/fastdfs.html
+
diff --git "a/notes/Frontend/\345\211\215\347\253\257\347\237\245\350\257\206\344\275\223\347\263\273.md" "b/notes/Frontend/\345\211\215\347\253\257\347\237\245\350\257\206\344\275\223\347\263\273.md"
new file mode 100644
index 00000000..7c155a20
--- /dev/null
+++ "b/notes/Frontend/\345\211\215\347\253\257\347\237\245\350\257\206\344\275\223\347\263\273.md"
@@ -0,0 +1,234 @@
+
+
+- [前端知识体系](#前端知识体系)
+ - [前端三要素](#前端三要素)
+ - [结构层(HTML)](#结构层html)
+ - [表现层(CSS)](#表现层css)
+ - [什么是 CSS 预处理器](#什么是-css-预处理器)
+ - [常用的 CSS 预处理器有哪些](#常用的-css-预处理器有哪些)
+ - [行为层(JavaScript)](#行为层javascript)
+ - [Native 原生 JS 开发](#native-原生-js-开发)
+ - [TypeScript 微软的标准](#typescript-微软的标准)
+ - [JavaScript 框架](#javascript-框架)
+ - [UI 框架](#ui-框架)
+ - [JavaScript 构建工具](#javascript-构建工具)
+ - [三端统一](#三端统一)
+ - [混合开发(Hybrid App)](#混合开发hybrid-app)
+ - [微信小程序](#微信小程序)
+ - [后端技术](#后端技术)
+ - [附:当前主流前端框架](#附当前主流前端框架)
+ - [Vue.js](#vuejs)
+ - [iView](#iview)
+ - [ElementUI](#elementui)
+ - [ICE](#ice)
+ - [VantUI](#vantui)
+ - [AtUI](#atui)
+ - [CubeUI](#cubeui)
+ - [混合开发](#混合开发)
+ - [Flutter](#flutter)
+ - [Ionic](#ionic)
+ - [微信小程序](#微信小程序-1)
+ - [mpvue](#mpvue)
+ - [WeUI](#weui)
+
+
+# 前端知识体系
+
+## 前端三要素
+
+- HTML(结构):超文本标记语言(Hyper Text Markup Language),决定网页的结构和内容
+- CSS(表现):层叠样式表(Cascading Style Sheets),设定网页的表现样式
+- JavaScript(行为):是一种弱类型脚本语言,其源代码不需经过编译,而是由浏览器解释运行,用于控制网页的行为
+
+
+
+### 结构层(HTML)
+
+略
+
+
+
+### 表现层(CSS)
+
+CSS 层叠样式表是一门标记语言,并不是编程语言,因此不可以自定义变量,不可以引用等,换句话说就是不具备任何语法支持,它主要缺陷如下:
+
+- 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
+- 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护;
+
+这就导致了我们在工作中无端增加了许多工作量。为了解决这个问题,前端开发人员会使用一种称之为 **【CSS 预处理器】** 的工具,提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了前端在样式上的开发效率。
+
+
+
+#### 什么是 CSS 预处理器
+
+CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行 CSS 的编码工作。转化成通俗易懂的话来说就是“**用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用**”。
+
+
+
+#### 常用的 CSS 预处理器有哪些
+
+- SASS:基于 Ruby,通过服务端处理,功能强大。解析效率高。需要学习 Ruby 语言,上手难度高于 LESS。
+- LESS:基于 NodeJS,通过客户端处理,使用简单。功能比 SASS 简单,解析效率也低于 SASS,但在实际开发中足够了,所以我们后台人员如果需要的话,建议使用 LESS。
+
+### 行为层(JavaScript)
+
+JavaScript 一门弱类型脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。
+
+#### Native 原生 JS 开发
+
+原生 JS 开发,也就是让我们按照 **【ECMAScript】** 标准的开发方式,简称是 ES,特点是所有浏览器都支持。截止到当前博客发布时间(2018 年 12 月 04 日),ES 标准已发布如下版本:
+
+- ES3
+- ES4(内部,未正式发布)
+- ES5(全浏览器支持)
+- ES6(常用,当前主流版本)
+- ES7
+- ES8
+- ES9(草案阶段)
+
+区别就是逐步增加新特性。
+
+#### TypeScript 微软的标准
+
+TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。由安德斯·海尔斯伯格(C#、Delphi、TypeScript 之父;.NET 创立者)主导。
+
+该语言的特点就是除了具备 ES 的特性之外还纳入了许多不在标准范围内的新特性,所以会导致很多浏览器不能直接支持 TypeScript 语法,需要编译后(编译成 JS)才能被浏览器正确执行。
+
+#### JavaScript 框架
+
+- jQuery:大家熟知的 JavaScript 框架,优点是简化了 DOM 操作,缺点是 DOM 操作太频繁,影响前端性能;在前端眼里使用它仅仅是为了兼容 IE6、7、8;
+- Angular:Google 收购的前端框架,由一群 Java 程序员开发,其特点是将后台的 MVC 模式搬到了前端并增加了模块化开发的理念,与微软合作,采用 TypeScript 语法开发;对后台程序员友好,对前端程序员不太友好;最大的缺点是版本迭代不合理(如:1代 -> 2代,除了名字,基本就是两个东西;截止发表博客时已推出了 Angular6)
+- React:Facebook 出品,一款高性能的 JS 前端框架;特点是提出了新概念 **【虚拟 DOM】** 用于减少真实 DOM 操作,在内存中模拟 DOM 操作,有效的提升了前端渲染效率;缺点是使用复杂,因为需要额外学习一门 **【JSX】** 语言;
+- `Vue`:一款渐进式 JavaScript 框架,所谓渐进式就是逐步实现新特性的意思,如实现模块化开发、路由、状态管理等新特性。其特点是综合了 Angular(模块化) 和 React(虚拟 DOM) 的优点;
+- `Axios`:前端通信框架;因为 `Vue` 的边界很明确,就是为了处理 DOM,所以并不具备通信能力,此时就需要额外使用一个通信框架与服务器交互;当然也可以直接选择使用 jQuery 提供的 AJAX 通信功能;
+
+#### UI 框架
+
+- Ant-Design:阿里巴巴出品,基于 React 的 UI 框架
+- ElementUI:饿了么出品,基于 Vue 的 UI 框架
+- Bootstrap:Twitter 推出的一个用于前端开发的开源工具包
+- AmazeUI:又叫“妹子 UI”,一款 HTML5 跨屏前端框架
+
+#### JavaScript 构建工具
+
+- Babel:JS 编译工具,主要用于浏览器不支持的 ES 新特性,比如用于编译 TypeScript
+- WebPack:模块打包器,主要作用是打包、压缩、合并及按序加载
+
+**注:以上知识点已将 WebApp 开发所需技能全部梳理完毕**
+
+## 三端统一
+
+### 混合开发(Hybrid App)
+
+主要目的是实现一套代码三端统一(PC、Android、iOS)并能够调用到设备底层硬件(如:传感器、GPS、摄像头等),打包方式主要有以下两种:
+
+- 云打包:HBuild -> HBuildX,DCloud 出品;API Cloud
+- 本地打包: Cordova(前身是 PhoneGap)
+
+### 微信小程序
+
+详见微信官网,这里就是介绍一个方便微信小程序 UI 开发的框架:WeUI
+
+## 后端技术
+
+前端人员为了方便开发也需要掌握一定的后端技术,但我们 Java 后台人员知道后台知识体系极其庞大复杂,所以为了方便前端人员开发后台应用,就出现了 NodeJS 这样的技术。
+
+NodeJS 的作者已经声称放弃 NodeJS(说是架构做的不好再加上笨重的 node_modules,可能让作者不爽了吧),开始开发全新架构的 Deno
+
+既然是后台技术,那肯定也需要框架和项目管理工具,NodeJS 框架及项目管理工具如下:
+
+- Express:NodeJS 框架
+- Koa:Express 简化版
+- NPM:项目综合管理工具,类似于 Maven
+- YARN:NPM 的替代方案,类似于 Maven 和 Gradle 的关系
+
+## 附:当前主流前端框架
+
+### Vue.js
+
+#### iView
+
+iview 是一个强大的基于 Vue 的 UI 库,有很多实用的基础组件比 elementui 的组件更丰富,主要服务于 PC 界面的中后台产品。使用单文件的 Vue 组件化开发模式 基于 npm + webpack + babel 开发,支持 ES2015 高质量、功能丰富 友好的 API ,自由灵活地使用空间。
+
+- [官网地址](https://www.iviewui.com/)
+- [Github](https://github.com/TalkingData/iview-weapp)
+- [iview-admin](https://github.com/iview/iview-admin)
+
+**备注:属于前端主流框架,选型时可考虑使用,主要特点是移动端支持较多**
+
+#### ElementUI
+
+Element 是饿了么前端开源维护的 Vue UI 组件库,组件齐全,基本涵盖后台所需的所有组件,文档讲解详细,例子也很丰富。主要用于开发 PC 端的页面,是一个质量比较高的 Vue UI 组件库。
+
+- [官网地址](http://element-cn.eleme.io/#/zh-CN)
+- [Github](https://github.com/ElementUI/element-starter)
+- [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
+
+**备注:属于前端主流框架,选型时可考虑使用,主要特点是桌面端支持较多**
+
+#### ICE
+
+飞冰是阿里巴巴团队基于 React/Angular/Vue 的中后台应用解决方案,在阿里巴巴内部,已经有 270 多个来自几乎所有 BU 的项目在使用。飞冰包含了一条从设计端到开发端的完整链路,帮助用户快速搭建属于自己的中后台应用。
+
+- [官网地址](https://alibaba.github.io/ice)
+- [Github](https://github.com/alibaba/ice)
+
+**备注:主要组件还是以 React 为主,截止 2019 年 02 月 17 日更新博客前对 Vue 的支持还不太完善,目前尚处于观望阶段**
+
+#### VantUI
+
+Vant UI 是有赞前端团队基于有赞统一的规范实现的 Vue 组件库,提供了一整套 UI 基础组件和业务组件。通过 Vant,可以快速搭建出风格统一的页面,提升开发效率。
+
+- [官网地址](https://youzan.github.io/vant/#/zh-CN/intro)
+- [Github](https://github.com/youzan/vant)
+
+#### AtUI
+
+at-ui 是一款基于 Vue 2.x 的前端 UI 组件库,主要用于快速开发 PC 网站产品。 它提供了一套 npm + webpack + babel 前端开发工作流程,CSS 样式独立,即使采用不同的框架实现都能保持统一的 UI 风格。
+
+- [官网地址](https://at-ui.github.io/at-ui/#/zh)
+- [Github](https://github.com/at-ui/at-ui)
+
+#### CubeUI
+
+cube-ui 是滴滴团队开发的基于 Vue.js 实现的精致移动端组件库。支持按需引入和后编译,轻量灵活;扩展性强,可以方便地基于现有组件实现二次开发。
+
+- [官网地址](https://didi.github.io/cube-ui/#/zh-CN)
+- [Github](https://github.com/didi/cube-ui/)
+
+### 混合开发
+
+#### Flutter
+
+Flutter 是谷歌的移动端 UI 框架,可在极短的时间内构建 Android 和 iOS 上高质量的原生级应用。Flutter 可与现有代码一起工作, 它被世界各地的开发者和组织使用, 并且 Flutter 是免费和开源的。
+
+- [官网地址](http://doc.flutter-dev.cn/)
+- [Github](https://github.com/flutter/flutter)
+
+**备注:Google 出品,主要特点是快速构建原生 APP 应用程序,如做混合应用该框架为必选框架**
+
+#### Ionic
+
+Ionic 既是一个 CSS 框架也是一个 Javascript UI 库,Ionic 是目前最有潜力的一款 HTML5 手机应用开发框架。通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用。它使用 JavaScript MVVM 框架和 AngularJS/Vue 来增强应用。提供数据的双向绑定,使用它成为 Web 和移动开发者的共同选择。
+
+- [官网地址](https://ionicframework.com/)
+- [官网文档](https://ionicframework.com/docs/)
+- [Github](https://github.com/ionic-team/ionic)
+
+### 微信小程序
+
+#### mpvue
+
+mpvue 是美团开发的一个使用 `Vue.js` 开发小程序的前端框架,目前支持 **微信小程序**、**百度智能小程序**,**头条小程序** 和 **支付宝小程序**。 框架基于 `Vue.js`,修改了的运行时框架 `runtime` 和代码编译器 `compiler` 实现,使其可运行在小程序环境中,从而为小程序开发引入了 `Vue.js` 开发体验。
+
+- [官网地址](http://mpvue.com/)
+- [Github](https://github.com/Meituan-Dianping/mpvue)
+
+**备注:完备的 Vue 开发体验,并且支持多平台的小程序开发,推荐使用**
+
+#### WeUI
+
+WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。包含 button、cell、dialog、toast、article、icon 等各式元素。
+
+- [官网地址](https://weui.io/)
+- [Github](https://github.com/weui/weui.git)
\ No newline at end of file
diff --git a/notes/Git.md b/notes/Git.md
index d550b1f9..e187b143 100644
--- a/notes/Git.md
+++ b/notes/Git.md
@@ -328,4 +328,150 @@ $ git pull
- [Git - 储藏与清理](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%E4%B8%8E%E6%B8%85%E7%90%86)
-- [git stash详解 - stone_yw的博客 - CSDN博客](https://blog.csdn.net/stone_yw/article/details/80795669)
\ No newline at end of file
+- [git stash详解 - stone_yw的博客 - CSDN博客](https://blog.csdn.net/stone_yw/article/details/80795669)
+
+
+
+## 3. SSH 连接配置
+
+### 1. 生成密钥对
+
+大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。首先你要确认一下本机是否已经有一个公钥。
+
+SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:
+
+```shell
+$ cd ~/.ssh
+$ ls
+authorized_keys2 id_dsa known_hosts config id_dsa.pub
+```
+
+看一下有没有id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有 .pub 后缀的文件就是公钥,另一个文件则是密钥。
+
+假如没有这些文件,甚至连 .ssh 目录都没有,可以用 ssh-keygen 来创建。该程序在 Linux/Mac 系统上由 SSH 包提供,而在 Windows 上则包含在 MSysGit 包里:
+
+```shell
+$ ssh-keygen -t rsa -C "your_email@youremail.com"
+
+Creates a new ssh key using the provided email # Generating public/private rsa key pair.
+
+Enter file in which to save the key (/home/you/.ssh/id_rsa):
+```
+
+直接按Enter就行。然后,会提示你输入密码,如下(建议输一个,安全一点,当然不输也行,应该不会有人闲的无聊冒充你去修改你的代码):
+
+```shell
+Enter same passphrase again: [Type passphrase again]
+```
+
+完了之后,大概是这样:
+
+```shell
+Your public key has been saved in /home/you/.ssh/id_rsa.pub.
+The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@youremail.com
+```
+
+到此为止,你本地的密钥对就生成了。
+
+
+(9+条消息)Mac OS 配置多个ssh-key - maoxinwen1的博客 - CSDN博客
+https://blog.csdn.net/maoxinwen1/article/details/80269299
+
+
+### 2. 添加公钥到你的远程仓库(github)
+
+1. 查看你生成的公钥:
+
+```
+$ cat ~/.ssh/id_rsa.pub
+
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0X6L1zLL4VHuvGb8aJH3ippTozmReSUzgntvk434aJ/v7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8vR3c8E7CjZN733f5AL8uEYJA+YZevY5UCvEg+umT7PHghKYaJwaCxV7sjYP7Z6V79OMCEAGDNXC26IBMdMgOluQjp6o6j2KAdtRBdCDS/QIU5THQDxJ9lBXjk1fiq9tITo/aXBvjZeD+gH/Apkh/0GbO8VQLiYYmNfqqAHHeXdltORn8N7C9lOa/UW3KM7QdXo6J0GFlBVQeTE/IGqhMS5PMln3 admin@admin-PC
+```
+
+2. 登陆你的 GitHub 帐户。点击你的头像,然后 `Settings -> 左栏点击 SSH and GPG keys -> 点击 New SSH key`
+
+3. 然后你复制上面的公钥内容,粘贴进“Key”文本域内。 title域,自己随便起个名字。
+
+4. 点击 Add key。
+
+完成以后,验证下这个key是不是正常工作:
+
+```shell
+$ ssh -T git@github.com
+
+Attempts to ssh to github
+```
+
+如果,看到:
+
+```
+Hi xxx! You've successfully authenticated, but GitHub does not # provide shell access.
+```
+
+恭喜你,你的设置已经成功了。
+
+### 3. 修改git的remote url
+
+ 使用命令 git remote -v 查看你当前的 remote url
+
+```shell
+$ git remote -v
+origin https://github.com/someaccount/someproject.git (fetch)
+origin https://github.com/someaccount/someproject.git (push)
+```
+
+如果是以上的结果那么说明此项目是使用https协议进行访问的(如果地址是git开头则表示是git协议)
+
+你可以登陆你的github,就像本文开头的图例,你在上面可以看到你的ssh协议相应的url,类似:
+
+ ![img](assets/1160195-20170512120555144-795931549.png)
+
+复制此ssh链接,然后使用命令 git remote set-url 来调整你的url。
+
+```shell
+$ git remote set-url origin git@github.com:someaccount/someproject.git
+```
+
+然后你可以再用命令 git remote -v 查看一下,url是否已经变成了ssh地址。
+
+然后你就可以愉快的使用 git fetch, git pull , git push,再也不用输入烦人的密码了
+
+
+
+
+
+### 4. 常见问题
+
+- [Git 提交大文件提示 fatal: The remote end hung up unexpectedly - WNFK - 博客园](https://www.cnblogs.com/hanxianlong/p/3464224.html)
+
+
+
+## 4. Git 记住密码
+
+- [Git Pull 避免用户名和密码方法 - 王信平 - 博客园](https://www.cnblogs.com/wangshuo1/p/5531200.html)
+
+
+
+## 5. Git FTP 使用
+
+利用Git版本管理将只修改过的文件上传到FTP服务器 支持SFTP协议 - 吕滔博客
+https://lvtao.net/tool/gitftp.html
+
+
+
+## 6. Git 删除文件如何提交
+
+
+
+## 7. Git 中的 origin 是什么意思
+
+git学习:关于origin和master - mashiqi - 博客园
+https://www.cnblogs.com/mashiqi/p/6002671.html
+
+
+
+Git 里面的 origin 到底代表啥意思? - Not Only DBA. - CSDN博客
+https://blog.csdn.net/u011478909/article/details/77683754
+
+
+
diff --git "a/notes/Git\345\221\275\344\273\244\351\200\237\346\237\245.md" "b/notes/Git\345\221\275\344\273\244\351\200\237\346\237\245.md"
new file mode 100644
index 00000000..eddac09b
--- /dev/null
+++ "b/notes/Git\345\221\275\344\273\244\351\200\237\346\237\245.md"
@@ -0,0 +1,437 @@
+# Git 命令速查
+
+> 本文参考极客时间苏玲老师的《玩转Git三剑客》
+
+
+
+## 添加配置
+```bash
+git config [--local | --global | --system] user.name 'Your name'
+git config [--local | --global | --system] user.email 'Your email'
+```
+
+
+
+
+
+## 查看配置
+
+```bash
+git config --list [--local | --global | --system]
+```
+### 区别
+```bash
+local:区域为本仓库
+global: 当前用户的所有仓库
+system: 本系统的所有用户
+```
+
+
+## `git add .` 和 `git add -u`区别
+
+```bash
+git add . :将工作空间新增和被修改的文件添加的暂存区
+git add -u :将工作空间被修改和被删除的文件添加到暂存区(不包含没有纳入Git管理的新增文件)
+```
+
+
+
+## 创建仓库
+
+```bash
+git init [project folder name] 初始化 git 仓库
+git add [fileName] 把文件从工作目录添加到暂存区
+git commit -m'some information' 用于提交暂存区的文件
+git commit -am'Some information' 用于提交跟踪过的文件
+git log 查看历史
+git status 查看状态
+```
+
+**额外**
+git add -u 可以添加所有已经被 git 控制的文件到暂存区
+以前删除文件夹只会用 「-rf」,今天学到了 「-r」,并得知它们两个区别:「-r」 有时候会提示是否确认删除。
+
+
+
+## 给文件重命名的简便方法
+
+```bash
+git mv [old file name] [new file name]
+git commit -m 'some information'
+```
+
+
+
+## 通过`git log`查看版本演变历史
+
+```bash
+git log --all 查看所有分支的历史
+git log --all --graph 查看图形化的 log 地址
+git log --oneline 查看单行的简洁历史。
+git log --oneline -n4 查看最近的4条简洁历史。
+git log --oneline --all -n4 --graph 查看所有分支最近4条单行的图形化历史。
+git help --web log 跳转到git log 的帮助文档网页
+```
+
+```bash
+git branch -v 查看本地有多少分支
+```
+
+
+
+## 通过图形界面工具来查看版本历史
+
+```bash
+gitk
+```
+
+
+
+## 探密`.git`目录
+
+查看`.git`文件夹下的内容:
+```bash
+ls .git/ -al
+```
+如下:
+```shell
+drwxr-xr-x 1 Andy 197609 0 12月 17 22:38 ./
+drwxr-xr-x 1 Andy 197609 0 12月 17 21:50 ../
+-rw-r--r-- 1 Andy 197609 7 12月 17 22:38 COMMIT_EDITMSG
+-rw-r--r-- 1 Andy 197609 301 12月 12 22:55 config
+-rw-r--r-- 1 Andy 197609 73 12月 12 22:55 description
+-rw-r--r-- 1 Andy 197609 96 12月 19 00:00 FETCH_HEAD
+-rw-r--r-- 1 Andy 197609 23 12月 12 22:55 HEAD
+drwxr-xr-x 1 Andy 197609 0 12月 12 22:55 hooks/
+-rw-r--r-- 1 Andy 197609 249 12月 17 22:38 index
+drwxr-xr-x 1 Andy 197609 0 12月 12 22:55 info/
+drwxr-xr-x 1 Andy 197609 0 12月 12 22:55 logs/
+drwxr-xr-x 1 Andy 197609 0 12月 17 22:38 objects/
+-rw-r--r-- 1 Andy 197609 114 12月 12 22:55 packed-refs
+drwxr-xr-x 1 Andy 197609 0 12月 12 22:55 refs/
+```
+
+```bash
+cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。
+cat HEAD 查看HEAD文件的内容
+git cat-file 命令 显示版本库对象的内容、类型及大小信息。
+git cat-file -t b44dd71d62a5a8ed3 显示版本库对象的类型
+git cat-file -s b44dd71d62a5a8ed3 显示版本库对象的大小
+git cat-file -p b44dd71d62a5a8ed3 显示版本库对象的内容
+```
+
+`.git`里几个常用的如下:
+```bash
+HEAD:指向当前的工作路径
+config:存放本地仓库(local)相关的配置信息。
+refs/heads: 存放分支
+refs/heads/master/: 指向master分支最后一次commit
+refs/tags: 存放tag,又叫里程牌 (当这次commit是具有里程碑意义的 比如项目1.0的时候 就可以打tag)
+objects:核心文件,存储文件
+```
+.git/objects/ 存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看。
+
+## `commit`、`tree`和`blob`三个对象之间的关系
+![tree](./images/img1.jpg)
+
+```bash
+commit: 提交时的镜像
+tree: 文件夹
+blob: 文件
+```
+
+**【同学问题】** 每次commit,git 都会将当前项目的所有文件夹及文件快照保存到objects目录,如果项目文件比较大,不断迭代,commit无数次后,objects目录中文件大小是不是会变得无限大?
+**【老师解答】** Git对于内容相同的文件只会存一个blob,不同的commit的区别是commit、tree和有差异的blob,多数未变更的文件对应的blob都是相同的,这么设计对于版本管理系统来说可以省很多存储空间。其次,Git还有增量存储的机制,我估计是对于差异很小的blob设计的吧。
+
+
+
+## `分离头指针`情况下的注意事项
+
+detached HEAD
+
+
+
+## 进一步理解`HEAD`和`branch`
+
+```bash
+git checkout -b new_branch [具体分支 或 commit] 创建新分支并切换到新分支
+git diff HEAD HEAD~1 比较最近两次提交
+git diff HEAD HEAD~2 比较最近和倒数第三次提交
+git diff HEAD HEAD^ 比较最近两次提交
+git diff HEAD HEAD^^ 比较最近和倒数第三次提交
+```
+
+
+
+## 怎么删除不需要的分支?
+
+查看分支:
+```bash
+git branch -av
+```
+删除分支命令:
+```bash
+git branch -d [branch name] 删除
+git branch -D [branch name] 强制删除
+```
+
+
+
+## 怎么修改最新 commit 的 message?
+
+```bash
+git commit --amend 对最近一次的commit信息进行修改
+```
+
+
+
+## 怎么修改老旧 commit 的 message?
+
+```bash
+git rebase -i [要更改的commit的上一级commit]
+```
+接下来就是一个交互过程...
+这期间会产生一个detached HEAD,然后将改好的commit指向该detached HEAD,如下图所示:
+![rebase](./images/img2.jpg)
+
+**git rebase工作的过程中,就是用了分离头指针。rebase意味着基于新base的commit来变更部分commits。它处理的时候,把HEAD指向base的commit,此时如果该commit没有对应branch,就处于分离头指针的状态,然后重新一个一个生成新的commit,当rebase创建完最后一个commit后,结束分离头状态,Git让变完基的分支名指向HEAD。**
+
+
+
+## 怎样把连续的多个commit整理成1个?
+
+```bash
+git rebase -i [要更改的commit的上一级commit]
+```
+```bash
+$ git log --graph
+* commit 7d3386842a2168ae630b65f687364243139c893c (HEAD -> master, origin/master, origin/HEAD)
+| Author: aimuch
+| Date: Thu Dec 20 23:34:18 2018 +0800
+|
+| update
+|
+* commit 9eb3188bbc63cae1bfed5f9dfc1593019e360a6a
+| Author: aimuch
+| Date: Wed Dec 19 20:30:14 2018 +0800
+|
+| update
+|
+* commit bbe6d53e2b477f2d2aa402af7f315ecdfc63459e
+| Author: aimuch
+| Date: Wed Dec 19 20:12:29 2018 +0800
+|
+| update
+|
+* commit 7735d66ded7f98adeca93d96fb7be12ffb67c76a
+| Author: aimuch
+| Date: Wed Dec 19 00:27:00 2018 +0800
+|
+| update
+|
+* commit d9f9d115fab425b5654f8ccfec6a996aef35b76b
+| Author: aimuch
+| Date: Wed Dec 19 00:23:36 2018 +0800
+|
+| update
+
+```
+```bash
+pick 7735d66 update #合并到该commit上
+squash bbe6d53 update
+squash 9eb3188 update
+squash 7d33868 update
+# Rebase d9f9d11..7d33868 onto d9f9d11 (4 commands)
+#
+# Commands:
+# p, pick = use commit
+# r, reword = use commit, but edit the commit message
+# e, edit = use commit, but stop for amending
+# s, squash = use commit, but meld into previous commit
+# f, fixup = like "squash", but discard this commit's log message
+# x, exec = run command (the rest of the line) using shell
+# b, break = stop here (continue rebase later with 'git rebase --continue')
+# d, drop = remove commit
+# l, label