Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by long delayTime
【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)-CSDN博客
📝个人主页:哈__ 期待您的关注 目录 🌼前言 在Web应用开发过程中,接口重复提交问题一直是一个需要重点关注和解决的难题。无论是由于用户误操作、网络延迟导致的重复点击,还是由于恶意攻击者利用自动化工具进行接口轰炸,都可能对系统造成严重的负担,甚至导致数据不一致、服务不可用等严重后果。特别是在SpringBoot这样的现代化Java框架中,我们更需要一套行之有效的策略来防止接口重复提交。 本文将从SpringBoot应用的角度出发,探讨在单机环境和分布式环境下如何有效防止接口重复提交。单机环境虽然相对简单,但基本的防护策略同样适用于分布式环境的部署。 接下来,我们将首先分析接口重复提交的原因和危害,然后详细介绍在SpringBoot应用中可以采取的防护策略,包括前端控制、后端校验、使用令牌机制(如Token)、利用数据库的唯一约束等。对于分布式环境,我们还将探讨如何使用分布式锁、Redis等中间件来确保数据的一致性和防止接口被重复调用。...
android--RxJava线程调度源码详解-CSDN博客
从今天起关闭烦恼,开启赚钱模式,别去想那些乱七八糟的破事了,满脑子都是钱不好吗,肤浅又快乐! 目录 前言 前言 学习线程调度的源码之前,我们需要先分析RxJava的源码,关于RxJava的源码,请移步文章android--RxJava源码详解-CSDN博客 如果没看上面的文章,直接看这篇文章可能会很难理解。 一,IO线程调度 关于RxJava的线程调度,有很多种,这里我们只分析IO线程,因为其他的原理是一样的 首先我们看下怎么使用RxJava切换IO线程: Observable.create( new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> e) throws Exception { e.onNext("袁震"); Log.d(TAG, "subscribe: " + Thread.currentThread().getName()); } }) .subscribeOn( Schedulers.io() ) .subscribe(...
聊聊并发编程--并发容器和阻塞队列-CSDN博客
目录 一.ConcurrentHashMap 1.为什么要使用ConcurrentHashMap? 不安全的HashMap Java 中的 HashMap 是非线程安全的,这意味着如果多个线程同时访问和修改同一个 HashMap 实例,可能会导致不一致的结果或抛出异常。以下是一个示例代码,展示了 HashMap 的线程不安全行为: public static void main(String[] args) { // 创建一个 HashMap Map<Integer, String> map = new HashMap<>(); // 创建一个线程池 ExecutorService executorService = Executors.newFixedThreadPool(2); // 向 HashMap 中添加键值对的任务 Runnable task = () -> { for (int i = 0; i < 1000; i++) { map.put(i, "Value " + i); } }; // 启动两个线程同时执行添加任务...
Java 并发编程面试题--BlockingQueue
1.什么是阻塞队列 (BlockingQueue)? BlockingQueue 是 java.util.concurrent 包下重要的数据结构,与普通的队列不同,BlockingQueue 提供了线程安全的队列访问方式,该包下很多高级同步类的实现都是基于 BlockingQueue 实现的。BlockingQueue ⼀般用于生产者——消费者模式,生产者是往队列里添加元素的线程, 消费者是从队列里取出元素的线程。BlockingQueue 就是存放元素的容器。 2.BlockingQueue 有哪些核心方法? (1)BlockingQueue 是一个接口,继承自 Queue,所以其实现类也可以作为 Queue 的实现来使用,而 Queue 又继承自 Collection 接口。 (2)BlockingQueue 中的核心方法如下: 方法 \ 处理方式抛出异常返回特殊值一直阻塞超时退出 插入 add(e) offer(e) put(e) offer(e, time, unit) 移除 remove() poll() take() poll(time, unit) 检查...
OpenHarmony的线程间通信EventHandler_nosecret_code的技术博客_51CTO博客
在OpenHarmony的开发过程中,如果遇到处理下载、运算等较为耗时的操作时,会阻塞当前线程,但是实际操作中又不希望当前线程受到阻塞。比如:我们的app在界面上有一个下载文件的处理按钮,如果在按钮按下时,直接处理下载任务时,当前的界面就会阻塞,不允许操作界面上的任何控件。解决此阻塞的办法,一般的处理方式是通过新开一个线程或进程的来处理此耗时的操作,然后通过同步数据的方式来进行界面上关于下载进度的刷新。 OpenHarmony系统为此提供了统一的EventHandler机制来处理线程间通信。以下通过简单的实例来比较EventHandler机制的与一般的线程之间的方便性与易理解性。 1.1 使用EventHandler 1.1.1 EventHandler投递InnerEvent事件 首先创建EventHandler的子类,在子类中重写实现ProcessEvent来处理事件。 // base\telephony\core_service\services\network_search\include\network_search_handler.h class...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with long
Contact long, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack