自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BigDecimal 详解与常用方法教程

BigDecimal是Java中处理高精度计算的类,适用于金融等对精度要求高的场景。关键点包括:1)推荐用String构造对象避免精度丢失;2)算术运算返回新对象,除法需指定舍入模式;3)比较大小用compareTo而非equals;4)用setScale控制小数位数;5)提供多种舍入模式和工具方法。最佳实践包括全程使用BigDecimal、避免类型转换、谨慎处理除法等,确保计算精度。

2025-09-17 14:00:00 679

原创 java基础十八:反射

Java反射机制总结 本文介绍了Java反射的核心概念与应用。反射允许程序在运行时动态获取类信息、操作属性和方法。主要内容包括:1)三种获取Class对象的方式:类名.class、对象.getClass()和Class.forName();2)通过配置文件动态加载类;3)利用反射访问和修改对象属性,包括私有字段;4)封装反射操作为工具类ReflectUtil,提供查询字段、设置和获取属性值的通用方法。反射机制增强了程序的灵活性,但也需要注意性能和安全问题。

2025-09-17 08:00:00 384

原创 java基础十七:注解

Java注解是为代码提供元数据的特殊语法元素,不影响代码执行但可被工具处理。内置注解包括@Override(方法重写)、@Deprecated(标记过时)和@SuppressWarnings(抑制警告)。自定义注解分为四类:1)基本注解(无元素);2)带元素的注解(如name/age);3)带默认值的注解(元素预设值);4)数组类型元素的注解(支持多值)。通过@Target指定作用范围,@Retention设置保留策略。注解可应用于字段、方法等,用于框架开发、代码分析等场景,能通过反射读取元素值。

2025-09-16 12:45:00 676

原创 Docker 常用命令详解与参数说明

Docker常用命令详解:本文系统介绍了Docker的核心操作命令,包含镜像管理(pull/build/rmi等)、容器操作(run/stop/exec等)、网络配置(network create/connect)和数据卷管理(volume create)四大类。重点解释了端口映射规则、容器版本查看方法及常见问题解决方案,并提供了MinIO容器的配置示例。通过语法说明、参数解释和实用示例,帮助用户快速掌握Docker的日常运维操作,包括批量操作容器等高效技巧。

2025-09-16 08:00:00 574

原创 从 0 到 1!宝塔面板部署前后端项目: SpringBoot+Vue+MySQL+Redis 图文教程(每步带截图,代码示例可直接使用),适合小白的保姆级攻略

本文详细介绍了使用宝塔面板部署前后端项目的完整流程。主要内容包括:部署前的资源准备(服务器、项目包、数据库文件);宝塔面板的安装与配置;前后端项目的本地打包方法;服务器环境搭建(Nginx、Java、MySQL等);代码上传与目录管理;数据库创建与SQL导入;前后端项目部署的具体步骤;反向代理配置解决跨域问题;端口放行与访问测试;以及常见问题排查方法。通过图文结合的方式,为开发者提供了从本地开发到服务器部署的一站式解决方案,特别适合需要快速上线的中小型项目。

2025-09-15 09:00:00 1542 2

原创 git回滚相关命令指南

Git历史查看与回滚操作指南:常用命令包括git log查看历史、git reset回滚本地提交(分--soft/--mixed/--hard三种模式)、git revert撤销远程提交。注意事项:本地回滚可使用reset,远程提交应优先使用revert创建新提交;强制推送(--force)会改写历史需谨慎;操作前建议备份,可用reflog恢复误操作。区分本地与远程提交对团队协作至关重要。

2025-08-22 10:52:12 650

原创 【手把手教学】Java TCP编程三部曲:单工→双工→多线程演进

本文介绍了Java网络编程中的TCP和UDP通信实现方法。在TCP部分,详细讲解了ServerSocket和Socket类的基本使用,包括一对一聊天、多线程优化及群聊功能的实现。UDP部分则介绍了DatagramSocket和DatagramPacket的基础通信以及多线程实现。此外,还涵盖了HTTP连接和文件下载操作,以及InetAddress类的域名解析功能。文章通过具体代码示例,展示了从基础通信到多线程优化的完整实现过程,为Java网络编程提供了实用参考。

