自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 transmittable-thread-local[线程池跨线程值传递]

摘要:Transmittable-Thread-Local(TTL)是阿里开源的工具,用于解决线程池场景下ThreadLocal变量跨线程传递问题。相比JDK的ThreadLocal和InheritableThreadLocal,TTL支持线程池复用线程时的变量传递。核心使用方式有两种:通过TtlRunnable/TtlCallable包装任务,或使用TtlExecutors修饰线程池(推荐)。使用时需注意调用remove()方法避免内存泄漏,建议存储不可变对象防止并发问题。TTL特别适合处理多层线程池嵌套

2025-12-27 20:09:00 531

原创 Java 死锁

Java死锁是指多个线程因互相持有对方所需锁资源而陷入永久阻塞。产生死锁需满足4个条件:互斥、占有且等待、不可剥夺和循环等待。通过模拟代码可复现死锁场景。解决方法包括:按固定顺序获取锁(打破循环等待)、使用tryLock设置超时(打破占有等待)以及减少锁嵌套等。排查时可借助jstack等工具分析线程堆栈。理解死锁原理和解决方法是多线程编程的关键。

2025-12-27 20:08:26 303

原创 Java 多线程

本文介绍了Java多线程编程的核心概念和技术要点。主要内容包括:1) 多线程基础概念,解释进程、线程及多线程的优势;2) Java创建线程的三种方式(继承Thread类、实现Runnable接口、实现Callable接口)及其代码示例;3) 线程生命周期的6种状态及其转换关系;4) 线程同步机制,重点讲解synchronized关键字解决线程安全问题的方法。文章通过代码示例详细演示了各种线程创建方式和同步技术的应用场景,为Java多线程编程提供了实用指导。

2025-12-26 09:25:49 977

原创 Java 进程 vs 线程

本文介绍了进程与线程的核心概念及其在Java中的实现方式。主要内容包括: 进程与线程的区别:进程是操作系统资源分配的基本单位,拥有独立内存空间;线程是CPU调度的基本单位,共享进程资源,开销更小。 Java线程的4种创建方式: 继承Thread类 实现Runnable接口(推荐) 实现Callable接口(带返回值) 使用线程池(实际开发首选) 线程的6种生命周期状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。 文章通过代码示例展示了各种线程

2025-12-26 09:18:33 630

原创 PriorityQueue 源码深度分析(Java 8)

本文深入分析了Java 8中PriorityQueue的源码实现。PriorityQueue是基于二叉堆的无界优先级队列,默认实现为小顶堆,可通过Comparator自定义排序。文章从底层结构、核心属性入手,详细解析了其构造方法、堆化过程以及核心操作:入队时通过siftUp上浮调整堆结构,出队时通过siftDown下沉维护堆性质。关键点包括动态扩容机制、堆索引计算方式以及比较器的使用,完整呈现了PriorityQueue高效管理优先级元素的实现原理。

2025-12-10 21:10:03 852

原创 DelayQueue 源码深度分析

DelayQueue是Java并发包中基于优先级队列实现的阻塞延迟队列,其核心特性是元素必须实现Delayed接口,只有延迟时间到期后才能被取出。本文从源码层面深度分析了DelayQueue的实现原理: 类结构与成员:基于PriorityQueue存储元素,使用ReentrantLock保证线程安全,通过leader线程优化减少不必要的等待 关键方法实现: 入队操作(offer)直接插入优先级队列并唤醒等待线程 出队操作(take)采用leader-follower模式优化性能,只有leader线程会超时等

2025-12-08 22:11:55 787

原创 ArrayBlockingQueue 源码解析

ArrayBlockingQueue 是 Java 并发包中基于数组实现的有界阻塞队列,核心设计围绕「循环队列 + 独占锁(ReentrantLock) + 条件变量(Condition)」展开,确保线程安全的同时支持阻塞式、超时阻塞式及非阻塞式入队 / 出队操作。该队列具有明确特性:初始化时需指定固定容量且不可修改,遵循 FIFO 顺序,禁止插入 null 元素,数组结构带来内存连续、缓存命中率高的优势。核心组件包括存储元素的数组(items)、控制入队 / 出队位置的索引

2025-12-08 22:11:08 759

