# CSDN 技能森林 [CSDN学习](https://edu.csdn.net) = [每日一练](https://edu.csdn.net/dailycode)`->`[技能树](https://edu.csdn.net/skill/mysql)`->`[比赛](https://edu.csdn.net/contest/all)`->`[学习成就](https://edu.csdn.net/redirect/me) ![](./data/img/skill_tree.jpg) 本仓库是技能树森林的 RFC(Request for Comments) 仓库。提议请在 rfc/ 目录下创建文档,例如 [`rfc_001.md`](./rfc/rfc_001.md) [技能树发布的新闻稿](https://blog.csdn.net/SoftwareTeacher/article/details/122858533) ## 如何参与贡献 * 贡献方式 * 给一个已有的技能树贡献 1. fork 下面对应开放技能树编辑仓库,仔细阅读对应的仓库的README规则,新增习题或者改进已有习题 2. 提交 pull-request 等待审核合并 3. 核心贡献者会邀请加入项目仓库成员 4. 技能树社区将展示出题者信息,以及根据贡献值奖励一定的原力值 5. 参考[参与贡献Q/A](./qa.md) * 构建一个新的技能树 * 参考[技能树项目构建练习](./build.md) * 给技能树的工具链做贡献 * 参考下面的`技能树服务构建项目` * 仓库说明 * 技能森林分为`技能树开放编辑仓库`和`CSDN技能树线上社区` * 其中`技能树开放编辑仓库`采用 MIT 或者 CC4 开源协议,是开源项目仓库部分 * 其中`CSDN技能树线上社区`为CSDN产品 * 贡献者基于`技能树开放编辑仓库`图谱数据之上的进一步延伸开发,应遵循对应协议要求 ## 技能树仓库和技能树社区 * 一个技能树仓库的章节结构和习题就绪时,则上线初版的技能树社区 || 开放编辑仓库 | 上线的技能树社区 | 状态| |--| ----------- | ----------- |----------- | |1|[每日一题技能树编辑仓库](https://gitcode.net/csdn/skill_tree_dailycode)|[每日一练](https://edu.csdn.net/dailycode)|✓| |2|[CS入门技能树仓库](https://gitcode.net/csdn/skill_tree_git_md_linux)|[CS入门技能树社区](https://edu.csdn.net/skill/gml)|✓| |3|[Python技能树编辑仓库](https://gitcode.net/csdn/skill_tree_python)|[Python技能树社区](http://python.csdn.net)|✓| |4|[C语言技能树编辑仓库](https://gitcode.net/csdn/skill_tree_c)|[C语言技能树社区](http://clang.csdn.net)|✓| |5|[Java技能树编辑仓库](https://gitcode.net/csdn/skill_tree_java)|[Java技能树社区](https://edu.csdn.net/skill/java)|✓| |6|[算法(algorithm)技能树编辑仓库](https://gitcode.net/csdn/skill_tree_algorithm)|[算法技能树社区](https://algo.csdn.net)|✓| |7|[PostgreSQL技能树编辑仓库](https://gitcode.net/csdn/skill_tree_pg)|[PostgreSQL技能树社区](https://edu.csdn.net/skill/pg)|✓| |8|[OpenCV技能树编辑仓库](https://gitcode.net/csdn/skill_tree_git_md_linux)|[OpenCV技能树社区](https://edu.csdn.net/skill/opencv)|✓| |9|[Neo4j技能树编辑仓库](https://gitcode.net/csdn/skill_tree_neo4j)|[Neo4j技能树社区](https://edu.csdn.net/skill/neo4j)|✓| |10|[云原生入门技能树](https://gitcode.net/csdn/skill_tree_cloud_native)|[云原生入门技能树](https://edu.csdn.net/skill/cloud_native)|✓| |11|[网络技能树](https://gitcode.net/csdn/skill_tree_network)|[网络技能树社区](https://edu.csdn.net/skill/network) | ✓ | |12|[CUDA入门技能树](https://gitcode.net/csdn/skill_tree_cuda)|[CUDA入门技能树社区](https://edu.csdn.net/skill/cuda) | ✓初/中阶已上线| |13|[Vue入门技能树](https://gitcode.net/csdn/skill_tree_vue)|[Vue入门技能树社区](https://edu.csdn.net/skill/vue) | ✓初/中阶已上线| |14|[MySQL入门技能树(初/中阶段)](https://gitcode.net/csdn/skill_tree_mysql)|[MySQL入门技能树社区](https://edu.csdn.net/skill/mysql) |✓ | |15|[MySQL进阶技能树(中/高阶)](https://gitcode.net/csdn/skill_tree_mysql)|[MySQL进阶技能树社区](https://edu.csdn.net/skill/mysql02) |✓ | |16|[Oracle技能树](https://gitcode.net/csdn/skill_tree_oracle)| | | |17|[Go语言技能树](https://gitcode.net/csdn/skill_tree_go)| | | |18|[Scala技能树](https://gitcode.net/csdn/skill_tree_scala)| | | |19|[Spark技能树](https://gitcode.net/csdn/skill_tree_spark)| | | |20|[.NET技能树](https://gitcode.net/csdn/skill_tree_dotnet)| | . | |21|[Rust技能树](https://gitcode.net/csdn/skill_tree_rust)| | . | |22|[Web开发入门技能树](https://gitcode.net/csdn/skill_tree_web)| | | |23|[Web实战技能树](https://gitcode.net/csdn/skill_tree_web_in_action)| | | |24|[AI技能树](https://gitcode.net/csdn/skill_tree_ai)| | | |25|[面向对象程序设计技能树](https://gitcode.net/csdn/skill_tree_oo)| | | |26|[游戏开发入门技能树](https://gitcode.net/csdn/skill_tree_game)| | | |27|[开源软件开发技能树](https://gitcode.net/csdn/skill_tree_opensource)| | | |28|[OceanBase技能树](https://gitcode.net/csdn/skill_tree_oceanbase)| | | |29|[DevOps运维技能树](https://gitcode.net/csdn/skill_tree_devops)| | | |30|[搜索技能树](https://gitcode.net/csdn/skill_tree_search)| | | |31|[小程序技能树](https://gitcode.net/csdn/skill_tree_mini_programs)| | | ## 技能树服务构建项目 技能树数据处理的流水线如下: `技能树开放编辑仓库` --> `技能树命令行工具` --> `技能树服务` 其中不同环节的仓库如下: * `技能树开放编辑仓库` 就是每个领域的编辑仓库。 * 而 `技能树命令行工具` 和 `技能树服务` 会分别创建两个独立的仓库 * 实现上,`技能树命令行工具` 和 `技能树服务` 都会有一些对技能树编辑仓库数据的结构解析、校验、转换需求,这些解析器的实现托管在一个独立的 `技能树解析` 仓库里。 管道仓库状态 | 仓库 | 状态| | ----------- | ----------- | |技能树命令行工具(skill_tree_cli)|内部状态,TODO:开放仓库,参考下一节,期待开源贡献| |技能树服务(skill_tree_server)|内部状态,TODO:开放仓库,期待开源贡献| |[技能树解析(skill_tree_parser)](https://gitcode.net/csdn/skill_tree_parser)|已创建并在三个环节使用| ## [技能树命令行设计(草稿)](https://gitcode.net/csdn/skill_tree/-/issues/4) 技能树仓库编辑命令 最终应该和 技能树管道处理命令组合在一起,类似 git 一样提供一个 skill_tree 命令,该命令包含如下 `actions` * `init` 命令:初始化一个技能树仓库,该过程会交互式询问,输入技能树仓库相关的 meta 信息,用来自动完成技能树仓库 * 原始数据编辑目录:data/ * 处理脚本目录:src/ * 管道数据处理目录:pipeline/ * 保持结构并规格化处理输出目录:pipeline/spec * 链接合成目录:pipeline/link * `tree` 命令:在data/ 目录下通过该命令为每个节点和习题分配id,自动化生成必要的元数据 * `spec` 命令:在pipeline/spec 目录下输出严格规格化的中间数据格式 * `link` 命令:链接节点数据,包含 * 生成节社区(抽象意义上) * 生成节频道(抽象意义上) * 生成习题交流贴(抽象意义上) * `deploy` 命令:将link后的产生的数据发布到抽象技能树服务 * `server` 命令:启动抽象技能树服务,用户可以开始使用。 ## 技能树概述 内容生产者, 内容消费者,学习者: 他们有不同的需求。 从一个“产品设计” 的角度,一个领域 (Python) 有一个技能树。 这个技能树上面有很多 知识点,这些知识点有 {初中高} 的特性。 每个知识点有 相关的 {博客, 问答, 代码, 视频,... } 集合。 用户如何证明自己掌握了某个知识点? 考虑: * 每个知识点有相关的 “测试”,通过了这个 “测试”. * 成为这个知识点的回答采纳目标。 * 写原创博客获得一定的赞。 * 通过某种考试。 ## 痛点的解决 * 我怎么能证明我自己懂了这个领域? 解决:显示用户花了时间,通过了测试,写了博客。 * 光看博客就能证明自己懂了么? 解决:不行,必须通过测试了 * 我看了程序,但是只有程序片段,我怎么运行在我的电脑呢? CSDN 的程序是完整的,但是拷贝到我的电脑上,怎么不行啊? 解决:让用户能执行完整的可运行的程序。 * 回答者的痛点:我不断地回答相似的问题,一遍一遍给他们源代码。 解决:把完整的解决代码放在 Code 平台上,以后让提问者来这里看。 (这个和 ‘问答’ 业务很相关) 对于技能树上的一个问题,我们应该有完整的解决方案,让用户非常满意: * 问题(怎么做归并排序?) * 解答(原理是这样的) * 代码:这个代码是要能在 Code-China 上可以运行的 (归并排序的代码在 JupyterNotebook 之类的平台运行) * 解释通过代码的评论来完成:用户会说:我不大懂第十行, 为何要这样写? 专家就会解释。 ## 技能树社区核心设计 1. 构建结构化信息,通过难度等级、章/节+子树,使用算法匹配学习知识 2. 每个知识点节点是一个微社区 3. 每个微社区内包含3个重要元素: * 参考资料(学习,使用算法匹配+推荐给出最优质内容) * 习题(验证学习,是否掌握了知识点?习题做完可以去Notebook运行) * 交流讨论区(同主题交流,通过输出进一步强化学习) ## 基于技能树的知识图谱 基于技能树的层次结构,构建复合的知识图谱结构,仓库: [skill_tree_level](https://gitcode.net/csdn/skill_tree_level.git) ## 不同技能树构成了职业路线学习包 data/pacakage 目录下定义了由不同的技能树组合构成的学习包 例如: * [Java后端工程师职业路线](./data/package/job/java_backend.json) * [爬虫工程师职业路线](./data/package/job/crawler.json) ## 贡献者列表 ### 顾问 * [SoftwareTeacher @SoftwareTeacher](https://blog.csdn.net/SoftwareTeacher) * [于仕琪(南科大) @u010670887](https://blog.csdn.net/u010670887) ## 开发者 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [ccat @ccat](https://blog.csdn.net/ccat) * [Alexxinlu @u010280923](https://blog.csdn.net/u010280923) * [PeasantWorker @qq_44193969](https://blog.csdn.net/qq_44193969) * [行走的人偶 @zxm2015](https://blog.csdn.net/zxm2015) ### 已发布技能树贡献者 * CS入门技能树 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [厦门陈奕迅 @u011837622](https://blog.csdn.net/u011837622) * Python技能树 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [行走的人偶 @zxm2015](https://blog.csdn.net/zxm2015) * [HansBug @HansBug](https://blog.csdn.net/HansBug) * C语言技能树 * [Alexxinlu @u010280923](https://blog.csdn.net/u010280923) * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [ccat @ccat](https://blog.csdn.net/ccat) * Java技能树 * [ccat @ccat](https://blog.csdn.net/ccat) * [湘王 @lostrex](https://blog.csdn.net/lostrex) * [GreyZeng @hotonyhui](https://blog.csdn.net/hotonyhui) * [行走的人偶 @zxm2015](https://blog.csdn.net/zxm2015) * 算法技能树 * [PeasantWorker @qq_44193969](https://blog.csdn.net/qq_44193969) * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * PostgreSQL技能树 * [ccat @ccat](https://blog.csdn.net/ccat) * OpenCV技能树 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [小白YouCans @youcans](https://blog.csdn.net/youcans) * [AI浩 @hhhhhhhhhhwwwwwwwwww](https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww) * [请叫我卷福 @xiaozhi_5638](https://blog.csdn.net/xiaozhi_5638) * [吴佳WuJia @yvettewu](https://blog.csdn.net/yvettewu) * Neo4j 技能树 * [Neo4j 开发者 @neo4jdev](https://blog.csdn.net/neo4jdev) * 云原生入门技能树 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * 网络技能树 * [鸡腿0452 @a54034079](https://blog.csdn.net/a54034079) * [Jinfeng Pan @m0_61899144](https://blog.csdn.net/m0_61899144) * [Jason_Zhou1 @Jason_Zhou1](https://blog.csdn.net/Jason_Zhou1) * [horrible_seed @horrible_seed](https://blog.csdn.net/horrible_seed) * [2002ljy @qq_45947883](https://blog.csdn.net/qq_45947883) * [Benttto @qq_53286237](https://blog.csdn.net/qq_53286237) * [fdflz001 @qq_52947385](https://blog.csdn.net/qq_52947385) * Vue技能树 * [几何心凉 @JHXL_](https://blog.csdn.net/JHXL_) * CUDA技能树 * [扫地的小和尚 @kunhe0512](https://blog.csdn.net/kunhe0512) ### 未发布技能树贡献者 * Rust 技能树 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [jacky_rust @qq_42530826](https://blog.csdn.net/qq_42530826) * .NET 技能树 * [幻灰龙 @huanhuilong](https://blog.csdn.net/huanhuilong) * [kinfey](https://blog.csdn.net/kinfey) * [Admini$trat0r @qq_41863100](https://blog.csdn.net/qq_41863100) * Go 技能树 * [麻凡_ @dengmengmian](https://blog.csdn.net/dengmengmian) ## 长成大树,长成灌木