- 博客(112)
- 收藏
- 关注
原创 JUC中Future及CompletableFuture
本文介绍了Java中Future和CompletableFuture的异步编程方法。首先讲解了创建线程的三种方式,重点分析了Future接口及其实现类FutureTask的使用方法,指出其存在的阻塞和轮询问题。然后详细介绍了CompletableFuture的优势,它通过回调机制解决了Future的缺陷,支持任务编排和链式调用。文章还对比了两种API的差异,并通过电商比价案例展示了CompletableFuture的性能优势。最后总结了CompletableFuture的核心API及其适用场景,包括结果处理
2025-11-26 22:08:56
1000
原创 策略模式、模版方法模式、命令模式、简单工厂
摘要:本文介绍了四种常见设计模式及其应用场景:策略模式(算法可替换)、模板方法模式(固定流程扩展细节)、命令模式(请求封装解耦)和简单工厂模式(统一对象创建)。重点阐述了基于Hook机制的实现方案,通过CommonHook接口和HookExecutor管理器,结合反射和优先级注解,实现了按顺序执行不同优先级子类逻辑的功能。该方案融合了四种设计模式的特性,提供了一种灵活的业务逻辑扩展方式。代码示例展示了类扫描、Hook执行和优先级控制的具体实现。
2025-11-10 17:30:00
884
原创 设计模式之单例模式
单例模式是一种确保类只有一个实例并提供全局访问点的设计模式。主要实现方式包括:饿汉式(类加载时创建实例)、懒汉式(使用时创建实例)和静态内部类式。其中懒汉式需要考虑线程安全问题,可通过双重检查锁机制配合volatile关键字解决;静态内部类方式则利用JVM类加载机制实现线程安全的延迟加载。此外,枚举类型是最简洁安全的单例实现,能避免多线程和反射破坏单例的问题。每种实现方式各有优缺点,需要根据具体场景选择合适的方案。
2025-11-09 16:17:15
974
原创 微信小程序API
微信小程序开发指南摘要:微信小程序提供丰富的API(如用户信息、支付、登录等)挂载在wx全局对象下。核心API包括网络请求(wx.request)、本地存储(wx.getStorage)、页面导航(wx.navigateTo)等。开发中需配置服务器域名,生产环境强制校验合法性。服务端接口调用示例展示了通过code换取openId的jscode2session实现,使用RestTemplate发起请求并解析返回结果。开发工具支持本地调试时不校验域名合法性。
2025-11-06 17:51:03
712
原创 项目中使用QQ邮箱发送邮件
QQ邮箱配置及邮件发送方法:首先登录QQ邮箱官网开启POP3/IMAP/SMTP服务获取授权码。在Java配置文件中设置SMTP服务器(smtp.qq.com)、端口(465)、邮箱账号和授权码等信息。引入spring-boot-starter-mail依赖后,通过JavaMailSender即可发送邮件。示例代码展示了如何发送包含6位随机验证码的邮件,包括设置邮件主题、内容和收件人邮箱等操作。注意授权码需保密,更改QQ密码会导致授权码失效。
2025-11-06 17:22:53
457
原创 微信小程序开发
微信小程序开发入门指南 注册与配置: 使用新邮箱在微信公众平台注册小程序账号 完善小程序基本信息,设置成员权限(开发者/体验成员) 开发准备: 获取AppID和AppSecret 下载安装微信开发者工具 了解小程序目录结构(主体文件+页面文件) 开发基础: 创建项目时填写正确的AppID 掌握页面文件创建方式 了解微信基础库版本选择 熟悉4种配置文件的作用 注意事项: 开发者工具需联网使用 主体文件必须放在根目录 页面文件需包含.js和.wxml
2025-11-05 21:02:10
1252
原创 java程序是如何运行的?
Java虚拟机方法区在JDK7及之前由永久代实现,依赖JVM内存;JDK8及之后改为元空间,使用本地内存。Java文件首先被编译为class字节码文件,由类加载器加载到JVM中。类加载过程包括加载、验证、准备、解析和初始化,采用双亲委派机制防止重复加载。堆内存存储对象实例,垃圾回收基于可达性分析算法判断对象存活,主要使用标记-清除、标记-复制和标记-整理算法。栈和程序计数器是线程私有的,分别存储方法调用和指令地址。方法区存储类元数据和运行时常量池,类加载完成后将信息存入方法区。
2025-10-29 16:17:34
661
原创 服务发现机制(SPI)
JDK SPI是一种本地服务发现机制,通过配置文件实现接口与实现的解耦,提升框架扩展性。它在META-INF/services/目录下以接口名创建文件,声明具体实现类,如JDBC驱动加载就采用此机制,使数据库切换只需更换依赖而无需修改代码。这与RPC的远程动态服务发现不同,SPI主要用于本地组件替换,而RPC依赖注册中心实现跨网络服务调用。两者都解决服务发现问题,但应用场景不同。
2025-10-10 10:21:30
419
原创 Java中的Hook机制
Java的Hook机制类似于AOP,通过在特定业务点插入自定义代码(如日志落库)实现逻辑解耦。通过定义通用Hook接口(如CommonHook)和具体实现类,结合反射机制实现动态调用。该机制支持权重设置,可控制多个Hook的执行顺序,从而达到简化代码、增强灵活性的目的。
2025-10-10 10:00:02
470
原创 Java中Mock的写法
文章摘要:Mock是软件开发中的测试技术,用于模拟对象行为以隔离测试目标。它通过创建虚拟依赖对象,使测试更可控高效。文中以Java代码为例,展示了如何使用Mockito框架:通过@Mock注解创建B类mock对象,用@InjectMocks注入到A类,并用when().thenReturn()设置模拟返回值,从而跳过B类实际逻辑。这种技术特别适用于单元测试中需要隔离依赖的场景。
2025-10-10 09:40:41
320
原创 RabbitMQ
RabbitMQ是一个开源消息代理,支持多种协议,采用生产者-消费者模型实现异步消息传递。核心协议AMQP提供可靠的消息路由机制,通过交换机(Direct、Topic、Fanout、Headers四种类型)与队列的绑定实现灵活的消息分发。队列支持多种特性:持久化存储、惰性队列降低内存压力、镜像队列实现高可用、死信队列处理异常消息、延迟队列实现定时任务等。系统包含Broker服务器、虚拟主机隔离、连接/信道管理等组件,确保消息可靠传输与高效处理。
2025-06-09 10:25:16
1514
原创 SpringCloud基础知识
SpringCloud的学习笔记,主要是一些SpringCloud的基础知识,包括Nacos+RabbitMQ+ES
2025-05-29 22:08:49
869
原创 数据库面试题小结
数据库是存储和管理数据的核心工具,涉及多种连接方式、SQL语言类型、约束、视图、事务、锁、索引等概念。内连接和外连接的主要区别在于数据匹配方式,内连接仅返回匹配的行,而外连接则保留未匹配的行并用NULL填充。SQL语言包括DDL、DML、DQL、DCL和TCL,分别用于定义、操作、查询、控制和事务管理。约束如主键、唯一、外键等确保数据完整性。视图是虚拟表,简化查询并增强安全性。事务通过ACID特性保证数据一致性,锁机制控制并发访问。索引提升查询效率,但增加存储和维护成本。
2025-05-15 13:44:56
489
原创 JVM面试题
本文详细探讨了JVM(Java虚拟机)的多个关键方面,包括内存模型、垃圾回收机制、类加载机制、双亲委派模型等。文章首先介绍了JVM的内存模型(JMM)及其在多线程环境下的数据访问规则,接着讨论了JVM的基本概念、类加载机制和对象实例化过程。随后,文章深入探讨了JVM的双亲委派模型及其重要性,并提供了JVM调优的思路和实际经验,如处理CPU飙升和GC调优。此外,文章还解释了内存溢出和内存泄漏的含义,并介绍了如何判断对象存活、完整的GC流程以及如何避免FullGC。
2025-05-15 13:36:35
908
原创 CentOS7 环境配置
主要是一些CentOS的环境搭建,包括git、jdk、nodejs、python3、maven、mysql、redis、rabbitmq、tomcat、nginx、docker
2025-04-22 19:24:44
1125
原创 Java并发编程3(CAS)
Java并发编程(3):Java内存模型、由于可见性以及指令重排导致的多线程并发问题、无锁编程(CAS)、简单介绍并发设计模式、volatile关键字
2025-03-23 14:45:01
728
原创 Java并发编程2(锁-Sychronized)
Java并发编程(2):Java对象头、sychronized的原理解析、死锁、活锁、饥饿、Reentrantlock基本操作
2025-03-23 10:47:47
1078
子绝父相,子级元素不能覆盖原来的图
2023-08-16
将在 VS Studio 上面写的程序打包成exe文件运行出现问题
2023-05-07
报错:调试断言失败。
2023-04-18
VS Studio2022从文件中读取中文出现乱码
2023-04-23
报错:未找到匹配的调用运算符是咋回事啊,求解答
2023-04-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1