自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 redis缓存常见问题-缓存击穿、缓存穿透、缓存雪崩

文章主要讨论了Redis缓存使用中的常见问题及其解决方案。首先,缓存一致性问题是企业中最常见的,文章分析了CacheAside模式的优缺点,并提出了先更新数据库再删除缓存的策略,以减少不一致性的概率。其次,缓存穿透问题通过缓存空值或使用布隆过滤器来解决,以减少对数据库的直接访问。缓存雪崩问题则通过设置不同的TTL、使用Redis集群、降级限流和多级缓存等策略来缓解。最后,缓存击穿问题通过互斥锁和逻辑过期两种方案来处理,以避免热点Key失效时对数据库的冲击。文章还提到,在面试中可能会被问到Redis缓存相关的

2025-05-21 01:03:18 1150

原创 redis面试篇

文章摘要:本文探讨了缓存系统中的四个常见问题及其解决方案。首先,关于缓存双写一致性,推荐使用CacheAside模式,并设置缓存过期时间以确保最终一致性,而不采用延迟双删机制因其复杂且效果有限。其次,缓存穿透问题可通过布隆过滤器或缓存空值来解决。第三,缓存雪崩问题可通过设置不同的TTL值和利用Redis集群或多级缓存来缓解。最后,缓存击穿问题可通过互斥锁或逻辑过期策略来处理,避免多线程并发重建缓存,同时进行双重检查以确保缓存一致性。

2025-05-21 00:43:41 379

原创 Elasticsearch进阶篇-数据聚合

聚合(aggregations)是一种强大的数据分析工具,能够快速实现数据的统计、分析和运算。常见的聚合类型包括桶(Bucket)聚合、度量(Metric)聚合和管道(pipeline)聚合。桶聚合用于文档分组,如按品牌或日期分组;度量聚合用于计算最大值、最小值、平均值等;管道聚合则基于其他聚合结果进行进一步运算。通过DSL语法,可以轻松实现这些聚合功能,例如按条件过滤后进行品牌统计或价格分析。在Java中,可以使用RestClient和AggregationBuilders工具类来实现聚合功能,代码结构清

2025-05-20 22:39:16 1091

原创 Elasticsearch进阶篇-java程序通过RestClient操作es实现查询

本文介绍了如何使用Java API进行Elasticsearch查询,涵盖了从发送请求到解析响应的完整流程。首先,通过创建SearchRequest对象并利用request.source()构建DSL查询条件,使用QueryBuilders构建查询语句。接着,通过client.search()发送请求并解析SearchResponse响应结果,逐层解析JSON结构以获取文档数据。文章还详细介绍了多种查询类型,包括match、multi_match、range、term查询,以及复合查询如bool查询。此外,

2025-05-20 22:15:03 1065

原创 Elasticsearch进阶篇-DSL

本文介绍了Elasticsearch的DSL查询语法,主要分为叶子查询和复合查询两大类。叶子查询包括全文检索和精准查询,如match、term和range等;复合查询则通过逻辑运算组合多个查询,如bool查询。此外,文章还详细讲解了排序、分页和高亮等查询结果处理方式。通过Kibana的DevTools工具,用户可以快速上手DSL查询,并利用其强大的搜索功能进行数据检索。掌握DSL查询语法后,可以更高效地使用Elasticsearch进行数据搜索和分析。

2025-05-18 23:08:42 1030

原创 Elasticsearch基础篇-java程序通过RestClient操作es

本文介绍了如何在Java程序中集成和使用Elasticsearch,以实现高效的搜索功能。首先,通过引入RestHighLevelClient依赖并初始化,建立与Elasticsearch的连接。接着,详细讲解了索引库的操作,包括创建、删除和查询索引库,以及如何通过Mapping映射定义索引库结构。此外,还介绍了文档的增删改查操作,特别是批量导入文档的方法,以提高数据处理的效率。通过这些步骤,开发者可以在Java应用中有效地利用Elasticsearch进行数据搜索和分析。

2025-05-18 17:27:39 1459

原创 ElasticSearch基础篇-索引库操作、文档操作

Elasticsearch中的索引库操作类似于数据库表,Mapping映射则类似于表结构。Mapping定义了索引库中文档的约束,包括字段类型(如text、keyword、integer等)、是否创建索引、分词器等属性。索引库的CRUD操作遵循Restful风格的API,通过PUT、GET、DELETE等请求方式实现。创建索引库时需要定义Mapping,查询和删除索引库则直接通过索引库名进行操作。修改索引库时,虽然无法更改已有字段,但可以添加新字段。文档操作包括新增、删除、修改和查询,数据以JSON格式存储