2025-08-22 08:34:00 787

原创 Java对象流完整指南:从序列化到反序列化的实战详解

本文介绍了Java中的几种IO流操作:1.对象流(ObjectInputStream/ObjectOutputStream),用于对象的序列化与反序列化,重点讲解了如何读写基本数据类型、字符串和自定义对象,以及transient关键字的作用;2.内存流(ByteArrayInputStream/ByteArrayOutputStream),演示了内存中的字节数组操作;3.打印流(PrintStream/PrintWriter)和重定向技术,展示了如何将输出重定向到文件;4.随机访问流(RandomAcces

2025-08-21 09:09:14 768

原创 Java文件操作完整指南:从File类到I/O流的实战解析

本文系统介绍了Java文件操作与I/O流的核心知识。首先讲解了File类的基本用法,包括文件信息获取、路径处理(相对/绝对路径)和文件/目录操作。随后详细解析了字节流(FileInputStream/FileOutputStream)和字符流(Reader/Writer)的使用方法,涵盖基础读写、缓冲处理、编码转换等关键点。文章提供了丰富的示例代码,包括文件拷贝、文本读写等常见场景的实现方案,并强调了异常处理和资源释放的重要性。通过对比不同流的特点和适用场景,帮助读者理解如何根据实际需求选择合适的I/O处理

2025-08-21 08:30:00 607

原创 死锁与线程池基础知识及案例

本文系统阐述了Java并发编程中的两大核心问题:死锁现象与线程池应用。在死锁部分,通过哲学家就餐案例揭示了死锁产生的四大必要条件(互斥、请求保持、非剥夺和循环等待),并给出典型代码示例:两个线程互相持有对方所需资源(KuaiZi.a和KuaiZi.b)导致永久阻塞。同步关键字synchronized的使用及Thread.sleep()模拟的延迟操作共同构成了死锁场景,文中同时提出了避免死锁的四种策略。

2025-08-20 08:30:00 742

原创 生产者消费者模型与仓储模型案例解析

本文介绍了两种常见的多线程并发模型:生产者消费者模型和仓储模型。在生产者消费者模型中,通过synchronized同步机制和wait/notify通信机制,实现了单个/多个生产者与消费者之间的协调工作,确保数据同步和避免资源冲突。仓储模型则通过仓库类管理产品容量,使用队列模式实现先进先出的产品管理。两种模型都展示了Java多线程编程中解决资源共享、线程同步和通信的关键技术,包括synchronized关键字的使用、wait-notify机制的应用,以及在多生产者多消费者场景下使用notifyAll方法的重要

2025-08-19 08:30:00 631

原创 基于SpringBoot框架集成EasyExcel 详细教程(附完整代码解析,实现Excel文件导入导出)

本文介绍了使用EasyExcel实现Excel数据处理的完整流程。主要内容包括:1)通过Maven引入EasyExcel和Lombok依赖;2)使用@ExcelProperty注解定义实体类映射Excel表头;3)实现ReadListener接口编写数据监听器,逐行处理大数据;4)提供两种读取模式:监听器模式适合大数据场景,同步读模式适合小数据;5)扩展实现Excel数据写入功能;6)总结了常见问题解决方案,如表头匹配、Spring Bean注入和内存溢出问题。该方案支持百万级数据处理,实现了从Excel导

2025-08-18 08:30:00 2539

原创 IntelliJ IDEA HTTP Client 使用详细教程

IntelliJ IDEA的内置HTTPClient是一个功能强大的REST接口测试工具,支持GET/POST/PUT/DELETE等多种请求方法,可处理JSON/表单/文件上传等数据格式。该工具提供了环境变量管理、响应断言脚本、Token认证、历史记录保存等实用功能,通过.js脚本可实现自动化测试和变量提取。开发者可以快速创建.http文件进行接口调试,支持多环境切换(dev/test/prod)和请求链式调用,特别适合前后端联调、API测试和教学演示场景。其与IDE的无缝集成和快捷键支持进一步提升了开发

2025-08-17 08:30:00 585

