- 博客(16)
- 收藏
- 关注
原创 BUG记录系列之synchronized锁
场景很简单,模块里边很多有一个方法加了synchronized,后来新加的方法复制黏贴的都加上了synchronized。某天,应该是某个程序锁了,导致其他所有方法都进不去。呈现的效果就是很多方法都是失效状态。排查的时候看着代码没问题,本地也正常,测试环境就是方法不行,搞了很久,最后代码审查的时候才发现是synchronized的原因。最后,重启服务就好了,代码也做了修复,方法去掉了synchronized。synchronized要慎用,写代码要认真。记一次简单但是确排查了很久的错误。
2024-10-23 00:03:02
194
原创 BUG记录系列之数字类型字符串自增问题
数字类型字符串自增,F99999+1变成F100000后,数据库orderByDesc查询最大的值为F99999而不是F100000,F99999继续自增+1重复F100000,导致BUG.有时候业务场景需要固定长度的id,可以位数设的足够大(比如F+6位数字)然后加判断到位数最大值(比如F99999)后停止新增。字符串比较是按照从左往右逐个比较的,所以F99999会比F100000大。
2024-10-22 00:22:10
234
原创 浓缩就是精华,用300行最简洁的代码提炼 Spring 的基本设计思想1.0版本
最近在看spring源码,纸上得来终觉浅,觉知此事要躬行,先根据基本思路写一个mini版本,后续有时间再一点点丰富,慢慢深入理解,markdown一下。为了解析方便,我们用 application.properties 来代替 application.xml 文件,具体配置内容如下: 配置 web.xml 文件依赖于 web 容器的项目,都是从读取 web.xml 文件开始的。我们先配置好web.xml中的内容。自定义 Annotation :@DYXService 注解:@D
2024-03-11 19:08:27
476
原创 整合RabbitMQ实现延迟消息
RabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的,它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求。
2024-02-19 17:47:17
1785
1
原创 整合MongoDB实现文档操作
Mongodb是为快速开发互联网Web应用而构建的数据库系统,其数据模型和持久化策略就是为了构建高读/写吞吐量和高自动灾备伸缩性的系统。
2024-02-19 16:15:05
949
1
原创 整合Elasticsearch实现商品搜索
Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,可用于实现全文搜索和实时数据统计。
2024-02-19 14:24:35
2522
1
原创 整合SpringTask实现定时任务
SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用。
2024-02-19 11:18:56
420
1
原创 整合SpringSecurity和JWT实现认证和授权(二)
接上一篇,controller和service层的代码实现及登录授权流程实现了后台用户登录、注册及获取权限的功能
2024-02-19 10:32:33
528
1
原创 整合SpringSecurity和JWT实现认证和授权(一)
SpringSecurity是一个强大的可高度定制的认证和授权框架,对于Spring应用来说它是一套Web安全标准。JWT是JSON WEB TOKEN的缩写,它是基于 RFC 7519 标准定义的一种可以安全传输的的JSON对象,由于使用了数字签名,所以是可信任和安全的。在用户名和密码校验前添加的过滤器,如果请求中有jwt的token且有效,会取出token中的用户名,然后调用SpringSecurity的API进行登录操作。可以在该网站上获得解析结果:https://jwt.io/
2024-02-18 23:59:45
1201
1
原创 整合Redis实现缓存功能
生成验证码时,将自定义的Redis键值加上手机号生成一个Redis的key,以验证码为value存入到Redis中,并设置过期时间为自己配置的时间(这里为120s)。校验验证码时根据手机号码来获取Redis里面存储的验证码,并与传入的验证码进行比对。Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。在application.yml中添加Redis的配置及Redis中自定义key的配置。在根节点下添加Redis自定义key的配置。
2024-02-18 16:01:22
421
1
原创 整合Swagger-UI实现在线API文档
Swagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档。接口地址:http://localhost:8080/swagger-ui.html。MybatisPlusGenerator 设置Swagger属性为true。注意:Swagger对生成API文档的范围有三种不同的选择。添加Swagger-UI的Java配置文件。
2024-02-18 15:40:38
535
1
原创 从0到1搭建网上商城之SpringBoot+MyBatis骨架篇
在application.yml中添加数据源配置和MyBatis的mapper.xml的路径配置。使用IDEA初始化一个SpringBoot项目。在pom.xml中添加相关依赖。
2024-02-17 23:45:45
414
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