- 博客(188)
- 收藏
- 关注
原创 【算法设计与分析】随机化算法
随机化算法(Randomized Algorithm)是指在算法执行过程中使用随机数的算法。与确定性算法不同,随机化算法的某些步骤依赖于随机选择,使得算法的行为(如运行时间、甚至输出结果)具有一定的随机性。确定性算法的局限性:随机化算法的优势:实际应用场景:随机化算法根据其正确性和时间特性的不同,可以分为四种主要范式:核心区别总结:随机数是随机化算法的基础。理解随机数的性质、生成方法和检验方法,是设计和分析随机化算法的前提。真随机数(True Random Number):伪随机数(Pseudo-Rando
2026-01-28 16:34:12
869
原创 【算法设计与分析】分支限界法
本文系统介绍了分支限界法的核心思想与实现方法。分支限界法是一种通过广度优先或最佳优先搜索解空间树来寻找最优解的算法策略,与回溯法相比更适用于求最优解的问题。文章详细阐述了两种分支限界策略:FIFO分支限界(队列式)和LC分支限界(优先队列式),并提供了算法框架。通过对比分析回溯法与分支限界法的区别,说明了分支限界法在求解组合优化问题时的优势,包括更有效的剪枝策略和更快的收敛速度。最后,文章介绍了该方法在单源最短路径、0-1背包等经典问题中的应用。
2026-01-27 03:57:10
362
原创 【算法设计与分析】回溯法
回溯法概述 回溯法是一种通过深度优先搜索解空间树来求解问题的算法策略,核心特点包括: 解空间树结构:分为子集树(O(2^n))、排列树(O(n!))和m叉树(O(m^n))三种基本类型 剪枝优化:通过约束函数和限界函数减少无效搜索 典型应用:n后问题、0-1背包、图着色、TSP等组合优化问题 算法框架:提供通用的子集树和排列树回溯模板,支持剪枝统计 与动态规划和贪心算法相比,回溯法能枚举所有可行解但时间复杂度较高,适用于解空间较小或剪枝效果好的问题。通过合理设计剪枝函数可显著提升算法效率。
2026-01-27 03:54:54
1153
原创 【算法设计与分析】贪心算法
本文介绍了贪心算法的核心思想和应用场景,重点分析了活动安排问题的贪心解法。贪心算法通过每步做出局部最优选择(如按结束时间最早优先)来构造全局最优解,相比动态规划具有更低复杂度。文章详细阐述了活动安排问题的贪心策略设计、正确性证明及Python实现,并通过示例展示了算法执行过程。贪心算法适用于具有贪心选择性质的问题,如活动安排、哈夫曼编码等。
2026-01-26 18:45:39
855
原创 【算法设计与分析】动态规划
本文摘要:动态规划是解决优化问题的核心算法技术,通过分解重叠子问题并保存中间结果来避免重复计算。文章重点讲解了矩阵连乘问题,展示了如何设计状态转移方程(m[i][j]表示计算Aᵢ到Aⱼ的最小代价)和实现自底向上的DP解法。典型示例显示,不同括号化顺序可能导致10倍的性能差异。文中还提供了Python实现代码,包括递归解法与DP解法的对比,突出DP将指数复杂度降为O(n³)的优势。该案例体现了动态规划的最优子结构和重叠子问题两大核心特征。
2026-01-26 16:20:52
531
原创 【算法设计与分析】递归与分治策略
本文介绍了递归与分治策略的基本概念和应用。主要内容包括:递归的三要素(基准情况、递归情况、收敛性)及执行过程,比较了递归与迭代的优缺点;分治法的三个步骤(分解、解决、合并)及适用条件,并通过递归树和主定理分析算法复杂度;详细讲解了二分搜索技术,包括迭代和递归两种实现方式。此外还列举了合并排序、快速排序等经典分治算法,为学习更复杂的算法问题奠定基础。
2026-01-25 20:24:02
783
原创 【算法设计与分析】算法概述
本章介绍了算法的基本概念和复杂度分析方法。首先明确了算法的定义及其五大特征(有穷性、确定性、可行性、输入、输出),并通过Python代码示例对比了算法与程序的本质区别。其次详细讲解了算法复杂度分析,包括渐进记号(大O、Ω、θ)和常见时间复杂度层次(从O(1)到O(n!))。最后通过实际代码演示了不同复杂度算法的性能差异,为后续学习算法设计奠定理论基础。
2026-01-25 17:58:35
764
原创 【深度学习】自动微分模块
PyTorch自动微分模块总结: PyTorch通过torch.autograd模块实现自动微分,支持神经网络训练中的反向传播算法。核心要点包括: 梯度计算:使用backward()方法计算标量对张量的梯度,通过grad属性访问 梯度更新:遵循公式θ_new = θ_old - η·∇θL(θ_old),需手动实现更新过程 梯度清零:每次迭代前需调用zero_()方法清除历史梯度 数据转换:对需要自动微分的张量,需使用detach()方法转换为普通张量后才能转为numpy数组 典型应用场景包括神经网络参数优
2025-12-07 02:51:30
1080
原创 【深度学习】张量
本文介绍了PyTorch中张量的基本概念和创建方法。张量是多维数组的统称,包括标量(0维)、向量(1维)、矩阵(2维)及更高维数据。PyTorch的核心数据结构torch.Tensor支持GPU计算和自动求导。文章详细讲解了三种创建张量的方法:torch.tensor()根据数据创建张量并可指定数据类型;torch.Tensor()支持按形状创建;torch.IntTensor()等特定类型张量创建方法。每种方法都通过代码示例展示了不同维度的张量创建过程,并对比了它们的特点和使用场景。
2025-11-18 17:08:43
848
原创 【深度学习】深度学习概念
摘要:深度学习是机器学习的一个子领域,通过多层神经网络实现自动特征学习。相比传统机器学习,深度学习具有自动特征提取、端到端学习、强大非线性表示能力等特点,但也依赖大量数据和计算资源。其常见模型包括CNN、RNN、Transformer等,广泛应用于计算机视觉、自然语言处理、语音识别、推荐系统等多个领域。随着大模型发展,深度学习在多模态融合方面展现出强大潜力,但也面临可解释性不足等挑战。
2025-11-15 23:15:20
1197
1
原创 【机器学习】模型持久化与部署
本文介绍了机器学习模型持久化的重要性和实现方法。主要内容包括:1) 模型持久化指将训练好的模型保存到磁盘,避免重复训练;2) 必要性体现在节省资源、生产环境实时响应和版本管理;3) 详细演示了使用joblib工具保存和加载scikit-learn模型的过程;4) 强调模型验证和批量保存多个模型的技巧。通过模型持久化,可以高效部署机器学习模型到生产环境。
2025-10-30 19:07:08
443
原创 【机器学习】管道化与自动化建模
本文介绍了Scikit-learn中的Pipeline和ColumnTransformer工具。Pipeline通过封装预处理、特征工程和建模步骤为一个整体对象,解决了手动流程割裂、信息泄露和代码冗余问题,支持一键训练预测。ColumnTransformer则针对混合类型特征数据集,可对不同特征子集(如数值/类别)应用不同预处理(如标准化/独热编码),最后合并结果。两者结合可实现自动化、安全且高效的机器学习建模流程,特别适用于现实中的复杂数据场景。
2025-10-30 17:57:41
971
原创 【机器学习】模型评估与调优
数据划分:train_test_split—— 避免 “自欺欺人” 的关键在训练模型前,我们必须把数据分成训练集(Training Set) 和测试集(Test Set),这是评估模型泛化能力的前提。为什么必须划分训练集和测试集?模型训练的目标是 “在新数据上表现好”(泛化能力强),而不是 “在训练数据上表现好”。如果不划分数据,直接用全量数据训练并评估,会出现 “过拟合” 的误判:用 train_test_split 划分数据以鸢尾花数据集为例,演示标准划分流程:关键参数解读模型训练与预测 —— 标
2025-10-30 11:54:25
769
原创 【机器学习】无监督学习
无监督学习与K-Means聚类摘要 无监督学习是机器学习的核心范式之一,其特点是在没有标签的情况下,让模型自主发现数据中的潜在结构和规律。与监督学习不同,它不需要人工提供的"标准答案",而是通过分析数据特征来实现自动分组或降维。 K-Means是最经典的聚类算法,通过迭代寻找k个簇中心来实现数据分组。其核心步骤包括:初始化簇中心、分配样本到最近簇、更新簇中心位置,直到收敛。该算法广泛应用于客户分群、内容分类、异常检测等场景。 关键点: 无监督学习适用于缺乏标签的数据探索场景 K-Mean
2025-10-28 15:25:40
1123
原创 【机器学习】监督学习
摘要: 监督学习是机器学习的核心范式之一,通过带标签的样本训练模型,预测新样本的标签。其核心要素包括特征(X)、标签(y)和模型,主要分为分类(离散标签)和回归(连续标签)任务。典型流程涵盖数据准备、预处理、模型训练与评估。 关键算法示例: 逻辑回归:通过sigmoid函数输出概率,适用于二分类(如鸢尾花分类),具有可解释性强、训练快的特点。 K最近邻(KNN):基于“邻居投票”的惰性学习算法,直观易用(如多类鸢尾花分类),但计算复杂度随数据量增长。 监督学习凭借明确的输入-输出关系,成为工业界广泛应用的方
2025-10-27 17:38:08
1290
原创 【机器学习】数据预处理
机器学习数据预处理是确保模型有效学习的关键步骤,主要解决原始数据中存在的缺失值、量纲不统一、类别型数据等问题。预处理的核心任务包括:缺失值处理(使用SimpleImputer填补NaN)、特征缩放(标准化/归一化消除量纲差异)、编码处理(将类别特征转换为数值)、特征选择(剔除冗余特征)以及流水线组合(Pipeline自动化流程)。这些步骤能提升数据质量,使模型更准确地捕捉数据规律。处理时应遵循优先级:先解决缺失值等致命问题,再优化特征缩放等细节,全程使用流水线避免数据泄漏。
2025-10-26 17:37:46
1233
原创 【机器学习】Scikit-learn 框架基础
它不是用来做底层算法研发的(比如从零实现神经网络),而是把机器学习领域经过验证的经典算法(如线性回归、决策树、SVM 等)封装成 “即用型工具”,让你不用关心算法的数学细节,就能快速实现从数据到模型的全流程。如果你想做木工,不需要自己造锯子、锤子(算法原理),sklearn 就是一套现成的、标准化的工具套装,你只需要学会怎么用这些工具做出椅子、桌子(解决实际问题)。(流水线)能把 “预处理 + 模型” 串起来,核心就是因为所有模型的接口统一,流水线可以用同样的逻辑调用任何模型的。
2025-10-26 16:37:30
1118
原创 【Spring Security】授权(四)
Spring Security中的授权机制基于角色(Role)和权限(Authority)两个核心概念。角色是用户的宏观身份标识(如ROLE_ADMIN),权限是具体的操作许可(如user:read)。两者在技术上均通过GrantedAuthority接口实现,核心差异在于角色需遵循"ROLE_"前缀约定。授权校验本质是字符串匹配,hasRole()是hasAuthority()的语法糖。数据库设计通常采用RBAC模型,通过用户表、角色表、权限表及其关联表实现存储。用户登录时,系统会查询
2025-10-24 21:44:14
848
原创 【Spring Security】授权(三)
Spring Security 方法级安全(Authorization)提供细粒度的权限控制机制,通过AOP在方法执行前后进行权限校验。相比Web层URL级授权,它能精准控制单个业务方法,支持角色校验、数据归属验证等复杂场景。启用方法需配置@EnableMethodSecurity注解,新版采用AuthorizationManager模型,与Web层授权机制统一。典型应用包括:管理员专属操作、用户数据隔离、付费功能权限控制等,有效弥补了URL级授权的不足,实现业务逻辑与安全校验的解耦。
2025-10-24 17:38:04
911
原创 【Spring Security】授权(二)
Spring Security的Web层授权机制通过拦截HTTP请求,基于URL路径、请求方法和用户权限进行访问控制。核心组件包括触发授权流程的AuthorizationFilter、提供权限规则的SecurityMetadataSource和决策访问权限的AccessDecisionManager。授权流程依次检查用户认证信息、URL权限规则,最终由投票器决定是否放行请求。配置通过SecurityFilterChain实现,支持精细化的URL权限规则设定,适用于前后端分离项目的API权限管理。使用时需注意
2025-10-23 21:17:17
782
原创 【Spring Security】授权(一)
摘要:Spring Security的授权(Authorization)机制通过FilterSecurityInterceptor实现访问控制,核心组件包括AccessDecisionManager(权限决策管理器)和AccessDecisionVoter(投票器)。默认采用投票制模型,其中AffirmativeBased策略只需一票同意即可放行,ConsensusBased遵循多数表决,而UnanimousBased需全票通过。授权流程对比用户权限与资源所需权限(ConfigAttribute),最终决定
2025-10-21 19:21:29
877
原创 【Spring Security】安全过滤链
Spring Security通过安全过滤链实现认证与授权机制,核心是一条Servlet过滤器链。请求进入时,DelegatingFilterProxy将过滤任务转交给FilterChainProxy,后者根据URL匹配对应的SecurityFilterChain并执行15+内置过滤器(如WebAsyncManagerIntegrationFilter处理异步安全上下文,SecurityContextHolderFilter管理认证信息生命周期)。每条链可配置不同安全策略,过滤器依次处理认证、授权、CSRF
2025-10-19 20:32:34
804
原创 【Spring Security】认证(二)
摘要:本文介绍了如何在Spring Security中手动执行认证逻辑,包括在Controller中手动登录、配置AuthenticationManager以及常见应用场景。同时还讲解了默认的登出机制和自定义登出配置方法,涵盖LogoutFilter的工作原理以及如何定制登出路径和成功跳转页面。内容适用于前后端分离项目、移动端登录等需要自定义认证流程的场景。
2025-10-15 20:56:03
450
原创 【Spring Security】认证(一)
Spring Security 的 Form Login 是默认的认证方式,基于 HTML 表单实现登录流程。当访问受保护资源时,未登录用户会被重定向到默认 /login 页面,提交用户名和密码后由框架自动验证。关键配置包括:使用 UserDetailsService 管理用户信息,PasswordEncoder 加密密码,以及 HttpSecurity 配置授权规则和表单登录参数。通过 formLogin(Customizer.withDefaults()) 即可启用默认登录页,认证成功后重定向到原始请求
2025-10-15 02:01:27
649
原创 【Spring Security】Spring Security 密码编辑器
本文介绍了Spring Security的密码编码机制及其在Maven项目管理中的配置方式。主要内容包括: Maven依赖管理: 强调Spring Security和Spring Framework版本独立性 提供传统Spring MVC和Spring Boot两种集成方案 推荐使用Spring Boot的starter-security简化配置 密码编码器: 对比Spring Security 5前后的密码处理机制 说明{noop}前缀的使用场景及安全风险 重点推荐BCryptPasswordEncode
2025-10-12 21:00:58
970
3
原创 【Spring Security】Spring Security 概念
摘要:Spring Security 是 Spring 官方的安全框架,提供认证(Authentication)和授权(Authorization)功能。其核心架构基于过滤器链(Filter Chain),通过拦截请求进行安全检查。核心组件包括: AuthenticationFilter:拦截请求并转换为认证对象 AuthenticationManager:管理认证流程 AuthenticationProvider:具体实现认证逻辑 特点: 支持多种认证方式(表单登录、JWT、OAuth2等) 模块化设计,
2025-10-11 15:07:34
675
1
原创 【Spring Boot】Spring Boot 中常见的加密方案
本文介绍了Spring Boot中常见的两种加密方案:MD5和SHA系列。MD5是一种128位的哈希算法,具有快速计算和雪崩效应特点,但已被证明存在碰撞风险,不再安全。文章详细说明了MD5的原理、使用方法及加盐技巧,并强调其不适用于密码存储等安全场景。SHA系列则包括SHA-1(已淘汰)、SHA-2(当前主流)和SHA-3(新一代标准),具有更长的输出长度(224-512位)和更强的安全性,适用于数字签名、证书认证等场景。两种算法均通过分块处理、变量初始化和循环压缩等步骤生成固定长度摘要,但SHA系列采用更
2025-10-09 21:40:43
743
原创 【Python】并发——异步
Python异步编程摘要 异步编程通过事件循环实现单线程并发,核心是协程(可暂停/恢复的函数)。Python 3.5+引入async/await语法简化编写:async定义协程,await暂停当前协程等待I/O。相比同步阻塞(串行执行),异步能利用I/O等待时间执行其他任务,显著提升效率(如asyncio.gather并发多个协程)。典型应用场景包括网络请求、文件I/O等密集型任务。asyncio.run()是执行协程的推荐方式。
2025-10-07 02:36:47
423
原创 【Python】并发——全局解释器锁 GIL
GIL(全局解释器锁)是CPython中的互斥锁,确保同一时间只有一个线程执行Python字节码。虽然简化了内存管理和C扩展开发,但限制了多线程并行能力。CPU密集型任务无法利用多核加速,而I/O密集型任务仍可受益。解决方案包括使用多进程、C扩展(如NumPy在底层释放GIL)、异步I/O或替代Python实现。GIL切换机制基于时间片或字节码计数,C扩展可通过Py_BEGIN_ALLOW_THREADS宏临时释放GIL实现并行计算。
2025-10-05 08:16:54
991
2
原创 【Python】并发——线程
Python并发编程摘要 并发(Concurrency)指在同一时间段内交替处理多个任务(如边下载边看视频),而并行(Parallelism)是真正同时执行多个任务。Python受GIL限制,多线程在CPU密集型任务中无法提速,但适合IO密集型任务。Python提供三种并发方式:多线程(threading,适合IO)、多进程(multiprocessing,适合CPU计算)和异步IO(asyncio,适合高并发IO)。创建线程有函数式(Thread(target=))和继承类两种方式。守护线程(daemon
2025-09-28 21:15:20
675
原创 【Python】上下文管理器
上下文管理器是Python中用于管理资源(如文件、数据库连接、锁等)的机制,通过with语句简化资源获取和释放的代码。其核心原理是实现__enter__()和__exit__()方法:__enter__()在代码块执行前初始化资源,__exit__()确保无论是否发生异常都能正确释放资源。常见使用场景包括文件操作、数据库连接等,可以有效避免资源泄漏问题。自定义上下文管理器只需实现这两个方法,还能在__exit__()中处理特定异常。相比try-finally方式,上下文管理器使代码更简洁、安全。
2025-09-26 11:25:10
1306
原创 【Python】文件处理(二)
本文介绍了Python中文件与目录属性操作和权限管理的常用方法。主要内容包括:1)判断文件/目录是否存在(os.path.exists()和Path.exists());2)判断文件类型(文件、目录、符号链接);3)获取文件大小和时间属性;4)文件权限管理(修改权限os.chmod、检查权限os.access);5)文件所有权操作(仅限Unix系统)。文中提供了多个实用代码示例,并说明了跨平台注意事项。最后给出了一个综合性的文件信息检查工具实现,可快速获取文件类型、大小、时间属性等信息。这些操作是文件系统编
2025-09-25 23:17:00
989
原创 【Python】文件处理(一)
Python文件处理涉及打开、读写和关闭文件。使用open()函数打开文件,返回文件对象,支持多种模式(如'r'读、'w'写、'a'追加)。写入方法包括write()、writelines()和print(file=f)。推荐使用with语句自动管理文件关闭。注意编码问题(推荐utf-8)和模式选择,避免数据丢失。写入模式分为覆盖写('w')、追加写('a')和安全写('x')。
2025-09-25 19:38:49
1288
原创 【Python】生成器
生成器摘要 生成器是一种特殊的迭代器,通过yield关键字实现按需生成数据的特性。与普通函数不同,生成器函数可以暂停和恢复执行,保持中间状态,适用于大数据处理、无限序列等场景。创建方式包括生成器函数(含yield)和生成器表达式。关键特点包括: 惰性计算,节省内存 支持send()传值、throw()抛异常等交互操作 通过yield from实现生成器委托 遵循迭代器协议(__iter__和__next__方法) 典型应用包括流式数据处理、大文件读取和协程实现。
2025-09-24 20:50:49
1199
原创 【Python】正则表达式
正则表达式是一种用于匹配和处理字符串的模式规则,几乎所有编程语言都支持。它由普通字符和元字符(特殊符号)组成,可实现字符匹配、数量限定、位置锚定等功能。Python中使用re模块处理正则表达式,常用函数包括match()(开头匹配)、search()(全局搜索)、findall()(返回所有匹配)和finditer()(返回匹配迭代器)。正则表达式广泛应用于数据验证、文本处理、日志分析和爬虫等场景,但需注意其可读性差、性能问题和语言差异等局限性。
2025-09-24 17:48:32
1198
原创 【Python】迭代器
迭代器是Python中实现迭代协议的对象,包含__iter__()和__next__()方法。可迭代对象(如列表、元组等)通过iter()生成迭代器,迭代器通过游标记录当前位置并按需返回元素。for循环本质上是迭代器协议的封装。自定义迭代器可用于实现特殊序列(如倒计时)或惰性计算,需注意迭代器是一次性消耗的。相比列表,迭代器具有内存效率优势,适合处理大数据流。
2025-09-23 23:20:31
1030
原创 【Python】面向对象(四)
单例模式是确保一个类仅有一个实例的设计模式,适用于需要全局唯一对象的场景(如数据库连接、日志对象)。Python中实现单例的常见方法包括:1)基于__init__检查实例是否存在;2)重写__new__方法控制实例创建(推荐);3)使用装饰器封装类实现复用;4)通过元类高级控制类实例化。各种方法适用场景不同,从简单项目到框架开发均可选择对应方案。包装类则通过装饰器模式增强类功能,典型应用包括日志记录、权限校验等,实现核心逻辑与扩展功能的解耦。
2025-09-23 02:43:20
1032
原创 【Python】面向对象(三)
面向对象编程中的抽象与接口 摘要:面向对象编程(OOP)的核心原则之一是抽象,它通过隐藏实现细节、仅暴露必要接口来简化复杂度。在Python中,抽象通过两种方式实现:数据抽象(隐藏数据内部表示)和过程抽象(隐藏方法实现细节)。抽象类(使用abc模块)强制子类实现特定方法,但不能直接实例化。Python没有内置接口关键字,但可通过抽象基类模拟接口功能,定义方法契约而不提供实现。与抽象类不同,接口只包含抽象方法,是纯粹的规范。Python支持正式接口(使用ABC强制实现)和非正式接口(基于鸭子类型),体现了其动
2025-09-22 21:07:15
1250
原创 【Python】面向对象(二)
摘要:本文系统介绍了面向对象编程中的继承机制,包括单继承、多继承、多层继承等多种形式。重点讲解了继承的概念、方法重写、super()函数的使用以及方法解析顺序(MRO),并通过Python代码示例展示了不同继承方式的应用场景。文章还阐述了继承与多态的关系,说明如何通过继承实现代码复用和功能扩展。最后简要介绍了多重继承的概念及其典型应用场景。
2025-09-22 02:59:42
903
TCP/IP 协议总结文档
2025-07-12
图像灰度增强方法(Matlab)-对比度拉伸算法.zip
2025-04-10
前端开发:HTML标准标记语言的详尽指南与应用实例
2025-03-04
多线程技术在Java中的实现与应用场景
2025-03-03
C语言基础:深入解析语法结构与核心技术的应用
2025-03-03
网络编程基础知识详解 - IP地址、端口号与常用通信协议
2025-03-11
Java反射机制深入解析及应用实例
2025-03-11
Web开发中CSS基础知识详解及其应用场景
2025-03-14
Java编程中接口与内部类的定义、应用及其与其他概念的区别与联系
2025-02-27
Java面向对象编程:深入剖析继承与多态的应用及其优势
2025-02-27
面向对象编程(OOP)的核心概念与应用:类、对象及其实现
2025-02-27
Java编程语言中字符串相关类及其应用详解 - String、StringBuilder与StringBuffer
2025-02-27
Java编程中数组的基础概念、常用操作及其工具类的应用详解
2025-02-27
Java编程中的流程控制语句及循环结构解析
2025-02-27
Java编程基础详解:变量、数据类型与运算符的应用
2025-02-27
Java I/O流及其应用详解:字节流、字符流及相关工具类全面解析
2025-02-27
Java枚举与注解的应用及其实现技巧详解
2025-02-26
Java核心技术系列:常用核心类及时间API详解与实战
2025-02-26
Java编程中的泛型与集合应用解析-原理、实现及常见操作全面讲解
2025-02-26
Java编程中的异常处理详解:从基本概念到自定义异常
2025-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