基于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:
进入以下界面,点击红框
勾选以下两项并确定
...
为什么 IO 流通常只能被读取一次
今天我们来一起探讨下 为什么 IO 流通常只能被读取一次?
我为什么会发出这个疑问呢?是因为我研究Web开发中的一个问题时,HTTP请求体在 Filter(过滤器)处被读取了之后,在 Controller(控制层)就读不到值了,使用 @RequestBody 的时候。
无论是字节流(InputStream / OutputStream)还是字符流(Reader / Writer) ...
Spring Cloud Gateway 启动流程源码分析
目录配置和启动类启动 nettyserver创建websever重要方法 reactor.netty.transport.ServerTransport#bindjvisualvm监控验证以下分析以 spring-cloud-starter-gateway 4.1.0 源码为分析样本。
配置和启动类
如果我们要使用 Spring Cloud Gateway,需要在pom里引入如下依赖:
<dependency>
<groupId>org.springframework.cl ...
剑指offer-16、合并两个有序链表
题⽬描述
输⼊两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满⾜单调不减规则。
如输⼊{1,3,5} , {2,4,6} 时,合并后的链表为{1,2,3,4,5,6} ,所以对应的输出为{1,2,3,4,5,6} ,转换过程如下图所示:
思路及解答
迭代法(双指针)
使用两个指针分别遍历两个链表,比较当前节点的值,将较小的节 ...
Tomcat的事件监听机制:观察者模式
Lifecycle中出现的监听器
(老的版本中是LifecycleSupport接口)
public interface Lifecycle {
/** 第1类:针对监听器 **/
// 添加监听器
public void addLifecycleListener(LifecycleListener listener);
// 获取所以监听器
public LifecycleListener[] findLifecycleListeners();
// 移除某个监 ...
记录一下新建模块时关于Spring Security的相关配置类
一开始接触开源框架的时候,尤其是微服务类的,需要新建一个模块来写自己的业务,这与单体应用那样毫无解耦的缠在一起区别很大。
新的模块因为解耦不仅相互独立,而且彼此之间的配置无法相互调用,这时如果你的全局配置使用了Spring Security,
无论写多少MVC结构的Restful接口,都一定是无法测试成功的,而报错原因也都是4 ...
PDF处理控件Aspose.PDF教程: 在 Java 中编辑 PDF 页面大小
PDF 的页面大小决定了其内容的显示、打印或处理方式。在准备打印、转换格式或标准化布局时,我们通常需要更改PDF文档的纸张大小。在本教程中,您将学习如何使用Aspose.PDF for Java 编辑任何 PDF 文件的页面大小。我们将通过完整的代码示例,逐步指导您完成操作。
Aspose.PDF试用版下载,可联系Aspose中国区官方 ...
SpringBoot 创建及登录、拦截器的实现
目录1.创建2.登录和拦截器2.1 session2.1.1 登录2.2 tokentoken 说明session 和 token 的区别2.2.1 常建工具类用于创建token和解析token密钥2.2.2 修改登录3.springboot统一的响应格式springboot统一的响应格式好处:标准化接口设计错误处理规范化简化客户端处理增强可维护性监控和统计实现方式典型应用场景具体实现:1.创 ...
HTTP请求头中表示代理IP地址的属性及获取情况
博客:https://www.emanjusaka.com
公众号:emanjusaka的编程栈
by emanjusaka from https://www.emanjusaka.com/archives/http-proxy-ip
本文为原创文章,可能会更新知识点以及修正文中的一些错误,全文转载请保留原文地址,避免产生因未即时修正导致的误导。
代理服务器类型
透明代理服务器(Transparent Proxies)
透 ...
秒杀/高并发解决方案+落地实现 (技术栈: SpringBoot+Mysql + Redis +RabbitMQ +MyBatis-Plus +Maven + Linux + Jmeter ) -05
秒杀/高并发解决方案+落地实现 (技术栈: SpringBoot+Mysql + Redis +RabbitMQ +MyBatis-Plus +Maven + Linux + Jmeter ) -05
@目录秒杀/高并发解决方案+落地实现 (技术栈: SpringBoot+Mysql + Redis +RabbitMQ +MyBatis-Plus +Maven + Linux + Jmeter ) -05Redis 分布式锁探讨用户名是手机号: 13300000000 密码为: 123456 ...
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 ...
Java中CountDownLatch和CyclicBarrier的区别与详解
目录一.CountDownLatch 和 CyclicBarrier的区别二.详解CountDownLatchcyclicbarrier一.CountDownLatch 和 CyclicBarrier的区别
CountDownLatch 的计数器是大于或等于线程数的,而CyclicBarrier是一定等于线程数CountDownLatch 放行由其他线程控制而CyclicBarrier是由本身来控制的
二.详解
CountDownLatch
说明: 一个线程等 ...
4、IntelliJ IDEA 之 JDK 的相关配置
4.1、打开项目结构
4.2、设置项目SDK
如上图所示,可以根据需要设置项目的 SDK 版本。
本文来自博客园,作者:Javaer1995,转载请注明原文链接:https://www.cnblogs.com/Javaer1995/p/19679415
来源:https://www.cnblogs.com/Javaer1995/p/19679415
《小丑牌》游戏在Java上进行的模仿
突发奇想想写一个小游戏,看了看按我目前的水平能写出来的,打牌类算是能巩固我目前所学的方向。(注:我们当时是6个人来做,本人负责的是架构与出牌弃牌操作,其他都是同伴写的)
1.先把小丑牌的规则与想要实现的方向按文档写出来,就可以得到一张原型图与需求文案。原型图的链接https://rp.mockplus.cn/rps/t79wjqwSXy/k- ...
Spring AI 1.1.5 正式发布,又一个大模型被移除了。。
大家好,我是R哥。
Spring AI 1.1.4 已经发布一个月了:
Spring AI 1.1.4 正式发布,又新增一个新功能!
Spring AI 1.1.5 又发布了。。
除了 Spring AI 1.1.5,2.0.0 也来到了 M5 版本了,相信再过一阵子就要正式 GA 了,1.0.6 也发布了,三条线同时开花,大家可以根据自己的需要选择合适的版本。
说说主线版本 Spring A ...
Tomcat Request请求处理:Container设计
理解思路
为什么我们说上面的是Container呢?我们看下几个Container之间的关系:
从上图上,我们也可以看出Container顶层也是基于Lifecycle的组件设计的。
在设计Container组件层次组件时,上述4个组件分别做什么的呢?为什么要四种组件呢?
如下是Container接口类的相关注释
* <li><b>Engine</b> - Representation ...
Tomcat 线程池的设计与实现:StandardThreadExecutor
理解思路
我们如下几个方面开始引入线程池的,这里主要从上文Service引入,保持上下文之间的衔接,会很好的构筑你的知识体系。
上文中我们了解到,Executor是包含在Service中的,Service中关于Executor的配置和相关代码如下:
server.xml中service里包含Executor的配置
<Service name="Catalina">
<!-- 1. 属性说明
na ...