2025-05-17 23:56:49 1074

原创 Elasticsearch入门篇

Elasticsearch是由Elastic公司开发的高性能搜索引擎,常用于日志收集、系统监控和数据分析。其技术栈包括Elasticsearch(数据存储与搜索)、Logstash/Beats(数据收集)和Kibana(数据可视化),合称ELK。Elasticsearch的核心功能是数据存储、搜索和计算,而Kibana则提供可视化操作界面,简化了Elasticsearch的API调用。安装Elasticsearch和Kibana可通过Docker命令完成,分别运行在9200和5601端口。Elasticse

2025-05-17 23:44:10 980

原创 RabbitMQ高级篇-消费者的可靠性

本文详细探讨了消息队列中消费者可靠性的实现机制。首先介绍了消费者确认机制,包括ack、nack和reject三种回执方式,并指出Spring AMQP如何通过配置简化这一过程。接着讨论了失败重试机制,通过本地重试避免消息无限循环,并提供了配置示例。文章还提出了失败处理策略,特别是RepublishMessageRecoverer的使用,以优雅地处理无法立即解决的消息。最后,强调了业务幂等性的重要性,并提出了两种实现方案:唯一消息ID和业务状态判断,以防止重复消息导致的业务异常。这些策略和机制共同确保了消息处

2025-05-15 23:54:54 670

原创 RabbitMQ高级篇-MQ的可靠性

MQ的可靠性主要依赖于数据持久化设置,确保消息在服务重启或崩溃时不会丢失。数据持久化包括交换机、队列和消息三个层面的持久化设置。交换机持久化通过设置Durability参数为Durable实现,队列持久化则在创建队列时指定durable=true。消息持久化通过设置delivery_mode=2实现,确保消息写入磁盘。非持久化设置适用于对消息可靠性要求不高的场景,非持久化队列和消息在服务重启后将丢失。持久化消息同时存储在内存和磁盘,而非持久化消息仅在内存中存储,磁盘存储为临时性。通过合理配置持久化设置,可以

2025-05-15 23:38:42 1320

原创 RabbitMQ高级篇-发送者的可靠性

消息在从生产者到消费者的传递过程中,存在多种可能导致消息丢失的情况,包括发送时的网络故障、MQ内部异常以及消费者处理失败等。为确保消息的可靠性,需从三个方面入手:确保生产者成功发送消息、MQ妥善保存消息以及消费者正确处理消息。为此,可以采用生产者重试机制和生产者确认机制。重试机制通过多次尝试发送消息来提高成功率,而确认机制则通过PublisherConfirm和PublisherReturn两种方式,确保消息成功投递到MQ并正确处理。这些机制虽能有效提高消息传递的可靠性,但也会影响性能,因此需根据具体业务需

2025-05-14 23:15:10 1013

原创 快速上手RabbitMQ及springboot快速整合RabbitMQ

Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列如果多个队列具有相同的RoutingKey,则与Fanout功能类似。

2025-05-14 21:30:23 1084

原创 docker:docker常用命令、数据卷、镜像、Dockerfile、项目部署DockerCompose

当我们利用 Docker 安装应用时, Docker 会自动搜索并下载应用镜像( image )。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker 会在运行镜像时创建一个隔离环境,称为容器镜像仓库:存储和管理镜像的平台, Docker 官方维护了一个公共仓库: Docker Hub。数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。html:放置一些静态资源conf:放置配置文件如果我们要让Nginx代理我们的静态资源,最好是放到。

2025-05-12 20:08:14 972

原创 安装docker,在docker上安装mysql,docker上安装nginx

可以看到容器的状态是启动(up),创建时间33分钟前,容器名称mysql,linux的3306端口映射到了mysql的3306端口,所以之后连接linux的3306,相当于操作到了docker容器的mysql监听的3306端口。-o 将镜像输出为什么样的文件,即将nginx:1.20.2的镜像保存为nginx-1.20.2.tar的文件。:1.20.2:指定拉取的Nginx镜像,如果在本地已经存在,就直接使用,如果不存在,就去镜像仓库拉取。如果没有指定版本,默认是latest,代表最新的版本镜像。

2025-04-26 23:08:31 2469

原创 docker配置mysql遇到的问题:网络连接超时、启动mysql失败、navicat无法远程连接mysql

