- 博客(23)
- 收藏
- 关注
原创 基于RabbitMQ,Redis,Redisson,RocketMQ四种技术实现订单延时关闭功能及其相关优缺点介绍(以12306为主题)
这样,当有新的订单需要延时关闭时,我们只需要将订单消息发送到订单队列,并设置消息的延时时间。在订单队列中设置死信交换机和死信队列,当订单消息的延时时间到达后,消息会自动转发到死信队列,从而触发关闭订单的操作。这对于微服务涉及中是需要尽可能避免的。延时精度:RabbitMQ 的延时消息特性是基于消息的 TTL(Time-To-Live)来实现的,因此消息的延时时间并不是完全准确的,可能会有一定的误差。接着,监听器执行订单关闭的逻辑,如更新订单状态为关闭状态,释放相关资源等,实现订单的十分钟延时关闭功能。
2024-10-24 11:10:01 1290
原创 RocketMQ的介绍及其使用
订阅就是为消费者服务的,消费者提前订阅,当消息队列中有消息产出时,自动去获取消息进行消费。生活中有很多这种例子,比如购买腾讯、优酷等视频会员时就会有订阅模式,当你的会员到期时,会自动帮你完成续费。
2024-10-21 11:45:09 981
原创 Java缓存技术(java内置缓存,redis,Ehcache,Caffeine的基本使用方法及其介绍)
此外,报告还介绍了几个广受欢迎的Java缓存框架,如Redis(高性能分布式内存缓存)、Ehcache(开源Java缓存框架,支持分布式缓存)以及Caffeine(高性能Java内存缓存库,专注于快速响应和高效内存利用)。简而言之,Java中的缓存技术是一种高效的数据处理策略,它利用内存的高速访问特性,为应用程序提供了快速的数据检索服务,从而提高了系统的响应速度和用户体验。在Java中,缓存的实现方式多样,包括利用本地数据结构实现的本地缓存、借助Java标准库提供的缓存功能。
2024-10-21 11:22:09 1098
原创 Redis的持久化介绍及其Linux配置介绍
Redis的数据都是存储在内存中,为了数据的永久保存,需要把数据同步到硬盘上,这个过程就叫做持久化. Redis的持久化存在有两种方式: rdb方式,aof方式,这两种方式可以单独使用,也可以综合使用.Redis支持两种方式的持久化,一种是RDB方式(默认),一种是AOF方式。可以单独使用其中一种或将二者结合使用。
2024-08-25 20:48:35 849
原创 SpringBoot整合Redis
Spring封装了RedisTemplate/StringRedisTemplate对象来进行对Redis的各种操作,它支持所有的Redis原生的api.RedisTemplate/StringRedisTemplate位于Spring-data-redis包下.但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。RedisTemplate不能取StringRedisTemplate存入的数据。
2024-07-28 22:32:41 531
原创 Vue3基于vite脚手架---如何解决跨域问题(附带axios的进一步封装)
【代码】Vue3基于vite脚手架---如何解决跨域问题(附带axios的进一步封装)
2024-07-21 22:29:47 1468
原创 Vue组件化编程
数组用法中我们只能说明传入的attribute的名称,并不能对其进行任何形式的限制,接下来我们来看一下对象的写法是如何让我们的props变得更加完善的。在开发中很常见的就是父子组件之间通信,比如父组件有一些数据,需要子组件来进行展示:这个时候我们可以通过props来完成组件之间的通信;比如App可能使用了多个相同的子组件,每个地方的子组件展示的内容不同,那么我们就需要使用者传递给子组件一些数据,让其进行展示;另外,每次父组件更新后,所有的子组件中的 props 都会被更新到最新值,这意味着你。
2024-07-15 20:06:34 732
原创 Spring的介绍与使用
1.1导入Spring依赖: 最小依赖: Spring-core Spring-beans Spring-context Spring-expression注意:spring每个模块的版本要统一。
2024-05-13 12:47:36 724 1
原创 Mybatis的介绍与使用
基于Mapper的二级缓存, 不同sqlSession执行相同mapper(namespace)中相同sql语句, 并且传递参数参数, 也就是执行相同的sql语句, 那就会先从二级缓存查询数据,如果二级缓存没有数据,才到数据库查询, 如果二级缓存有数据, 返回缓存中的数据。如果二级缓存开启, 首先走的是二级缓存, 如果二级缓存(tcm)有, 直接返回, 如果没有, 走一级缓存(localCache) ,如果一级缓存有, 直接返回, 如果一级缓存没有: 从数据库查询。
2024-04-24 18:23:00 1768
原创 c3p0连接池的使用和*dbutils工具类
c3p0连接池的使用:1.导入c3p0连接池的依赖.jar2.在src目录下新建c3p0-config.xml文件3.创建连接池对象4.获取连接对象5.归还连接对象。
2023-12-18 12:40:19 793 1
原创 JDBC的使用和介绍
什么是JDBC?JDBC(Java DataBase Connectivity)就是Java数据库连接.JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!
2023-12-18 12:32:08 387 1
原创 视图的简单介绍和存储过程的介绍
CREATE PROCEDURE 存储过程名称 ([ IN/OUT/INOUT 参数名 参数类型 ])BEGIN-- SQL语句END;#查看所有系统变量#可以通过LIKE模糊匹配方 式查找变量#查看指定变量的值SELECT @@[SESSION | GLOBAL] 系统变量名;>A. 全局变量(GLOBAL): 全局变量针对于所有的会话。>B. 会话变量(SESSION): 会话变量针对于单个会话,在另外一个会话窗口就不生效了。->定义变量。
2023-12-10 11:00:29 373 1
原创 数据库四种语言的介绍(DDL,DML,DCL,DQL)
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;包含:数据库或者表的定义。
2023-12-10 10:17:28 469 1
原创 反射的介绍
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制> 要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象> 总之,反射就是把java类中的各种成分映射成一个个的Java对象。
2023-12-03 21:26:43 1264 1
原创 *java网络编程 TCP和UDP,进程和线程
客户端 -> 服务器-TCP-UDPURL: 统一资源定位符号Class URL表示统一资源定位符,指向万维网上的“资源”的指针。资源可以像文件或目录一样简单,或者可以是对更复杂的对象的引用,例如对数据库或搜索引擎的查询。组成: 【协议+主机地址+端口号+资源路径+查询参数+锚点】方法:获取此 URL的文件名。获取此 URL的主机名(如适用)。获取此 URL的路径部分。获取此 URL的端口号。获取此 URL的协议名称。获取此 URL的查询部分。
2023-11-23 20:08:32 1470
原创 Collection,Collection,Stream 流式操作,Map, IO 的使用 和介绍
1.序列化不会写出任何不实现java.io.Serializable接口的对象的字段(Serializable 默认的序列化)flatMap(Function<T, Stream> mapper):将流中的每个元素通过给定的映射函数转换为一个新的流,可以通过使用流的文件来实现对象的持久存储。2.处理流:是对一个已存在的流的连接和封装,通过对数据的处理为程序提供更强大、灵活的读写功能。返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
2023-11-23 20:02:52 373
原创 Java.lang.包里面的几个重要包的介绍
JAVA API阶段java.lang.* : java最基础的包,这个包的类不需要导入。java.util.* : java工具包,重点核心包。java.io.* : java数据流的读写包。
2023-11-13 20:14:42 79
原创 11.1--11.6
String replaceAll(String regex, String replacement) 用给定的替换替换与给定的 regular expression匹配的此字符串的每个子字符串。-String substring(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串。-String substring(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串。
2023-11-06 20:35:57 50
原创 第一周的课
JVM在做一些算数运算时, byte[1] short[2] char[2] JVM自动转换为int类型去进行计算。数据类型 数组名称[][] = new 数据类型[二维数组长度][一维数组长度]数据类型 数组名称[][] = new 数据类型[][]{一维数组}例如:int score[][] = new int[4][3];例如:int score[][] = new int[4][];例如:int score[][] = new int[][]{= 如果比较的值类型的数据,比较的就是值。
2023-10-15 19:37:06 50 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人