原创 线程安全(三种常见实现方式)

本文介绍了Java多线程编程中实现线程安全的三种方法,通过售票系统案例演示如何解决多线程并发问题。方法一使用synchronized同步代码块,方法二采用同步方法,方法三利用Lock接口实现更灵活的锁控制。三种方案均有效解决了票数重复计算、遗漏售票和票号超限等问题,确保了共享数据的一致性和线程安全性。其中,同步代码块和方法适用于简单场景,而Lock接口提供更细粒度的锁控制,适合复杂并发需求。实验结果表明,这些方法都能正确实现多窗口协同售票1000张票的目标。

2025-08-16 09:00:00 690

原创 Java多线程中的线程局部变量共享

本文介绍了Java中实现线程局部变量共享的三种方法:1)使用ConcurrentHashMap以线程为键存储数据;2)扩展为共享包含多个属性的数据对象;3)使用ThreadLocal机制实现线程封闭。每种方法都通过核心代码和示例演示了如何让不同线程访问各自独立的数据副本,避免线程间干扰。ThreadLocal方法最为简洁高效,是Java推荐的线程局部变量实现方式。这些技术在多线程编程中确保数据线程安全性具有重要意义。

2025-08-15 08:30:00 639

原创 Java进阶:List底层

ArrayList与LinkedList底层实现及比较 ArrayList: 基于Object数组实现,默认初始容量10 扩容机制:当数组满时,自动扩容为原容量的1.5倍 最大容量为Integer.MAX_VALUE-8(部分JVM保留数组头信息) 添加元素时先检查容量,不足则扩容,效率受扩容影响 LinkedList: 基于双向链表实现,节点包含前后指针和元素值 无需扩容,添加元素只需创建新节点并调整指针 每个节点占用更多内存空间(存储前后指针) 比较: 添加:LinkedList更优(无扩容开销) 查询

2025-08-14 08:30:00 896

原创 Java进阶:map底层

Java集合框架分析摘要 本文主要分析了Java集合框架中的HashMap和TreeMap实现原理。HashMap采用数组+链表结构,默认容量16(必须为2的幂),最大容量2^30,负载因子0.75用于平衡空间和时间效率。当发生哈希冲突时会形成链表,影响性能。TreeMap基于红黑树实现,通过比较器(Comparator或Comparable)维护元素顺序,支持自然排序和自定义排序。TreeSet底层依赖TreeMap实现,元素作为键存储,值使用固定占位对象。两种数据结构各有特点:HashMap提供快速访问

2025-08-13 08:30:00 573

原创 后端SpringBoot集成 Swagger + Knife4j 接口文档全攻略(深度解析 + 排坑指南+常用注解)

本文详细介绍了如何在SpringBoot项目中集成Swagger和Knife4j来生成API文档。首先阐述了接口文档的重要性及Swagger+Knife4j的组合优势,随后分别给出了两个工具的具体集成步骤:从依赖引入、配置类编写到注解使用。特别针对SpringBoot不同版本提供了兼容性解决方案,并重点介绍了Knife4j的增强功能(文档导出、接口排序等)。文章还包含常见问题排查指南和最佳实践建议,最后对比了Swagger和Knife4j的适用场景,推荐生产环境优先选择Knife4j。

2025-08-12 08:30:00 1423

原创 MySQL + 宝塔面板使用完整教程

本文介绍MySQL基础操作与宝塔面板管理技巧,包括用户权限管理、数据库同步、安全设置等核心内容。重点讲解如何创建远程访问用户(CREATE USER...@'%')、授权特定数据库权限(GRANT ON db.* TO)、宝塔面板同步功能的安全使用方式,以及防火墙配置等安全实践。同时提供常见问题解决方案,如权限不足、数据库丢失等情况的处理方法,并强调定期备份、最小权限原则等数据库安全最佳实践。通过命令行备份(mysqldump)和权限查询(SHOW GRANTS)等实用命令

2025-08-11 08:30:00 684 1

原创 Java基础十六:线程

