Elasticsearch 是一个开源的分布式搜索引擎,基于 Lucene 构建,广泛应用于日志分析、全文搜索、数据分析等领域。Elasticsearch 允许我们进行高效的实时搜索和数据分析,并且其强大的分布式架构使得它能够处理大规模的数据;这篇文章介绍一下 Elasticsearch 的基本增删改查(CRUD)操作。ES 采用 RESTful
风格 API,我们可以在 Kibana
中进行相关的操作指令。
使用 Docker 安装 ElasticSearch
Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,广泛应用于大数据的实时搜索和分析场景中。Kibana 是一个与 Elasticsearch 配合使用的可视化界面,帮助用户以图表、图形等形式对 Elasticsearch 中的数据进行查询和分析。在这篇文章中,我们栏看看如何通过 Docker 安装并配置 Elasticsearch 和 Kibana,快速搭建一个测试环境。
Docker 概念梳理
Docker
让开发者创建的应用脱离底层物理硬件的限制;能很方便通过网络进行传播,做到快速分发和部署。通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,通过将应用封装成镜像,实现了应用的“一次封装,到处运行”;并提供了快速部署、分发和迁移的能力。
SpringBoot 自动配置原理分析
Spring Boot 自动配置(Auto Configuration)是 Spring Boot 提供的一种核心机制,它能够根据项目中引入的依赖和配置,自动配置 Spring 应用中常用的 Bean,从而极大简化开发者的配置工作。Spring 框架本身功能强大,但配置繁琐,需要大量 XML 或 Java 配置代码。Spring Boot 的自动配置通过“约定优于配置”的理念,帮开发者自动完成这些配置,使开发变得更简单、更快速。
浅谈 MySQL 索引
索引是为了提高数据库查询效率而设计的,通过索引,数据库可以快速定位到需要的数据,避免全表扫描。我们可以很快想到一些可以提升查询效率的数据结构,如:哈希表(利用哈希算法,根据键快速找到值,一般用于等值查询)、有序数组(利用二分查找快速找到数据)、搜索树等。而我们常用的存储引擎 InnoDB 中,索引底层用到的数据结构是 B+树
,B+树是一种平衡树,它的叶子节点存储实际的数据,而中间节点存储索引信息。通过这种结构,可以迅速定位到需要的数据。MySQL 中的表通常是按主键排序存储的,这样的表叫做“聚簇索引”表。每个索引都有一棵 B+树,表中每一行数据在不同的索引中都会有一条记录。这样,查询时,我们可以通过索引快速找到数据,而不必扫描整个表。
浅谈 Java 8
Java 8 是 Java 发展历程中的一个里程碑式版本,它引入了大量令人激动的新特性,极大地提升了开发效率。
MyBatis 插件原理分析
MyBatis 框架允许用户通过自定义拦截器(Interceptor)的方式改变 SQL 的执行行为,例如:在 SQL 执行时追加分页条件,从而达到简化分页查询的目的,PageHelper
分页插件便是通过这个方式实现的。MyBatis 插件的核心原理主要是基于 Java 动态代理机制,拦截 MyBatis 的核心组件(Executor、StatementHandler、ParameterHandler、ResultSetHandler)中方法的执行。
MyBatis 数据脱敏插件的实现
数据脱敏(Data Masking)是指对敏感信息(如身份证号、手机号、银行卡号等)进行变形、屏蔽或替换,使其在非生产环境或非授权场景下不可识别,同时保留数据的其他可用性,例如:日志记录,避免敏感信息写入日志文件;接口返回时前端展示时隐藏部分数据(如手机号显示为 138****1234)。MyBatis 插件是实现数据脱敏的一种有效且侵入性较低的方式,利用 MyBatis 提供的拦截器(Interceptor)机制,在 SQL 执行的不同阶段对数据进行处理。通过这种方式,可以在数据从数据库读取出来或写入数据库之前,对其进行脱敏或恢复操作,而无需修改大量的业务代码。
MyBatis 配置文件加载流程分析
MyBatis 是一款半自动化的 ORM(Object Relational Mapping:对象关系映射)框架,帮我们消除了大量的 JDBC 冗余代码,包括参数的设置,结果集的封装等,能够将数据库中的记录转换为 Java 实体。这篇文章会通过源码的角度分析 MyBatis 加载配置文件的流程。
深入 Redis 基础与应用
Redis (Remote Dictionary Server) 是一个开源的、高性能的键值对(Key-Value)存储系统,在项目当中有非常广泛的应用,由于其高性能,常被用作缓存服务器。