自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java相关的定时任务

就现在而言,关于定时任务有各种各样的架构:java 定时器类【Timer】,spring定时器类【@Scheduled】,quartz分布式定时器类,xxl-job分布式任务调度平台。xxl-job是一款轻量级定时任务可以分布式部署的调度平台。整体来说,xxl-job就是quartz的一个增强版,其弥补了quartz不支持并行调度,不支持失败处理策略和动态分片的策略等诸多不足,同时其有管理界面,上手比较容易,支持分布式,适用于分布式场景下的使用。两者相同的是都是通过数据库锁来控制任务不能重复执行。

2024-04-15 14:11:33 166

原创 Dubbo核心模型之Invoker

Dubbo中invoker是provider和consumer实现RPC调用的关键,invoker的构建过程是Dubbo服务的init初始化过程。invoker#invoke的调用是Dubbo服务的call调用过程。因此,这里分析invoker模型,主要是provider和consumer端的初始化过程。

2024-04-07 18:07:15 888

原创 事务同步管理器TransactionSynchronizationManager

截止当前事务同步管理器处理的资源主要包括:DataSource获取的数据库连接以及SqlSessionFactory。

2024-03-19 11:11:19 631

原创 事务传播机制

mandatory:强制性的。suspend:暂停、终止。

2024-03-18 16:48:16 254

原创 Dubbo之消费端服务RPC调用

ReferenceAnnotationBeanPostProcessor重置服务目标类在IOC注册表class的属性为。

2024-02-23 17:39:49 725 4

转载 Java字节码文件和二进制文件的区别与联系

3、总结:字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行。1、class文件:里面存放了许多16进制的字节(码)(如二进制字节码可表示为:010101101),如下图所示;但是这个文件,是二进制的,例如图形文件等都属于二进制文件。2、javap -v class文件名 > 输出文件名 命令:将class文件,翻译成可读懂的字节码指令文件,里面包含了各种各样的指令,部分内容如下图所示。

2024-02-21 18:51:03 106

原创 Dubbo Spi机制

抽象这三个能力是为了实现 Dubbo 的多实例支持,FrameworkModel 是实现类似 JVM 租户级别的隔离,ApplicationModel 是为了实现一个机器上发布多个应用(如 demo-application1 和 demo-application2 一起发布),ModuleModel 是为了实现服务生命周期的独立管理(如一个 demo-application 可以由多个 Spring 容器共同提供)。DubboSpringInitializer触发作用子类加载扩展类就是利用该类得到类。

2024-02-01 19:43:32 300

原创 Dubbo服务提供端核心模型之Invoker

注册监听器DubboDeployApplicationListener,并由此监听器发送ContextRefreshedEvent事件。zk注册中心注册的客户端:CuratorZookeeperClient。

2024-02-01 16:51:23 987

原创 3.Feign代理目标方法执行流程

总体而言Feign调用目标方法存在两种形式:代理方式以及域名直接调用方式。

2024-01-22 16:35:33 423 1

原创 算法之回溯&动态规划&贪心

当然动态规划也可以通过回溯暴力求解。回溯使用场景:求出所有可能的解。动态规划使用场景:寻求最优解。

2024-01-16 17:47:59 467

原创 2.Dubbo之架构源码公共知识

Dubbo SPI 以 JDK SPI 为参考做出了改进设计,进行了性能优化以及功能增强,Dubbo SPI 机制的出现解决了上述问题。策略ServicesLoadingStrategy最终利用类加载器加载候选类资源的URL,得到候选类的二进制流,逐行读取,…@SPI注解可以指定生效候选类的扩展名,否则扩展名选值为类名。候选类可以通过注解@Extension指定当前候选类的扩展名。Dubbo SPI 的配置做出了改进,在 Dubbo 中有三种不同的目录可以存放 SPI 配置,用途也不同。

2023-11-30 18:57:28 536

原创 SpringBoot中AbstractAutoProxyCreator类解析

AbstractAutoProxyCreator如类名所示其核心功能是为代理。作为BeanPostProcessor接口的实现类实现了利用 AOP 代理包装每个符合条件的 bean,在调用 bean 本身之前委托给指定的拦截器。此类区分“通用”拦截器:为其创建的所有代理共享,以及“特定”拦截器:每个 bean 实例唯一。不需要有任何通用拦截器。如果有,则使用 InterceptorNames 属性来设置它们。

