自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

指尖凉的博客

小码农

  • 博客(74)
  • 资源 (24)
  • 收藏
  • 关注

原创 ShenYu网关注册中心之Zookeeper注册原理

至此,服务端注册流程也就分析完了,主要通过对外提供的接口,接受客户端的注册信息,然后写入到Disruptor队列,再从中消费数据,根据接收到的元数据和URI数据更新admin的选择器、规则、元数据和选择器的handler。是在一开始读取配置的时候就创建了,是客户端注册类,用来将数据发送到注册中心的类,不同的注册方式有不同的实现类,该示例使用。是用于实现客户端注册的接口,会根据注册中心的配置通过SPI方式创建客户端注册类,每一个注册方式都对应一个实现类。项目,所以注册的入口往往在自动装配类中。

2023-12-14 19:18:53 1332

原创 ShenYu网关注册中心之HTTP注册原理

URI注册逻辑基本相似,只是比元数据多了一步探测客户端时候已经启动完成的操作,保证客户端启动完成后再注册URI,后面的逻辑就跟元数据一样了。是在一开始读取配置的时候就创建了,是客户端注册类,用来将数据发送到注册中心的类,不同的注册方式有不同的实现类,该示例使用http方式注册。是用于实现客户端注册的接口,会根据注册中心的配置通过SPI方式创建客户端注册类,每一个注册方式都对应一个实现类。是用于实现服务端注册的接口,会根据注册中心的配置通过SPI方式创建注册类,每一个注册方式都对应一个实现类。

2023-12-14 15:51:43 1057

原创 ShenYu网关Http服务探活解析

Shenyu HTTP服务探活是一种用于检测HTTP服务是否正常运行的机制。它通过建立Socket连接来判断服务是否可用。当服务不可用时,将服务从可用列表中移除。

2023-12-14 11:16:23 1171

原创 Seata AT模式源码解析三(AT模式工作机制)

从一个微服务示例开始,案例采用Seata官方提供的Demo。用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:● 仓储服务:对给定的商品扣除仓储数量。● 订单服务:根据采购需求创建订单。● 帐户服务:从用户帐户中扣除余额。架构图订单服务账户服务仓储服务主业务逻辑这里主要的就是在主业务方法上添加上全局事务注解@GlobalTransactional,代表从这里开始开启全局事务,该方法里的调用不管是本地调用还是远程调用,都在全局事务管辖范围内。执行的流程如下:上一篇说到,当调用被

2023-05-26 15:03:34 559 1

原创 Seata AT模式源码解析二(Seata Client端启动流程)

由于我们一般都是在springboot中使用的,而与springboot集成的我们一般就先看starter的spring.factories文件,看看它的自动装配这里面主要关注SeataAutoConfiguration和SeataDataSourceAutoConfiguration。该配置类要生效的条件是seata.enabled值为true,该值默认就是为true,所以该配置类默认是生效的。

2023-05-26 15:02:41 869

原创 Seata AT模式源码解析一(Seata Server端启动流程)

在DefaultCoordinator里还创建了一个DefaultCore,该类是默认的 TC 事务操作实现,DefaultCoordinator的开启、提交、回滚全局事务,注册、提交、回滚分支事务都是委托给这个类。主要就是创建了5个定时任务,主要用于事务的重试机制,因为分布式环境的不稳定性会造成事务处于中间状态,所以要通过不断的重试机制来实现事务的最终一致性。在阅读源码的时候,有些源码是要细看的,但是有些源码可以大致猜测一下它的作用,就直接略过去了,抓住真正的重点去看。

2023-05-26 14:55:18 1280

原创 Spring扩展之HandlerMethodArgumentResolver(自定义请求参数解析器)

文章目录作用执行时机应用作用HandlerMethodArgumentResolver 是请求参数解析器,不管你是要获取Cookie中的值,Header中的值,JSON格式的数据,URI中的值,还是请求体中的数据,Spring都提供了相对应的参数解析器来提取参数。Spring默认提供了26中参数解析器,比如我们最常用的参数注解 @RequestParam 就是由 RequestParamMethodArgumentResolver 解析的,PathVariableMethodArgumentResolv

2022-05-02 11:04:07 2997

原创 SpringMVC源码解析

Spring版本是5.1.x文章目录代码示例web.xmlapplicationContext.xmlspring-mvc.xmlTestControllerTestServicetest.jsp源码解析创建Spring容器并刷新创建spring容器刷新spring容器创建SpringMVC容器并刷新创建springmvc容器刷新springmvc容器处理@RequestMapping注解,建立url和方法的关系初始化DispacherServletDispacherServlet处理请求根据当前请求.

