- 博客(131)
- 资源 (5)
- 收藏
- 关注
原创 Java ThreadLocal 原理及使用场景
ThreadLocal 用于为每个线程提供独立的变量副本,线程间数据隔离,避免线程安全问题。其实现依赖线程内部的。:每个线程需要独立访问的数据(如数据库连接、用户会话)。:在多层方法调用中隐式传递上下文(如日志跟踪ID)。:为每个线程提供独立的工具实例(如。:Spring 使用。存储当前事务上下文。
2025-03-16 10:20:40
414
原创 Flink State 是处理有状态流计算的核心机制,其典型应用场景及具体说明
通过合理利用 Flink State,可以在实时数据处理中实现复杂的业务逻辑,同时保证高吞吐、低延迟和 Exactly-Once 语义。
2025-03-14 16:54:18
964
原创 深入理解seata使用和源码分析
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。官网:https://seata.io/zh-cn/docs/overview/what-is-seata.html概念:Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT模式:提供无侵入自动补偿的事务模式XA模式。
2025-03-06 18:05:03
1068
原创 深入理解MyBatis整合Spring的原理
设计模式类工厂模式建造者模式单例模式代理模式绑定:MapperProxy延迟加载:ProxyFactory <br/>插件:PluginSpring <br>集成MyBaits: SqlSessionTemplate的内部SqlSessionInterceptorMyBatis<br>自带连接池:PooledConnection<br/>日志打印:ConnectionLogger、StatementLogger适配器模式。
2025-03-06 17:57:10
1080
原创 深入Sentinel使用和源码分析
Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。丰富的应用场景:Sentinel承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel提供了实时的监控功能。
2025-03-05 17:02:25
1202
原创 MyBatis中的插件机制详解
插件是一种常见的扩展方式,大多数开源框架也都支持用户通过添加自定义插件的方式来扩展或者改变原有的功能,MyBatis中也提供的有插件,虽然叫插件,但是实际上是通过拦截器(Interceptor)实现的,在MyBatis的插件模块中涉及到责任链模式和JDK动态代理,这两种设计模式的技术知识也是大家要提前掌握的
2025-03-05 16:59:07
971
原创 深入理解Spring Cloud Gateway网关原理及使用
Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul。相比 Zuul 来说,Spring Cloud Gateway 提供更优秀的性能,更强大的有功能。Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能在传统的 servlet 容器中工作,也不能构建成 war 包。
2025-03-04 14:25:54
492
原创 MyBatis基础模块-类型转换模块
MyBatis是一个持久层框架ORM框架,实现数据库中数据和Java对象中的属性的双向映射,那么不可避免的就会碰到类型转换的问题,在PreparedStatement为SQL语句绑定参数时,需要从Java类型转换为JDBC类型,而从结果集中获取数据时,则需要从JDBC类型转换为Java类型,所以我们来看下在MyBatis中是如何实现类型的转换的。
2025-03-04 14:16:15
813
原创 深入Ribbon源码分析
request.getURI(), 这个不用我多解释了吧,restTemplate就是发送http请求,这里获取他的请求链接,然后获取他的host,他的host是什么就是nx-stock,就是serviceName,然后将这serviceName传递到我们的execute里面,我们推想这里很可能对我们serviceName进行解析,从我们的nacos注册中心获取注册列表,然后通过负均衡选择一个合适的地址,进行调用。我们进入配置类中发现。等我们后面用的时候再看。
2025-03-03 10:45:37
1251
原创 深入分析Feign源码
我们在想为什么我们调用接口StockFeignClient就能调用对应的服务呢?StockFeignClient接⼝打个@FeignClient注解,它是怎么通过接⼝上的信息、找到接⼝的实现类的呢?
2025-03-03 10:42:27
1011
原创 MyBatis基础模块-反射工具箱
接口的定义如下// 检测该ReflectorFactory是否缓存了Reflector对象// 设置是否缓存Reflector对象// 创建指定了Class的Reflector对象> type);然后我们来看看它的具体实现。
2025-03-03 10:29:31
752
原创 Spring Cloud LoadBalancer详解
Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,抽象和实现,用来替代Ribbon(已经停更),LoadBalancer 的优势主要是,支持响应式编程的方式异步访问客户端,依赖 Spring Web Flux 实现客户端负载均衡调用。四、自定定义负载均衡器五、重试机制六、源码分析1、猜测源码的实现我们这里是给RestTemplate增加了@LoadBalanced就实现了负载均衡,我们学习Ribbon的时候是也是在RestTempla
2025-03-02 10:38:02
1133
原创 MyBatis基础模块-日志模块
首先日志在我们开发过程中占据了一个非常重要的地位,是开发和运维管理之间的桥梁,在Java中的日志框架也非常多,Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口也都不尽相同,为了统一这些工具,MyBatis定义了一套统一的日志接口供上层使用。首先大家对于适配器模式要了解下哦。
2025-03-02 10:33:44
363
原创 深入理解Ribbon
现在有三个实例,内容中心可以通过discoveryClient 获取到用户中心的实例信息,如果我们再订单中心写一个负载均衡 的规则计算请求那个实例,交给restTemplate进行请求,这样也可以实现负载均衡,这个算法里面,负载均衡是有订单中心提供的,而订单中心相对于用户中心是一个客户端,所以这种方式又称为客户端负负载均衡。并且进行负载均衡算法,进行请求,ribbon默认是懒加载的,只有第一层调用的时候才会生成userCenter的ribbonClient,这就会导致首次调用的会很慢的问题。
2025-02-28 15:51:58
1136
原创 SpringSecurity中OAuth2.0的实现
先说OAuth,OAuth是Open Authorization的简写。OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。OAuth2.0是OAuth协议的延续版本,但不向前兼容(即完全废止了OAuth1.0)。
2025-02-28 09:14:38
971
原创 MyBatis基础模块-缓存模块
MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的,都是使用Cache接口实现的。缓存位于 org.apache.ibatis.cache包下。通过结构我们能够发现Cache其实使用到了装饰器模式来实现缓存的处理。首先大家需要先回顾下装饰器模式的相关内容哦。我们先来看看Cache中的基础类的API
2025-02-28 09:07:38
839
原创 MyBatis核心工作原理讲解
接下来我们就开始MyBatis的源码之旅,首先大家要从宏观上了解Mybatis的整体框架分为三层,分别是基础支持层、核心处理层、和接口层。如下图然后根据前面讲解的MyBatis的应用案例,给出MyBatis的主要工作流程图在MyBatis的主要工作流程里面,不同的功能是由很多不同的类协作完成的,它们分布在MyBatis jar包的不同的package里面。大概有一千多个类,这样看起来不够清楚,不知道什么类在什么环节工作,属于什么层次。
2025-02-27 14:09:27
1002
原创 SpringSecurity基于JWT实现Token的处理
在SpringSecurity中的认证是通过UsernamePasswordAuthenticationFilter来处理的,现在我们要通过JWT来处理,那么我们就需要重写其中几个处理的方法然后就是当客户端提交请求,我们需要拦截请求检查header头中是否携带了对应的Token信息,并检查是否合法。/*** 校验Token是否合法的Filter*/@Override//如果携带错误的token,则给用户提示请登录!resultMap.put("msg", "请登录!");
2025-02-27 10:18:46
1225
原创 Apache Paimon(原Flink Table Store)的主键表采用LSM(Log-Structured Merge-Tree)结构存储数据,其数据合并(Compaction)机制是保证查询
当某层(Level)的SSTable数量超过compaction.max.file-num(默认50)时触发合并。如果启用Leveled Compaction策略,当L0层的SSTable大小超过下一层总大小的10%时触发合并。多次写入会产生多个SSTable,导致查询时需要合并多个文件(影响性能),且冗余数据占用存储空间。在Flink的检查点机制中,Paimon会调用snapshotState()方法,触发异步合并。数据先写入内存的MemTable,达到阈值后刷盘成不可变的SSTable文件。
2025-02-26 22:37:09
320
原创 ORM框架发展历程和MyBatis的核心应用
具体的操作步骤是,首先在pom.xml中引入MySQL的驱动依赖,注意MySQL数据库的版本代码重复资源管理结果集处理SQL耦合针对这些问题我们可以自己尝试解决下对应的jdbc操作代码可以简化如下但是整体的操作步骤还是会显得比较复杂,这时我们可以进一步优化我们可以针对DML操作的方法来优化,先解决SQL耦合的问题,在DBUtils中封装DML操作的方法然后在DML操作的时候我们就可以简化为如下步骤显然这种方式会比最初的使用要简化很多,但是在查询处理的时候我们还是没有解决ResultS
2025-02-26 16:38:10
859
原创 单点登录原理和JWT实现
官方:JSON Web Token (JWT) is an open standard (RFC 7519HMACRSAorECDSAJSON Web 令牌(JWT)是一种开放标准(RFC 7519) ,它定义了一种紧凑和自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。可以验证和信任此信息,因为它是数字签名的。JWTs 可以使用 secret (使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。
2025-02-26 10:00:39
1257
原创 SpringSecurity核心过滤器-SecurityContextPersistenceFilter
在spring-security-core中的SecurityContextHolder,这个是一个非常基础的对象,存储了当前应用的上下文SecurityContext,而在SecurityContext可以获取Authentication对象。也就是当前认证的相关信息会存储在Authentication对象中。
2025-02-25 14:18:24
751
原创 SpringSecurity的核心过滤器-CsrfFilter
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
2025-02-24 11:04:42
1262
原创 SpringSecurity中的权限管理原理
SpringSecurity是一个权限管理框架,核心是认证和授权,前面已经系统的给大家介绍过了认证的实现和源码分析,本文重点来介绍下权限管理这块的原理。
2025-02-23 13:07:07
668
原创 深入理解SecurityConfigurer
UserDetailsManagerConfigurer 中实现了 UserDetailsServiceConfigurer 中定义的 initUserDetailsService 方法,具体的实现逻辑就是将 UserDetailsBuilder 所构建出来的 UserDetails 以及提前准备好的 UserDetails 中的用户存储到 UserDetailsService 中。具体的Configurer实现我们可以先不关注,我需要了解的SecurityConfigurer的核心实现有三个。
2025-02-22 15:24:16
1069
原创 OpenMetadata MySQL数据质量治理实现分析
用户界面Test Suite定义YAML配置质量测试执行引擎MySQL连接器MySQL数据库测试结果存储元数据存储核心组件实现1. 测试定义层2. MySQL测试执行器实现流程详解1. 测试配置定义(YAML示例)2. 执行流程#mermaid-svg-UImVUwHPJebKQ1JQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-UImVUwHPJe
2025-02-21 20:36:34
648
原创 OpenMetadata Service与Ingestion模块接口交互全解析
Service端代码: openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/*.java。代码路径: openmetadata-ingestion/src/metadata/ingestion/source/sql/mysql.py。代码路径: openmetadata-ingestion/src/metadata/ingestion/ometa/client.py。更新Elasticsearch索引。
2025-02-21 13:19:05
1071
原创 深入理解HttpSecurity的设计
然后我们再来看看AbstractConfiguredSecurityBuilder这个抽象类,他其实是SecurityBuilder的实现,在这儿需要搞清楚他们的关系。类型作用声明了build方法提供了获取对象的方法以及控制一个对象只能build一次除了提供对对象细粒度的控制外还扩展了对configurer的操作然后对应的三个实现类。首先 AbstractConfiguredSecurityBuilder 中定义了一个枚举类,将整个构建过程分为 5 种状态,也可/*** 还没开始构建*/
2025-02-21 09:40:19
1251
原创 React组件化开发详解
1.1 组件化也是类似的思想:如果我们将一个页面中所有的处理逻辑全部放在一起,处理起来就会变得非常复杂,而且不利于后续的管理以及扩展。但如果,我们讲一个页面拆分成一个个小的功能块,每个功能块完成属于自己这部分独立的功能,那么之后整个页面的管理和维护就变得非常容易了。我们需要通过组件化的思想来思考整个应用程序:我们将一个完整的页面分成很多个组件;每个组件都用于实现页面的一个功能块;而每一个组件又可以进行细分;而组件本身又可以在多个地方进行复用;1.2 组件化思想的应用:
2025-02-20 14:38:24
496
原创 SpringSecurity初始化的本质
通过前面第一次请求访问的分析我们明白了一个请求就来后的具体处理流程对于一个请求到来后会通过FilterChainProxy来匹配一个对应的过滤器链来处理该请求。那么这里我们就有几个疑惑。
2025-02-20 12:22:00
935
原创 React入门案例-Hello React案例
为了演练React,我们可以提出一个小的需求:在界面显示一个文本:Hello World点击下方的一个按钮,点击后文本改变为Hello React但是,我们使用React实现之前,先使用原生代码来实现,这样更加方便大家对比React和原生:当然,你也可以使用jQuery和Vue来实现,对它们分别进行对比学习一.开发React必须依赖三个库:react:包含react所必须的核心代码react-dom:react渲染在不同平台所需要的核心代码babel:将jsx转换成React代码的工具。
2025-02-19 20:00:21
836
原创 SpringSecurity请求流转的本质
过滤器链的代理对象:增强过滤器链(具体处理请求的过滤器还不是FilterChainProxy ) 根据客户端的请求匹配合适的过滤器链链来处理请求。ExceptionTranslationFilter是我们看的过滤器链中的倒数第二个,作用是捕获倒数第一个过滤器抛出来的异常信息。当我们的Web服务启动的时候,SpringSecurity做了哪些事情?当系统启动的时候,肯定会加载我们配置的web.xml文件。分析SpringSecurity的核心原理,那么我们从哪开始分析?以及我们要分析哪些内容?
2025-02-19 19:22:22
678
原创 DeepSeek回答DeepSeek问题测试
具体到DeepSeek,如果假设其模型规模与GPT-3类似,生成1000个汉字可能需要几秒到几分钟的时间,具体取决于硬件配置和优化程度。GPT-4:由OpenAI开发,是Generative Pre-trained Transformer系列的最新版本,主要目标是提升自然语言处理的能力,生成高质量文本和对话。这些技术共同构成了深度求索在AGI领域的研究和开发基础,具体的技术细节和应用可能会根据公司的研发进展和市场需求进行调整和优化。使用的硬件(如GPU、TPU等)的性能也会显著影响生成文本的速度和效率。
2025-02-18 15:52:28
794
原创 【第一篇】SpringSecurity的初次邂逅
<head></head><body><h1>登录页面</h1>账号:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="登录"></form></body>
2025-02-17 22:08:30
558
原创 DeepSeek 实用万能提问模板
我要做一个线上教育课程推广方案 (我要做什么),用于吸引更多的学生报名课程(要做什么用),希望能在一个月内使报名人数增长 20%(希望达到什么效果),但担心推广渠道选择不当导致效果不佳(但担心什么问题)。请给我制定一个减肥计划,并说明如何判断这个计划是否有效,比如每周体重下降的合理范围是多少,体脂率应该有怎样的变化等(验证。:先提出一个基础问题,然后根据可能的回答情况,说明自己希望进一步追问的方向或预期,若回答不符合期望,给出调整的方向。:提出对回答的具体期望,如风格、格式、字数等。
2025-02-17 17:32:43
969
原创 OpenMetadata MySQL 数据库使用率提取管道实现解析
数据采集层:从 MySQL performance_schema 和 sys schema 获取原始指标指标处理层:将原始数据转换为统一的使用率指标模型数据存储层:将处理后的指标持久化到 OpenMetadata 服务指标名称数据类型数据源表描述int当前活跃会话数querieslong查询总数rowsReadlong读取行数总量long写入行数总量intslow_log慢查询数量return """SELECTuser,"""
2025-02-15 22:19:52
720
原创 OpenMetadata 获取 MySQL 数据库表血缘关系详解
OpenMetadata 是一个开源的元数据管理平台,支持端到端的血缘关系追踪。对于 MySQL 数据库,OpenMetadata 通过解析表的外键约束、视图定义及查询日志(可选)构建表级血缘。本文结合源码分析其实现机制。外键优先:OpenMetadata 优先通过外键约束构建直接血缘视图解析:通过解析视图的 SQL 定义,使用 ANTLR 语法树分析来源表扩展性:支持自定义应对复杂场景架构优势:将元数据采集与血缘分析解耦,通过实现复用需要访问权限复杂视图可能需要手动补充血缘。
2025-02-15 20:45:03
1673
原创 ConcurrentHashMap源码分析
HashMap和ConcurrentHashMap的存储结构是一致的。ConcurrentHashMap是线程安全的。存储结构关于put和putIfAbsent的区别// put和putIfAbsent都是想ConcurrentHashMap中存储值。// 如果出现key一致的,将新数据覆盖老数据,并且返回老数据// 如果出现key一致的,什么都不做,返回老数据。最只有key不存在时,才会正常的添加数据。
2025-02-13 18:08:11
774
Nginx企业应用安装部署及高级功能详解
2025-03-11
AI+投资图谱:DeepSeek开源模型加速中国AI产业发展及投资机会展望
2025-03-05
DeepSeek赋能职场应用:从提示语技巧到多样化智能场景解决方案
2025-03-05
人工智能AGI领域DeepSeek的应用指南:工作、学习、生活的高效解决方案
2025-02-26
ElasticSearch6.6全文检索.pdf
2024-06-21
Flink快速入门与实战.pdf
2024-06-21
完整版基于HDP搭建大数据学习基础环境.pdf
2024-06-21
Atlas元数据管理-v3.pdf
2024-06-17
DolphinScheduler工作流调度引擎.pdf
2024-06-17
JAVA中可伸缩IO的应用
2024-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人