在这一行-v /mydata/mysql/conf:/etc/mysql,我们将主机路径/mydata/mysql/conf挂载到容器路径/etc/mysql下,但实际上容器配置在/etc/mysql/conf.d/目录下。这个错误表明,你的客户端尝试通过 IP 地址连接到 MySQL 服务器,但服务器拒绝了这个请求。我们的命令指定的配置文件路径是/etc/mysql/,而容器读取的配置文件路径是/etc/mysql/conf.d/。切换到国内镜像源,如使用阿里云的Docker镜像加速器,以提高下载速度。

2025-04-26 22:31:24 1058

原创 linux常用指令:文件目录类、文件查看类、压缩和解压类

在 Linux 系统中,掌握常用指令是高效操作的关键。本文将为你详细介绍一些实用的 Linux 常用指令,帮助你在终端中游刃有余地完成各种任务。

2025-04-17 19:48:05 1008

原创 软件测试过程模型:v模型、w模型、x模型、H模型

只要某个测试达到准备就绪点,测试执行活动就可以开展,并且不同的测试活动就可按照某个次序先后进行,也可以反复进行。X模型中定位了探索性测试,这是不进行事先计划的特殊类型测试,可以帮助有经验的测试人员在测试计划之外发现更多的软件错误。两个V模型组成,一个V是软件测试全过程,一个V是软件开发全过程,明确表示出了测试与开发的并行关系。验收测试的标准是用户的需求,用户需求对应指导验收测试的效果,每个阶段都有相对应的阶段。在W模型中、需求,设计,编码等活动被视为串行的,这样无法支持灵活的迭代。D.开发人员自己测试。

2025-04-14 23:21:11 538

原创 python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)

python变量的类型不是固定,会根据变量当前值在运行时决定,可以通过内置函数type(变量)来查看其他类型,这种方式就是隐式转换,有的也称为自动转换。str转成int时,要求字符串中本身是整数;str转成float,字符串中可以是整数;变量根据使用的上下文(即当前值)在运行时决定其类型。float转换成int时会直接去掉小数点部分;强制转换后不会影响原变量和数据/值得类型。运算时数据类型会向高精度转换。将数据类型作为函数名;

2025-04-13 23:48:20 374

原创 软件生命周期模型:瀑布模型、螺旋模型、迭代模型、敏捷开发、增量模型、快速原型模型

为了早点上市场,先发布具备基本功能的产品,后续根据市场反应或者产品计划发布后续版本,即刚开始发布的就是一个稳定的、可运行的软件,可交给用户使用,随着后面的开发越来越深入。增量模型是把软件的每个模块独立开来,每次交付/发行都交其中的一个模块,根据市场反馈,决定下一次交付哪个模块,可以不按照顺序。螺旋模型是一种演化软件开发过程的模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化和严格监控。发布的软件就是可以运行的,在初级版本进行深入的研发,类型于更新。含义:把软件分割成独立的模块,分批次的完成和交付。

2025-04-13 22:39:58 1116

原创 python基础:变量-数据类型(整数类型、浮点类型、布尔类型、字符串类型)

意义:python仅保存一份相同且不可变字符串,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同的字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。1.在python中,int可以表示很大的数,限制最多存放4300个数字长的值,(官方:the limit(4300 digits) for integer)好处:当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提示效率和节约内存。

2025-04-11 19:11:03 1007

原创 springboot中测试python脚本:ProcessBuilder

ProcessBuilder是jdk提供的脚本执行工具类,无论是python文件还是shell脚本还是其他的指令,都可以通过此类来执行,我们来看看它是如何调用python脚本的。是 Java 提供的一个用于创建操作系统进程的类,它使得启动和管理外部进程变得更加简单和灵活。以下是一个详细的教程,帮助你理解如何在 Java 中使用。

2025-04-10 21:11:24 725

原创 python语言概述:python快捷键、转义字符

计算机不能直接执行程序员写的代码,需要通过python解释器(python.exe)将源代码解释翻译成计算器可以执行的二进制码。python源文件通常以.py为拓展名(规范),但不是必须(即就算是hello.abc,python解释器也是可以识别执行的)"结束,但带上";使用一次tab操作,实现缩进,默认整体向右边移动,使用shift+tab整体向左移动。快速启动程序 ctrl+shift+f10 或者 shift+f10。如果注释函数或者其中的某个步骤,使用单行注释。快速格式化 alt+ctrl+l。

2025-04-10 02:47:00 398

原创 软件测试的定义和目的

软件测试的定义和目的

2025-04-09 20:46:24 313

原创 mysql授权

默认情况下,mysql用户不允许从远程登录,只能在localhost登录,现在我们进行mysql授权。

2025-03-20 21:12:12 267

原创 mysql root密码忘记了,重置方法

