自定义博客皮肤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)
  • 收藏
  • 关注

原创 三种定时任务:

定时器是Java内置的定时任务工具类,可以在指定的时间间隔内执行任务。Timer中的任务是在Timer的任务线程中按照一定的时间间隔执行的,而则是实际定时执行的任务。Timer和TimerTask都是线程安全的,可以被多个线程同时访问。常见的使用情况是:通过定时器进行重复执行周期性任务的情况,可以按照一定的延迟时间再次执行任务。

2024-04-13 12:32:27 222

原创 Redis限流插件

同时对 redis.log 授权。

2024-04-13 12:29:57 396

原创 Redis哨兵模式

先创建 redis_sentinel文件夹在 redis_sentinel文件夹 创建 26379 26380 26381在以上conf文件上传。

2024-04-13 12:25:19 367

原创 Redis搭建主从

【代码】Redis搭建主从。

2024-04-13 12:19:19 302

原创 布隆过滤器的使用

相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数(O(k))。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。k和m相同,使用同一组散列函数的两个布隆过滤器的交并运算可以使用位操作进行。k和m相同,使用同一组散列函数的两个布隆过滤器的交并运算可以使用位操作进行。进入解压好的文件目录,输入。

2024-04-13 11:36:54 299

原创 mysql搭建主从

重复创建 mysql_3310 的步骤。重置slave: replaylog。在修改容器的配置文件之后;不然会导致对配置文件的修改。重新配置 change to。

2024-04-13 11:27:05 987

原创 Docker 安装rabbitMQ

将rabbitmq_delayed_message_exchange-3.9.0.ez拷贝到rabbitmq容器中的 plugins下。进入rabbitmq容器;启动rabbitmq_delayed_message_exchange-3.9.0.ez插件\。将rabbitmq_delayed_message_exchange-3.9.0.ez 插件上传进去。**注意:**192.168.62.137 与 15672 之间的。进入容器中的 /etc/rabbitmq/conf.d。

2024-04-13 11:08:27 370

原创 虚拟机安装及拉取阿里云镜像

接下来就可以使用 **docker search ** 后 接镜像名;查询镜像(以mysql为例)从网络获取docker镜像太慢,设置阿里云的镜像库。如果在镜像名后没有加版本号;创建自定义网络(network)安装finalShell。检查docker 版本号。安装yum-utils。先查询当前已经有的网络。安装最新docker。

2024-04-13 10:41:23 308

原创 你真的懂@Bean注解吗?

注解告诉 Spring 容器,它所标注的方法将用于实例化、配置和初始化一个对象,并将该对象注册为 Spring 应用上下文中的一个 Bean。注解是 Spring 框架中非常重要的一个注解,它允许开发人员灵活地定义和管理 Bean 对象,提高了 Spring 应用的灵活性和可维护性。注解通常用于配置类中的方法,用于指示该方法将返回一个由 Spring 管理的 Bean 对象。注解,可以将该方法返回的对象注册为 Spring 容器中的一个 Bean。接口的实现类的实例,并将其注册为一个 Bean。

2024-04-11 18:26:39 375

原创 怎么创建线程池?

线程池(Thread Pool)是一种管理和重用线程的机制,用于执行多个并发任务。在 Java 中,线程池是通过包提供的接口和类来实现的。

2024-04-08 15:27:12 660

原创 怎么使用jwt,token以及redis进行续期?

如果续期,则生成一个新的 JWT,更新 Redis 中的相关信息,并将新的 JWT 返回给客户端。方法接受一个 JWT,并返回一个布尔值,指示该 JWT 是否有效。如果 JWT 有效,则返回。如果 JWT 即将过期,服务器可以发出一个新的 JWT,并更新 Redis 中的对应信息。客户端收到新的 JWT 后,将其替换掉旧的 JWT,并更新本地存储中的 Token。方法用新的 JWT 替换旧的 JWT,并更新本地存储中的 Token。服务器收到请求后,验证 JWT 的签名和有效期等信息,以确认其有效性。

2024-04-07 11:55:52 536

原创 MySQL 中,常见的 JOIN 查询语句

RIGHT JOIN 返回右表中的所有行,以及左表中满足连接条件的行。**如果左表中没有匹配的行,则会在结果集中显示 NULL 值。,特别是当两个表的行数很大时。因此,在使用CROSS JOIN时需要谨慎,确保它符合实际需求并且不会导致性能问题。LEFT JOIN 返回左表中的所有行,以及右表中满足连接条件的行。INNER JOIN 返回两个表中符合连接条件的行。虽然CROSS JOIN在某些情况下非常有用,但它也。FULL JOIN 返回两个表中所有的行,

2024-04-02 17:24:00 431 1

原创 几种储存数据的方式