本文介绍了Java多线程编程的核心知识点,主要包括:1)创建线程的两种方式(继承Thread类和实现Runnable接口);2)线程优先级设置(1-10级);3)线程命名方法(构造方法传参或通过Thread类方法);4)线程控制方法(sleep休眠、yield礼让、join合并);5)线程中断方式(stop强制停止和interrupt状态中断);6)守护线程特性(随前台线程结束而终止)。文章通过具体代码示例演示了多线程资源竞争场景,并详细讲解了各类线程操作方法的实现原理和使用场景。

2025-08-10 09:00:00 199

原创 Java基础十五:异常与错误

本文介绍了Java中的错误(Error)和异常(Exception)处理机制。错误是指JVM系统内部错误或资源耗尽等严重情况,如StackOverflowError和OutOfMemoryError,通常无法恢复。异常分为运行时异常(如算术异常、空指针异常)和受检异常(如解析异常、类未找到异常)。异常处理机制包括捕获异常(try-catch-finally)、声明异常(throws)和手动抛出异常(throw)。try-catch块用于捕获并处理可能出现的异常,finally用于确保资源释放。

2025-08-09 08:30:00 172

原创 Java十四:Map

本文围绕Java中多种Map实现类及Collections工具类展开讲解。涵盖HashMap(无序、key唯一)、LinkedHashMap(有序、key唯一)、Hashtable(无序、key唯一、线程安全但低效)、TreeMap(key自然排序,支持内置/外置比较器)、ConcurrentHashMap(无序、key唯一、高效线程安全)的使用方法与核心特点,包括增删改查、遍历等操作。还涉及HashMap的value排序面试题、Properties处理配置文件,以及Collections工具类的排序、填充

2025-08-08 08:30:00 342

原创 Java基础十三: List

本文介绍了Java中几种重要集合类的高级应用与特性。1. LinkedList部分详细讲解了其作为双向链表的基本操作、特有方法以及实现队列和栈两种模式的应用;2. Vector部分分析了这个同步动态数组的线程安全特性及其历史发展,比较了与现代集合类的异同;3. Stack和HashSet部分分别阐述了栈结构的基本操作和HashSet基于哈希表的实现原理及特点。这些集合类各具特色,适用于不同的数据结构需求场景,理解它们的特性和适用环境对Java开发至关重要。

2025-08-07 08:30:00 1525

原创 Java基础十二:迭代器

本文介绍了Java中集合遍历的多种方式,重点讲解了foreach循环、Iterator和ListIterator的使用方法及特点。foreach循环提供简洁的遍历方式,但无法修改集合;Iterator支持遍历时安全删除元素;ListIterator则扩展了更多功能,如双向遍历、指定起始位置、修改/添加元素等。文章通过具体代码示例展示了每种遍历方式的实现,并强调了并发修改异常等注意事项。这些迭代器工具为Java集合操作提供了灵活性和控制力,是处理集合数据的重要技能。掌握这些方法能帮助开发者更高效、安全地进行集

2025-08-06 08:30:00 861

原创 Java基础十一:ArrayList

本文介绍了Java中ArrayList的基本使用和泛型应用。主要内容包括:1)ArrayList的创建、元素添加、删除、查询等基本操作;2)四种遍历方式(for循环、foreach、Iterator、ListIterator);3)泛型在ArrayList中的使用,包括自定义泛型类;4)泛型在接口中的实现方式;5)泛型限定(通配符?、extends和super的使用)。通过示例代码展示了如何创建类型安全的集合,以及如何利用泛型提高代码的可重用性和类型安全性。

2025-08-05 08:30:00 198

原创 Java基础十:枚举

本文介绍了Java中大数值运算类和枚举的应用。第一部分讲解BigInteger和BigDecimal类,分别用于处理大整数和高精度小数的加减乘除运算,包含构造方法和四则运算示例。第二部分详细讲解枚举的多种应用场景:1) 基础枚举实现季节类;2) 枚举常用方法如valueOf()和values();3) 状态机案例实现交通信号灯;4) 错误码枚举封装状态信息;5) 使用接口组织相关枚举;6) 策略枚举实现不同员工类型的薪资计算,通过抽象方法实现多态计算。文章通过完整代码示例展示了枚举在状态管理、错误处理和策略