原创 ConcurrentHashMap 源码分析

本文分析了Java并发包中的ConcurrentHashMap实现,重点比较了JDK 1.7和1.8版本的设计差异。JDK 1.7采用分段锁机制,通过Segment数组将哈希表划分为多个独立区域,每个区域使用ReentrantLock保证线程安全,实现高效并发访问。JDK 1.8则改用CAS+synchronized优化,直接对桶节点加锁,进一步减小锁粒度。文章详细解读了核心数据结构、put/get方法实现原理,以及volatile变量、无锁读取等关键并发优化技术,揭示了其在保证线程安全的同时最大化并发性能

2025-12-06 21:41:08 692

原创 LinkedHashMap 源码深度分析(基于 JDK 8)

LinkedHashMap是Java集合框架中兼具哈希表高效查找和双向链表有序迭代的数据结构。它继承HashMap并维护双向链表,保留O(1)级别的增删改查性能,同时支持插入顺序和访问顺序(LRU缓存)两种模式。通过重写HashMap的钩子方法实现节点创建、访问调整和淘汰策略,其中accessOrder开关控制顺序模式,默认false(插入顺序)。核心逻辑包括:创建节点时自动加入链表尾部,访问顺序模式下将被访问节点移至尾部,以及可自定义的淘汰策略。这使得LinkedHashMap既可作为有序Map,也能实现

2025-12-06 21:40:41 594

原创 HashMap 源码深度分析(基于 JDK 8)

本文深度分析了JDK8中HashMap的实现原理。HashMap采用数组+链表+红黑树结构,通过哈希函数定位元素,使用链地址法解决冲突。JDK8在JDK7基础上优化了:1)链表长度≥8时转为红黑树;2)尾插法避免死循环;3)扩容时优化元素迁移方式。核心方法包括putVal(插入)、getNode(查询)和resize(扩容),通过扰动哈希值、动态扩容等机制保证高效性。文章还对比了JDK7/8差异,并指出HashMap非线程安全、需正确重写key的hashCode/equals方法等注意事项。

2025-12-04 20:39:13 1034

原创 CopyOnWriteArrayList 源码分析

CopyOnWriteArrayList 是 Java 并发包中的线程安全 List 实现,采用"读写分离+写时复制"机制。核心特点包括:读操作无锁且基于数组快照(保证弱一致性),写操作加独占锁并复制新数组修改后再替换原数组引用(保证线程安全)。适用于读多写少场景,避免了读写互斥但牺牲了写性能。其迭代器不会抛出 ConcurrentModificationException,体现了"无快速失败"特性。通过 volatile 数组引用和 ReentrantLock 实现

2025-12-04 20:38:55 749

原创 LinkedList 源码深度分析(基于 JDK 8)

本文深入分析了JDK8中LinkedList的源码实现。LinkedList基于双向链表结构,同时实现了List和Deque接口,兼具列表和双端队列特性。文章详细剖析了其核心设计:1)类结构与Node内部类实现;2)构造方法与元素增删改查的核心操作;3)Deque接口实现的双端队列特性;4)支持双向迭代的ListIterator实现;5)克隆与序列化机制。重点阐述了链表节点操作的高效实现,包括link/unlink系列方法,以及通过二分查找优化节点定位的node方法。最后对比了LinkedList与Arra

2025-11-29 10:45:40 1175

原创 ArrayList 源码深度分析(基于 JDK 8)

本文深度分析了JDK8中ArrayList的源码实现,主要包含以下内容:ArrayList作为动态数组实现,继承AbstractList并实现List、RandomAccess等接口,支持随机访问(O(1))和动态扩容。重点剖析了其底层数组结构、1.5倍扩容机制、三种构造方法差异,以及add/remove等核心操作的实现原理。特别解析了序列化优化(transient修饰elementData)、Fail-Fast机制和迭代器实现。最后总结了ArrayList适用于查询频繁但增删较少的场景,并指出其非线程安全

2025-11-29 10:36:04 814

原创 Java Synchronized 锁优化升级