数组是一种最基本的数据结构,用于存储固定大小的相同类型元素的连续内存空间。数组具有固定长度,一旦创建后长度不能更改。在声明数组后,需要使用new关键字来分配数组的内存空间,并指定数组的大小。:集合是 Java 中用于存储和操作一组对象的容器。Java 提供了一系列集合类,包括 List、Set、Queue 和 Map 等。常见的集合类有 ArrayList、LinkedList、HashSet、TreeSet、HashMap 等。在声明集合后,可以使用add方法向集合中添加元素,使用remove。

2024-04-01 21:23:19 784

原创 在Java项目中,日志的作用

【代码】在Java项目中,日志的作用。

2024-04-01 15:45:44 528

原创 rabbitMQ实战应用

在这个示例中,我们创建了两个消费者,并且每个消费者会从队列中接收请求消息,并模拟处理请求的过程。:在Java项目中,可以将一些耗时的任务(如文件处理、邮件发送等)放入消息队列中,由后台的消费者异步地处理这些任务,提高系统的吞吐量和响应速度。,将日志消息发送到RabbitMQ队列,然后有一个或多个日志消费者从队列中接收日志消息并进行相应的分析和处理。数据消费者可以从这个队列中接收实时数据并进行相应的处理。创建一个简单的生产者和消费者,它们通过RabbitMQ进行消息的发送和接收,实现了微服务间的通信。

2024-04-01 11:10:05 944

原创 如何保证MySQL与redis中数据保持一致?

3:定义一个表示更新的类,比如**UserUpdateEvent **

2024-03-31 22:05:38 399

原创 用aop实现登陆日志、和操作日志持久化

通过 AOP,我们可以将日志记录这类 **横切关注点(cross-cutting concerns)**从业务逻辑中分离出来,实现更好的代码结构和可维护性。下面是一个简单的示例代码,演示如何使用 AOP 在登录和操作时记录日志并将日志持久化到数据库中。编写AOP切面,定义切点和通知,用于捕获登录和操作的相关行为,并在切点处插入通知以实现日志记录。在Spring配置文件中配置AOP,指定切面和通知的织入方式。编写持久化层的代码,负责将日志数据存储到数据库中。在 Java 中,可以使用。在以上代码中,使用了。

2024-03-29 21:38:14 846

原创 使用公平锁并设置默认的Redis等待时间来保证线程的执行顺序

公平锁的优点在于能够确保资源的公平分配,避免饥饿现象的发生,但也可能会降低性能,因为每次都要考虑所有等待线程的顺序。非公平锁则更加灵活,可能会出现新请求的线程直接获取到锁资源的情况,从而提高了程序的整体吞吐量。的构造函数可以指定创建公平锁还是非公平锁,默认情况下是非公平锁。具体来说,当使用公平锁时,线程会按照其请求锁的顺序来获取锁,而不会插队其他线程直接获取锁资源。在公平锁中,当有多个线程同时请求获取锁资源时,锁资源会按照线程请求的先后顺序依次分配,确保先到先得的原则。在上面的示例中,通过使用。

2024-03-29 20:51:27 473

原创 用aop实现登陆日志、和操作日志持久化

在 Java 中,可以使用 **AOP(Aspect-Oriented Programming)**来实现登录日志和操作日志的持久化功能。通过 AOP,我们可以将日志记录这类 **横切关注点(cross-cutting concerns)**从业务逻辑中分离出来,实现更好的代码结构和可维护性。通过 AOP 的方式,我们实现了登录日志和操作日志的持久化功能,使得这部分代码与业务逻辑相分离,提高了代码的可维护性和扩展性。方法和其他操作方法,并在切面中记录日志,并通过。在以上示例中,我们定义了一个。

2024-03-29 20:45:11 937

原创 用Redis+token实现接口幂等性

要使用 Redis 和 Token 实现接口幂等性,可以通过在每次请求时生成一个唯一的 Token,并将 Token 存储在 Redis 中,并设置相应的过期时间。在每次请求到达时,先检查 Redis 中是否存在该 Token,若存在则表示该请求已经处理过,否则处理该请求并将 Token 存入 Redis。换句话说,对于相同的输入参数,在相同的条件下,无论调用多少次,接口的副作用(如数据库修改、资源状态改变等)只会发生一次,即使接口被多次调用也不会产生额外的影响。接口幂等性是指无论对。

2024-03-29 11:29:18 1524 1

原创 设计模式之单例模式

饿汉模式保证了在多线程环境下也能保持单例的唯一性,因为在类加载时就创建了单例实例。但需要注意的是,由于单例实例在类加载时就被创建,可能会导致资源的浪费,特别是在单例实例较大或者初始化耗时较长的情况下。饿汉模式是指在类加载时就创建对象实例的方式,无论后续是否会被使用到。需要注意的是,懒汉模式在多线程环境下可能存在线程安全性问题,可能会导致创建多个实例。在单例模式中,“懒汉”、"饿汉"和"枚举"是三种常见的实现方式,它们分别指代不同的单例对象创建策略。利用枚举类型的特性来实现单例,是一种简洁高效的实现方式。

