diff --git a/.gitignore b/.gitignore index e43b0f9..0a350bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ .DS_Store +.idea/ +t_book_tag_dict +t_book_tag_sort \ No newline at end of file diff --git a/README.md b/README.md index 1bece29..6a1b03a 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,8 @@ - JVM - [JVM学习资源](jvm/learning-resources.md) - - [JVM系列文章](jvm/jvm-learning-manual.md) + - [JVM系列文章](jvm/learning-manual.md) + - [JVM速成手册](jvm/jvm.md) - 数据结构与算法 - [数据结构与算法学习资源](data-structures-algorithms/learning-resources.md) - Java集合框架 @@ -59,6 +60,8 @@ - [性能调优学习资源](perf-tuning/learning-resources.md) - Tomcat +- 面试题 + - [互联网大厂面试题](interview-questions/internet-big-factory-interview-questions.md) --- 技术博客:[IT宅](https://www.itzhai.com/) diff --git a/_sidebar.md b/_sidebar.md index 8242d14..44b4b12 100644 --- a/_sidebar.md +++ b/_sidebar.md @@ -1,7 +1,6 @@ -- [返回主站](https://www.itzhai.com/) - JVM - [JVM学习资源](jvm/learning-resources.md) - - [JVM系列文章](jvm/jvm-learning-manual.md) + - [JVM系列文章](jvm/learning-manual.md) - 数据结构与算法 - [数据结构与算法学习资源](data-structures-algorithms/learning-resources.md) - Java集合框架 @@ -28,4 +27,4 @@ - [网络学习资源](network/learning-resources.md) - 性能调优 - [性能调优学习资源](perf-tuning/learning-resources.md) -- Tomcat +- Tomcat \ No newline at end of file diff --git a/cpj/learning-resources.md b/cpj/learning-resources.md index 70353e0..be0e174 100644 --- a/cpj/learning-resources.md +++ b/cpj/learning-resources.md @@ -31,6 +31,7 @@ - 关键词:`Java内存模型` `JMM` `volatile` `synchronized` - 相关文章: - [如果有人给你撕逼Java内存模型,就把这些问题甩给他](https://www.itzhai.com/cpj/how-the-java-memory-model-works.html) + - [小姐姐都能看懂的Happens-before规则,你还愣住了?](https://mp.weixin.qq.com/s/b-kZfWY0-VO95wts0sAo0w) - 相关问题: - 什么是内存模型?为什么要有内存模型? - Java内存模型是怎样的? @@ -57,6 +58,7 @@ - [AQS与并发包中锁的通用实现](https://www.itzhai.com/cpj/aqs-and-lock-implementation-in-concurrent-packages.html) - [图解几个好玩的并发辅助工具类](https://www.itzhai.com/cpj/graphical-several-fun-concurrent-helper-classes.html) - [图解BlockingQueue阻塞队列](https://www.itzhai.com/cpj/graphical-blocking-queue.html) +- [线程池ForkJoinPool简介](http://javakk.com/215.html) - 抽象同步器AQS的实现原理 - ReentrantLock实现原理 - 非公平锁和公平锁实现的区别 diff --git a/distributed/learning-resources.md b/distributed/learning-resources.md index a9dbbcb..add9010 100644 --- a/distributed/learning-resources.md +++ b/distributed/learning-resources.md @@ -2,6 +2,79 @@ ## 在线资源 +* :office: [Kafka官方文档](https://kafka.apache.org/documentation/) + +### 消息队列之RabbitMQ + +- 关键词:`高可用` `集群` `存储架构` `顺序消费` `延迟队列` `事务消息` +- 相关文章: + - [消息队列那么多,为什么建议深入了解下RabbitMQ?](https://www.itzhai.com/articles/rabbitmq-advanced-tutorial.html) +- 相关问题: + - 什么是AMQP? + - 常见的交换机类型有哪些? + - 如何实现消息的持久化? + - RabbitMQ的连接复用有啥优势? + - RabbitMQ的消息ACK机制是如何实现的? + - RabbitMQ消息持久化机制性能如何? + - 如何避免消费过载的问题? + - 如何提高手动ACK签收的效率? + - 什么时候需要让消息重回队列? + - 如何保证消息的顺序消费? + - 如何实现可靠的消息投递? + +### 消息队列之RocketMQ + +- 关键词:`高可用` `集群` `存储架构` `顺序消费` `延迟队列` `事务消息` +- 相关文章: + - [高并发异步解耦利器:RocketMQ究竟强在哪里?](https://www.itzhai.com/articles/deep-understanding-of-rocketmq.html) +- 相关问题: + - RocketMQ如何保证消息存储的可靠性? + - RocketMQ如何保证消息队列服务的高可用? + - 如何构建一个高可用的RocketMQ双主双从最小集群? + - RocketMQ消息是如何存储的? + - RocketMQ是如何保证存取消息的效率的? + - 如何实现基于Message Key的高效查询? + - 如何实现基于Message Id的高效查询? + - RocketMQ的Topic在集群中是如何存储的? + - Broker自动创建Topic会有什么问题? + - RocketMQ如何保证消息投递的顺序性? + - RocketMQ如何保证消息消费的顺序性? + - 实现分布式事务的手段有哪些? + - RocketMQ如何实现事务消息? + - RocketMQ事务消息是如何存储的? + +### 消息队列之Kafka + +- 关键词:`Partition` `Controller` `Rebalance` `消息堆积` `延时队列` `重复消费` `offset` `ISR` +- 相关文章: + - [Kafka必知必会18问:30+图带您看透Kafka](https://www.itzhai.com/articles/deep-understanding-of-kafka.html) +- 相关问题: + - Kafka是如何存储和检索消息的?(log文件,index索引文件,timeindex索引文件) + - Kafka是如何基于offset查找消息的? + - Kafka有哪些日志清理策略?什么场景下会用到? + - ISR是干嘛的? + - Kafka总控制器是干嘛的?如何选举出来的? + - Topic的最优Leader副本是如何选举出来的? + - 什么时候会触发消费的Rebalace?Kafka中有哪些Rebalance策略? + - Rebalance是如何工作的? + - Kafka是如何保证数据可靠性的? + - Kafka是如何保证数据一致性的? + - 消费者是如何提交offset的? + - 有哪些消费历史消息的方法? + - Kafka为啥性能这么高? + - Kafka如何避免重复消费? + - Kafka如何处理消息堆积? + - 如何保证消息顺序性? + - Kafka如何实现消息传递保障? + - Kafka有哪些关键的生产者和消费者参数? + +### 分布式算法 + +- 关键词:`Raft` +- 相关文章: + - [用动图讲解分布式 Raft](https://mp.weixin.qq.com/s/US12ux7osqH_L0CtQyw-9A) +- 相关问题: + ## 书籍 * :book: 《从Paxos到Zookeeper : 分布式一致性原理与实践》 diff --git a/interview-questions/internet-big-factory-interview-questions.md b/interview-questions/internet-big-factory-interview-questions.md new file mode 100644 index 0000000..a91ccbe --- /dev/null +++ b/interview-questions/internet-big-factory-interview-questions.md @@ -0,0 +1,3 @@ +### 大厂面试经验帖 + +* [Java技术岗:我经历的 5 轮蚂蚁金服面经](https://mp.weixin.qq.com/s/RB5apHzeFVF06cGB5w9kAw) \ No newline at end of file diff --git a/itzhai@java-tech-stack.iml b/itzhai@java-tech-stack.iml new file mode 100644 index 0000000..8021953 --- /dev/null +++ b/itzhai@java-tech-stack.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/jvm/jvm.md b/jvm/jvm.md index 85df366..146609e 100644 --- a/jvm/jvm.md +++ b/jvm/jvm.md @@ -3,26 +3,6 @@ * :page_facing_up: [JVM指令集@WIKIPEDIA](https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings) * :book: 《深入理解Java虚拟机——JVM高级特性与最佳实践》 * :book: 《Java性能优化权威指南 : Java性能优化权威指南》 - - - - - - - - - - - - - - - - - - - - # JVM系列文章 diff --git a/msa/mq/learning-resources.md b/msa/mq/learning-resources.md new file mode 100644 index 0000000..326801d --- /dev/null +++ b/msa/mq/learning-resources.md @@ -0,0 +1,13 @@ +# MQ + +## 在线资源 + +## 书籍 + +### 消息队列框架 + +- 关键词:`Kafka` +- 相关文章: + - [Kafka原理篇:图解kakfa架构原理](https://mp.weixin.qq.com/s/YqItOoSNMrGhQLlghGlcOQ) +- 相关问题: + diff --git a/msa/spring-cloud/spring-cloud-learning-resources.md b/msa/spring-cloud/learning-resources.md similarity index 100% rename from msa/spring-cloud/spring-cloud-learning-resources.md rename to msa/spring-cloud/learning-resources.md diff --git a/network/learning-resources.md b/network/learning-resources.md index 966e684..8e99a8f 100644 --- a/network/learning-resources.md +++ b/network/learning-resources.md @@ -25,13 +25,40 @@ ### 网络编程 -- 关键词:`IO` +- 关键词:`IO模型` `select` `poll` `epoll` `信号驱动式IO` - 相关文章: - [高性能网络编程游记开篇杂谈,持续更新中](https://www.itzhai.com/articles/the-beginning-of-high-performance-network-programming-travel-notes.html) - [网络编程必备知识:图解Socket核心内幕以及五大IO模型](https://www.itzhai.com/articles/necessary-knowledge-of-network-programming-graphic-socket-core-insider-and-five-io-models.html) - [三分钟短文快速了解信号驱动式IO,似乎没那么完美](https://www.itzhai.com/articles/it-seems-not-so-perfect-signal-driven-io.html) + - [彻底弄懂IO复用:IO处理杀手锏,带您深入了解select,poll,epoll](https://www.itzhai.com/articles/thoroughly-understand-io-reuse-take-you-in-depth-understanding-of-select-poll-epoll.html) + - [异步IO:新时代的IO处理利器 | aio,io_uring,IOCP](https://www.itzhai.com/articles/asynchronous-programming-a-new-era-of-io-processing-weapon.html) + - [网络编程范式:高性能服务器就这么回事 | C10K,Event Loop,Reactor,Proactor](https://www.itzhai.com/articles/high-performance-network-programming-paradigm.html) + - [性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul](https://www.itzhai.com/articles/decrypt-the-threading-model-of-common-server-programs.html) + - [002-Unix网络编程-五种IO模型,阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO和高性能IO设计模式:Reactor和Proactor](https://www.cnblogs.com/bjlhx/p/12620074.html) + - 相关问题: + - 服务端连接流程是怎样的?涉及到哪些套接字API,这些套接字API底层原理又是怎样的? + - 客户端连接流程是怎样的?涉及到哪些套接字API,这些套接字API底层原理又是怎样的?三次握手和四次挥手具体是如何执行的? + - 当服务器队列满了,有新的客户端connect请求的SYN到达是怎么办? + - IO执行流程中哪些环节会导致IO阻塞?发送缓冲区和接收缓冲区是如何影响TCP和UDP阻塞状态的? + - 紫荆城关闭了监听套接字,为什么不会导致监听套接字关闭? + - 有哪些常见的IO模型? + - IO复用的执行流程是怎样的? + - select函数的使用和优缺点,以及实现原理? + - poll函数的使用和优缺点,以及实现原理? + - epoll函数的使用和优缺点,以及实现原理? + - epoll的条件触发和边缘触发,以及实现原理? + - C10K问题的挑战与核心难点是什么? + - 各种网络编程范式的及其优缺点是啥? + - 什么是Reactor和Proactor模式? + - 常见的服务器程序的网络IO模型是怎样的?(Node.js, Apache, Nginx, Netty, Redis, Tomcat, MySQL, Zuul) +### 异步编程 + +- 关键词:`异步编程` +- 相关文章: + - [一文带你彻底了解 Java 异步编程](https://xie.infoq.cn/article/37052813d58d4a3a41714c1d0) +- 相关问题: ## 书籍 diff --git a/perf-tuning/learning-resources.md b/perf-tuning/learning-resources.md index 997fbf6..55f7e3f 100644 --- a/perf-tuning/learning-resources.md +++ b/perf-tuning/learning-resources.md @@ -12,6 +12,13 @@ - [HTTP的长连接和短连接](https://www.cnblogs.com/cswuyg/p/3653263.html) - 相关问题: +--- + +- 关键词:`JVM` +- 相关文章: + - [双12压测引出的线上Full GC排查](https://mp.weixin.qq.com/s/nVDIil0irP5bCaRApewXkQ) +- 相关问题: + ### 调优工具 - 关键词:`JMeter`