JUC: 线程锁
1 面试题复盘
如何理解多线程,如何处理并发,线程池有哪些核心参数?
Java加锁有哪几种锁?
synchronized原理是什么?为什么可重入?如何获取对象的锁?
JVM对原生锁做了哪些优化?
什么是锁清除和锁粗化?
乐观锁是什么?synchronized与乐观锁什么区别?
volatile有什么作用?
ReentrantLock原理是什么? ...
dynamic-datasource detect druid publicKey,It is highly recommended that you use the built-in encryption method
使用druid-spring-boot-starter 1.2.11作为数据库连接池 + dynamic-datasource-spring-boot-starter 3.4.1作为多数据源支持,并且使用了druid的数据库密钥加密功能,启动项目发现日志中有如下日志:
[2024-10-31 15:42:55.343] - [INFO ] - [15336] - [240E04791E60243BB7BE00FEE00CC8F33BE822D8CFE09DDE00D10000] - [main] ...
Spring篇知识点(4)
MVC
一、Spring MVC的工作流程
客户端向服务端发送一次请求,这个请求会先到前端控制器DispacherServlet
DispacherServlet接收到请求后会调用HandlerMapping处理器映射器——该请求由哪个Controller来处理
DispacherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该去执行哪个Controller(这个存在的 ...
个人网站一键引入免费开关评论功能 giscus
快速接入
选择 giscus 连接到的仓库。请确保:
该仓库是公开的,否则访客将无法查看 discussion。
giscus app 已安装,否则访客将无法评论和回应。
Discussions 功能已在你的仓库中启用。
1、创建仓库
github 创建一个公开的仓库
https://github.com/houbb/my-discussion
2、安装 app
https://github.com/apps/gi ...
java使用maven-shade-plugin打包
最近正在练习Flink JAVA编程,但是发现打包后老大的问题。
环境说明:
jdk17
springboot 3.4.6
flink 1.20.0
一、问题发现和解决
在pom.xml的依赖部分,和flink有关的内容如下:
<!-- Original Flink Dependencies -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-core ...
Spring Cloud Gateway实现分布式限流和熔断降级
小伙伴们,你们好呀!我是老寇!一起学习学习gateway限流和熔断降级
一、限流
思考:为啥需要限流?
在一个流量特别大的业务场景中,如果不进行限流,会造成系统宕机,当大批量的请求到达后端服务时,会造成资源耗尽【CPU、内存、线程、网络带宽、数据库连接等是有限的】,进而拖垮系统。
1.常见限流算法
漏桶算法
令牌桶 ...
剑指offer-26、二叉搜索树与双向链表
题⽬描述
输⼊⼀棵⼆叉搜索树,将该⼆叉搜索树转换成⼀个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向
思路及解答
递归中序遍历(推荐)
根据二叉搜索树的特点:左结点的值<根结点的值<右结点的值,我们不难发现,使用二叉树的中序遍历出来的数据的数序,就是排序的顺序。因此,首先,确定了二叉 ...
oauth2在web系统中的应用
前言
在日常开发中,系统常需作为对接方或被对接方与其他系统集成。此类集成的首要环节通常是身份认证,其中 OAuth 2.0 认证尤为常见。本文旨在略过繁杂的定义与规范解读,聚焦两个典型应用场景,阐述 OAuth 2.0 的落地设计思路。
单点登录 (Single Sign-On, SSO)
单点登录场景通常采用 授权码模式 (Authorization Code Gra ...
Spring AI 1.1.4 正式发布,又新增一个新功能!
大家好,我是R哥。
Spring AI 1.1.3 才发布多久啊:
Spring AI 1.1.3 正式发布,19 个新特性太顶了!
Spring AI 1.1.4 又发布了。。
除了 Spring AI 1.1.4,2.0.0 也来到了 M4 版本了,相信再过一阵子就要正式 GA 了,1.0.5 也发布了,大家可以根据自己的需要选择合适的版本。
说说主线版本 Spring AI 1.1.4 吧,这次一 ...
敏感词过滤 + 限流
社交场景设计
本文我们来做一个小场景:
【注意,本文借鉴内容偏多,引用的内容较多,如果想看原文,可以点击参考里面的链接查看原文】
1.引入
场景一:社交平台实时评论审核
用户在帖子下发表评论,内容需实时审核是否包含敏感词;
为了防止刷屏或恶意评论,需对每个用户或 IP 做限流。
这个时候我们要做一下:
入口限 ...
Spring AI 1.1.3 正式发布,19 个新特性太顶了!
大家好,我是R哥。
Spring AI 1.1.3 正式发布了。。
除了 Spring AI 1.1.3,2.0.0 也来到了 M3 版本了,相信再过一阵子就要正式 GA 了,1.0.4 也发布了,大家可以根据自己的需要选择合适的版本。
说说主线版本 Spring AI 1.1.3 吧,这次一共带来了:
19 个新特性;
31 个 bug 修复;
23 个文档改进;
25 个其他改进;
Sp ...
对于依赖注解,@Autowired 和 @Resource 有什么不同?
在 Spring 框架中,@Resource 和 @Autowired 都用于依赖注入(Dependency Injection,DI),但它们之间存在一些区别:
@Autowired
@Autowired 是一个更通用的注解,可以被用于字段、构造器、方法等。
它默认按类型(by-type)进行自动装配(autowiring),也可以通过 @Qualifier 注解指定具体的 bean。
@Autowired 可 ...
springboot~ImportBeanDefinitionRegistrar在自定义RPC框架中的使用
一、自定义RPC框架使用场景示例
1. 需求场景:服务注册与发现的自动配置
入口注解设计:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(RpcComponentRegistrar.class)
public @interface EnableRpc {
// 扫描的包路径
String[] basePackages() default {};
// 注册 ...
如何删除PDF的某一页?完全免费!
前言
大家好,我是小徐啊。我们在开发Java应用的时候,经常是需要和pdf文档打交道的。
有的时候,我们想要把pdf文档里面的某一页删除掉,该怎么做呢?今天,小徐就来介绍一款免费的小工具,帮助我们免费删除pdf页。
一起来看看吧!
如何删除PDF的某一页?完全免费!
首先,我们打开微信,在搜索框里面,输入pdf编辑器小帮手 ...
Java测试类、工具类与JavaBean对比解析
Java中测试类的详细分析
测试类主要用于验证代码逻辑的正确性,通常使用测试框架(如JUnit、TestNG)编写。其核心特点是:
命名规范:以Test结尾,如UserServiceTest。
依赖管理:不依赖具体实现,仅针对接口或公共方法进行测试。
方法设计:每个测试方法独立运行,通过断言(assertEquals、assertTrue等)验证结果。
注解 ...
记apifox-验证码解析
通常在获取验证码时回需要一些动态的时间戳,记解析动态码的脚本
如接口/sys/randomImage/{{timestamp}}
主要2个动作,一个前置,一个后置
pm.globals.set('timestamp', new Date().getTime())
console.log("设置全局时间戳变量"+pm.globals.get("timestamp"));
前置
//通过.json()函数,获取到响应体中返回的jso ...
基于AQS实现的ReentrantLock
基于AQS实现的ReentrantLock
这里的源码用的Java8版本
lock方法
当ReentrantLock类的实例对象尝试获取锁的时候,调用lock方法,
会进入sync的lock方法,其中Sync是ReentrantLock的一个内部类,ReentrantLock构造方法会默认使用非公平锁NonfairSync,这个类是继承于Sync的
final void lock() {
if (!in ...
Web server failed to start. Port 8080 was already in use. 端口被占用
本文介绍了如何在遇到Web服务器无法启动,因为端口8080被占用时,通过Windows命令行工具(netstat和tasklist)查找占用进程,识别其PID并使用taskkill强制结束进程的过程。
1、cmd回车打开命令窗口
查看端口号是否被占用 netstat -ano|findstr “8080”
2、查看进程号对应的进程名称 tasklist|findstr “12760”
3、直接 ...
告别手动注入!Bean Assistant插件让SpringBoot开发效率翻倍🚀
开发者高频痛点:Bean注入为何如此麻烦?
在SpringBoot项目中,你是否经常遇到这些场景?
✅ 在Controller中注入Service时,需要反复滚动代码到类顶部
✅ 每次手动编写@Resource/@Autowired注解和字段声明
✅ 类文件过长时,定位注入位置消耗时间
传统操作示例
常规的操作就是我先在第 13 行手写如下代码,接着调用方法。
...
Spring AI学习:使用WSL2安装Ubuntu&安装redis-8.4.0
背景:
spring ai中提供了RAG功能接口,需要搭配向量数据库,我选择了最新版redis作为外部向量数据库
(redis7可以安装stack包来支持向量存储,redis8本身已集成向量存储功能)
(redis8.0.0已有windows适配版本,redis8.4.0的windows适配尚未发布)
开启WSL2:
进入以下界面,点击红框
勾选以下两项并确定
...