- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 Token验证处理
载荷可以包含预定义的声明,如"sub"(主题,表示主体的唯一标识)、"exp"(过期时间,表示令牌的有效期)、"iat"(发布时间,表示令牌的发行时间)等,也可以包含自定义的声明。3. 签名(Signature):签名是使用指定的算法(如HMAC、RSA等)对头部和载荷进行签名生成的一串字符串。在这个过程中,客户端通常会提供一个令牌(Token),用于证明其合法性和权限。JWT(JSON Web Token)由三部分组成,它们分别是头部(Header)、载荷(Payload)和签名(Signature)。
2024-08-20 18:52:30
637
原创 docker: error pulling image configuration: download failed after attempts=6: dial tcp 108.160.167.15
在执行docker build构建镜像,拉取镜像时报错 执行这个命名拉取镜像sudo docker run hello-world,报以下错误。实质都是拉取镜像源超时报错。命令添加(二选一即可)
2024-06-26 15:41:45
6836
原创 狂神说Java之 rabbitmq高级分布式事务
rabbitmq会出现死循环,死循环会造成我们服务的重试,若是个集群,那么就会重试每个集群,会把我们服务器冲垮,把我们rabbitmq的磁盘、内存消耗殆尽,让我们程序宕机。但是订单表没有保存数据 ,因为在订单服务出现读以超时的错误,在createOrder()方法上面定义了事务的注解,出现错误的时候,进行了回滚。接下来去运单模块的controller层的lock()接口中,让他睡眠3秒,来达到订单模块一个错误问题。创建一个order的service服务,调用saveOrder()方法。
2024-06-24 21:16:18
626
原创 Redis缓存穿透和雪崩
服务的高可用问题Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一 些问题。其中,要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据 的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。
2024-06-08 19:52:36
950
原创 redis之哨兵模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工 干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原理是。
2024-06-08 19:51:18
957
原创 Redis主从复制
2、从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有 内存用作Redis存储内存,一般来说,单台Redis大使用内存不应该超过20G。Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行 完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依 旧可以直接获取到主机写的信息!主从复制,读写分离!
2024-06-08 19:48:20
708
原创 Redis发布与订阅
Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个 key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应 的消息。通过 PUBLISH 命令向订阅者发送消息,redis-server 会使用给定的频道作为键,在它所维护的 channel 字典中查找记录了订阅这个频道的所有客户端的链表,遍历这个链表,将消息发布给所有订阅者。第一个:消息发送者, 第二个:频道 第三个:消息订阅者!
2024-06-08 17:35:45
247
原创 Redis持久化
在主从复制中,rdb就是备用了!从机上面在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快 照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程 都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB方式要比AOF方式更加的高效。
2024-06-07 19:05:20
600
原创 Redis.conf 配置文件解读
持久化, 在规定的时间内,执行了多少次操作,则会持久化到文件 .rdb. aof。redis 是内存数据库,如果没有持久化,那么数据断电及失。可以在这里设置redis的密码,默认是没有密码。可以使用 include 组合多个配置问题。容量单位不区分大小写,G和GB没有区别。配置文件 unit单位 对大小写不敏感。
2024-02-07 18:10:56
818
原创 redis持久化机制
如果这个选项被设置为no,在RDB持久化失败的时候,Redis将继续接收写入操作,并尝试在下一次RDB持久化操作时修复RDB文件。当开启RDB持久化功能时,Redis会周期性地将内存中的数据以快照的形式写入磁盘。当Redis同时开启了RDB和AOF持久化时,如果在恢复数据时两种持久化方式都存在,Redis会优先选择AOF持久化来进行数据恢复。在实际情况下,即使开启了两种持久化方式,通常也建议以AOF持久化作为主要的持久化方式,并且可以在必要时创建RDB快照作为备份。在这种情况下,建议使用AOF持久化方式。
2023-12-21 19:14:14
1166
原创 java中使用@Value获取配置文件中的值,并变为静态的属性
是通过 Spring IoC 容器来进行属性赋值的,而静态变量与类本身直接关联,不属于具体实例。注解被用于非静态方法上。在这些方法中,静态变量会被赋予配置文件中的值。注解通常用于将配置文件中的值注入到非静态的实例变量中。如果想要将配置文件的值注入到静态变量中。在 Spring 中,
2023-10-31 20:07:50
1511
原创 Java中List转字符串的方法
首先创建一个包含三个String字符串的List,然后使用Stream API中的stream()方法将其转换成流,接着使用collect(Collectors.joining(","))将其中的String元素连接起来(逗号作为分隔符),最后使用System.out.println()方法输出结果。首先导入Guava库,然后创建一个包含三个String字符串的List,使用Joiner.on(",")指定连接符为逗号,并使用join(list)方法将其中的String元素连接起来。
2023-09-21 13:29:52
5352
原创 java用easyexcel按模版导出
要跟实体类的属性名保持一致,否则在导入的时候就会出现null之类的问题。接下来就直接在controller层中进行导出。这里只展示部分字段。
2023-09-19 11:19:15
635
原创 在controller层应注解校验对象
在controller代码如下,同时在controller层上面加上。创建一个入参对象,要在不为空的属性上面,加上@NotNull注解。这时,在controller层里面代码如下,注意的是,这里用的。在方法参数里面加上@Validated注解,就可以校验了。注解,这个注解可以嵌套检查入参对象不为空的属性。这里面的前提是,你的代码中做过全局的异常捕获。二、校验的对象为list的时候。一、校验的对象为单个实体时。首先创建一个校验的对象。
2023-09-14 10:54:01
406
原创 ScheduledExecutorService执行定时任务
/ scheduleWithFixedDelay:按照相对固定频率来执行,相对是相对任务的。即无论某个任务执行多长时间,等执行完了,再延迟指定的时间执行下一次任务,它受上一次计划执行时间的影响。// scheduleAtFixedRate:固定的频率来执行某项计划,它不受计划执行时间的影响。scheduleAtFixedRate()方法介绍。首先自定义Scheduler类。// 将任务放入定时服务中。
2023-09-11 14:26:54
432
原创 Feign传输MultipartFile 报错 Error converting request body
做文件上传的时候抛出Error converting request body错误。注意 此注解的value值必须要加上 否则项目启动会提示需要加上value。前加上@RequestPart(value = “file”)此注解。上图为feign接口地方修改,并且在。在feign接口的地方加上。
2023-09-06 10:15:23
980
原创 文件压缩成压缩包,解压压缩包
在解压工具类使用时,isZipFile()方法是判断是否是压缩包。压缩文件操作的工具类,压缩文件调用zip方法。做测试的实例:首先是压缩文件的测试。unzipFile()解压的方法。
2023-09-04 17:26:39
263
原创 java实现数字金额转换成汉字大写金额
我们经常在做项目的财务报表,需要打印发票等情况时需要用到小写的财务金额要转换成汉字的大写金额,下面就是实现该功能的代码。
2023-08-22 10:59:44
2057
1
原创 idea的debugger模式调试下怎么查看对象的值
按钮,就会出现如下所示,这时候展示的就是这个对象里面的所有值。2、启动之后,可以通过测试工具调用需要测试的接口。5、 出现这个界面的时候可以点击这里。1、debugger模式启动项目。4、然后点击右键会出现这个界面。6、之后就会出现这个界面。
2023-07-28 10:58:43
3417
原创 IDEA类和方法注释模板设置
IDEA自带的注释模板不是太好用,我本人在网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家。本人亲测可用,自己配置过。
2023-07-18 09:05:11
5512
原创 通过applicationContext.getBeansOfType 获取一个接口下所有实现类、执行方法或者获取具体实现类对象和实现类的方法
开始使用applicationContext.getBeansOfType方法,该类要去实现spring框架的ApplicationContextAware接口,获取ApplicationContext上下文,可以进行对业务模块的书写,调用对应的接口实现类进行业务逻辑实现。再创建一个枚举类,用来获取IStudent接口对应value的实现类。之后创建一个接口,里面写上方法,并写一个枚举类的方法。下面就开始使用,首先创建一个实体类,用来做类型。创建四个实现类来实现这个接口。
2023-07-14 13:22:08
2339
原创 spring的InitializingBean的 afterPropertiesSet 方法
需要注意的是,虽然 InitializingBean 可以用于一些简单的初始化操作,但通常推荐使用更灵活的方式来完成 bean 的初始化,比如使用 @PostConstruct 注解或自定义的初始化方法。这样可以更好地控制 bean 的初始化过程,并提高代码的可读性和可维护性。举个例子,假设有一个名为 MyBean 的 bean 类,它实现了 InitializingBean 接口,可以在 afterPropertiesSet() 方法中添加一些初始化逻辑,比如初始化一些默认值或者建立与其他资源的连接。
2023-07-14 10:41:47
1400
原创 本地搭建zookeeper框架
意思就是在conf这个目录下没有找到zoo.cfg这个文件,找到conf这个目录,进去之后将zoo_sample.cfg这个文件改为zoo.cfg就可以了。先进入到zookeeper的bin目录,然后点击上方的文件地址,输入。下载之后进行解压,解压之后就可以启动本地的zookeeper了。再点击这个就可以下载3.8.1这个版本的zookeeper。,就启动本地zookeeper了。重新进入bin目录里面,在按照上面。执行就可以正常启动了。然后找到版本进行点击。
2023-07-07 16:33:18
164
原创 查看项目依赖文件树
查看依赖文件树:首先下找到本地项目的存储位置,然后cmd,输入之后,在输入mvn dependency:tree >tree.txt 回车,之后就会在项目下面生成tree.txt文件
2023-02-20 08:41:13
205
原创 springboot自定义线程池
SpringBoot 自定义线程池_适恒-优快云博客_springboot自定义线程池1.我们都知道spring只是为我们简单的处理线程池,每次用到线程总会new 一个新的线程,效率不高,所以我们需要自定义一个线程池。2.自定义线程池有两种方法,第一种自定义线程池然后使用自己的自定义的,第二种重写spring默认的线程池,然后使用自己重写过的线程池一:自定义线程池1.1 修改application.yml#线程池配置参数task: pool: corePoolSi.....
2022-08-02 17:46:56
3927
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人