自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【关于Java的 I/O 流】

《Java I/O流核心指南》摘要: Java I/O流是程序与外界交换数据的通道,分为字节流(处理二进制)和字符流(处理文本)。关键要点:1)字节流使用InputStream/OutputStream,字符流用Reader/Writer;2)必须使用缓冲流(BufferedXXX)提升性能;3)推荐try-with-resources自动关闭资源;4)文本处理需显式指定编码(如UTF-8);5)对象序列化用ObjectStream。NIO适用于高并发场景,传统项目推荐Buffered包装+正确编码处理。

2025-08-11 11:47:02 582

原创 【关于Java的动态代理】

这篇文章通俗易懂地讲解了Java动态代理的核心概念和应用场景。主要内容包括:1)动态代理是运行时自动生成的"替身对象",JDK代理基于接口实现,CGLIB代理基于继承;2)详细演示了JDK动态代理的实现过程,通过InvocationHandler实现方法拦截和增强;3)对比了动态代理与静态代理的优势,动态代理无需重复编写代理类;4)总结了动态代理在Spring AOP、RPC框架等实际项目中的应用,并提供了面试常见问题的高分回答。文章强调动态代理是解耦利器,能实现核心业务与横切逻辑的分离

2025-08-11 11:41:26 416

原创 【关于Java的内部类】

本文深入解析Java内部类,从定义到应用场景全面覆盖。内部类是定义在另一个类中的类,具有直接访问外部类私有成员的独特优势。文章详细介绍了5种内部类:成员内部类(封装强关联逻辑)、静态内部类(工具类实现)、局部内部类(方法内临时使用)、匿名内部类(回调处理)和Lambda表达式(Java8简化版)。

2025-08-08 14:31:45 845

原创 【关于Java的序列化和反序列化】

《Java序列化与反序列化详解》摘要:本文用生活化比喻解析Java序列化机制,将对象转换成字节流的过程比作"过安检",反序列化则是"复活术"。重点对比了Java原生序列化(Serializable接口)和JSON序列化的优劣,推荐使用JSON实现跨语言、高性能的序列化方案。特别强调了serialVersionUID的版本控制作用,并解答了实际开发中的常见问题。文章还包含Redis缓存应用示例和面试高频问题解析,帮助开发者深入理解这项基础却关键的Java技术。

2025-08-08 11:18:35 801

原创 【关于Java 8 的新特性】

特性解决了什么痛点面试怎么说Lambda匿名类太啰嗦“让代码更简洁,函数可传递”Stream集合操作复杂“像 SQL 一样处理数据,声明式编程”Optional空指针异常“显式处理 null,提升健壮性”方法引用Lambda 还是有点长“复用已有方法,更简洁”新时间 API日期类难用且不安全“线程安全,API 设计合理”Java 8 不是“新语法”,而是“新思维”——从“命令式”走向“函数式”,从“防错”走向“设计安全”。

2025-08-07 16:11:03 885

原创 【关于Java中的String三兄弟】

本文深入解析Java中三种字符串处理类:String、StringBuilder和StringBuffer的核心区别。String是不可变类,线程安全但修改效率低;StringBuilder可变且高效,适用于单线程;StringBuffer通过同步机制实现线程安全,适合多线程环境。文章从底层实现、性能对比到适用场景进行全面比较,并提供了面试常见问题的标准答案,帮助开发者根据实际需求选择合适的字符串处理方式,提升代码效率与安全性。

2025-08-07 15:39:22 730

原创 【关于Java中==和equals( )和hashCode( )三者异同】

Java对象比较的核心要点:==比较内存地址或基本类型值;equals()默认比较地址,但可重写为内容比较;hashCode()生成对象哈希码。重写equals()时必须重写hashCode(),保证相等的对象哈希码相同。String类特殊之处在于字符串常量池优化可能使==返回true。正确理解这些概念对编写健壮代码和面试都至关重要,尤其在使用哈希表时需确保equals()和hashCode()的一致性。