2024-03-28 21:34:50 1003

原创 cookie,session,jwt,token

当用户访问应用程序时,服务器会为每个用户创建一个唯一的会话 ID,并将该会话 ID 存储在 Cookie 中,用于标识用户会话。Cookie 可以设置过期时间,可以是会话级别的临时 Cookie,也可以是长期保存在客户端的持久性 Cookie。服务器可以使用会话来存储用户的状态信息,以便在用户与服务器之间的多次请求之间保持用户状态。Cookie 是由服务器发送给客户端的小型数据片段,存储在客户端的浏览器中。用于在客户端保持用户的会话状态,可以包含诸如用户标识、会话 ID 等信息。

2024-03-28 12:12:03 765

原创 怎么使用Redis模拟Session

这只是一个简单的演示,实际生产环境中可能还需要处理会话过期、会话数据的序列化和反序列化等问题。: 可以为每个会话设置过期时间,确保会话数据不会永久存储在 Redis 中,可以使用 Redis 的 TTL(time to live)机制来实现。: 当用户登录或发起会话时,生成唯一的会话 ID,并将会话 ID 存储在用户的浏览器中,通常是通过设置 Cookie 或传递会话 ID 的方式。: 将用户的会话数据存储在 Redis 中,通常以键值对的形式存储,其中键为会话 ID,值为会话数据。

2024-03-27 21:47:17 565

原创 MySQL常见索引及其创建

字段是一个自增主键,同时也是表的主键索引。通过以上 SQL 语句,可以在已存在的表。在上面的示例中,通过将。

2024-03-27 21:42:22 421

原创 sso单点登录

SSO(Single Sign-On)单点登录是一种身份验证服务,允许用户使用一组凭据(如用户名和密码)登录多个相关但独立的软件系统或应用,而无需为每个应用都输入凭据。通过SSO单点登录,用户只需登录一次,即可在整个系统中访问多个应用,提供了更便捷的用户体验。通过这样的流程,Alice只需登录一次,就可以访问多个应用,实现了SSO单点登录的便利性和高效性。SSO单点登录原理是什么?

2024-03-27 21:36:40 193

原创 rabbitMQ的学习

RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。

2024-02-18 21:12:36 984

原创 redis的学习

Redis是一个开源的内存数据结构存储系统,也被称为键值存储系统。它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令,可以对这些数据结构进行快速的读写操作。Redis具有高性能、高可用性和可扩展性的特点,常用于缓存、消息队列、实时统计等场景。特点:Redis 数据存储在内存中,因此具有非常高的读写性能。Redis 支持多种持久化方式,可以将数据保存到磁盘中,以防止数据丢失。

2024-02-18 19:05:34 921

原创 JVM虚拟机

JVM

2024-02-18 18:05:48 778

原创 mysql数据库

是一种的(RDBMS),它主要使用(结构化查询语言)作为与数据库交互的标准查询语言。

2024-02-18 16:05:34 968

原创 SpringBoot+SpringCloud架构

springboot与springcloud架构;分布式,集群

2024-02-17 22:33:17 1157

原创 日志和监控

是 Java 标准库提供的日志框架,使用简单,无需额外依赖。

2024-02-17 21:04:16 344

原创 线程与进程

java进程,线程,主要讲多线程

2024-02-17 20:49:40 871

原创 Stream(流)

Stream(流)的使用和简介

2024-02-16 21:41:58 838

原创 java 代理方式

动态代理是在运行时生成代理对象,无需手动编写代理类。动态代理只需要编写一个InvocationHandler接口的实现类,通过反射机制动态生成代理对象,可以代理任意实现了接口的类。CGLIB代理通过继承的方式实现代理,覆盖被代理类的方法,并可以在方法前后添加额外的逻辑。静态代理是通过手动编写代理类来实现的,代理类和被代理类实现相同的接口,并在代理类中调用被代理类的方法,并可以在方法前后添加一些额外的逻辑。静态代理的缺点是需要为每个被代理类编写一个代理类,代码量较大。// 使用CGLIB代理。

2023-11-28 22:35:31 39

原创 异常处理的几种方式:

什么是?在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。

2023-11-24 22:15:50 55

原创 JMeter的使用

JMeter的使用第一步:第二步:第三步:第四步:第五步:第六步:

2023-10-25 22:26:51 27

原创 搭建nexus私服部署项目

搭建nexus私服部署项目1:启动nexus服务器2:进入nexus,添加releases和snapshots库添加releases仓库添加snapshot仓库配置maven-public配置客户端settings.xml防止每次创建项目maven重置异常?

2023-10-23 22:46:24 26

空空如也

空空如也

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

TA关注的人

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