diff --git a/.DS_Store b/.DS_Store index fa7ad81..ec5624e 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/运维/云/.DS_Store b/云服务/.DS_Store similarity index 100% rename from 运维/云/.DS_Store rename to 云服务/.DS_Store diff --git a/开发/前端/AJAX/AJAX文档/AJAX-day01.pdf b/前端/AJAX/AJAX文档/AJAX-day01.pdf similarity index 100% rename from 开发/前端/AJAX/AJAX文档/AJAX-day01.pdf rename to 前端/AJAX/AJAX文档/AJAX-day01.pdf diff --git a/开发/前端/AJAX/AJAX文档/AJAX-day02.pdf b/前端/AJAX/AJAX文档/AJAX-day02.pdf similarity index 100% rename from 开发/前端/AJAX/AJAX文档/AJAX-day02.pdf rename to 前端/AJAX/AJAX文档/AJAX-day02.pdf diff --git a/开发/前端/AJAX/AJAX文档/AJAX-day03.pdf b/前端/AJAX/AJAX文档/AJAX-day03.pdf similarity index 100% rename from 开发/前端/AJAX/AJAX文档/AJAX-day03.pdf rename to 前端/AJAX/AJAX文档/AJAX-day03.pdf diff --git a/开发/前端/AJAX/AJAX文档/AJAX-day04.pdf b/前端/AJAX/AJAX文档/AJAX-day04.pdf similarity index 100% rename from 开发/前端/AJAX/AJAX文档/AJAX-day04.pdf rename to 前端/AJAX/AJAX文档/AJAX-day04.pdf diff --git a/开发/前端/AJAX手册.md b/前端/AJAX手册.md similarity index 100% rename from 开发/前端/AJAX手册.md rename to 前端/AJAX手册.md diff --git a/开发/前端/Git/Git文档/Git&黑马就业数据平台-Day01.pdf b/前端/Git/Git文档/Git&黑马就业数据平台-Day01.pdf similarity index 100% rename from 开发/前端/Git/Git文档/Git&黑马就业数据平台-Day01.pdf rename to 前端/Git/Git文档/Git&黑马就业数据平台-Day01.pdf diff --git a/开发/前端/Git/Git文档/Git&黑马就业数据平台-Day02.pdf b/前端/Git/Git文档/Git&黑马就业数据平台-Day02.pdf similarity index 100% rename from 开发/前端/Git/Git文档/Git&黑马就业数据平台-Day02.pdf rename to 前端/Git/Git文档/Git&黑马就业数据平台-Day02.pdf diff --git a/开发/前端/Git/Git文档/Git&黑马就业数据平台-Day03.pdf b/前端/Git/Git文档/Git&黑马就业数据平台-Day03.pdf similarity index 100% rename from 开发/前端/Git/Git文档/Git&黑马就业数据平台-Day03.pdf rename to 前端/Git/Git文档/Git&黑马就业数据平台-Day03.pdf diff --git a/开发/前端/Git/Git文档/Git&黑马就业数据平台-Day04.pdf b/前端/Git/Git文档/Git&黑马就业数据平台-Day04.pdf similarity index 100% rename from 开发/前端/Git/Git文档/Git&黑马就业数据平台-Day04.pdf rename to 前端/Git/Git文档/Git&黑马就业数据平台-Day04.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day01.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day01.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day01.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day01.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day02.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day02.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day02.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day02.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day03.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day03.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day03.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day03.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day04.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day04.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day04.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day04.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day05.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day05.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day05.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day05.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day06.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day06.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day06.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day06.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day07.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day07.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day07.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day07.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day08.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day08.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day08.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day08.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day09.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day09.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day09.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day09.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day10.pdf b/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day10.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/HTML+CSS day10.pdf rename to 前端/HTMLCSS/HTMLCSS文档/HTML+CSS day10.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day01.pdf b/前端/HTMLCSS/HTMLCSS文档/移动Web-day01.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day01.pdf rename to 前端/HTMLCSS/HTMLCSS文档/移动Web-day01.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day02.pdf b/前端/HTMLCSS/HTMLCSS文档/移动Web-day02.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day02.pdf rename to 前端/HTMLCSS/HTMLCSS文档/移动Web-day02.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day03.pdf b/前端/HTMLCSS/HTMLCSS文档/移动Web-day03.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day03.pdf rename to 前端/HTMLCSS/HTMLCSS文档/移动Web-day03.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day04.pdf b/前端/HTMLCSS/HTMLCSS文档/移动Web-day04.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day04.pdf rename to 前端/HTMLCSS/HTMLCSS文档/移动Web-day04.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day05.pdf b/前端/HTMLCSS/HTMLCSS文档/移动Web-day05.pdf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS文档/移动Web-day05.pdf rename to 前端/HTMLCSS/HTMLCSS文档/移动Web-day05.pdf diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/base.css b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/base.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/base.css rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/base.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/index.css b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/index.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/index.css rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/css/index.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/logo.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/logo.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/logo.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/logo.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/more.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/more.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/more.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/more.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right-hover.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right-hover.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right-hover.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right-hover.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/right.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/search.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/search.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/search.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/images/search.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/index.html b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/index.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/index.html rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/index.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/banner.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/banner.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/banner.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/banner.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course01.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course01.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course01.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course01.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course02.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course02.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course02.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course02.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course03.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course03.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course03.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course03.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course04.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course04.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course04.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course04.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course05.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course05.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course05.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course05.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course06.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course06.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course06.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course06.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course07.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course07.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course07.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course07.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course08.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course08.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course08.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course08.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course09.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course09.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course09.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course09.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course10.png b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course10.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course10.png rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/course10.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/微信图片_20240716025920.jpg b/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/微信图片_20240716025920.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/微信图片_20240716025920.jpg rename to 前端/HTMLCSS/HTMLCSS练习/学成在线练习/uploads/微信图片_20240716025920.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/base.css b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/base.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/base.css rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/base.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/common.css b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/common.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/common.css rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/common.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/index.css b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/index.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/index.css rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/css/index.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/favicon.ico b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/favicon.ico similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/favicon.ico rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/favicon.ico diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo.css b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo.css rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo_index.html b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo_index.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo_index.html rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/demo_index.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.css b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.css similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.css rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.css diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.js b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.js similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.js rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.js diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.json b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.json similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.json rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.json diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.ttf b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.ttf similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.ttf rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.ttf diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff2 b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff2 similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff2 rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/iconfont/iconfont.woff2 diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/app.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/app.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/app.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/app.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/logo.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/logo.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/logo.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/logo.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/sprite.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/sprite.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/sprite.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/sprite.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/wechat.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/wechat.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/wechat.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/images/wechat.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/index.html b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/index.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/index.html rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/index.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/banner1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/banner1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/banner1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/banner1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes5.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes5.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes5.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes5.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes6.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes6.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes6.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes6.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes7.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes7.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes7.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes7.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes8.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes8.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes8.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/clothes8.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/colthes_left.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/colthes_left.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/colthes_left.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/colthes_left.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh5.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh5.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh5.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh5.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh6.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh6.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh6.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh6.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh7.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh7.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh7.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh7.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh8.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh8.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh8.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh8.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh_left.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh_left.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh_left.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/fresh_left.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/goods4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home5.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home5.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home5.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home5.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home6.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home6.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home6.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home6.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home7.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home7.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home7.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home7.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home8.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home8.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home8.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home8.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home_left.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home_left.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home_left.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/home_left.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot5.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot5.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot5.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/hot5.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen5.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen5.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen5.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen5.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen6.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen6.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen6.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen6.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen7.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen7.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen7.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen7.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen8.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen8.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen8.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen8.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen_left.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen_left.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen_left.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/kitchen_left.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend4.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend4.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend4.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/recommend4.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic1.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic1.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic1.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic1.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic2.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic2.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic2.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic2.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic3.png b/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic3.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic3.png rename to 前端/HTMLCSS/HTMLCSS练习/小兔鲜练习/uploads/topic3.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.svg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.svg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.svg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/1.svg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.svg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.svg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.svg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/2.svg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.svg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.svg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.svg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/3.svg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.svg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.svg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.svg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/4.svg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner1.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner1.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner1.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner1.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner2.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner2.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner2.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner2.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner3.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner3.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner3.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/banner3.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/bk.png b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/bk.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/bk.png rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/bk.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/img.gif b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/img.gif similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/img.gif rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/img.gif diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/liveSDK.svg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/liveSDK.svg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/liveSDK.svg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/liveSDK.svg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/photo.jpg b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/photo.jpg similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/photo.jpg rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/photo.jpg diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/square.png b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/square.png similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/square.png rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/square.png diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/vue.mp4 b/前端/HTMLCSS/HTMLCSS练习/综合案例/images/vue.mp4 similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/images/vue.mp4 rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/images/vue.mp4 diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例1-个人简介.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例1-个人简介.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例1-个人简介.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例1-个人简介.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例10-产品卡片.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例10-产品卡片.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例10-产品卡片.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例10-产品卡片.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例11-新闻列表.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例11-新闻列表.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例11-新闻列表.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例11-新闻列表.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例12-抖音解决方案.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例12-抖音解决方案.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例12-抖音解决方案.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例12-抖音解决方案.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例13-过渡.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例13-过渡.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例13-过渡.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例13-过渡.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例14-轮播图.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例14-轮播图.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例14-轮播图.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例14-轮播图.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例15-双开门.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例15-双开门.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例15-双开门.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例15-双开门.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例16-时钟.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例16-时钟.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例16-时钟.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例16-时钟.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例2-Vue简介.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例2-Vue简介.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例2-Vue简介.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例2-Vue简介.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例3-新闻列表.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例3-新闻列表.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例3-新闻列表.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例3-新闻列表.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例4-注册信息.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例4-注册信息.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例4-注册信息.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例4-注册信息.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例5-新闻详情.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例5-新闻详情.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例5-新闻详情.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例5-新闻详情.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例6-CSS简介.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例6-CSS简介.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例6-CSS简介.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例6-CSS简介.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例7-热词.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例7-热词.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例7-热词.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例7-热词.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例8-banner效果.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例8-banner效果.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例8-banner效果.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例8-banner效果.html diff --git a/开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例9-结构伪类选择器.html b/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例9-结构伪类选择器.html similarity index 100% rename from 开发/前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例9-结构伪类选择器.html rename to 前端/HTMLCSS/HTMLCSS练习/综合案例/综合案例9-结构伪类选择器.html diff --git a/开发/前端/HTML手册.md b/前端/HTML手册.md similarity index 100% rename from 开发/前端/HTML手册.md rename to 前端/HTML手册.md diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript01-基础第一天.pdf b/前端/JavaScript/JavaScript文档/JavaScript01-基础第一天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript01-基础第一天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript01-基础第一天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript02-基础第二天.pdf b/前端/JavaScript/JavaScript文档/JavaScript02-基础第二天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript02-基础第二天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript02-基础第二天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript03-基础第三天.pdf b/前端/JavaScript/JavaScript文档/JavaScript03-基础第三天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript03-基础第三天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript03-基础第三天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript04-基础第四天.pdf b/前端/JavaScript/JavaScript文档/JavaScript04-基础第四天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript04-基础第四天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript04-基础第四天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript05-基础第五天.pdf b/前端/JavaScript/JavaScript文档/JavaScript05-基础第五天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript05-基础第五天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript05-基础第五天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript06-web APIs 第一天.pdf b/前端/JavaScript/JavaScript文档/JavaScript06-web APIs 第一天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript06-web APIs 第一天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript06-web APIs 第一天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript07-web APIs 第二天.pdf b/前端/JavaScript/JavaScript文档/JavaScript07-web APIs 第二天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript07-web APIs 第二天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript07-web APIs 第二天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript08-web APIs 第三天.pdf b/前端/JavaScript/JavaScript文档/JavaScript08-web APIs 第三天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript08-web APIs 第三天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript08-web APIs 第三天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript09-web APIs 第四天.pdf b/前端/JavaScript/JavaScript文档/JavaScript09-web APIs 第四天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript09-web APIs 第四天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript09-web APIs 第四天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript10-web APIs 第五天.pdf b/前端/JavaScript/JavaScript文档/JavaScript10-web APIs 第五天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript10-web APIs 第五天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript10-web APIs 第五天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript11-web APIs 第六天.pdf b/前端/JavaScript/JavaScript文档/JavaScript11-web APIs 第六天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript11-web APIs 第六天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript11-web APIs 第六天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript12-进阶第一天.pdf b/前端/JavaScript/JavaScript文档/JavaScript12-进阶第一天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript12-进阶第一天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript12-进阶第一天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript13-进阶第二天.pdf b/前端/JavaScript/JavaScript文档/JavaScript13-进阶第二天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript13-进阶第二天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript13-进阶第二天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript14-进阶第三天.pdf b/前端/JavaScript/JavaScript文档/JavaScript14-进阶第三天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript14-进阶第三天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript14-进阶第三天.pdf diff --git a/开发/前端/JavaScript/JavaScript文档/JavaScript15-进阶第四天.pdf b/前端/JavaScript/JavaScript文档/JavaScript15-进阶第四天.pdf similarity index 100% rename from 开发/前端/JavaScript/JavaScript文档/JavaScript15-进阶第四天.pdf rename to 前端/JavaScript/JavaScript文档/JavaScript15-进阶第四天.pdf diff --git a/开发/前端/JavaScript/JavaScript练习/综合案例1-订单详情.html b/前端/JavaScript/JavaScript练习/综合案例1-订单详情.html similarity index 100% rename from 开发/前端/JavaScript/JavaScript练习/综合案例1-订单详情.html rename to 前端/JavaScript/JavaScript练习/综合案例1-订单详情.html diff --git a/开发/前端/JavaScript/JavaScript练习/综合案例2-数组求最大值.html b/前端/JavaScript/JavaScript练习/综合案例2-数组求最大值.html similarity index 100% rename from 开发/前端/JavaScript/JavaScript练习/综合案例2-数组求最大值.html rename to 前端/JavaScript/JavaScript练习/综合案例2-数组求最大值.html diff --git a/开发/前端/JavaScript/JavaScript练习/综合案例3-销售额生成柱形图.html b/前端/JavaScript/JavaScript练习/综合案例3-销售额生成柱形图.html similarity index 100% rename from 开发/前端/JavaScript/JavaScript练习/综合案例3-销售额生成柱形图.html rename to 前端/JavaScript/JavaScript练习/综合案例3-销售额生成柱形图.html diff --git a/开发/前端/JavaScript/JavaScript练习/综合案例4-获取当前时间.html b/前端/JavaScript/JavaScript练习/综合案例4-获取当前时间.html similarity index 100% rename from 开发/前端/JavaScript/JavaScript练习/综合案例4-获取当前时间.html rename to 前端/JavaScript/JavaScript练习/综合案例4-获取当前时间.html diff --git a/开发/前端/JavaScript手册.md b/前端/JavaScript手册.md similarity index 100% rename from 开发/前端/JavaScript手册.md rename to 前端/JavaScript手册.md diff --git a/开发/前端/Node.js.md b/前端/Node.js.md similarity index 100% rename from 开发/前端/Node.js.md rename to 前端/Node.js.md diff --git a/开发/前端/Node.js/Node.js文档/Day01_Node.js入门.pdf b/前端/Node.js/Node.js文档/Day01_Node.js入门.pdf similarity index 100% rename from 开发/前端/Node.js/Node.js文档/Day01_Node.js入门.pdf rename to 前端/Node.js/Node.js文档/Day01_Node.js入门.pdf diff --git a/开发/前端/Node.js/Node.js文档/Day02_Node.js模块化.pdf b/前端/Node.js/Node.js文档/Day02_Node.js模块化.pdf similarity index 100% rename from 开发/前端/Node.js/Node.js文档/Day02_Node.js模块化.pdf rename to 前端/Node.js/Node.js文档/Day02_Node.js模块化.pdf diff --git a/开发/前端/React/React文档/React day01.pdf b/前端/React/React文档/React day01.pdf similarity index 100% rename from 开发/前端/React/React文档/React day01.pdf rename to 前端/React/React文档/React day01.pdf diff --git a/开发/前端/React/React文档/React day02.pdf b/前端/React/React文档/React day02.pdf similarity index 100% rename from 开发/前端/React/React文档/React day02.pdf rename to 前端/React/React文档/React day02.pdf diff --git a/开发/前端/React/React文档/React-day03.pdf b/前端/React/React文档/React-day03.pdf similarity index 100% rename from 开发/前端/React/React文档/React-day03.pdf rename to 前端/React/React文档/React-day03.pdf diff --git a/开发/前端/React/React文档/React-day04.pdf b/前端/React/React文档/React-day04.pdf similarity index 100% rename from 开发/前端/React/React文档/React-day04.pdf rename to 前端/React/React文档/React-day04.pdf diff --git a/开发/前端/React/React文档/记账本项目.pdf b/前端/React/React文档/记账本项目.pdf similarity index 100% rename from 开发/前端/React/React文档/记账本项目.pdf rename to 前端/React/React文档/记账本项目.pdf diff --git a/开发/前端/React手册.md b/前端/React手册.md similarity index 100% rename from 开发/前端/React手册.md rename to 前端/React手册.md diff --git a/开发/前端/VUE/VUE3/02.Pinia入门.pdf b/前端/VUE/VUE3/02.Pinia入门.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/02.Pinia入门.pdf rename to 前端/VUE/VUE3/02.Pinia入门.pdf diff --git a/开发/前端/VUE/VUE3/da01.pdf b/前端/VUE/VUE3/da01.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/da01.pdf rename to 前端/VUE/VUE3/da01.pdf diff --git a/开发/前端/VUE/VUE3/day02.pdf b/前端/VUE/VUE3/day02.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day02.pdf rename to 前端/VUE/VUE3/day02.pdf diff --git a/开发/前端/VUE/VUE3/day03.pdf b/前端/VUE/VUE3/day03.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day03.pdf rename to 前端/VUE/VUE3/day03.pdf diff --git a/开发/前端/VUE/VUE3/day04.pdf b/前端/VUE/VUE3/day04.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day04.pdf rename to 前端/VUE/VUE3/day04.pdf diff --git a/开发/前端/VUE/VUE3/day05.pdf b/前端/VUE/VUE3/day05.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day05.pdf rename to 前端/VUE/VUE3/day05.pdf diff --git a/开发/前端/VUE/VUE3/day06.pdf b/前端/VUE/VUE3/day06.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day06.pdf rename to 前端/VUE/VUE3/day06.pdf diff --git a/开发/前端/VUE/VUE3/day07.pdf b/前端/VUE/VUE3/day07.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day07.pdf rename to 前端/VUE/VUE3/day07.pdf diff --git a/开发/前端/VUE/VUE3/day08.pdf b/前端/VUE/VUE3/day08.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day08.pdf rename to 前端/VUE/VUE3/day08.pdf diff --git a/开发/前端/VUE/VUE3/day09.pdf b/前端/VUE/VUE3/day09.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day09.pdf rename to 前端/VUE/VUE3/day09.pdf diff --git a/开发/前端/VUE/VUE3/day10.pdf b/前端/VUE/VUE3/day10.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day10.pdf rename to 前端/VUE/VUE3/day10.pdf diff --git a/开发/前端/VUE/VUE3/day11.pdf b/前端/VUE/VUE3/day11.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day11.pdf rename to 前端/VUE/VUE3/day11.pdf diff --git a/开发/前端/VUE/VUE3/day12.pdf b/前端/VUE/VUE3/day12.pdf similarity index 100% rename from 开发/前端/VUE/VUE3/day12.pdf rename to 前端/VUE/VUE3/day12.pdf diff --git a/开发/前端/VUE/VUE文档/day01-快速上手+插值表达式+指令上.pdf b/前端/VUE/VUE文档/day01-快速上手+插值表达式+指令上.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day01-快速上手+插值表达式+指令上.pdf rename to 前端/VUE/VUE文档/day01-快速上手+插值表达式+指令上.pdf diff --git a/开发/前端/VUE/VUE文档/day02-指令下+计算属性+侦听器.pdf b/前端/VUE/VUE文档/day02-指令下+计算属性+侦听器.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day02-指令下+计算属性+侦听器.pdf rename to 前端/VUE/VUE文档/day02-指令下+计算属性+侦听器.pdf diff --git a/开发/前端/VUE/VUE文档/day03-生命周期+工程化开发(组件入门).pdf b/前端/VUE/VUE文档/day03-生命周期+工程化开发(组件入门).pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day03-生命周期+工程化开发(组件入门).pdf rename to 前端/VUE/VUE文档/day03-生命周期+工程化开发(组件入门).pdf diff --git a/开发/前端/VUE/VUE文档/day04-组件通信&进阶用法.pdf b/前端/VUE/VUE文档/day04-组件通信&进阶用法.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day04-组件通信&进阶用法.pdf rename to 前端/VUE/VUE文档/day04-组件通信&进阶用法.pdf diff --git a/开发/前端/VUE/VUE文档/day05-自定义指令&插槽&路由入门.pdf b/前端/VUE/VUE文档/day05-自定义指令&插槽&路由入门.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day05-自定义指令&插槽&路由入门.pdf rename to 前端/VUE/VUE文档/day05-自定义指令&插槽&路由入门.pdf diff --git a/开发/前端/VUE/VUE文档/day06-路由进阶.pdf b/前端/VUE/VUE文档/day06-路由进阶.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day06-路由进阶.pdf rename to 前端/VUE/VUE文档/day06-路由进阶.pdf diff --git a/开发/前端/VUE/VUE文档/day07&day08-面经移动端.pdf b/前端/VUE/VUE文档/day07&day08-面经移动端.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day07&day08-面经移动端.pdf rename to 前端/VUE/VUE文档/day07&day08-面经移动端.pdf diff --git a/开发/前端/VUE/VUE文档/day09-Vuex的基本使用.pdf b/前端/VUE/VUE文档/day09-Vuex的基本使用.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day09-Vuex的基本使用.pdf rename to 前端/VUE/VUE文档/day09-Vuex的基本使用.pdf diff --git a/开发/前端/VUE/VUE文档/day10&day11-面经PC端.pdf b/前端/VUE/VUE文档/day10&day11-面经PC端.pdf similarity index 100% rename from 开发/前端/VUE/VUE文档/day10&day11-面经PC端.pdf rename to 前端/VUE/VUE文档/day10&day11-面经PC端.pdf diff --git a/开发/前端/VUE/VUE练习/随手练/index.html b/前端/VUE/VUE练习/随手练/index.html similarity index 100% rename from 开发/前端/VUE/VUE练习/随手练/index.html rename to 前端/VUE/VUE练习/随手练/index.html diff --git a/开发/前端/Vue手册.md b/前端/Vue手册.md similarity index 100% rename from 开发/前端/Vue手册.md rename to 前端/Vue手册.md diff --git a/开发/前端/Webpack/Webpack文档/Webpack模块打包工具.pdf b/前端/Webpack/Webpack文档/Webpack模块打包工具.pdf similarity index 100% rename from 开发/前端/Webpack/Webpack文档/Webpack模块打包工具.pdf rename to 前端/Webpack/Webpack文档/Webpack模块打包工具.pdf diff --git a/开发/前端/微信小程序/微信小程序第1天.pdf b/前端/微信小程序/微信小程序第1天.pdf similarity index 100% rename from 开发/前端/微信小程序/微信小程序第1天.pdf rename to 前端/微信小程序/微信小程序第1天.pdf diff --git a/开发/前端/微信小程序/微信小程序第2天.pdf b/前端/微信小程序/微信小程序第2天.pdf similarity index 100% rename from 开发/前端/微信小程序/微信小程序第2天.pdf rename to 前端/微信小程序/微信小程序第2天.pdf diff --git a/开发/前端/微信小程序/微信小程序第3天.pdf b/前端/微信小程序/微信小程序第3天.pdf similarity index 100% rename from 开发/前端/微信小程序/微信小程序第3天.pdf rename to 前端/微信小程序/微信小程序第3天.pdf diff --git a/开发/后端/.DS_Store b/后端/.DS_Store similarity index 100% rename from 开发/后端/.DS_Store rename to 后端/.DS_Store diff --git a/开发/后端/Go/.DS_Store b/后端/Go/.DS_Store similarity index 100% rename from 开发/后端/Go/.DS_Store rename to 后端/Go/.DS_Store diff --git a/开发/后端/Go/书籍/Go语言实战 .pdf b/后端/Go/书籍/Go语言实战 .pdf similarity index 100% rename from 开发/后端/Go/书籍/Go语言实战 .pdf rename to 后端/Go/书籍/Go语言实战 .pdf diff --git a/开发/后端/Go/书籍/go语言趣学指南.pdf b/后端/Go/书籍/go语言趣学指南.pdf similarity index 100% rename from 开发/后端/Go/书籍/go语言趣学指南.pdf rename to 后端/Go/书籍/go语言趣学指南.pdf diff --git a/开发/后端/Go/课程/.DS_Store b/后端/Go/课程/.DS_Store similarity index 100% rename from 开发/后端/Go/课程/.DS_Store rename to 后端/Go/课程/.DS_Store diff --git a/开发/后端/Go/课程/马哥/01-01序言.pdf b/后端/Go/课程/马哥/01-01序言.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/01-01序言.pdf rename to 后端/Go/课程/马哥/01-01序言.pdf diff --git a/开发/后端/Go/课程/马哥/01-02计算机基础.pdf b/后端/Go/课程/马哥/01-02计算机基础.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/01-02计算机基础.pdf rename to 后端/Go/课程/马哥/01-02计算机基础.pdf diff --git a/开发/后端/Go/课程/马哥/01-03语言基础.pdf b/后端/Go/课程/马哥/01-03语言基础.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/01-03语言基础.pdf rename to 后端/Go/课程/马哥/01-03语言基础.pdf diff --git a/开发/后端/Go/课程/马哥/01-04分支和循环.pdf b/后端/Go/课程/马哥/01-04分支和循环.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/01-04分支和循环.pdf rename to 后端/Go/课程/马哥/01-04分支和循环.pdf diff --git a/开发/后端/Go/课程/马哥/02-01线性表.pdf b/后端/Go/课程/马哥/02-01线性表.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/02-01线性表.pdf rename to 后端/Go/课程/马哥/02-01线性表.pdf diff --git a/开发/后端/Go/课程/马哥/02-02字符串.pdf b/后端/Go/课程/马哥/02-02字符串.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/02-02字符串.pdf rename to 后端/Go/课程/马哥/02-02字符串.pdf diff --git a/开发/后端/Go/课程/马哥/02-03哈希表.pdf b/后端/Go/课程/马哥/02-03哈希表.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/02-03哈希表.pdf rename to 后端/Go/课程/马哥/02-03哈希表.pdf diff --git a/开发/后端/Go/课程/马哥/03-01函数定义参数及作用域.pdf b/后端/Go/课程/马哥/03-01函数定义参数及作用域.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/03-01函数定义参数及作用域.pdf rename to 后端/Go/课程/马哥/03-01函数定义参数及作用域.pdf diff --git a/开发/后端/Go/课程/马哥/03-02递归匿名函数和闭包.pdf b/后端/Go/课程/马哥/03-02递归匿名函数和闭包.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/03-02递归匿名函数和闭包.pdf rename to 后端/Go/课程/马哥/03-02递归匿名函数和闭包.pdf diff --git a/开发/后端/Go/课程/马哥/03-03defer.pdf b/后端/Go/课程/马哥/03-03defer.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/03-03defer.pdf rename to 后端/Go/课程/马哥/03-03defer.pdf diff --git a/开发/后端/Go/课程/马哥/04-01结构体.pdf b/后端/Go/课程/马哥/04-01结构体.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/04-01结构体.pdf rename to 后端/Go/课程/马哥/04-01结构体.pdf diff --git a/开发/后端/Go/课程/马哥/04-02接口.pdf b/后端/Go/课程/马哥/04-02接口.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/04-02接口.pdf rename to 后端/Go/课程/马哥/04-02接口.pdf diff --git a/开发/后端/Go/课程/马哥/04-03错误处理.pdf b/后端/Go/课程/马哥/04-03错误处理.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/04-03错误处理.pdf rename to 后端/Go/课程/马哥/04-03错误处理.pdf diff --git a/开发/后端/Go/课程/马哥/04-04面向对象和泛型.pdf b/后端/Go/课程/马哥/04-04面向对象和泛型.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/04-04面向对象和泛型.pdf rename to 后端/Go/课程/马哥/04-04面向对象和泛型.pdf diff --git a/开发/后端/Go/课程/马哥/05-01时间.pdf b/后端/Go/课程/马哥/05-01时间.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/05-01时间.pdf rename to 后端/Go/课程/马哥/05-01时间.pdf diff --git a/开发/后端/Go/课程/马哥/05-02文件IO.pdf b/后端/Go/课程/马哥/05-02文件IO.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/05-02文件IO.pdf rename to 后端/Go/课程/马哥/05-02文件IO.pdf diff --git a/开发/后端/Go/课程/马哥/05-02文件IO_v1.pdf b/后端/Go/课程/马哥/05-02文件IO_v1.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/05-02文件IO_v1.pdf rename to 后端/Go/课程/马哥/05-02文件IO_v1.pdf diff --git a/开发/后端/Go/课程/马哥/05-03序列化.pdf b/后端/Go/课程/马哥/05-03序列化.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/05-03序列化.pdf rename to 后端/Go/课程/马哥/05-03序列化.pdf diff --git a/开发/后端/Go/课程/马哥/05-04日志.pdf b/后端/Go/课程/马哥/05-04日志.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/05-04日志.pdf rename to 后端/Go/课程/马哥/05-04日志.pdf diff --git a/开发/后端/Go/课程/马哥/06-01包管理.pdf b/后端/Go/课程/马哥/06-01包管理.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/06-01包管理.pdf rename to 后端/Go/课程/马哥/06-01包管理.pdf diff --git a/开发/后端/Go/课程/马哥/06-02反射.pdf b/后端/Go/课程/马哥/06-02反射.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/06-02反射.pdf rename to 后端/Go/课程/马哥/06-02反射.pdf diff --git a/开发/后端/Go/课程/马哥/07-01加密解密.pdf b/后端/Go/课程/马哥/07-01加密解密.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/07-01加密解密.pdf rename to 后端/Go/课程/马哥/07-01加密解密.pdf diff --git a/开发/后端/Go/课程/马哥/08-01链接表和栈.pdf b/后端/Go/课程/马哥/08-01链接表和栈.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/08-01链接表和栈.pdf rename to 后端/Go/课程/马哥/08-01链接表和栈.pdf diff --git a/开发/后端/Go/课程/马哥/08-02树堆.pdf b/后端/Go/课程/马哥/08-02树堆.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/08-02树堆.pdf rename to 后端/Go/课程/马哥/08-02树堆.pdf diff --git a/开发/后端/Go/课程/马哥/09-00python环境.pdf b/后端/Go/课程/马哥/09-00python环境.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/09-00python环境.pdf rename to 后端/Go/课程/马哥/09-00python环境.pdf diff --git a/开发/后端/Go/课程/马哥/09-01进程线程.pdf b/后端/Go/课程/马哥/09-01进程线程.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/09-01进程线程.pdf rename to 后端/Go/课程/马哥/09-01进程线程.pdf diff --git a/开发/后端/Go/课程/马哥/09-02TCP编程.pdf b/后端/Go/课程/马哥/09-02TCP编程.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/09-02TCP编程.pdf rename to 后端/Go/课程/马哥/09-02TCP编程.pdf diff --git a/开发/后端/Go/课程/马哥/09-03IO模式.pdf b/后端/Go/课程/马哥/09-03IO模式.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/09-03IO模式.pdf rename to 后端/Go/课程/马哥/09-03IO模式.pdf diff --git a/开发/后端/Go/课程/马哥/09-04协程.pdf b/后端/Go/课程/马哥/09-04协程.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/09-04协程.pdf rename to 后端/Go/课程/马哥/09-04协程.pdf diff --git a/开发/后端/Go/课程/马哥/09-05通道.pdf b/后端/Go/课程/马哥/09-05通道.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/09-05通道.pdf rename to 后端/Go/课程/马哥/09-05通道.pdf diff --git a/开发/后端/Go/课程/马哥/10-01TCP编程.pdf b/后端/Go/课程/马哥/10-01TCP编程.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/10-01TCP编程.pdf rename to 后端/Go/课程/马哥/10-01TCP编程.pdf diff --git a/开发/后端/Go/课程/马哥/10-02UDP编程.pdf b/后端/Go/课程/马哥/10-02UDP编程.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/10-02UDP编程.pdf rename to 后端/Go/课程/马哥/10-02UDP编程.pdf diff --git a/开发/后端/Go/课程/马哥/10-03WebSocket.pdf b/后端/Go/课程/马哥/10-03WebSocket.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/10-03WebSocket.pdf rename to 后端/Go/课程/马哥/10-03WebSocket.pdf diff --git a/开发/后端/Go/课程/马哥/11-01关系模型.pdf b/后端/Go/课程/马哥/11-01关系模型.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/11-01关系模型.pdf rename to 后端/Go/课程/马哥/11-01关系模型.pdf diff --git a/开发/后端/Go/课程/马哥/11-02SQL语句.pdf b/后端/Go/课程/马哥/11-02SQL语句.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/11-02SQL语句.pdf rename to 后端/Go/课程/马哥/11-02SQL语句.pdf diff --git a/开发/后端/Go/课程/马哥/11-03数据库标准库开发.pdf b/后端/Go/课程/马哥/11-03数据库标准库开发.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/11-03数据库标准库开发.pdf rename to 后端/Go/课程/马哥/11-03数据库标准库开发.pdf diff --git a/开发/后端/Go/课程/马哥/11-04ORM.pdf b/后端/Go/课程/马哥/11-04ORM.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/11-04ORM.pdf rename to 后端/Go/课程/马哥/11-04ORM.pdf diff --git a/开发/后端/Go/课程/马哥/11-05MongoDB.pdf b/后端/Go/课程/马哥/11-05MongoDB.pdf similarity index 100% rename from 开发/后端/Go/课程/马哥/11-05MongoDB.pdf rename to 后端/Go/课程/马哥/11-05MongoDB.pdf diff --git a/开发/.DS_Store b/开发/.DS_Store deleted file mode 100644 index 580112a..0000000 Binary files a/开发/.DS_Store and /dev/null differ diff --git a/运维/.DS_Store b/运维/.DS_Store index 03aa542..87742f7 100644 Binary files a/运维/.DS_Store and b/运维/.DS_Store differ diff --git a/运维/操作系统/Linux/.DS_Store b/运维/Linux/.DS_Store similarity index 93% rename from 运维/操作系统/Linux/.DS_Store rename to 运维/Linux/.DS_Store index 69445c4..9c67819 100644 Binary files a/运维/操作系统/Linux/.DS_Store and b/运维/Linux/.DS_Store differ diff --git a/运维/操作系统/Linux/实操/.DS_Store b/运维/Linux/实操/.DS_Store similarity index 100% rename from 运维/操作系统/Linux/实操/.DS_Store rename to 运维/Linux/实操/.DS_Store diff --git a/运维/操作系统/Linux/实操/软raid实测.md b/运维/Linux/实操/软raid实测.md similarity index 100% rename from 运维/操作系统/Linux/实操/软raid实测.md rename to 运维/Linux/实操/软raid实测.md diff --git a/运维/操作系统/Linux/工具/1.fping 批量ICMP.md b/运维/Linux/工具/1.fping 批量ICMP.md similarity index 100% rename from 运维/操作系统/Linux/工具/1.fping 批量ICMP.md rename to 运维/Linux/工具/1.fping 批量ICMP.md diff --git a/运维/操作系统/Linux/工具/2.tcpdump抓包.md b/运维/Linux/工具/2.tcpdump抓包.md similarity index 100% rename from 运维/操作系统/Linux/工具/2.tcpdump抓包.md rename to 运维/Linux/工具/2.tcpdump抓包.md diff --git a/运维/操作系统/Linux/工具/3.dos2unix Linux和Windows格式互转.md b/运维/Linux/工具/3.dos2unix Linux和Windows格式互转.md similarity index 100% rename from 运维/操作系统/Linux/工具/3.dos2unix Linux和Windows格式互转.md rename to 运维/Linux/工具/3.dos2unix Linux和Windows格式互转.md diff --git a/运维/操作系统/Linux/工具/4.Linux Rsync断点续传.md b/运维/Linux/工具/4.Linux Rsync断点续传.md similarity index 100% rename from 运维/操作系统/Linux/工具/4.Linux Rsync断点续传.md rename to 运维/Linux/工具/4.Linux Rsync断点续传.md diff --git a/运维/操作系统/Linux/工具/5.nload查看实时网速.md b/运维/Linux/工具/5.nload查看实时网速.md similarity index 100% rename from 运维/操作系统/Linux/工具/5.nload查看实时网速.md rename to 运维/Linux/工具/5.nload查看实时网速.md diff --git a/运维/操作系统/Linux/工具/6.会话窗口解绑工具tmux.md b/运维/Linux/工具/6.会话窗口解绑工具tmux.md similarity index 100% rename from 运维/操作系统/Linux/工具/6.会话窗口解绑工具tmux.md rename to 运维/Linux/工具/6.会话窗口解绑工具tmux.md diff --git a/运维/操作系统/Linux/常用运维命令/1.找到未知进程的执行程序文件路径.md b/运维/Linux/常用运维命令/1.找到未知进程的执行程序文件路径.md similarity index 100% rename from 运维/操作系统/Linux/常用运维命令/1.找到未知进程的执行程序文件路径.md rename to 运维/Linux/常用运维命令/1.找到未知进程的执行程序文件路径.md diff --git a/运维/操作系统/Linux/常用运维命令/2.Linux命令行颜色突出显示.md b/运维/Linux/常用运维命令/2.Linux命令行颜色突出显示.md similarity index 100% rename from 运维/操作系统/Linux/常用运维命令/2.Linux命令行颜色突出显示.md rename to 运维/Linux/常用运维命令/2.Linux命令行颜色突出显示.md diff --git a/运维/操作系统/Linux/排障/ssh免密无法登录.md b/运维/Linux/排障/ssh免密无法登录.md similarity index 100% rename from 运维/操作系统/Linux/排障/ssh免密无法登录.md rename to 运维/Linux/排障/ssh免密无法登录.md diff --git a/运维/操作系统/Linux/文档/10网络协议和管理配置.pdf b/运维/Linux/文档/10网络协议和管理配置.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/10网络协议和管理配置.pdf rename to 运维/Linux/文档/10网络协议和管理配置.pdf diff --git a/运维/操作系统/Linux/文档/11进程和计划任务.pdf b/运维/Linux/文档/11进程和计划任务.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/11进程和计划任务.pdf rename to 运维/Linux/文档/11进程和计划任务.pdf diff --git a/运维/操作系统/Linux/文档/12Linux启动和内核管理.pdf b/运维/Linux/文档/12Linux启动和内核管理.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/12Linux启动和内核管理.pdf rename to 运维/Linux/文档/12Linux启动和内核管理.pdf diff --git a/运维/操作系统/Linux/文档/13加密和安全.pdf b/运维/Linux/文档/13加密和安全.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/13加密和安全.pdf rename to 运维/Linux/文档/13加密和安全.pdf diff --git a/运维/操作系统/Linux/文档/14域名系统DNS服务.pdf b/运维/Linux/文档/14域名系统DNS服务.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/14域名系统DNS服务.pdf rename to 运维/Linux/文档/14域名系统DNS服务.pdf diff --git a/运维/操作系统/Linux/文档/15Linux防火墙.pdf b/运维/Linux/文档/15Linux防火墙.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/15Linux防火墙.pdf rename to 运维/Linux/文档/15Linux防火墙.pdf diff --git a/运维/操作系统/Linux/文档/16MYSQL数据库.pdf b/运维/Linux/文档/16MYSQL数据库.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/16MYSQL数据库.pdf rename to 运维/Linux/文档/16MYSQL数据库.pdf diff --git a/运维/操作系统/Linux/文档/17企业级VPN服务OpenVPN.pdf b/运维/Linux/文档/17企业级VPN服务OpenVPN.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/17企业级VPN服务OpenVPN.pdf rename to 运维/Linux/文档/17企业级VPN服务OpenVPN.pdf diff --git a/运维/操作系统/Linux/文档/18PostgreSQL数据库.pdf b/运维/Linux/文档/18PostgreSQL数据库.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/18PostgreSQL数据库.pdf rename to 运维/Linux/文档/18PostgreSQL数据库.pdf diff --git a/运维/操作系统/Linux/文档/19日志服务管理.pdf b/运维/Linux/文档/19日志服务管理.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/19日志服务管理.pdf rename to 运维/Linux/文档/19日志服务管理.pdf diff --git a/运维/操作系统/Linux/文档/1计算机基础和Linux安装.pdf b/运维/Linux/文档/1计算机基础和Linux安装.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/1计算机基础和Linux安装.pdf rename to 运维/Linux/文档/1计算机基础和Linux安装.pdf diff --git a/运维/操作系统/Linux/文档/20网络文件共享服务.pdf b/运维/Linux/文档/20网络文件共享服务.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/20网络文件共享服务.pdf rename to 运维/Linux/文档/20网络文件共享服务.pdf diff --git a/运维/操作系统/Linux/文档/21企业级NoSQL数据库Redis.pdf b/运维/Linux/文档/21企业级NoSQL数据库Redis.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/21企业级NoSQL数据库Redis.pdf rename to 运维/Linux/文档/21企业级NoSQL数据库Redis.pdf diff --git a/运维/操作系统/Linux/文档/22企业级调度器LVS.pdf b/运维/Linux/文档/22企业级调度器LVS.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/22企业级调度器LVS.pdf rename to 运维/Linux/文档/22企业级调度器LVS.pdf diff --git a/运维/操作系统/Linux/文档/23企业级高性能WEB服务NGINX.pdf b/运维/Linux/文档/23企业级高性能WEB服务NGINX.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/23企业级高性能WEB服务NGINX.pdf rename to 运维/Linux/文档/23企业级高性能WEB服务NGINX.pdf diff --git a/运维/操作系统/Linux/文档/24.运维自动化工具 Ansible.pdf b/运维/Linux/文档/24.运维自动化工具 Ansible.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/24.运维自动化工具 Ansible.pdf rename to 运维/Linux/文档/24.运维自动化工具 Ansible.pdf diff --git a/运维/操作系统/Linux/文档/24企业级堡垒机JumpServer.pdf b/运维/Linux/文档/24企业级堡垒机JumpServer.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/24企业级堡垒机JumpServer.pdf rename to 运维/Linux/文档/24企业级堡垒机JumpServer.pdf diff --git a/运维/操作系统/Linux/文档/24运维自动化工具 Ansible.pdf b/运维/Linux/文档/24运维自动化工具 Ansible.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/24运维自动化工具 Ansible.pdf rename to 运维/Linux/文档/24运维自动化工具 Ansible.pdf diff --git a/运维/操作系统/Linux/文档/25企业级Web应用服务器TOMCAT.pdf b/运维/Linux/文档/25企业级Web应用服务器TOMCAT.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/25企业级Web应用服务器TOMCAT.pdf rename to 运维/Linux/文档/25企业级Web应用服务器TOMCAT.pdf diff --git a/运维/操作系统/Linux/文档/2Linux基础入门和帮助.pdf b/运维/Linux/文档/2Linux基础入门和帮助.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/2Linux基础入门和帮助.pdf rename to 运维/Linux/文档/2Linux基础入门和帮助.pdf diff --git a/运维/操作系统/Linux/文档/3Linux文件管理和IO重定向.pdf b/运维/Linux/文档/3Linux文件管理和IO重定向.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/3Linux文件管理和IO重定向.pdf rename to 运维/Linux/文档/3Linux文件管理和IO重定向.pdf diff --git a/运维/操作系统/Linux/文档/4Linux用户组和权限管理.pdf b/运维/Linux/文档/4Linux用户组和权限管理.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/4Linux用户组和权限管理.pdf rename to 运维/Linux/文档/4Linux用户组和权限管理.pdf diff --git a/运维/操作系统/Linux/文档/5文本处理工具和正则表达式.pdf b/运维/Linux/文档/5文本处理工具和正则表达式.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/5文本处理工具和正则表达式.pdf rename to 运维/Linux/文档/5文本处理工具和正则表达式.pdf diff --git a/运维/操作系统/Linux/文档/6文件查找和打包压缩.pdf b/运维/Linux/文档/6文件查找和打包压缩.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/6文件查找和打包压缩.pdf rename to 运维/Linux/文档/6文件查找和打包压缩.pdf diff --git a/运维/操作系统/Linux/文档/7shell脚本编程.pdf b/运维/Linux/文档/7shell脚本编程.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/7shell脚本编程.pdf rename to 运维/Linux/文档/7shell脚本编程.pdf diff --git a/运维/操作系统/Linux/文档/8磁盘存储和文件系统管理.pdf b/运维/Linux/文档/8磁盘存储和文件系统管理.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/8磁盘存储和文件系统管理.pdf rename to 运维/Linux/文档/8磁盘存储和文件系统管理.pdf diff --git a/运维/操作系统/Linux/文档/9软件管理.pdf b/运维/Linux/文档/9软件管理.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/9软件管理.pdf rename to 运维/Linux/文档/9软件管理.pdf diff --git a/运维/操作系统/Linux/文档/PDF密码:magedu2@22@321.txt b/运维/Linux/文档/PDF密码:magedu2@22@321.txt similarity index 100% rename from 运维/操作系统/Linux/文档/PDF密码:magedu2@22@321.txt rename to 运维/Linux/文档/PDF密码:magedu2@22@321.txt diff --git a/运维/操作系统/Linux/文档/Zabbix_上课文档.pdf b/运维/Linux/文档/Zabbix_上课文档.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/Zabbix_上课文档.pdf rename to 运维/Linux/文档/Zabbix_上课文档.pdf diff --git a/运维/操作系统/Linux/文档/redis命令参考手册.pdf b/运维/Linux/文档/redis命令参考手册.pdf similarity index 100% rename from 运维/操作系统/Linux/文档/redis命令参考手册.pdf rename to 运维/Linux/文档/redis命令参考手册.pdf diff --git a/运维/操作系统/Linux/文档/文件打开密码.txt b/运维/Linux/文档/文件打开密码.txt similarity index 100% rename from 运维/操作系统/Linux/文档/文件打开密码.txt rename to 运维/Linux/文档/文件打开密码.txt diff --git a/运维/操作系统/Linux/文档/文档打开密码:Magedu20211206.txt b/运维/Linux/文档/文档打开密码:Magedu20211206.txt similarity index 100% rename from 运维/操作系统/Linux/文档/文档打开密码:Magedu20211206.txt rename to 运维/Linux/文档/文档打开密码:Magedu20211206.txt diff --git a/运维/操作系统/Linux/笔记/1.操作系统进制及位数.md b/运维/Linux/笔记/1.操作系统进制及位数.md similarity index 100% rename from 运维/操作系统/Linux/笔记/1.操作系统进制及位数.md rename to 运维/Linux/笔记/1.操作系统进制及位数.md diff --git a/运维/操作系统/Linux/笔记/10.文本查看.md b/运维/Linux/笔记/10.文本查看.md similarity index 100% rename from 运维/操作系统/Linux/笔记/10.文本查看.md rename to 运维/Linux/笔记/10.文本查看.md diff --git a/运维/操作系统/Linux/笔记/11.文本分析.md b/运维/Linux/笔记/11.文本分析.md similarity index 100% rename from 运维/操作系统/Linux/笔记/11.文本分析.md rename to 运维/Linux/笔记/11.文本分析.md diff --git a/运维/操作系统/Linux/笔记/12.文本编辑-VIM.md b/运维/Linux/笔记/12.文本编辑-VIM.md similarity index 100% rename from 运维/操作系统/Linux/笔记/12.文本编辑-VIM.md rename to 运维/Linux/笔记/12.文本编辑-VIM.md diff --git a/运维/操作系统/Linux/笔记/13.文本权限.md b/运维/Linux/笔记/13.文本权限.md similarity index 100% rename from 运维/操作系统/Linux/笔记/13.文本权限.md rename to 运维/Linux/笔记/13.文本权限.md diff --git a/运维/操作系统/Linux/笔记/14.文本grep.md b/运维/Linux/笔记/14.文本grep.md similarity index 100% rename from 运维/操作系统/Linux/笔记/14.文本grep.md rename to 运维/Linux/笔记/14.文本grep.md diff --git a/运维/操作系统/Linux/笔记/15.文本sed.md b/运维/Linux/笔记/15.文本sed.md similarity index 100% rename from 运维/操作系统/Linux/笔记/15.文本sed.md rename to 运维/Linux/笔记/15.文本sed.md diff --git a/运维/操作系统/Linux/笔记/16.文本awk.md b/运维/Linux/笔记/16.文本awk.md similarity index 100% rename from 运维/操作系统/Linux/笔记/16.文本awk.md rename to 运维/Linux/笔记/16.文本awk.md diff --git a/运维/操作系统/Linux/笔记/17.IO重定向.md b/运维/Linux/笔记/17.IO重定向.md similarity index 100% rename from 运维/操作系统/Linux/笔记/17.IO重定向.md rename to 运维/Linux/笔记/17.IO重定向.md diff --git a/运维/操作系统/Linux/笔记/18.正则表达式.md b/运维/Linux/笔记/18.正则表达式.md similarity index 100% rename from 运维/操作系统/Linux/笔记/18.正则表达式.md rename to 运维/Linux/笔记/18.正则表达式.md diff --git a/运维/操作系统/Linux/笔记/19.磁盘和文件系统管理.md b/运维/Linux/笔记/19.磁盘和文件系统管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/19.磁盘和文件系统管理.md rename to 运维/Linux/笔记/19.磁盘和文件系统管理.md diff --git a/运维/操作系统/Linux/笔记/2.系统管理.md b/运维/Linux/笔记/2.系统管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/2.系统管理.md rename to 运维/Linux/笔记/2.系统管理.md diff --git a/运维/操作系统/Linux/笔记/20.RAID.md b/运维/Linux/笔记/20.RAID.md similarity index 100% rename from 运维/操作系统/Linux/笔记/20.RAID.md rename to 运维/Linux/笔记/20.RAID.md diff --git a/运维/操作系统/Linux/笔记/21.LVM.md b/运维/Linux/笔记/21.LVM.md similarity index 100% rename from 运维/操作系统/Linux/笔记/21.LVM.md rename to 运维/Linux/笔记/21.LVM.md diff --git a/运维/操作系统/Linux/笔记/22.软件管理.md b/运维/Linux/笔记/22.软件管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/22.软件管理.md rename to 运维/Linux/笔记/22.软件管理.md diff --git a/运维/操作系统/Linux/笔记/23.网络管理.md b/运维/Linux/笔记/23.网络管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/23.网络管理.md rename to 运维/Linux/笔记/23.网络管理.md diff --git a/运维/操作系统/Linux/笔记/24.多网卡Bond.md b/运维/Linux/笔记/24.多网卡Bond.md similarity index 100% rename from 运维/操作系统/Linux/笔记/24.多网卡Bond.md rename to 运维/Linux/笔记/24.多网卡Bond.md diff --git a/运维/操作系统/Linux/笔记/25.进程.md b/运维/Linux/笔记/25.进程.md similarity index 100% rename from 运维/操作系统/Linux/笔记/25.进程.md rename to 运维/Linux/笔记/25.进程.md diff --git a/运维/操作系统/Linux/笔记/26.任务计划.md b/运维/Linux/笔记/26.任务计划.md similarity index 100% rename from 运维/操作系统/Linux/笔记/26.任务计划.md rename to 运维/Linux/笔记/26.任务计划.md diff --git a/运维/操作系统/Linux/笔记/27.Systemd.md b/运维/Linux/笔记/27.Systemd.md similarity index 100% rename from 运维/操作系统/Linux/笔记/27.Systemd.md rename to 运维/Linux/笔记/27.Systemd.md diff --git a/运维/操作系统/Linux/笔记/28.系统引导顺序.md b/运维/Linux/笔记/28.系统引导顺序.md similarity index 100% rename from 运维/操作系统/Linux/笔记/28.系统引导顺序.md rename to 运维/Linux/笔记/28.系统引导顺序.md diff --git a/运维/操作系统/Linux/笔记/29.防火墙.md b/运维/Linux/笔记/29.防火墙.md similarity index 100% rename from 运维/操作系统/Linux/笔记/29.防火墙.md rename to 运维/Linux/笔记/29.防火墙.md diff --git a/运维/操作系统/Linux/笔记/3.硬件管理.md b/运维/Linux/笔记/3.硬件管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/3.硬件管理.md rename to 运维/Linux/笔记/3.硬件管理.md diff --git a/运维/操作系统/Linux/笔记/30.Linux内核.md b/运维/Linux/笔记/30.Linux内核.md similarity index 100% rename from 运维/操作系统/Linux/笔记/30.Linux内核.md rename to 运维/Linux/笔记/30.Linux内核.md diff --git a/运维/操作系统/Linux/笔记/31.Linux内核参数列表.md b/运维/Linux/笔记/31.Linux内核参数列表.md similarity index 100% rename from 运维/操作系统/Linux/笔记/31.Linux内核参数列表.md rename to 运维/Linux/笔记/31.Linux内核参数列表.md diff --git a/运维/操作系统/Linux/笔记/32.Linux系统日志详解.md b/运维/Linux/笔记/32.Linux系统日志详解.md similarity index 100% rename from 运维/操作系统/Linux/笔记/32.Linux系统日志详解.md rename to 运维/Linux/笔记/32.Linux系统日志详解.md diff --git a/运维/操作系统/Linux/笔记/33.监控指标.md b/运维/Linux/笔记/33.监控指标.md similarity index 100% rename from 运维/操作系统/Linux/笔记/33.监控指标.md rename to 运维/Linux/笔记/33.监控指标.md diff --git a/运维/操作系统/Linux/笔记/34.bash快捷键.md b/运维/Linux/笔记/34.bash快捷键.md similarity index 100% rename from 运维/操作系统/Linux/笔记/34.bash快捷键.md rename to 运维/Linux/笔记/34.bash快捷键.md diff --git a/运维/操作系统/Linux/笔记/35.sudo配置.md b/运维/Linux/笔记/35.sudo配置.md similarity index 100% rename from 运维/操作系统/Linux/笔记/35.sudo配置.md rename to 运维/Linux/笔记/35.sudo配置.md diff --git a/运维/操作系统/Linux/笔记/4.终端管理.md b/运维/Linux/笔记/4.终端管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/4.终端管理.md rename to 运维/Linux/笔记/4.终端管理.md diff --git a/运维/操作系统/Linux/笔记/5.时间管理.md b/运维/Linux/笔记/5.时间管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/5.时间管理.md rename to 运维/Linux/笔记/5.时间管理.md diff --git a/运维/操作系统/Linux/笔记/6.用户管理.md b/运维/Linux/笔记/6.用户管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/6.用户管理.md rename to 运维/Linux/笔记/6.用户管理.md diff --git a/运维/操作系统/Linux/笔记/7.语言管理.md b/运维/Linux/笔记/7.语言管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/7.语言管理.md rename to 运维/Linux/笔记/7.语言管理.md diff --git a/运维/操作系统/Linux/笔记/8.文件管理.md b/运维/Linux/笔记/8.文件管理.md similarity index 100% rename from 运维/操作系统/Linux/笔记/8.文件管理.md rename to 运维/Linux/笔记/8.文件管理.md diff --git a/运维/操作系统/Linux/笔记/9.文件查找.md b/运维/Linux/笔记/9.文件查找.md similarity index 100% rename from 运维/操作系统/Linux/笔记/9.文件查找.md rename to 运维/Linux/笔记/9.文件查找.md diff --git a/运维/操作系统/Linux/脚本/HTTTP探测脚本.md b/运维/Linux/脚本/HTTTP探测脚本.md similarity index 100% rename from 运维/操作系统/Linux/脚本/HTTTP探测脚本.md rename to 运维/Linux/脚本/HTTTP探测脚本.md diff --git a/运维/操作系统/Linux/脚本/Shell实现进度条.sh b/运维/Linux/脚本/Shell实现进度条.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/Shell实现进度条.sh rename to 运维/Linux/脚本/Shell实现进度条.sh diff --git a/运维/操作系统/Linux/脚本/bytes.sh b/运维/Linux/脚本/bytes.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/bytes.sh rename to 运维/Linux/脚本/bytes.sh diff --git a/运维/操作系统/Linux/脚本/change.sh b/运维/Linux/脚本/change.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/change.sh rename to 运维/Linux/脚本/change.sh diff --git a/运维/操作系统/Linux/脚本/createES.sh b/运维/Linux/脚本/createES.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/createES.sh rename to 运维/Linux/脚本/createES.sh diff --git a/运维/操作系统/Linux/脚本/echo显示带颜色文字方法.sh b/运维/Linux/脚本/echo显示带颜色文字方法.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/echo显示带颜色文字方法.sh rename to 运维/Linux/脚本/echo显示带颜色文字方法.sh diff --git a/运维/操作系统/Linux/脚本/判断上一条语句是否执行成功.sh b/运维/Linux/脚本/判断上一条语句是否执行成功.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/判断上一条语句是否执行成功.sh rename to 运维/Linux/脚本/判断上一条语句是否执行成功.sh diff --git a/运维/操作系统/Linux/脚本/判断变量为空.sh b/运维/Linux/脚本/判断变量为空.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/判断变量为空.sh rename to 运维/Linux/脚本/判断变量为空.sh diff --git a/运维/操作系统/Linux/脚本/服务器初始化.sh b/运维/Linux/脚本/服务器初始化.sh similarity index 100% rename from 运维/操作系统/Linux/脚本/服务器初始化.sh rename to 运维/Linux/脚本/服务器初始化.sh diff --git a/运维/负载均衡/KeepAlived/KeepAlived原理.md b/运维/负载均衡/KeepAlived/KeepAlived原理.md new file mode 100644 index 0000000..3c28af2 --- /dev/null +++ b/运维/负载均衡/KeepAlived/KeepAlived原理.md @@ -0,0 +1,47 @@ +# Keepalive详解 + +------ + +## 工作原理 + +Keepalived主要的任务就是去调用ipvsadm命令,来生成ipvs规则,并自动实现将用户需要访问的地址转移到可用LVS节点实现。 + +Keepalived工作在多个LVS主机节点上,当前活动的节点叫做Master,备用节点叫做Backup,Master会不停的向Backup节点通告自己的心跳,这种通告是基于VRRP协议的。Backup节点一旦接收不到Master的通告信息,它就会把LVS的VIP拿过来,并且把ipvs的规则也拿过来,在自己身上生效,从而替代Master节点。 + +在LVS+KEEPALIVED模型中,所有的工作在Keepalived中配置就可以了。 + +### VRRP工作原理简述 + +传统上来说我们通过一个路由器上网,如果这个路由器故障那就不能上网了,如果使用2个路由器,有一个故障你就需要手动的设置客户端切换到另外的路由器上: + +![img](./assets/1448094-20190427140322369-437523071.png) + +我们可以通过VRRP协议来实现路由器的故障转移。如下图: + +![img](./assets/1448094-20190427140331315-1105050518.png) + +VRRP协议提供一个VIP,它可以来设定那个路由器是活动节点,然后出现故障进行切换,VIP也随之对应到新的路由器上,但是内网是用过MAC地址来寻址的,虽然VIP对应到了新的路由器上,可是MAC变了,客户端的ARP表也没有更新,所以还是用不了,为了解决这个问题VRRP不但提供VIP还提供VMAC地址,这个VMAC地址是VRRP单独申请的,路由器集群内的节点都可以正常使用。 + +故障切换的时候虽然改变了后端路由器,但是由于客户端使用的是VIP和VMAC地址,这样就不会有任何影响了。 + +所以Keepalived就是在Linux系统上提供了VRRP功能,当然还提供了服务监控功能,比如监控后端服务器的健康检查、LVS服务可用性检查。 + +VRRP的工作过程是这样的: + +1. 虚拟路由器中的路由器根据优先级选举出Master,Master路由器通过发送免费ARP报文,将自己的虚拟MAC地址通告给与它连接的设备。 +2. Master路由器周期性发送VRRP报文,以公布自己的配置信息(优先级等)和工作状态 +3. 如果Master故障,虚拟路由器中的Backup路由器将根据优先级重新选举新的Master +4. 虚拟路由器状态切换时,Master路由器由一台设备切换会另外一台设备,新的Master路由器只是简单的发送一个携带虚拟MAC地址和虚拟IP的免费ARP报文,这样就可以更新其他设备中缓存的ARP信息 +5. Backup路由器的优先级高于Master时,由Backup的工作方式(抢占式或者非抢占式)决定是否重新选举Master。 + +VRRP还支持认证,就是为了防止随意一个VRRP设备加入到当前的虚拟路由组离来,它提供无认证、简单8位字符串认证和MD5认证(该认证方式Keepalive不支持)。 + +### Keepalive软件结构 + +![img](./assets/1448094-20190427140344609-1485693863.png) + +Keepalived启动后以后会有一个主进程Master,它会生成还有2个子进程,一个是VRRP Stack负责VRRP(也就是VRRP协议的实现)、一个是Checkers负责IPVS的后端的应用服务器的健康检查,当检测失败就会调用IPVS规则删除后端服务器的IP地址,检测成功了再加回来。当检测后端有失败的情况可以使用SMTP通知管理员。另外VRRP如果检测到另外一个Keepalive失败也可以通过SMTP通知管理员。 + +Control Plane:这个就是主进程,主进程的功能是分析配置文件,读取、配置和生效配置文件,指挥那2个子进程工作。 + +WatchDog:看门狗,这个是Linux系统内核的一个模块,它的作用是帮助主进程盯着那2个子进程,因为主进程并不负责具体工作,具体工作都是子进程完成的。如果子进程挂了,那Keepalived就不完整了,所以那2个子进程会定期的向主进程打开的一个内部Unix Socket文件写心跳信息。如果有某个子进程不写信息了,它就会重启子进程,主进程就是让WatchDog来监控子进程的。 \ No newline at end of file diff --git a/运维/负载均衡/KeepAlived/KeepAlived实操.md b/运维/负载均衡/KeepAlived/KeepAlived实操.md new file mode 100644 index 0000000..e69de29 diff --git a/运维/负载均衡/KeepAlived/assets/1448094-20190427140322369-437523071.png b/运维/负载均衡/KeepAlived/assets/1448094-20190427140322369-437523071.png new file mode 100644 index 0000000..019dfab Binary files /dev/null and b/运维/负载均衡/KeepAlived/assets/1448094-20190427140322369-437523071.png differ diff --git a/运维/负载均衡/KeepAlived/assets/1448094-20190427140331315-1105050518.png b/运维/负载均衡/KeepAlived/assets/1448094-20190427140331315-1105050518.png new file mode 100644 index 0000000..e616ad9 Binary files /dev/null and b/运维/负载均衡/KeepAlived/assets/1448094-20190427140331315-1105050518.png differ diff --git a/运维/负载均衡/KeepAlived/assets/1448094-20190427140344609-1485693863.png b/运维/负载均衡/KeepAlived/assets/1448094-20190427140344609-1485693863.png new file mode 100644 index 0000000..c8204ef Binary files /dev/null and b/运维/负载均衡/KeepAlived/assets/1448094-20190427140344609-1485693863.png differ diff --git a/运维/负载均衡/LVS/LVS.md b/运维/负载均衡/LVS/LVS.md new file mode 100644 index 0000000..92268f1 --- /dev/null +++ b/运维/负载均衡/LVS/LVS.md @@ -0,0 +1,154 @@ +# LVS 负载均衡原理 + +负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有 nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。 + +## 负载均衡 LVS 基本介绍 + +LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 [http://www.linuxvirtualserver.org](http://www.linuxvirtualserver.org/) 。现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为 `负载均衡层`、`服务层` 和 `共享存储层`。 + +## LVS 的基本工作原理 + +![lvs-1](./assets/lvs-1.png) + +1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间。 +2. PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP,将数据包发往 INPUT 链。 +3. IPVS 是工作在 INPUT 链上的,当用户请求到达 INPUT 时,IPVS 会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时 IPVS 会强行修改数据包里的目标 IP 地址及端口,并将新的数据包发往 POSTROUTING 链。 +4. POSTROUTING 链接收数据包后发现目标 IP 地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器。 + +## LVS 的组成 + +LVS 由 2 部分程序组成,包括 `ipvs` 和 `ipvsadm`。 + +- ipvs(ip virtual server):一段代码工作在内核空间,叫 ipvs,是真正生效实现调度的代码。 +- ipvsadm:另外一段是工作在用户空间,叫 ipvsadm,负责为 ipvs 内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)。 + +## LVS 相关术语 + +- DS:Director Server。指的是前端负载均衡器节点。 +- RS:Real Server。后端真实的工作服务器。 +- VIP:向外部直接面向用户请求,作为用户请求的目标的 IP 地址。 +- DIP:Director Server IP,主要用于和内部主机通讯的 IP 地址。 +- RIP:Real Server IP,后端服务器的 IP 地址。 +- CIP:Client IP,访问客户端的 IP 地址。 + +## LVS NAT 模式的原理和特点 + +[![lvs-2](https://github.com/xgfone/snippet/raw/master/snippet/docs/architecture/ha-lb/_static/lvs-2.png)](https://github.com/xgfone/snippet/blob/master/snippet/docs/architecture/ha-lb/_static/lvs-2.png) + +1. 当用户请求到达 Director Server,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 VIP。 +2. PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT 链。 +3. IPVS 比对数据包请求的服务是否为集群服务,若是,修改数据包的目标 IP 地址为后端服务器 IP,然后将数据包发至 POSTROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 RIP。 +4. POSTROUTING 链通过选路,将数据包发送给 Real Server。 +5. Real Server 比对发现目标为自己的 IP,开始构建响应报文发回给 Director Server。 此时报文的源 IP 为 RIP,目标 IP 为 CIP。 +6. Director Server 在响应客户端前,此时会将源 IP 地址修改为自己的 VIP 地址,然后响应给客户端。 此时报文的源 IP 为 VIP,目标 IP 为 CIP。 + +#### LVS NAT 特点 + +**优点** + +- RS 应该使用私有地址,RS 的网关必须指向 DIP。 +- DIP 和 RIP 必须在同一个网段内。 +- 请求和响应报文都需要经过 Director Server,高负载场景中,Director Server 易成为性能瓶颈。 +- 支持端口映射。 +- RS 可以使用任意操作系统。 + +**缺陷** + +- 对 Director Server 压力会比较大,请求和响应都需经过 Director Server。 + +## LVS DR 模式的原理和特点 + +[![lvs-3](https://github.com/xgfone/snippet/raw/master/snippet/docs/architecture/ha-lb/_static/lvs-3.png)](https://github.com/xgfone/snippet/blob/master/snippet/docs/architecture/ha-lb/_static/lvs-3.png) + +1. 当用户请求到达 Director Server,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 VIP。 +2. PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT 链。 +3. IPVS 比对数据包请求的服务是否为集群服务,若是,将请求报文中的源 MAC 地址修改为 DIP 的 MAC 地址,将目标 MAC 地址修改 RIP 的 MAC 地址,然后将数据包发至 POSTROUTING 链。 此时的源 IP 和目的 IP 均未修改,仅修改了源 MAC 地址为 DIP 的 MAC 地址,目标 MAC 地址为 RIP 的 MAC 地址。 +4. 由于 DS 和 RS 在同一个网络中,所以是通过二层来传输。POSTROUTING 链检查目标 MAC 地址为 RIP 的 MAC 地址,那么此时数据包将会发至 Real Server。 +5. RS 发现请求报文的 MAC 地址是自己的 MAC 地址,就接收此报文。处理完成之后,将响应报文通过 lo 接口传送给 eth0 网卡然后向外发出。 此时的源 IP 地址为 VIP,目标 IP 为 CIP。 +6. 响应报文最终送达至客户端。 + +#### LVS DR 特点 + +**优点** + +- 保证前端路由将目标地址为 VIP 报文统统发给 Director Server,而不是 RS。 +- RS 可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对 RIP 进行直接访问。 +- RS 跟 Director Server 必须在同一个物理网络中。 +- 所有的请求报文经由 Director Server,但响应报文必须不能经过 Director Server。 +- 不支持地址转换,也不支持端口映射。 +- RS 可以是大多数常见的操作系统。 +- RS 的网关绝不允许指向 DIP(因为我们不允许他经过 Director Server)。 +- RS 上的 lo 接口配置 VIP 的 IP 地址。 + +**缺陷** + +- RS 和 DS 必须在同一机房中。 + +**LVS DR 问题的解决方案** + +- 在前端路由器做静态地址路由绑定,将对于 VIP 的地址仅路由到 Director Server。但用户未必有路由操作权限,因为有可能是运营商提供的,所以这个方法未必实用。 +- arptables:在 arp 的层次上实现在 ARP 解析时做防火墙规则,过滤 RS 响应 ARP 请求。这是由 iptables 提供的。 +- 修改 RS 上内核参数(`arp_ignore` 和 `arp_announce`)将 RS 上的 VIP 配置在 lo 接口的别名上,并限制其不能响应对 VIP 地址解析请求。 + +## LVS Tun 模式的原理和特点 + +[![lvs-4](https://github.com/xgfone/snippet/raw/master/snippet/docs/architecture/ha-lb/_static/lvs-4.png)](https://github.com/xgfone/snippet/blob/master/snippet/docs/architecture/ha-lb/_static/lvs-4.png) + +1. 当用户请求到达 Director Server,此时请求的数据报文会先到内核空间的 PREROUTING 链。 此时报文的源 IP 为 CIP,目标 IP 为 VIP。 +2. PREROUTING 检查发现数据包的目标 IP 是本机,将数据包送至 INPUT 链。 +3. IPVS 比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层 IP 报文,封装源 IP 为 DIP,目标 IP 为 RIP。然后发至 POSTROUTING 链。 此时源 IP 为 DIP,目标 IP 为 RIP。 +4. POSTROUTING 链根据最新封装的 IP 报文,将数据包发至 RS(因为在外层封装多了一层 IP 首部,所以可以理解为此时通过隧道传输)。 此时源 IP 为 DIP,目标 IP 为 RIP。 +5. RS 接收到报文后发现是自己的 IP 地址,就将报文接收下来,拆除掉最外层的 IP 后,会发现里面还有一层 IP 首部,而且目标是自己的 lo 接口 VIP,那么此时 RS 开始处理此请求,处理完成之后,通过 lo 接口送给 eth0 网卡,然后向外传递。 此时的源 IP 地址为 VIP,目标 IP 为 CIP。 +6. 响应报文最终送达至客户端。 + +#### LVS Tun 特点 + +- RIP、VIP、DIP 全是公网地址。 +- RS 的网关不会也不可能指向 DIP。 +- 所有的请求报文经由 Director Server,但响应报文必须不能进过 Director Server。 +- 不支持端口映射。 +- RS 的系统必须支持隧道。 + +## LVS FullNAT 模式的原理 + +LVS FullNAT 模式几乎和 LVS NAT 模式相同,不同之处即是:引入 Local Address(内网 IP 地址)。CIP->VIP 转换换为 LIP->RIP,而 LIP 和 RIP 均为 IDC 内网 IP,因此可以跨 VLAN 通讯。 + +注:IN/OUT 的数据流全部经过 LVS,为了保证带宽,建议采用万兆(10G)网卡。 + +## NAT、FullNAT、DR、Tunnel 对比 + +[![lvs-6](https://github.com/xgfone/snippet/raw/master/snippet/docs/architecture/ha-lb/_static/lvs-6.png)](https://github.com/xgfone/snippet/blob/master/snippet/docs/architecture/ha-lb/_static/lvs-6.png) + +## LVS 八种调度算法 + +### 轮询调度 rr + +这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。 + +### 加权轮询 wrr + +这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对 rr 算法的一种优化和补充,LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器 A 的权值为 1,服务器 B 的权值为 2,则调度到服务器 B 的请求会是服务器 A 的 2 倍。权值越高的服务器,处理的请求越多。 + +### 最小链接数 lc + +这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1。 + +### 加权最小链接数 wlc + +这个算法比 lc 多了一个权重的概念。 + +### 基于局部性的最少连接调度算法 lblc + +这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器 + +### 复杂的基于局部性最少的连接算法 lblcr + +记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。 + +### 目标地址散列调度算法 dh + +该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。 + +### 源地址散列调度算法 sh + +与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。 \ No newline at end of file diff --git a/运维/负载均衡/LVS/assets/lvs-1.png b/运维/负载均衡/LVS/assets/lvs-1.png new file mode 100644 index 0000000..8acc5bf Binary files /dev/null and b/运维/负载均衡/LVS/assets/lvs-1.png differ