2025-08-07 15:09:32 1176

原创 【关于Java的异常】

Java异常类层次结构详解:Throwable是根类,分为Error(系统级错误)和Exception(程序异常)。Exception又分为CheckedException(强制处理)和RuntimeException(运行时异常)。异常处理通过try-catch-finally实现,可使用throw主动抛出异常,throws声明可能抛出的异常类型。Java7引入try-with-resources自动管理资源,finally确保资源释放。

2025-08-07 10:48:30 699

原创 【关于Java的注解】

本文深入解析了Java注解的本质、工作原理和应用场景。注解本质上是继承自Annotation接口的特殊接口,通过编译器生成字节码,可被反射机制解析。根据生命周期分为SOURCE、CLASS和RUNTIME三种类型,其中RUNTIME注解可通过反射在运行时访问。注解可应用于类、方法、字段等不同作用域,广泛应用于框架配置简化(如Spring)、代码生成(如Lombok)和编译器检查(如@Override)。

2025-08-07 10:30:12 718

原创 【关于Java的反射】

本文深入探讨了Java反射机制,介绍其核心特性包括运行时类信息访问、动态对象创建和方法调用等。文章详细解析了反射的基本流程,从获取Class对象到创建实例、调用方法的过程,并列举了反射在数据库驱动加载、Spring框架依赖注入等实际应用场景。同时指出反射的局限性,如性能开销、封装性破坏等,并提供了面试常见问题及解答。通过本文,读者可以全面理解反射机制,掌握其在实际开发中的灵活运用。

2025-08-06 15:58:12 830

原创 【关于Java的对象】

本文深入讲解了Java对象管理的核心知识点:1. 对象创建方式包括new关键字、反射机制(Class.newInstance/Constructor.newInstance)、clone()方法和反序列化;2. 垃圾回收机制基于可达性分析算法,对象不可达时被回收,finalize()方法已不推荐使用;3. 访问私有成员可通过公共getter方法或反射机制(Field.setAccessible);4. 针对面试常见问题提供了标准答案。这些知识对Java开发和面试准备都具有重要价值,建议开发者合理选择对象创建

2025-08-06 14:35:18 866

原创 【关于Java的泛型(高级)】

本文深入探讨Java泛型的底层机制。通过类型擦除实现泛型,编译时检查类型安全,运行时擦除类型信息。介绍了通配符的上下限使用:? extends T用于读取(生产者),? super T用于写入(消费者),并讲解了PECS原则。同时指出泛型的局限性,如不能创建泛型数组、不能用于基本类型等。最后总结了泛型的核心概念和面试常见问题,帮助开发者深入理解Java泛型的实现原理和使用技巧。

2025-08-06 11:12:59 838

原创 【关于Java的泛型(基础)】

Java泛型是编译期的类型检查机制,通过类型参数化提高代码安全性和复用性。泛型类(如Box<T>)和方法(<T> void print(T))允许创建通用组件,通配符(?)处理未知类型。使用泛型(如List<String>)可避免运行时类型转换错误,减少代码重复。泛型三大优势:类型安全、免强转、代码复用。面试时可结合项目经验,说明如何用泛型设计通用组件,体现实际应用能力。泛型让代码更健壮,是Java开发必备技能。

2025-08-06 10:29:46 898

原创 【关于Java的浅拷贝和深拷贝】

本文解释了Java中浅拷贝和深拷贝的区别。浅拷贝仅复制对象本身,引用类型成员共享同一实例,修改会影响原对象;深拷贝则会递归复制所有引用对象,创建完全独立的新对象。实现深拷贝可通过重写clone()方法或序列化方式。文章还总结了面试常见问题及回答要点,指出选择拷贝方式需权衡性能与安全性,推荐优先考虑不可变对象和序列化实现。

2025-08-05 16:02:11 608

原创 【关于Java的final关键字】

