- 博客(500)
- 资源 (5)
- 收藏
- 关注
原创 vectordb向量数据库详解
向量数据库中的向量通常由多维度的数值组成,可表示图像、文本、音频等实体的特征。这些向量是机器学习模型(如深度学习模型)生成的嵌入(embeddings),用于表示数据的语义特征。其核心目标是高效支持向量相似性搜索,以便在海量数据中快速找到与查询向量最相似的向量。
2025-06-10 09:30:00
327
原创 netty在dubbo框架中的应用
Netty作为Dubbo框架的核心通信组件,为分布式系统提供高性能网络通信支持。文章从三方面展开:一是核心应用,包括网络通信层、协议编解码和连接管理;二是技术优势,突出其高性能、低延迟、可扩展和稳定性;三是具体实现细节,涵盖服务暴露、请求响应处理和线程模型优化。此外,还介绍了Netty在Dubbo中的性能优化手段,如零拷贝、SSL支持和流量控制。通过深度集成Netty,Dubbo实现了高效的RPC通信能力,满足大规模分布式系统的需求。
2025-06-10 00:59:23
6
原创 netty中的针对Java多线程的应用
Netty多线程应用与高性能网络开发实践 Netty作为高性能网络框架,通过主从多线程模型(Boss Group接受连接,Worker Group处理I/O)和事件驱动机制实现高并发。核心设计包括: EventLoop单线程处理多个Channel,减少线程切换; Pipeline机制串联ChannelHandler实现业务逻辑; 线程池分层:I/O线程与业务线程分离(耗时任务交自定义线程池); 线程安全:Channel绑定固定EventLoop,避免锁竞争。 最佳实践:合理配置线程数(Boss通常1线程,W
2025-06-09 08:00:00
43
1
原创 Vert.x学习笔记-WebClient使用Http2.0协议实例
Vert.x WebClient支持HTTP/2协议,通过简单配置即可实现。文章介绍了如何添加依赖、启用HTTP/2,并提供了示例代码展示HTTP/2请求的实现。关键点包括:配置WebClient使用HTTP/2协议、启用SSL(HTTP/2通常基于TLS)、注意证书安全设置(生产环境不建议信任所有证书),以及确保服务器支持HTTP/2。示例中请求默认使用HTTPS端口443,实际应用需根据具体需求调整配置。
2025-06-09 00:15:33
552
原创 tcp协议与http协议的关系
摘要:TCP协议和HTTP协议是互联网通信的关键协议,分别位于传输层和应用层。TCP提供可靠、面向连接的数据传输,而HTTP定义了Web通信的请求-响应模型。HTTP依赖TCP进行数据传输,典型流程包括建立TCP连接、发送HTTP请求和响应。两者协同工作,TCP确保数据可靠传输,HTTP负责应用层逻辑。HTTP/1.1优化了连接复用,HTTP/3采用QUIC协议进一步提升性能。理解二者的关系有助于优化网络应用和适应技术发展。
2025-06-08 11:00:00
600
1
原创 spring中的@KafkaListener 注解详解
@KafkaListener 是 Spring Kafka 的核心注解,用于标记 Kafka 消息消费者方法。它支持多种配置属性,包括监听主题(topics/topicPattern)、消费者组(groupId)、并发度(concurrency)等。消息处理方法可接收简单字符串、ConsumerRecord 对象或批量消息列表,并支持手动确认(Acknowledgment)。通过配置 ConcurrentKafkaListenerContainerFactory 可自定义消费者工厂,设置并发线程数、轮询超时
2025-06-08 09:00:00
1105
原创 netty中实现Protobuf协议编解码与传输
本文介绍了如何基于Netty实现Protobuf协议的编解码和网络传输。首先需要添加Netty和Protobuf的依赖,然后定义.proto文件格式并生成Java类。文章详细讲解了自定义Protobuf编码器和解码器的实现方法,也推荐了使用Netty内置的Protobuf编解码器简化开发。最后提供了完整的服务端实现代码,包括初始化ChannelPipeline、添加编解码器和业务处理器等步骤。通过本文可以快速掌握Netty与Protobuf的集成使用方法。
2025-06-08 01:29:33
85
原创 spring中的@RabbitListener注解详解
Spring AMQP中的@RabbitListener注解详解 @RabbitListener是Spring AMQP框架的核心注解,用于简化RabbitMQ消息监听器的开发。该注解支持多种配置属性,包括队列监听(queues/queueNames)、监听容器工厂(containerFactory)、并发控制(concurrency)等。高级特性涵盖消息转换器、手动确认模式、条件监听和错误处理。典型用法是将注解标注在方法上,配合RabbitMQ队列配置即可实现消息消费。开发者可通过配置SimpleRabb
2025-06-07 09:00:00
1013
原创 netty中的粘包问题详解
本文详细分析了TCP粘包问题的本质及成因,包括TCP流式特性、Nagle算法和接收缓冲机制。重点介绍了Netty提供的四种解码器解决方案:固定长度解码器(简单高效但灵活性差)、行分隔符解码器(适合文本协议)、自定义分隔符解码器(灵活但需避免冲突)和长度字段解码器(灵活性强但实现复杂)。通过对比表格展示了各方案的优缺点和适用场景,并给出最佳实践建议,如根据协议类型选择解码器、合理设计消息头部等。最后提供了LengthFieldBasedFrameDecoder的示例代码
2025-06-07 01:08:28
56
1
原创 spring的webclient与vertx的webclient的比较
◦ Spring WebClient:声明式链式调用(如 .get().uri().retrieve()),与 Spring RestTemplate 风格相似,学习曲线平缓。◦ 生态定位:属于 Spring WebFlux 模块,深度集成 Spring 生态(如 Spring Security、Spring Data Reactive)。◦ Vert.x WebClient:回调/Future 组合,需处理异步结果(如 onSuccess/onFailure),代码更底层但控制力更强。
2025-06-05 23:53:35
965
1
原创 Vert.x学习笔记-WebClient详解
Vert.x WebClient是一个基于异步非阻塞架构的高性能HTTP客户端,专为高并发场景设计。它支持HTTP/1.1和HTTP/2协议,提供连接池管理、多种数据格式编码(JSON/表单/文件流)和响应解码功能。开发中可通过配置连接池大小、内容编码等优化性能,采用流式处理大文件以避免内存溢出。WebClient与Vert.x的EventLoop紧密结合,通过回调机制实现高效I/O操作,适合微服务通信、API网关等高并发场景。最佳实践包括复用请求对象、监控连接池使用率和增强安全配置,使其成为分布式系统的理
2025-06-05 01:34:58
1410
2
原创 Vert.x学习笔记-EventLoop与Handler的关系
Vert.x的核心机制解析:EventLoop与Handler的协作关系。EventLoop作为事件循环引擎,采用非阻塞I/O模型处理事件队列,每个线程独立运行事件循环。Handler则是事件处理的回调单元,通过Lambda实现异步逻辑。两者协作时,EventLoop负责事件分发,Handler在绑定线程中串行执行确保线程安全。最佳实践包括避免阻塞EventLoop、合理配置线程池以及优化Handler性能。典型应用场景包括高并发Web服务、实时数据处理和微服务架构,通过异步编程模型实现高吞吐量和可扩展性。
2025-06-03 21:19:51
1023
3
原创 Vert.x学习笔记-Verticle原理解析
Vert.x框架的核心组件Verticle解析:Verticle作为事件驱动的轻量级执行单元,采用非阻塞I/O模型,将业务逻辑封装为独立组件。其生命周期包含实例化、部署、启动、运行和停止五个阶段,支持编程式和声明式部署方式。Verticle通过事件总线进行通信,实现发布/订阅和点对点两种模式。底层基于Event Loop线程池和Worker线程池,确保高性能和线程安全。典型应用包括微服务架构和高并发处理。Verticle与Event Loop存在一对一绑定关系,Standard Verticle固定绑定Ev
2025-06-03 20:14:09
1005
原创 从0开始学vue:pnpm怎么安装
pnpm是高效JavaScript包管理工具,具有节省磁盘空间、快速安装、支持Monorepo和安全隔离等优势。安装方式多样:可通过npm全局安装、独立脚本或系统包管理器(如Homebrew/Chocolatey)安装,国内用户建议配置淘宝镜像加速。常用命令与npm类似,如pnpm install安装依赖,pnpm dev运行脚本。遇到权限问题可调整目录权限,卸载时使用对应安装方式的命令。新项目推荐使用pnpm替代npm/yarn以获得更优体验。
2025-06-02 22:54:37
758
6
原创 从0开始学vue:vue3和vue2的关系
Vue2与Vue3核心对比与演进分析:Vue3在保留核心设计哲学的前提下进行全面升级,主要改进包括采用Proxy响应式系统、引入Composition API、优化Tree-shaking机制等。性能提升显著,打包体积减少40%,并增强TypeScript支持。生态方面推荐Vue3+Vite+Pinia新技术栈,同时提供渐进式迁移方案。Vue2将持续维护至2026年,但新项目建议直接采用Vue3以获得更好的开发体验和性能优势。
2025-06-02 21:45:36
1053
原创 从0开始学vue:一个.vue文件的完整组成部分与原理
Vue单文件组件(.vue)将模板、脚本和样式封装在一个文件中,实现组件化开发。模板部分定义HTML结构,支持插值、指令和插槽;脚本部分处理逻辑,包含props、data、生命周期等;样式部分使用scoped属性实现组件级CSS。文件通过vue-loader编译为JavaScript模块,支持TypeScript和自定义块扩展。这种设计体现了Vue关注点分离的理念,配合构建工具和开发插件,优化了开发体验和性能。
2025-06-02 00:42:51
1118
2
原创 从0开始学vue:Element Plus详解
Element Plus 是专为 Vue 3 设计的桌面端 UI 组件库,基于 Vue 3 的 Composition API 重构,在保持与 Element UI 兼容性的同时,提供了更现代化的开发体验和更强大的功能。
2025-06-02 00:03:01
1169
1
原创 Vert.x学习笔记-EventLoop与Context的关系
Vert.x中EventLoop与Context是构建高效异步编程的核心组件。EventLoop作为事件驱动引擎,负责处理I/O事件并绑定固定线程;Context则封装执行环境,确保任务在正确线程运行。二者一对一绑定,每个Verticle部署时分配特定Context和EventLoop线程。Context通过runOnContext调度非阻塞任务到EventLoop,用executeBlocking处理阻塞任务到Worker线程。这种设计保障了线程亲和性,避免线程竞争,实现了高并发的非阻塞处理模型
2025-06-01 16:37:02
1004
2
原创 maven中的maven-antrun-plugin插件详解
maven-antrun-plugin是Maven的核心插件,用于在构建流程中嵌入Ant任务,实现复杂构建逻辑与文件操作。主要功能包括执行Ant任务(如文件复制、命令调用)、绑定Maven生命周期阶段,以及灵活配置属性。典型应用场景涵盖资源文件处理、代码生成和系统命令执行。配置时需要指定执行阶段(如package)、目标(run)和具体Ant任务。该插件优势在于兼容Ant生态和复杂逻辑处理,但需注意维护成本和性能开销。推荐优先使用Maven原生插件,仅在必要时结合Ant任务,并确保版本兼容性(如3.
2025-06-01 15:48:12
1111
原创 从0开始学vue:实现一个简单页面
本文介绍了Vue.js入门基础知识,包含两种创建方式:CDN引入和Vue CLI脚手架。通过一个完整的待办事项应用示例,展示了Vue的核心概念:数据绑定(v-model)、列表渲染(v-for)、条件渲染(v-if)、事件处理(@click)和计算属性。应用实现了添加、删除待办事项以及显示完成状态的功能。代码结构清晰,包含HTML模板、CSS样式和Vue实例(数据、计算属性、方法),适合Vue初学者理解基础用法。
2025-05-31 11:00:00
1015
原创 etcd详解
摘要 etcd是一个高可用的分布式键值存储系统,基于Raft共识算法确保数据强一致性。它具有键值存储、Watch监听、租约机制等核心特性,广泛应用于服务发现、配置管理、分布式锁等场景。作为Kubernetes的核心组件,etcd存储集群状态和配置数据。其架构包含Leader/Follower角色,使用BoltDB和WAL实现数据持久化。运维时需关注集群部署、性能优化、监控和备份恢复。相比ZooKeeper和Consul,etcd在云原生领域表现突出,提供简洁API和可靠存储方案。
2025-05-31 09:00:00
832
原创 netty中的EventLoop原理解析
Netty中的EventLoop是其高性能异步网络编程的核心组件,采用单线程事件循环机制处理I/O事件和任务调度。EventLoop通过Selector轮询Channel事件,结合任务队列执行用户提交的普通任务和定时任务。每个Channel绑定唯一EventLoop确保线程安全,实现I/O多路复用提高性能。核心实现包括NioEventLoop、EpollEventLoop等,适用于不同场景。使用时需避免阻塞操作并合理配置线程数,典型应用如Boss-Worker线程模型。EventLoop的高效设计使其成为构
2025-05-31 00:19:50
166
3
原创 Vert.x学习笔记-EventLoop工作原理
Vert.x的Event Loop是其事件驱动架构的核心,采用单线程循环机制高效处理非阻塞I/O和轻量级任务。核心设计包括:每个Vert.x实例按CPU核心数创建Event Loop线程,通过持续监听事件队列(如I/O完成、定时触发)实现快速响应。类比餐厅前台服务员,Event Loop专注即时需求,将耗时任务委托给Worker线程。关键特性包括线程绑定确保安全、非阻塞优先原则、以及通过Context管理跨线程任务。注意事项强调避免阻塞操作,保持任务轻量级,以实现最佳性能。整体设计通过单线程循环与任务委托的
2025-05-30 09:00:00
2124
2
原创 Vert.x学习笔记-什么是Worker线程池
Vert.x的Worker线程池是其异步编程模型的核心组件之一,主要用于执行阻塞任务以避免阻塞Event Loop线程。通过线程隔离机制,Worker线程池可以处理数据库查询、文件I/O等耗时操作,从而保证Event Loop线程专注于高并发的非阻塞任务。Worker线程池支持线程复用、灵活配置和任务队列管理,开发者可通过executeBlocking方法或Worker Verticle提交阻塞任务。合理配置线程池大小和监控任务执行时间,能够显著提升系统性能和稳定性。Worker线程池与Event Loop
2025-05-30 00:35:55
1042
2
原创 Vert.x学习笔记-什么是Handler
本文介绍了Vert.x框架中的核心概念——Handler,详细讲解了其定义、作用及常见使用场景。Handler作为函数式接口,通过异步事件处理机制简化编程模型,支持HTTP请求、定时任务、消息总线和数据库操作等场景。文章还分析了Handler的执行上下文(Event Loop/Worker线程)、错误处理方式、链式调用和性能优化策略,最后总结其非阻塞、线程安全等特性及最佳实践。掌握Handler的使用能充分发挥Vert.x的高性能优势,构建高效异步应用。
2025-05-29 19:55:52
1200
1
原创 Vert.x学习笔记-WorkerContext中的PoolMetrics要怎么用
Vert.x 的 WorkerContext PoolMetrics 提供了线程池性能监控能力,包括任务队列状态、线程池状态和任务执行统计等指标。通过 poolMetrics() 方法可获取活跃线程数、队列任务数等关键数据,开发者可以实时监控线程池负载,分析性能瓶颈。 使用场景包括:监控线程池负载、分析任务执行耗时、与 Prometheus 等监控系统集成。最佳实践建议关注核心指标、关联业务数据、动态调整线程池并及时捕获异常。 通过 Micrometer 和 Prometheus 可实现自动化指标采集:添加
2025-05-29 00:48:49
749
1
原创 Vert.x学习笔记-什么是Context
Vert.x的Context是异步编程的核心机制,负责管理线程绑定、任务调度和资源隔离。它分为EventLoopContext(绑定Netty I/O线程处理非阻塞任务)和WorkerContext(使用线程池处理阻塞任务),通过线程绑定和任务队列确保线程安全与执行顺序。Context还支持上下文状态传递,避免全局变量污染。开发中需注意避免阻塞EventLoop线程,合理使用Worker线程池,并遵循上下文传递规范。理解Context设计原理对编写高性能Vert.x应用至关重要。
2025-05-28 23:51:25
1013
原创 maven中的maven-resources-plugin插件详解
Maven-resources-plugin是Maven构建工具的核心插件,主要用于处理项目资源文件。其核心功能包括资源复制(默认将src/main/resources下的文件复制到target/classes)、资源过滤(支持${property}占位符替换)以及包含/排除规则控制。典型应用场景涉及多环境配置、动态占位符替换等。配置时需注意文件编码、过滤范围及二进制文件保护。该插件通过标准化资源管理,显著提升项目构建效率,尤其在微服务和多环境部署场景中作用突出。
2025-05-28 23:37:25
1340
原创 Vert.x学习笔记-什么是EventLoop
Vert.x的EventLoop是其异步架构的核心组件,采用单线程模型确保线程安全,通过Netty实现I/O与非I/O任务的调度。其设计包括线程绑定、事件轮询和阻塞检测机制。使用时应遵循非阻塞原则,将耗时任务交给Worker线程,并通过合理配置线程数优化性能。常见问题包括EventLoop阻塞和高并发瓶颈,可通过线程隔离和参数调优解决。Vert.x的EventLoop与Netty在定位和线程模型上存在差异,前者更侧重业务逻辑处理,后者专注网络通信。最佳实践包括轻量级事件处理和正确的资源管理,以充分发挥Ver
2025-05-27 00:38:48
1052
6
原创 maven中的grpc编译插件protobuf-maven-plugin详解
protobuf-maven-plugin是Maven中用于编译Protocol Buffers(.proto)文件并生成对应语言代码的插件,支持gRPC服务端和客户端代码生成。文章详细解析了插件的配置方法,包括指定protoc编译器版本、gRPC插件路径、proto文件目录和输出目录等关键配置项。同时介绍了必要的gRPC依赖项、使用流程(编写proto文件→Maven编译→使用生成代码)以及常见问题解决方案,如版本匹配问题和操作系统兼容性问题。该插件实现了protobuf编译与Maven构建流程的无缝集成
2025-05-26 21:19:11
1216
2
原创 apache的commons-pool2原理与使用详解
Apache Commons Pool2 是一个高效的对象池化框架,主要用于管理数据库连接、线程等昂贵资源的复用。其核心包括对象池、池化对象和对象工厂三大组件,通过借出/归还机制实现资源生命周期管理。使用步骤包括添加依赖、实现对象工厂、配置池参数和创建池实例。框架提供丰富的配置选项如maxTotal、maxIdle等,支持性能优化和资源泄漏防护。典型应用包括数据库连接池、Redis客户端等,需注意资源释放和线程安全问题。Lettuce等客户端也基于该框架实现连接池功能,可通过YAML或代码配置参数。该框架能
2025-05-26 01:25:21
1401
2
原创 java中的Closeable接口详解
Java的Closeable接口是用于资源管理的关键接口,定义了close()方法释放系统资源。从Java 7开始,它继承AutoCloseable并支持try-with-resources语法。主要实现类包括IO流、Socket等资源类。最佳实践包括:总是关闭资源、处理关闭异常、避免重复关闭。与AutoCloseable相比,Closeable专为IO设计且抛出IOException。底层原理涉及标准化资源管理、异常处理和线程安全。常见问题包括资源泄漏预防和关闭注意事项。合理使用该接口可有效避免资源泄漏问
2025-05-25 09:30:00
763
原创 Vert.x学习笔记-VertxOptions配置详解
VertxOptions 是 Vert.x 框架的核心配置类,用于控制 Vertx 实例的行为。它支持配置线程池(worker/event loop/blocking)、集群模式(主机/端口/管理器)、高可用性(HA组/仲裁)、性能参数(超时/检查间隔)以及事件总线等。通过调整这些选项(如设置线程池大小、启用集群或HA模式),可以优化性能和可靠性。示例展示了如何创建配置集群和HA的 Vertx 实例。合理配置 VertxOptions 对提升 Vert.x 应用的运行效率至关重要。
2025-05-25 00:48:02
1383
2
原创 CompletableFuture 详解
CompletableFuture是Java 8引入的异步编程工具,扩展了Future接口,提供链式调用、任务组合和异常处理等能力。核心优势包括非阻塞回调、函数式编程支持和多任务编排,适用于高并发I/O操作和复杂业务流程。使用时可通过自定义线程池优化性能,并利用thenApply、thenCompose等方法构建异步流水线。底层采用观察者模式和CAS操作保证线程安全,默认使用ForkJoinPool,I/O密集型场景建议自定义线程池。最佳实践包括避免阻塞调用、合理监控资源及平衡异步化程度。
2025-05-25 00:29:07
1014
原创 spring中的InstantiationAwareBeanPostProcessor接口详解
InstantiationAwareBeanPostProcessor是Spring框架中用于扩展Bean生命周期的关键接口,继承自BeanPostProcessor,专注于Bean实例化阶段的干预。它提供三个核心方法:postProcessBeforeInstantiation(实例化前替换逻辑)、postProcessAfterInstantiation(控制是否注入属性)和postProcessProperties(修改注入属性值)。相比父接口,它能更早干预Bean创建过程,适用于AOP代理生成、属性
2025-05-24 15:27:05
721
原创 java中的SPI(Service Provider Interface)机制解读
Java SPI机制是一种服务发现与动态扩展机制,通过解耦接口与实现,实现模块化架构。核心原理包括接口定义、动态加载和懒加载迭代器设计,典型应用如JDBC驱动加载和日志框架适配。Dubbo和Spring Boot通过增强SPI机制支持更灵活的扩展。使用步骤包括定义接口、实现提供者、注册服务和加载使用。面临性能开销、多实现类支持等挑战,可通过缓存和条件化加载优化。SPI机制提升了Java生态的扩展性和维护性,是构建灵活系统的关键技术。
2025-05-24 15:09:52
947
原创 spring.factories详解
spring.factories是Spring Boot基于SPI机制的扩展配置文件,用于实现自动化配置和模块化扩展。其核心功能包括加载自动配置类、扩展框架功能和解耦模块化开发。文件位于META-INF目录下,Spring Boot启动时通过SpringFactoriesLoader扫描并反射实例化配置类,支持条件注解和优先级控制。常见配置项包括自动配置类、环境后处理器和应用监听器等。实际应用场景包括开发自定义Starter、动态加载第三方库配置和多环境适配。通过定义属性配置类、服务逻辑和自动配置类,并注册
2025-05-23 23:49:27
1081
原创 spring中的EnvironmentPostProcessor接口详解
EnvironmentPostProcessor 是 Spring Boot 提供的一个扩展接口,允许开发者在应用环境初始化完成后、应用上下文创建之前,动态修改或增强环境配置。其核心功能包括动态加载配置、覆盖默认配置、多环境适配以及高优先级属性控制。实现该接口需要自定义类并重写 postProcessEnvironment 方法,同时通过 spring.factories 文件注册到 Spring Boot。典型应用场景包括加密配置解密、动态日志配置、多租户配置隔离等。执行时机在 ApplicationEn
2025-05-23 10:30:00
544
2
原创 spring中的@EnableAutoConfiguration注解详解
@EnableAutoConfiguration 是 Spring Boot 自动配置的核心注解,基于“约定优于配置”原则,通过扫描 META-INF/spring.factories 文件中的配置类,结合条件化注解(如 @Conditional),自动配置 Spring 应用所需的 Bean。其主要功能包括自动配置 Bean、简化开发流程和动态适配环境。实现原理涉及 AutoConfigurationImportSelector 类加载配置类,并通过条件注解过滤无效配置。常见条件注解如 @Conditio
2025-05-23 09:00:00
602
原创 spring中的BeanFactoryAware接口详解
BeanFactoryAware 是 Spring 框架中的一个回调接口,允许 Bean 在初始化阶段获取其所属的 BeanFactory 实例,从而直接操作容器底层 API。通过实现该接口,Bean 可以动态获取其他 Bean 实例,支持运行时与容器的深度交互,适用于动态 Bean 加载、框架扩展、解决循环依赖等场景。然而,过度使用该接口会导致代码与 Spring 容器耦合,降低可测试性,因此应优先使用依赖注入(@Autowired)。BeanFactoryAware 在 Bean 实例化后、属性注入完成
2025-05-22 23:03:41
1112
常用正则表达式和编程词汇
2014-07-30
eureka server 与eureka client
2020-04-03
JAVA小程序之信息提示音
2014-04-04
成为一名优秀的架构师的标准是什么
2024-01-09
程序员35岁以后要如何发展才不会有失业的风险
2023-12-27
深圳的Java行业现状如何
2023-12-26
如何成为一名优秀的服务端架构师
2023-12-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人