自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发包中的锁升级

当有第二个线程尝试获取已被偏向的锁时,偏向锁会升级为轻量级锁。:如果轻量级锁下的多个线程争用同一个锁导致CAS失败(即自旋操作达到一定次数后),锁会进一步升级为重量级锁,这时会涉及到操作系统层面的互斥锁(mutex),线程会被阻塞和唤醒,开销较大。关键字的实现中,锁的升级通常涉及到从无锁状态到偏向锁、再升级到轻量级锁,最后可能升级到重量级锁的过程。这一系列过程是为了减少锁带来的开销,提高并发效率。:大多数情况下,锁会偏向于第一个获得它的线程,之后此线程再次请求锁时,无需进行同步操作,直接访问。

2024-06-06 20:01:58 240

原创 spring事务实现原理

Spring事务的实现原理主要是基于AOP(面向切面编程)

2024-06-06 19:58:36 332

原创 防止重复调用

在前段设置状态在响应时进入遮罩层或给按钮一个状态。

2024-05-30 14:48:25 531

原创 用openFeign编码器统一返回值

默认的编码器它仅能处理String类型、[byte]类型,显然是很难使用的,因为我们经常会在请求参数中放入对象。

2024-05-30 14:42:23 583

原创 解决Redis 缓存雪崩(过期时间不一致) 和 缓存穿透(黑名单)

解决Redis 缓存雪崩(过期时间不一致) 和 缓存穿透(黑名单)

2024-05-24 19:32:31 202

原创 商城购物车前段代码实现

【代码】商城购物车前段代码实现。

2024-05-24 19:26:35 347

原创 GitFlow流程

创建主分支和开发分支。

2024-05-11 09:00:04 553 1

原创 前端传日期时间后端转LocalDateTime

类型,后端借助注解,使用LocalDateTime接收。

2024-05-07 21:49:36 1026

原创 Feign 和 OpenFeign 的区别

OpenFeign是Spring Cloud团队在Feign基础上进行的扩展和封装,因此它更好地融入了Spring Cloud生态系统,特别是在Spring Boot 2.0及以上版本中得到了广泛的应用。结论是,如果你正在使用Spring Cloud构建微服务架构,建议使用OpenFeign,因为它提供了更好的集成和更多的配置选项,且得到活跃的维护和支持。如果你的项目还在使用较早版本的Spring Cloud,可能需要考虑使用Feign,但应注意Feign可能不会获得未来的更新和维护。

2024-05-06 17:12:23 1134

原创 SpringBoot项目启动,传参有哪些方式?

直接在启动 Spring Boot 应用的命令行中使用--后跟参数名和值的方式来传递参数。记住:一般是对于Spring Boot应用特有的配置参数,确保它们遵循Spring Boot的配置属性命名规则,这样才能被正确解析。

2024-04-24 15:02:59 822

原创 Ribbon负载均衡器

在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如F5),也有软件的(比如Nginx,openResty)如Nginx ,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端在进行负载均衡算法分配。

2024-04-23 20:58:42 516

原创 使用nacos的好处

使用docker 发布项目时,如果要修改配置文件就要重新打包发布比较麻烦,但用nacos远程配置后,不需要重新打包发布,就可以修改配置文件,减少了重新发布所消耗的时间,提高了效率。Nacos支持用户认证和授权,允许细粒度的访问控制,确保配置数据的安全性。通过Namespace和Group机制,可以实现不同环境或部门间配置的隔离。Nacos支持集群部署,确保了配置和服务发现的高可用性。

2024-04-23 20:39:31 553

原创 Nacos配置中心动态刷新原理

pull模式:主动拉去配置,通过固定的时间间隔。缺点:频繁请求,时效性不高,时间间隔不好设置。 push模式:服务端检测到变化,主动将新配置推送给客户端,时效性高,但是占用服务端的资源,服务端需要消耗大量的资源去维护和客户端之间的心跳。 nacos模式:客户端间隔10毫秒请求一次服务端,通过在请求头中携带长轮询的超时时间,默认30秒,服务端在接收到客户端的请求后,会将其挂起一段时间(30秒),在这30秒中,如果配置有变化,服务端就立即将配置相应给客户端,如果没有变化,30秒后客户端会再次请求。主要是通过

2024-04-23 20:14:34 635

原创 微服务演进史

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发微服务架构的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发微服务架构。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。官方网址: Spring Cloud Alibaba。

2024-04-23 14:48:05 993

原创 Nacos

官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。集 注册中心+配置中心+服务管理 平台Nacos 的关键特性包括:服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理。

2024-04-22 21:33:56 551