首先,需要停止 MySQL 服务。由于跳过了权限表,可以直接登录 MySQL,不需要密码。停止并重新启动 MySQL 服务,使更改生效。选项启动 MySQL,这将跳过所有权限检查。

2025-03-20 21:06:44 379

原创 springbooot使用jdbctemplate进行动态数据源连接测试和根据yml文件进行连接测试的区别

Spring Boot 的自动配置机制会根据配置文件中的信息自动创建DataSource对象,并使用该对象创建实例。你不需要手动创建或配置这些对象,Spring Boot 会自动完成这些工作,并通过依赖注入将它们提供给你的应用。

2025-03-20 20:59:00 857

原创 HttpClient

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2025-03-04 21:56:28 345

原创 在 Java 中操作 Redis-RedisTemplate

RedisTemplate 针对大量 api 进行了归类封装 , 将同一数据类型的操作封装为对应的 Operation 接口,具体分类如下:• ValueOperations : string 数据操作• SetOperations : set 类型数据操作• ZSetOperations : zset 类型数据操作• HashOperations : hash 类型的数据操作• ListOperations : list 类型的数据操作。

2025-03-03 23:52:41 691

原创 SpringCloud - Eureka

一、为什么使用Eureka1.在企业级项目中,服务消费访问请求会存在高并发2.如果只有一个会员中心-提供服务,可用性差 3.所以,会员中心提供服务往往是一个集群,也就是说会有多个会员中心-提供服务微服务模块4.那么这个时候,就存在一个问题就是服务消费方,怎么去发现可以使用的服务5.当服务消费方,发现了可以使用的服务后(可能是多个,又存在一个问题就是到底调用A服务,还是B 服务的问题,这就引出了服务注册和负载均衡)6.Eureka 就可以解决上述问题二、引入Eureka框架解读:1. 会员中心-提供服务的,在

2025-01-23 23:59:20 710

原创 redis常用指令-set、hash、Zset

一句话: set 提供的功能与list 类似是一个列表的功能,特殊之处在于set 是可以自动排重的, 即值是不允许重复的。返回有序集key 中,下标在之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。返回两个集合的差集元素(key1 中的,不包含key2 中的)判断集合是否为含有该值,有1,没有0。给集合中的键赋值把集合中一个值从一个集合移动到另一个集合。返回该值在集合中的排名,从0 开始。

2024-12-09 22:38:14 959

原创 redis常用命令-list

其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。所以对于这个命令例子 LPUSH mylist a b c,返回的列表是 c 为第一个元素, b 为第二个元素, a 为第三个元素,k对于的是一个list,这个list底层是双向链表。用lpush,因为是从表头存放,从左到右每次取出来的都是最新的),而且list是做缓存的,在内存里速度也特别快。其它,比如微信的最近转发,微博的最新关注等.

2024-12-08 23:04:42 1593

原创 redis启动时报错

解答:这个错误信息表明你在尝试读取一个配置文件时遇到了问题。错误提示 Bad directive or wrong number of arguments 通常意味着配置文件中存在语法错误或者指令使用不当。所以我用vi /etc/redis.conf命令,发现我的配置文件确实在第一行出现了无关的字母,我删掉之后就可以成功启动了。解答:我登录XShell是用的root用户,而我的linux登录的是普通用户,所以拒绝连接,将linux换成root用户登录就行。

2024-12-08 22:49:03 772

原创 redis常用命令-String

String1. String 是 Redis 最基本的类型,一个 key 对应一个 value。2. String 类型是二进制安全的, Redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化 的对象。3. String 类型是 Redis 基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M。

2024-12-06 19:05:07 2216

原创 拦截器与过滤器的区别

注:这里的servlet指的DispatcherServlet,进入doService()

2024-12-05 23:39:01 267

原创 Redis+XShell下载安装

2.2.1安装 C 语言的编译环境 yum install gcc2.2.2测试 gcc 版本 gcc --version。

2024-12-05 23:18:22 590

原创 前后端分离的springboot项目利用MybatisPlus的分页插件进行查询操作

目标:在springboot项目中,在后端通过MybatisPlus的分页插件实现查询操作,前端通过Element Plus实现分页导航,将分页请求与后端的接口结合(注:以家具项目的增删查改进行举例,代码只有一部分)。

2024-12-04 23:36:06 907 1

原创 Spring Initializr创建springboot项目,提示java: 错误: 无效的源发行版:16

运行项目后报错:java: 错误: 无效的源发行版:16。

2024-12-03 19:21:02 2957 1

空空如也

空空如也

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

TA关注的人

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