2025-08-04 08:30:00 762

原创 全网最详细vue3入门至企业级开发教程(尚硅谷 天禹老师保姆级教程 )全文三万字

本文覆盖vue从基础到进阶的内容,Vue 3.0 核心特性与开发实践摘要 Vue 3.0 作为重大升级版本,主要优化包括: 性能提升:打包体积减少41%,渲染速度提升55%-133% 响应式重构:用Proxy替代defineProperty实现 组合式API:提供setup函数、ref/reactive等响应式API TypeScript支持:全面改进TS集成 工程创建方式: 推荐使用Vite构建:支持热重载和按需编译 兼容Vue CLI:但已进入维护模式

2025-08-03 10:55:39 1373

原创 Java基础九:字符串及常用类

本文摘要: 字符串处理类:介绍了String、StringBuffer和StringBuilder的使用方法及区别,包括字符串拼接、截取、大小写转换等操作,并分析了内存分配机制和线程安全性问题。 正则表达式应用:演示了通过正则表达式实现字符串替换(如电话号码脱敏)、邮箱验证、字符串分割和数据爬取等常见场景。 日期时间处理:讲解了Date、SimpleDateFormat和Calendar类的使用,包括日期格式化、解析和日历信息的获取。 常用工具类:涵盖Math类的数学运算、Random类的随机数生成、Run

2025-08-03 09:28:58 601

原创 Java基础八:多态

本文介绍了Java中多态、对象转型和内部类的核心概念。多态分为类的多态(子类对象指向父类引用)和接口多态(实现类对象指向接口引用),通过多个案例展示了交通工具类和USB设备的实现。对象转型部分讲解了向上转型(自动)和向下转型(强制),强调向下转型需要使用instanceof判断。内部类部分详细说明了五种类型:成员内部类(需先创建外部类对象)、静态内部类(可直接创建)、接口内部类(相当于静态)、局部内部类(方法内部定义)和匿名内部类(继承/实现并重写方法)。这些特性体现了面向对象设计的OCP原则,提高了代码的

2025-08-02 10:00:00 882

原创 Java基础七:类的概念

本文介绍了Java中Object类的基础知识及高级特性。主要内容包括:1)Object类作为所有类的基类,详解其equals()、getClass()、hashCode()和toString()方法;2)Object类的实际应用,演示如何重写equals和toString方法;3)通过String类深入理解Object类;4)final关键字的用法;5)抽象类及抽象方法的特性与应用;6)接口的定义、特点及JDK1.8新特性。文章包含大量代码示例,详细解析了面向对象编程中的核心概念,适合Java学习者系统掌握

2025-08-01 10:00:00 466

原创 Java基础六:面对对象

本文介绍了Java面向对象编程的核心概念:1.类与对象的基本结构,包括成员变量/方法、静态变量/方法的区别;2.封装特性,通过private修饰符和getter/setter方法实现数据保护;3.继承机制及super关键字的使用,子类可继承父类非私有属性和方法;4.方法重写的规则和应用场景。重点讲解了构造方法调用顺序、this/super关键字区别、封装工具类实现等实践技巧,并通过中国人/日本人继承Person类的案例演示了面向对象三大特性的具体实现。文章还分析了成员变量与局部变量、静态方法与成员方法的区别

2025-07-31 10:00:00 1728

原创 Java基础五:数组

本文介绍了Java中数组的基本操作。主要内容包括:1)一维数组的声明、初始化和遍历方式;2)数组排序(冒泡排序)和查找(线性查找、二分查找)的实现;3)数组复制(浅表复制和深表复制)的区别;4)数组扩容和删除的常见方法;5)数组作为方法参数和返回值的应用;6)可变参数的使用;7)Arrays工具类提供的排序、查找、复制等常用方法。文章通过代码示例详细演示了各种数组操作的实现方式,适合Java初学者学习数组的基本用法。

2025-07-30 10:00:00 1170

原创 Java基础四:方法