摘要:Java中final关键字用于声明不可变的类、方法或变量。修饰类时禁止继承(如String类),确保安全性和封装性;修饰方法时禁止重写,提升性能;修饰变量时值不可变(基本类型)或引用不可变(引用类型)。final在多线程环境下具有安全发布特性,是构建不可变对象和线程安全的基础。最佳实践包括:工具类声明为final、核心方法使用final修饰、常量使用public static final。final通过限制可变性提升代码安全性、可维护性和性能。

2025-08-05 15:23:36 512

原创 【关于Java的面向对象】

面向对象编程通过封装、继承和多态三大特性实现代码复用和灵活性。封装隐藏内部细节,继承建立类层次关系,多态允许不同对象对同一消息响应。多态体现在方法重载、重写、接口实现和转型等方面,提高代码扩展性。面向对象设计遵循六大原则,如单一职责、开放封闭等。重载发生在同一类中同名不同参的方法,重写是子类重定义父类方法。抽象类不可实例化,可包含具体和抽象方法;接口定义规范,可多实现,主要包含抽象方法。静态变量和方法属于类而非实例,非静态内部类依赖外部实例,可访问其成员,而静态内部类独立。

2025-08-05 10:15:32 857

原创 【关于Java的数据类型】

Java数据类型分为基本类型和引用类型。基本类型有8种:4种整型(byte/short/int/long)、2种浮点型(float/double)、字符型char和布尔型boolean。它们有固定存储空间和默认值,如int默认0,boolean默认false。 类型转换包括自动转换(小转大)和强制转换(大转小),后者可能丢失精度。浮点数运算推荐使用BigDecimal避免精度问题。 包装类如Integer提供对象操作能力,支持自动装箱/拆箱,但性能低于基本类型。

2025-08-04 15:38:08 1030

原创 【关于Java的基本概念】

Java是一种跨平台、面向对象的编程语言,通过JVM实现"一次编译,到处运行"。它具有自动内存管理、多线程支持、安全性高等优点,但性能开销较大,语法相对繁琐。JVM、JDK和JRE构成Java运行环境:JVM负责执行字节码,JDK提供开发工具,JRE提供运行时环境。Java采用编译与解释混合模式,既编译为字节码又通过JVM解释执行。与解释型语言Python相比,Java执行效率更高但开发效率较低,Python则更简洁灵活但性能较弱。

2025-08-04 14:49:29 655

原创 【Vue 2.x】之指令详解

Vue 2.x 的指令系统提供了丰富的功能,帮助开发者轻松地实现数据绑定、事件处理、条件渲染、列表渲染等常见需求。通过合理使用这些指令,可以大大提升开发效率和代码可维护性。希望本文能帮助你更好地理解和使用 Vue 2.x 的指令语法。

2024-11-07 11:05:26 1377 2

原创 【Vue 2.x】之快速入门

在Vue.js中,生命周期钩子是指在Vue实例的生命周期中,某些特定的时刻会被自动调用的函数。:在实例创建完成后被立即调用,此时已完成数据观测、属性和方法的运算,$el属性还未显示出来,data已经被set,但是$el还没有挂载,所以不能访问到$el。:在挂载开始之前被调用:相关的render函数首次被调用,$el属性和data已经被初始化,但这仍然是在虚拟DOM打补丁之前。:在实例销毁之后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

2024-11-01 23:31:04 1159 1

原创 【JavaScript】之文档对象模型(DOM)详解

JavaScript 的强大之处在于它能够与 HTML 和 CSS 交互,动态地修改网页内容和样式。而实现这一功能的核心就是DOM(文档对象模型)。本文将深入探讨 JavaScript DOM,帮助你理解其工作原理并掌握其使用方法,每个方法都配有示例以便于理解。

2024-10-31 13:19:17 1331

原创 【JavaScript】之浏览器对象模型(BOM)详解

