本仓库为【Java工程师技术指南】力求打造最完整最实用的Java工程师学习指南! 这些文章和总结都是我近几年学习Java总结和整理出来的,非常实用,对于学习Java后端的朋友来说应该是最全面最完整的技术仓库。 我靠着这些内容进行复习,拿到了BAT等大厂的offer,这个仓库也已经帮助了很多的Java学习者,如果对你有用,希望能给个star支持我,谢谢! 为了更好地讲清楚每个知识模块,我们也参考了很多网上的优质博文,力求不漏掉每一个知识点,所有参考博文都将声明转载来源,如有侵权,请联系我。 点击关注微信公众号及时获取笔主最新更新文章,并可免费领取Java工程师必备学习资源,以及我原创的电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》 推荐使用 https://how2playlife.com/ 在线阅读,在线阅读内容本仓库同步一致。这种方式阅读的优势在于:左侧边栏有目录,阅读体验更好。 目录 Java基础 基础知识 容器 设计模式 JavaWeb Srping SpringMVC SpringBoot Java进阶 并发 JVM Java网络编程 计算机基础 计算机网络 操作系统 Linux相关 数据结构与算法 数据结构 算法 数据库 MySQL 缓存 Redis 消息队列 Kafka 大后端 分布式 理论 实战 面试指南 校招指南 面经 工具 Git 资料 书单 待办 说明 微信公众号 Java基础 基础知识 面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 Java类和包 序列化和反序列化 继承、封装、多态的实现原理 容器 Java集合类总结 Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入理解LinkedHashMap和LRU缓存 Java集合详解6:TreeMap和红黑树 Java集合详解7:HashSet,TreeSet与LinkedHashSet Java集合详解8:Java集合类细节精讲 设计模式 设计模式学习总结 初探Java设计模式1:创建型模式(工厂,单例等).md 初探Java设计模式2:结构型模式(代理模式,适配器模式等).md 初探Java设计模式3:行为型模式(策略,观察者等).md 初探Java设计模式4:JDK中的设计模式.md 初探Java设计模式5:Spring涉及到的9种设计模式.md JavaWeb 走进JavaWeb技术世界1:JavaWeb的由来和基础知识 走进JavaWeb技术世界2:JSP与Servlet的曾经与现在 走进JavaWeb技术世界3:JDBC的进化与连接池技术 走进JavaWeb技术世界4:Servlet 工作原理详解 走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程 走进JavaWeb技术世界6:Tomcat5总体架构剖析 走进JavaWeb技术世界7:Tomcat和其他WEB容器的区别 走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程 走进JavaWeb技术世界9:Java日志系统的诞生与发展 走进JavaWeb技术世界10:从JavaBean讲到Spring 走进JavaWeb技术世界11:单元测试框架Junit 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven 走进JavaWeb技术世界13:Hibernate入门经典与注解式开发 走进JavaWeb技术世界14:Mybatis入门 深入JavaWeb技术世界15:深入浅出Mybatis基本原理 走进JavaWeb技术世界16:极简配置的SpringBoot Spring Spring源码剖析1:Spring概述 Spring源码剖析2:初探Spring IOC核心流程 Spring源码剖析3:Spring IOC容器的加载过程 Spring源码剖析4:懒加载的单例Bean获取过程分析 Spring源码剖析5:JDK和cglib动态代理原理详解 Spring源码剖析6:Spring AOP概述 Spring源码剖析7:AOP实现原理详解 Spring源码剖析8:Spring事务概述 Spring源码剖析9:Spring事务源码剖析 SpringMVC SpringMVC源码分析1:SpringMVC概述 SpringMVC源码分析2:SpringMVC设计理念与DispatcherServlet SpringMVC源码分析3:DispatcherServlet的初始化与请求转发 SpringMVC源码分析4:DispatcherServlet如何找到正确的Controller SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解 SpringMVC源码分析6:SpringMVC的视图解析原理 SpringBoot todo SpringCloud todo Java进阶 并发 Java并发指南1:并发基础与Java多线程 Java并发指南2:深入理解Java内存模型JMM Java并发指南3:并发三大问题与volatile关键字,CAS操作 Java并发指南4:Java中的锁 Lock和synchronized Java并发指南5:JMM中的final关键字解析 Java并发指南6:Java内存模型JMM总结 Java并发指南7:JUC的核心类AQS详解 Java并发指南8:AQS中的公平锁与非公平锁,Condtion Java并发指南9:AQS共享模式与并发工具类的实现 Java并发指南10:Java 读写锁 ReentrantReadWriteLock 源码分析 Java并发指南11:解读 Java 阻塞队列 BlockingQueue Java并发指南12:深度解读 java 线程池设计思想及源码实现 Java并发指南13:Java 中的 HashMap 和 ConcurrentHashMap 全解析 Java并发指南14:JUC中常用的Unsafe和Locksupport Java并发指南15:Fork join并发框架与工作窃取算法剖析 Java并发编程学习总结 JVM JVM总结 深入理解JVM虚拟机1:JVM内存的结构与消失的永久代 深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法 深入理解JVM虚拟机3:垃圾回收器详解 深入理解JVM虚拟机4:Javaclass介绍与解析实践 深入理解JVM虚拟机5:虚拟机字节码执行引擎 深入理解JVM虚拟机6:深入理解JVM类加载机制 深入理解JVM虚拟机7:JNDI,OSGI,Tomcat类加载器实现 深入了解JVM虚拟机8:Java的编译期优化与运行期优化 深入理解JVM虚拟机9:JVM监控工具与诊断实践 深入理解JVM虚拟机10:JVM常用参数以及调优实践 深入理解JVM虚拟机11:Java内存异常原理与实践 深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战 深入理解JVM虚拟机13:再谈四种引用及GC实践 深入理解JVM虚拟机14:GC调优思路与常用工具 Java网络编程 Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型 Java网络编程和NIO详解3:IO模型与Java网络编程模型 Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java网络编程和NIO详解6:Linux epoll实现原理详解 Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 Java网络编程与NIO详解8:浅析mmap和Direct Buffer Java网络编程和NIO详解9:基于NIO的网络编程框架Netty Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型 Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO) 计算机基础 计算机网络 计算机网络学习总结 操作系统 操作系统学习总结 Linux相关 Linux内核与基础命令学习总结 数据结构与算法 todo 数据结构 todo 算法 剑指offer 数据库 MySQL Mysql原理与实践总结 重新学习Mysql数据库1:无废话MySQL入门 重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB 重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 重新学习Mysql数据库4:Mysql索引实现原理和相关数据结构算法 重新学习Mysql数据库5:根据MySQL索引原理进行分析与优化 重新学习MySQL数据库6:浅谈MySQL的中事务与锁 重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 重新学习Mysql数据库8:MySQL的事务隔离级别实战 重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系 重新学习MySQL数据库10:MySQL里的那些日志们 重新学习MySQL数据库11:以Java的视角来聊聊SQL注入 重新学习MySQL数据库12:从实践sql语句优化开始 重新学习Mysql数据库13:Mysql主从复制,读写分离,分表分库策略与实践 缓存 Redis Redis原理与实践总结 探索Redis设计与实现开篇:什么是Redis 探索Redis设计与实现1:Redis 的基础数据结构概览 探索Redis设计与实现2:Redis内部数据结构详解——dict 探索Redis设计与实现3:Redis内部数据结构详解——sds 探索Redis设计与实现4:Redis内部数据结构详解——ziplist 探索Redis设计与实现5:Redis内部数据结构详解——quicklist 探索Redis设计与实现6:Redis内部数据结构详解——skiplist 探索Redis设计与实现7:Redis内部数据结构详解——intset 探索Redis设计与实现8:连接底层与表面的数据结构robj 探索Redis设计与实现9:数据库redisDb与键过期删除策略 探索Redis设计与实现10:Redis的事件驱动模型与命令执行过程 探索Redis设计与实现11:使用快照和AOF将Redis数据持久化到硬盘中 探索Redis设计与实现12:浅析Redis主从复制 探索Redis设计与实现13:Redis集群机制及一个Redis架构演进实例 探索Redis设计与实现14:Redis事务浅析与ACID特性介绍 探索Redis设计与实现15:Redis分布式锁进化史 消息队列 Kafka 大后端 后端技术杂谈开篇:云计算,大数据与AI的故事 后端技术杂谈1:搜索引擎基础倒排索引 后端技术杂谈2:搜索引擎工作原理 后端技术杂谈3:Lucene基础原理与实践 后端技术杂谈4:Elasticsearch与solr入门实践 后端技术杂谈5:云计算的前世今生 后端技术杂谈6:白话虚拟化技术 后端技术杂谈7:OpenStack的基石KVM 后端技术杂谈8:OpenStack架构设计 后端技术杂谈9:先搞懂Docker核心概念吧 后端技术杂谈10:Docker 核心技术与实现原理 后端技术杂谈11:十分钟理解Kubernetes核心概念 后端技术杂谈12:捋一捋大数据研发的基本概念 分布式 理论 分布式系统理论基础开篇:从放弃到入门 分布式系统理论基础1: 一致性、2PC和3PC 分布式系统理论基础2:CAP 分布式系统理论基础3: 时间、时钟和事件顺序 分布式系统理论基础4:Paxos 分布式系统理论基础5:选举、多数派和租约 分布式系统理论基础6:Raft、Zab 分布式系统理论进阶7:Paxos变种和优化 分布式系统理论基础8:zookeeper分布式协调服务 技术 搞懂分布式技术1:分布式系统的一些基本概念 搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法 搞懂分布式技术3:初探分布式协调服务zookeeper 搞懂分布式技术4:ZAB协议概述与选主流程详解 搞懂分布式技术5:Zookeeper的配置与集群管理实战 搞懂分布式技术6:Zookeeper典型应用场景及实践 搞懂分布式技术7:负载均衡概念与主流方案 搞懂分布式技术8:负载均衡原理剖析 搞懂分布式技术9:Nginx负载均衡原理与实践 搞懂分布式技术10:LVS实现负载均衡的原理与实践 搞懂分布式技术11:分布式session解决方案与一致性hash 搞懂分布式技术12:分布式ID生成方案 搞懂分布式技术13:缓存的那些事 搞懂分布式技术14:Spring Boot使用注解集成Redis缓存 搞懂分布式技术15:缓存更新的套路 搞懂分布式技术16:浅谈分布式锁的几种方案 搞懂分布式技术17:浅析分布式事务 搞懂分布式技术18:分布式事务常用解决方案 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 搞懂分布式技术20:消息队列因何而生 搞懂分布式技术21:浅谈分布式消息技术 Kafka 面试指南 todo 校招指南 todo 面经 todo 工具 todo 资料 todo 书单 todo 待办 springboot和springcloud 微信公众号 Java技术江湖 如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发! Java工程师技术学习资料: 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 “Java” 即可免费无套路获取。 Java进阶架构师资料: 关注公众号后回复 ”架构师“ 即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容丰富,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源 个人公众号:程序员黄小斜 黄小斜是 985 硕士,阿里巴巴Java工程师,在自学编程、技术求职、Java学习等方面有丰富经验和独到见解,希望帮助到更多想要从事互联网行业的程序员们。 作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得,以及自学编程和Java技术栈的相关干货。 黄小斜是一个斜杠青年,坚持学习和写作,相信终身学习的力量,希望和更多的程序员交朋友,一起进步和成长! 原创电子书: 关注微信公众号【程序员黄小斜】后回复 "原创电子书" 即可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》这份电子书总结了我2年的Java学习之路,包括学习方法、技术总结、求职经验和面试技巧等内容,已经帮助很多的程序员拿到了心仪的offer! 程序员3T技术学习资源: 一些程序员学习技术的资源大礼包,关注公众号【程序员黄小斜】后,后台回复关键字 “资料” 即可免费无套路获取,包括Java、python、C++、大数据、机器学习、前端、移动端等方向的技术资料。