- 博客(138)
- 收藏
- 关注
原创 SpringBoot 条件注解一览无余
条件注解是一种基于条件的注解,用于在应用程序中根据特定条件自动配置或排除某些组件。条件注解可以根据应用程序的环境、配置属性或其他条件来控制某些组件的注册和初始化。
2024-02-20 08:30:00 761
原创 Java热插拔技术之SPI
总的来说,Java SPI 的实现原理是通过类加载器动态加载配置文件,再利用反射机制实例化具体的服务提供者,并将其注入到应用程序中供服务消费者使用。
2024-01-16 08:30:00 826
原创 从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景
BIO、NIO和AIO是Java编程语言中用于处理输入输出(IO)操作的三种不同的机制,它们分别代表同步阻塞I/O,同步非阻塞I/O和异步非阻塞I/O。
2023-11-13 09:03:28 376
原创 seata server 1.6版本安装及配置
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
2023-08-14 09:06:31 526
原创 【Nacos源码系列】Nacos服务发现的原理
服务发现是一种机制,用于在分布式系统中动态地查找和识别可用的服务实例。它解决了微服务架构中服务之间的通信和调用的核心问题。
2023-07-20 08:15:00 271
原创 【Nacos源码系列】服务注册的原理
Nacos是一个基于云原生的动态服务发现、配置管理和服务治理平台,由阿里巴巴开源。它提供了服务注册与发现、配置管理、动态DNS、流量管理、服务降级、负载均衡、限流、路由管理等一系列核心功能,可以帮助企业构建弹性可扩展的微服务架构。
2023-06-20 08:56:54 1133
原创 原理这就是索引下推呀
索引下推(Index Condition Pushdown,简称ICP)是 MySQL 5.6 开始引入的一项优化技术,可以在执行查询时将过滤条件下推到存储引擎层。
2023-04-25 17:25:02 987
原创 【每日一题】缓存穿透、缓存击穿、缓存雪崩及解决方案
缓存是许多现代Web应用程序的重要组成部分,因为它可以大大提高系统的性能和可靠性。然而,缓存也存在一些潜在的问题,如缓存穿透、缓存击穿和缓存雪崩,这些问题可能导致系统性能下降甚至宕机。
2023-02-22 08:45:00 257
原创 Hotspot垃圾收集器一览
上篇文章我们介绍了如何判断对象是否为垃圾,有垃圾就要清理,清理就需要 垃圾收集器。垃圾收集器(Garbage Collector)是垃圾收集GC的实现,根据是否分代收集可将垃圾收集器分为两种类型:分代收集和不分代收集。Serial垃圾收集器是最简单的垃圾回收器的实现,同时它也是最古老的垃圾回收器,在jdk 1.3之前是HotSpot虚拟机新生代收集器的唯一选择。Serial翻译成中文的意思是“串行的”,顾名思义Serial垃圾收集器就是一个单线程的垃圾回收器,它的这个串行指的是当它要进行垃圾回收时,其他所有
2022-12-08 09:00:00 360
原创 如何判断对象是否是垃圾
本文主要介绍了JVM是通过可达性分析算法来判断对象是否为可回收对象,同时介绍了哪些对象或者是类可作为可达性分析算法的GC Root,最后介绍了对象在Finalize方法中的回收过程和方法区的回收。想学习关于JVM的文章可关注我,会持续更新。参考书籍:《深入了解JVM虚拟机》
2022-12-01 09:15:00 781
原创 JVM垃圾回收算法
垃圾回收算法没有好坏之分,只是应用场景不同。老年代存活对象比较多,所以一般采用标记-清除和标记-整理算法,相反,新生代存活对象比较少,所以一般采用复制算法。根据不同的区域的特征采用不同的算法,这就是分代收集理论。
2022-11-29 09:00:00 267
原创 通过工具和字节码带你深入理解运行时数据区
本文通过JHSDB工具和字节码层面来更深入的了解JVM运行时数据区,对于JHSDB工具和字节码也只是一个简单的使用和说明,感兴趣的可以再深入了解一下。
2022-11-18 09:15:00 162
原创 Java中的堆和栈
栈和堆是Java程序在代码执行期间使用的两个区域。除了这两个之外,还有其他内存区域,如方法区域、寄存器、本地方法域等等。每种区域在Java应用程序中都有其特定的用途。但是,从程序员的角度来看,栈和堆是JVM必须理解的区域。
2022-11-10 09:15:00 7947
原创 canal 安装及入门教程
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,目前主要支持了mysql。
2022-11-08 09:15:00 712
原创 Spring Cloud Alibaba Sentinel集成Spring Cloud Gateway
本篇文章我们只是简单的介绍和使用了 Sentinel集成Spring Cloud Gateway,算是对 Sentinel网关限流有了一个简单的认识,想认识的更多可以去官网看看。
2022-11-04 09:15:00 517
原创 关于rocketmq 中日志文件路径的配置
rocketmq 中不管是服务端还是客户端的日志配置都是在类中,通过ClientLogger可以发现rocketmq日志的参数都是加入到系统属性中去的,所以我们只要修改对应的系统属性就可以修改rocketmq的日志配置了。感兴趣的可以去看看源码探索更多的可能。
2022-10-31 09:00:00 8240
原创 动态追踪技术之BTrace
作为 Java的动态追踪技术,站在比较底层的角度上来说,底层无非就是基ASM、Java Attach API、Instrument开发的创建。Arthas 都是针前面这些技术的一个封装而已。
2022-10-27 10:03:45 488
原创 动态追踪之java agent
本篇文章我们分别使用Java Agent的静态加载和动态加载成功的对字节码进行了修改、追踪,并完成了一个打印方法耗时的简单示例。Java Agent能够访问加载到JVM中的类,它的应用十分广泛,可用于实现Java IDE的调试功能、热部署功能、线上诊断⼯具和性能分析⼯具。本篇只是触及了Java Agent的皮毛,感兴趣的可以深入了解一下。下篇文章将介绍一个动态追踪框架BTrace。
2022-10-26 09:00:00 599
原创 线上诊断之arthas
arthas是一个很好的java线上诊断工具,在JVM监控部分命令是整合了JVM自带的内存调优工具,在方法进行监控部分使用了动态追踪技术,其他部分也集成了java方面的工具。感兴趣的可以去官网多了解一下,在我们进行线上诊断时用处挺大的。
2022-10-24 10:13:30 554
原创 MySQL VARCHAR(M)最多能存储多少数据
对于一个列来说,除了存储本身数据以外还要存储MySQL定义的数据,根据行记录格式,VARCHAR(M)存储空间由3部分构成,分别为真实数据、真实数据的长度、NULL值标识。真实数据是用户要存储的数据,真实数据的长度是用户存储的这部分数据的长度,NULL值标识是该列是否允许为NULL。在字段允许为NULL的情况下,计算最多能存储多少真实数据的公式为。最后总结一下,VARCHAR能最多能存储多少真实数据跟字符编码集有关,最多能存储多少个字符是个上限值,实际存储不了那么多,要在上限值的基础上减一。
2022-10-19 09:00:00 1025
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人