自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 现代 Android 后台应用读取剪贴板最佳实践

本文探讨了在Android与Flutter应用中实现后台剪贴板读取的解决方案。针对Android 10及以上版本对后台应用访问剪贴板的限制,提出了一种创新方法:通过透明Activity将后台操作转化为前台操作。文章详细介绍了从Quick Settings Tile触发剪贴板读取的完整实现方案,包括透明Activity配置、Intent处理、状态管理等关键技术点。该方案有效解决了隐私策略限制下的剪贴板访问问题,为Flutter应用提供了可靠的跨平台通信实践。

2025-11-24 22:08:31 1084

原创 Android 与 Flutter 通信最佳实践 - 以分享功能为例

本文介绍了Flutter混合开发中Android分享功能的实现方案。通过对比第三方包和MethodChannel自定义通信两种方式,详细讲解了MethodChannel的核心机制和Flutter引擎生命周期问题。重点阐述了Android端的实现步骤,包括配置AndroidManifest.xml、Activity生命周期管理、初始化Flutter引擎和MethodChannel,以及解析分享数据的完整流程。文章特别指出了热启动场景下的常见问题,并提供了初步解决方案,为后续性能优化奠定了基础。

2025-11-24 21:58:35 1190

原创 Redis缓存更新策略

摘要: 本文探讨了缓存与数据库不一致的原因及主流缓存更新策略。数据不一致主要源于缓存与数据库的独立更新、系统宕机及分布式同步问题。重点分析了三种缓存策略:1) Cache-Aside旁路缓存模式(推荐先更新数据库再删除缓存);2) Read/Write-Through读写穿透模式(缓存层负责数据同步);3) Write-Behind异步写回模式(高性能但存在数据丢失风险)。特别针对Cache-Aside模式,详细讨论了四种操作顺序可能导致的数据一致性问题,并提出了延迟双删策略的优化方案及其潜在缺陷。

2025-10-28 23:47:12 1075

原创 IDEA推送github,身份认证错误:Cannot assign requested address: getsockopt 解决方法

选择idea导航栏的。重启idea后即可解决。

2025-10-28 23:41:49 358 1

原创 云服务器安装最新版本的nodejs

本文介绍如何安装最新版Node.js,避免使用apt获取的旧版本。推荐使用nvm工具管理版本,提供官方源和国内镜像源两种安装方式。具体步骤包括安装nvm、载入环境变量、安装LTS版本,并给出验证方法。若网络问题仍无法解决,还可使用snap安装Node.js。三种方法均附有终端命令和版本验证指令。

2025-10-10 23:48:21 308

原创 如何将Vue 项目转换为 Android App(使用Capacitor)

本文介绍了将Vue项目转换为Android应用的主要步骤: 准备工作:安装Node.js、Android Studio并打包Vue项目 使用Capacitor:安装Capacitor CLI,初始化配置并添加Android平台支持 构建APK:在Android Studio中打开项目并构建APK 网络请求适配:配置网络安全文件允许HTTP请求或改用HTTPS 应用图标适配:使用工具自动生成多尺寸图标或手动配置 开发流程为:修改Vue代码→重新打包→同步到Android项目→构建新APK。

2025-10-10 23:47:00 1536

原创 云服务器连不上github如何解决---云服务器使用代理稳定与github通信方法

本文介绍了如何通过SSH反向隧道实现云服务器访问本地电脑代理的方法。具体步骤包括:在本地电脑建立SSH连接,将云服务器的8888端口转发到本地的7890代理端口;保持SSH连接不中断;在云服务器上配置Git等应用使用127.0.0.1:8888作为代理地址。注意事项包括需开启本地代理的局域网访问权限。这种方法通过加密隧道安全地转发请求,解决了云服务器访问受限资源的问题。

2025-09-13 16:38:40 679

原创 RDB/AOF------Redis两大持久化方法

Redis支持RDB和AOF两种持久化机制。RDB通过生成数据快照实现持久化,支持手动触发(save/bgsave)和自动触发(如配置save m n),但频繁执行成本较高。AOF记录每次写命令,通过缓冲区写入策略(always/everysec/no)平衡性能与数据安全,并支持重写机制压缩文件体积。两者各有优劣:RDB适合备份但实时性差,AOF实时性好但文件较大。重启时Redis优先加载AOF文件恢复数据。合理配置两种机制可确保数据安全与性能平衡。

2025-09-13 16:31:52 1060

原创 如何利用gemini-cli快速了解一个项目以及学习新的组件?

本文介绍了如何利用AI工具快速学习新项目和技术框架的工作流程。作者以SpringAI项目为例,分享了自己在一天内完成项目学习和内容整理的经验,重点介绍了使用gemini-cli辅助学习的技巧。文章详细说明了gemini-cli的各项功能命令,如初始化项目、保存对话、添加记忆提示等,并强调了开启yolo模式以提升效率的重要性。作者还分享了提示词优化的过程,通过改进提问方式让AI能更系统地分析项目架构和核心核心流程