浏览器对象模型 (BOM) 是 JavaScript 的一部分,它允许你与浏览器窗口进行交互。不同于 DOM(文档对象模型)主要处理网页内容,BOM 关注的是浏览器窗口本身及其各种特性,例如导航、窗口大小、浏览器历史记录等等。理解 BOM 的核心对象和方法,可以让你更好地控制浏览器窗口、处理用户交互和获取浏览器信息,从而创建更丰富的 Web 应用。window 对象是 BOM 的顶层对象,代表着浏览器窗口本身。go():跳转到指定页面(相对当前页面)。assign():加载新的 URL。

2024-10-30 15:27:01 1285

原创 【JavaScript】入门详解

JavaScript已成为一门功能强大的多用途语言,可用于前端开发(例如使用 React、Angular 和 Vue 等框架)、后端开发(Node.js)、移动应用开发(React Native)、桌面应用开发(Electron)甚至游戏开发。将 JavaScript 代码保存在独立的 .js 文件中,然后在 HTML 中使用 标签的 src 属性引入。第二步:按照基本语法规则,编写3种输出语句的代码,并且添加注释,具体代码如下;array: 数组,一种特殊的对象,用于存储有序的数据集合。

2024-10-29 19:42:15 1300

原创 【CSS】入门详解

这背后神奇的力量就是 CSS(层叠样式表)。CSS 就像网页的化妆师,它负责网页的样式和布局,让原本枯燥的 HTML 结构变得生动有趣。

2024-10-28 19:41:06 1376

原创 【数据结构与算法】之 双栈实现队列 和 单队列实现栈

本文主要内容有两个,是如何用双栈实现队列和如何用单队列实现栈。(采用Java实现)

2024-10-27 15:11:25 1502

原创 【HTML】之form表单元素详解

本文详细介绍了 HTML 表单的各个方面,包括基本结构、常用元素、表单属性和表单验证。通过学习本文,你应该能够熟练地创建和使用 HTML 表单,并实现各种用户交互功能。希望这篇文章对你有所帮助!建议你结合实际案例进行练习,并查阅相关文档,以加深理解。

2024-10-26 22:18:04 7742 1

原创 【HTML】之基本标签的使用详解

本文介绍了HTML的基础知识和一些常用的标签,希望能够帮助你入门HTML。学习HTML是一个循序渐进的过程,需要不断练习和实践。记住,熟能生巧!后续可以继续学习 CSS 和 JavaScript,让你的网页更加美观和具有交互性。希望这篇博客对你有帮助!记住多练习,通过构建一些简单的网页来巩固你学到的知识。祝你学习愉快!

2024-10-25 19:47:42 1247

原创 【数据结构与算法】之栈 vs 队列

栈和队列是两种简单但功能强大的数据结构,理解它们的工作原理、实现方式以及应用场景对于编写高效的程序至关重要。如果需要按照先添加的元素先处理的顺序,则应该使用队列. 分析问题的核心需求,例如数据处理的顺序,才能做出最佳选择.可以使用链表实现栈,将栈顶元素作为链表的头节点。链表实现的栈可以动态调整大小,避免了数组实现的栈可能出现的溢出问题。使用链表实现队列,队首作为链表的头节点,队尾作为链表的尾节点。如果栈已满,则抛出异常(对于固定大小的栈)或动态扩展栈的大小(对于动态大小的栈)。如果栈为空,则抛出异常。

2024-10-24 19:37:34 860

原创 【数据结构与算法】之队列详解

队列(Queue)是一种重要的线性数据结构,遵循先进先出、后进后出的原则。本文将更详细地介绍队列的概念、特点、Java 实现以及应用场景。

2024-10-24 16:12:29 1858 1

原创 【数据结构与算法】之栈详解

栈(Stack)是一种基本的线性数据结构,遵循后进先出、先进后出的原则。本文将更详细地介绍栈的概念、特点、Java 实现以及应用场景。

2024-10-24 14:06:41 1430

原创 【数据结构与算法】之龟兔赛跑算法

本文主要介绍以环形链表相关的算法,采用Java语言实现,这类算法又称Floyd's Tortoise and Hare Algorithm (Floyd 龟兔赛跑算法),不得不收,这个原理挺神奇的就解决了,环形链表的问题。

