- 博客(81)
- 资源 (2)
- 收藏
- 关注
原创 32.SpringCloud Alibaba Seata 分布式事务解决方案
从spring-cloud-alibaba官网,文档中Spring Cloud Alibaba also provide rich examples.点示例进入github地址:https://github.com/apache/incubator-seata官网地址:https://seata.apache.org/zh-cn/docs/overview/what-is-seata/让我们想象一个传统的整体式应用程序。它的业务由 3 个模块组成。它们使用单个本地数据源。关系型数据库,ACID。本地事务将保
2025-05-27 16:44:46
894
原创 31.SpringCloud Alibaba Sentinel
除了流量控制以外,降低调用链路中的不稳定资源也是 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和Hystrix里面描述的问题是一样的。资源是 Sentinel 中的核心概念之一。最常用的资源是我们代码中的 Java 方法。当然,您也可以更灵活的定义你的资源,例如,把需要控制流量的代码用 Sentinel API和包围起来即可。在下面的例子中,我们将作为资源(被保护的逻辑),用 API 包装起来。// 配置规则.
2025-05-27 16:44:04
367
原创 30.SpringCloud Alibaba Nacos
Nacos官网https://nacos.io/Nacos是阿里巴巴出品,基于Java开发的用于构建云原生应用的动态服务发现、配置管理和服务管理平台。支持的主流类型服务包含K8s、grpc、dubbo、springcloud。服务发现和服务健康监测√基于DNS和基于RPC的服务发现。√支持实时的健康检查,阻止向不健康的主机或服务实例发送请求。动态配置服务√可以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态DNS服务服务和元数据管理阿里巴巴10年生产验证的内部产品,成熟稳定,国内互联网公司
2025-05-27 16:43:15
472
原创 21.SpringCloud快速入门
通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。特点:通过多台计算机完成同一个工作,达到更高的效率。多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。分布式系统是一组计算机,通过网络相互连接传递消息与通信后并协调它们的
2025-05-27 16:42:11
405
原创 13.Dubbo多协议特性
之前请求来了,都是基于进程来的,如果有10k请求来,就需要创建1万个进程来处理请求,单机都无法承受的I/O多路复用来解决C10K问题。
2025-05-27 16:41:19
424
原创 12.Dubbo并发控制、多协议特性
如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。如果用 IO 线程处理事件,又在事件处理过程中发起新的 IO 请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。IO线程。
2025-05-27 16:40:41
337
原创 10.Dubbo配置特性
外部化配置目的之一是实现配置的集中式管理,这部分业界已经有很多成熟的专业配置系统如 Apollo, Nacos 等,Dubbo 所做的主要是保证能配合这些系统正常工作。所有配置最终都将转换为 URL 表示,并由服务提供方生成,经注册中心传递给消费方,各属性对应 URL 的参数,参见配置项一览表中的 “对应URL参数” 列。的外部化存储,配置中心更适合将一些公共配置如注册中心、元数据中心配置等抽取以便做集中管理。(包括应用配置、注册中心配置、服务配置等),以完成服务的暴露和引用流程。中的所有配置项遵循一种。
2025-05-27 16:39:03
929
原创 9.Dubbo高性能特性解析
Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
2025-05-27 16:38:33
546
原创 4.Zookeeper高阶原理
集群中的follower服务器(F)与leader服务器(L)之间完成初始化同步连接时能容忍的最多心跳数(tickTime的数量)。创建的myid文件是没有后缀的,文件内容只包含myid对应的值。这个myid在集群中必须是唯一的,其值应该在1到255之间。在dataDir目录下创建myid文件,一行只包含机器id的文本。id在集群中必须是惟一的,其值应该在1到255之间。集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
2025-05-27 16:37:16
539
原创 2.Zookeeper入门
简介:Apache Zookeeper是一种用于分布式应用程序的功性能协调服务。提供一种集中式信息存储服务。特点:数据存在内存中,类似文件系统的属性结构(文件和目录),高吞吐量和低延迟,集群高可靠。作用:基于Zookeeper可以实现分布式统一配置中心、服务注册中心、分布式锁等功能的实现;
2025-05-27 16:35:24
870
原创 22.Mybatis源码解读
事务工厂Transaction定义了创建Transaction的两个方法:通过指定的Connection对象创建Transaction通过数据源DataSource来创建Transaction与JDBC 和MANAGED两种Transaction相对应,TransactionFactory有两个对应的实现的子类:ManagedTransactionFactory、JdbcTransactionFactory,TransactionFactory很容易获取到Transaction对象实例。
2025-05-26 13:38:51
888
原创 21.Mybatis进阶
一个半自动化的ORM框架(Object Relation Mapping)。与其他ORM框架对比,它对SQL的控制更加灵活,可以写复杂的SQL语句。Hibernate、JPA无法灵活方便的做到SQL灵活控制,特别是动态SQL语句。通过docker安装mysql,并创建测试表test创建实体类实体User的映射文件创建配置文件参数配置文件config.propertiesMybatis配置文件mybatis-config.xml测试加载资源的方式有两种:SpringBoot方式使用M
2025-05-26 13:37:22
1064
原创 20.2.SpringBoot扩展-SPI机制
首先在java中定义了接口,并没有具体的实现,具体的实现都是由不同厂商来提供的。定义标准,就是定义接口。比如接口。
2025-05-26 13:32:25
561
原创 20.1.SpringBoot扩展-Java日志组件介绍
slf4j全称为Simple Logging Facade for JAVA,java简单日志门面。类似于Apache Common-Logging,是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。但是,他在编译时静态绑定真正的Log库。使用SLF4J时,如果你需要使用某一种日志实现,那么你必须选择正确的SLF4J的jar包的集合(各种桥接包)。
2025-05-26 13:31:46
669
原创 20.SpringBoot源码解读
/针对类,Annotation注解方式>) {>) source);return;//针对Resource,xml配置return;//针对包,sanner扫描return;//针对字符串,转换为类,resource,包return;
2025-05-26 13:23:34
1361
原创 19.SpringBoot四大神器之CLI和手写SpringBoot
groovy官网:http://www.groovy-lang.org/快速入门:https://www.jianshu.com/p/e8dec95c4326 Groovy 是 Apache 旗下的一门基于 JVM 平台的动态/敏捷编程语言,在语言的设计上它吸纳了Python、Ruby 和 Smalltalk 语言的优秀特性,语法非常简练和优美,开发效率也非常高(编程语言的开发效率和性能是相互矛盾的,越高级的编程语言性能越差,因为意味着更多底层的封装,不过开发效率会更高,需结合使用场景做取舍)。
2025-05-26 13:22:52
1003
原创 18.SpringBoot四大神器之Stater&AutoConfiguration
如果我们不想使用Spring Boot中的任何可用条件,我们还可以通过扩展SpringBootCondition类并重写getMatchOutcome()方法来定义自定义条件。
2025-05-26 13:22:02
781
原创 17.Spring Boot快速上手 及 Stater机制原理
Spring Boot 可以帮助您创建可以运行的、独立的、生成级的、基于Spring的应用程序。大多数Spring Boot 应用程序只需要很少的Spring的配置。 可以使用Spring Boot创建可以通过使用 或者使用传统的容器部署的方式来启动Java应用程序。还可以通过spring的脚手架(命令行工具)来运行spring程序。 Spring Boot2.7.2需要Java8,并且兼容Java18(包含Java18),还需要Spring Framework 5.3.21或更高版本。Sp
2025-05-26 13:21:26
1105
原创 15.SpringMVC高级应用实战及源码解读
MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分层,分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。Java领域典型的MVC实现及框架:Servlet + jsp Servlet是曾经唯一的Java Web编程规范,现在出现了竞争者Reactive为尽量少依赖servlet api,提高可测试性、可复用性而发展的:Struts1 Struts2已成历史SpringMVc当下最流行的MVC框架,依托spring框架带来的强大开发便利性
2025-05-26 13:19:50
825
原创 13.Spring源码解读-事务监听及注解解析
官网:https://docs.spring.io/spring/docs/5.2.8.RELEASE/spring-framework-reference/data-access.html#transaction-event自定义spring事件事件监听器发布事件启动后,当触发回滚时,打印信息:那么它在哪里处理的呢?整体而言Spring的事件机制是通过发布订阅来达到的,如图根据前面学习的内容,使用注解的时候,需要容器构造函数中默认注册一些bean定义它需要注册一个事件监听处理器,EventLis
2025-05-25 09:27:14
707
原创 12.Spring 源码—事务管理处理过程
在AbstractPlatformTransactionManager.getTransaction打断点第一次进getTransaction,看调用栈// 断点设置地方,事务advice增强处理// AOP代理增强的部分,下面全部都是事务管理增强的AOP代理实现// 调用service层方法,UserService bean对象是被CGLIB代理后的对象接下来跟代码,重点是要找到Connection绑定到线程,绑定到了哪里查看调用堆栈信息// 将连接绑定到ThreadLocal上。
2025-05-24 09:56:46
1028
原创 11.Spring 源码—事务管理解析
都有哪些信息?ISOLATION_DEFAULT:使用的是底层(数据库)默认的隔离级别,不同的数据库默认隔离级别不同,数据库也是可以配置这个默认属性的。接口中定义了的事务管理行为。请仔细看源码中每个方法的的注释了解AbstractTransactionStatus、DefaultTransactionStatus中定义了哪些属性@Nullable//...省略其他代码@Nullable// 事务对象@Nullable// 被该事务挂起的事务资源//...省略其他代码。
2025-05-24 09:56:15
1016
原创 10.Spring 源码—AOP代理创建及织入解析
AbstractAutoProxyCreator是抽象的自动代理构造器,回顾它的体系AutoProxyCreator 是一个BeanPostProcessor、还是BeanFactoryAware,还是ProxyConfig。通过BeanPostProcessor机制,它将负责创建代理对象。符合我们前面的认知,在SmartInstantiationAwareBeanPostProcessor、InstantiationAwareBeanPostProcessor两个接口中都有对应的实现方法。
2025-05-24 09:55:39
530
原创 8.依赖注入解读
循环依赖总结一下(假设A,B之间循环依赖):一级缓存singletonObject,也就是常说的单例池,是个Map二级缓存earlySingletonObjects,也就是提前一点的单例池,哈哈,字面翻译,也是Map三级缓存singletonFactories,这个Map有点特殊,因为这个Map的value存放的是一个lambda表达式1、单例池不能存放原始对象,只能存放经过完整生命周期的对象,也就是java bean。
2025-05-24 09:54:03
888
原创 7.IOC容器源码解读—Bean实例创建过程
结合《实例化Bean的过程图》第11步,解读下面代码。/***/// 实例化类型转换服务// 确保BeanFactory持有嵌入值的解析器if (!// 提前实例化LoadTimeWeaverAware beans// 冻结配置// 实例化单例bean@Override// 获得标准名称// 首先从单例Bean中获取else {// 单例bean不直接返回,当前的bean有可能是工厂bean,Object需要从工厂bean中获取else {
2025-05-24 09:53:28
909
原创 6.IOC容器源码解读—核心流程原理
这个方法用来加载刷新配置,这些配置可能来自,java配置、xml文件、properties文件,关系型数据库,或者其他格式。 作为一个启动方法,它应当在初始化失败后销毁已经创建了的单例,防止占着资源不用。也就是说调用这个方法,要么没有所有的单例被创建、要么没有没有单例对象创建。/**whichfile, a* 这个方法用来加载刷新配置,这些配置可能来自,java配置、xml文件、properties文件,关系型数据库,或者其他格式。
2025-05-24 09:52:56
980
原创 5.IOC容器源码解读—Bean定义加载过程解读(二)
BeanDefinitionReaderUtils#registerBeanDefinition方法// 通过bean工厂注册bean定义// 给beanName和别名绑定= null) {
2025-05-24 09:52:17
615
原创 4.IOC容器源码解读—Bean定义加载过程解读
BeanDefinition,bean定义的接口行为描述。BeanDefinition接口中定义了Bean定义的相关行为,我们从中可看到很多熟悉的项。如对里面的信息项不熟,请查看代码的注释。同时请对比看xml配置的dtd或xsd,在beans.jar中org.springframework.beans.factory.xml 包下:spring-beans.dtd 或 spring-beans.xsd。/***/......Bean定义的信息最终注册到哪里去了呢?
2025-05-24 09:51:40
897
原创 3.Spring 源码解读—IOC容器初始化过程
自1.1.3版本提供的抽象实现,提供bean工厂刷新方法的实现,可以配置是否允许重写bean定义以及循环依赖。AbstractRefreshableConfigApplicationContext子类则增加了资源配置入口,通过Environment解析出配置的真实资源路径字符串。它的子类实现是指定了资源的加载方式,比如XML资源方式的子类实现:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext。
2025-05-24 09:50:58
945
原创 1.Spring基础
默认情况下,配置类使用@Bean方法的名称作为生成的 bean 的名称。但是,可以使用name属性覆盖此功能,如以下示例所示:value和name等同,可以使用多个别名每个bean都有一个或者多个标识符,这些标识符在容器中必须是唯一的,一个bean通常只有一个标识符,如果需要多个标识符,则可以将其余的视为别名;在基于 XML 的配置元数据中,您可以使用id属性、name属性或两者来指定 bean 标识符。该id属性可让您准确指定一个 id;如果要为 bean 引入其他别名,也可以在name。
2025-05-24 09:49:33
708
原创 21.行为型模式-观察者模式
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
2025-05-24 09:48:01
369
原创 19.行为型模式-责任链模式
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
2025-05-24 09:47:28
226
原创 17.行为型模式-策略模式
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
2025-05-24 09:46:47
535
spring-servlet
2015-04-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人