原创 面试题

在日志记录领域,尤其是使用如log4j、logback等日志框架时,MDC是一种辅助多线程环境下日志追踪和关联的技术。其原理是在每个线程的上下文中维护一个键值对映射表,用于存储与该线程执行上下文相关的特定信息(如用户ID、事务ID、请求ID等)。当线程在执行过程中生成日志时,MDC中的信息可以自动附加到日志条目中,无需在代码中手动传递这些上下文信息。

2024-04-22 21:26:43 1127

原创 如何处理项目日志

Elasticsearch 是一个基于 Apache Lucene 构建的分布式、实时搜索与分析引擎。它能够索引、搜索和分析大量数据,并且提供了水平扩展能力,允许处理 PB 级别的数据。Elasticsearch 适合用于全文搜索、日志分析、监控指标聚合等多种场景,其 RESTful API 让数据的索引和查询变得非常便捷。Logstash 是一个动态数据收集管道,用于从各种数据源接收、解析、转换并将数据发送到“stash”(例如 Elasticsearch)。

2024-04-22 21:12:10 358

原创 MongoDB 与MySQL的区别?优势?

MongoDB 与 MySQL 是两种不同类型的数据库管理系统,它们各自有独特的数据模型、查询语言、扩展方式以及适用场景。

2024-04-22 20:31:24 2598 2

原创 MDC搭配ttl

MDC 介绍​ MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的Map,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最保存这些数据。

2024-04-20 10:12:12 608

原创 EelasticSearch安装

Bash。

2024-04-18 21:32:02 392

原创 主键回填

在自动递增情况下 添加后返回主键id。在不是自动递增情况下 填入主键。

2024-04-17 21:10:18 138

原创 maven引入外部jar包

将jar包放入文件夹lib包中。

2024-04-15 20:54:12 304

原创 SpringBoot集成RockerMQ

RocketMQ支持指定级别的延迟消息,即只能设置预设的几个时间等级的延迟,而不是任意时间延迟。目前RocketMQ社区版并不支持任意时间的精确延迟,RocketMQ在4.x版本只能够支持18种内置的延迟消息(1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h),具体实现方式是在发送消息时设置消息的延迟等级。

2024-04-11 20:48:30 309 1

原创 RocketMQ安装

【代码】RocketMQ安装。

2024-04-11 20:39:06 196

原创 cannal的使用

修改instance.properties内容如下。修改canal.properties内容如下。

2024-04-10 21:29:10 706

原创 在服务器部署MySQL

其中my.cnf 内容如下2.启动数据库3.校验是否开启成功DML与DDLMySQL中,DML(Data Manipulation Language)和DDL(Data Definition Language)是两种不同类型的SQL语句,它们分别用于不同的数据库操作目的:DML(数据操作语言): DML语句主要用于对数据库表中的实际数据进行操作,主要包括以下几种命令::向表中插入新的行数据。:更新表中已存在的行数据。:从表中删除满足特定条件的行数据。:从表中检索数据,虽然不

2024-04-10 21:05:36 999

原创 Rabbitmq怎么保证消息的可靠性?

为保证消息可靠性,可以设置autoAck=false,使得消费者在处理完消息后手动发送确认(basicAck)。开启confirm回调模式后,RabbitMQ会在消息成功写入到磁盘并至少被一个交换器接受后,向生产者发送一个确认(acknowledgement)。当消息不能被正常消费时(比如达到最大重试次数),可以通过设置TTL(Time To Live)或者死信交换器(Dead Letter Exchange)将消息路由至死信队列,从而有机会后续分析和处理这些无法正常消费的消息。

2024-04-09 21:26:28 870

原创 生产端消息可靠性保证: 确认(Confirm)机制

PostConstruct注解是Java EE规范中的一部分,主要用于标记在一个Bean初始化完成后需要执行的方法。这个注解由JSR-250定义,并且在Spring框架以及其他遵循Java EE标准的应用服务器中广泛支持。当容器完成对Bean的实例化并且所有依赖注入完成后,将会自动调用标有注解的方法。这为开发者提供了一个机会,在对象正式投入使用之前进行一些必要的初始化工作,比如初始化资源、预计算某些值、启动后台任务等增强。

2024-04-09 21:24:09 453

原创 延迟 队列

