- 博客(55)
- 收藏
- 关注
原创 Java进阶学习之Stream流的基本概念以及使用技巧
摘要:Java8 Stream流是函数式数据处理API,通过管道操作高效处理集合数据。其核心特点包括无存储、函数式风格、延迟执行和链式调用。Stream由数据源、中间操作(filter/map/sorted等)和终端操作(collect/forEach等)组成。使用流程:先创建流(集合/数组/直接创建),再链式调用中间操作进行过滤/映射/排序等,最后执行终端操作获取结果。实战技巧包括避免嵌套循环、使用并行流加速处理、短路优化及分组分区等。合理使用Stream可使代码简洁性提升50%以上,但需注意流的一次性消
2025-08-14 17:34:28
402
原创 Java集合学习之forEach()遍历方法的底层原理
本文分析了Java集合中forEach()方法的实现原理。forEach()基于函数式接口Consumer和迭代器模式,通过lambda表达式实现元素遍历操作。ArrayList和HashMap等集合类重写了forEach()方法以提升性能,分别采用数组直接遍历和桶数组遍历方式。与Stream API的forEach()不同,集合的forEach()保证遍历顺序。文章通过源码分析揭示了forEach()的工作机制,指出其本质是通过Consumer接口的accept方法实现回调,并以增强for循环完成遍历。理
2025-08-12 23:33:53
282
原创 Java进阶学习之不可变集合
Java不可变集合是指创建后内容不可修改的集合,具有线程安全、内存高效等优势。文章介绍了两种创建方式:Java9+的List.of()/Set.of()/Map.of()方法直接创建真不可变集合,以及Java8及之前使用Collections.unmodifiableXXX()创建视图(依赖原集合)。对比分析了两种方式的区别,并演示了与可变集合的转换方法。适用场景包括配置信息、多线程共享数据等。重点指出Java9+的of()方法创建的是真正不可变的集合,而unmodifiableXXX()会随原集合改变。掌
2025-08-12 21:56:28
1212
原创 Java学习 -- 可变参数与Collections工具类
Java可变参数(Varargs)允许方法接受不定数量参数,使用"..."语法,需作为最后一个参数。优点在于代码简洁灵活,但存在性能开销和重载歧义风险。Collections工具类提供静态方法操作集合,包括排序(sort)、查找(binarySearch)和替换(replaceAll)等功能。二者可结合使用,如利用可变参数创建集合。使用时需注意类型安全、性能影响和方法重载问题。
2025-08-11 23:33:17
541
原创 Java学习进阶Map接口下的实现类详解
本文对比分析了Java中Map接口的三种主要实现类:HashMap、LinkedHashMap和TreeMap。HashMap基于哈希表实现,提供O(1)的操作性能但不保证顺序;LinkedHashMap继承HashMap并维护双向链表,支持插入顺序或LRU访问顺序;TreeMap基于红黑树实现按键排序,提供O(logn)操作和范围查询功能。文章通过代码示例展示了各类的使用场景和特性差异,包括哈希冲突处理、LRU缓存实现和自定义排序等。不同实现类在性能、顺序性和线程安全性方面各有侧重,开发者可根据需求选择最
2025-08-11 17:09:13
351
原创 Java进阶之双列集合Map接口下的通用方法
摘要:Java中的Map接口是处理键值对集合的核心工具,具有键唯一、值可重复、多数实现无序的特点。它提供put()/get()等基础方法实现增删查改操作,支持通过keySet()/values()/entrySet()三种方式遍历元素。HashMap是常用的无序实现,LinkedHashMap和TreeMap则提供有序支持。Map在Java集合框架中占据重要地位,广泛应用于数据存储和快速查找场景。
2025-08-11 16:22:47
476
原创 Java进阶之单列集合Set接口下的通用方法
本文介绍了Java集合框架中的Set接口及其常见实现类。Set接口继承自Collection,主要特点是不允许重复元素且无序(HashSet)或有序(TreeSet、LinkedHashSet)。文章详细讲解了Set的核心方法:添加(add/addAll)、删除(remove/clear)、检查(contains/isEmpty)等操作,并通过代码示例展示了这些方法的使用。同时比较了三种主要实现类:基于哈希表的HashSet(无序高效)、维护插入顺序的LinkedHashSet和基于红黑树的TreeSet(
2025-08-10 22:55:11
666
原创 Java学习进阶 -- 泛型的继承和通配符及综合练习
本文探讨了Java泛型与继承的关系。核心内容包括:1)泛型本身不具备继承性,即使A是B的子类,Generic<A>也不是Generic<B>的子类;2)泛型容器中的元素仍遵循继承规则;3)通过三种通配符(无界<?>、上界<? extends T>、下界<? super T>)在泛型中实现类型安全操作。文中通过Animal/Dog示例演示了泛型容器如何使用继承关系,并强调了通配符在连接泛型与继承体系中的作用,以及编译时类型安全检查的重要性。
2025-08-10 16:37:00
247
原创 Java学习进阶 -- 泛型编程
Java泛型是Java5引入的重要特性,通过类型参数化实现编译时类型安全检查和代码复用。主要内容包括:1)核心概念:类型参数化(如<T>)和类型擦除机制;2)泛型类:定义带类型参数的类(如Box<T>),可创建类型安全容器;3)泛型方法:独立于类的类型安全方法(如<T> void printArray),支持类型推断;4)泛型接口:带类型参数的接口,实现类可指定具体类型。泛型能够消除强制类型转换,避免ClassCastException,提高代码重用性和安全性。
2025-08-10 16:00:40
354
原创 Java进阶之单列集合List接口下的通用方法
Java List接口是集合框架中的有序集合,支持元素重复和索引访问。本文详细介绍了List的核心特性:有序性、允许重复元素、继承自Collection接口及允许null值。重点讲解了List特有的索引操作方法(add/get/set/remove等)并提供了完整示例代码。文章还对比了五种遍历方式,特别分析了普通for循环和ListIterator的适用场景及特点,同时提及了迭代器、增强for循环和forEach方法。最后提醒注意remove方法的重载问题,区分按索引删除和按对象删除的不同用法。
2025-08-09 22:59:41
822
原创 Java学习进阶--集合体系结构
Java集合框架是Java核心库中用于存储和操作数据的重要组件,主要分为单列集合Collection和双列集合Map两大分支。Collection包括List(有序可重复)、Set(无序唯一)和Queue(队列)等子接口,提供丰富的操作方法如增删改查和迭代遍历。Map用于存储键值对,强调键的唯一性和快速查找,常见实现类有HashMap、TreeMap等。本文详细介绍了Collection和Map的核心概念、常用方法及实现类特性,并提供了代码示例演示集合的基本操作和遍历方式。掌握集合框架对Java开发者至关重
2025-08-08 23:09:33
1350
原创 Java学习Collection单列集合中的三种通用遍历方法
Java集合遍历方法摘要:Collection接口提供多种遍历方式:1.迭代器遍历(Iterator/ListIterator)支持安全删除元素,通过hasNext()/next()方法实现;2.增强for循环(Java5+)简化语法,编译器自动转换为迭代器或数组遍历;3.Lambda表达式(Java8+)使用forEach方法,支持函数式编程风格。不同方式各有特点:迭代器最灵活但代码量多,增强for最简洁,Lambda适合函数式处理。注意迭代器遍历时不能直接修改原集合。
2025-08-08 23:01:23
482
原创 Java基础之匿名内部类与lambda表达式
本文介绍了Java中匿名内部类和Lambda表达式两个重要概念。匿名内部类是一种没有显式名称的内部类,适用于一次性使用的场景,可以基于接口或类实现,但语法较冗长。Lambda表达式是Java8引入的简洁语法,专为函数式接口设计,大大简化了代码。关键区别在于:匿名内部类适用于非函数式接口或需要继承类的情况,而Lambda表达式更适用于简单的函数式接口实现。建议在函数式接口场景优先使用Lambda表达式,其他情况考虑匿名内部类。两者共同提升了Java代码的简洁性和表达能力。
2025-08-08 16:09:16
1018
原创 Java接口(Interface)的使用和基础知识的讲解
Java接口是一种完全抽象的类型,用于定义类必须实现的行为规范。它具有以下特点:1)纯抽象性(Java8前仅含抽象方法和常量);2)支持多继承(类可多实现接口);3)提供行为契约(定义"做什么"而非"怎么做")。语法包含常量、抽象方法(默认public abstract)、默认方法(Java8+)、静态方法(Java8+)和私有方法(Java9+)。接口不能直接实例化,必须通过实现类、匿名内部类或Lambda表达式使用。相比抽象类,接口更侧重行为规范,支持多继承,不包
2025-08-08 14:10:33
261
原创 Java中数组以及操作数组的工具类Arrays
本文介绍了Java中数组的基本概念和关键操作。数组是固定长度、同类型元素的连续存储结构,通过索引访问。重点讲解了数组的声明与初始化方式(动态/静态初始化),以及多维数组的使用。文章详细说明了数组的常见操作(获取长度、遍历)和异常(越界、空指针),并介绍了Arrays工具类的重要功能:数组转字符串、排序、二分查找、填充、比较和复制等。最后强调了操作自定义类对象数组时的注意事项,如需要重写toString()方法、浅拷贝问题以及排序时必须提供比较规则等。
2025-08-08 00:07:12
391
原创 Java快速入门:包(Package)与导包(import)详解
本文系统介绍了Java包(Package)的核心概念与应用。主要内容包括:1)包的作用(避免命名冲突、组织管理类、实现封装等)和命名规范;2)包的定义方式与目录结构要求;3)三种导包方法(单个类导入、整个包导入、完全限定名)及适用场景;4)特殊导包情况处理(静态导入和同名类冲突解决方案);5)Java核心功能包概览;6)典型项目结构示例。文章特别强调包在模块化开发中的重要性,以及java.lang包的自动导入特性,为Java开发者提供了清晰的包管理指南。
2025-08-07 23:19:19
385
原创 数据结构与算法之广度优先搜索算法--算法竞赛蓝桥云课3511题飞机降落详解
摘要:本文介绍了广度优先搜索(BFS)算法,包括其核心思想、特点(层次遍历、最短路径查找、队列驱动)和实现步骤。提供了BFS的伪代码,并给出一个飞机降落调度问题作为练习,要求判断多架飞机是否能安全降落。参考答案使用深度优先搜索(DFS)来尝试所有可能的降落顺序,通过递归回溯寻找可行解。该问题涉及时间窗口约束,需要合理安排各飞机的降落时间以避免冲突。
2025-08-07 18:40:36
935
原创 人工智能与机器学习基本概念知识入门
人工智能(AI)是让机器模拟人类智能的科学与技术,涵盖机器学习、深度学习、计算机视觉等子领域。其发展经历了从专家系统到深度学习的演进,现广泛应用于医疗、金融、交通等行业。AI核心三要素为:数据(燃料)、算法(大脑)和算力(发动机)。机器学习工作流程包括数据处理、特征工程、模型训练与评估。根据任务类型,算法可分为监督学习(分类/回归)、无监督学习(聚类/降维)、半监督学习和强化学习,并通过准确率、召回率、RMSE等指标评估性能。高质量数据与合适算法的结合推动着AI技术的持续突破。
2025-08-07 14:12:09
1263
1
原创 机器学习之线性回归的入门学习
线性回归是一种用于预测连续值的监督学习算法,通过建立特征与目标变量之间的线性关系进行建模。其核心是找到最优权重系数,最小化预测值与真实值的误差(常用均方误差损失函数)。模型形式包括简单线性回归(单特征)和多元线性回归(多特征),可通过梯度下降或正规方程求解。优点在于简单高效、可解释性强,适合作为基准模型;缺点是对非线性关系、异常值和多重共线性敏感,依赖特征工程。扩展应用包括多项式回归等变体,核心要求是模型对参数保持线性。
2025-07-30 23:40:07
917
原创 使用python中的 GridSearchCV( ) 快速完成交叉验证+网格搜索实现调优
本文介绍了使用Scikit-learn中的GridSearchCV进行机器学习模型调优的方法。GridSearchCV通过交叉验证和网格搜索自动寻找最优超参数组合,确保模型性能从"能用"提升到"卓越"。文章详细解析了其核心功能、关键参数及结果获取方式,并以KNN算法和鸢尾花数据集为例演示了完整流程,包括数据预处理、参数网格定义、模型训练和评估。GridSearchCV的优势在于参数搜索的全面性、结果客观性以及工作流简化,是提升模型性能的高效工具。
2025-07-30 01:56:44
1623
原创 K-近邻算法(KNN算法)的K值的选取--交叉验证+网格搜索
摘要:KNN算法中K值选择直接影响模型性能,需通过交叉验证和网格搜索进行优化。交叉验证通过多次数据划分评估模型泛化能力,避免过拟合;网格搜索则系统遍历参数组合寻找最优解。二者协同工作流程包括:定义参数网格、遍历参数组合、交叉验证评分、选择最优参数及最终测试评估。案例展示了如何使用交叉验证评估K值性能,网格搜索优化多参数(K值、权重、距离度量),并可视化结果。这种方法能有效平衡偏差-方差,提升模型在新数据上的预测能力。
2025-07-29 23:48:18
743
1
原创 机器学习算法—— K-近邻算法
K-近邻算法(KNN)是一种基于距离度量的监督学习算法,通过计算待测样本与训练数据的最近邻距离进行分类预测。本文介绍了KNN的核心原理、Scikit-learn实现方法、优化搜索效率的KD树结构以及关键参数K值的选择策略。KNN具有简单直观、无需训练等优点,但也存在计算成本高、对特征尺度敏感等缺点。文中通过Iris数据集案例展示了KNN的完整应用流程,包括数据预处理、模型训练与评估。该算法适用于低维分类和回归问题,但在处理高维大数据时需谨慎使用。
2025-07-29 18:20:51
1031
原创 python中类变量 __slots__ 解析
在 Python 中,__slots__ 是一个特殊的类属性,用于显式声明类实例允许的属性集。它通过替代默认的 __dict__ 字典存储机制,提供了内存优化和访问速度提升。是 Python 中优化内存和性能的重要工具,适用于大规模实例场景。后,实例通过固定大小的数组存储属性,显著减少内存开销(约 40-50%)。:防止意外添加属性(类似 "final" 类)。:直接通过数组偏移量访问属性,比字典查找更快。仅限制实例属性,类属性可正常使用。:普通类实例的属性存储在动态字典。中声明的属性,避免意外属性赋值。
2025-07-28 22:07:15
619
原创 python对象的__dict__属性详解
场景推荐做法风险做法属性访问使用点号操作obj.attr直接操作动态属性使用直接修改__dict__序列化实现方法直接使用__dict__序列化调试使用vars(obj)函数直接访问。
2025-07-28 21:56:28
470
原创 模拟实现python的sklearn库中的Bunch类以及 load_iris 功能
本文通过模拟实现sklearn库中的Bunch类及load功能,帮助读者理解机器学习数据加载机制。文章首先演示了原始load_iris()函数的使用,展示了其返回的Bunch对象特性。随后详细介绍了Bunch类的核心功能:作为字典子类,允许通过属性访问数据集的特征数据(data)、标签(target)等关键属性。文中提供了Bunch类的模拟实现代码,解释其继承字典、支持属性访问的实现原理,并以鸢尾花数据集为例说明其用法。该教程适合正在学习机器学习基础及sklearn库使用的读者,建议结合作者前期关于Pyth
2025-07-27 23:08:43
921
1
原创 python中的容器与自定义容器
Python提供了多种内置容器(列表、元组、字典、集合)用于数据存储和组织,支持索引、修改等操作。用户可通过实现__len__、__getitem__等特殊方法创建自定义容器类,或继承collections.abc模块的抽象基类来确保容器行为规范。自定义容器能实现特定需求的数据结构,与内置容器配合使用可构建高效的数据处理方案。
2025-07-27 19:31:42
727
原创 python中的容器和对象
用于组织和管理其他对象(元素)。:对象的唯一标识(内存地址):提供访问内部元素的方法。容器实际存储的是对元素的。在 Python 中,:决定对象的操作和行为。:可包含一个或多个对象。:对象存储的实际数据。:可通过循环遍历内容。
2025-07-27 14:27:56
295
原创 sklearn库中有关于数据集的介绍
Scikit-learn提供了丰富的内置数据集,涵盖分类、回归和聚类任务。常用分类数据集包括鸢尾花(150样本4特征)、手写数字(1797样本64特征)和乳腺癌数据集(569样本30特征)。回归任务常用加利福尼亚房价(20640样本8特征)和糖尿病数据集(442样本10特征)。聚类可使用合成斑点数据或鸢尾花数据集。其他数据集如葡萄酒(178样本13特征)和新闻分类(18000文本样本)也很实用。通过load_*函数加载数据,可用DESCR查看详情,适合快速开发测试。
2025-07-26 17:10:19
1127
原创 一文搞定K-近邻算法中有关于常见的距离度量的计算方法和解析
文章摘要 本文系统介绍了多种常用的距离度量方法及其应用场景。欧氏距离计算多维空间两点间的直线距离,曼哈顿距离采用坐标轴绝对差之和,切比雪夫距离取坐标差的最大绝对值。闵可夫斯基距离作为广义度量,通过参数p控制不同距离计算方式。标准欧氏距离通过特征标准化解决量纲问题。余弦距离衡量向量方向差异,适用于文本分析等场景。此外还介绍了汉明距离(字符串差异)、杰卡德距离(集合差异)和马氏距离(考虑协方差结构)。每种距离都附有数学定义、几何解释和Python实现示例,为不同数据分析场景提供了全面的距离计算参考。
2025-07-25 16:01:14
1479
原创 前端学习之JavaScript事件监听解析
本文介绍了JavaScript事件监听的基本概念和实现方法。事件监听是通过在特定事件发生时执行代码来实现网页交互的机制。文章详细讲解了三种事件绑定方式:HTML内联事件绑定、DOM属性事件绑定和addEventListener()方法绑定,其中推荐使用addEventListener(),它支持多个处理函数绑定和事件阶段控制。此外,还介绍了常见事件类型(鼠标、键盘、表单、窗口事件)及其应用场景,以及事件冒泡与捕获的原理和移除事件绑定的方法。通过代码示例展示了各种事件监听的实际应用,帮助开发者掌握网页交互的核
2025-07-23 17:32:35
627
原创 一篇搞定JavaScript关于对象的内容
本文深入讲解了JavaScript中的对象相关知识,包括自定义对象、JSON对象、BOM对象和DOM对象。详细介绍了四种创建自定义对象的方法(对象字面量、构造函数、ES6类和Object.create()),讲解了JSON对象的parse()和stringify()方法的使用。此外,还解析了BOM对象(Window、Navigator、Screen、History、Location)和DOM对象(DOM树结构、元素获取、节点操作方法等)。文章提供了丰富的代码示例,适合需要深入学习JavaScript对象的开
2025-07-22 22:25:49
832
原创 JavaScript的进阶学习--函数和基本对象的解析
函数声明使用function关键字,会进行提升,即在代码执行前就被加载到作用域中。由于JS是弱类型语言,所以在定义函数时参数不需要类型,返回值也不要类型,在返回时在函数内部直接使用return返回即可。//基本语法function 函数名(参数1, 参数2) {//要执行的代码;//示例。
2025-07-22 16:48:53
597
原创 JavaScript的引入方式和基础语法的快速入门与学习
JavaScript是一种用于网页交互的脚本语言,可以通过内联脚本(onclick属性、<script>标签)或外部脚本(.js文件)引入。其基础语法包括区分大小写、变量声明(var/let/const)、数据类型(原始类型和引用类型)以及运算符(包括严格相等运算符===)。输出方式有alert()、console.log()和document.write()等。JavaScript与Java无关,是独立的编程语言。
2025-07-21 21:53:24
1008
原创 python创意表白代码,用程序员的方法表达你对她的爱意
这篇博客分享了5种用Python代码表达爱意的创意方式,从简单到复杂依次为:1.基础文字表白(动态输出爱心字符);2.ASCII艺术(彩色爱心图案);3.文字弹窗(可自定义数量和内容);4.线条爱心(使用turtle绘图);5.动态粒子特效(带跳动动画的炫彩爱心)。作者建议程序员可以复制这些代码发给另一半,并承诺如果受欢迎会继续更新HTML和其他Python表白代码。每个案例都附有效果说明和完整代码,最后还提供了可以在爱心中间添加自定义文字的彩蛋功能。
2025-07-21 15:18:01
372
原创 前端开发中关于表单内容的使用和基础知识
本文介绍了Web前端开发中的表单使用,详细讲解了表单的基本结构、常用表单元素及其实现方式。内容包括文本输入框、密码框、单选按钮、复选框、下拉列表、文本域和文件上传等表单控件的HTML实现方法,并提供了表单提交、重置功能以及表单验证的JavaScript示例。通过一个综合案例演示了完整表单的实现过程,包括前端验证逻辑,帮助开发者掌握表单交互功能的实现要点。
2025-07-16 15:54:16
902
原创 Web前端开发,一文带你HTML,CSS快速入门(下篇)
上一篇我 们具体的向大家介绍了HTML和CSS相关的知识,但是篇幅有限,还不足以很好的讲清楚前端的知识,所以又推出中,也可以称为进阶篇,本篇将在上一篇文章的基础上,在进一步讲清楚有关于Web开发中的其他稍微类似于颜色选择,内联元素,块级元素,盒子模型等有些许凌乱的知识点。
2025-07-15 00:56:36
780
原创 Web前端开发,万字详细博文带你HTML,CSS快速入门(上篇)
本文介绍了HTML和CSS的基础知识。HTML是构建网页的标记语言,用于定义页面结构和内容,包含标题、段落、图片等元素标签,以及HTML5新增的语义化标签。CSS则控制网页样式和布局,包括选择器、属性声明和层叠规则。文章详细讲解了常用HTML标签(如标题、图片、超链接等)和CSS属性(文本、背景、定位等),以及如何在网页中添加注释。二者结合使用可创建结构清晰、样式美观的网页。
2025-07-15 00:56:23
186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人