- 博客(31)
- 收藏
- 关注
原创 IO流专栏
本文系统梳理了Java IO流的核心知识体系,涵盖字节流与字符流的区别、缓冲流工作原理、转换流作用、资源关闭方式、序列化机制等关键知识点。文章详细解析了IO流分类、核心体系结构,并针对面试高频考点提供解答思路,如字节流/字符流选择依据、缓冲流效率提升原理等。同时介绍了NIO与传统IO的区别,以及文件复制的实战代码示例。最后总结了面试准备建议,帮助开发者全面掌握Java IO这一重要技术点。
2025-08-26 19:08:35
622
原创 多线程专栏
本文介绍了Java多线程编程的基本概念和实现方法。主要内容包括:1. 多线程的概念与作用,区分并发和并行;2. 三种创建线程的方式:继承Thread类、实现Runnable接口、实现Callable接口;3. 线程常用方法如setName/getName、sleep、setPriority等;4. 线程安全问题产生原因及解决方案(synchronized关键字和Lock接口);5. 线程池的使用方法。文章通过代码示例详细说明了各种线程操作的使用场景和注意事项,为Java多线程编程提供了实用指导。
2025-08-26 11:26:35
768
原创 一文拿下JVM 深度剖析:内存模型、垃圾回收机制与性能优化
Java虚拟机(JVM)核心机制解析 摘要:本文系统介绍了JVM的核心组成与工作原理。首先阐述了JDK、JRE和JVM的层级关系:JDK包含JRE和开发工具,JRE包含JVM和核心类库。然后深入分析了JVM的体系结构,包括类加载机制(双亲委派模型)、运行时数据区(堆、栈、方法区等)以及执行引擎(解释器与JIT编译器)。重点讨论了内存管理机制,包括堆内存分代模型(新生代/老年代)和垃圾回收算法(标记-清除、复制、标记-整理等),并比较了不同GC收集器的特点。最后总结了JVM调优原则。
2025-08-25 14:46:43
1495
原创 Java异常专栏
Java异常体系分为Error和Exception两大类。Error是系统严重错误,程序无法处理;Exception又分为RuntimeException(运行时异常,无需强制捕获)和CheckedException(检查异常,必须捕获或声明抛出)。异常处理主要通过抛出(throw/throws)和捕获(try-catch-finally)两种方式,其中try-with-resources能自动管理资源关闭。处理原则包括:底层抛异常上层处理、具体异常优先捕获、资源释放放finally、避免吞异常。
2025-08-25 09:35:11
836
原创 一文读懂 Java 中的 ==、equals () 与 hashCode ():原理 + 避坑指南
Java中==、equals()和hashCode()的区别与联系:==比较基本类型的值或引用类型的地址;equals()默认比较地址,重写后可比较内容;hashCode()用于哈希表,需与equals()保持一致。重写equals()必须同时重写hashCode()以保证哈希表正确性。字符串比较注意常量池机制,包装类比较注意缓存范围。三者共同确保对象比较和存储的正确性。
2025-08-20 22:58:16
818
原创 SpringTask入门
本文介绍了Spring框架自带的轻量级定时任务工具SpringTask的使用方法。主要内容包括:1. SpringTask的核心优势(轻量级、易用性、灵活性)和适用场景;2. 快速入门指南,包括注解配置和四种调度方式(固定延迟、固定频率、初始延迟、Cron表达式);3. Cron表达式的详细语法和常用示例;4. 进阶配置实现并行执行任务;5. 开发中的注意事项和最佳实践。通过本文可以掌握SpringTask的基本使用和核心功能,适用于中小型项目的单机定时任务需求。
2025-08-20 15:03:42
1033
原创 Java基础数据类型笔试面试中的“坑”
Java基础类型深度解析:8种基本数据类型是Java语言的核心考点,笔试面试中常出现关于类型取值范围、浮点精度、类型转换等"坑"。本文系统梳理了基础类型的核心知识点,包括自动类型转换规则、包装类的缓存机制、char类型的Unicode特性等常见陷阱。重点分析了byte溢出、浮点数比较、自动装箱拆箱等高频错误,并给出比较浮点数用Math.abs()、包装类用equals()等实用避坑建议。掌握这些基础类型细节对开发健壮代码和应对技术面试都至关重要。
2025-08-18 20:25:00
900
原创 遍历的多种方式
本文系统梳理了常见数据结构的遍历方式及其适用场景。核心遍历方法包括:下标遍历(适合数组/顺序表)、增强for循环(通用简洁)、迭代器遍历(适合链表/集合)、函数式遍历(Lambda表达式)、倒序遍历和递归遍历(适合树形结构)。不同数据结构有最优遍历选择:数组推荐下标遍历,链表适合迭代器,集合类宜用增强for循环,HashMap优先entrySet()遍历。需注意避免遍历中修改集合导致的异常,性能敏感场景应选择最高效的遍历方式。正确选择遍历方法需综合考虑数据结构特性、业务需求和代码可读性,是数据处理的关键基础
2025-08-18 12:01:33
626
原创 快速排序专栏
快速排序是一种基于分治思想的高效排序算法,由Tony Hoare于1960年提出。文章详细解析了快速排序的核心原理、Java实现和优化策略。算法通过选取基准值将数组分为左右两区并递归排序,平均时间复杂度为O(nlogn)。文章提供了完整的Java实现代码,重点分析了分区操作的实现细节,并探讨了三数取中、小数组优化等性能提升方法。快速排序因其优异的平均性能和原地排序特性,在大规模数据排序和内存受限场景中表现突出,但需注意其在有序数据下的最坏情况和不稳定性问题。
2025-08-14 19:39:51
564
原创 归并排序专栏
本文全面解析归并排序,从算法思想到实践应用。归并排序采用"分治合"策略,将数组递归分解至单个元素后有序合并,保证稳定性和O(nlogn)时间复杂度。文章详细演示了排序流程,提供了Java实现代码,并分析其性能特点:最佳/最坏情况均为O(nlogn),但需O(n)额外空间。针对实际应用提出三项优化:小数组改用插入排序、避免不必要合并、复用临时数组。归并排序特别适合需要稳定排序的外部数据、链表及大数据处理场景,是理解分治算法的经典案例。
2025-08-14 16:13:06
1054
原创 希尔排序专栏
希尔排序是一种改进的插入排序算法,通过增量分组策略提升效率。它将数组按间隔分为子序列进行插入排序,逐步缩小间隔直至1。文章详细解析了希尔排序的Java实现,包括增量序列初始化、三重循环结构和排序过程。时间复杂度约为O(n^(3/2)),空间复杂度为O(1),属于原地但不稳定的排序算法。希尔排序适合中等规模数据集,在内存受限环境中表现优异。算法通过"宏观调整+微观优化"的策略,有效解决了插入排序处理大规模逆序数据的低效问题。
2025-08-14 12:04:25
785
原创 插入排序专栏
本文详细解析了插入排序算法,包括其工作原理、Java实现和时间复杂度分析。插入排序通过将数组分为已排序和未排序区间,逐步将元素插入到正确位置,平均和最坏时间复杂度均为O(n²),最好情况为O(n)。文章分析了不同情况下的性能表现,指出其适用于小规模或基本有序数据,并讨论了优化思路(如减少交换次数和使用二分查找)。作为稳定且空间复杂度O(1)的原地排序算法,插入排序在特定场景下效率较高,也可作为复杂算法的子过程。
2025-08-14 09:49:43
994
原创 选择排序专栏
本文全面解析选择排序算法,包括其工作原理、Java实现及优化方法。选择排序通过每次选择未排序部分的最小值并按顺序放置实现排序,时间复杂度始终为O(n²),空间复杂度为O(1)。文章详细展示了基础实现代码并提出了双向选择排序的优化方案,同时分析了该算法的稳定性、交换次数特点和适用场景,指出其适合小规模数据、内存有限或交换成本高的场景。虽然效率不高,但选择排序作为入门算法,有助于理解排序基本原理。
2025-08-13 23:44:58
974
原创 冒泡排序专栏
本文介绍了冒泡排序这一经典算法,从基本原理、实现步骤到优化方法进行了详细阐述。冒泡排序通过相邻元素比较交换实现排序,时间复杂度为O(n²),空间复杂度O(1)。文章通过具体示例演示了排序过程,并提供了两种优化方案:标志位检测和记录最后交换位置。虽然冒泡排序效率不高,但简单易懂,适合小规模数据排序和教学场景。最后强调应根据实际需求选择合适的排序算法。
2025-08-13 22:08:56
763
原创 一文拿下Spring Cache
SpringCache是Spring框架提供的缓存抽象层,通过注解简化缓存操作。核心注解包括@Cacheable(缓存查询)、@CacheEvict(清除缓存)和@CachePut(更新缓存)。使用需先启用@EnableCaching,并配置缓存管理器(如Redis)。相比手动操作RedisTemplate,SpringCache具有更低侵入性和更高开发效率,只需在方法上添加注解即可自动管理缓存,而无需编写手动判断和设置缓存的代码。它统一了不同缓存实现的调用方式,让开发者专注于业务逻辑而非缓存细节。
2025-08-12 11:48:59
438
原创 Java基础知识总结(超详细整理)
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了 C++里难以理解的多继承、 指针等概念,因此Java语言具有功能强大和简单易 用两个特征。Java语言作为静态面向对象编程语言的 代表,极好地实现了面向对 象理论,允许程序员以优雅的思维方式进行复杂的编程。所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上 运行。实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安 装相应的java虚拟机, 该系统就可以运行java程序。字节码。
2025-08-12 00:42:43
1714
原创 HttpClient入门
Apache HttpClient是一个Java HTTP客户端库,支持HTTP/1.1和HTTP/2协议,用于Web服务交互。核心组件包括HttpClient(管理连接)、HttpRequest(封装请求)、HttpResponse(封装响应)和RequestBuilder(构建请求)。使用流程:1)添加Maven依赖;2)创建HttpClient实例;3)构建请求对象(GET/POST等);4)执行请求获取响应;5)处理响应数据;6)关闭资源。支持高级配置如超时设置、请求头添加和异步请求(HttpAsy
2025-08-11 14:22:34
389
原创 java中的数组、集合
本文摘要:文章系统介绍了Java数组及集合框架的核心知识点。数组部分涵盖基本特性、初始化方式、多维数组和常见异常,重点比较了数组与集合的区别。集合部分详细解析了单列(Collection)和多列(Map)集合体系,包括List接口的ArrayList、LinkedList实现原理及线程安全替代方案,Set接口的HashSet、LinkedHashSet底层结构,以及Map接口下HashMap、LinkedHashMap、TreeMap等实现类的特性和应用场景。特别分析了HashMap的扩容机制、线程安全问题
2025-08-08 17:28:05
666
原创 Redis入门
Redis是一个高性能内存数据库,支持多种数据结构。摘要:Redis是基于内存的键值数据库,支持字符串、哈希、列表、集合和有序集合五种数据类型,提供丰富的操作命令。可通过客户端工具连接服务端进行操作,支持16个默认数据库。企业应用中需注意缓存击穿/雪崩问题,可通过哨兵模式(主从复制+自动故障转移)或集群模式(数据分片+高可用)确保稳定性。Java开发可通过Spring Data Redis操作,防范缓存穿透可采用参数校验、空对象缓存或布隆过滤器方案。
2025-08-06 15:06:58
744
原创 一文拿下Spring AOP
AOP(面向切面编程)是一种解耦横切关注点的编程范式。核心概念包括:切面(封装通用逻辑的类)、连接点(程序执行点)、切入点(筛选规则)和通知(拦截后执行的操作)。Spring AOP通过@Aspect标识切面类,@Pointcut定义拦截规则,配合5种通知注解(@Before、@After等)实现日志、权限、事务等功能的模块化管理。典型应用场景包括方法调用监控、通用字段填充等,通过动态代理在运行时织入业务逻辑,显著提升代码复用性和可维护性。
2025-08-05 15:02:57
1046
原创 项目统一返回、全局异常处理
本文介绍了API开发中统一返回结构和全局异常处理的实现方案。通过设计包含code、message、data三个属性的统一响应结构,规范化前后端交互。采用@RestControllerAdvice注解实现全局异常拦截,针对业务异常、参数校验异常等不同类型进行差异化处理,并封装为统一格式返回。文章还提供了自定义业务异常类、前端交互示例和注意事项,建议生产环境区分开发/生产模式,使用枚举定义状态码。该方案可提升系统可维护性和前后端协作效率,适用于现代前后端分离架构。
2025-08-04 16:54:46
363
原创 拦截器和过滤器
过滤器是 Servlet 规范定义的组件,工作在请求进入 Servlet 容器之后,Servlet 处理之前,主要用于对请求和响应进行预处理和后处理。它可以修改请求内容、设置响应头、进行编码转换等,是 Java Web 中最底层的拦截机制。过滤器和拦截器作为 Web 开发中的重要组件,各自在不同层面解决问题。过滤器基于 Servlet 规范,适合处理与容器相关的通用功能;拦截器基于 Spring 框架,适合处理与业务相关的增强功能。
2025-08-03 22:52:23
568
原创 Cookie、Session、Token
本文系统解析了Cookie、Session和Token三种网络身份认证技术。Cookie作为客户端存储的小型文本文件,可实现基础状态保持但安全性不足;Session通过服务器端存储状态信息提升了安全性但增加了服务器负担;Token采用加密字符串实现无状态认证,兼具安全性和扩展性。三者演进体现了从依赖服务器存储到客户端证明的技术发展路径:Cookie提供基础存储载体,Session实现服务器记忆,Token则支持分布式认证。现代应用中,三种技术根据场景互补使用,其中Token因适应分布式架构和跨平台需求成为主
2025-08-03 20:39:34
534
原创 JWT令牌
JWT(JSON Web Token)是一种用于安全传输信息的数字签名令牌,由Header、Payload和Signature三部分组成。其核心功能是实现无状态的身份验证,用户登录后生成包含用户信息的JWT令牌,客户端存储并在后续请求中携带,服务器通过验证签名和有效期来确认身份。相比传统的Session-Cookie机制,JWT无需服务器存储会话信息,减轻了服务器压力。本文详细.阐述了交互流程。
2025-08-03 16:16:32
873
原创 数据结构与算法
本文系统介绍了数据结构与算法的基础知识,重点讲解了常见数据结构的实现原理和典型应用。内容涵盖线性结构(数组、链表、栈、队列)、非线性结构(二叉树、堆、图)以及哈希表等核心数据结构,详细分析了它们的时间/空间复杂度特性。文章还通过Java代码示例展示了动态数组、单链表、循环队列、二叉搜索树等数据结构的实现方法,并深入探讨了各类数据结构在算法设计中的应用场景,如DFS/BFS图遍历、堆排序、哈希查找等。
2025-07-31 19:21:43
912
原创 Nginx入门
Nginx是一款高性能的开源Web服务器和反向代理服务器,由俄罗斯工程师Igor Sysoev开发。它采用事件驱动架构,能够高效处理高并发连接,常用于HTTP服务、负载均衡、邮件代理等场景。与传统服务器如Apache相比,Nginx资源占用更低,适合现代高流量网站。Nginx支持模块化设计,可通过扩展模块增强功能,例如支持HTTP/2、gzip压缩、SSL/TLS加密等。其配置文件采用层级结构,语法简洁,便于管理。
2025-07-18 17:05:41
560
原创 SpringMVC的理解、原理及示例
摘要:SpringMVC是基于MVC模式的Web框架,核心为DispatcherServlet,通过HandlerMapping、Controller等组件处理请求。常用注解包括@RequestMapping(URL映射)、@RequestParam(参数绑定)、@RequestBody(JSON解析)等,特别适合RESTful API开发。RESTful是一种基于HTTP方法的架构风格,SpringMVC通过@RestController等注解实现RESTful服务,将HTTP方法与资源操作对应,例如GE
2025-07-18 14:49:01
532
原创 Spring Bean的生命周期(由浅到深5、7、10)
Spring Bean生命周期详解摘要:Spring Bean生命周期包含核心5步(实例化、属性赋值、初始化、使用、销毁),扩展为7步(加入BeanPostProcessor处理)和完整10步(增加Aware接口回调、注解处理)。通过XML配置和Java代码示例演示了不同阶段的执行顺序,包括@PostConstruct/@PreDestroy注解、InitializingBean/DisposableBean接口以及自定义init/destroy方法的使用。
2025-07-17 19:42:35
253
原创 mysql入门
这是一份持续更新的MySQL的学习笔记,记录了从入门的到进阶中的知识点,涵盖核心内容。后续会加入面试题的内容(大概60/70道)。由于笔者水平有限,笔记中难免会有疏漏或偏差,恳请指正。
2025-07-01 12:35:15
825
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人