Java Synchronized锁优化升级机制是JDK 1.6的重要改进,通过分级锁设计动态调整锁级别:从无锁→偏向锁→轻量级锁→重量级锁。该机制根据线程竞争强度自动升级,在单线程场景下使用偏向锁(零开销),轻度竞争使用轻量级锁(CAS+自旋),激烈竞争才升级为重量级锁(操作系统互斥量)。锁状态存储在对象头Mark Word中,升级过程不可逆。这种优化使Synchronized在保持线程安全的同时大幅提升性能,也是ConcurrentHashMap高效实现的关键。注意偏向锁有启动延迟,且自旋锁不适合长临界

2025-11-28 06:30:00 453

原创 Java HashMap 和 Hashtable

Java中HashMap与Hashtable的核心区别:HashMap(非线程安全)允许null键值,采用数组+链表+红黑树结构,扩容为2的幂次,效率高;Hashtable(线程安全)禁止null键值,仅用数组+链表,扩容为2n+1,效率低。多线程环境下推荐使用ConcurrentHashMap而非Hashtable。HashMap是单线程首选,Hashtable为遗留类,新项目应避免使用。主要差异体现在线程安全、null支持、数据结构和性能优化等方面。

2025-11-27 20:25:23 428

原创 Java 集合中的 fail-fast 与 fail-safe 机制详解

摘要: Java集合中的fail-fast(快速失败)和fail-safe(安全失败)是两种应对迭代时集合修改的机制。fail-fast通过modCount校验检测修改并立即抛出异常,适用于单线程环境,保证数据一致性但非线程安全。fail-safe基于写时复制策略,迭代器操作快照不抛异常,适合多线程读多写少场景,但存在数据延迟和内存开销。关键区别在于异常处理、线程安全性和数据一致性,选择需根据环境需求:fail-fast适合单线程实时操作,fail-safe适合并发安全场景。

2025-11-27 18:58:41 266

原创 Java 四大核心集合(List/Set/Queue/Map)详解

Java集合框架摘要 Java集合框架(JCF)提供了统一的数据结构操作接口,分为Collection(存储单个元素)和Map(存储键值对)两大分支。核心集合包括: List(有序可重复): ArrayList:动态数组,查询快(O1),增删慢(On) LinkedList:双向链表,增删快(O1),查询慢(On) Vector:线程安全版ArrayList CopyOnWriteArrayList:读写分离,适合读多写少 Set(无序不重复): HashSet:哈希表实现,无序 LinkedHashSet

2025-11-24 13:53:01 664

原创 Java 魔法类 Unsafe 详解

Java Unsafe类详解:底层"魔法"工具的双刃剑 Unsafe是Java中一个特殊的底层工具类,位于sun.misc包下,主要用于JDK内部库的直接内存操作、线程控制和对象操作。它能够绕过Java的安全检查机制,直接与JVM底层交互,因此被称为"魔法类"。 核心功能包括: 内存操作:分配/释放堆外内存,实现高性能IO 对象操作:直接访问私有字段、绕过构造方法实例化对象 CAS操作:支持原子性并发操作 线程控制:提供park/unpark方法替代wait/noti

2025-11-24 13:52:29 342

原创 Java 代理模式详解

Java代理模式是一种结构型设计模式,通过代理对象间接访问目标对象,在不修改原代码的情况下实现功能增强。代理模式包含三个核心角色:抽象主题、目标主题和代理主题。实现方式主要有三种: 静态代理:手动编写代理类,适用于简单场景 JDK动态代理:基于接口实现,需要目标类实现接口 CGLIB动态代理:基于继承实现,可代理无接口的类 三种方式各有优劣:静态代理简单但灵活性差;JDK代理无需手动编写但只能代理接口类;CGLIB适用范围广但依赖第三方库。代理模式广泛应用于日志记录、权限校验、事务管理等场景,Spring

2025-11-23 16:16:37 1125

原创 Java 泛型(Generic)& 通配符(Wildcard)详解

Java泛型与通配符核心要点总结 泛型本质是参数化类型,提供编译时类型安全检查和代码复用能力。主要用法包括: 泛型类/接口:类定义时声明类型参数,使用时指定具体类型 泛型方法:方法独立声明类型参数,支持静态方法 通配符解决泛型类型兼容性问题: 无界通配符?:匹配任意类型,仅读不写 上界? extends T:生产者模式,只读T及其子类 下界? super T:消费者模式,只写T及其父类 遵循PECS原则(Producer Extends, Consumer Super)选择通配符。注意Java泛型的类型擦除

