自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(463)
  • 资源 (5)
  • 收藏
  • 关注

原创 SpringBoot集成RedisSearch

Redis Search 是 Redis 官方提供的全文搜索引擎,它为Redis 提供全文搜索、索引和复杂查询功能。它基于内存存储,结合了 Redis 的高性能和倒排索引技术,支持实时搜索、聚合分析、模糊匹配等场景。RedisSearch 适用于需要快速检索结构化或非结构化数据的应用,如电商搜索、日志分析、实时推荐等。更多详细的介绍可参见:[《一文了解亿级数据检索:RedisSearch》](https://blog.csdn.net/zhiyikeji/article/details/147069153)

2025-04-08 17:36:42 605

原创 一文了解亿级数据检索:RedisSearch

Redis Search 是 Redis 官方提供的全文搜索引擎,只是Redis 的一个模块,它可以在 Redis 中存储和查询文本数据。它为Redis 提供全文搜索、索引和复杂查询功能。它基于内存存储,结合了 Redis 的高性能和倒排索引技术,支持实时搜索、聚合分析、模糊匹配等场景。适用于需要快速检索结构化或非结构化数据的应用,如电商搜索、日志分析、实时推荐等。

2025-04-08 15:12:42 1579

原创 docker安装redisSearch

Redis Search 是 Redis 官方提供的全文搜索引擎,它为Redis 提供全文搜索、索引和复杂查询功能。它基于内存存储,结合了 Redis 的高性能和倒排索引技术,支持实时搜索、聚合分析、模糊匹配等场景。RedisSearch 适用于需要快速检索结构化或非结构化数据的应用,如电商搜索、日志分析、实时推荐等。

2025-04-08 11:39:05 315

原创 通过第k个最大元素深入浅出快排和堆排序

快排和堆排序在确定k个元素有着得天独厚的优势,原因是无论快排还是堆排序在每一轮排序中均可以确定一个元素每一轮排序均可以确定一个元素位置每一轮排序都可以确定一个最小值或最大值他们的时间复杂度都是O(nlogk),但是快排的空间复杂度是O(logn),而堆排序的空间复杂度是O(k)。所以便想着带着大家通过来详细的学习一下如何将这两种思路去落地和应用题目:《题目描述:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

2025-04-03 17:04:24 362

原创 单调栈详解

从5开始分别向左向右找,向左找到元素5第一个小于5的元素1,向右找到5第一个小于5的元素2,则元素5对应的长度是4-1-1=2,这是暴力的思路,我们用单调栈来处理这个过程。考虑[2,1]这样的特殊情况,2入栈后,当前枚举的元素是1,1小于2,所以2出栈,并计算以2为高度的矩形面积,右边界是清晰的,为1,而左边界是什么呢?相关处理:从5开始分别向左向右找,向左找到元素5第一个小于5的元素1,向右找到5第一个小于5的元素2,则元素5对应的长度是4-1-1=2。求在该柱状图中,能够勾勒出来的矩形的最大面积。

2025-04-01 19:43:01 632

原创 Spring的事件处理机制

Component@Overridetry {LogUtil.errorLog().log("获取IP地址异常", e);由于一些限制,没法针对代码做逐行讲解,只能借着一个点,把相关的核心技术点讲解一下,这个核心技术点就是Spring的事件监听机制。Spring中的事件处理机制是对设计模式中的观察者模式的一种扩展,它可以实现应用程序中的解耦,提高代码的可维护性和可扩展性。《观察者模式》在传统的观察者模式中,最主要的对象有观察者被观察者。

2025-03-10 17:52:52 627

原创 新一代MPP数据库:StarRocks

OLAP数据库(Online Analytical Processing Database,在线分析处理数据库)

2025-02-21 11:27:20 2184

原创 docker安装StarRocks

StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing,MPP数据库是一种基于大规模并行处理技术的数据库系统,旨在高效处理大量数据。) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理,就可以用 StarRocks 来支持多种数据分析场景的极速分析。本文主要介绍如何通过docker快速完成StarRocks的安装与使用。

2025-02-10 13:32:35 1001 1

原创 MAC OS安装Homebrew

Homebrew作为一个包管理器,提供了一种简便的方式来安装、更新和卸载各种命令行工具和应用程序。相比于手动下载和编译源代码,或者从不同的网站下载安装包,使用Homebrew可以显著减少这些操作的时间和复杂性。

2025-02-06 11:08:59 999 1

原创 RocketMq详解:七、RocketMq的顺序消息和乱序消息详解

顺序消息是消息队列 RocketMQ 提供的一种高级消息类型。对于一个指定的Topic,消息严格按照先进先出(FIFO)的原则进行消息发布和消费。即先发送的消息先消费,后发送的消息后消费。顺序消息在发送、存储和投递的处理过程中,强调多条消息间的先后顺序关系。RocketMQ 顺序消息的顺序关系通过消息组(MessageGroup)判定和识别,发送顺序消息时需要为每条消息设置归属的消息组,相同消息组的多条消息之间遵循先进先出的顺序关系,不同消息组、无消息组的消息之间不涉及顺序性。

2025-01-14 17:42:47 1711

原创 RocketMq详解:六、RocketMq的负载均衡机制

负载均衡在分布式服务里会频繁的出现,其主要是用来在多个资源 (一般是服务器)中分配负载,达到最优化资源使用,避免单台服务器过载。RocketMQ中的负载均衡,指的是如何将消息队列(Message Queue)均匀地分配给消费者组中的各个消费者实例。通过负载均衡机制,可以避免某些消费者实例处理过多消息队列而过载,或者某些实例没有消息可处理,从而提高系统的整体处理能力和资源利用率。

2024-12-05 15:13:49 1711

原创 第四章:DDD中的Repository模式

在领域驱动设计(Domain-Driven Design, DDD)中,Repository模式是一种设计模式,它提供了一种机制来封装数据访问逻辑,并且为领域对象提供了持久化服务。在DDD思想中repository表示资源库的概念,用于区分数据模型和领域模型,它充当了领域层与基础设施层之间的桥梁确保领域模型保持纯净,不包含任何关于数据持久化的逻辑。为了保持代码的一致性和可维护性,建议定义一个统一的Repository接口,该接口可以包含一些通用的操作方法。

2024-10-27 20:19:09 1210

原创 RocketMq详解:五、SpringBoot+Aop实现RocketMq的幂等

在数学计算或者计算机科学中,幂等性(idempotence)是指相同操作或资源在一次或多次请求中具有同样效果的作用。幂等性在分布式系统设计中具有十分重要的地位。HTTP 幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。不管你调用一次,还是调用一百次,一千次,结果都是相同的。什么意思呢?

2024-10-15 16:08:39 1486

原创 RocketMq详解:四、RocketMq消息的重试

里我们已经极大的简化了消息的发送和消费机制,但是对于我们逻辑上的消费失败以及异常情况下的消息重试我们需要自定义重试逻辑,在学习本章前,请保证自己已经完成了上一章的内容,本文便不在赘述。

2024-10-15 14:24:14 927 1

原创 RocketMq详解:三、RocketMq通用生产和消费方法改造

为了优化这个问题,我们可以使用@RocketMQMessageListener注解的returnTopic属性来指定一个返回主题,当消息消费失败时,将消息发送到这个返回主题中。以boot-mq-topic为例,我们实现具体的消费,新增一个对象BootMqConsumer继承我们的CommonConsumer,来实现具体的消费逻辑。中我们已经实现了消费基本生产和消费的实现,但是在真实的开发环境中如果按照这种方式去实现,冗余代码较多,且通过实现。在原始的实现中,我们通过实现。方法来完成消息的消费。

2024-10-13 22:14:50 1661

原创 MacOS环境下RocketMQ安装及部署 RocketMQ Dashboard 可视化

1.打开,找到下载页面。2.我们直接下载最新版本的压缩包3.解压缩。

2024-08-04 20:47:22 1958

原创 docker安装rocketMq5x以上的版本

安装RocketMQ 5.x以上的版本主要是因为新版本引入了许多性能优化、新功能以及对已有特性的增强,这些改进可以帮助提升消息队列系统的稳定性和效率。:RocketMQ 5.x版本通常包括了对消息处理速度、吞吐量和延迟的优化,使得系统能更好地应对大规模、高并发场景。:每个大版本的迭代都会修复已知的安全漏洞,并增加新的安全特性,确保数据传输的安全性和系统的稳定性。

2024-06-30 22:11:48 812

原创 RocketMq详解:二、SpringBoot集成RocketMq

在上一章中我们对Rocket的基础知识、特性以及四大核心组件进行了详细的介绍,本章带着大家一起去在项目中具体的进行应用,并设计将其作为一个工具包只提供消息的分发服务和业务模块进行解耦。

2024-06-10 21:52:34 2776

原创 RocketMq详解:一、RocketMQ 介绍及基本概念

RocketMQ 是阿里巴巴开源的分布式消息中间件,现已成为 Apache 软件基金会的顶级项目。支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。它里面有几个区别于标准消息中件间的概念,如Group、Topic、Queue等。系统组成则由Producer、Consumer、Broker、NameServer等组件组成。

2024-04-28 17:48:33 20539

原创 第三章:DDD四种模型详解

在上一章中我们通过一些案例分析了解到了在设计我们的对象和功能时如何去定义我们的DP,本章带着大家系统的了解一下在我们开发时经常遇到的四种领域模型。

2024-04-14 20:12:38 2837 1

原创 docker安装rocketMq

在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。此外,由于 rocketmq 需要部署broker与nameserver,考虑到分开部署比较麻烦,这里将会使用。

2024-03-10 14:53:13 1214

原创 Docker容器Docker桌面配置镜像加速

打开Docker Desktop应用程序,点击设置。

2024-03-10 14:44:17 4448 1

原创 第二章:Domain Primitive

在第一章中我们初步了解DDD的概念,以及DDD中经常提到的贫血和充血模型,由于 DDD 不是一套框架,而是一种架构思想,所以在代码层面缺乏了足够的约束,导致 DDD 在实际应用中上手门槛很高。让我关注DDD的原因除了公司内整个架构采用DDD的设计之外,它有一个思想Anti-Corruption Layer(防腐层)的概念,特别是其在解决外部依赖频繁变更的情况下,如何将核心业务逻辑和外部依赖隔离的机制。

2024-03-03 20:53:04 1370

原创 idea查找所有未使用的代码

最近在做无用代码下线的时候发现一个方法里会引用很多个方法,一旦该方法删除以后,里面被引用的方法应该也一同下线,但是一个一个的找过去比较耗费精力,下面给大家推荐一个idea自带的代码分析工具。

2024-02-23 16:51:57 2355

原创 解决com.alibaba.fastjson.JSONException: default constructor not found的问题

在进行JSON和对象互转时,发现有个报错:通过其提示可以看出在利用fastJson转对象时需要无参的构造函数,而我的对象:是没有构造函数的,所以需要手动加进去关键就是这个注解:@NoArgsConstructor,在次尝试就会发现已经解决了

2024-01-15 14:29:42 3905

原创 第一章:初识DDD

DDD分为战略设计与战术设计。一般来说,领域建模是属于战略层的,而DDD工程落地是属于战术层的,两者是否结合使用,视实际情况而定,比如传统的MVC架构也能使用DDD进行领域建模,DDD架构最好是先做DDD领域建模。在进行具体的实践之前我们必须对一些专有名词进行了解,本章,就带着大家一起去对领域驱动设计有个初步的认知。

2024-01-15 11:11:49 1655

原创 Java中并发下的ThreadlocalRandom

在看同事写的代码的时候发现代码里有很多像:如果我们想要生成一个随机数,通常会使用Random类。但是在并发情况下Random生成随机数的性能并不是很理想,今天给大家介绍一下JUC包中的用于生成随机数的类–ThreadLocalRandom.(本文基于JDK1.8)当然Random随机数也可以保证线程的安全,但是Random随机数生成是和种子seed有关,而为了保证线程安全性,Random通过CAS机制来保证线程安全性。从next()方法中我们可以发现seed是通过自旋锁和CAS。

2024-01-10 10:44:30 826

原创 SpringBoot接入轻量级分布式日志框架GrayLog

Graylog 日志监控系统Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。在功能上来说,和 ELK 类似,但又比 ELK 要简单很多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。当然,在扩展性上面确实没有比 ELK 好,但是其有商业版本可以选择。部署 Graylog 最简单的架构就是单机部署,复杂的也是部署集群模式,架构图示如下所示。我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDB 和 Graylog。其中。

2023-12-18 19:12:53 3517

原创 Docker-Compose安装教程

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。

2023-12-18 14:17:42 1406

原创 Java8之Stream流的Collectors.toMap Duplicate key问题

在项目部署的时候,编译通过,但是一直运行不起来,看到错误日志之后发现:原因是我使用stream将list转成Map的时候,有一个RouteId是重复的,导致转换报错。

2023-11-30 17:34:31 2117

原创 注解方式优雅的实现Redisson分布式锁

通常我们都会将redisson实例注入到方法类里面,然后调用加锁方法进行加锁,如果其他业务方法也需要加锁执行,将会产生很多重复代码,由此采用AOP切面的方式,只需要通过注解的方式就能将方法进行加锁处理。/*** @date 2023年11月27日String errorDesc() default "系统正常处理,请稍后提交";/*** @date 2023年11月27日String errorDesc() default "系统正常处理,请稍后提交";/**

2023-11-27 20:08:05 963

原创 解决:ERR This instance has cluster support disabled

注意:不能通过命令config set cluster-enable yes来解决,因为config命令里面没有cluster-enable配置项。修改配置文件redis.conf中的cluster-enabled参数的值为yes并把参数前#去除,重启Redis服务器。出现这种提示的原因,是因为此Redis实例已经禁用了集群(默认状态下是禁用状态)。重启服务之后,执行:cluster nodes。

2023-11-21 16:22:47 3133

原创 解决:java.lang.IllegalArgumentException: Java 8 date/time type `java.time.LocalDate` not supporte

在使用ObjectMapper进行Map和对象的转换时,因为对象中有一个字段的属性为:LocalDate,导致产生:解决方法也很简单,按照它的错误提示,添加:完整代码:

2023-11-03 16:29:47 765

原创 Bean转换工具MapStruct看这一篇就够了

mapstruct是一种实体类 映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类。它基于约定优于配置方法极大地简化了 Java bean 类型之间映射的实现,有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,在编译过程中,mapstruct会自动生成该接口的实现类,实现将源对象映射到目标对象的效果。总的来说,有如下三个特点:基于注解在编译期自动生成映射转换代码类型安全、高性能、无依赖性。

2023-10-24 19:29:56 2267

原创 我的创作纪念日

在技术领域,本人一直信奉只有开源,才能够促使技术有更大的进步,每个人在不同的领域想要快速的提升,就必须站在巨人的肩膀上,少走一些弯路,因为知识领域的共享产生的效果是远远大于1+1=2的,当然最初的初心也并不是为了共享知识,因为自己也没那么多的知识储备,当时只是纯粹当成自己的在线学习笔记来用,今天,借着这个机会,分享一下通过CSDN带来的提升和一些潜在的价值。在后面的工作历程中,会逐步剖析目前用到或者见到的系统架构、技术,让技术落地,以更加系统全面的方式贡献自己的技术。

2023-10-23 17:14:17 542

原创 idea中还原dont ask again

在使用idea打开另外一个项目的时候,一不小心勾选为当前项目而且是不在下次询问,导致后面每次打开新的项目都会把当前项目关闭,如下图所示。下面我们就一起看一下如何把这个询问按钮还原回来。

2023-10-18 15:26:28 1186

原创 Java中双冒号“::”到底什么意思

看到这儿大家应该对什么是方法引用有了一些认知,其本质就是Runnable或Consumer来指向一个具体的方法,至于该使用哪一个就要看指向的方法是否有参数。上面的内容均是无返回结果的,因为不管是Runnable的run方法还是Consumer的accept方法,均无返回值,如果我们需要返回值则可以使用。通过其源码也可以发现,Consumer也是一个函数式接口,里面提供了一个有参的accept方法,这个方法对应到。,是Java 8中的Lambda表达式写法之一,一种执行方法的方法。

2023-10-07 17:27:39 4334

原创 SpringBoot+Redis BitMap 实现签到与统计功能

最近项目里需要集成签到和统计功能,连续签到后会给用户发放一些优惠券和奖品,以此来吸引用户持续在该品台进行活跃。下面我们一些来聊一聊目前主流的实现方案。因为签到和统计的功能涉及的数据量比较大,所以在如此大的数据下利用传统的关系型数据库进行计算和统计是非常耗费性能的,所以目前市面上主要依赖于高性能缓存功能来实现。先看看利用Mysql实现以上功能会有哪些缺陷和短板。

2023-09-15 17:23:06 1849 1

原创 MAC终端美化

由于agnoster 主题内夹带有特殊符号,需要另外安装Powerline 字体才能够正常显示,在终端机上输入底下安装Powerline 字体指令即可,在终端依次输入一下三行命令。安装过程中如果出现了链接超时的错误,不要慌,就再来一次,一次不够来两次~,安装完毕后,就会看见一个非常大字oh my zsh ,如上图所示。至于像【agnoster】这种类似的主题的名字怎么去找,大家可以自行去Oh My Zsh的官网去查看,当设置完成之后,在回到我们的终端就会发现,已经较默认的漂亮很多了。进入终端的偏好设置项。

2023-09-08 17:59:20 1453

原创 同一份数据,Redis为什么要存两次

本文主要分析了set对象和zset对象的底层存储结构, intset 和 skiplist 的实现原理,并且重点分析了有序集合如何实现排序以及为何同时使用两种数据结构(字典和跳表)同时进行进行存储数据的原因。

2023-07-26 11:23:08 555

分布式+链路追踪+skywaling+探针

分布式+链路追踪+skywaling+探针

2022-11-11

计算机网络第五版课后答案已经ip类型题目详解

里面的有第五版(谢希仁)微课版完整的课后答案以及ip类型的题目及其详解

2018-12-23

学生在线管理系统

使用bootStrap,ssm,jquery,excel导出等功能实现在线学生管理系统

2018-12-09

在线视频播放器

里面使用springboot以及bootstrap,video,js,bootstrap-box,在线翻译等主流技术搭建一个在线播放视频,音频的播放器,可以实现即时更新,即时切换,在线翻译,在线搜索资源等技术,里面有详细的文档说明次代码

2018-12-06

vue实现用户管理系统

里面有详细的步骤和页面设计的样式来使用vue实现用户管理系统

2018-11-18

java_I/O流的教程

里面有java流的详解----从入门到掌握,里面有详细的代码解释,也有详细的笔记教程,望采纳

2018-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除