GC回收器深入深出
垃圾回收的困境 在早期的JVM回收之中,为了避免出现应该回收的对象没有被回收,不应该被回收的对象(重新被引用)被回收了的情况,往往整个垃圾回收都需要跑在安全点下,也就是所谓的SafePiont。而想要出现所谓的SafePoint出现,那么整个程序本身不能做任何操作,那么这个时间点对于程序来说就好像时停了一样,这个时间段就被称为STW。 稍微一想就知道,STW对于程序的响应速度来说,明显是坏的,越长


What else can I do ?
垃圾回收的困境 在早期的JVM回收之中,为了避免出现应该回收的对象没有被回收,不应该被回收的对象(重新被引用)被回收了的情况,往往整个垃圾回收都需要跑在安全点下,也就是所谓的SafePiont。而想要出现所谓的SafePoint出现,那么整个程序本身不能做任何操作,那么这个时间点对于程序来说就好像时停了一样,这个时间段就被称为STW。 稍微一想就知道,STW对于程序的响应速度来说,明显是坏的,越长
跟Mysql类似的,ES的调优也可以主要分为几个方面的优化,首先是数据结构的声明方面,其次是ES操作方面的优化,最后是操作系统方面的调优。 在结构方面 在声明mapping的时候,我们可以尽量避免以下的操作来尽量避免影响性能问题出现。 <font color='violet'>少声明字段</font>:如果我们声明字段过多,在写入存储的时候Index Buffer就只能存入更少的文档进行插入;而在
ElasticSearch 基本概念 集群 Es集群的特点:多个ES服务器可以组成集群存储大量的数据,并提供相关的服务 高可用性 (服务可用性、数据可用性) 可扩展性 并发量提高、数据量增多的时候,可以增加节点来直接解决。 集群状态 ES将索引和集群的健康情况都做了以下三种状态的区别,每个索引或者集群都会有以下三个状态 健康情况: GREEN 处于健康情况,目前副本分片都在正常运行的状态 Yell
组合查询 在上面之中我们学习到了 match 和 term 进行查询的时候,只介绍了单个 api 做一个简单的查询效果,没有提供组合查询的效果的效果。 Bool Query,布尔查询效果,可以组合多过滤语句来帮助我们过滤文档。 Boosting Query,通过 positive 块指定匹配文档的评分,同时降低在 negative 块中匹配的文档的得分,提供调整相关性算分的能力 constant_
ElasticSearch搭建集群 构建集群的节点 部署的时候集群节点无非就两种,一种是计算机 / 服务的数量不够,通过单个节点承担多个角色的方式来搭建索引;另外一种就是让单个节点承担单个角色。 对于第一种的情况其实没啥好介绍的,看着来就行了,毕竟资源受限最多也就只能那样了;而针对第二个情况,在资源的分配上可以大概参考以下的图表,配置不同服务节点所在的计算机等。 image-20241010155
ES索引 倒排索引的实现 问题 倒排索引的实现问题,涉及到存储、快速定位词项本身、词项匹配文档数 分词形成的词项(term)可能是海量的,需要可以在内存和磁盘上高效存储; 既然词项是海量的,那么如何快速找到对应的词项也是个问题; 每个词项对应的文档数可能非常多,也就是上图中文档列表的链表很长; 在词项对应的文档多的情况下,多个文档列表间做交集的效率将是个挑战。 分词的存储结果和针对词项做快速定位其
多线程 Async @Async(value = "指定自定义Bean线程池") [根据不同的业务可以使用不同的线程池来做异步处理] 如果不指明使用的线程池,在SpringBoot 2.1.0之前默认使用的是SimpleAsyncTaskExecutor [一次性的异步执行器] 会随着请求数量的增加创建越来越多的线程,没有线程管理、也没有任务队列,很容易就会导致OOM(类似于直接通过Exe
前排提醒,该笔记其实已经过时,有一个更新的对MVCC机制和相关Mysql技术介绍更加完整的个人笔记,如有需要请参考Mysql - Innodb 隔离级别的实现 (MVCC、锁机制) - LeticiaFENG Note 如还要参看一下笔记请注意,仅供参考且只涉及MVCC MVCC技术主要涉及以下几个点: 隐藏字段:Innodb实际上对所有行数据都加了三个隐藏的字段,分别是:DB_TRX_ID (用
概述 本笔记主要记载笔者自身比较常见的设计模式。如果要查其他的请自行跳转搜索引擎。 该笔记目前包含以下设计模式的介绍: 创建型的:单例、原型、工厂(简单工厂、工厂方法、抽象工厂) 结构性的:代理、外观 行为型的:责任链、迭代器、模板、策略 创建型模式 单例模式 单例模式的核心是保证在程序之中唯一的创建单个对象提供使用。总所周知,Java之中创建对象的方式有四种:1.new、2.clone、3.反射
概述 枚举类就是Java之中一种特殊的类,它具有固定的实例数量,在编译阶段就已经固定,而无法在运行阶段改变的类,并且枚举类往往会只具有一些固定的取值,所以往往很适合充当状态码类型的类。然而因为枚举类的特殊性,所以枚举类除了以上的描述以外还在单例模式的创建下有着重要的作用(最好的单例模式实现方法) 解析 对于枚举类的解析直接看下图代码和执行结果即可。 enum SampleEnum impl
