自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 四个环节带你搞定Java中的I/O

本文简要介绍了Java I/O流的核心概念与基本使用模式。I/O流分为字节流和字符流两大类,分别处理二进制数据和文本数据。文章将I/O操作分为四个关键步骤:确定数据源、打开流、操作流(读写数据)以及关闭流(释放资源)。通过FileInputStream示例展示了完整的I/O流程,强调finally块中关闭流的重要性,以避免资源泄漏。文中还列出了常用的I/O类,包括字节流(FileInputStream/OutputStream)和字符流(FileReader/Writer)及其缓冲版本。所有I/O类均来自j

2026-06-28 20:17:41 205

原创 什么是哈希

哈希是一种将任意长度数据转换为固定长度值的数学函数,具有确定性、快速计算、单向性、抗碰撞和雪崩效应等核心特性。常见算法包括MD5和SHA-256。哈希在数据完整性验证、密码安全存储和数据结构优化中发挥关键作用:通过比较哈希值验证数据是否被篡改;系统存储密码哈希值而非明文,采用加盐和慢哈希算法增强安全性;哈希表基于哈希函数实现高效操作,时间复杂度接近O(1)。这些应用凸显了哈希在计算机科学中的重要性。

2026-06-26 20:40:05 255

原创 动态规划入门:一维数组的巧妙运用(C++版)

本文介绍了使用一维数组实现动态规划的方法。动态规划通过分解问题、存储子问题解来提高效率,一维数组因其空间高效、代码简洁而适用于线性问题。文章以斐波那契数列、爬楼梯和零钱兑换三个经典问题为例,展示了状态定义、转移方程推导和初始条件设置的关键步骤,并总结了通用解题流程(定义状态→找转移方程→设初始条件→确定遍历顺序)。此外,还列举了常见问题类型和空间优化等实战技巧,强调理解状态含义和最优子结构的重要性。一维DP的核心在于利用数组存储中间结果避免重复计算,是解决许多优化问题的有效工具。

2026-06-14 15:48:54 179

原创 Java多线程简单指南

Java多线程编程摘要 多线程允许程序并行执行多个任务,提高效率和响应速度。线程是进程内的执行单元,共享进程内存空间。多线程优势包括:提高CPU利用率、改善响应性、简化并发模型、利用多核CPU。Java创建线程的三种方式:继承Thread类(简单)、实现Runnable接口(推荐)、实现Callable接口(可返回结果)。线程生命周期包括新建、就绪、运行、阻塞和终止五种状态。常用线程控制方法有start()、join()、sleep()等。线程安全问题需通过同步机制解决,如synchronized关键字或L

2026-06-06 11:09:01 275

原创 面向对象设计的SOLID原则:核心概念与实战运用指南

SOLID原则是面向对象设计的五大核心原则,旨在提高代码的可维护性和扩展性。它们包括:单一职责原则(SRP,一个类只做一件事)、开闭原则(OCP,对扩展开放对修改关闭)、里氏替换原则(LSP,子类可替换父类不影响程序行为)、接口隔离原则(ISP,避免臃肿接口)和依赖倒置原则(DIP,高层模块依赖抽象而非具体实现)。通过示例代码展示了如何遵循这些原则重构代码,如拆分职责、使用接口隔离功能、依赖注入等,使系统更灵活、易维护且适应变化。

2026-05-30 18:00:48 188

原创 Java的封装与开闭原则:面向对象设计的核心基石

文章摘要 本文深入探讨了面向对象编程中两个核心设计原则:封装和开闭原则。封装通过访问修饰符隐藏实现细节,仅暴露必要接口,提高了代码安全性和可维护性。开闭原则强调对扩展开放、对修改关闭,通过抽象和多态实现功能扩展而不修改原有代码。文章通过Java代码示例展示了如何正确应用这些原则:封装示例演示了如何保护Student类数据,开闭原则示例则通过Shape接口实现可扩展的图形面积计算。这两个原则共同构成了构建健壮、可扩展Java应用程序的基础,能有效降低代码耦合度,提高系统稳定性。

