From 5793ae5bd0ed423e5ed6458d45ef670175f9a6d4 Mon Sep 17 00:00:00 2001 From: estom Date: Thu, 18 Jan 2024 00:51:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=96=87=E6=A1=A3=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=84=9A=E6=9C=AC=EF=BC=8C=E5=87=86=E5=A4=87=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Java/Java学习路线.md | 41 +++++++---- blog/generate/buildSidebar.py | 126 ++++++++++++++++++++++++++++++---- blog/generate/config.ini | 2 +- blog/generate/test.py | 62 +++++++++++++++++ 4 files changed, 200 insertions(+), 31 deletions(-) create mode 100644 blog/generate/test.py diff --git a/Java/Java学习路线.md b/Java/Java学习路线.md index 9a9a29ec..f8bfb7e4 100644 --- a/Java/Java学习路线.md +++ b/Java/Java学习路线.md @@ -4,8 +4,6 @@ 总共包括六个主要的部分。学完就能毕业啦。开始吧。 - - 对一个软件的了解程度 使用:快速搭建器软件,运行,实现基础的内容。(看quick start中的内容和视频即) @@ -15,34 +13,41 @@ ### Java 的学习路线(视频打卡系列) - [ ] 基础知识(学习方式——阅读书籍) + - [ ] 数据库 - [ ] 操作系统 - [ ] 计算机网络 - [ ] 数据结构与算法 - [ ] 编译原理 - [ ] Java 基础教程(Java 的基本语法和使用及原理,分五个阶段完成) - - [x] Java 语言基础。语言语法。 + + - [X] Java 语言基础。语言语法。 - [ ] Java 高级操作。JDK 标准库/集合类/IO 操作/并发编程/网络编程 - [ ] Javaweb 开发。Servlet 和 JSP 相关的老技术。知道就行 - [ ] Java 基本原理。JVM 底层的原理和技术 - [ ] Java 架构模式。面向对象和设计模式 - [ ] Java 网站开发(JavaWeb 相关的技术知识。) + - [ ] MySQL - - [x] JDBC - - [x] lombak + - [X] JDBC + - [X] lombak - [ ] mybatis -- [x] Java 工具教程(Java 使用的关键工具,白天学习一下) - - [x] maven 教程 - - [x] idea 教程 +- [X] Java 工具教程(Java 使用的关键工具,白天学习一下) + + - [X] maven 教程 + - [X] idea 教程 - [ ] Java 框架教程(Spring 全家桶,白天自学) - - [x] Spring - - [x] Springboot + + - [X] Spring + - [X] Springboot - [ ] Spring MVC - [ ] SpringCloud - [ ] Java云原生 + - [ ] docker - [ ] k8s - [ ] Java 性能优化 + - [ ] 高可用 - [ ] 双机架构 - [ ] 异地多活 @@ -53,6 +58,7 @@ - [ ] 分库分表 - [ ] 消息队列 - [ ] Java 分布式基础 + - [ ] 负载均衡和调度 - [ ] 分布式缓存 - [ ] 分布式算法 @@ -61,9 +67,8 @@ - [ ] mysql - [ ] redis - - - [ ] 中间件 + - [ ] 微服务架构(经典和Mesh): - [ ] 服务侧 - [ ] 注册中心(Nacos/ZooKeeper/Etcd) @@ -82,23 +87,27 @@ - [ ] 数据缓存(Redis) - [ ] 数据同步 - [ ] PaaS 运维发布 + - [ ] 运维发布(Docker/K8s/Helm):服务自愈、弹性伸缩 - [ ] 应用管理、服务管理、节点管理、全链路灰度、灰度发布 - [ ] RaaS 监控告警 + - [ ] 日志 - [ ] 监控、告警(Prometheus/Grafana) - [ ] 链路追踪 - [ ] 研发效能 CI/CD + - [ ] 需求管理 - [ ] 迭代管理和流水线(Jekeins) - [ ] 仓库:代码仓库(Gitee/Git)、镜像仓库(DockerHub)、依赖仓库(Maven)等 > 首先看完这些相关的课程,然后去看书重新学习一遍这些知识 -> * 下三个内容:jdk -> jdbc -> javaweb -> springmvc -> mybatis -> ssm -> sprincloud +> +> * 下三个内容:jdbc -> mybatis -> springmvc -> sprincloud +> * -> java(jdk->jvm) > * -> spring(spring->springboot->springmvc->springcloud) -> * -> java(jdk->javaweb->jvm) > * -> 网站开发(mysql->jdbc->lomback->mybatis) -> * -> 云计算(docker->k8s) +> * -> 云计算(docker->k8s) > * -> 微服务(nacos->zookeeper->sentinel->dubbo->rocketeMQ->prometheus->grafana->git->jekens) ### Java 书籍打卡系列开始 @@ -121,6 +130,8 @@ 第三阶段:云原生三本 +- [ ] 微服务架构设计 +- [ ] 数据密集型系统设计原理 - [ ] 云原生技术 - [ ] 服务网格 diff --git a/blog/generate/buildSidebar.py b/blog/generate/buildSidebar.py index 81ee51d5..f28d6188 100644 --- a/blog/generate/buildSidebar.py +++ b/blog/generate/buildSidebar.py @@ -56,37 +56,129 @@ def check_file_name_satified(file_path): return True -def create_directory_node(): - ''' - 创建目录树 - 标记当前目录节点下是否有.md文件 - ''' - pass -def build_next_level(): +def build_next_level(base_path): ''' 创建下一级节点的目录_sidebar.md - 创建当前目录级别的README.md,如果没有则创建,如果有则不创建。 + todo:排除子目录下没有md文件的子目录 ''' - pass + print("build next level:"+root_path) + items = os.listdir(base_path) + result = "\n" + for item in items: + abspath = os.path.join(base_path,item) + if isdir(abspath): + rel_path = relpath(root_dir, base_dir) + readme_path = os.path.join(rel_path,"README.md") + result += "- [" + item + "](" + readme_path + ')\n' + + basename = os.path.basename(base_path) + # 如果README.md文件不存在,则创建 + sidebar_path = os.path.join(base_path,"_sidebar.md") + with open(sidebar_path, 'w') as f: + f.write('## '+ basename + '\n') + f.write(result) -def build_full_level(): +def build_full_level(base_path): ''' 创建所有子节点的目录_sidebar.md - 创建单签目录级别的README.md,如果没有则创建,如果有则不创建。 ''' - pass + print("build full path"+root_path) + result = deep_traverse(base_dir,'') + if '' == result: + return + basename = os.path.basename(base_path) + sidebar_path = os.path.join(base_path,"_sidebar.md") + with open(sidebar_path, 'w') as f: + f.write('## '+ basename + '\n') + f.write(result) + +def deep_traverse(base_dir,prefix): + ''' + 深度递归遍历 + ''' + if os.path.isfile(base_dir) + if base_dir.endwith('.md') + return build_md_item(prefix,base_dir) + else: + return '' + title = prefix + '- ' + os.path.basename(base_dir) + '\n' + result = '' + for items in os.listdir(base_dir): + result += deep_traverse(base_dir,prefix+' ') + if '' == result: + return '' + return title + result + +def build_readme_now(base_path): + ''' + 创建当前节点的readme文件,指向当前目录下的md文件。 + 深度小于depth+1 就要生成readme文件 + ''' + print("build readme now:"+base_dir) + readme_path = os.path.join(base_path, 'README.md') + + basename = os.path.basename(base_path) + # 如果README.md文件不存在,则创建 + if not os.path.exists(readme_path): + with open(readme_path, 'w') as f: + f.write('## '+ basename + '\n') + f.write(build_md_items('',base_path)) + + +def build_md_items(prefix,base_path): + ''' + todo:排除前缀不符合需求的文件 + ''' + items = os.listdir(base_path) + result = "\n" + for item in items: + abspath = join(root, item) + if abspath is not dir: + result += build_md_item(prefix,item) + return result + +def build_md_item(prefix,file_path): + base_name = os.path.basename(file_path) + title = os.path.splitext(base_name)[0] + return prefix + "- [" + title + "](" + relpath(root_dir, base_dir) + ')\n' + + +def layer_traverse(root,now,depth): + build_readme_now(root) + ''' + now=depth创建递归目录,不再按层遍历 + ''' + if now >= depth: + build_full_level(root) + return + + ''' + now= depth: + build_full_level(root) + return + + ''' + now