- 博客(27)
- 资源 (14)
- 收藏
- 关注
原创 【并发编程】AQS源码深入解析(二) - 共享锁
上一篇我们拿分析独占锁的源码(),感兴趣的可以去看下主要用于实现独占锁,而 Java 标准库中的另外一个类可用于实现共享锁和独占锁的功能。其中读锁是共享锁,允许多个线程同时读取共享资源;写锁是独占锁,同一时间只允许一个线程进行写操作。
2025-08-11 14:51:03
653
原创 【并发编程】AQS源码深入解析(一) - 独占锁(或排他锁)
是 Java 并发编程的核心组件,位于包下,为各种锁和同步器(如Semaphore)提供了基础框架。理解 AQS 对于掌握 Java 并发编程至关重要。
2025-08-11 14:05:41
636
原创 【并发编程】Java 内存模型(JMM)深度解析
Java 内存模型(,简称JMM)是 Java 并发编程的基石之一,是一种抽象规范并不是物理意义上的东西。。在 JDK1.2 之前,Java 的内存模型实现总是从 主存 (即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存 本地内存 (比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。
2025-07-04 17:35:02
1149
原创 【并发编程】从计算机发展看Java 内存模型(JMM):原理、应用与实现
早期 Java 内存模型对指令重排序缺乏有效的约束,编译器和处理器为了优化性能,可能会对程序中的指令进行重排序,导致多线程程序出现不可预测的行为。此外,对于共享变量的可见性问题,早期 Java 内存模型也没有明确的规定,一个线程对共享变量的修改可能无法及时被其他线程感知到,从而引发数据不一致问题。早期的缓存规模较小,结构也比较简单,通常只有一级缓存,用于存储 CPU 近期可能会频繁访问的数据,以此减少 CPU 对慢速内存的访问次数,提高数据读取效率。X,它获取到的将是旧值,从而导致数据不一致。
2025-07-04 16:37:38
1005
原创 【并发编程】彻底讲透ThreadLocal底层源码实现
是一种提供线程局部变量的机制,在Java中使用。每个线程都可以独立地改变其副本,而不会影响其他线程的副本。因此,它常用于避免在多线程环境下共享资源的问题。
2025-06-19 15:42:10
901
原创 Java集合 - LinkedList底层源码解析
提供按顺序访问元素的默认实现(如List:支持按索引操作(如Deque:双端队列接口,支持头尾插入/删除(如addFirst()Cloneable和:支持克隆和序列化。E item;// 当前节点存储的元素// 指向下一个节点// 指向前一个节点双向链表特性:每个节点通过prev和next指针连接,支持双向遍历。内存分配:节点分散存储,不依赖连续内存(与ArrayList的数组不同)。
2025-06-13 17:48:07
1307
原创 Java集合 - ArrayList底层源码解析
源码调试:使用 IDE(如 IntelliJ IDEA)逐步调试 ArrayList 的addremove等方法,观察和size的变化版本差异:对比 JDK 8 和 JDK 17 的ArrayList源码,观察扩容策略、subList实现等细节变化进阶主题ArrayList与Vector的区别(线程安全 vs 性能)subList返回的视图对原集合的影响ArrayList在 JVM 内存模型中的表现(数组的连续性 vs 链表的离散性)
2025-06-13 17:01:08
702
原创 Java的SPI底层实现 - 源码解析
是Java提供的一种服务发现机制,用于实现模块化的插件架构。它允许你将接口的实现类配置在外部,而不是硬编码在主程序中,从而让第三方可以在不修改原代码的情况下进行扩展。
2025-06-12 16:56:01
728
原创 Java注解底层实现原理 - 源码分析
Java注解底层实现机制分析:通过案例展示注解定义与使用,深入源码解析注解获取流程。关键点包括:1)使用Class.getAnnotation()方法获取注解实例;2)annotationData()方法通过CAS机制确保线程安全地获取注解数据集;3)createAnnotationData()方法解析原始注解并处理继承逻辑;4)最终通过JVM本地方法getRawAnnotations()获取字节码中的原始注解数据。该机制展现了Java注解处理的完整链路,从高级API调用到底层字节码解析的整个过程。
2025-06-11 10:51:17
806
原创 spring boot、spring cloud、spring cloud alibaba 版本之间兼容对照表
一、spring boot、spring cloud 之间的对应关系拉取官网版本数据:https://start.spring.io/actuator/info{ "git": { "branch": "93e528fc7e79e41a513e493d057499401a15eb67", "commit": { "id": "93e528f", "time": "2022-05-12T12:07:39Z"
2022-05-16 15:56:26
2771
原创 hystrix 配置
# 参考:https://github.com/Netflix/Hystrix/wiki/Configuration# https://www.cnblogs.com/throwable/p/11961016.html、# https://blog.csdn.net/tongtong_use/article/details/78611225hystrix: # 一、命令配置 command: # 默认全局配置 default: # 1、命令执行
2021-10-22 19:51:57
838
原创 不同Vue页面如何进行参数传递
一、实际场景1、描述有A、B两个页面;不管是否层级关系。B页面需要用到A页面的数据,A页面如何将数据传递给B页面2、解决方案二、具体实现1、定义全局的Vue对象// 最好是在main.js中定义Vue.prototype.$bus = new Vue()2、A页面事件监听和关闭要成对出现,后面就不作强调了// 注册 reques_notify 事件监听this.$bus.$off('reques_notify').$on('reques_notify', () =>
2021-10-19 10:34:41
2425
原创 如何格式化输出JSON数据
前言:由于我们在开发、测试阶段,为了方便看日志,需要将原本的压缩json进行格式化显示,便于我们在日常开发过程中很直观的看到我们想要打印的信息,以及数据的层级关系。下面我们梳理了日常用的最多的两种 json 工具进行罗列一、Jackson进入maven依赖:<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind<
2021-07-07 17:19:55
7210
原创 CompletableFuture异步处理
一、异步执行1、runAsync功能:基于runAsync系列方法实现无返回值的异步计算场景:当你想异步执行一个任务,并且不需要任务的执行结果时可以使用该方法,比如异步打日志,异步做消息通知等/** * 基于runAsync系列方法实现无返回值的异步计算 * @throws ExecutionException * @throws InterruptedException */@Testpublic void testRunAsync() throws ExecutionExcept
2021-05-24 20:10:17
3988
原创 跨域的那些事 - CorsWebFilter 跨域源码分析(二)
前言:不懂基础的先看下下面的参考文章参考:https://juejin.cn/post/6844904055148380173、 https://juejin.cn/post/6844903678965448718、 https://www.ruanyifeng.com/blog/2016/04/cors.html一、项目准备spring bootjdk1.8IDEApostman提供的一个简单的健康检查接口@RestController@Slf4jpublic c
2021-04-15 19:03:27
1839
原创 跨域的那些事 - 使用场景分析(一)
一、前言如果你对跨域是什么都不了解,建议先去查看一下其他资料,简单了解一下参考:https://juejin.cn/post/6844904055148380173、 https://juejin.cn/post/6844903678965448718、 https://www.ruanyifeng.com/blog/2016/04/cors.html个人理解:1、什么情况下才算跨域? 三要素:协议、主机、端口。只要三个不完全相等,就算是跨域访问2、为什么会有跨域问题
2021-04-15 18:36:55
993
原创 Maven构建:去除依赖时通配符不生效问题
一、现状dubbo-api 使用不规范,导致项目之间耦合高,隐藏风险大。在项目开发过程中,不可避免的需要跨团队业务对接,对于api包的依赖,举例以供应链中的 tms-api 包为例:问题:1、对于业务对接的时候,服务与服务之间进行通信,我想依赖的 tms-api 包其实只是想要包本身(api中的接口、实体、常量类、异常类)。而现状是依赖tms-api导致引入了大量我不需要的jar。2、现在对maven项目没有做版本管理。出现的问题是:比如:依赖tms-api的项目用的是log4j打印日志。而tm
2021-04-09 00:23:19
3626
原创 maven使用误区:继承、错误使用dependencyManagement
项目结构maven-test-proj项目下面有2个核心模块:mvn-common、mvn-servermvn-common 基础公共组件空间:下面有一个具体的组件 mvn-basemvn-server 是业务空间:下面有一个具体业务 server1使用场景1mvn-server 父pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"
2021-04-08 19:50:48
1530
原创 Spring Security Oauth2 - 源码解析之授权相关组件【03】
一、准备工作Oauth2 分为4种模式,但是内部运行逻辑大致类似。我们先拿client模式的例子来进行辅助调试,稍微容易一些。还是从上一篇中,把请求搬过来:http://localhost:8080/oauth/token?grant_type=client_credentials&scope=select&client_id=client_1&client_secret=123456响应如下:{ "access_token": "652b8bd0-79ab-4c0
2021-03-31 20:28:26
433
原创 Spring Security Oauth2 - 源码解析之授权服务器【02】
一、准备工作Oauth2 分为4种模式,但是内部运行逻辑大致类似。我们先拿client模式的例子来进行辅助调试,稍微容易一些。还是从上一篇中,把请求搬过来:http://localhost:8080/oauth/token?grant_type=client_credentials&scope=select&client_id=client_1&client_secret=123456响应如下:{ "access_token": "652b8bd0-79ab-4c0
2021-03-31 17:45:21
573
原创 Spring Security Oauth2 - 基本使用【01】
一、概述关于oauth2,其实是一个规范,对理论运行模式不清楚的可以参考下面链接参考:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.htmlhttps://oauth.net/2/使用oauth2,主要就是以下三个组件配置资源服务器配置认证服务器配置spring security前两点是oauth2的主体内容,spring security oauth2是建立在spring security基础之上的,所以有一些体系是公用的。
2021-03-31 10:33:35
729
原创 026 spring IOC容器:BeanFactory和ApplicationContext谁才是Spring IOC容器
一、上代码抛问题UserReository.javapublic class UserReository { private Collection<User> users; // 自定义 Bean private BeanFactory beanFactory; // 内建非 Bean 对象(依赖) private ObjectFactory<User> objectFactoryUser; private ObjectFac
2021-03-26 12:03:07
321
2
原创 Linux性能调优 —— CPU性能
一、到底应该怎么理解“平均负载”?1、uptime 查询平均负载$ uptime02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.8802:34:03 // 当前时间up 2 days, 20:14 // 系统运行时间1 user // 正在登录用户数最后三个数字呢,依次则是过去 1 分钟、5 分钟、15 分钟的平均负载# -d 参数表示高
2021-03-17 15:17:18
5014
原创 【001】webflux 源码解析 - 启动、执行流程
目录文章目录目录一、相关类结构1、启动设计到的类2、一次服务调用涉及到的类二、webflux 启动流程1、首先 SpringApplication run 方法启动应用程序2、创建上下文3、刷新上下文 refresh4、创建web服务器4、启动服务器三、webflux 一次服务调用流程1、HttpServerHandle2、ReactorHttpHandlerAdapter3、HttpWebHandlerAdapter4、DispatcherHandler一、相关类结构1、启动设计到的类【spri
2021-02-19 19:36:02
3110
2
原创 java 中文件的读取File、以及相对路径的问题
一、对于java项目中文件的读取1、使用System 或是 系统的Properties对象 ①直接是使用 String relativelyPath=System.getProperty("user.dir");②使用Properties对象我们先来遍历一下系统的属性:Properties properties = System.getProperties();
2016-12-28 00:00:02
51792
java、.net、PHP、网页设计、IOS 系列全套视频教程
2014-05-25
java基础教程
2013-07-15
Java设计模式
2014-05-25
Servlet api
2013-05-20
mybatis 官方学习(本地版)
2016-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