2025-08-17 23:58:19 1287 1

原创 Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析

摘要:本文深入解析Flutter中InheritedWidget的数据共享机制,结合组件生命周期详细说明其工作原理。重点介绍了三个关键方法:updateShouldNotify用于判断数据变化,dependOnInheritedWidgetOfExactType建立依赖关系,didChangeDependencies响应数据变更。通过完整示例演示了当父组件数据更新时,子组件如何通过这一机制自动重建界面。文章还回顾了Flutter组件生命周期的五个核心阶段,帮助开发者更好地理解数据流转过程。

2025-08-16 20:01:20 1167 1

原创 Flutter Provider 模式实现:基于 InheritedWidget 的状态管理实现

本文介绍了基于 InheritedWidget 的 Provider 状态管理模式,解决了 Flutter 开发中跨组件状态共享的性能问题。通过实现 ChangeNotifier 作为可观察的数据模型,配合 ChangeNotifierProvider 作为智能数据提供者,实现了精确更新和缓存机制。

2025-08-16 19:58:37 790

原创 基于 RabbitMQ 死信队列+TTL 实现延迟消息+延迟插件基本使用

本文介绍了利用RabbitMQ的TTL和DLX特性实现延迟消息队列的方法。通过设置消息的存活时间(TTL)和死信交换机(DLX),当消息过期后会自动路由到死信队列,从而实现延迟处理。文章详细讲解了核心概念、实现原理,并提供了Spring Boot中的配置示例,包括生产者发送带TTL的消息和消费者监听死信队列的完整代码,并且也介绍了其不足之处,通过介绍官方插件来修复bug,达到更好的效果

2025-08-10 22:36:09 1014

原创 2025最新Flutter项目环境创建手把手详细教程(Android Studio为例)

本文详细介绍了在Windows系统上配置Flutter开发环境的完整步骤。主要内容包括:1)下载Flutter SDK并配置镜像站;2)安装Android Studio及设置SDK路径;3)安装必要的Flutter和Dart插件;4)通过flutter doctor命令检查并解决环境问题;5)创建新Flutter项目并运行在模拟器或真机上。文章提供了详细的图文指引,包括环境变量设置、Android Studio安装选项、插件安装等关键步骤,帮助开发者快速搭建Flutter开发环境。

2025-08-10 15:43:39 1953

原创 参考线程池构建一个高性能、配置驱动的Docker容器池

本文介绍了一个基于Spring Boot和Docker-Java构建的高性能Docker容器池设计方案。该系统通过配置驱动实现多种编程语言的代码沙箱环境,解决了传统OJ/CI系统中容器频繁创建销毁带来的性能问题。文章详细展示了YAML配置文件的参数设计,包括容器资源限制、安全策略和语言特定配置等。核心实现采用Java record定义不可变配置类,并结合Spring的@ConfigurationProperties实现配置映射。该方案支持预加载容器池、细粒度资源控制和安全隔离,为在线评测系统提供了可靠的基础

2025-08-06 23:57:55 1032

原创 模板方法模式、策略模式、工厂模式的妙用: OJ判题平台的多语言优雅解耦方法

本文介绍了在线评测系统(OJ)中判题引擎的设计方案,重点解决多语言支持带来的复杂性。通过组合运用模板方法、策略和工厂等设计模式,将判题流程分解为环境准备、代码编译、执行监控等标准化步骤,同时将语言相关逻辑解耦到独立策略类中。采用模板方法模式定义流程骨架,策略模式封装不同语言的编译执行逻辑,工厂模式动态创建策略实例,最终实现了一个符合开闭原则、易于扩展的判题引擎架构。该方案有效避免了传统if-else方式带来的维护问题,为系统支持新语言提供了清晰的扩展路径。

2025-08-06 23:49:35 1060

原创 RabbitMQ 的死信队列完整指南 (With Spring Boot)

本文介绍了RabbitMQ死信队列(DLQ)的概念与实现。死信队列用于处理无法被正常消费的消息,包括被消费者主动拒绝、消息过期和队列满三种情况。通过配置死信交换器(DLX)和死信队列,可以优雅地处理这些"问题消息"。文章详细讲解了死信机制的工作原理,并通过Spring Boot项目演示了如何配置死信队列、发送消息到普通队列,以及消费失败时如何将消息路由到死信队列。核心代码展示了声明正常/死信交换器和队列的方法,以及生产者和消费者的实现逻辑。

2025-07-31 23:33:15 1209 2

原创 RabbitMQ 消费者确认 (Ack/Nack) (With Spring Boot)

