摘要: 很多情况下,在应用程序启动后需要关闭时候,直接shutdown会导致正在处理的请求中断,而采用graceful shutdown可以实现不再接受新的请求,并将已接收到的请求处理完毕再关闭程序释放资源 Springboot graceful shutdown应用场景 Springboot中提供了优雅停 阅读全文
posted @ 2023-06-26 10:46 colorfulworld 阅读(117) 评论(0) 推荐(0) 编辑
摘要: ELK是当前比较流行的一套框架,主要用于日志的采集和查询 ELK:ElasticSearch+Logstash+Kibana ElasticSearch:全文搜索引擎 Logstash:日志采集系统,可以从多个来源采集并转换数据,然后将数据输出到指定存储单元中(官方推荐的存储单元位ElasticSe 阅读全文
posted @ 2023-06-25 11:05 colorfulworld 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 1. MongoDB mongoDB是一种分布式文档型数据库,具有分布式架构设计。mongoDB分布式架构包含:分片、副本和分布式查询路由 1.1 分片 MongoDB分片技术将数据分割成多个分片(shard),每个分片存储部分数据。分片可以按照数据的范围、has值、分片键等方式进行分配。在分片集群 阅读全文
posted @ 2023-06-25 08:40 colorfulworld 阅读(111) 评论(0) 推荐(0) 编辑
摘要: RPC(remote procedure call)远程过程调用;Http:超文本传输协议。RPC是一种方法,http是一种协议。RPC服务主体要工作在tcp协议上,而http服务工作在http协议上,由于http协议基于tcp协议,所以rpc服务比http更轻量,效率更高 RPC远程过程调用 RP 阅读全文
posted @ 2023-06-24 15:48 colorfulworld 阅读(136) 评论(0) 推荐(0) 编辑
摘要: Spark是一种基于内存的快捷、通用、可扩展的大数据分析引擎 1. Spark模块 Spark Core: Spark核心模块,包含RDD、任务调度、内存管理、错误恢复、与存储系统交互等 Spark SQL:用于处理结构化数据的一个模块,提供了2个编程抽象:DataFrame DataSet,并且作 阅读全文
posted @ 2023-06-24 15:07 colorfulworld 阅读(18) 评论(0) 推荐(0) 编辑
摘要: youngGC(Minor GC): 对新生代垃圾回收。新建对象一般放在新生代的Eden区进行分配,如果Eden区没有足够的空间就会触发youngGC。youngGC出发频率很频繁,回收速度也很快 FullGC: 回收整个新生代、老年代、永久代无用对象。FullGC较YoungGC stw时间更长至 阅读全文
posted @ 2023-06-23 17:41 colorfulworld 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 共享锁 多个事务的读操作可以同时进行,互不阻塞,但某个事务持有共享锁,其他事务不允许修改 如readWriteTrantLock就是共享锁 排他锁 当前持有锁的事务没有完成前,其他事务读、写都会阻塞。这样就能确保在给定时间内,只有一个事务能执行写入 如ReentrantLock、就是排他锁 在非Se 阅读全文
posted @ 2023-06-23 10:23 colorfulworld 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 默认情况下,Spring在程序启动时创建所有通过注解声明或者xml注解的单例bean,这样做好处是在启动时即可以检测所有可能的错误,而不是在运行的时候。但是有些情况我们需要的时候创建一个bean,而不是在程序启动的时候,此时需要用到@Lazy来进行懒加载。 懒加载主要针对单例bean,仅当第一次使用 阅读全文
posted @ 2023-04-13 09:47 colorfulworld 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 1. Starter加载原理 Springboot通过SpringBootApplication注解启动项目,springboot启动的时候,会将项目中所有声明为bean对象的实例加载到IOC容器。除此之外也会将starter里的bean信息加载到ioc容器,从而做到0配置,开箱即用。 1.1加载s 阅读全文
posted @ 2023-04-11 15:15 colorfulworld 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 1. 死锁概念 也就是两个线程在各自拥有锁的情况下,又去尝试获取对方的锁,从而造成的一直阻塞的情况。 如下,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁 2. 如何查看是否死锁 死锁代码 public class TestLoc 阅读全文
posted @ 2023-04-11 11:35 colorfulworld 阅读(11) 评论(0) 推荐(0) 编辑