本文介绍了Java中方法的多种使用方式:1.静态方法的定义与调用,包括无参无返回值方法;2.带参数方法的实现及形参与实参的区分;3.带返回值方法的语法规则和注意事项;4.方法重载的条件与应用场景;5.递归思想的实现原理,通过阶乘和斐波那契数列案例展示;6.综合应用方法实现万年历功能,包含日期计算、闰年判断等方法组合。全文通过具体案例演示了各种方法的使用场景和实现技巧,强调方法功能单一性和代码复用性。

2025-07-29 14:30:00 626

原创 Java基础三:循环

本文介绍了Java中的三种循环结构(while、do-while、for)和四种流程控制语句(break、continue、return、label)。主要内容包括: while循环语法和使用场景,以及死循环的处理方式; do-while循环特点(先执行后判断)及其应用场景; 三种循环结构的比较与选择; 四种流程控制语句的功能区别:break跳出当前循环,continue跳过剩余代码继续下次循环,return结束方法,label标记循环; 万年历实现案例,演示了如何综合运用循环和控制语句解决实际问题。

2025-07-29 09:00:00 841

原创 Java基础二:常用语法

本文摘要: Java编程基础知识点总结:1.转义字符的使用方法及常见示例;2.常量的定义与三种命名规范(大驼峰、小驼峰、常量);3.Java执行语句分类(顺序、分支、循环、控制语句);4.if分支的多种形式及应用场景;5.switch分支语法及注意事项;6.for循环语法结构及典型应用案例。重点讲解了条件判断和循环控制的实现方式,包括健康值计算、成绩评定、运动会分组等实用案例,并比较了if和switch的适用场景差异。

2025-07-28 21:55:11 515

原创 Java基础一:运算符

逻辑运算符主要用于处理布尔类型的数据,其运算结果也是布尔类型。三目运算符(又称三元运算符)是Java中用于简化特定条件语句的工具。它的基本语法结构是:变量 = (表达式)?值1 : 值2;表达式: 必须是布尔类型(boolean),决定值1或值2赋值给变量。值1: 当表达式为true时赋值。值2: 当表达式为false时赋值。例如:10 : 20;// 输出 20。

2025-07-26 17:51:54 497

原创 JavaScript 数组常用 API

前端 JavaScript(尤其是数组 API)中,有很多类似后端 Java Stream 的丰富方法,它们各自承担不同的功能角色,如过滤、映射、归约、排序、去重、分组等。

2025-07-25 09:14:37 328

原创 stream流详细使用教程

实际开发中可根据需求组合使用上述操作(如先筛选再分组,再统计),大幅提升代码简洁性和可读性。:将流中的元素收集为集合(List/Set/Map)或进行统计、分组等操作,依赖。将流中每个元素转换为一个新流,再合并所有流为一个流(如:拆分字符串为流)将流中的元素逐步合并为一个值(如求和、求积等),支持自定义合并逻辑。用于对 stream 中的元素进行统计(最大值、最小值、数量等)。将流中的字符串元素拼接为一个字符串,支持分隔符、前缀、后缀。函数式接口),保留流中满足条件的元素,返回新的流。

2025-07-24 17:31:57 995

原创 一分钟快速回顾Java 集合框架

接口实现类是否有序是否线程安全是否可重复是否排序ListArrayList✅❌✅❌ListLinkedList✅❌✅❌ListVector✅✅✅❌SetHashSet❌❌❌❌Set✅❌❌❌SetTreeSet✅❌❌✅MapHashMap❌❌键 ❌,值 ✅❌Map✅❌键 ❌,值 ✅❌MapTreeMap✅❌键 ❌,值 ✅✅MapHashtable❌✅键 ❌,值 ✅❌。

2025-07-17 15:12:45 751

原创 快速回顾MyBatis常用注解及xml配置语法

注解的名称与 SQL 中的引用一致,避免参数传递失败。标签减少单条 SQL 执行次数,提升效率。定义 SQL 查询语句,直接写在方法上。处理关联关系(一对一或一对多)。为方法参数命名,提升可读性。使用后则与注解名一致。多表关联时,合理组合。更新数据库中的数据。从数据库中删除数据。

2025-07-15 11:34:39 247

空空如也

空空如也

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

TA关注的人

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