2023-11-15 11:26:48 2

原创 sleuth链路追踪

结合Feign研究sleuth。

2023-11-09 19:22:26 105 4

原创 Configuration涉及的Full&Lite模式

前提:使用注解@Configuration是为了提前初始化一批特性,不要将其作为@Component注解特性使用。

2023-11-09 12:06:39 200

原创 日志门面技术

利用LogFactoryImpl实例化具体的日志框架。其中,如果存在log4j依赖则选择Log4JLogger,Jdk14Logger是指JDK本身集成的JUL,否则使用JCL本身自带的日志实现之SimpleLog。

2023-11-05 15:35:00 363

原创 ResourceLoader原理

UrlResource处理对象为外部资源,即网站、图片等协议为Http的外部资源【例如,无法处理jar包】。底层是JDK完成对资源的远程获取。判断是否为文件:查看url协议是否file or vfsfile or vfs,否则直接返回UrlResource。

2023-11-01 19:35:20 121

原创 源码解析SpringMVC之RequestMapping注解原理

利用之接口特性来完成请求 uri & handler 之间的映射关系。具体详情参考其父类。

2023-10-27 14:55:12 415 1

原创 源码解析SpringMVC处理请求的完整流程

EnableWebMvcConfiguration自动装配类负责加载SpringMVC涉及的等。WebMvcAutoConfigurationAdapter自动装配类负责加载SpringMVC涉及的静态资源等Web资源。例如LocaleResolver、视图解析器InternalResourceViewResolver、ContentNegotiatingViewResolver等。

2023-10-19 18:52:07 229

原创 SpringMVC之全局异常拦截器

ControllerAdvice是一个组合注解,内部存在@Component。所以也是Spring启动过程中被扫描的对象。

2023-10-19 17:50:05 582

原创 Autowired & Resource注解一站式彻底搞懂

可以使得类InstantiationAwareBeanPostProcessorAdapter选择性实现接口部分抽象方法。没有实现的接口方法,其子类必须实现。

2023-10-18 11:23:52 135

原创 SpringCloud之Resilience4j熔断器指标统计方式

指标统计的方式是被类CircuitBreakerMetrics维护的。并且每个ID【某个Feign客户端中某个方法】与该类是一一对应的关系。

2023-10-09 11:30:53 150

原创 SpringCloud之Resilience4j熔断器源码解析

Resilience4j是受Hystrix启发而做的熔断器,通过管理远程调用的容错处理来帮助实现一个健壮的系统。resilience4j提供了更好用的API,并且提供了很多其他功能比如Rate Limiter(限流器)、Bulkhead(舱壁隔离)、熔断器、重试、缓存、限时器等。作为新一代的熔断器,Resilience4j有很多优势,比如依赖少,模块化程度较好等优势。用户可参与的设置:limit刷新周期、刷新周期的权限限制、默认等待权限持续时间。用户可参与的设置:允许的最大并行数、线程等待的最大时间。

2023-10-08 10:23:19 324

原创 SpringCloud之子容器工厂类NamedContextFactory

NamedContextFactory 可以创建一个子容器(或者说子上下文),每个子容器可以通过 Specification 定义 Bean。

2023-09-29 19:15:27 342

原创 Actuator之Management

在健康检查spring-boot-starter-actuator包下存在一个与Management相关的自动配置类ManagementContextAutoConfiguration。如果ManagementServerProperties配置类的端口号不等于配置类的端口号时,才能触发自动配置类ManagementContextAutoConfiguration。其实是被managementContext其父ApplicationContext完成实例化。

2023-09-05 16:35:10 3

原创 SpringBoot之@RefreshScope

注解RefreshScope时一个组合注解。

2023-08-28 20:11:56 675

原创 服务治理consul之配置中心

作为配置中心是通过核心类实现的。

2023-08-25 16:41:11 778

原创 6.RocketMQ之文件查询索引文件IndexFile

