之前写过关于springboot~jpa优雅的处理isDelete的默认值的文章,今天说一下在jpa或者其它类型的Repository中实现软删除的方法,主要借助了自定义的仓储的能力。 优雅的引用方式 /** * 开启软删除的能力 * * @author lind * @date 2025/9/8 ...
题目描述 请从字符串中找出⼀个最⻓的不包含重复字符的⼦字符串,计算该最⻓⼦字符串的⻓度。 数据范围: ⻓度⼩于40000 示例1 输⼊:"abcabcbb" 返回值:3 说明:因为⽆重复字符的最⻓⼦串是"abc",所以其⻓度为 3。 示例2 输⼊:"bbbbb" 返回值:1 说明:因为⽆重复字符的最 ...
这是Java19新增的预览版功能,到Java21正式可以使用 简介 虚拟线程是一种用户态下的线程,类似go语言中的goroutines 和Erlang中的processes,虚拟线程并非比线程快,而是提高了应用的吞吐量,相比于传统的线程是由操作系统调度来看,虚拟线程是我们自己程序调度的线程。如果你对 ...
解密synchronized:从对象头到内存屏障,搞懂Java锁的底层原理 一、引言 在 Java 并发编程的领域中,多线程环境下的数据一致性和线程安全是至关重要的课题。而 synchronized 关键字,作为 Java 语言提供的内置同步机制,就如同一位忠诚的守护者,在保障多线程安全方面发挥着不 ...
Flink实时计算心智模型——流、窗口、水位线、状态与Checkpoint的协作 在实时计算领域,Flink凭借其强大的流处理能力、低延迟特性和高可靠性,成为当前最主流的框架之一。但对于很多初学者甚至资深开发者而言,Flink的核心概念——流、窗口、水位线、状态与Checkpoint,往往是“单独能 ...
在分布式架构中,短信服务(SMS)常被视为业务链路的“最后一公里”。无论是 618 秒杀场景下的身份校验,还是应对验证码爆破等安全攻击,短信的实时性直接影响到用户转化率与资金安全。一旦短信延迟超过 10 秒,用户流失率将呈指数级增长。 作为后端架构师,解决短信延迟不应仅停留在代码层面,而需从底层通信 ...
一、自定义RPC框架使用场景示例 1. 需求场景:服务注册与发现的自动配置 入口注解设计: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(RpcComponentRegistrar. ...
概述 Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒。 在使用Lock之前,使用的最多的同步方式应该是synchronized关键字来实现同步方式了。配合Object的wait()、notify()系列方法可以实 ...
1、多租户架构设计 请设计一个支撑千万会员的鞋服会员SCRM(SaaS)多租户架构,重点说明如何在促销期间应对流量十倍激增,以及如何保障新旧SaaS客户体验稳定。 需求分析 设计支撑千万会员的鞋服会员多租户架构 促销期间应对流量十倍激增 保障新旧SaaS客户体验稳定 项目设计 程序涉及到的数据库表 ...
题⽬描述 给定⼀个⾮负整数 x ,计算并返回 x 的平⽅根,即实现 int sqrt(int x) 函数。 正数的平⽅根有两个,只输出其中的正数平⽅根。如果平⽅根不是整数,输出只保留整数的部分,⼩数部分将被舍去。 示例1 输⼊:8 返回值:2 解释:8 的平⽅根是 2.82842…,由于⼩数部分将被 ...
题⽬描述 输⼊数字 n ,按顺序打印出从 1 到最⼤的 n 位⼗进制数。⽐如输⼊ 3 ,则打印出 1 、2 、3⼀直到最⼤的 3 位数 999 。 ⽤返回⼀个整数列表来代替打印 n 为正整数 示例1 输⼊:1 返回值:[1,2,3,4,5,6,7,8,9] 思路及解答 直接计算 不太清楚这道题是要考 ...
配置依赖 <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-chat-memory-repository-jdbc</artifactId> </dependency> ...
前言 CompletableFuture是jdk8的新特性。CompletableFuture的实现与使用上,处处体现出了函数式异步编程的味道。一个CompletableFuture对象可以被一个环节接一个环节的处理、也可以对两个或者多个CompletableFuture进行组合处理或者等待结果完成 ...
在多线程编程中,线程间的数据交换是一个常见需求。Java IO包中的PipedInputStream和PipedOutputStream提供了一种高效的线程间通信机制,允许一批(多个)线程向PipedOutputStream写入数据,另一批(多个)线程从PipedInputStream读取数据。 但 ...
一、SequenceInputStream源码——可以顺序读取多个输入Stream的装饰器类 SequenceInputStream.class 的UML关系图,如下所示: SequenceInputStream.class的源码,如下所示: package java.io; import java ...
Java SE : 它的目标是提供一个稳定且跨平台的运行环境和核心类库,用于开发桌面应用、命令行工具和服务器端的基础应用。 Java SE 的功能主要由两大部分构成:JVM (Java虚拟机) 和 核心类库 (Core Libraries) 。我们通常所说的“功能模块”,主要指的就是这些核心类库。 ...
阅读本文时,请先看我的另一篇博客:6、(InputStream的源码、FilterInputStream源码、BufferedInputStream的源码解读前言)AtomicReferenceFieldUpdater.class和System.arraycopy()函数的用法 Java IO 库采 ...
一、AtomicReferenceFieldUpdater的用法 AtomicReferenceFieldUpdater是一个抽象的工具类,其底层是通过反射找到目标字段的内存偏移量,然后利用Unsafe.class提供的CAS(Compare-And-Swap)操作来原子地更新某个类中指定变量的值。 ...
问题 在某些Yapi上的项目,有些设置了项目级别前缀,有些没有设置,有些接口文档是手写的,有些是自动生成的。 因此会出现URL前缀重叠、缺失等问题,需要截断,或者追加 解决 如何移除前缀 if(it.containingClass().name().contains("com.slankka.cod ...
LockSupport简介 LockSupprot 用来阻塞和唤醒线程,底层实现依赖于 Unsafe 类。 LockSupport用来创建锁和其他同步类的基本线程阻塞原语。简而言之,当调用LockSupport.park时,表示当前线程将会等待,直至获得许可,当调用LockSupport.unpar ...