2025-11-23 16:12:23 188

原创 Java NIO [非阻塞 + 多路复用解]

Java NIO是JDK 1.4引入的非阻塞I/O模型,通过通道(Channel)、缓冲区(Buffer)和选择器(Selector)三大核心组件实现高性能I/O操作。相比传统BIO,NIO具有非阻塞、多路复用等优势,适合高并发场景。缓冲区(Buffer)是数据容器,提供灵活读写控制;通道(Channel)实现双向数据传输;选择器(Selector)通过事件监听机制实现单线程管理多连接。NIO广泛应用于网络编程(如Netty)和高效文件操作,显著提升吞吐量和并发性能。

2025-11-21 21:13:09 94

原创 Java SPI(JDK 内置服务发现机制)

Java SPI(Service Provider Interface)是JDK内置的服务发现机制,通过解耦接口与实现来支持动态扩展功能。核心流程包括定义服务接口、第三方实现接口、在META-INF/services/目录下配置实现类、通过ServiceLoader加载服务。SPI具有扩展性强、标准化等优点,但也存在不支持按需加载、线程不安全等缺点。经典应用包括JDBC驱动加载、SLF4J日志绑定等。主流框架如Dubbo对SPI进行了增强,支持命名服务、依赖注入等功能。SPI是Java生态中插件化开发的重要

2025-11-21 21:12:42 1040

原创 Java String 详解

String 被声明为,且内部存储字符的数组value也是final的,这意味着:String 对象创建后,其内容(字符序列)无法被修改;任何看似 “修改” String 的操作(如拼接、替换、截取),本质都是创建新的 String 对象,原对象内容不变。字符串常量池是 JVM 为 String 设计的缓存机制,本质是一个哈希表(HashTable),存储字符串常量的引用(JDK 1.7+)或内容(JDK 1.6-)。作用:避免重复创建相同内容的字符串,减少内存占用,提高访问效率。

2025-11-20 14:29:53 554

原创 Java try-catch-finally 异常处理流程爬坑

本文深入解析Java中的try-catch-finally异常处理机制。该机制由三个核心块组成:try块执行可能出错的代码,catch块捕获并处理特定异常,finally块确保资源释放。文章分析了四种典型执行场景:正常执行、捕获异常、未捕获异常以及存在return/throw时的处理流程,强调finally块几乎总会执行(除JVM崩溃等极端情况)。同时指出了常见误区,如异常捕获过于宽泛、catch顺序不当等,并推荐使用Java7+的try-with-resources语法简化资源管理。最后总结异常处理的核心

2025-11-20 14:22:25 447

原创 【easy-captch】 简单的验证码

本文介绍了easy-captcha验证码工具的应用实践。首先说明了基础环境的搭建,包括Maven和Gradle依赖配置,以及Java8+、SpringBoot等环境的兼容性。文章重点展示了两种典型场景实现方案:1)传统Web项目通过Session存储验证码,包含验证码生成、校验逻辑和前端展示;2)前后端分离项目通过Redis存储验证码,详细说明了配置、生成、存储及校验流程。此外还介绍了进阶功能如中文验证码实现、安全性优化措施以及常见问题解决方案,为开发者提供了全面的验证码集成指导。

2025-11-18 14:00:24 361

原创 【mzt-biz-log】-「谁」在「什么时间」对「什么」做了「什么事」

mzt-biz-log是一款轻量级开源操作日志组件,通过注解实现"谁在何时对何事执行何种操作"的全链路记录。该组件适配微服务架构,支持租户隔离、条件记录和自定义存储等核心功能,适用于接口调用追踪、操作审计等场景。文章以场馆分区管理系统为例,展示了如何通过@LogRecord注解记录分区创建操作,包括操作人、分区详情及执行结果,并演示了枚举解析器实现数值到语义的转换。组件支持自定义日志存储,可灵活扩展至MySQL或ES等存储介质。其核心优势在于极简集成(仅需引入依赖和启动注解)、动态模板支

2025-11-18 09:50:49 364

原创 Java 深拷贝与浅拷贝详解

