- 博客(270)
- 收藏
- 关注
原创 Elasticsearch 之 ElasticsearchRestTemplate 嵌套聚合查询【嵌套文档聚合查询】
Nested 翻译过来就是嵌套的意思,如果需要实现上述业务场景,我们需要使用嵌套查询,也就是会用到 Nested 关键字,Nested 在 Elasticsearch 中主要用于处理对象数组的情况,嵌套对象是一种特殊的对象类型,它允许在文档中存储一组相关的对象,并且在查询时能够正确地处理这些对象之间的关系,但是在映射(mapping)时候,需要将对象数组标记为 Nested 类型。简单来说就是想要实现嵌套查询就需要将对象数组标记为 Nested 类型,再使用查询语法即可实现嵌套查询。
2025-03-28 09:30:00
2476
原创 Elasticsearch 之 ElasticsearchRestTemplate 聚合查询
上一篇我们分享了 ElasticsearchRestTemplate 的常用普通查询,本篇我们使用 ElasticsearchRestTemplate 来完成 Elasticsearch 更为复杂的聚合查询。
2025-03-27 10:38:52
1115
原创 Elasticsearch 之 ElasticsearchRestTemplate 普通查询
QueryBuilders 是 Elasticsearch 中的一个工具类,用于构建各种复杂的查询的条件,在实际业务场景中,经常需要构建复杂的条件查询,如范围查询、布尔查询、模糊查询等场景,QueryBuilders 提供了构建这些复杂的查询能力,替代了手动编写复杂的 JSON 格式的查询 Elasticsearch 语句,在使用 ElasticsearchRestTemplate 完成 Elasticsearch 的各种复杂查询的时候,我们会使用到 QueryBuilders。
2025-03-26 10:41:21
1235
原创 Elasticsearch Windows 环境安装
总结:本篇简单分享了 Elasticsearch 的 Windows 版本的安装,旨在为后面我们学习 Elasticsearch 的时候可以快速搭建起一套 Elasticsearch 环境,同时也分享了两个更 Elasticsearch 相关的插件 Kibana 和 elasticsearch-head 的安装,希望可以帮助到有需要的朋友。elasticsearch-head 是一个用于管理和监控 Elasticsearch 集群的 Web 前端工具,它提供集群健康检查、索引管理、文档浏览及搜索等功能。
2025-03-25 09:37:08
967
原创 Elasticsearch 基础篇【ES】
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,它的用途非常广泛,主要用于全文检索、结构化搜索、数据分析以及将这三者混合使用,本篇我们来初步认识一下 ELasticsearch ,分享一些 ELasticsearch 的基本概念。
2025-03-24 13:51:09
693
原创 设计模式--解释器模式【行为型模式】
解释器模式(Interpreter Pattern)是一种行为设计模式,解释器模式通过一个解释器对象处理一个语法规则,把复杂的功能分离开,然后选择需要被执行的功能,并把这些功能组合成为需要被解释执行的抽象语法树,再按照抽象语法树来解释执行,实现相应的功能。
2025-02-19 09:30:00
1014
原创 设计模式--中介者模式【行为型模式】
中介者模式(Mediator Pattern)是一种行为设计模式,它通过使用一个中介对象来封装一系列对象之间的交互方式,中介者使得各对象之间不需要显式地相互引用,从而降低对象之间的耦合度,使得系统可以更加灵活地进行维护和扩展,中介者模式的本质其实就是封装对象之间的交互过程。
2025-02-18 14:55:40
1669
原创 设计模式--访问者模式【行为型模式】
访问者模式(Visitor Pattern)是一种行为型设计模式,通过定义一个访问者对象,实现对数据结构中各个元素进行访问和处理,访问者模式可以将数据结构与数据操作分离,使得在增加新的操作时,不需要修改现有的数据结构相关的类。
2025-02-17 19:36:25
927
1
原创 设计模式--状态模式【行为型模式】
状态设计模式(State Design Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为,这个模式将状态封装成独立的类,并将行为的实现委托给当前状态对象,使得对象的行为可以随着状态的变化而动态改变,也就是状态和行为分离。
2025-01-17 09:30:00
1118
原创 设计模式--备忘录模式【行为型模式】
备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不暴露对象内部状态的情况下保存和恢复对象之前的状态。就像是给对象的状态拍了一张 “快照”,之后可以根据这个 “快照” 将对象恢复到之前的某个状态,所以备忘录模式也叫做快照模式。
2025-01-16 09:30:00
983
原创 设计模式--命令模式【行为型模式】
命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,实现请求的发送者和接受者之间的解耦,本质就是封装请求。
2025-01-15 09:33:20
922
原创 设计模式--责任链模式【行为型模式】
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,责任链模式将多个对象(处理器)连接成一条链,当一个请求被发送到这个链上时,每个处理器都有机会处理这个请求,如果一个处理器能够处理该请求,它就会处理,然后这个请求就不再继续沿着链传递,如果它不能处理,就会把请求传递给链上的下一个处理器。
2025-01-14 09:30:00
708
原创 AI程序员通义灵码【阿里云通义灵码】
各路大佬都在普及 AI 时代程序员不一定被淘汰,但是不懂 AI 的程序员一定会被淘汰,本篇就来分享一下阿里云的通义灵码AI程序员的简单使用。
2025-01-13 09:30:00
1838
原创 设计模式--迭代器模式【行为型模式】
迭代器模式是一种行为设计模式,它提供了统一方法来访问聚合对象(如数组、列表、树等复杂的数据结构)中的各个元素,而又不暴露该对象的内部表示,简单来说,就像是给数据结构配备了一个 “导游”,这个 “导游” 可以按照一定的规则(如顺序、逆序等)带领你访问数据结构中的每一个元素。
2025-01-10 09:30:00
1466
1
原创 设计模式--观察者模式【行为型模式】
观察者模式是一种典型的发布订阅模式,定义了对象间的一种一对多的依赖关系,只要一个对象的状态发生改变,其依赖的所有相关对象都会得到通知并做出想要,是一种行为型模式。
2025-01-09 09:30:00
1595
原创 设计模式--模板方法模式【行为型模式】
模板方法模式是一种行为设计模式,它在父类中定义了一个操作的算法模板,把具体的实现交给子类来实现,模板方法可以让子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
2025-01-08 09:30:00
841
原创 设计模式--策略模式【行为型模式】
策略模式是一个行为行设计模式,定义了一系列算法,并将每一个算法封装起来做为一个策略类,使的它们之间可以相互替换,策略模式可以让算法独立于客户端。
2025-01-07 09:30:00
1008
原创 设计模式--享元模式【结构型模式】
享元模式使用优化系统性能的设计模式,享元模式的核心在于一个“享”字,也就是共享的意思,享元模式主要通过共享对象来减少系统中对象的数量,享元模式将对象分为内部状态和外部状态,内部状态的对象不会变化,外部对象会发生变化,享元模式本质就是缓存内部状态的共享对象,降低内存消耗。
2025-01-06 09:30:00
1276
原创 设计模式--组合模式【结构型模式】
组合模式又叫作整体-部分模式,它将对象组合成树状的层次结构,用来表示整体-部分的关系,使用户对单个对象和组合对象具有一致的访问性,是一种结构型模式。
2025-01-03 09:30:00
1265
原创 设计模式--外观模式(门面模式)【结构型模式】
外观模式也叫门面模式,主要是降低调用方调用子系统接口的复杂性,它提供一个统一的接口,用于调用子系统中的一组接口,在调用方和实际的接口提供方之间提供提供了⼀个中间层,这个中间层用于包装复杂的调用逻辑,降低业务调用的复杂度。
2024-12-31 09:30:00
1843
原创 设计模式--代理模式【结构型模式】
代理模式属于结构型设计模式,其核心思想是为其他对象提供一种代理来完成对这个对象的访问,代理对象可以在客户端和目标对象之间起到中介的作用。
2024-12-30 09:30:00
1130
原创 设计模式--装饰器模式【结构型模式】
装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许在运行时动态地向对象添加新的功能,而不改变其结构和实现,它在运行时给对象动态地添加一些额外的职责,装饰者模式通过装饰来实现功能的扩展,装饰器的核⼼就是在不改原有类的基础上给类新增功能。我们再次使用车来做为演示的实物载体,生活中我们买了爱车之后,除了 4S 店交付的新车,我们把车开回家之后,还会对车进行一番装饰0例如地垫、儿童座椅、360 安全影像等等,而这些都属于对爱车的装饰,也就是具体的装饰器,而我们的爱车就是抽象组件。
2024-12-27 09:12:06
2177
原创 设计模式--适配器模式【结构型模式】
适配器模式是一种结构型设计模式,重点在“适配”二字,它可以将不兼容的接口转换成可兼容的接口,它可以在不改变现有代码的前提下使不兼容的接口之间能够正常工作。
2024-12-26 09:30:00
896
原创 设计模式--原型模式【创建型模式】
原型模式是通过现有对象复制处一个新对象,而不需要通过构造器等方式来创建对象,原型模式简化了对象的创建过程,在某些特殊场景下,使用原型模式可以减少资源消耗,提高系统性能。
2024-12-25 09:30:00
1414
原创 设计模式--建造者模式【创建型模式】
建造者模式是将一个复杂对象的创建过程拆分为多个简单对象的创建,并将这些简单对象组合起来构建出复杂对象,建造者模式将变和不变相结合,对象是组成是不变的,但是对象的创建过程是可以灵活变化的。
2024-12-24 09:30:00
858
原创 设计模式--抽象工厂模式【创建型模式】
抽象工厂模式是一种创建型模式,该模式提供了一个超级工厂(抽象工厂),其他工厂来是实现这个工厂接口,同时还有一个工厂创建类,通过传入不同的参数,来创建不同的工厂,抽象工厂 模式是对工厂模式的扩展,工厂模式只是某类产品的工厂,而抽象工厂则是多类产品的工厂,可以理解为一类产品(产品族)的工厂,而抽象工厂就是工厂的工厂,是一个超级工厂。产品族。
2024-12-23 09:33:49
1261
原创 设计模式的 7 大原则
设计模式即 Design Patterns,是指在软件开发过程中,针对反复出现的问题所总结归纳出的通用解决方案,设计模式是经过无数经验的积累和经验的总结得出的通用解决方案,设计模式都遵守了很多原则,这些原则可以提高代码的可重用性、可维护性和可扩展性。
2024-12-20 09:30:00
938
原创 设计模式--工厂方法模式【创建型模式】
工厂模式又叫做工厂方法模式,是一种创建型的模式,在父类提供一个创建对象的方法,允许子类决定实例化对象的类型,由子类来决定要实例化的是哪一个工厂类,工厂模式让创建对象的过程延迟到子类进行,同时也实现了调用者和实现类解耦,提高了系统的可扩展性和灵活性,这同时也是去掉众多 if else 的实现⽅式。可以看到静态工厂(简单工厂)模式代码实现简单,但是添加新的 Car 类型时候需要修改工厂类,对象的创建也是由工厂类来实现的。有了车工厂定义接口,各个车品牌可以实现车工厂接口,也就是具体的车工厂实现类。
2024-12-19 09:30:00
1438
原创 设计模式--单例模式【创建型模式】
单例模式是指在内存中只会创建且仅创建一次对象的设计模式,在程序中多次使用同一个对象时,为了防止频繁地创建对象使得 JVM 内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。总结:本篇简单分享了单例模式的几种实现方式,并对各种单例模式的实现方式进行了剖析,希望可以帮助到有需要的朋友。
2024-12-18 09:30:00
1334
原创 DNS 域名解析系统分享
DNS 是指刻意制造一些域名服务器数据包,把域名指向不正确的服务器 IP 的行为,因为 DNS 的查询一般来说是没有任何认证机制的,而且 DNS 的查询是基于 UDP 协议,因此 DNS 的查询很容易被篡改,通过 UDP 的 53 端口上的 DNS 查询进行入侵检测,一旦发现与关键字相匹配的域名的时候,就伪装成域名解析器,给 DNS 查询者返回虚假结果,通俗易懂的说就是把自己伪装成 DNS 服务器,在匹配搭配用户访问某些网站时候,直接返回自己想要给用户看的 IP 地址。如有不正确的地方欢迎各位指出纠正。
2024-12-17 09:30:00
726
原创 一文了解 HTTPS
使用公钥加密,私钥加密,数据可以正常加解密传输,但是因为公钥是公开的,可以多人持有,那你就没法判断公钥持有者的身份了,使用私钥就不一样了,私钥是保密的,也就是只有某一个持有者才能持有,使用私钥加密,公钥解密,那公钥如果可以正常解密,他就可以知道加密者的身份了,因为使用的是私钥加密,私钥的持有者只会是某一个唯一的持有者。我们知道非对称加密算法有一对公钥和私钥,公钥对外公开,私钥保密,也就是公钥是谁都可以持有,那假设我们使用公钥加密,私钥解密会怎样呢?公钥加密私钥解密和私钥加密公钥解密的区别。
2024-12-16 09:30:00
932
原创 IPv4 地址、IPv6 地址、Mac 地址、端口号各自是什么?
Mac 地址全称叫做媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),由网络设备制造商生产时写在硬件内部,Mac 地址与网络无关,无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到哪里的网络,都有相同的 Mac 地址,它由厂商写在网卡的 BIOS 里,从理论上讲是没有办法冒名顶替的。有物理地址字样的文字就是 Mac 地址(参考格式:00-1A-2B-3C-4D-5E)。
2024-12-13 09:30:00
3716
原创 什么是 UDP 协议?UDP 协议和 TCP 协议的区别是什么?
UDP 全称:User Datagram Protocol,翻译过来就是用户数据报协议,是一个传输层协议,是 OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,它提供了一种简单的、不可靠的数据传输服务。总结:本篇简单分享了 UDP 协议的相理论知识,同时对 UDP 协议和 TCP 协议做了个简单的对比,希望帮助到有需要的小伙伴。UDP 的使用可以结合实时性高,少量数据丢失的特性来选择使用。如有不正确的地方欢迎各位指出纠正。
2024-12-12 09:30:00
1654
原创 TCP 数据传输的拆包和粘包了解吗?
MSS 的全称是 Maximun Segment Size,翻译过来就是最大分段大小,MSS 控制了 TCP 段的大小,它是一个协商字段,需要发送方接收方协商,然后双方都要遵循的标准,因此需要双方协商决定。我们知道 TCP 是传输层协议,TCP 协议传输数据有发送和接收的过程,我们知道 TCP 数据传输的时候是将一个完整的数据拆分成一段一段发送的,收到数据之后有会将一段一段的数据合并起来,还原成完整的数据。总而言之就是一次传输太大的数据包就是不合适的,从软件开发的思想来说一次处理大量的数据也是不合适的。
2024-12-11 09:30:00
953
原创 TCP 为什么是 3 次握手 4 次挥手?
TCP 的 3 次握手 4 次挥手是一个非常经典的问题,相信各位从事 Java 的朋友在职业生涯中没少被问到这个问题,本篇我们就展开分析一下 TCP 为什么是 3 次握手 4 次挥手。
2024-12-10 09:30:00
757
原创 Spring Boot 集成阿里云OSS 完成文件上传下载
文件上传下载在项目开发中是一个非常常见的业务场景,在云服务上还没有兴起的时候,一般来说都会把文件单独存放到文件服务器上,随着云服务的兴起,各类云服务厂商都提供了 OSS 服务,本篇我们分享 Spring Boot 项目如何把文件存储到阿里云 OSS。业务场景要求用户端发起导出请求后,快速生成一个导出记录响应到用户端,后端异步完成导出操作,后端完成导出后,将导出的文件上传到阿里云 OSS,用户可以在页面完成文件的下载。完成导出后,用户可以在页面上看到下载按钮,点击下载就可以完成导出的文件下载了。
2024-12-09 09:30:00
916
原创 Spring Boot 集成 EasyExcel 导出 Excel 文件【复杂表头】
Excel 导出在项目开发中是一个非常常见的业务场景,通过 Java 相关的类库可以轻松实现 Excel 的读写操作,常见的类库有 Apache POI、EasyPoi 和 EasyExcel,本篇我们要分享的是使用 EasyExcel 完成复杂表头的 Excel 导出,希望可以帮助到有需要的朋友。我们并没有写多少代码,就完成了看起来比较复杂的表头,这就是 EasyExcel 带来效果,当前 EasyExcel 在内存管理上也有显著的优势。实现了我们开始说的表头效果,导出结果符合预期。
2024-12-06 09:30:00
1718
2
原创 CPU 飚高的排查
通过观察 top 命令执行结果,找到占用 CPU 较多的 Java 进程,例如我这里的 9 进程,CPU 使用率达到了 103,完全使用掉了一个核心的 CPU,现在是知道了 CPU 飚高的现象,但是 CPU 为什么飚高?是哪一行代码导致 CPU 飚高呢?总结:本篇从 CPU 飚高的现象来逐步分析其原因,最终定位到代码问题,希望可以帮助到有需要的小伙伴,也希望大家在遇到 CPU 飚高的时候不要慌,逐步分析定位即可。堆栈日志非常明显的指出了哪一行代码使用了 CPU,至此就可以完全定位到 CPU 飚高的原因了。
2024-12-05 09:30:00
583
原创 JVM 性能调优 -- Arthas
之前陆陆续续的分享了 JDK 自带的相关调优命令、图形化界面工具、第三方网站工具等,本篇我们分享一下 Alibaba 开源的工具 Arthas。
2024-12-04 09:30:00
1905
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人