{"id":13462456,"url":"https://github.com/frank-lam/fullstack-tutorial","last_synced_at":"2025-04-29T18:30:06.082Z","repository":{"id":40690214,"uuid":"129332826","full_name":"frank-lam/fullstack-tutorial","owner":"frank-lam","description":"🚀 fullstack tutorial 2022，后台技术栈/架构师之路/全栈开发社区，春招/秋招/校招/面试","archived":false,"fork":false,"pushed_at":"2022-12-02T03:33:19.000Z","size":65725,"stargazers_count":11636,"open_issues_count":23,"forks_count":2437,"subscribers_count":379,"default_branch":"master","last_synced_at":"2025-04-20T22:22:45.768Z","etag":null,"topics":["computer-science","fullstack-developer","interview","java","java-interview","skill-tree"],"latest_commit_sha":null,"homepage":"https://frank-lam.github.io/fullstack-tutorial","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frank-lam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://raw.githubusercontent.com/frank-lam/fullstack-tutorial/master/assets/wechat/wx-green.png"}},"created_at":"2018-04-13T01:50:10.000Z","updated_at":"2025-04-19T17:39:59.000Z","dependencies_parsed_at":"2022-07-14T06:10:27.730Z","dependency_job_id":null,"html_url":"https://github.com/frank-lam/fullstack-tutorial","commit_stats":null,"previous_names":["frank-lam/2019_campus_apply"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frank-lam%2Ffullstack-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frank-lam%2Ffullstack-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frank-lam%2Ffullstack-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frank-lam%2Ffullstack-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frank-lam","download_url":"https://codeload.github.com/frank-lam/fullstack-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251546756,"owners_count":21606902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-science","fullstack-developer","interview","java","java-interview","skill-tree"],"created_at":"2024-07-31T12:00:48.241Z","updated_at":"2025-04-29T18:30:06.049Z","avatar_url":"https://github.com/frank-lam.png","language":"Java","readme":"\u003cdiv align=\"center\"\u003e\u003cimg src=\"assets/logo-2021.svg\" width=\"80%\"/\u003e\u003c/div\u003e\u003cbr/\u003e\n\n|              I              |           II           |           III           |           IV           |            V            |            VI            |        VII        |         VIII         | IX |            X            |            XI            |            XII            |\n| :--------------------------: | :-------------------: | :----------------------: | :---------------------: | :--------------: | :---------------: | :----------------------: | :----------------------: | :----------------------: | :----------------------: | :----------------------: | :----------------------: |\n| 算法\u003cbr /\u003e[📝](#一数据结构与算法) | Java\u003cbr/\u003e[☕️](#二java) | Python\u003cbr /\u003e[🐍](#三python) | 前端\u003cbr /\u003e[🔗](#四前端) | 数据库\u003cbr/\u003e[💾](#五数据库) | 操作系统\u003cbr/\u003e[💻](#六操作系统) | 网络通信\u003cbr/\u003e[☁️](#七网络通信) | 分布式\u003cbr/\u003e[📃](#八分布式) | 机器学习\u003cbr/\u003e [🔍](#九机器学习) |工具\u003cbr/\u003e[🔨](#十工具) |Learn\u003cbr /\u003e[📖](#learn-) |Talking\u003cbr /\u003e[💡](#talking-bulb) |\n\n\u003cdiv align=\"center\"\u003e  \n    \u003cp\u003e\n        ✨✨✨\n    \u003c/p\u003e\n    \u003cp\u003e\n \t\t和 500+ 技术达人在线交流：\n      \u003ca href=\"notes/技术交流群.md\"\u003e🤟 快来吧，和大家一起技术互动交流\u003c/a\u003e\n    \u003c/p\u003e\n  \u003cp\u003e\n    『技术博客』：\u003ca href=\"https://www.frankfeekr.cn\"\u003ewww.frankfeekr.cn\u003c/a\u003e   |  『开源贡献』：\u003ca href=\"notes/开源贡献.md\"\u003e⊱ 英雄招募令\u003c/a\u003e   |   『微信订阅号』：全栈开发社区\n  \u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"assets/zhishixingqiu.JPG\" width=\"40%\"/\u003e\u003c/div\u003e\u003cbr/\u003e\n\n\n\n🔥🔥🔥 \n\n欢迎光临 LinTools 开发者的在线导航： https://tools.frankfeekr.cn\n\n如果你有更好的在线工具，[请点击留言](https://github.com/frank-lam/fullstack-tutorial/issues/65)，持续更新！\n\n\n\n## 前言\n\n- [谈谈技术学习的一些方法论](https://www.frankfeekr.cn/2019/05/09/谈谈技术学习的一些方法论/)\n\n  在学习技术这条路上并不是一帆风顺，也一直在探索一条适合自己的学习方法。从一开始的技术小白，到现在还比较上道的老鸟，在这个过程中走了太多的弯路，想在这里和大家分享一些我的经历和学习方法。\n\n- [如何选择自己的技术栈](https://www.frankfeekr.cn/2019/05/27/如何选择自己的技术栈/)\n\n  在编程的世界里，该如何选择自己的技术栈呢。学前端？学 APP 开发？对于 Java、C++、C#、Python、PHP 又如何选择呢？人工智能现如今这么火，是不是机器学习、深度学习更高级一些呢？那么程序员又如何修炼内功呢？\n\n- [全栈开发神兵利器](notes/全栈开发神兵利器.md)\n\n  工欲善其事，必先利其器。这里我将推荐开发过程中的提效工具、开发利器、协作工具、文档技术等等。\n\n- [XP 极限编程](notes/XP极限编程.md)\n\n  敏捷软件开发中可能是最富有成效的几种方法学之一\n\n\n\n## 技能图谱\n\n- [backend skill](notes/SkillTree/backend-skill.md)\n\n  后台开发技能图谱，从程序员的内功修炼到后台语言，分布式系统架构\n\n\n\n## 一、数据结构与算法\n\n- [数据结构与算法](notes/数据结构与算法.md)\n\n　　排序算法、动态规划、递归、回溯法、贪心算法等\n\n- [海量数据处理](notes/海量数据处理.md)\n\n  数据处理典型案例，逐渐更新\n\n\n\n## 二、Java\n\n- [Java 基础概念](notes/JavaArchitecture/01-Java基础.md)\n\n　　基本概念、面向对象、关键字、基本数据类型与运算、字符串与数组、异常处理、Object 通用方法\n\n- [Java 集合框架](notes/JavaArchitecture/02-Java集合框架.md)\n\n　　数据结构 \u0026 源码分析：ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap\n\n- [Java 并发编程](notes/JavaArchitecture/03-Java并发编程.md)\n\n　　线程状态、线程机制、线程通信、J.U.C 组件、JMM、线程安全、锁优化\n\n- [Java I/O](notes/JavaArchitecture/04-Java-IO.md)\n\n　　磁盘操作、字节操作、字符操作、对象操作、网络操作、NIO\n\n- [Java 虚拟机](notes/JavaArchitecture/05-Java虚拟机.md)\n\n　　运行时数据区域、垃圾收集、内存分配机制、类加载机制、性能调优监控工具\n\n- [Java 设计模式](notes/JavaArchitecture/06-Java设计模式.md)\n\n　　Java 常见的 10 余种设计模式，全 23 种设计模式逐步更新\n\n- [Java Web](notes/JavaArchitecture/07-JavaWeb.md)\n\n　　包含 Servlet \u0026 JSP、Spring、SpringMVC、Mybatis、Hibernate、Structs2 核心思想，如 IOC、AOP 等思想。SSM 更详细请转向：[Spring](notes/JavaWeb/Spring.md) | [SpringMVC](https://github.com/frank-lam/SpringMVC_MyBatis_Learning) | [MyBatis](https://github.com/frank-lam/SpringMVC_MyBatis_Learning)\n\n\n\n## 三、Python\n\n- [Python 语言基础](notes/Python/Python简介及基础语法.md)\n\n\n\n## 四、前端\n\n- [前端知识体系](notes/Frontend/前端知识体系.md)\n- [Angular 基础知识](notes/Frontend/Angular.md)\n- [ES6+ 语法全解析](https://notes.frankfeekr.cn/docs/frontend/es6/%E9%A1%B9%E7%9B%AE%E5%87%86%E5%A4%87/%E5%89%8D%E8%A8%80)\n\n\n\n\n\u003cdetails\u003e\n\u003csummary\u003eTODO LIST\u003c/summary\u003e\n\n- HTML5\n\n- CSS3\n\n- CSS 预处理\n\n  - sass(scss)\n  - less\n  - stylus\n\n- CSS 框架\n\n  - BootStarp\n  - LayUI\n\n- JavaScript \n\n  基础语法、进阶、ES6\n\n- JavaScript 框架\n\n  - Vue\n  - React\n  - Angular\n  - jQuery\n\n- Node\n\n  常用 api、对象池、异常处理、进程通信、高并发\n\n- 静态类型检查\n\n  - TypeScript\n  - Flow\n\n- 构建/打包工具\n\n  - webpack\n  - gulp\n  - rollup\n\n- 包管理工具\n\n  - npm\n  - yarn\n  \n- 服务端渲染\n\n  - koa2\n  - express\n  - nuxt\n  - next\n\n\u003c/details\u003e\n\n\n\n## 五、数据库\n\n- [MySQL](notes/MySQL.md)\n\n  存储引擎、事务隔离级别、索引、主从复制\n\n- [Redis](notes/Redis.md)\n\n  Redis 核心知识\n\n- [SQL](notes/SQL.md)\n\n  常用 SQL 语句\n\n- [PostgreSQL](notes/PostgreSQL.md)\n\n  一个开源的关系数据库，是从伯克利写的 POSTGRES 软件包发展而来的\n\n- [InfluxDB](https://www.frankfeekr.cn/2019/07/24/influxdb-tutorial-start/)\n\n  玩转时序数据库\n\n\n\n## 六、操作系统\n\n- [操作系统原理](notes/操作系统.md)\n\n　　进程管理、死锁、内存管理、磁盘设备\n\n- [Linux](notes/Linux.md)\n\n　　基础核心概念、常用命令使用\n\n\n\n## 七、网络通信\n\n- [计算机网络](notes/计算机网络.md)\n\n　　传输层、应用层（HTTP）、网络层、网络安全\n\n- [RESTful API](notes/RESTful%20API.md)\n\n  软件架构风格、格设计原则和约束条件\n\n- [Web网络安全](notes/网络安全.md)\n\n  web前后端漏洞分析与防御，XSS 攻击、CSRF 攻击、DDoS 攻击、SQL 注入\n\n\n\n\n## 八、分布式\n\n- [Docker](notes/Docker基础.md)\n\n  容器化引擎服务\n\n- [微服务](notes/微服务.md)\n\n  微服务简介、API 网关、服务注册发现、服务通信\n\n- [Zookeeper](notes/分布式/Zookeeper.md)\n\n  分布式协调服务，服务注册发现\n\n- [Kafka](notes/MicroService/kafka/README.md)\n\n  深入浅出 Kafka，将用最极简的语言带你走进 Kafka 的消息中间件世界\n\n\n\n【说明】**分布式专题** 笔者也在学习中，这里列举了一些技能列表，笔者将局部更新。敬请期待\n\n\n\n\n\u003cdetails\u003e\n\u003csummary\u003eTODO LIST\u003c/summary\u003e\n\n- Kubernetes（k8s）\n\n  容器化部署，管理云平台中多个主机上的容器化的应用\n\n- 云计算\n\n  SaaS（软件即服务） 、PaaS（平台即服务） 、IaaS（基础架构即服务）\n\n- Zookeeper\n\n  分布式协调服务，服务注册发现\n\n- Dubbo、Thrift（RPC 框架）\n\n  分布式服务治理\n\n- 分布式事务解决方案\n\n- ActiveMQ、Kafka、RabbitMQ\n\n  分布式消息通信\n\n- 熔断，限流，降级机制\n\n- Redis\n\n  分布式缓存\n\n- Mycat\n\n  数据库路由\n\n- Nginx\n\n  反向代理\n\n- Tomcat\n\n  Web Server 服务\n\n- DevOps\n\n  自动化运维，持续集成、持续交付、持续部署\n\n\n- 分布式锁\n\n  基于 Redis、MySQL、Zookeeper 的分布式锁实现\n\n- FastDFS\n\n  轻量级分布式文件管理系统\n  \n- Go\n\n  并发的、带垃圾回收的、快速编译的语言\n\n\u003c/details\u003e\n\n\n\n## 九、机器学习\n\n- [深度学习初识](notes/DeepLearning/深度学习初识.md)\n\n- 经典机器学习算法\n\n  K 近邻算法、线性回归、梯度下降法、逻辑回归、支持向量机、决策树、集成学习\n\n\n\n\n## 十、工具\n\n- [Git](notes/git-tutorial.md)\n\n  学习指引，将用最极简的语言带你进入 Git 版本控制的世界\n\n- [Git 工作流](notes/Git工作流.md)\n\n  集中式工作流，功能分支工作流， GitFlow 工作流，Forking 工作流，Pull Requests\n\n- [正则表达式](notes/正则表达式.md)\n\n  常见符号含义，速查表\n\n- [手把手教你搭建内网穿透服务](https://github.com/frank-lam/lanproxy-nat)\n\n  基于 lanproxy 穿透服务，为你定了一键启动的服务端和客户端 Docker 镜像\n\n- [基于 SpringBoot \u0026 IDEA \u0026 JRebel 玩转远程热部署与远程调试](https://www.frankfeekr.cn/2019/07/17/springboot-idea-jrebel-hotswap/)\n\n  手把手带你玩转，远程调试与远程热部署\n\n- [什么是 TDD 及常见的测试方法](notes/软件测试.md)\n\n\n\n## Learn 📖\n\n- [LEARN_LIST](notes/LEARNLIST.md)\n\n　　包含阅读清单，学习课程两部分\n\n- [web应用开发标准流程](notes/web应用开发标准流程.md)\n\n\n\n## Talking :bulb:\n\n本仓库致力于成为一个全栈开发爱好者的学习指南，给初学者一个更明确的学习方向，同时也是对自己技能的强化和巩固。在架构师这条路上，希望和大家一起成长，帮助更多的计算机爱好者能够有一个明确的学习路径。持续不间断的维护本仓库，也欢迎有更多的极客们加入。\n\n都说好记性不如烂笔头，定期的学习和整理必然对学习巩固有所帮助，这里通过索引的方式对全栈开发技术做一个系统分类，方便随时巩固和学习，当然还有面试。在学习这条路上难免会有很多盲点和学不完的知识。有道无术，术尚可求，掌握好思维能力才能应对千变万化的技术。不要把大脑当成硬盘，也不要做高速运转的 CPU，而修行自己的大脑成为一个搜索引擎，学会分析解决问题。\n\nSince 20,May,2018\n\n\n\n## Reference\n\n个人的能力有限，在编写的过程中引用了诸多优秀的 GitHub 仓库。本项目的启发来自 [@CyC2018](https://github.com/CyC2018) 的学习笔记，是一个非常优秀的开源项目，在本仓库中部分内容引用文字和图例；引用了 [@计算所的小鼠标](https://github.com/CarpenterLee) 中对于 JCF 的源码分析和理解；引用了  [阿里面试题总结](https://www.nowcoder.com/discuss/5949) 中全部的面试题，并对面经进行了整理勘误，并进行了知识拓展和修改；引用了 [牛客网](https://www.nowcoder.com) 上的面试经验贴。也引用了知乎上的热门回答和优秀博客的回答。在这里特别鸣谢，我将每篇文章中做外链引用说明。\n\n文中我也推荐了学习的书籍和学习课程，都将附着上最高清、最形象的配图进行讲解。在文中的配图都来自自己绘制的、博客、Github、PDF书籍等等，这里没法一一感谢，谢谢你们。\n\n推荐一些优秀的开源项目，供大家参考，[reference](notes/reference.md)。\n\n\n\n## Contributors\n\nThank you to all the people who already contributed to fullstack-tutorial !\n\nPlease make sure to read the [Contributing Guide/如何给我的仓库贡献](notes/docs/如何给我的仓库贡献.md) before making a pull request. \n\n\u003ca href=\"https://github.com/frank-lam/fullstack-tutorial/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/fullstack-tutorial/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n\n\n## Stargazers over time\n\n![Stargazers over time](https://starcharts.herokuapp.com/frank-lam/fullstack-tutorial.svg)\n\n\n\n## License\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"\u003e\u003cimg alt=\"知识共享许可协议\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" /\u003e\u003c/a\u003e\n\nCopyright (c) 2021-present, Frank Lam\n\n\n\n## 关于作者 :boy:\n\n\u003cdiv align=\"center\"\u003e  \n    \u003cp\u003e\n      『作者简介』：\u003ca href=\"https://www.frankfeekr.cn/author\"\u003ehttps://www.frankfeekr.cn/author\u003c/a\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\n\u003cdiv align=\"center\"\u003e  \n    \u003cp\u003e\n        在颠覆世界的同时，也要好好关照自己。\n    \u003c/p\u003e\n\u003ca target=\"_blank\" href=\"https://frankfeekr.cn\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/badge/BLOG-frankfeekr.cn-blue.svg\" alt=\"BLOG\" data-canonical-src=\"\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"mailto:frank_lin@whu.edu.cn\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/badge/Email-frank__lin@whu.edu.cn-lightgrey.svg\" alt=\"邮箱\" data-canonical-src=\"\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003ca target=\"_blank\" href=\"https://jq.qq.com/?_wv=1027\u0026k=593WvX0\" rel=\"nofollow\" \u003e\u003cimg src=\"https://img.shields.io/badge/QQ群-862619503-green.svg\" alt=\"QQ群\" data-canonical-src=\"\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n    \u003cbr/\u003e\u003cbr/\u003e\n    \u003cp\u003e\n        from zero to hero.\n    \u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e \u003cimg src=\"assets/wechat/wx-green.png\" width=\"70%\"/\u003e\u003c/div\u003e\n\n","funding_links":["https://raw.githubusercontent.com/frank-lam/fullstack-tutorial/master/assets/wechat/wx-green.png"],"categories":["Uncategorized","Java","后端","其他","教程","Java (504)"],"sub_categories":["Uncategorized","网络服务_其他","Java"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrank-lam%2Ffullstack-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrank-lam%2Ffullstack-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrank-lam%2Ffullstack-tutorial/lists"}