Java中的拷贝分为引用拷贝、浅拷贝和深拷贝。引用拷贝仅复制对象地址,共享同一对象;浅拷贝创建新对象,但引用类型字段仍共享原对象;深拷贝则递归复制所有字段及其引用对象,实现完全独立。浅拷贝通过Cloneable接口实现,内存效率高但存在数据共享风险;深拷贝可通过递归clone()或序列化实现,虽内存消耗大但数据隔离性强。选择拷贝方式需考虑对象结构和使用场景:简单对象或不可变引用适合浅拷贝,复杂可变对象需深拷贝确保安全。实际开发中可借助序列化或第三方库简化深拷贝实现。

2025-11-17 09:56:10 426

原创 Java BigDecimal 解决浮点精度问题

Java 浮点类型 float 和 double 由于二进制存储方式,无法精确表示部分十进制小数,导致计算时出现精度问题。BigDecimal 类通过整数和标度方式精确存储十进制数,是解决该问题的标准方案。创建时应避免使用 BigDecimal(double) 构造方法,推荐使用字符串构造或 valueOf() 方法。BigDecimal 提供完整的数学运算方法,除法运算必须指定舍入模式(如金融计算常用 HALF_UP 四舍五入)。使用时需注意其不可变性和精确计算特性,适用于金融、科学等需要高精度计算的场景

2025-11-17 09:55:51 794

原创 Java 包装类缓存机制

Java包装类缓存机制解析:数值型包装类(如Integer、Byte等)会对常用值范围(默认-128~127)预先缓存对象,以减少内存开销。不同包装类的缓存范围不同,其中Integer可通过JVM参数扩展上限。缓存触发于valueOf()方法而非构造函数,自动装箱底层也调用此方法。示例验证了缓存复用(100)与新建对象(200)的区别,并展示如何配置Integer缓存上限。

2025-11-16 15:30:00 502

原创 Java 自增自减运算符

摘要:Java中的自增(++)和自减(--)运算符用于对变量进行+1/-1操作。核心区别在于前缀(++a)和后缀(a++)的使用时机:前缀先运算后返回值,后缀先返回值后运算。单独使用时两者效果相同,但在表达式中会影响返回值结果。使用时需注意只能操作变量、不改变变量类型,并避免在复杂表达式中过度使用。多线程环境下需注意其非原子性操作特性,应使用同步机制保证线程安全。

2025-11-16 11:12:02 429

原创 Java 基础语法详解(十一)

本文系统讲解了Java基础语法的核心要点和实践应用。主要内容包括:1)集合框架与JDBC两大实用工具的关键知识点;2)通过"简易学生管理系统"项目综合运用基础语法;3)针对数据类型、面向对象、异常处理、JDBC等常见误区的解决方案;4)基础语法掌握后的进阶学习路径,包括JVM、多线程、Spring框架等方向。文章强调基础语法是Java开发的地基,需要通过"理论→实践→项目→问题排查"的学习闭环,将知识点转化为实际解决问题的能力。扎实的基础语法掌握是突破技术瓶颈、高效进

2025-11-14 14:36:40 497

原创 Java 基础语法详解(十)

本文介绍了Java数据库操作的核心技术JDBC,包括连接配置、API使用和CRUD操作实现。首先讲解了MySQL环境设置和JDBC驱动引入方法,详细说明了DriverManager、Connection等核心API的功能。重点展示了工具类封装和增删改查操作,使用PreparedStatement防止SQL注入,并通过示例代码演示了学生信息的数据库存取过程,包括参数绑定、结果集处理和资源关闭等关键步骤。内容涵盖从基础配置到完整实现,适合Java开发人员学习数据库交互技术。

2025-11-14 14:36:18 349

原创 Java 基础语法详解(九)

/ 学生实体类:封装学生信息,用注解标记需校验的属性@NotNull(message = "学生姓名不能为空") // 姓名非空校验@NotNull(message = "学生学号不能为空") // 学号非空校验@AgeRange(min = 16, max = 28, message = "学生年龄需在{min}-{max}岁之间") // 年龄范围校验// 学生状态(枚举类型)// 全参构造方法// getter/setter方法return age;

2025-11-13 08:38:49 681

原创 Java 基础语法详解(八)

