- 博客(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 634
原创 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
原创 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
原创 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
原创 6.RocketMQ之文件查询索引文件IndexFile
根据消息ID来查找消息,consumequeue 中没有存储消息ID,如果不采取其他措施,又得遍历 commitlog文件了,indexFile就是为了解决这个问题的文件。
2023-08-21 16:56:25 225
原创 内存分析工具之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
原创 shardingsphere拆分功能源码解析
上述伪代码片中步骤2核心逻辑:根据解析SQL获取到的逻辑表判断是否符合分库分表策略。如果存在则继续返回分库分表的一些条件信息之ShardingConditions,如果不存在返回的ShardingConditions是没有任何策略的空对象。ShardingUnicastRoutingEngine引擎执行分库分表策略是:从现有的分库分表策略中随机选择一个,执行当前SQL。上述代码片中步骤1核心功能:通过解析SQL获取到对应的逻辑表。插件实现分库分表的逻辑功能主要是通过。
2023-05-30 20:22:46 823
LocalHost InetAddress异常
2023-11-14
网络瞬时输入&输出流量
2023-10-31
java nio零拷贝技术mmap之force
2023-08-11
web开发中如何保证操作的幂等性
2023-05-08
seata分布式事务数据源DataSourceProxy
2023-02-10
consul相关问题
2022-11-15
SpringCloud之consul与eureka
2022-11-14
go编译.proto文件
2022-11-11
spring声明式事务
2022-10-21
get请求为什么会存在请求体?
2022-01-18
java面试资料谁能提供一下下呢
2021-10-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人