根据消息ID来查找消息,consumequeue 中没有存储消息ID,如果不采取其他措施,又得遍历 commitlog文件了,indexFile就是为了解决这个问题的文件。

2023-08-21 16:56:25 225

原创 6.RocketMQ之消费索引文件ConsumeQueue

【代码】6.RocketMQ之索引文件ConsumeQueue。

2023-08-15 20:28:19 730

原创 内存分析工具之Mat

通过查看MatClazz引用的类之byte数组之bytes。其单个数组占用的字节数为10256。整个内存MatClazz中属性bytes占用的byte[]字节数为97746376,与直方图统计趋近。当前线程栈直接引用的对象为ArrayList,其中ArrayList中元素MatClazz等引用没有释放导致GC 无法释放。自定义类MatClazz内存个数为9521。当前对象占用内存为16个字节。不包括其属性bytes的字节数。查看得知,此次内存溢出是由线程栈中局部变量等对象未释放导致的。

2023-07-31 14:05:29 562

原创 redis相关异常之RedisConnectionException&RedisCommandTimeoutException

本文只是分析Letture类型的Redis 池化连接出现的连接超时异常、读超时异常问题。

2023-07-26 11:28:05 1078

原创 redis之Springboot源码解析

Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

2023-07-17 19:49:58 642

原创 redis之bitmap&hyperloglog&Geo

由0、1状态表现的二进制位的bit数组。使用场景:是否登录过、京东每日签到送京豆、电影广告是否被点击播放过等。用String类型作为底层数据结构实现的一种统计二值状态的数据类型。位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(称之为索引)。Bitmap支持的最大位数是2^32位。可以极大的节约存储空间,使用512M内存可以存储多达42.9「2的32次」亿的字节信息。

2023-07-16 17:02:15 35

原创 2、Netty之Client端注册&Connect事件&Read事件的关注

客户端启动流程基本跟server端保持一致。pipeline.invokeHandlerAddedIfNeeded:回调用户自定义的initChannel方法,将用户自定义ChannelHandler添加到NioSocketChannel中的pipeline中。safeSetSuccess:回调Bootstrap#doResolveAndConnect~operationComplete方法。将在NioSocketChannel绑定Connect事件任务添加到普通队列中。

2023-07-10 17:54:25 436

原创 前后端网络攻击类型

分布式拒绝服务(Distributed Denial of Service,简称DDoS)是指将多台计算机联合起来作为攻击平台,通过远程连接,利用恶意程序对一个或多个目标发起DDoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务。【主要针对的是后端服务器】攻击原理:通常,攻击者使用一个非法账号将DDoS主控程序安装在一台计算机上,并在网络上的多台计算机上安装代理程序。

2023-07-05 18:41:51 337

原创 5.RocketMQ之刷盘策略

【代码】RocketMQ之刷盘策略。

2023-07-04 11:44:26 208

转载 asm之ClassFile

字节码是由16进制表示的,两个16进制数代表一个字节。

2023-06-15 16:33:16 64

原创 json序列化

}

2023-06-13 16:21:58 1136

原创 shardingsphere拆分功能源码解析

上述伪代码片中步骤2核心逻辑:根据解析SQL获取到的逻辑表判断是否符合分库分表策略。如果存在则继续返回分库分表的一些条件信息之ShardingConditions,如果不存在返回的ShardingConditions是没有任何策略的空对象。ShardingUnicastRoutingEngine引擎执行分库分表策略是:从现有的分库分表策略中随机选择一个,执行当前SQL。上述代码片中步骤1核心功能:通过解析SQL获取到对应的逻辑表。插件实现分库分表的逻辑功能主要是通过。

2023-05-30 20:22:46 823

原创 SpringBoot之IOC容器循环依赖问题

【代码】SpringBoot之IOC升级版本。

2023-05-09 15:37:28 84 1

原创 AbstractQueuedSynchronizer锁之aqs

tryAcquire:涉及公平锁、非公平锁。分别执行对应逻辑尝试获取锁。

2023-05-08 14:04:33 58 1

挑选得到的头像相关资源

挑选得到的头像相关资源

2024-03-22

go版本的hello算法

go版本的hello算法

2024-03-05

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

TA关注的人

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