小于 1 分钟
- JAVA48
- SPRINGBOOT28
- 面试28
- SPRING23
- REACT10
- 前端10
- SPARK10
- K8S9
- 大数据8
- DESIGN PATTERN8
- 设计模式8
- DOCKER7
- DDD6
- 架构设计6
- 云原生4
- MYBATIS4
- SPRINGMVC4
- KAFKA3
- FLINK3
- ORM3
- MYSQL3
- 分布式3
- MVC2
- project2
- PROBLEM2
- REDIS2
- JVM2
- Spring1
- SpringFrameWork1
- ABOUT1
- MAVEN1
- ALGORITHM1
- HBASE1
- 缓存1
小于 1 分钟
工具说明
- jinfo:可以输出并修改运行时的java 进程的opts。
- jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。
- jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
- jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。
JPS
Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便。
大约 11 分钟
写在前面,本文先讲解一下springboot实现得starter组件机制,然后基于此原理实现一个自定义格式化日期starter组件,本文将从一下几方面开始:
- 为什么要使用starter小组件
- 常见的一些starter场景
- Mybatis-starter定义分析
- 开发starter组件的要素
- 实现日期格式化starter小组件
为什么使用starter组件
早期开发spring项目中,比如需要引入ORM框架,通常需要做以下三个步骤:
- 到maven仓库去找需要引入的mybatis jar包,选取合适的版本。
- 到maven仓库去找mybatis-spring整合的jar包,选取合适的版本。
- 在spring的applicationContext.xml文件中配置dataSource和mybatis相关信息。
大约 8 分钟
自动配置原理
主程序:
@MapperScan("com.atguigu.admin.mapper")
@ServletComponentScan(basePackages = "com.atguigu.admin")
@SpringBootApplication(exclude = RedisAutoConfiguration.class)
public class Boot05WebAdminApplication {
public static void main(String[] args) {
SpringApplication.run(Boot05WebAdminApplication.class, args);
}
}
大约 22 分钟
1、SpringBoot Actuator
1、简介
未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
大约 6 分钟
- 14. Kafk手册
- 14.1. 初级
- 14.2. 中级
- 14.2.1. Kafka 的设计架构?
- 14.2.2. 零拷贝技术
- 14.2.3. 高性能高吞吐
- 14.2.4. Kafka 分区的目的?
- 14.2.5. 说一下什么是副本?
- 14.2.6. Kafka消息是采用Pull模式,还是Push模式?
- 14.2.7. kafka消息队列优点或者对比
- 14.2.8. Kafka的设计是什么样的呢?
- 14.2.9. Kafka判断一个节点是否还活着有那两个条件?
- 14.2.10. Kafa consumer是否可以消费指定分区消息?
- 14.2.11. producer是否直接将数据发送到broker的leader(主节点)?
- 14.2.12. Kafka存储在硬盘上的消息格式是什么?
- 14.2.13. Kafka高效文件存储设计特点:
- 14.2.14. Kafka工作流程
- 14.2.15. 生产者向 Kafka 发送消息的执行流程介绍一下?
- 14.2.16. Producer 发送的一条 message 中包含哪些信息?
- 14.2.17. kafka 如何实现多线程的消费?
- 14.2.18. 如何保证Kafka的消息有序
- 14.2.19. kafka 如何保证数据的不重复和不丢失?
- 14.2.20. kafka如何保证对应类型数据写入相同的分区
- 14.2.21. Kafka创建Topic时如何将分区放置到不同的Broker中
- 14.2.22. Kafka新建的分区会在哪个目录下创建
- 14.2.23. partition的数据如何保存到硬盘
- 14.2.24. Kafka的消费者如何消费数据
- 14.2.25. kafaka生产数据时数据的分组策略
- 14.2.26. kafka集群架构
- 14.2.27. Kafka的工作机制
- 14.2.28. kafka文件存储结构
- 14.2.29. kafka应用场景
- 14.2.30. kafka生产者写入数据
- 14.2.31. kafka写入数据可靠性保障
- 14.2.32. kafka的ack机制
- 14.2.33. kafka 事务了解吗?
- 14.2.34. kafka有那些分区算法
- 14.2.35. kafka消费者
- 14.2.36. Rebalance (重平衡)
- 14.2.37. 日志索引
- 14.2.38. 解释如何减少ISR中的扰动?broker什么时候离开ISR?
- 14.2.39. ISR、OSR、AR 是什么?
- 14.2.40. LEO、HW、LSO、LW等分别代表什么?
- 14.2.41. 如何进行 Leader 副本选举?
- 14.2.42. 如何进行 broker Leader 选举?
- 14.2.43. Kafka为什么需要复制?
- 14.2.44. Kafka 的高可靠性是怎么实现的?
- 14.2.45. Kafka 分区数可以增加或减少吗?为什么?
- 14.2.46. Kafka消息可靠性的保证
- 14.2.47. 为什么kafka中1个partition只能被同组的一个consumer消费?
- 14.2.48. kafka和zookeeper的关系
- 14.2.49. zookeeper在kafka中的作用
- 14.2.50. Kafka服务器能接收到的最大信息是多少?
- 14.2.51. Kafka中的ZooKeeper是什么?Kafka是否可以脱离ZooKeeper独立运行?
- 14.2.52. Kafka的高性能的原因
- 14.2.53. kafka broker 挂了怎么办
- 14.2.54. 关于kafka的isr机制
- 14.2.55. Exactly Once语义
大约 110 分钟
- Rides手册
- 基础面试题
- 什么是redis?
- Reids的特点
- Rides得优缺点
- Redis 的应用场景
- 使用redis有哪些好处?
- Redis数据类型
- 缓存有那些类型
- 你为什么需要使用Rides
- 为什么redis需要把所有数据放到内存中?
- 缓存数据淘汰算法
- Redis内存维护策略
- Redis是单线程还是多线程?Redis为什么这么快?
- Rides中得高级数据类型
- Memcache和Rides对比
- 为什么要用 redis 而不用 map/guava 做缓存?
- Rides有那些数据结构
- 如果有大量的key需要设置同一时间过期,一般需要注意什么?
- 使用过Redis分布式锁么,它是什么回事?
- 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如何将它们全部找出来?
- 如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?
- 使用过Redis做异步队列么,你是怎么用的?
- Redis是怎么持久化的?服务主从数据怎么交互的?
- 那如果突然机器掉电会怎样?
- RDB的原理是什么?
- Redis 持久化
- Redis的同步机制了解么?
- 是否使用过Redis集群,集群的高可用怎么保证,集群的原理是什么?
- Redis雪崩了解么?
- 缓存穿透
- 如何解决上面遇到的问题
- 缓存击穿
- Rides为什么那么快
- 既然提到了单机会有瓶颈,那你们是怎么解决这个瓶颈的?
- 他们之间是怎么进行数据交互的?以及Redis是怎么进行持久化的?Redis数据都在内存中,一断电或者重启不就没有了嘛?
- 那这两种机制各自优缺点是啥?
- 那两者怎么选择?
- 你提到了高可用,Redis还有其他保证集群高可用的方式么?
- 能说一下主从之间的数据怎么同步的么?
- 数据传输的时候断网了或者服务器挂了怎么办啊?
- 那说了这么多你能说一下他的内存淘汰机制么,来手写一下LRU代码?
- 为啥不扫描全部设置了过期时间的key呢?
- 如果一直没随机到很多key,里面不就存在大量的无效key了?
- 键的过期删除策略
- 最后就是如果的如果,定期没删,我也没查询,那可咋整?
- redis的并发竞争问题如何解决?
- redis常见性能问题和解决方案
- Redis主从架构中数据丢失吗
- 如何解决主从架构数据丢失问题?
- Redis高可用方案如何实现?
- 什么是Redis的事务
- Redis事务的相关命令
- Redis事务执行的三个阶段
- Redis事务的特性
- Redis事务为什么不支持回滚?
- Rides是单线程的还是多线程的
- 如何保证缓存与数据库双写时的数据一致性?
- Redis 缓存雪崩、缓存击穿、缓存穿透
- Redis 事务
- 基础面试题
大约 93 分钟
- 14. Java集合手册(基础)
- 14.1. 什么是Java的集合?使用集合有什么好处?
- 14.2. 常用的集合类以及它们的特点?
- 14.3. List
- 14.3.1. ArrayList、LinkedList、Vector 各自的特点以及优缺点?
- 14.3.2. ArrayList 了解吗?
- 14.3.3. ArrayList 的扩容机制?
- 14.3.4. ArrayList为什么线程不安全还使用他呢?
- 14.3.5. ArrayList的底层实现是数组,添加数据的话,会有问题吗?
- 14.3.6. ArrayList在增删的时候是怎么做的么?主要说一下他为啥慢。
- 14.3.7. ArrayList插入删除一定慢么?
- 14.3.8. 怎么在遍历 ArrayList 时移除一个元素?
- 14.3.9. ArrayList 和 Vector 的区别/异同?
- 14.3.10. ArrayList 和 LinkedList 的区别/异同?
- 14.3.11. ArryList 是线程不安全的?为什么?
- 14.3.12. 如何解决 ArrayList 线程不安全的问题?
- 14.4. CopyOnWriteArrayList
- 14.5. Map
- 14.5.1. HashMap的底层实现原理?
- 14.5.2. 使用的hash算法?
- 14.5.3. HashMap的扩容方式?负载因子是多少?为什是这么多?
- 14.5.4. HashMap 容量的长度为什么总是2的幂次方?
- 14.5.5. 扩容过程?
- 14.5.6. 知道HashMap 扩容时候的死循环问题吗?
- 14.5.7. jdk1.7版hashmap在多线程环境下的死循环问题介绍一下?
- 14.5.8. 如何解决 HashMap 线程不安全的问题?
- 14.5.9. put方法流程?
- 14.5.10. 红黑树的特点?
- 14.5.11. 为什么使用红黑树而不使用AVL树?
- 14.5.12. hashmap线程不安全的表现有哪些?
- 14.5.13. 在解决 hash 冲突的时候,为什么选择先用链表,再转红黑树?
- 14.5.14. HashMap默认加载因子是多少?为什么是 0.75?
- 14.5.15. 一般用什么作为HashMap的key?
- 14.5.16. HashMap为什么线程不安全?
- 14.5.17. HashMap和HashTable的区别?
- 14.5.18. LinkedHashMap底层原理?
- 14.5.19. ConcurrentHashMap能完全替代Hashtable吗?
- 14.6. Hashtable的特点介绍一下?
- 14.7. 讲一下TreeMap?
- 14.8. Set
- 14.9. HashSet底层原理?
- 14.10. HashMap(jdk1.8)
- 14.10.1. Hashmap特点
- 14.10.2. 解决hash冲突的办法有哪些?HashMap用的哪种?
- 14.10.3. 为什么要在数组长度大于64之后,链表才会进化为红黑树
- 14.10.4. 哈希表底层采用何种算法计算hash值?还有哪些算法可以计算出hash值?
- 14.10.5. 当两个对象的hashCode相等时会怎样
- 14.10.6. 何时发生哈希碰撞和什么是哈希碰撞,如何解决哈希碰撞?
- 14.10.7. HashMap的put方法流程
- 14.10.8. HashMap的扩容方式
- 14.10.9. 一般用什么作为HashMap的key?
- 14.10.10. 为什么Map桶中节点个数超过8才转为红黑树?
- 14.10.11. HashMap为什么线程不安全?
- 14.10.12. get流程
- 14.11. Hashtable
- 14.12. ConcurrentHashMap
- 14.13. 迭代器 (Iterator )
- 14.14. 讲一下ArrayDeque?
- 14.15. 哪些集合类是线程安全的?哪些不安全?
- 14.16. 并发容器
- 14.17. 不同集合容量与扩容系数?
- 14.18. java8的ConcurrentHashMap为何放弃分段锁?
大约 73 分钟
- Java集合手册(精简版)
- 常用的集合类有哪些
- 为什么集合类没有实现Cloneable和Serializable接口?
- List,Set,Map三者的区别?
- 常用集合框架底层数据结构
- 哪些集合类是线程安全的?
- 迭代器 Iterator 是什么
- Iterator和ListIterator的区别是什么?
- Java集合的快速失败机制 “fail-fast”和安全失败机制“failsafe”是什么?
- 如何边遍历边移除 Collection 中的元素?
- Array 和 ArrayList 有何区别?
- comparable 和 comparator的区别?
- 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
- Collection 和 Collections 有什么区别?
- List集合
- Set集合
- Map集合
- HashMap的工作原理
- HashMap在JDK1.7和JDK1.8中有哪些不同?HashMap的底层实现
- HashMap 的长度为什么是2的幂次方
- HashMap的put方法的具体流程?
- HashMap的扩容操作是怎么实现的?
- HashMap默认加载因子为什么选择0.75?
- 为什么要将链表中转红黑树的阈值设为8?为什么不一开始直接使用红黑树?
- HashMap是怎么解决哈希冲突的?
- HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
- 能否使用任何类作为 Map 的 key?
- 为什么HashMap中String、Integer这样的包装类适合作为Key?
- 如果使用Object作为HashMap的Key,应该怎么办呢?
- HashMap 多线程导致死循环问题
- ConcurrentHashMap 底层具体实现知道吗?
- HashTable的底层实现知道吗?
- HashMap和Hashtable有什么区别?
- HashMap、ConcurrentHashMap及Hashtable 的区别
- 集合的常用方法
- Collection常用方法
- List特有方法
- LinkedList特有方法
- Map
- Stack
- Queue
大约 26 分钟