{"id":13458795,"url":"https://github.com/dunwu/java-tutorial","last_synced_at":"2025-10-07T19:42:55.260Z","repository":{"id":41044921,"uuid":"112437215","full_name":"dunwu/java-tutorial","owner":"dunwu","description":":coffee: 老司机在 Java 技术领域的十年积累。","archived":false,"fork":false,"pushed_at":"2024-12-31T00:09:46.000Z","size":18074,"stargazers_count":1903,"open_issues_count":13,"forks_count":276,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-04-06T05:03:16.501Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://dunwu.github.io/java-tutorial/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dunwu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-29T06:39:45.000Z","updated_at":"2025-04-01T03:26:16.000Z","dependencies_parsed_at":"2024-07-31T09:09:50.433Z","dependency_job_id":"af9cb903-56fe-4162-a155-5b143fa31b2b","html_url":"https://github.com/dunwu/java-tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunwu%2Fjava-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunwu%2Fjava-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunwu%2Fjava-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunwu%2Fjava-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dunwu","download_url":"https://codeload.github.com/dunwu/java-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248688525,"owners_count":21145763,"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":[],"created_at":"2024-07-31T09:00:57.445Z","updated_at":"2025-10-07T19:42:55.159Z","avatar_url":"https://github.com/dunwu.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://dunwu.github.io/java-tutorial/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/dunwu/images/master/common/dunwu-logo.png\" alt=\"logo\" width=\"150px\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\n  \u003ca href=\"https://github.com/dunwu/java-tutorial\"\u003e\n      \u003cimg alt=\"star\" class=\"no-zoom\" src=\"https://img.shields.io/github/stars/dunwu/java-tutorial?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/dunwu/java-tutorial\"\u003e\n      \u003cimg alt=\"fork\" class=\"no-zoom\" src=\"https://img.shields.io/github/forks/dunwu/java-tutorial?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/dunwu/java-tutorial/commits/master\"\u003e\n      \u003cimg alt=\"build\" class=\"no-zoom\" src=\"https://img.shields.io/github/actions/workflow/status/dunwu/java-tutorial/deploy.yml?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh\"\u003e\n      \u003cimg alt=\"code style\" class=\"no-zoom\" src=\"https://img.shields.io/github/license/dunwu/java-tutorial?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eJavaTutorial\u003c/h1\u003e\n\n\u003e ☕ **java-tutorial** 是一个 Java 教程，汇集一个老司机在 Java 领域的十年积累。\n\u003e\n\u003e - 🔁 项目同步维护：[Github](https://github.com/dunwu/java-tutorial/) | [Gitee](https://gitee.com/turnon/java-tutorial/)\n\u003e - 📖 电子书阅读：[Github Pages](https://dunwu.github.io/java-tutorial/) | [Gitee Pages](https://turnon.gitee.io/java-tutorial/)\n\u003e\n\u003e 说明：\n\u003e\n\u003e - 下面的内容清单中，凡是有 📚 标记的技术，都已整理成详细的教程。\n\u003e - 部分技术因为可以应用于不同领域，所以可能会同时出现在不同的类别下。\n\n## 📖 内容\n\n### JavaSE\n\n\u003e 📚 [javacore](https://dunwu.github.io/javacore/) 是一个 Java 核心技术教程。内容包含：Java 基础特性、Java 高级特性、Java 并发、JVM、Java IO 等。\n\n### JavaEE\n\n#### JavaWeb\n\n- [JavaWeb 面经](docs/02.JavaEE/01.JavaWeb/99.JavaWeb面经.md)\n- [JavaWeb 之 Servlet 指南](docs/02.JavaEE/01.JavaWeb/01.JavaWeb之Servlet指南.md)\n- [JavaWeb 之 Jsp 指南](docs/02.JavaEE/01.JavaWeb/02.JavaWeb之Jsp指南.md)\n- [JavaWeb 之 Filter 和 Listener](docs/02.JavaEE/01.JavaWeb/03.JavaWeb之Filter和Listener.md)\n- [JavaWeb 之 Cookie 和 Session](docs/02.JavaEE/01.JavaWeb/04.JavaWeb之Cookie和Session.md)\n\n#### Java 服务器\n\n\u003e Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。\n\u003e\n\u003e Nginx 是目前最流行的反向代理服务器，也常用于负载均衡。\n\n- [Tomcat 快速入门](docs/02.JavaEE/02.服务器/01.Tomcat/01.Tomcat快速入门.md)\n- [Tomcat 连接器](docs/02.JavaEE/02.服务器/01.Tomcat/02.Tomcat连接器.md)\n- [Tomcat 容器](docs/02.JavaEE/02.服务器/01.Tomcat/03.Tomcat容器.md)\n- [Tomcat 优化](docs/02.JavaEE/02.服务器/01.Tomcat/04.Tomcat优化.md)\n- [Tomcat 和 Jetty](docs/02.JavaEE/02.服务器/01.Tomcat/05.Tomcat和Jetty.md)\n- [Jetty](docs/02.JavaEE/02.服务器/02.Jetty.md)\n\n### Java 软件\n\n#### Java 构建\n\n\u003e Java 项目需要通过 [**构建工具**](docs/11.软件/01.构建) 来管理项目依赖，完成编译、打包、发布、生成 JavaDoc 等任务。\n\u003e\n\u003e - 目前最主流的构建工具是 Maven，它的功能非常强大。\n\u003e - Gradle 号称是要替代 Maven 等构件工具，它的版本管理确实简洁，但是需要学习 Groovy，学习成本比 Maven 高。\n\u003e - Ant 功能比 Maven 和 Gradle 要弱，现代 Java 项目基本不用了，但也有一些传统的 Java 项目还在使用。\n\n- [Maven](docs/11.软件/01.构建/01.Maven) 📚\n  - [Maven 快速入门](docs/11.软件/01.构建/01.Maven/01.Maven快速入门.md)\n  - [Maven 教程之 pom.xml 详解](docs/11.软件/01.构建/01.Maven/02.Maven教程之pom.xml详解.md)\n  - [Maven 教程之 settings.xml 详解](docs/11.软件/01.构建/01.Maven/03.Maven教程之settings.xml详解.md)\n  - [Maven 实战问题和最佳实践](docs/11.软件/01.构建/01.Maven/04.Maven实战问题和最佳实践.md)\n  - [Maven 教程之发布 jar 到私服或中央仓库](docs/11.软件/01.构建/01.Maven/05.Maven教程之发布jar到私服或中央仓库.md)\n  - [Maven 插件之代码检查](docs/11.软件/01.构建/01.Maven/06.Maven插件之代码检查.md)\n- [Ant 简易教程](docs/11.软件/01.构建/02.Ant.md)\n\n#### Java IDE\n\n\u003e 自从有了 [**IDE**](docs/11.软件/02.IDE)，写代码从此就告别了刀耕火种的蛮荒时代。\n\u003e\n\u003e - [Eclipse](docs/11.软件/02.IDE/02.Eclipse.md) 是久负盛名的开源 Java IDE，我的学生时代一直使用它写 Java。\n\u003e - 曾经抗拒从转 [Intellij Idea](docs/11.软件/02.IDE/01.Intellij.md) ，但后来发现真香，不得不说，确实是目前最优秀的 Java IDE。\n\u003e - 你可以在 [vscode](docs/11.软件/02.IDE/03.VsCode.md) 中写各种语言，只要安装相应插件即可。如果你的项目中使用了很多种编程语言，又懒得在多个 IDE 之间切换，那么就用 vscode 来一网打尽吧。\n\n- [Intellij Idea](docs/11.软件/02.IDE/01.Intellij.md)\n- [Eclipse](docs/11.软件/02.IDE/02.Eclipse.md)\n- [vscode](docs/11.软件/02.IDE/03.VsCode.md)\n\n#### Java 监控诊断\n\n\u003e [监控/诊断](docs/11.软件/03.监控诊断) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据，帮助开发者、使用者快速定位问题，找到性能瓶颈。\n\n- [监控工具对比](docs/11.软件/03.监控诊断/01.监控工具对比.md)\n- [CAT](docs/11.软件/03.监控诊断/02.CAT.md)\n- [Zipkin](docs/11.软件/03.监控诊断/03.Zipkin.md)\n- [SkyWalking](docs/11.软件/03.监控诊断/04.Skywalking.md)\n- [Arthas](docs/11.软件/03.监控诊断/05.Arthas.md)\n\n### Java 工具\n\n#### Java IO\n\n- [JSON 序列化](docs/12.工具/01.IO/01.JSON序列化.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson)\n- [二进制序列化](docs/12.工具/01.IO/02.二进制序列化.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization)\n\n#### JavaBean 工具\n\n- [Lombok](docs/12.工具/02.JavaBean/01.Lombok.md)\n- [Dozer](docs/12.工具/02.JavaBean/02.Dozer.md)\n\n#### Java 模板引擎\n\n- [Freemark](docs/12.工具/03.模板引擎/01.Freemark.md)\n- [Velocity](docs/12.工具/03.模板引擎/03.Velocity.md)\n- [Thymeleaf](docs/12.工具/03.模板引擎/02.Thymeleaf.md)\n\n#### Java 测试工具\n\n- [Junit](docs/12.工具/04.测试/01.Junit.md)\n- [Mockito](docs/12.工具/04.测试/02.Mockito.md)\n- [Jmeter](docs/12.工具/04.测试/03.Jmeter.md)\n- [JMH](docs/12.工具/04.测试/04.JMH.md)\n\n#### 其他\n\n- [Java 日志](docs/12.工具/99.其他/01.Java日志.md)\n- [Java 工具包](docs/12.工具/99.其他/02.Java工具包.md)\n- [Reflections](docs/12.工具/99.其他/03.Reflections.md)\n- [JavaMail](docs/12.工具/99.其他/04.JavaMail.md)\n- [Jsoup](docs/12.工具/99.其他/05.Jsoup.md)\n- [Thumbnailator](docs/12.工具/99.其他/06.Thumbnailator.md)\n- [Zxing](docs/12.工具/99.其他/07.Zxing.md)\n\n### Java 框架\n\n#### ORM\n\n- [Mybatis 快速入门](docs/13.框架/11.ORM/01.Mybatis快速入门.md)\n- [Mybatis 原理](docs/13.框架/11.ORM/02.Mybatis原理.md)\n\n#### Spring\n\n📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。\n\n#### Spring Boot\n\n📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。\n\n#### 安全\n\n\u003e Java 领域比较流行的安全框架就是 shiro 和 spring-security。\n\u003e\n\u003e shiro 更为简单、轻便，容易理解，能满足大多数基本安全场景下的需要。\n\u003e\n\u003e spring-security 功能更丰富，也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发，所以集成 spring 和 spring-boot 框架更容易。\n\n- [Shiro](docs/13.框架/12.安全/01.Shiro.md)\n- [SpringSecurity](docs/13.框架/12.安全/02.SpringSecurity.md)\n\n#### IO\n\n- [Shiro](docs/13.框架/13.IO/01.Netty.md)\n\n#### 微服务\n\n- [Dubbo](docs/13.框架/14.微服务/01.Dubbo.md)\n\n### Java 中间件\n\n#### MQ\n\n\u003e 消息队列（Message Queue，简称 MQ）技术是分布式应用间交换信息的一种技术。\n\u003e\n\u003e 消息队列主要解决应用耦合，异步消息，流量削锋等问题，实现高性能，高可用，可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。\n\u003e\n\u003e 如果想深入学习各种消息队列产品，建议先了解一下 [消息队列基本原理](https://dunwu.github.io/blog/pages/1fd240/) ，有助于理解消息队列特性的实现和设计思路。\n\n- [消息队列面试](docs/14.中间件/01.MQ/01.消息队列面试.md)\n- [消息队列基本原理](docs/14.中间件/01.MQ/02.消息队列基本原理.md)\n- [RocketMQ](docs/14.中间件/01.MQ/03.RocketMQ.md)\n- [ActiveMQ](docs/14.中间件/01.MQ/04.ActiveMQ.md)\n\n#### 缓存\n\n\u003e 缓存可以说是优化系统性能的第一手段，在各种技术中都会有缓存的应用。\n\u003e\n\u003e 如果想深入学习缓存，建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html)，有助于理解缓存的特性、原理，使用缓存常见的问题及解决方案。\n\n- [缓存面试题](docs/14.中间件/02.缓存/01.缓存面试题.md)\n- [Java 缓存中间件](docs/14.中间件/02.缓存/02.Java缓存中间件.md)\n- [Memcached 快速入门](docs/14.中间件/02.缓存/03.Memcached.md)\n- [Ehcache 快速入门](docs/14.中间件/02.缓存/04.Ehcache.md)\n- [Java 进程内缓存](docs/14.中间件/02.缓存/05.Java进程内缓存.md)\n- [Http 缓存](docs/14.中间件/02.缓存/06.Http缓存.md)\n\n#### 流量控制\n\n- [Hystrix](docs/14.中间件/03.流量控制/01.Hystrix.md)\n\n### [大数据](https://dunwu.github.io/bigdata-tutorial)\n\n\u003e 大数据技术点以归档在：[bigdata-tutorial](https://dunwu.github.io/bigdata-tutorial)\n\n- [Hdfs](https://dunwu.github.io/bigdata-tutorial/hdfs) 📚\n- [Hbase](https://dunwu.github.io/bigdata-tutorial/hbase) 📚\n- [Hive](https://dunwu.github.io/bigdata-tutorial/hive) 📚\n- [MapReduce](https://dunwu.github.io/bigdata-tutorial/mapreduce)\n- [Yarn](https://dunwu.github.io/bigdata-tutorial/yarn)\n- [ZooKeeper](https://dunwu.github.io/bigdata-tutorial/zookeeper) 📚\n- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚\n- Spark\n- Storm\n- [Flink](https://dunwu.github.io/bigdata-tutorial/tree/master/docs/flink)\n\n## 📚 资料\n\n- Java 经典书籍\n  - [《Effective Java 中文版》](https://item.jd.com/12507084.html) - 本书介绍了在 Java 编程中 78 条极具实用价值的经验规则，这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。同推荐《重构 : 改善既有代码的设计》、《代码整洁之道》、《代码大全》，有一定的内容重叠。\n  - [《Java 并发编程实战》](https://item.jd.com/10922250.html) - 本书深入浅出地介绍了 Java 线程和并发，是一本完美的 Java 并发参考手册。\n  - [《深入理解 Java 虚拟机》](https://item.jd.com/11252778.html) - 不去了解 JVM 的工程师，和咸鱼有什么区\n  - [《Maven 实战》](https://item.jd.com/10476794.html) - 国内最权威的 Maven 专家的力作，唯一一本哦！\n- 其他领域书籍\n  - [《Redis 设计与实现》](https://item.jd.com/11486101.html) - 系统而全面地描述了 Redis 内部运行机制。图示丰富，描述清晰，并给出大量参考信息，是 NoSQL 数据库开发人员案头必备。\n  - [《鸟哥的 Linux 私房菜 （基础学习篇）》](https://item.jd.com/12443890.html) - 本书是最具知名度的 Linux 入门书《鸟哥的 Linux 私房菜基础学习篇》的最新版，全面而详细地介绍了 Linux 操作系统。内容非常全面，建议挑选和自己实际工作相关度较高的，其他部分有需要再阅读。\n  - [《Head First 设计模式》](https://item.jd.com/10100236.html) - 《Head First 设计模式》(中文版)共有 14 章，每章都介绍了几个设计模式，完整地涵盖了四人组版本全部 23 个设计模式。\n  - [《HTTP 权威指南》](https://item.jd.com/11056556.html) - 本书尝试着将 HTTP 中一些互相关联且常被误解的规则梳理清楚，并编写了一系列基于各种主题的章节，对 HTTP 各方面的特性进行了介绍。纵观全书，对 HTTP“为什么”这样做进行了详细的解释，而不仅仅停留在它是“怎么做”的。\n  - [《TCP/IP 详解 系列》](https://item.jd.com/11966296.html) - 完整而详细的 TCP/IP 协议指南。针对任何希望理解 TCP/IP 协议是如何实现的读者设计。\n  - [《剑指 Offer：名企面试官精讲典型编程题》](https://item.jd.com/12163054.html) - 剖析了 80 个典型的编程面试题，系统整理基础知识、代码质量、解题思路、优化效率和综合能力这 5 个面试要点。\n\n## 🚪 传送\n\n◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾\n\n\u003e 你可能会感兴趣：\n\n- [Java 教程](https://github.com/dunwu/java-tutorial) 📚\n- [JavaCore 教程](https://dunwu.github.io/javacore/) 📚\n- [Spring 教程](https://dunwu.github.io/spring-tutorial/) 📚\n- [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 📚\n- [数据库教程](https://dunwu.github.io/db-tutorial/) 📚\n- [数据结构和算法教程](https://dunwu.github.io/algorithm-tutorial/) 📚\n- [Linux 教程](https://dunwu.github.io/linux-tutorial/) 📚\n- [Nginx 教程](https://github.com/dunwu/nginx-tutorial/) 📚\n","funding_links":[],"categories":["Java","Java 基础","开发工具\u0026框架"],"sub_categories":["教程"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdunwu%2Fjava-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdunwu%2Fjava-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdunwu%2Fjava-tutorial/lists"}