2024-10-23 20:13:30 1119

原创 【数据结构与算法】之链表经典算法大集合

本文主要内容是几个关于链表的初级经典算法的分享,都采用Java语言实现,话不多说,立马开始!

2024-10-23 12:55:13 1199

原创 【数据结构与算法】之有序链表去重(不保留重复元素)

本文详细讲解了如何去除有序单链表中的所有重复元素(重复元素不保留),并提供了 Java 代码实现和详细的解释。希望本文能帮助各位看官更好地理解和掌握这个算法。

2024-10-22 19:07:51 1508

原创 【数据结构与算法】之有序链表去重(保留重复元素)

本文详细讲解了如何去除有序单链表中的重复元素,并提供了 Java 代码实现和详细的解释。希望能帮助各位看官更好地理解和掌握这个算法。

2024-10-22 18:32:46 740

原创 【数据结构与算法】之单链表删除倒数第N个节点

使用两个指针 fast 和 slow,fast 指针先向前移动 n 步,然后 fast 和 slow 指针同时向前移动,直到 fast 指针到达链表末尾。此时,slow 指针指向倒数第 n 个结点的前一个结点。我们只需要将 slow 指针的 next 指针指向 slow.next.next 即可删除倒数第 n 个结点。给定一个单链表的头节点 head 和一个整数 n,要求删除链表的倒数第 n 个结点,并返回新的头节点。将 slow.next 指向 slow.next.next,删除倒数第 n 个结点。

2024-10-21 20:08:59 1252 1

原创 【数据结构与算法】之单链表根据值删除元素

理解指针操作是解决链表问题的关键。给定一个有序单链表的头节点 head 和一个目标值 val,要求删除链表中所有值为 val 的节点,并返回新的头节点。**迭代法(使用哑节点):**最推荐使用,代码简洁,逻辑清晰,容易理解,且无需特殊处理边界情况。**迭代法(不使用哑节点):**比使用哑节点的迭代法略微复杂,需要处理头部节点的特殊情况。递归方法的思路是:如果当前节点的值等于 val,则删除当前节点,否则递归处理下一个节点。这种方法与使用哑节点的迭代法类似,只是不使用哑节点,需要对头节点进行特殊处理。

2024-10-21 19:24:59 1220

原创 【Java后端】之 ThreadLocal 详解

ThreadLocal 就像给每个线程提供了一个私有的“小盒子”,可以用来存储线程私有的数据,避免线程安全问题。当线程调用 ThreadLocal.get() 方法时,ThreadLocal 会根据当前线程找到对应的 ThreadLocalMap,然后根据自身作为键取出对应的值。在多人共用这个工具箱的时候,很容易出现混乱,比如有人拿走了你的锤子,或者你找不到合适的螺丝刀。ThreadLocal 提供了一种解决线程安全问题的方法,它让每个线程都拥有自己的变量副本,避免了共享变量的竞争。

2024-10-20 23:28:08 1175

原创 【数据结构与算法】之单链表反转

单链表反转是一个重要的算法,理解其原理并能够熟练地编写代码至关重要。本文提供的代码清晰易懂,希望能够帮助读者更好地理解和掌握这个算法。 通过使用prev、curr和next三个指针,我们可以优雅地实现链表的反转。记住关键步骤:保存下一个节点、反转当前节点指向、更新指针。 熟练掌握这个技巧,可以帮助你解决更多更复杂的链表问题。

2024-10-20 23:18:17 1696

原创 【数据结构与算法】之二分查找

二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它通过比较数组中间元素与目标值来工作,从而将搜索范围缩小到一半。

2024-10-19 17:57:53 1195

原创 【Java后端】一个软件的详细开发流程

本文旨在为读者提供一个全面的软件开发概览,从软件开发的流程到技术栈的介绍,我们将一步步深入探讨。

2024-10-19 11:48:45 3930 1

空空如也

空空如也

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

TA关注的人

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