Elasticsearch 是一款开源的分布式检索引擎,广泛应用于实时分析、日志分析、全文搜索和数据监控等领域。凭借其强大的实时搜索能力和灵活的查询语言,在市场上获得了广泛认可。然而,在过去两年,我们注意到一个趋势,很多 Elasticsearch 用户倾向于采用 Apache Doris 替代 Elasticsea […]
Elasticsearch 是一款开源的分布式检索引擎,广泛应用于实时分析、日志分析、全文搜索和数据监控等领域。凭借其强大的实时搜索能力和灵活的查询语言,在市场上获得了广泛认可。然而,在过去两年,我们注意到一个趋势,很多 Elasticsearch 用户倾向于采用 Apache Doris 替代 Elasticsea […]
什么是内存泄漏? 不再用到的内存,没有及时释放,就叫做内存泄漏。 对于持续运行的服务进程,必须及时释放内存,否则内存占用率越来越高,轻则影响系统性能,重则导致进程崩溃。 ThreadLocal是怎么造成内存泄露的呢? 如果发生了下面的情况: 如果ThreadLocal是null了,也就是要被GC回收了, 但是此时我们的 […]
1 背景 分布式场景下困扰我们的3个核心需求(CAP):一致性、可用性、分区容错性,以及在实际场景中的业务折衷。 1、一致性(Consistency): 再分布,所有实例节点同一时间看到是相同的数据 2、可用性(Availability): 不管是否成功,确保每一个请求都能接收到响应 3、分区容错性(Partition […]
结论 先说大致的结论(完整结论在文末) 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort,导致 […]
图数据库(Graph Database)是一种以图结构进行存储和查询的数据库。本文总结了图数据库选型的各类因素,并对比了3个主流开源图数据库:Neo4j、JanusGraph、HugeGraph。Neo4j是老牌的图数据库,JanusGraph是非常成功的开源图数据库TitanDB的Fork版(TitanDB已经不维护 […]
背景 据Redisson官网的介绍,Redisson是一个Java Redis客户端,与Spring 提供给我们的 RedisTemplate 工具没有本质的区别,可以把它看做是一个功能更强大的客户端(虽然官网上声称Redisson不只是一个Java Redis客户端) 我想我们用到 Redisson 最多的场景一定是 […]
一、介绍 在前面的文章中,我们详细的介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,在 MongoDB 中有三个比较重要的名词:数据库、集合、文档! 数据库(Database):和关系型数据库一样,每个数据库中有自己的用户权限,不同的项目组可以使用不同的数据库 集合(Collec […]
前言 RocketMQ是阿里巴巴旗下一款开源的MQ框架,经历过双十一考验、Java编程语言实现,有非常好完整生态系统。RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等,总之就是葛大爷的一句话 核心概念 NameServer:可以理解为是一个注册 […]
背景 前段时间,一个同事小姐姐跟我说她的项目起不来了,让我帮忙看一下,本着助人为乐的精神,这个忙肯定要去帮。 于是,我在她的控制台发现了如下的异常信息: Exception in thread "main" org.springframework.beans.factory.BeanCurrentl […]
MQ消费方式 消费方式就是指消费者如何从MQ中获取到消息,分为两种方式,push(推方式)和pull(拉方式)。 1、push(推方式) push,顾名思义,就是推的意思。就是当MQ收到生产者产生的消息的时候,会主动将消息推送到消费者进行消费,这种模式就叫push,也就是MQ将消息推给到消费者的意思。 push模式 p […]
Timer和ScheduledExecutorService是JDK内置的定时任务方案,而业内还有一个经典的定时任务的设计叫时间轮(Timing Wheel), Netty内部基于时间轮实现了一个HashedWheelTimer来优化百万量级I/O超时的检测,它是一个高性能,低消耗的数据结构,它适合用非准实时,延迟的短 […]
序列化和反序列化 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 什么时候需要用到序列化和反序列化呢? 当我们只在本地 JVM 里运行下 Java 实例, 这个时候是不需要什么序列化和反序列化的, 但当我们需要将内存中的对象持久化到磁盘, 数据库中时, 当 […]
用一句话来总结这种改进就是: 支持唯一性约束和索引将null值视为相同的值。 之前是将null值索引成不同的值,现在可以通过使用unique nulls not distinct创建约束,将null值视为相同的值。 两种unique风格 创建示例表: CREATE TABLE null_old_style ( id B […]
NullPointException应该算是每一个码农都很熟悉的家伙了吧?谁的代码不曾抛过几个空指针异常呢... 比如:你写了段如下的代码: public void getCompanyFromEmployee() { Employee employee = getEmployee(); Company company […]
准备工作: Jetbrains系列产品重置试用插件 MyBatisCodeHelperPro (Marketplace Edition) idea 第一步 方法一)插件市场安装: 在Settings/Preferences... -> Plugins 内手动添加第三方插件仓库地址:http://plugins […]
男儿何不带吴钩,收取关山五十州。