随笔分类 - Java
摘要:CompletableFuture异步编排优化代码 我们在项目开发中,有可能遇到一个接口需要调用N个服务的接口。比如用户请求获取订单信息,需要调用用户信息、商品信息、物流信息等接口,最后再汇总数据统一返回。如果使用串行的方法按照顺序挨个调用接口,这样接口的响应的速度就很慢。如果并行调用接口,同时调用
阅读全文
摘要:红黑树(Red Black Tree) 红黑树(Red Black Tree)是一种自平衡二叉查找树,是一种高效的查找树,学习之前先了解一下平衡二叉树。于 1972 年由 Rudolf Bayer发明的对称二叉B 树演化而来,并以 2-3-4 树、2-3 树流行。最终在 1978 年由Leonida
阅读全文
摘要:Java实现常见查找算法 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。 线性查找 线性查找(Linear Search)是一种简单的查找算法,用于在数据集中逐一比较每个元素,直到找到目标元素或搜索完整个数据集。它适用于任何类型的数据集
阅读全文
摘要:平衡二叉树(Balanced Binary Tree) 平衡二叉树是一种特殊的二叉搜索树,它具有以下特点: 每个节点的左子树和右子树的高度差不超过1。 所有的子树也都是平衡二叉树。 通过保持平衡性,平衡二叉树可以在最坏情况下仍然具有较好的性能,保证查找、插入和删除操作的时间复杂度为O(log n)。
阅读全文
摘要:二叉搜索树(Binary Search Tree,BST) 二叉搜索树(Binary Search Tree),也称二叉查找树或二叉排序树,是一种特殊的二叉树,它满足以下性质 对于二叉搜索树的每个节点 左子树中的所有节点的值都小于该节点的值 右子树中的所有节点的值都大于(或等于)该节点的值 对于二叉
阅读全文
摘要:二叉树(binary tree) 二叉树(Binary Tree)是一种常见的树状数据结构,它由一组节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树具有以下特点: 每个节点最多有两个子节点,分别称为左子节点和右子节点。 左子树和右子树也是二叉树,它们的结构与父节点类似。 二叉树
阅读全文
摘要:# Java实现常见排序算法 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。排序的分类: 1. 内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。 2. 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 3. 常见
阅读全文
摘要:# JVM性能监控和调优 JVM(Java虚拟机)调优是为了优化Java应用程序的性能和稳定性。JVM调优的目的是通过调整JVM的配置参数和优化应用程序代码,使其在给定的硬件和软件环境下达到更好的性能表现。防止出现OOM,进行JVM规划和预调优,解决程序中出现的各种OOM,减少FullGC出现的频率
阅读全文
摘要:# JVM运行时参数 JVM运行时参数是用于配置和调整Java虚拟机的行为和性能的参数。这些参数可以在启动Java应用程序时通过命令行或配置文件进行设置,合理配置参数可以使JVM虚拟机的达到更好的性能,降低OOM发生的概率 > 官网地址:https://docs.oracle.com/javase/
阅读全文
摘要:# JVM垃圾回收 ## 1.概述 JVM(Java虚拟机)的垃圾回收是自动管理内存的过程,用于回收不再使用的对象并释放内存资源。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。这种自动化的内存管理机制极大地减轻了开发人员对手动释放内存的负担,提高了开发效率。 ### 1
阅读全文
摘要:深入理解String String是Java中的一个类,是一个引用类型,用于表示字符串。它是不可变的(immutable),即一旦创建,其值就不能被修改。任何对String对象的修改操作都会创建一个新的String对象,而不是在原有字符串上进行修改。 1.基本特点 不可变性(Immutability
阅读全文
摘要:消息队列RabbitMQ 什么是消息队列 MQ全称为Message Queue,即消息队列。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业
阅读全文
摘要:Java多线程中的死锁 死锁产生的原因 线程死锁是指由两个以上的线程互相持有对方所需要的资源,导致线程处于等待状态,无法往前执行。 当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源。在此期间,其他线程将不能进入该代码块。当线程互相持有
阅读全文
摘要:SpringBoot整合ElasticSearch 1、选型 Java操作ElasticSearch有两种方式,一个是通过ES的9300端口使用TCP的方式操作,另一种是通过ES的9200端口使用HTTP的方式 1)9300 TCP spring-data-elasticsearch:transpo
阅读全文
摘要:Elasticsearch-IK分词器 一、简介 因为Elasticsearch中默认的标准分词器(analyze)对中文分词不是很友好,会将中文词语拆分成一个一个中文的汉字,所以引入中文分词器-IK。 使用默认 二、安装IK分词器 1.先下载ik分词器 https://github.com/med
阅读全文
摘要:Elasticsearch-Mapping(映射) Mapping是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和 索引的。 哪些字符串属性应该被看做全文本属性(fulltextfields)。 哪些属性包含数字,日期或者地理位置。 文档中的所有属性是否都能被索引
阅读全文
摘要:ElasticSearch进阶检索 ElasticSearch入门检索中讲了如何导入elastic提供的样本测试数据,下面我们用这些数据进一步检索 一、SearchAPI ES 支持两种基本方式检索 : 1、一种是通过使用 REST request URI 发送搜索参数(uri+检索参数) GE
阅读全文
摘要:ElasticSearch简介说到 elsatic是通过RestFul API接口操作数据的,可以通过postman模拟接口请求测试一下 #一、_cat 1、GET /_cat/nodes:查看所有节点 2、GET /_cat/health:查看 es 健康状况 3、GET /_cat/master
阅读全文
摘要:#简介 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。 Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Luc
阅读全文