Java
文章平均质量分 75
Java
林中静月下仙
我们注定会变成另一个人、
展开
-
聊聊大厂都怎么防止重复下单?
系统异常时 666 请求到了,单号更成 666,接着 888 请求到了,单号又更新成 888,但是 666 更新成功的响应丢了,调用方没收到成功响应,自动重试,再次发起 666 请求,单号又被更新成 666了,这数据显然就错了!更新订单服务,通过一个版本号机制,每次更新数据前校验版本号,更新数据同时自增版本号,这样的方式,来解决 ABA 问题,确保更新订单服务的幂等性。创建订单服务,可通过预生成订单号,然后利用 DB 的订单号唯一约束,避免重复写入订单,实现创建订单服务的幂等性。最简单的:DB 事务。原创 2023-08-30 08:15:13 · 250 阅读 · 0 评论 -
SpringBoot 项目使用 Redis 对用户 IP 进行接口限流
在下新建limit.lua-- 获取redis键-- 获取第一个参数(次数)-- 获取第二个参数(时间)-- 获取当前流量-- 如果current值存在,且值大于规定的次数,则拒绝放行(直接返回当前流量)end-- 如果值小于规定次数,或值不存在,则允许放行,当前流量数+1 (值不存在情况下,可以自增变为1)-- 如果是第一次进来,那么开始设置键的过期时间。end-- 返回当前流量@Slf4j@Aspect@Component@Autowired@Autowired。原创 2023-08-07 13:35:29 · 1673 阅读 · 0 评论 -
SpringBoot + Docker 实现一次构建到处运行~
Dockerfile 的本质就是将一系列修改、安装、构建、操作的命令整合到一起,去构建一个个性化的镜像,以达到。实现一次构建到处运行。原创 2023-08-07 13:31:02 · 935 阅读 · 0 评论 -
Winsw实现springboot的jar包的windows服务,实现开机自启动
在windows上运行Springboot打包jar,如何后台运行及注册成Windows服务?原创 2023-05-04 08:33:55 · 1412 阅读 · 0 评论 -
SpringBoot 多数据源及事务解决方案
4.2.1 定义管理接口通过继承即可实现。为了方便对数据源进行操作,我们定义一个接口,为业务提供操作数据源的统一接口。该接口主要是对数据表中定义的数据源,提供基础管理功能。4.2.2 自定义数据源的实现如下图所示:根据前面的分析,是在容器启动的时候,执行注入数据源对象,完成之后无法对数据源进行修改。则实现接口,可以将数据表中的数据源加载到dataSources。4.2.3 切面处理这一块的处理跟配置文件数据源方案处理方式相同,都是通过AOP技术切换lookup key。原创 2023-04-30 09:35:43 · 1666 阅读 · 1 评论 -
你的登录接口真的安全吗?
中间人攻击(man-in-the-middle attack, abbreviated to MITM),简单一点来说就是,A和B在通讯过程中,攻击者通过嗅探、拦截等方式获取或修改A和B的通讯内容。举个栗子:小白给小黄发快递,途中要经过快递点A,小黑就躲在快递点A,或者干脆自己开一个快递点B来冒充快递点A。然后偷偷的拆了小白给小黄的快递,看看里面有啥东西。甚至可以把小白的快递给留下来,自己再打包一个一毛一样的箱子发给小黄。原创 2023-04-28 10:55:23 · 1279 阅读 · 0 评论 -
优雅的接口防刷处理方案
本文为描述通过Interceptor以及Redis实现接口访问防刷Demo这里会通过逐步找问题,逐步去完善的形式展示说实话,挺有意思的,一开始自己想【接口防刷】的时候,感觉也就是转化成统计下访问次数的问题摆了。后面到网上看别人的写法,又再自己给自己找点问题出来,后面会衍生出来一推东西出来,诸如自定义注解+反射这种实现方式。原创 2023-04-28 10:52:45 · 1161 阅读 · 0 评论 -
减少 try catch ,可以这样干
Slf4j@Component/*** 生产环境*/@Autowired/*** 当前环境*//*** 获取国际化消息* @param e 异常* @return*//*** 业务异常* @param e 异常* @return 异常结果*//*** 自定义异常* @param e 异常* @return 异常结果*//*** Controller上一层相关异常* @param e 异常。原创 2023-04-28 10:45:11 · 1082 阅读 · 0 评论 -
为什么那么多人转行编程都首选Java
计算机专业通常从C语言开始学,非计算机专业想要转行编程首选Java的主要原因:市场需求量大。Java可以用于开发各种应用程序,包括企业级Web应用程序、移动应用程序、桌面应用程序、游戏、嵌入式系统、云基础设施等等。在游戏领域也有两大经典游戏是我们熟知的,【我的世界】&【英雄联盟】原创 2023-03-09 16:14:50 · 453 阅读 · 0 评论 -
Mybatis Plus 批量插入新增应用
MyBatisPlus批量插入解决方案原创 2022-11-18 10:33:41 · 982 阅读 · 0 评论 -
超强微服务架构,通俗易懂~~~
1、一些列的独立的服务共同组成系统2、单独部署,跑在自己的进程中3、每个服务为独立的业务开发4、分布式管理5、非常强调隔离性。原创 2022-10-10 14:18:25 · 266 阅读 · 0 评论 -
Mac安装RabbitMQ
说明:rabbitmq有一个默认账号和密码是:guest 默认情况只能在localhost本机下访问,所以需要添加一个远程登录的用户。我这边启动的时候报了异常错误,大概就是缺少插件或是依赖不能自动拉取下来,解决方法就是开启国外VPN访问就好了。RabbitMQWeb管理界面及授权操作,默认情况下,rabbitmq是安装的,如果没有安装就执行。原创 2022-09-21 20:58:04 · 2473 阅读 · 0 评论 -
常用开发库 - Spring常用工具类
Spring作为常用的开发框架,在Spring框架应用中,排在ApacheCommon,Guava, Huool等通用库后,第二优先级可以考虑使用Spring-core-xxx.jar中的util包。(提醒读者:对于工具类,要站在高一点的角度知道有哪些,而不是只看到代码... 用的时候具体看下即可)...原创 2022-07-12 21:25:38 · 526 阅读 · 0 评论 -
常用开发库 - Hutool包
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。Hutool = Hu原创 2022-07-11 12:18:50 · 2493 阅读 · 0 评论 -
百万级访问量—高并发问题的解决历程
百万级访问量—高并发问题的解决历程原创 2022-06-07 14:22:11 · 981 阅读 · 0 评论 -
若依ruoyi框架整合magic-api快速开发
若依ruoyi框架整合magic-api快速开发2.简单配置application.ymlmagic-api: web: /magic/web resource: type: database # 配置接口存储方式,这里选择存在数据库中 table-name: magic_api_file # 数据库中的表名 prefix: /magic-api # 前缀# location: classpath:magic-api# 其它配置请参.原创 2021-07-14 16:38:35 · 2855 阅读 · 2 评论 -
若依ruoyi框架整合magic-api增删改查Demo
1.目录结构2.创建分页Beanpackage com.ruoyi.web.controller.common;import org.ssssssss.magicapi.model.JsonCode;/** * @ClassName JsonBackBean * @Author Lin * @Date 2021/7/16 10:55 AM * @Version V1.0 * @Description **/public class PageJsonBackBean&l原创 2021-07-16 16:53:36 · 4475 阅读 · 10 评论 -
运行JAR包 没有主清单属性解决办法
把下面的代码复制粘贴到maven的pom文件中 更新一下即可 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration>原创 2021-10-14 13:59:54 · 483 阅读 · 0 评论 -
时间间隔星期、月份、季度 查询java工具类
package com.ecenter.nyxmsb.modular.money.utils;import cn.hutool.core.date.DateTime;import cn.hutool.core.date.DateUtil;import com.ecenter.nyxmsb.core.util.ShiroUtils;import com.ecenter.nyxmsb.modular.system.entity.SysUser;import org.apache.shiro.Sec.原创 2021-03-10 18:58:20 · 830 阅读 · 1 评论 -
Spring中 如果该Service有多个实现类,它怎么知道该注入哪个ServiceImpl类?
方法一:Controller中注入service的时候使用@Autowired自动注入,@Qualifier("beanId") 来指定注入哪一个。方法二:Controller中注入service的时候使用@Resource(type = 类名.class)来指定注入哪一个。方法三: 1.每个service的impl都可以指定名称(使用@Service(“名称”)) 2.Controller中注入service的时候使用名称来指定注入哪一个(使用 @Resource(name="名称")原创 2020-09-17 20:40:29 · 2471 阅读 · 0 评论 -
Java生产者和消费者模型的5种实现方式
生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。生产者消费者.png现在用四种方式来实现生产者消费者模型wait()和notify()方法的实现这也是最简单最基础的实现,缓冲区满和为空时都调用wait()方法等待,当生产者生产了一个产品或者消费者消费了一个产品之后会唤醒所有线程。/** * 生产者和消费者,wai..原创 2020-09-15 20:22:11 · 465 阅读 · 0 评论 -
线程安全之可见性
1、并发中变量的可见性问题在讲解线程安全的可见性问题前,先来解决几个简单的问题:问题1:变量分为哪几类?全局变量有:属性(静态的、非静态的)局部变量有:本地变量参数问题2:如何在多线程下共享数据?当然在问题1的答案下,我们知道多线程的数据共享可以使用全局变量(静态变量、共享对象)来解决。问题3:一个全局变量在线程1中被改变了,在线程2中能否看到该变量的最新值?可能大多数人都会给出肯定的答案,既然是全局变量,便是所以线程共享的,线程1改了该变原创 2020-09-14 17:54:18 · 395 阅读 · 0 评论 -
java多线程中的死锁、活锁、饥饿、无锁都是什么?
死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。死锁死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。举个例子,A同学抢了B同学的钢笔,B同学抢了A同学的书,两个人都相互占用对方的东西,都在让对方先还给自己自己再还,这样一直争执下去等待对方还而又得不到解决,老师知道此事后就让他们相互还给对方,这样在外力的干预下他们才解决原创 2020-09-14 17:42:30 · 590 阅读 · 0 评论 -
luncne 教程
1、了解搜索技术1.1 什么是搜索简单的说,搜索就是搜寻、查找,在IT行业中就是指用户输入关键字,通过相应的算法,查询并返回用户所需要的信息。1.2 普通的数据库搜索类似:select * from 表名 where 字段名 like ‘%关键字%’例如:select * from article where content like ’%here%’结果: where h...原创 2019-08-09 10:19:15 · 1128 阅读 · 0 评论 -
java @Scheduled注解执行定时任务
使用spring @Scheduled注解执行定时任务: @Scheduled(cron = "0 0 2 * * ?") //每天凌晨2点 @RequestMapping("/") private void test(){ try { System.out.println("0000"); }catch (Exc...原创 2019-04-26 15:45:49 · 3873 阅读 · 0 评论 -
slf4j-api、slf4j-log4j12、log4j以及Dom4j之间什么关系?
1.dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,Hibernate用它来读写配置文件dom4j需要导入dom4j-full.jar包.和前三者有些相似,但其实并没有直接关系.2.几乎在每个项目里都可以看到log4j的身影,在多个原创 2018-01-26 10:46:33 · 1779 阅读 · 0 评论 -
c3p0连接池使用教程及实例
首先,什么是c3p0?下面是百度百科的解释:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring 使用连接池和我们平时写的JDBC代码相比较有什么优点呢?资源重用: 由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。在原创 2017-12-12 14:34:37 · 10183 阅读 · 4 评论