Skip to content

Latest commit

 

History

History
542 lines (351 loc) · 20 KB

README.md

File metadata and controls

542 lines (351 loc) · 20 KB

随着Java学习的不断深入,发现很多知识在脑海里都是一个个碎片,建此仓库的目的希望把零碎的知识点都整合起来,提高自己的学习效率。欢迎志同道合的朋友,一起来维护该仓库

目录

网络基础

WEB

TCP协议

HTTP/HTTPS

数据结构

二叉树

红黑树

B、B+、B*树

设计模式

行为型模式

Java基础

语法

集合

HashMap

笔记

  1. 负载因子(load factor)在hashmap中起什么作用?超过它会怎么样?

    答:超过阙值(++size > loadFactor * capacity, loadFactor默认0.75)会进行扩容操作,概括的讲就是扩容后的数组大小是原数组的2倍,将原来的元素重新hashing放入到新的散列表中去

  2. hashmap中indexFor方法,将hash & length-1有什么优点?

    答:HashMap中神奇的h & (length - 1)运算

  3. 多线程下,hashmap的resize()方法为什么容易出现死循环?

    答:老生常谈,HashMap的死循环

  4. 其他面试题?

    答:这几道Java集合框架面试题在面试中几乎必问

并发

概述

线程池

AQS

Synchronized

ReentrantLock

J.U.C组件

IO

NIO、BIO、AIO

JVM

概述

垃圾回收器

JVM调优

JDK1.8+

JDK发展

框架

Spring

IOC

AOP

动态代理

Spring MVC

Spring事务

常见问题

Spring Boot

自动装配

MyBatis

面试

中间件

注册中心

zookeeper

RPC框架

Dubbo

消息队列

总结

消息队列对比

笔记

  1. 使用消息队列的好处
  • 解耦:允许我们独立的扩展或修改队列两边的处理过程;
  • 可恢复性:即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理;
  • 缓冲:有助于解决生产消息和消费消息的处理速度不一致的情况;
  • 削峰:不会因为突发的超负荷的请求而完全崩溃,消息队列能够使关键组件顶住突发的访问压力;
  • 异步通信:消息队列允许用户把消息放入队列但不立即处理它。

Kafka

基本理解

深入理解

面试

总结

  1. ZooKeeper 主要为 Kafka 提供 Broker 和 Topic 的注册以及多个 Partition 的负载均衡等功能。
  2. 在 Kafka 0.9 版本之前消费者偏移量默认被保存在 zookeeper 中,但在 0.9 版本开始 consumer 将位移提交到 Kafka 的一个内部topic(该topic默认有 50 个分区,每个分区 3 个副本)。

QMQ

去哪儿和携程内部使用的消息队列

搜索引擎

ElasticSearch

参考es.md

配置中心

数据库

Mysql

概述

索引

聚簇索引和非聚簇索引

锁和事务

主从同步

查询优化

总结

笔记

Redis

HBase

分布式设计

负载均衡

算法

轮询与一致性HASH

分布式锁

分布式限流

  • 微服务-高并发下接口如何做到优雅的限流

    限流算法:

    • 计数器限流

      原理:计数器限流的本质是单位时间内,访问量到达设置的限制后,在这个时间段没有过去之前,超过阈值的访问量拒绝处理。

      缺点:限流容易造成热点,某个时间段内(非单位时间内)来看会超过阈值

    • 令牌桶限流

      原理:每隔一定的时间往桶内放入固定数量的定牌,当请求到来时去容器内先获取令牌,拿到了,开始处理,拿不到拒绝处理或者短暂的等待

    • 漏斗限流

稳定性 & 高可用

CAP与BASE

服务治理

分布式一致

思想设计

微服务设计

领域模型

阿里盒马领域驱动设计实践

错误排查

Http Client

Review

推荐书籍

Java

  • 《深入理解 Java 虚拟机》

Spring

Spring Boot

代码风格

  • 《clean code》

中间件相关

  • 《Redis设计与实现》

面试

P6阶段

个人成长

资料整理