实战
文章平均质量分 87
实战,就是真实的、是以真实行动和相应结果的行为。
Monster_起飞
代码路上的小学生,主要涉及有Java、OutSystems、分布式、微服务、低代码等,热爱技术,乐于分享,一起成长,遇见未知的自己
展开
-
支付流程的设计与实现逻辑
通常在业务体系中,都会或多或少的涉及到支付相关的功能;对于一些经验欠缺同学来说,最紧张的就是面对这类支付结算的逻辑,因为流程中的任何细节问题,都可能引发对账异常的情况;错误发生之后,再想去修复流程,花费的时间成本又是高昂的,还牵扯错误数据的调平问题,最终很可能引发乱账算不清的结果,然后需要人工介入手动处理;在支付场景中,不但涉及诸多的复杂业务,结算规则,超长的流程,第三方对接,其中更是涉及到诸多技术细节,比如:事务管理、异步处理、重试机制、加锁等;下面来分析具体的细节逻辑。面对复杂业务的时候,最基本的能原创 2022-07-05 16:52:07 · 710 阅读 · 1 评论 -
别再用定时任务来关闭超时订单了
前言在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内;那他们是怎么实现的呢?业务场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。一、定时任务一般情况下,最原创 2021-12-16 10:02:08 · 4269 阅读 · 5 评论 -
10分钟教你在Windows上搭建Git服务器
10分钟教你在Windows上搭建Git服务器一、下载并安装jdk.二、下载Gitblit三、配置四、运行五、测试一、下载并安装jdk.安装JDK请移步到:2022年最新Java JDK1.8的安装教程二、下载Gitblit下载地址:http://www.gitblit.com/ 在本地解压三、配置创建用于存储项目代码的文件夹,如:F:/GitProject进入data目录下,配置gitblit.propertiesgit.repositoriesFolder 为存储项目代码的原创 2021-12-15 11:58:17 · 9202 阅读 · 5 评论 -
三分钟实现 Spring Boot 集成 RabbitMQ,实现消息队列服务
Spring Boot提供了spring-bootstarter-amqp组件对消息队列进行支持,使用非常简单,仅需要非常少的配置即可实现完整的消息队列服务。消息中间件在互联网公司使用的越来越多,主要用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息队列实现系统之间的双向解耦,生产者往消息队列中发送消息,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到系统解耦的目的,也大大提高了系统的高可用性和高并发能力。接下来介绍Spring原创 2021-10-16 14:17:28 · 3486 阅读 · 6 评论 -
部署应用服务器
一、Tomcat介绍Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的.原创 2021-10-09 11:07:33 · 896 阅读 · 0 评论 -
写一个必然死锁的例子
前言只对死锁代码感兴趣的可以直接跳到第三小节 必然死锁示例,如果对死锁还不太了解的,我们可以一起来讨论以下几个议题什么是死锁?死锁有什么危害和特点?代码实现一个必然死锁的示例分析死锁的过程什么是死锁?关键词:并发场景,多线程首先我们需要知道,死锁一定发生在并发场景中。我们为了保证线程安全,有时会给程序使用各种能保证并发安全的工具,尤其是锁,但是如果在使用过程中处理不得当,就有可能会导致发生死锁的情况。关键词:互不相让死锁是一种状态,当两个(或多个)线程(或进程)相互持有对方所原创 2021-09-16 18:01:10 · 1107 阅读 · 4 评论 -
Springboot框架防止前台重复提交(锁)
Springboot–解决防重复提交防止重复提交,主要是使用锁的形式来处理,如果是单机部署,可以使用本地缓存锁(Guava)即可。一、本地锁(Guava)1、导入依赖<!--本地 缓存锁 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </d原创 2020-08-12 10:51:35 · 1971 阅读 · 11 评论