该种方式可以创建一个承载不同超时时间消息的消息队列,但是这种方式有一个问题,如果消息队列中排在前面的消息没有到超时时间,即使后面的消息到了超时时间,先到超时时间的消息也不会进入死信队列,而是先检查排在最前面的消息队列是否到了超时时间,如果到了超时时间才会继续检查后面的消息。上述实现方式中,ttl延时队列中所有的消息超时时间都是一样的,如果不同消息想设置不一样的超时时间,就需要建立多个不同超时时间的消息队列,比较麻烦,且不利于维护。17:30 延迟时间: 13*30 * 60 * 1000。

2024-04-09 19:30:57 1576

原创 MQ死信队列

在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现。死信就是消息在特定场景下的一种表现形式,这些场景包括:1. 消息被拒绝访问,即 RabbitMQ返回 basicNack 的信号时 或者拒绝basicReject2.消费者发生异常超过重试次数。其实spring框架调用的就是basicNack3.消息的Expiration过期时长或队列TTL过期时间。4. 消息队列达到最大容量上述场景经常产生死信,即消息在这些场景中时,被称为死信。

2024-04-09 14:23:09 615

原创 MQ应答模式

如果消费者在处理消息前断开了连接,或者在处理消息期间抛出了未捕获的异常,RabbitMQ会认为消息未被正确处理,从而重新排队消息,确保消息至少会被消费一次(at least once delivery)。采用手动应答可以提高消息的可靠性,即使消费者在处理消息过程中出现问题,只要未发送ack确认,RabbitMQ会在重新连接后再次将消息发送给该消费者。不在乎消费者对消息处理是否成功,都会告诉队列删除消息。方法来确认消息处理完成,RabbitMQ只有在接收到消费者的确认后才会将消息从队列中删除。

2024-04-08 19:56:40 1030

原创 SpringBoot整合RabbitMQ

中配置RabbitMQ服务器的连接参数。把String换成对象。

2024-04-07 21:20:04 399 1

原创 什么是MQ ?为什么用MQ?

MQ(message queue)(消息队列),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。

2024-04-07 20:44:35 6535

原创 Redis 和 Mysql 数据库数据如何保持一致性

我们在实际项目中经常会使用到Redis缓存用来缓解数据库压力,但是当更新数据库时,如何保证缓存及数据库一致性,一般我们采用延时双删策略。目前系统中常用的做法是一个查询接口,先查询Redis,如果不存在则查询数据库,并将结果放入到Redis中。为什么是删除缓存,而不是更新缓存呢?主要是如果缓存的内容是带有树型结构或者List,Map,那么更新其中一个内容相对较慢。本文所讲操作,均是按照如果缓存不存在,查询数据库后,再放入Redis。

2024-03-30 15:03:59 540

原创 Redis主从同步机制和Redis集群

Sentinel是Redis提供的一个高可用性解决方案,它能监控主从节点状态,并在主节点出现故障时自动完成故障转移。当主服务器执行完 bgsave 命令后,主服务器会将 bgsave 命令生成的 rdb 文件发送给从服务器;缺点:虽然比主从模式增加了自动化,但仍不支持自动的数据分区,且随着节点数量增加,管理和配置的复杂性也会增大。在此模式下,有一个主节点负责处理写入请求,而从节点则复制主节点的数据并提供读取服务。以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库。

2024-03-30 14:45:53 410

原创 Redis 过期删除策略和内存淘汰策略

放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。全称Least recently used,意思为淘汰掉最久未使用(即。2.设置过期时间的键空间选择性移除。3.(4.0及以上版本可用)1.全局的键空间选择性移除。

2024-03-30 14:19:36 721

原创 lua脚本操作Redis

【代码】lua脚本操作Redis。

2024-03-30 09:51:22 520

原创 Redis自定义序列化工具

在用Spring Boot 使用Redis命令时会出现乱码问题。解决乱码问题写序列化工具。

2024-03-30 09:46:21 397

原创 Redis 慢日志

Redis 慢查询日志统计的时间,只包含第三步的 Redis 命令从开始执行到执行完成的时间。

2024-03-30 09:37:42 494

原创 数据脱敏技术

数据脱敏(Data Masking)是一种数据安全技术,旨在通过预先设定的规则和算法,对原始数据中包含的敏感信息进行变形处理,使得这些信息在非生产环境(例如开发、测试、分析或培训场景)中使用时,既能保持原有数据格式和业务逻辑的真实性,又能有效保护个人隐私和商业机密不被泄露。在实施数据脱敏时,对诸如身份证号、手机号、银行卡号、个人姓名、家庭住址、电子邮件地址、医疗记录等敏感信息采取替换、遮盖、乱序、加密、截断等手段进行处理,以防止这些敏感信息在未经授权的情况下被识别或滥用。

2024-03-30 08:55:43 1930

空空如也

空空如也

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

TA关注的人

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