# yuan-java-learning **Repository Path**: yuanchengxu/yuan-java-learning ## Basic Information - **Project Name**: yuan-java-learning - **Description**: java 学习项目 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-12-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # yuan-java-learning --- ## 介绍 java 学习项目,内容包括 计算机基础知识、java基础知识、开发应用知识、常见框架源码解读、典型架构案例解读 --- ## 目录 - [1、计算机基础知识](#1%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86) - [1.1、操作系统](#11%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F) - [1.1.1、进程与线程的区别与联系](#111%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%8C%BA%E5%88%AB%E4%B8%8E%E8%81%94%E7%B3%BB) - [1.1.2、线程的调度,线程是如何调度的](#112%E7%BA%BF%E7%A8%8B%E7%9A%84%E8%B0%83%E5%BA%A6%E7%BA%BF%E7%A8%8B%E6%98%AF%E5%A6%82%E4%BD%95%E8%B0%83%E5%BA%A6%E7%9A%84) - [1.1.3、线程的切换步骤](#113%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%88%87%E6%8D%A2%E6%AD%A5%E9%AA%A4) - [1.1.4、知道协程吗,简单说说?知道哪些开源的协程框架?](#114%E7%9F%A5%E9%81%93%E5%8D%8F%E7%A8%8B%E5%90%97%E7%AE%80%E5%8D%95%E8%AF%B4%E8%AF%B4%E7%9F%A5%E9%81%93%E5%93%AA%E4%BA%9B%E5%BC%80%E6%BA%90%E7%9A%84%E5%8D%8F%E7%A8%8B%E6%A1%86%E6%9E%B6) - [1.1.5、线程为什么会死锁?死锁的条件是什么?如何解决死锁?](#115%E7%BA%BF%E7%A8%8B%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E6%AD%BB%E9%94%81%E6%AD%BB%E9%94%81%E7%9A%84%E6%9D%A1%E4%BB%B6%E6%98%AF%E4%BB%80%E4%B9%88%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E6%AD%BB%E9%94%81) - [1.1.6、你在工作中常用到哪些linux命令?都是干什么的?](#116%E4%BD%A0%E5%9C%A8%E5%B7%A5%E4%BD%9C%E4%B8%AD%E5%B8%B8%E7%94%A8%E5%88%B0%E5%93%AA%E4%BA%9Blinux%E5%91%BD%E4%BB%A4%E9%83%BD%E6%98%AF%E5%B9%B2%E4%BB%80%E4%B9%88%E7%9A%84) - [1.1.7、内存屏障](#117%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C) - [1.1.8、指令乱序](#118%E6%8C%87%E4%BB%A4%E4%B9%B1%E5%BA%8F) - [1.1.9、分支预测](#119%E5%88%86%E6%94%AF%E9%A2%84%E6%B5%8B) - [1.1.10、CPU亲和性](#1110cpu%E4%BA%B2%E5%92%8C%E6%80%A7) - [1.1.11、Netfilter 和 iptables](#1111netfilter-%E5%92%8C-iptables) - [1.2、计算机网络](#12%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C) - [1.2.1、网络4/7层模型](#121%E7%BD%91%E7%BB%9C47%E5%B1%82%E6%A8%A1%E5%9E%8B) - [1.2.2、TCP协议 和 TCP协议的三次握手和四次挥手](#122tcp%E5%8D%8F%E8%AE%AE--%E5%92%8C--tcp%E5%8D%8F%E8%AE%AE%E7%9A%84%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B) - [1.2.3、TCP协议的报文状态和链接状态有哪些?在网络抓包时怎么用,简单说说](#123tcp%E5%8D%8F%E8%AE%AE%E7%9A%84%E6%8A%A5%E6%96%87%E7%8A%B6%E6%80%81%E5%92%8C%E9%93%BE%E6%8E%A5%E7%8A%B6%E6%80%81%E6%9C%89%E5%93%AA%E4%BA%9B%E5%9C%A8%E7%BD%91%E7%BB%9C%E6%8A%93%E5%8C%85%E6%97%B6%E6%80%8E%E4%B9%88%E7%94%A8%E7%AE%80%E5%8D%95%E8%AF%B4%E8%AF%B4) - [1.2.4、Nagel算法和ACK延迟是什么?参数的背景是什么?它是如何解决小包问题和提高载荷比的?如何关闭它?](#124nagel%E7%AE%97%E6%B3%95%E5%92%8Cack%E5%BB%B6%E8%BF%9F%E6%98%AF%E4%BB%80%E4%B9%88%E5%8F%82%E6%95%B0%E7%9A%84%E8%83%8C%E6%99%AF%E6%98%AF%E4%BB%80%E4%B9%88%E5%AE%83%E6%98%AF%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E5%B0%8F%E5%8C%85%E9%97%AE%E9%A2%98%E5%92%8C%E6%8F%90%E9%AB%98%E8%BD%BD%E8%8D%B7%E6%AF%94%E7%9A%84%E5%A6%82%E4%BD%95%E5%85%B3%E9%97%AD%E5%AE%83) - [1.2.5、Keepalive是什么?有什么用?怎么开启和关闭?](#125keepalive%E6%98%AF%E4%BB%80%E4%B9%88%E6%9C%89%E4%BB%80%E4%B9%88%E7%94%A8%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AF%E5%92%8C%E5%85%B3%E9%97%AD) - [1.2.6、keepalive是如何通过滑动窗口机制实现流量控制的?](#126keepalive%E6%98%AF%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%BA%E5%88%B6%E5%AE%9E%E7%8E%B0%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6%E7%9A%84) - [1.2.3、Http 的协议头都包含哪些字段?如Method、header、Cookies都是干什么用的?](#123http-%E7%9A%84%E5%8D%8F%E8%AE%AE%E5%A4%B4%E9%83%BD%E5%8C%85%E5%90%AB%E5%93%AA%E4%BA%9B%E5%AD%97%E6%AE%B5%E5%A6%82methodheadercookies%E9%83%BD%E6%98%AF%E5%B9%B2%E4%BB%80%E4%B9%88%E7%94%A8%E7%9A%84) - [1.2.4、http有哪些常见的状态吗?大致都是什么意思?](#124http%E6%9C%89%E5%93%AA%E4%BA%9B%E5%B8%B8%E8%A7%81%E7%9A%84%E7%8A%B6%E6%80%81%E5%90%97%E5%A4%A7%E8%87%B4%E9%83%BD%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D) - [1.2.5、如何实现https? https的默认端口是什么?](#125%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0https-https%E7%9A%84%E9%BB%98%E8%AE%A4%E7%AB%AF%E5%8F%A3%E6%98%AF%E4%BB%80%E4%B9%88) - [1.2.6、http2有了解吗?](#126http2%E6%9C%89%E4%BA%86%E8%A7%A3%E5%90%97) - [1.2.7、http2如何实现的多路复用?](#127http2%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%A4%9A%E8%B7%AF%E5%A4%8D%E7%94%A8) - [1.2.8、https的Stream、流量控制、服务端推送、头部压缩](#128https%E7%9A%84stream%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%8E%A8%E9%80%81%E5%A4%B4%E9%83%A8%E5%8E%8B%E7%BC%A9) - [1.2.9、QUIC协议是什么?如何避免前序阻塞、零RTT建连是什么?FEC的前向纠错是怎么实现的?](#129quic%E5%8D%8F%E8%AE%AE%E6%98%AF%E4%BB%80%E4%B9%88%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E5%89%8D%E5%BA%8F%E9%98%BB%E5%A1%9E%E9%9B%B6rtt%E5%BB%BA%E8%BF%9E%E6%98%AF%E4%BB%80%E4%B9%88fec%E7%9A%84%E5%89%8D%E5%90%91%E7%BA%A0%E9%94%99%E6%98%AF%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E7%9A%84) - [1.2.10、简单说说UPD协议](#1210%E7%AE%80%E5%8D%95%E8%AF%B4%E8%AF%B4upd%E5%8D%8F%E8%AE%AE) - [1.3、数据结构](#13%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84) - [1.4、算法](#14%E7%AE%97%E6%B3%95) - [2、Java基础知识](#2java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86) - [2.1、Java语法](#21java%E8%AF%AD%E6%B3%95) - [2.2、JVM](#22jvm) - [2.3、JDK](#23jdk) - [2.4、Java常用设计模式](#24java%E5%B8%B8%E7%94%A8%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F) - [3、开发应用知识](#3%E5%BC%80%E5%8F%91%E5%BA%94%E7%94%A8%E7%9F%A5%E8%AF%86) - [3.1. 常用框架](#31-%E5%B8%B8%E7%94%A8%E6%A1%86%E6%9E%B6) - [3.2、消息队列](#32%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97) - [3.3、数据库、缓存](#33%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BC%93%E5%AD%98) - [3.4、负载均衡](#34%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1) - [3.5、分布式开发技术](#35%E5%88%86%E5%B8%83%E5%BC%8F%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF) - [3.6、开发工具](#36%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7) - [3.7、容器化技术](#37%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF) --- ## 使用说明 1. 项目根据内容划分为各个模块及子模块,git clone 项目后 按照各模块的README说明阅读和操作。 2. 其中,base 为项目基础父模块,无相关内容,其他相关模块如下: * bck(Basic computer knowledge)为计算机基础知识模块; * jb(java basics)为Java基础知识模块; * dik(develop & implement knowledge)为开发应用知识模块。 --- * 注:该目录使用doctoc插件生成,doctoc是NodeJs实现的插件,1、安装:npm install doctoc -g ,2、生成目录:doctoc 待生成目录文件全限定名,如 doctoc README.md --- ## 作者 * [YuanAlex](https://gitee.com/yuanchengxu)