mirror of
https://github.com/Estom/notes.git
synced 2026-04-05 11:57:37 +08:00
完成文档生成脚本,准备测试
This commit is contained in:
@@ -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 @@
|
||||
|
||||
第三阶段:云原生三本
|
||||
|
||||
- [ ] 微服务架构设计
|
||||
- [ ] 数据密集型系统设计原理
|
||||
- [ ] 云原生技术
|
||||
- [ ] 服务网格
|
||||
|
||||
|
||||
@@ -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_next_level(root)
|
||||
items = listdir(root)
|
||||
for item in items:
|
||||
node = join(root, item)
|
||||
if isdir(node):
|
||||
layer_traverse(node,now+1,depth)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def save_structure(root_dir, base_dir=base_dir, depth=0):
|
||||
"""
|
||||
遍历指定目录及其所有子目录,生成并保存目录结构。
|
||||
遍历方案:按层遍历当前目录,如果层数小于depth则只生成下一层的目录。如果等于depth则生成所有子节点的目录。
|
||||
:param root_dir: 要处理的根目录路径
|
||||
:param base_dir: 用来获得root_dir对base_dir的相对路径
|
||||
:param depth: 递归深度,文件夹深度
|
||||
:param depth: 递归深度,文件夹深度。0表示根目录只在最开始生辰_sidebar,1表示两级目录
|
||||
"""
|
||||
root = root_dir
|
||||
dirs = []
|
||||
files = []
|
||||
i = 0
|
||||
for item in listdir(root):
|
||||
if isdir(join(root, item)):
|
||||
dirs.append(item)
|
||||
@@ -95,6 +187,9 @@ def save_structure(root_dir, base_dir=base_dir, depth=0):
|
||||
subdir_structure = ''
|
||||
subdir_name = basename(root)
|
||||
|
||||
|
||||
|
||||
|
||||
if depth != 0:
|
||||
if create_depth == 0:
|
||||
subdir_structure += "- " + subdir_name + '\n'
|
||||
@@ -155,5 +250,6 @@ if __name__ == "__main__":
|
||||
import os
|
||||
read_config()
|
||||
os.chdir(base_dir)
|
||||
print(os.getcwd())
|
||||
save_structure(base_dir, base_dir, 0)
|
||||
print("cwd:"+os.getcwd())
|
||||
layer_traverse(base_dir,0,create_depth)
|
||||
# save_structure(base_dir, base_dir, 0)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[config]
|
||||
# docsify根目录
|
||||
base_dir=E:\gitee\notes
|
||||
base_dir=/root/gitee/notes/blog
|
||||
# 忽略以“_”,"."开头的文件,如果要添加新文件,用“|”分隔
|
||||
ignore_start_with=_|.
|
||||
# 只读取".md"格式问价,如果添加新格式,用“|”分隔
|
||||
|
||||
62
blog/generate/test.py
Normal file
62
blog/generate/test.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import os
|
||||
from configparser import ConfigParser
|
||||
from os.path import splitext, basename, join, isdir, relpath, abspath
|
||||
from os import listdir
|
||||
root_dir = '/root/gitee/notes/blog'
|
||||
def test_walk():
|
||||
for dirpath, dirnames, filenames in os.walk(root_dir):
|
||||
print(f"Currently in directory: {dirpath}")
|
||||
for dirname in dirnames:
|
||||
print(f"Subdirectory: {dirname}")
|
||||
for filename in filenames:
|
||||
print(f"File: {filename}")
|
||||
|
||||
def test_list_dir():
|
||||
dir = os.listdir(root_dir)
|
||||
print(dir)
|
||||
|
||||
|
||||
def build_next_level(root_path):
|
||||
'''
|
||||
创建下一级节点的目录_sidebar.md
|
||||
'''
|
||||
print("next_level"+root_path)
|
||||
|
||||
def build_full_level(root_path):
|
||||
'''
|
||||
创建所有子节点的目录_sidebar.md
|
||||
'''
|
||||
print("full_path"+root_path)
|
||||
|
||||
def build_readme_now(root_dir):
|
||||
'''
|
||||
创建当前节点的readme文件,指向当前目录下的md文件。
|
||||
深度小于depth+1 就要生成readme文件
|
||||
'''
|
||||
print("readme:"+root_dir)
|
||||
|
||||
def layer_traverse(root,now,depth):
|
||||
build_readme_now(root)
|
||||
'''
|
||||
now=depth创建递归目录,不再按层遍历
|
||||
'''
|
||||
if now >= depth:
|
||||
build_full_level(root)
|
||||
return
|
||||
|
||||
'''
|
||||
now<depth创建下层目录,并继续递归
|
||||
'''
|
||||
build_next_level(root)
|
||||
items = listdir(root)
|
||||
for item in items:
|
||||
node = join(root, item)
|
||||
if isdir(node):
|
||||
layer_traverse(node,now+1,depth)
|
||||
|
||||
|
||||
|
||||
# test_list_dir()
|
||||
# test_walk()
|
||||
|
||||
layer_traverse(root_dir,0,1)
|
||||
Reference in New Issue
Block a user