2022-04-18 16:48:24 590

原创 Spring AOP 源码解析

@EnableAspectJAutoProxyaop入口是@EnableAspectJAutoProxy注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public @interface EnableAspectJAutoProxy { /** * 决定创建代理的方式,默认false,表示根据类是否实现接口来判断

2022-04-15 16:58:56 434

原创 Spring扩展之ApplicationContextAwareProcessor和Aware

作用该类实现了BeanPostProcessor接口,是一个bean后置处理器,是将 ApplicationContext 传递给实现EnvironmentAware 、 EmbeddedValueResolverAware 、 ResourceLoaderAware 、 ApplicationEventPublisherAware 、MessageSourceAware和 ApplicationContextAware接口的BeanPostProcessor实现。执行时机既然是BeanPostPro

2022-04-14 19:12:43 258

原创 Spring扩展之BeanDefinitionRegistryPostProcessor

作用BeanDefinitionRegistryPostProcessor 是 Spring 的扩展点之一。BeanDefinitionRegistryPostProcessor 实现了BeanFactoryPostProcessor 接口,所以它可以实现对 BeanDefinition 的修改。当然BeanDefinitionRegistryPostProcessor 是对 BeanFactoryPostProcessor 功能的扩展,可以动态注册 BeanDefinition,不仅是普通的 bean的

2022-04-14 19:11:04 1382

原创 Spring扩展之BeanFactoryPostProcessor

作用BeanFactoryPostProcessor,BeanFactory后置处理器是 Spring 的扩展点之一。通过自定义 BeanFactoryPostProcessor 可以实现对 BeanDefinition 的修改。执行入口BeanFactoryPostProcessor 的执行入口在容器的刷新方法refresh中@Overridepublic void refresh() throws BeansException, IllegalStateException { sync

2022-04-14 19:08:46 729

原创 Spring扩展之BeanPostProcessor

作用BeanPostProcessor,顾名思义是bean后置处理器,是 Spring 的扩展点之一。通过自定义 BeanPostProcessor 可以实现对 Bean 的修改,用于在bean实例化后,要初始化的前后对bean进行处理public interface BeanPostProcessor { /** * 在初始化前调用 */ @Nullable default Object postProcessBeforeInitialization(Object bean, Stri

2022-04-14 17:02:21 1214

原创 Spring扩展之 @Import 和 ImportBeanDefinitionRegistrar 接口

简介ImportBeanDefinitionRegistrar,该接口主要用来注册beanDefinition。很多三方框架集成Spring 的时候,都会通过实现该接口,配合@Import注解注册特定的bean到spring 容器中,比如开启Feign的@EnableFeignClients。还有一些spring自身的@Enable* 注解,也是通过该方式注册bean定义的,比如@EnableAspectJAutoProxy。使用方式自定义一个ImportBeanDefinitionRegistrar

2022-04-14 15:07:04 1391

原创 Spring扩展之@Import 和 ImportSelector 接口

简介/* * Copyright 2002-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * htt

2022-04-14 11:21:39 780

原创 Spring IOC 源码解析之populateBean(五)

Spring版本5.1.x文章目录populateBeanAutowiredAnnotationBeanPostProcessor#postProcessPropertiesInjectedElement#injectDefaultListableBeanFactory#resolveDependency处理@LazydoResolveDependencyfindAutowireCandidates4.1、获取到所有requiredType的候选beanName4.2、遍历resolvableDepe.

2022-04-13 15:45:14 167

原创 Spring IOC 源码解析之createBean(四)

Spring版本5.1.x文章目录doCreateBean1、创建bean实例2、应用后置处理器MergedBeanDefinitionPostProcessor3、判断是否要提前暴露该bean4、提前暴露该bean的ObjectFactory5、进行属性填充6、处理 bean 初始化完成后的各种回调,比如后置处理,init方法等7、如果允许提前曝光实例,则进行循环依赖检查8、注册用于销毁的bean@Overrideprotected Object createBean(String beanNa.

2022-04-13 15:33:07 269

原创 Spring IOC 源码解析之getBean(三)

Spring版本5.1.x文章目录1、将bean名称转换为真正的名称2、从单例map中尝试获取bean3、从上一步获取到的对象中得到真正的bean,因为有可能是FactoryBean4、针对prototype的bean5、检查一下这个 BeanDefinition 在容器中是否存在6、将bean标记为已创建(或将要创建)7、重新获取合并bean定义并检查8、初始化要依赖的Bean9、创建单例bean(重点)10、创建prototype实例11、创建除sington和prototype其他scope的b.

2022-04-13 15:24:05 211

原创 Spring IOC 源码解析之refresh(二)

Spring版本5.1.x文章目录prepareRefreshobtainFreshBeanFactoryprepareBeanFactorypostProcessBeanFactoryinvokeBeanFactoryPostProcessorsregisterBeanPostProcessorsinitMessageSourceinitApplicationEventMulticasteronRefreshregisterListenersfinishBeanFactoryInitializati.

2022-04-13 15:23:37 235

原创 Spring IOC 源码解析之创建应用上下文(一)

示例Messagepackage com.huang.sourcelearn;import org.springframework.stereotype.Component;@Componentpublic class Message { public Message() { System.out.println(123); }}Studentpackage com.huang.sourcelearn;public class Student { private

2022-04-13 15:22:49 162

原创 Spring之事务注解@Transactional解析(二)

这里接上一篇Spring之事务注解@Transactional解析(一)来分析下Transactionlnterceptor 的事务增强逻辑。入口在 Transactionlnterceptor 类的 invoke 方法:@Override@Nullablepublic Object invoke(MethodInvocation invocation) throws Throwable { // Work out the target class: may be {@code null}.

2022-04-11 18:21:30 1098

原创 Spring之事务注解@Transactional解析(一)

代码示例@Configuration@EnableTransactionManagementpublic class DataSourceConfiguration { @Bean public BasicDataSource getBasicDataSource() { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver")

2022-04-11 10:48:31 2371 1

原创 Spring Cloud Alibaba Sentinel无法加载到Nacos中的规则配置解决方案

Spring Cloud Alibaba Sentinel在配置规则持久化时,按照官网的教程使用nacos作为数据源来配置,但在完成后,启动应用并调了一次接口后,发现sentinel-dashboard控制台并没有加载到Nacos中的规则配置信息,日志里没有异常信息,但有一句警告信息:converter can not convert rules because source is empty,后来我尝试在数据源的nacos配置中加上namespace id,因为我不是在默认的namespace里,结果就可

2021-11-16 14:23:33 9296 10

原创 Spring Cloud Eureka源码解析之自我保护机制( 八)

在开发环境时,我们经常可以在eureka页面上看到这么一句红色的话这就代表了触发了自我保护机制,eureka不会再剔除过期的服务。默认情况下,当EurekaServer在一定时间内(默认90秒)没有接收到某个客户端实例的心跳,EurekaServer将会下线该实例。但是当网络分区故障发生或网络偶尔抖动时,客户端与EurekaServer之间无法正常通信,此时不应该下线实例。Eureka通过“自我保护机制”来解决这个问题:当EurekaServer短时间内丢失过多客户端时,这个节点就会进入自我保护模式。

2021-10-15 15:51:29 276

原创 Spring Cloud Eureka源码解析之服务剔除(七)

上篇讲到的是服务正常下线的情况,如果遇到网络不稳定或机器宕机了,导致了server一直接收不到服务的心跳,这时就可以认为该服务实例故障了,需要剔除了。在EurekaServer启动流程一节初始化eureka server上下文中,有这样一行代码this.registry.openForTraffic(this.applicationInfoManager, registryCount);这行代码就会创建一个定时剔除过期服务的定时任务@Overridepublic void openForTraf

2021-10-15 15:51:01 234

原创 Spring Cloud Eureka源码解析之服务下线(六)

当Eureka Client 服务关闭停止时,会触发 DiscoveryClient的shutdown关闭eureka-client(正常关闭,非宕机等的非正常关闭)@PreDestroy@Overridepublic synchronized void shutdown() { if (isShutdown.compareAndSet(false, true)) { logger.info("Shutting down DiscoveryClient ...");

2021-10-15 15:50:12 209

原创 Spring Cloud Eureka源码解析之服务注册列表拉取(五)

在Eureka Client启动流程一文讲到Client刚启动时会全量拉取一次,后面会开启一个定时任务,根据条件以及本地缓存情况全量拉取或增量拉取private boolean fetchRegistry(boolean forceFullRegistryFetch) { Stopwatch tracer = FETCH_REGISTRY_TIMER.start(); try { // 如果增量被禁用或者是第一次获取(本地缓存为空),则全量获取 Appli

2021-10-15 15:49:45 617

原创 Spring Cloud Eureka源码解析之服务续约(四)

EurekaClientEureka Client启动时会创建一个每隔30s向Eureka Server发送心跳的定时任务如果续约的响应状态码是404,则需要重新去注册Eureka Server接收续约请求处理续约请求的是InstanceResource#renewLease方法@PUTpublic Response renewLease( @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication,

2021-10-15 15:49:19 114

原创 Spring Cloud Eureka源码解析之服务注册(三)

EurekaClient在Eureka Client启动流程一节的最后说到,instanceInfoReplicator.start(clientConfig.getInitialInstanceInfoReplicationIntervalSeconds());里有服务注册的逻辑,所以就从这里开始看public void start(int initialDelayMs) { // 将started设置为true,表示已启动了 if (started.compareAndSet(fa

2021-10-15 15:48:48 136

原创 Spring Cloud Eureka源码解析之Eureka Client启动流程(二)

看下EurekaClient的自动装配类EurekaClientAutoConfigurationEurekaClientConfigBean包含了eureka.client的配置@Bean@ConditionalOnMissingBean(value = EurekaClientConfig.class, search = SearchStrategy.CURRENT)public EurekaClientConfigBean eurekaClientConfigBean(Configurable

2021-10-15 15:48:20 180

原创 Spring Cloud Eureka源码解析之Eureka Server启动流程(一)

通过在启动类上添加@EnableEurekaServer注解启用EurekaServer@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(EurekaServerMarkerConfiguration.class)public @interface EnableEurekaServer {}该注解引入了一个配置类EurekaServerMarkerConfiguration@Con

2021-10-15 15:47:04 220

原创 RocketMQ源码解析十三(事务消息流程)

代码示例

2021-09-28 16:09:03 175

原创 RocketMQ源码解析十二(顺序消息流程)

顺序消费稍微复杂点,主要是顺序消费对重平衡以及消息拉取都有影响。

2021-09-28 16:03:33 351

原创 RocketMQ源码解析十一(Consumer上报消费进度流程(集群模式))

Consumer在消费者启动过程中,会启动MQClientInstance,而MQClientInstance中会启动多个定时任务,其中就包括定时上报消费进度:

2021-09-28 15:58:07 280

原创 RocketMQ源码解析十(定时消息(延时消息)流程)

定时消息是指消息发送到Broker后,并不立即被消费者消费而是要等到特定的时间后才能被消费,RocketMQ不支持任意的时间精度。发送消息时,只要给消息设置一个延时级别message.setDelayTimeLevel(3),消息发送到Broker后会延时固定时间后才可以被消费到。延时有一下几个级别:...

2021-09-28 15:55:15 567 2

原创 RocketMQ源码解析九(消息消费失败重试流程)

Consumer直接从ConsumeMessageConcurrentlyService发送重试消息方法开始

2021-09-28 15:52:20 397

原创 RocketMQ源码解析八(Consumer并发消费消息)

回顾一下消息拉取,PullMessageService 负责对消息队列进行消息拉取,从远端服务器拉取消息后将消息存人ProcessQueue消息队列处理队列中,然后调用ConsumeMessageService#submitConsumeRequest方法进行消息消费,使用线程池来消费消息,确保了消息拉取与消息消费的解耦。RocketMQ使用ConsumeMessageService来实现消息消费的处理逻辑。RocketMQ支持顺序消费与并发消费,这里将重点关注并发消费的消费流程,顺序消费将在之后的文档分析

2021-09-28 15:49:31 622

原创 RocketMQ源码解析七(Consumer拉取消息流程)

这里基于PUSH模式和集群模式来分析消息拉取机制。在Consumer启动的时候,会开启一个线程,专门用来拉取消息。

2021-09-28 15:46:18 604

原创 RocketMQ源码解析六(Consumer重平衡流程)

重平衡服务是在Consumer启动的时候启动的一个后台线程,每次重平衡后过20s后再发起一次重平衡

2021-09-28 15:42:36 569

原创 RocketMQ源码解析五(Consumer启动流程)

Consumer示例:

2021-09-28 15:38:46 243

json的jar包

使用JSON时要使用的jar包

2017-08-11

冰点文库下载器

无需积分就可以自由下载百度、豆丁、丁香、MBALib、道客巴巴、Book118等文库文档,无需注册和登录。下载的文档最终生成高清晰度的pdf格式文档。 1. 支持百度、豆丁、丁香、畅享、MBALib、道客巴巴、Book118等文库文档。 2. 无需积分也无需登录就可以自由下载百度文库和豆丁文库。 3. 支持多个任务同时下载和断点续传下载。 4. 生成的pdf文档与原始文档质量等同。

2017-07-17

贪吃蛇小游戏

JavaScript编写的贪吃蛇小游戏

2017-05-21

k-means聚类算法

Java编写的k-means聚类算法,从文件读取数据,可视化界面。

2017-05-21

数据挖掘中的Apriori算法

Java写的Apriori算法,可视化界面

2017-05-21

2-1多路选择器的Verilog HDL程序

2-1多路选择器的Verilog HDL程序

2017-03-26

人工智能原理及其应用(第3版)王万森编著 [电子教案(PPT版本)]

王万森编著 人工智能原理及其应用(第3版)1-9章全部PPT

2017-03-07

计算机图形学——基于MFC三维图形开发 孔令德版

内含计算机图形学——基于MFC三维图形开发 孔令德版的课件以及第二章示例的完整源代码

2017-03-06

C++ Qt设计模式(第2版) PDF

《C++ Qt设计模式(第2版)》是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等基础知识,目的是为零基础的C++初学者铺垫一条学习面向对象编程的快捷之路;第二部分讲解内存访问、继承等重要的C++特性,是前一部分的延伸和拓展;第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可进一步启发读

2017-01-20

JavaWeb-学生在线选课系统实例源码下载

采用eclipse和MySQL开发的学生在线选课系统。功能如下: 1、权限控制:采用过滤器实现用户登录和权限的控制。同时,每个学生一个账户(学号)可以登录系统进行个人信息的管理,并完成选课操作;管理员(固定为admin用户)可以管理全部学生信息,查看每个学生的选课情况,并生成统计表。 2、数据库要求:包括学生基本信息表、课程信息表、学生选课信息表。 3、学生信息管理要求 (1)信息项:学号、姓名、身份证号码、班级、性别(男、女)、登录密码(加密存储,加密方法网上找一个)、籍贯(省份选择)、家庭住址、联系电话、兴趣爱好(运动、读书、音乐、旅游、社交); (2)学生信息管理:有显示学生基本信息的界面,每个学生只可以打开自己的信息界面;界面中,如果是学生身份,可以修改除了学号、姓名之外的全部信息。如果是管理员身份,可以全部管理,并提供学生信息的添加、修改和删除功能。 (3)学生信息列表:有列表显示学生信息的界面;如果是学生身份,列表只有本人一条信息;如果是管理员,列表可以有全部学生。可以按照学号、姓名快速查询功能。 4、选课中心要求: (1). 二级菜单:选课操作、选课列表 (2). 课程的信息项:课程编号、课程名称; (3). 学生选课操作:只有学生可用,管理员不可用。列表显示当前学生没有选中的课程名称,一次可以选取1个或者多个课程,点击保存即可完成选课。 (4). 学生选课列表:列表显示学生已经选中课程的信息;如果是学生身份,列表只有本人已经选中课程的列表;如果是管理员,列表可以已经有选课记录的学生。点击学生学号后,可以查看该学生的选课记录。 5、统计分析要求 (1). 二级菜单:学生信息统计、选课情况统计; (2).学生信息统计:统计每个学生的基本信息,包括学生籍贯统计(籍贯、学生数量)、爱好统计(爱好、学生数量)两个统计。 (3).选课情况统计:统计每个学生的选课数量,注意:没有选课的学生也要显示,按照选课数量倒序排列。 这个是我的JavaWeb课程设计作业,由于能力有限,这个系统的一些细节还不够完善,比如没有密码加密和分页,页面不够美观,以后会完善的。

2017-01-20

QT中文帮助文档

QT中文帮助文档

2017-01-08

qt 高级编程(英文版)PDF

qt 高级编程(英文版)PDF

2017-01-08

mysql-connector-java-5.1.40.tar

连接MySQL的驱动

2016-12-28

利用jsp生成图片验证码

利用jsp生成图片验证码,没有用到servlet

2016-12-28

Java ee6 api文档

Java ee6 api文档

2016-12-26

Java API 1.8英文版

Java API 1.8英文版

2016-12-26

Java API 1.6中文版

Java API 1.6中文版

2016-12-26

mysql-connector-java-5.1.34-bin.jar

Java连接mysql数据库的驱动

2016-12-26

计算机网络课件-谢希仁

计算机网络课件-谢希仁

2016-12-25

基于VB的库存销售管理系统

使用Visual Basic 6.0和SQL Server 2014开发库存销售管理系统

2016-12-22

基于VB的出入库销售系统

使用Visual Basic 6.0和SQL Server 2014开发库存销售管理系统

2016-12-21

Java人员信息管理系统

利用Java和MySQL开发的人员信息管理系统

2016-12-21

基于Java的人员信息管理系统

基于Java的人员信息管理系统

2016-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除