本文深入探讨了RabbitMQ的消费者确认机制在分布式系统中的关键作用。通过分析自动确认(auto-ack)和手动确认(manual-ack)两种模式的优缺点,重点阐述了手动确认模式下的三种核心操作:basicAck(确认)、basicNack(否定确认)和basicReject(拒绝)。通过demo提供了Spring Boot环境下的完整实现方案,包括配置手动确认模式、声明交换机和队列的代码示例,以及生产者控制器的实现。

2025-07-31 23:14:31 878 2

原创 RabbitMQ 发送方确认的两大工具 (With Spring Boot)

RabbitMQ发布者确认机制解析:通过ConfirmCallback确认消息是否到达Exchange,ReturnCallback验证消息是否路由到Queue。配置Spring Boot项目演示了如何实现双向确认机制,包括RabbitTemplate回调设置,确保消息可靠投递。

2025-07-30 20:59:48 1282

原创 Rabbitmq中常见7种模式介绍

本文介绍了RabbitMQ的7种工作模式:简单模式(1对1)、工作队列(1对多)、发布/订阅(广播)、路由模式(条件分发)、主题模式(通配符匹配)、RPC远程调用和发布确认模式(可靠传输)。每种模式通过示意图展示了消息流转路径,并说明了其核心特点及适用场景,如简单模式适用于单消费者场景,发布/订阅适合广播通知,RPC实现远程调用,发布确认确保消息可靠传输等。

2025-07-30 20:39:29 932

原创 RabbitMQ 消息持久化的三大支柱 (With Spring Boot)

RabbitMQ消息持久化机制解析与实践 本文详细介绍了RabbitMQ中消息持久化的三个关键要素:交换机持久化、队列持久化和消息持久化。通过邮政系统比喻,形象说明了三者关系:交换机相当于永久性邮局,队列是固定邮箱,消息则是特殊信封。只有当三者都持久化时,才能确保消息在Broker重启后不丢失。文章提供了Spring Boot配置示例,包括声明持久化的交换机和队列,以及发送持久化消息的两种方法。通过Docker重启RabbitMQ容器的实验验证了持久化效果,确认消息在系统重启后依然存在。

2025-07-29 20:59:32 1619

原创 Spring Boot with RabbitMQ:四大核心模式指南

本文将带领你使用 Spring Boot 通过清晰的代码实例和详尽的解释,深入理解并通过代码demo实践 RabbitMQ 的四种核心工作模式:work、direc、fanout、topic

2025-07-29 20:45:32 1394

原创 rabbbitMQ的Simple、Direct、Fanout、Publish/Subscribe模式Java代码实现

用Java代码实现Simple、Direct、Fanout、Publish/Subscribe的demo,方便初学者熟悉了解对应的api使用

2025-07-28 15:10:59 963

原创 @annotation自定义注解实现

本文介绍了两种使用Spring AOP实现方法执行时间统计的方案。首先解析了Java注解的基本概念,包括@Target和@Retention的作用。第一种方案通过自定义@TimeRecord注解配合切面类实现方法耗时统计,详细说明了切面类中@Around通知的使用方法。第二种方案直接为Spring MVC的@RequestMapping注解添加切面逻辑,实现无侵入式的全局耗时统计。两种方案均包含完整代码示例,前者适合定制化业务场景,后者适合对现有系统进行统一增强。

2025-07-28 14:34:01 985

原创 以上传用户头像为例直接搞懂SpringBoot文件上传存储思路!

本文实现了一个用户头像上传功能,采用磁盘存储方式。Controller层接收上传请求并调用Service层处理,Service层包含完整业务逻辑:校验图片类型、生成唯一文件名、按用户ID分目录存储、删除旧头像、更新数据库记录等。通过@Value注解从配置文件读取存储路径和URL前缀,确保灵活性。功能特点包括事务管理、异常处理、旧头像清理和日志记录,最终返回可访问的头像URL。

2025-07-26 23:47:37 267

原创 @PathVariable与@RequestParam的区别

@PathVariable (Spring MVC) 和 @PathParam (JAX-RS) 都是用于从URL路径提取参数,但属于不同框架。@PathVariable适用于Spring MVC控制器方法,而@PathParam适用于JAX-RS资源类方法。两者功能相似,都有value和required属性,但依赖的框架不同:Spring Web模块或JAX-RS实现(如Jersey)。选择取决于使用的框架,Spring MVC用@PathVariable,JAX-RS用@PathParam。

2025-07-26 23:38:01 467

原创 一文彻底搞懂什么是SpringMVC!

Spring WebMVC是一个基于Servlet API的Web框架,实现了MVC架构模式,通过模型(Model)、视图(View)和控制器(Controller)分离来处理Web请求。它提供了建立连接、处理请求和响应三大核心功能:通过@RequestMapping实现URL路由映射;支持多种参数传递方式,包括基本类型、对象、数组、集合和JSON数据;

2025-07-25 22:34:52 1414