Java反射机制是运行时动态获取类信息并操作对象的核心技术。通过Class类可获取类的构造方法、属性和方法,支持动态创建对象、调用方法和修改字段值。反射的核心API包括Class、Constructor、Field和Method类,常用操作有:获取Class对象(类名.class、对象.getClass()、Class.forName())、通过Constructor创建对象(支持私有构造)、使用Field操作成员变量(包括私有字段)。反射广泛应用于框架底层实现,如Spring的IoC和MyBatis的SQ

2025-11-13 08:37:29 924

原创 Java 基本语法详解(七)

Java 枚举与注解基础 本文详细介绍了Java中枚举(Enum)和注解(Annotation)的基础用法: 枚举部分: 枚举是用于定义固定常量组的特殊数据类型 核心优势包括类型安全性、可读性强和内置方法 演示了基本枚举定义和带属性/方法的增强枚举 示例展示了枚举常量、内置方法、遍历和比较等操作 注解部分: 注解是为代码添加元数据的特殊语法 主要作用包括编译器提示、框架配置、代码分析和自定义逻辑 介绍了3个核心内置注解: @Override:标记方法重写 @Deprecated:标记过时元素 @Suppre

2025-11-11 19:38:03 564

原创 Java 基本语法详解(六)

摘要: 本文介绍了Java中的IO流基础和日期时间处理。IO流分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),分别用于处理二进制数据和文本数据,并提供了文件读写示例代码(如FileInputStream、FileWriter等)。Java 8的新日期时间API(java.time包)解决了旧API的缺陷,核心类包括LocalDate、LocalTime、LocalDateTime和DateTimeFormatter,支持线程安全的日期时间操作。文章通过代

2025-11-11 19:37:31 766

原创 Java 基本语法详解(五)

本文介绍了Java编程中的String类和ArrayList集合的常用操作方法。String类部分展示了length()、charAt()、equals()、contains()、indexOf()、substring()、replace()、split()和大小写转换等字符串处理功能。ArrayList部分讲解了其动态数组特性、常用CRUD操作(add/get/set/remove)以及size()、isEmpty()、contains()等方法的使用。文章通过完整代码示例演示了这些API的实际应用,包括

2025-11-10 19:27:34 560

原创 Java 基本语法详解(四)

本文详细讲解了Java面向对象三大核心特性:封装、继承和多态。封装通过私有化成员变量和提供公共访问方法实现数据保护和校验;继承使用extends关键字建立类层次结构,实现代码复用;多态则通过方法重写和父类引用指向子类对象实现动态绑定。文中提供了Student类和Person类的完整代码示例,展示了如何在实际开发中应用这些特性,包括属性校验、方法重写等关键实现细节,帮助开发者提升代码的安全性、复用性和灵活性。

2025-11-10 19:27:06 583

原创 Java 基本语法详解(三)

本文介绍了Java中的数组深入用法和面向对象基础。在数组部分,详细讲解了二维数组的定义与初始化方式(规则和不规则数组),以及Arrays工具类提供的排序、查找和填充等常见操作。面向对象部分阐述了类与对象的概念,展示了如何定义包含属性和方法的类,并通过创建Student对象实例演示了对象的实际使用方式。内容涵盖了数组高级特性和面向对象编程的核心基础,适合Java初学者掌握这些关键概念。

2025-11-08 22:30:00 680

原创 Java 基本语法详解(二)

本文详细介绍了Java中的循环结构和方法的定义与调用。主要内容包括: 循环结构: 三种循环方式:for循环(适合已知次数)、while循环(适合未知次数)和do-while循环(至少执行一次) 循环控制语句:break(跳出循环)和continue(跳过当前循环) 提供了各循环结构的语法格式和示例代码 方法: 方法的基本结构和组成部分:修饰符、返回值类型、方法名、参数列表和方法体 方法的三种分类:无参数无返回值、有参数无返回值、有参数有返回值 每种方法类型都配有完整示例代码 文章通过具体代码示例讲解了各个语

2025-11-08 18:10:35 568

Redis7 Windows安装包

Redis-x64-7.0.12.msi

2025-11-05

jdbc驱动sqlite3

jdbc驱动sqlite3

2016-07-16

空空如也

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

TA关注的人

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