2026-05-26 17:24:57 376

原创 二叉树的创建和简单遍历(递归)

本文介绍了二叉树的基本概念和特性。二叉树是一种每个节点最多有两个子节点的树形结构,具有根节点、叶子节点等基本组成部分。文章详细讲解了满二叉树、完全二叉树、二叉搜索树和平衡二叉树等常见类型,并给出了链式存储的代码实现。重点阐述了二叉树的三种遍历方式(前序、中序、后序)及其递归实现代码。最后强调二叉树是数据结构学习的基础,掌握二叉树对理解更复杂的数据结构至关重要。全文系统性地梳理了二叉树的核心知识点,为数据结构学习提供了清晰的框架。

2026-05-18 21:30:14 179

原创 模拟计算器(利用c++完成)

本文介绍了如何用C++实现一个支持加减乘除和括号运算的计算器。核心思路是通过递归处理括号表达式,先计算最内层括号内的算式,再逐步向外计算。具体实现分为三步:1)定位并提取最内层括号内的表达式;2)将数字和运算符分别存储到数组中;3)按照先乘除后加减的顺序进行运算。文章详细讲解了数字提取、运算符处理以及运算顺序控制的实现方法,并提供了完整的代码示例。该计算器能够正确处理包含小数点和多种运算符的复杂表达式。

2026-05-10 22:37:31 353

原创 编程新手必会(应能手搓)的三种排序算法和应了解思路的重要排序算法

本文介绍了四种常见排序算法及其实现。冒泡排序通过相邻元素比较交换实现排序,时间复杂度O(n²);选择排序通过选择最小值放到已排序末尾实现排序;插入排序将元素逐个插入已排序序列。这三种简单排序算法时间复杂度均为O(n²)。最后介绍了高效的快速排序,平均时间复杂度O(n log n),并展示了C++中对vector、数组和结构体的快速排序实现方法,包括使用lambda表达式进行自定义排序。这些排序算法在实际应用中可根据数据规模和性能需求选择使用。

2026-05-04 19:42:21 236

原创 利用IDEA查看Java的String类源码并解释几个用法

本文介绍了Java String类的两种常用方法:1) 字符数组截取构造方法String(char[],int,int),通过指定起始位置和长度从字符数组创建子字符串;2) 字符串比较方法equals(),用于严格比较字符串内容而非地址。示例代码展示了如何从"hello world!"字符数组截取"world"子串,以及如何比较两个字符串内容是否相同。这两种方法分别解决了字符串构造和内容比较的实际需求,是String类的基础但重要的功能。

2026-04-26 22:24:42 52

原创 C++常用字符串函数介绍

本文介绍了C++中字符串处理的各种常用函数,包括字符串构造、长度获取、比较、插入、拼接、删除、替换、大小写转换、查找和排序等功能。通过示例代码详细展示了每个函数的使用方法,如string构造函数可以生成空串或复制子串,size()和length()获取字符串长度,append()和+操作符进行字符串拼接,erase()删除字符串内容,replace()实现字符替换,transform()进行大小写转换,以及find()系列函数进行字符串查找等。这些函数能够帮助开发者更高效地处理字符串操作,提升编程效率。

2026-04-19 21:53:17 406

原创 用回溯实现DFS

本文介绍了使用回溯法实现DFS(深度优先搜索)的基本原理和实现步骤。DFS通过递归方式"一条路走到底",主要包含四个关键步骤:边界检查与剪枝、条件检测、递归调用和回溯操作。文章通过一个最短路径问题的C语言代码示例,展示了如何用visited数组标记访问状态、剪枝优化搜索过程、递归遍历邻接节点以及回溯恢复状态。该方法适用于路径类问题,剪枝策略能显著提升性能,回溯操作确保状态完整性。完整代码演示了从节点1到节点n的最短路径搜索过程。

2026-04-12 23:01:08 57

空空如也

空空如也

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

TA关注的人

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