- 博客(32)
- 问答 (1)
- 收藏
- 关注
原创 【切面编程】自定义注解实现操作日志
*** @description 日志注解*//*** 模块名称* @return*//*** 业务类型* @return*/
2024-07-31 20:53:55
256
原创 【幂等性】详解
在实际应用中,保证幂等性通常需要依赖于唯一标识符或版本号来追踪处理状态,或者设计操作步骤和算法,使得多次执行同一操作不会产生不同的结果。这在分布式系统和消息队列中尤为重要,因为网络问题或系统故障可能会导致消息重复传递和处理。幂等性(Idempotence)是指一个操作无论执行一次还是多次,结果都是一致的。在消息系统中,幂等性是指无论消息被处理多少次,系统的状态都不会改变,即不会产生副作用。总结来说,幂等性保证了系统在处理消息时的可靠性和一致性,能够有效地避免由于消息重复发送或处理而引发的问题。
2024-07-02 14:06:30
227
原创 Kafka如何防止消息重复发送
综上所述,Kafka 提供了多种机制来防止消息重复发送和处理,具体的选择取决于应用的需求和使用场景。在设计和实现中,通常会结合生产者端的幂等性设置、消费者端的幂等性保证、事务性保证以及适当的消息处理策略来确保消息系统的稳定性和一致性。Kafka 提供了几种方式来防止消息重复发送和处理。
2024-07-02 14:02:23
611
原创 Kafka如何防止消息丢失
持久化存储:Kafka 使用基于日志的存储模型。每个主题的分区都会被分割成多个片段(Segment),每个片段都是一个可追加的日志文件。生产者发送的每条消息都会被追加到对应分区的当前活跃片段(active segment)中。这种设计保证了消息在写入时是持久化的,即使在写入过程中发生故障,已经写入的消息也不会丢失。副本机制:Kafka 使用副本来提高消息的可靠性和持久性。每个主题的分区可以配置多个副本,每个副本分布在不同的 Broker 上。每个分区都有一个 Leader 副本(Lea
2024-07-01 09:41:24
314
原创 【详谈】延迟双删(数据库与缓存一致性策略)
延迟双删作为一种缓解数据库与缓存数据一致性问题的方法,通过延迟删除缓存数据来平衡系统性能和数据实时性的需求。在实际应用中,需要根据具体情况选择合适的延迟时间和实现方式,以保证系统在性能和一致性之间达到最佳的平衡。
2024-07-01 09:03:02
2255
原创 详解 Spring 框架中的动态代理(附案例)
代理模式简介代理模式是一种结构型设计模式,允许在不改变原始类(被代理类)代码的情况下,通过引入代理类来控制对原始类的访问。Spring 中的代理机制Spring AOP 提供两种代理方式:基于接口的 JDK 动态代理和基于类的 CGLIB 动态代理。–默认的实现是 JDK 动态代理JDK 动态代理如果目标对象实现了接口,Spring AOP 将使用 JDK 动态代理来创建 AOP 代理。
2024-06-24 13:57:29
505
原创 【超详细】使用RedissonClient实现Redis分布式锁
使用RedissonClient实现Redis分布式锁是一个非常简洁和高效的方式。Redisson是一个基于Redis的Java客户端,它提供了许多高级功能,包括分布式锁、分布式集合、分布式映射等,简化了分布式系统中的并发控制。
2024-06-14 09:14:40
653
原创 redis的分布式session和本地的session有啥区别
在web应用开发中,Session用于在多个请求之间存储用户数据。传统上,Session存储在服务器的内存中,即本地Session。然而,随着应用规模和复杂度的增加,特别是在分布式环境中,本地Session会遇到一些问题。这时,Redis等分布式存储系统就显得尤为重要,用于实现分布式Session存储。
2024-06-13 20:57:42
700
原创 Java异步任务详解
异步任务指的是不阻塞当前线程,任务提交后会在后台线程执行,主线程可以继续执行其他操作。异步任务通常用于提高应用程序的响应性和效率。通过这些方法,Java 中的异步任务可以有效地提高应用程序的性能和响应性,但同时也需要注意并发编程的各种潜在问题。
2024-06-13 16:34:16
400
原创 读写分离和分库分表详解
在实际应用中,读写分离和分库分表可以结合使用。比如,先通过分库分表解决数据量和并发访问的问题,然后再通过读写分离进一步提升读操作的性能。这两种技术的结合可以有效地提高系统的水平扩展能力和整体性能,但也需要更多的设计和运维投入。分库分表是将单个数据库中的数据拆分到多个数据库或多个表中,以提高数据库的性能和扩展能力。读写分离是将数据库的读操作和写操作分离到不同的数据库实例上,以提高系统性能和可扩展性。
2024-06-13 16:26:38
337
原创 数据库的优化方案
以上数据库优化,涵盖了索引优化、表结构优化、查询优化、缓存优化、硬件优化、定期维护和监控调优等方面。这些方法可以帮助提高数据库的性能和效率,从而改善系统的整体运行情况。
2024-06-12 20:55:59
313
原创 自定义注解获取属性对应枚举的翻译值
EnumShowIntegerSerializer 类的作用是根据EnumShow注解的配置,对整数类型的枚举值进行序列化时,除了输出数值本身,还会额外输出一个带有特定suffix的字符串字段,该字段的值是根据枚举值的特定规则计算得到的。如果枚举类为普通的Java枚举,则通过反射获取枚举值的键和值方法,并遍历枚举常量,找到对应整数值的枚举值,并获取其值。如果枚举类实现了BaseEnum接口,则通过BaseEnum.of方法获取枚举值,并获取其对应的字符串值。
2024-06-10 20:56:00
545
原创 JAVA根据视频url,获取视频时长
在需要获取视频时长时候需要调用这个工具类即可返回视频时长(秒)创建个视频解析工具类来获取视频时长。使用jave-all-deps包。导入相关视频解析依赖。
2024-06-03 08:36:15
698
原创 Java中【线程】及【线程池】详细介绍(概念、实现方式、生命周期、案例)
线程池在多线程编程的场景中非常常用,可以有效地控制并发线程的数量,提高程序的执行效率,并且避免线程创建和销毁的开销。在操作系统中,每个进程都有自己的地址空间和资源,而线程是在进程中运行的,它共享进程的资源,包括内存、文件和网络连接等。使用线程池时,我们只需要将需要执行的任务提交给线程池,线程池会自动管理线程,分配任务给空闲的线程执行。线程池的生命周期管理是保证多线程编程质量和性能的关键一环,合理地管理线程池的生命周期有助于避免资源泄漏和线程阻塞的问题,同时提高系统的性能和可维护性。
2024-05-15 09:08:17
1097
原创 java中wait()和sleep()的区别
是两个不同的方法,用于线程控制和同步。方法主要用于线程的暂停,暂停的时间可以是指定的固定时间。方法常用于线程的协作和同步,与锁对象配合使用,而。
2024-05-15 08:55:40
283
原创 【超详细】JAVA设计模式总结之23种设计模式详解(附示例代码)
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点来访问该实例。这意味着无论何时请求该类的实例,都将返回相同的实例。单一实例: 一个类只能有一个实例。全局访问点: 提供一个全局的访问点,使得其他对象可以轻松地访问到这个实例。延迟实例化: 实例化过程被延迟到第一次请求该实例时。节省资源: 由于只有一个实例,节省了内存和系统资源。易于控制: 由于单例模式限制了实例化过程,因此易于对实例化过程进行控制。易于扩展: 对单例类的访问点是全局的,因此易于对其功能进行扩展和修改。
2024-05-11 15:59:02
2822
1
原创 SpringBoot整合Elasticsearch的CRUD--kafka同步更新数据库到es
ProductRepository接口,继承自CrudRepository,提供对ProductTOElastic类型数据的基本CRUD操作。该接口为操作产品数据提供了一套方法,使得可以在Elasticsearch中进行产品数据的增删改查。在application.yml中编写配置项目的启动信息。创建springboot项目上导入依赖。该实体类用于es中对应的文档属性。
2024-05-10 16:45:35
655
3
原创 Java整合Elasticsearch相关查询操作
在测试方法执行之前初始化一个EsClient的实例,并将其赋值给client变量。使用@Before注解标识该方法,确保它在所有@Test注解的方法执行之前运行。通过调用EsClient类的getClient()方法获取EsClient实例,为后续的测试提供必要的客户端对象。执行后可以进入kibana查看添加的文档,可以看到我们刚添加的书本信息数据。执行后可以进入kibana查看修改的文档,可以看到我们刚修改的书本信息数据。可以看到文档的内容已经被修改成功。执行后可看到数据已经被删除。
2024-05-09 15:47:52
606
原创 【超详细】Docker部署Elasticsearch、Kibana及其分词器的使用
Elasticsearch是一个开源的分布式搜索和分析引擎,它被设计用于快速、实时地搜索大量数据。它构建在Apache Lucene搜索引擎库之上,并提供了简单易用的RESTful API接口。Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。分布式架构。
2024-05-08 14:03:20
1182
1
原创 docker安装nginx部署前端项目
Nginx挂载的优点是可以方便地进行网站配置和管理。通过对不同目录进行挂载,可以针对不同的网站进行定制化的配置。同时,Nginx挂载也可以提高服务器的安全性,减少攻击的风险,因为攻击者无法直接访问服务器的根目录。 Nginx挂载是指将某个文件夹或目录作为Nginx服务器的根目录进行访问,用于存放默认页面、日志、配置文件.打包成功后复制文件到你挂载的/home/nginx/html的文件夹中。然后进入/home/nginx/conf配置下 Nginx 配置。将容器内的文件复制到宿主机。
2024-04-29 09:12:42
1379
1
原创 克隆下来的项目删除原有git信息,上传到自己的git仓库
如果仓库干净,就不用进行这步,如果存在其他文件(md文件等),需要执行rebase,命令:git pull --rebase origin master。之后再使用 git remote add origin https://xxxx.git 进行添加。如果有远程信息 使用 git remote rm origin 删除,删除后再次查看则无信息。此时使用git remote -v 查看远程信息 可以看到刚才添加的。(2)添加本地文件,使用 git add . 进行添加。这时候去看自己的远程仓库上传成功。
2023-10-31 10:27:49
695
1
原创 Java实现微信模板消息推送----微信消息订阅模版
appid:微信小程序的唯一标识符,用于区分不同的小程序。secret:用于对小程序进行身份验证和安全保护的密钥。token:用于验证消息的有效性,确保消息来自微信服务器。aesKey:消息加解密密钥,用于对消息进行加密和解密。msgDataFormat:消息的数据格式,这里指定为JSON格式。相关参数都可在微信公众号里找到。
2023-10-24 15:22:18
627
原创 Docker 安装 Jenkins (保姆级教学——以及推荐插件安装不上问题解决)
本人在安装jenkies时候根据网上资料遇到很多问题,最后终于解决,现在总结下,避免踩坑。
2023-10-11 11:13:54
3213
原创 简单的Apache POI 案例(Excel的文件操作)
ApachePOI是用Java编写的免费开源的跨平台的Java工具,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件maven。
2023-10-10 15:09:51
124
原创 Java 实现邮箱发送验证码验证登录
在进行登录时候,可以在后端对存入在redis的数据获取,并于前端传递的验证码参数比较,成功则登录成功,反之登录失败。该功能还可以用于邮箱的注册等。,开启成功后会获得一个授权码,记录下来(代码中需要使用,这个授权码并不是一定的 )/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。打开Pop3/SMPT服务 ,获取邮箱授权码(需要手机验证),点击账户,下拉找到。
2023-10-10 13:52:32
1212
1
读写分离和分库分表详解
2024-06-13
c语言测试项目:按键可调计时器,计时范围0~99,数码管显示,用独立按键操
2021-07-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人