- 博客(37)
- 收藏
- 关注
原创 最小生成树两种算法对比:Kruskal 与 Prim
本文对比了最小生成树(MST)的两种经典算法:Kruskal和Prim。Kruskal采用边优先策略,通过排序边并利用并查集检测环;Prim采用点优先策略,通过维护顶点集和邻接矩阵逐步扩展。Kruskal适合稀疏图,时间复杂度为O(ElogE);Prim适合稠密图,时间复杂度为O(V²)。两者均基于贪心算法,但实现方式和适用场景不同。文中提供了两种算法的C++实现代码,并详细对比了它们的核心思想、步骤和性能差异。
2026-02-26 12:32:19
866
原创 2-opt
2-opt算法通过数学计算而非视觉判断来优化路径,其核心是交换两条边后若路径缩短则等价于几何交叉。算法严格限定交换不相邻边并反转中间片段,确保路径始终连通而不会分裂。例如,在路径A→B→C→D→E中交换边(A,B)和(C,D)后变为A→C→B→D→E,仍保持单一路径。2-opt的设计规则从数学上保证了优化的有效性和路径的连贯性。
2026-02-10 20:11:11
531
原创 PTA乙级-1002 写出这个数
本文介绍了一个处理超大正整数并输出数字之和拼音的程序。程序通过字符串存储超大数避免数值溢出,计算各位数字之和后转换为汉语拼音输出。关键点包括:1) 使用字符串处理超过整数范围的数字;2) 通过c - '0'将字符转换为数字;3) 采用"非首位前加空格"的格式控制确保输出规范;4) 使用数组实现数字到拼音的高效映射。程序结构清晰,分为输入处理、求和计算和拼音输出三个模块,通过引用传递和常量修饰提升效率和安全性。该方案适用于需要处理超大数字并格式化输出的场景。
2026-02-07 13:34:30
820
原创 C++ 核心知识点全解
本文全面解析C++核心知识点:1)基础语法部分涵盖数据类型、类型限定符、初始化方式、左右值等;2)内存管理重点讲解指针与引用区别、内存五大分区及new/delete机制;3)面向对象编程详细阐述类访问控制、六大特殊成员函数、构造/析构函数、深浅拷贝、移动语义等关键概念。文章采用表格对比、代码示例等方式,系统梳理了C++开发中的核心语法和重要特性,特别强调了现代C++(C++11)引入的列表初始化、移动语义等新特性,为C++开发者提供了清晰的技术参考。
2026-02-07 11:27:29
1179
原创 C++ 核心知识点梳理
本文系统梳理了C++核心知识点,主要包括:基础语法(数据类型、变量、流程控制、函数);面向对象特性(封装、继承、多态);以及C++特有扩展功能(引用、命名空间、智能指针等)。重点阐述了虚函数实现多态的机制、模板泛型编程的优势,以及智能指针如何自动管理内存。文章从基础到高级层层递进,既涵盖C++核心概念,又包含C++11等现代特性,为系统学习C++提供了清晰的知识框架。
2026-02-06 00:35:03
916
原创 PTA乙级-1001 害死人不偿命的(3n+1)猜想
卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?这行代码是 C++ 标准输出流的核心用法,专门把计算好的。,完全匹配题目「输出从n到1的步数」的要求。读取用户输入的整数,赋值给变量。
2026-02-06 00:19:33
1004
原创 机器学习中的黑箱模型:定义、特性与实战场景分析
摘要: 机器学习中的黑箱模型(如随机森林、神经网络)以内部逻辑不透明为特征,仅能观察输入与输出,无法解释决策过程。与可解释的白箱模型(如逻辑回归)相比,黑箱模型预测精度更高,擅长处理非线性关系,但难以调试且存在偏见风险。其适用场景包括电商推荐等无需解释的场景,而医疗、金融等领域需谨慎使用。尽管黑箱模型本身不可解释,但可通过SHAP值、LIME等工具增强可解释性。实际应用中需权衡精度与可解释性需求。
2026-01-17 11:26:15
572
原创 操作系统核心考点:程序并发执行的 Bernstein 条件(含真题练习 + 易错点解析)
本文摘要:Bernstein条件是判断程序段能否安全并发执行的核心准则,通过约束三个冲突条件(读-写、写-读、写-写)保证结果正确性。关键要点包括:1)仅约束跨程序段的冲突,不限制单个程序段内部读写;2)需完整分析程序段的读写集合;3)满足条件时可安全并发,否则需同步机制。文章通过定义解析、易错点提醒和真题练习,系统讲解了该条件的应用方法和注意事项。
2026-01-17 11:25:39
523
原创 二分类模型性能评估核心指标:AUC 值的原理与实战应用
AUC(ROC曲线下面积)是评估二分类模型性能的核心指标,衡量模型区分正负例的能力。其值域0-1,1表示完美区分,0.5等同随机猜测。AUC通过分析TPR(真正例率)和FPR(假正例率)绘制ROC曲线计算面积,能规避类别不平衡问题,比准确率更适合医疗等场景。在心脏病预测项目中,AUC>0.8表明模型性能优秀。使用sklearn的roc_auc_score可直接计算AUC值,为模型选择提供客观依据。AUC综合反映模型在所有阈值下的整体性能,是二分类任务的关键评估指标。
2026-01-16 02:34:28
749
原创 随机森林:原理、参数与适用场景
随机森林是一种基于Bagging策略的集成学习模型,通过多棵决策树的集成提升泛化能力。其核心创新在于样本随机(Bootstrap抽样)和特征随机(随机子空间)两大机制,有效降低方差和过拟合风险。模型训练时每棵树并行生长,预测时采用多数投票(分类)或均值(回归)策略。随机森林具有泛化能力强、稳定性高、易用性好等优点,适用于分类、回归和特征工程任务,但对高维稀疏数据和不平衡数据表现欠佳。相比Boosting类算法,随机森林训练速度快但预测解释性较差。调优时需重点关注树的数量和特征随机性参数。
2026-01-16 02:01:28
517
原创 决策树:划分规则、剪枝方法与适用场景
决策树是一种直观且易于理解的机器学习算法,通过模拟人类决策过程进行分类与回归任务。其核心结构包括根节点、内部节点和叶节点,通过递归划分数据选择最优特征(信息增益、增益率或基尼系数)生成树形结构。为避免过拟合,决策树需进行剪枝处理,包括预剪枝和后剪枝两种方法。决策树优点在于可解释性强、无需复杂预处理,但易受特征微小变化影响且可能过拟合。适用于分类、回归及特征重要性分析,常作为集成学习的基础组件。与逻辑回归相比,决策树更擅长处理非线性数据,但泛化能力较弱。
2026-01-16 01:55:51
791
原创 逻辑回归:原理、训练与场景
摘要: 逻辑回归是一种经典的二分类算法,通过Sigmoid函数将线性回归输出映射为0~1的概率值进行分类(如垃圾邮件识别、疾病预测)。其核心公式为 $P(y=1|x) = \frac{1}{1+e^{-(w\cdot x + b)}}$,决策边界由 $w\cdot x + b=0$ 确定。训练时采用对数损失函数和梯度下降优化权重。优点包括简单高效、输出概率,但依赖线性假设和特征工程。适用于二分类任务(如用户流失预测),与线性回归的关键区别在于任务类型、输出范围和损失函数。逻辑回归是分类问题的基准模型,但需特
2026-01-16 01:46:29
541
原创 消失的数字
本文提出一种利用数组自身空间作为哈希表的原地标记法,用于查找1~n范围内缺失的数字。核心思路是通过将出现数字对应的索引位置标记为负数,最终未被标记的索引对应数字即为缺失值。算法分析表明,该方法仅需两次遍历,时间复杂度O(n),空间复杂度O(1),是内存受限场景下的最优解。关键点在于使用abs()处理负数标记,避免重复操作。虽然会修改原数组,但在满足数字范围1~n的条件下,实现了高效查找缺失数字的功能。
2026-01-16 00:04:29
920
原创 plt.savefig () 的 bbox_inches 参数:绘图元素包围盒计算与裁剪逻辑
bbox_inches='tight'参数通过自动计算所有绘图元素的最小包围盒,解决热力图等图表边缘标签被截断的问题。其工作原理是:1)扫描所有图表元素(包括边缘标签、标题等);2)计算能完整包含所有元素的最小矩形区域;3)基于该区域而非固定画布进行保存。这使得保存的图片会自动扩展以包含所有标签,同时裁剪多余空白,既避免截断又使图片更紧凑。对比实验显示,使用该参数后,热力图中较长的特征名能够完整显示,而默认保存方式会导致标签被切掉。这是解决图表标签截断最便捷有效的方法。
2026-01-15 04:46:37
275
原创 中文网页爬取的编码一致性保障:r.encoding = r.apparent_encoding的原理与实践
围绕 r.encoding = r.apparent_encoding 讲解中文网页爬取乱码的解决逻辑,涵盖原理、场景、实操全维度;
2026-01-15 04:03:44
339
原创 CDE药品审批数据爬取分析项目——核心知识点和关联拓展知识点
摘要 本项目基于Python实现CDE药品审批数据爬取与分析全流程,涵盖网络爬虫、数据处理及业务解读。核心模块包括: 网络爬虫:使用requests发送HTTP请求,构造请求头规避反爬,处理HTTPS证书异常及响应解压。 数据解析:通过json解析接口数据,安全提取字典字段,清洗字符串(如拆分企业名称)。 结构化分析:利用pandas构建DataFrame,统计分类数据(如药品类型分布)。 反爬策略:随机请求间隔、动态Headers及异常捕获保障稳定性。 关键点:Headers伪装、JSON安全解析、字段长
2026-01-15 03:54:01
1382
原创 爬虫必学:verify=False 解决网络证书问题
本文介绍了Python爬虫中verify=False参数的作用及使用场景。该参数可跳过HTTPS证书验证,解决爬取CDE等官网时因证书问题导致的请求失败。文章详细说明了其工作原理、适用情况(如证书链不完整、本地网络问题等)和基础使用方法,并强调需关闭相关警告提示。同时指出潜在风险,尤其是中间人攻击的可能性,建议仅用于公开数据爬取,敏感操作需配置合法证书。最后总结了该参数的核心价值与注意事项,为爬虫开发者提供了实用解决方案。
2026-01-15 03:38:24
917
原创 爬虫反爬基础:time.sleep 设置请求间隔的核心逻辑
本文介绍了爬虫反爬基础中time.sleep设置请求间隔的核心逻辑。首先解释了反爬的定义和本质,即网站通过技术规则区分真人访问和机器爬虫,并列举了常见的反爬手段如频率限制、验证码等。其次分析了time.sleep的作用原理,通过暂停请求模拟真人访问速度,配合随机间隔可有效避免被识别为爬虫。最后总结指出,合理设置1-3秒随机间隔既能规避反爬机制,又能保证爬取效率。该方法通过伪装爬虫为真人访问,可绕过大多数基础反爬规则。
2026-01-15 00:00:19
1970
原创 Python json.dumps () 核心参数解析:ensure_ascii + indent
本文解析了Python中json.dumps()函数的核心参数ensure_ascii和indent的作用。ensure_ascii=False可防止中文被转义为Unicode编码,确保中文正常显示;indent=2则使JSON字符串格式化缩进,提升可读性。在项目中,这行代码用于预览爬取的药品审批数据前5条记录,验证数据结构和内容是否正确。这两个参数是处理JSON数据时保证中文显示和格式化的关键配置。
2026-01-14 23:53:11
584
原创 Python 字典(dict)核心用法与实战
本文详细介绍了Python字典的核心用法与实战应用。字典作为键值对数据结构,具有键唯一、不可变等特点,广泛用于请求头构造、接口参数传递和JSON数据解析。重点讲解了安全取值get()方法、键值对修改/删除、字典遍历等高频操作,并展示了在爬虫项目中的典型应用场景,如构造headers、统计地区分布等。文章还涵盖嵌套字典、字典推导式等进阶技巧,强调使用get()避免KeyError的注意事项,是处理结构化数据的必备技能。
2026-01-14 23:14:28
536
原创 LeetCode------128. 最长连续序列
本文提出了一种时间复杂度为O(n)的算法,用于求解未排序整数数组中最长连续序列的长度。通过将数组转换为哈希集合去除重复元素,并仅当当前数字是连续序列起点时才开始计算长度,避免了重复遍历。核心步骤包括:预处理去重、定位序列起点、统计连续长度和更新最大值。算法通过哈希集合的O(1)查找特性实现高效计算,适用于包含重复元素和空数组等边界情况。测试验证表明该方案能正确识别最长连续序列,时间复杂度为O(n),空间复杂度为O(n)。
2026-01-13 16:40:48
435
原创 LeetCode------面试题 17.04. 消失的数字
题目要求找出0到n中缺失的数字。提供两种O(n)解法:1)数学求和法,通过计算理论总和与实际总和的差值;2)异或法,利用异或特性抵消存在的数字。两种方法均只需遍历数组一次,空间复杂度O(1)。测试用例验证了正确性,异或法避免了溢出风险更优。核心思路是通过数学或位运算特性高效求解缺失值。
2026-01-13 16:40:14
278
原创 LeetCode------300. 最长递增子序列
dp[i]:以nums[i]结尾的最长严格递增子序列长度dp[ ] = 1(每个元素自身可单独构成长度为 1 的子序列)tailstails[k]表示长度为k+1的递增子序列的最小末尾元素(例如:tails[0] 是长度为 1 的子序列的最小末尾,tails[1] 是长度为 2 的子序列的最小末尾)最长递增子序列(LIS)的基础解法是动态规划(O(n²)),核心是用dp[i]记录「以 nums[i] 结尾」的最长长度,通过两层循环更新;
2026-01-06 23:14:15
860
原创 LeetCode------354. 俄罗斯套娃信封问题
摘要 俄罗斯套娃信封问题要求在给定信封尺寸的二维数组中,找出最多能嵌套的信封数量。本文提出了一种基于贪心算法和二分查找的最优解法: 首先对信封进行特殊排序:宽度升序,同宽度时高度降序,确保宽度条件满足且避免同宽度信封互相嵌套。 使用tails数组维护递增高度序列的最小末尾值,通过二分查找确定每个信封的插入位置: 若高度大于当前所有末尾值,扩展序列长度 否则替换第一个不小于该高度的值,优化后续匹配可能 最终tails数组长度即为最大嵌套数。该方法将时间复杂度从O(n²)优化至O(nlogn),是解决此类问题的
2026-01-06 21:37:45
545
原创 递归与分治
摘要:本文系统阐述了递归与分治的概念、本质及区别。递归是通过函数自我调用实现的程序控制流程,需要满足基准条件和递推关系;分治则是将问题拆解为独立子问题求解后再合并结果的算法设计范式。二者在子问题独立性、结果合并、复杂度模型等方面存在显著差异。文章通过阶乘和归并排序的实例分析执行流程,给出通用代码模板,并列举典型应用场景。同时澄清了常见误区,指出递归是分治的实现手段而非性能决定因素,分治子问题无需严格二分但必须独立。最后强调递归关注终止与递推,分治侧重问题分解与合并。
2026-01-06 11:21:16
738
原创 贪心算法与动态规划的理论分界
贪心算法和动态规划是解决最优化问题的两种核心方法,主要区别在于决策依据和信息利用方式。贪心算法仅基于当前局部信息做最优选择,不回头修改,效率高但不保证全局最优;动态规划则记录所有可能状态的最优值,通过子问题组合确保全局最优,但复杂度较高。贪心适用于满足特定性质的问题(如霍夫曼编码),而动态规划适合具有重叠子问题的问题(如背包问题)。简言之,贪心是"一步到位",动态规划是"全面考虑"。
2026-01-05 10:40:46
186
原创 云存储 vs 数据库
本文详细介绍了云存储(如阿里云OSS、腾讯云COS)和数据库(如MySQL、MongoDB)的区别,并通过实际代码示例展示了它们如何配合使用。通过本文,你将清晰理解云存储和数据库的各自用途以及它们在实际开发中的协同工作方式。
2025-12-10 09:28:28
360
原创 云 OCR + 云存储
本文介绍如何用 Java + 阿里云 OSS+OCR 实现 Web/App 端的图片文字识别 + 云端存储功能,包含完整后端代码和集成步骤。
2025-12-10 00:54:07
292
原创 【Hutool 依赖详解笔记】
详解 Hutool 工具库的依赖配置与版本选择,包括稳定版、维护说明及更新频率,助力 Java 项目高效集成工具类
2025-12-07 02:31:21
967
原创 【MySQL tinyint(1)--------从存储字节到框架映射】
MySQL 的 tinyint(1) 在 Java 开发中的正确用法。从它的底层存储原理说起,解释为什么 JDBC 驱动会把它和布尔类型搞混,然后重点在 MyBatis-Plus 做逻辑删除时,用 Integer 还是 Boolean 更合适。
2025-12-07 01:58:46
886
原创 【MinIO 零基础入门:核心概念 + Docker 部署 + Java 操作全攻略】
MinIO 是轻量、高性能的分布式对象存储系统,兼容 S3 协议,适用于云原生 / 微服务场景。本文从核心概念出发,详解 MinIO 的 Docker 快速部署(含控制台验证),并提供 Java 完整工具类(上传 / 下载 / 临时链接),同时补充生产环境安全配置建议,帮助开发者 30 分钟完成 MinIO 集成,替代传统本地存储 / FTP。
2025-12-05 16:11:44
410
原创 Java高级特性深度解析:类型信息、反射与动态代理
自然界中的每个物体都有描述信息(如性别、年龄),而计算机中对象的信息通常用字段值表示。类型信息记录了类的名称、字段、方法、父类或接口等信息。JVM通过类型信息认识和识别对象,赋予程序动态性。运行时类型识别(RTTI):在程序运行时动态识别对象和类的信息。运行时类型识别(RTTI)是Java语言中的一个重要概念,它允许程序在运行时检查对象和类的信息。这为编写更加灵活和动态的代码提供了可能。定义:代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。
2025-05-11 17:05:52
1989
原创 python笔记(一)零基础入门核心笔记:从基础概念到实战规范
Python是一种高级编程语言,它由Guido van Rossum于1991年首次发布。Python的设计哲学强调代码的可读性和简洁性,其语法清晰简单,使得学习和使用变得相对容易。特性编译型语言解释型语言翻译方式一次性翻译逐行翻译执行速度快较慢依赖工具不依赖编译器需要解释器跨平台性差(需重新编译)强(只要有解释器即可运行)开发效率较低(需编译和调试)高(实时反馈)适用场景性能要求高的应用快速开发、脚本、Web 应用在编程中,有时需要一个占位符来表示“这里什么都不做”。
2025-03-25 21:06:02
1704
C++ 核心知识点全解:从基础到进阶超详细学习笔记(含代码示例)
2026-02-07
Python零基础入门核心笔记+可运行代码(学习参考)
2026-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