原创 什么是JSON,如何与Java对象转化

JSON (JavaScript Object Notation) 是一种轻量级、易于读写的数据交换格式,广泛用于现代应用程序中。它通过对象(键值对集合)和数组(值的有序列表)来组织数据。在 Java 生态中,JSON 数据与 Java 对象(POJO)之间的转换至关重要。这一任务主要由 Jackson 库的核心类 ObjectMapper 来完成,核心功能是序列化和反序列化。

2025-07-25 22:32:31 1092 2

原创 Web开发传参的四种常见方式介绍

本文介绍了HTTP请求中四种常见的参数传递方式:1)查询参数(Query Parameters),以?和&连接键值对,常用于GET请求;2)form-data(multipart/form-data),用于文件上传,每个参数作为独立部分传输;3)x-www-form-urlencoded,表单默认编码方式,键值对经URL编码后置于请求体;4)raw方式,支持任意格式原始数据,需指定Content-Type,如JSON/XML等。不同方式适用于不同场景,开发者应根据需求选择合适的数据传输方法。

2025-07-25 22:00:20 483

原创 适配器模式——以springboot为例

适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过中间适配器将一个类的接口转换成客户端期望的另一个接口,使原本不兼容的类能协同工作。模式包含四个角色:目标接口、适配者、适配器和客户端。Spring Boot中广泛应用适配器模式,如Spring MVC的HandlerAdapter统一处理不同类型的处理器,以及MessageConverter处理HTTP消息转换。适配器模式提高了代码复用性和扩展性,是处理新旧系统接口兼容性问题的有效方案。

2025-07-24 23:34:39 783

原创 Spring MVC 统一响应格式:ResponseBodyAdvice 从浅入深

本文介绍了使用Spring MVC的ResponseBodyAdvice实现统一RESTful API响应格式的方法。通过定义Result统一响应类并实现ResponseBodyAdvice接口,可以自动包装所有API返回结果。文章详细说明了@ControllerAdvice注解的作用、supports和beforeBodyWrite方法的实现逻辑,特别处理了String类型和null返回值的特殊情况,确保响应格式一致性和健壮性。这种设计能显著提升前后端协作效率、简化错误处理并增强API可维护性。

2025-07-24 23:29:07 1607

原创 Spring,Spring Boot 和 Spring MVC 的关系以及区别

通俗易懂的讲解Spring,Spring Boot 和 Spring MVC 的关系以及区别

2025-07-17 17:34:06 743

原创 深入拆解Spring第二大核心思想:AOP

本文通俗易懂的解析AOP核心思想,从思想入门到Spring AOP实战,并且剖析JDK与CGLIB动态代理原理等,适合初学者

2025-07-17 17:30:04 523

原创 AOP可以识别类的私有方法吗?

说明AOP是否可以识别类的私有方法,并且在工程上是否推荐

2025-07-16 17:06:33 452

原创 深入拆解Spring思想:DI(依赖注入)

深入探讨了 Spring 框架中依赖注入(DI)的核心机制,即 Spring 如何将依赖(Bean)“给”到需要它的对象中,详细解析了三种主要的注入方式。

2025-07-11 11:14:11 764

原创 深入讲解单例模式

通俗易懂的讲解了单例模式,包括两种实现:懒汉模式和饿汉模式,适合初学者适用、复习等

2025-07-11 10:55:18 456

原创 深入拆解Spring核心思想之一:IoC

Spring IoC容器通过五大类注解管理Bean对象:@Controller(Web层)、@Service(业务层)、@Repository(数据层)、@Component(通用组件)和@Configuration(配置类)。默认情况下,这些Bean都是单例模式,由ApplicationContext统一管理。开发者可通过context.getBean()获取实例,其中ApplicationContext作为高级容器,相比基础容器BeanFactory提供更多企业级功能。

2025-07-10 23:57:41 1272 2

原创 Spring核心原理的快速入门:快速了解IoC与DI

方便初学者快速理解Spring的核心概念:IoC与DI,通俗易懂的初步讲解更快上手,并且配合文末尾的博客指引也可以深入探索其概念

2025-07-10 23:55:31 1015

原创 深入理解 MySQL 事务:保障数据操作的原子性与一致性

详细介绍mysql事务,核心原则,sql命令,并发问题,隔离级别等

2025-06-18 23:04:57 1550

原创 深入理解mysql索引

索引是数据库中至关重要的一部分,它能够显著提升数据检索的效率。本文将带你深入了解 MySQL 索引的概念、作用、优缺点、使用场景、底层数据结构以及最佳实践。

2025-06-18 22:59:47 969

原创 MySQL进阶之路:从约束到高级查询的深度剖析

讲解MySQL 约束、表设计和高级查询

2025-06-17 20:05:21 614

空空如也

空空如也

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

TA关注的人

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