当前位置: 首页 > news >正文

从猜想终结到算法革新,弹性哈希开启数据存储新篇章

目录

  • 哈希表的前世今生
    • 基本原理
    • 从传统到现代:哈希表的演变历程
  • 安德鲁 克拉皮文及其团队的创作历程
  • 弹性哈希详解
    • 基本原理
    • 优点
    • 技术细节
  • 漏斗哈希解析
    • 基本原理
    • 优点
    • 技术细节
  • 新算法的实际应用案例
    • 电子商务推荐系统
    • 金融交易监控系统
    • 社交媒体内容过滤
    • 物联网设备管理
  • 结论与展望

哈希表的前世今生

哈希表作为一种高效的数据结构,其历史可以追溯到20世纪中叶。最早的哈希函数概念由A. D. Booth在1956年提出,但直到1960年代才开始广泛应用。早期的哈希表主要用于解决计算机科学中的基本问题,如数据存储和检索。其中最具代表性的应用之一是数据库系统中的索引机制。
在这里插入图片描述

基本原理

哈希表的核心思想是通过一个哈希函数将输入值映射到一个固定大小的数组中,从而实现快速查找。哈希函数的设计至关重要,因为它决定了哈希冲突的概率以及处理冲突的方式。常见的哈希冲突解决方法包括链地址法(Separate Chaining)和开放地址法(Open Addressing)。链地址法通过在一个位置上链接多个元素来处理冲突,而开放地址法则是在发生冲突时寻找下一个空位。

随着计算机技术的发展,哈希表的应用范围不断扩大。它不仅被广泛应用于操作系统、编译器优化等领域,还成为了现代编程语言标准库的重要组成部分。比如,在C++的STL中,unordered_map就是一个典型的哈希表实现;而在Java中,HashMap则是最为常用的哈希表类。

尽管哈希表具有高效的平均时间复杂度O(1),但在最坏情况下,其性能可能会显著下降。特别是当哈希冲突频繁发生时,查找和插入操作的时间复杂度可能退化为线性时间O(n)。为了应对这一挑战,研究人员不断探索新的哈希算法和技术,以提升哈希表的整体性能和可靠性。

从传统到现代:哈希表的演变历程

在哈希表发展的过程中,几个关键的技术突破对现代哈希表的设计产生了深远影响。首先是1985年图灵奖得主姚期智提出的均匀探测理论,该理论认为在理想的哈希表中,查找单个元素或空位的最佳方法是随机地遍历潜在的位置,并且最坏情况下所需时间与哈希表接近满的程度成正比。这一理论奠定了哈希表性能分析的基础,但也提出了一个长期未解的问题:是否有可能设计出一种哈希表,使其在最坏情况下也能保持恒定的查找效率?

随后,一系列针对哈希冲突解决方法的研究相继出现。例如,双散列法通过使用第二个哈希函数来计算步长,从而减少了冲突发生的概率。此外,布谷鸟哈希则通过两个哈希函数分别指向两个不同的位置,当发生冲突时进行交换,保证了较高的空间利用率和查找效率。

尽管这些方法在一定程度上提升了哈希表的性能,但它们仍然无法彻底解决最坏情况下的性能问题。直到最近,罗格斯大学本科生Andrew Krapivin及其团队提出了弹性哈希和漏斗哈希,才真正实现了哈希表性能的重大突破。
在这里插入图片描述

安德鲁 克拉皮文及其团队的创作历程

Andrew Krapivin是一位来自罗格斯大学的本科生,他对数据结构和算法有着浓厚的兴趣。Krapivin从小就展现出了卓越的数学天赋和逻辑思维能力,这使得他在高中时期便已开始接触编程,并迅速掌握了多种编程语言。进入大学后,他选择了计算机科学作为自己的专业,并很快在学术研究领域崭露头角。

在一次偶然的机会中,Krapivin了解到关于哈希表性能极限的传统观点——即姚期智提出的均匀探测理论。这一理论虽然奠定了哈希表性能分析的基础,但其假设条件过于理想化,难以满足实际应用中的需求。Krapivin意识到,如果能够找到一种新的哈希表设计方法,能够在最坏情况下依然保持高效性能,那么这将是对现有理论的重大突破。

于是,Krapivin决定深入研究这一课题。他首先广泛阅读了大量相关文献,包括经典论文和最新的研究成果,试图从中寻找灵感。与此同时,他还积极与导师和其他同学交流讨论,不断完善自己的想法。经过数月的努力,Krapivin和他的团队终于提出了两种全新的哈希表插入策略:弹性哈希和漏斗哈希。

在这期间,Krapivin面临着诸多挑战。一方面,如何设计出一种既能有效减少哈希冲突又能保持较高查找效率的哈希函数是一个难题;另一方面,实验验证新算法的实际效果也耗费了大量的时间和精力。然而,凭借坚持不懈的努力和创新精神,Krapivin和他的团队最终克服了这些困难,取得了令人瞩目的成果。

他们的研究不仅推翻了长期以来关于哈希表性能极限的传统观点,还为未来数据结构设计提供了新的思路。这项工作得到了业内专家的高度评价,并被认为是年轻科研人员勇于创新、敢于挑战权威的典范。Krapivin的故事激励着更多的年轻人投身于科学研究,追求更高的学术成就。
在这里插入图片描述

弹性哈希详解

Elastic Hashing是一种革命性的哈希表插入策略,旨在提高哈希表在最坏情况下的查找和插入效率。与传统的哈希表相比,弹性哈希通过动态调整哈希表的结构来适应数据量的变化,从而确保了更稳定的性能表现。

基本原理

弹性哈希的核心思想是将整个哈希表划分为多个子数组,并引入一种二元探测结构进行索引。每个子数组都独立运作,但彼此之间通过特定的规则相互关联。具体来说,当一个新的元素需要插入时,首先根据哈希函数将其映射到某个子数组中。如果该位置已被占用,则利用二元探测结构进行进一步搜索,直到找到一个空闲位置为止。

优点

  1. 均摊探测复杂度O(1):弹性哈希通过巧妙的设计,使得大多数插入操作可以在常数时间内完成,大大提高了整体效率。

  2. 最坏情况探测复杂度降至O(log δ⁻¹):这里δ表示哈希表的空闲比例。即使在接近满的状态下,弹性哈希也能保证较为合理的查找时间,避免了传统哈希表在最坏情况下性能急剧下降的问题。

  3. 灵活性强:由于采用了分段式的结构,弹性哈希可以根据实际需求动态调整各子数组的大小和数量,从而更好地适应不同规模的数据集。

技术细节

为了更好地帮助各位理解弹性哈希的工作原理,以下是摘取的一些关键技术细节:

  • 哈希函数的选择:选择合适的哈希函数对于减少冲突至关重要。弹性哈希通常使用一组哈希函数,通过组合多个哈希函数的结果来确定元素的存储位置。

  • 二元探测结构:在发生冲突时,弹性哈希采用了一种特殊的二元探测结构。这种结构允许在多个子数组之间进行跳跃式搜索,从而更快地找到可用位置。

  • 动态调整机制:弹性哈希具备动态调整的能力,可以根据当前数据量的变化自动调整子数组的数量和大小。这种自适应机制确保了哈希表在不同负载条件下都能保持高效性能。
    在这里插入图片描述

漏斗哈希解析

Funnel Hashing是另一种由Andrew Krapivin及其团队提出的新型哈希表插入策略。与弹性哈希不同,漏斗哈希采用了一种层级结构的设计,旨在优化哈希表在最坏情况下的性能表现。

基本原理

漏斗哈希的核心思想是构建一个多层的哈希表结构,每一层都包含若干个哈希桶。当一个新元素需要插入时,首先通过顶层哈希函数将其分配到顶层的一个哈希桶中。如果该桶已经满了,则继续向下一层进行尝试,直至找到一个可用的位置。这种层级结构的设计使得大多数插入操作可以在前几层完成,只有极少数插入会进入最底层的存储区域。

优点

  1. 期望探测复杂度O(log²δ⁻¹):这里的δ同样表示哈希表的空闲比例。漏斗哈希通过层次化的结构设计,有效地降低了最坏情况下的探测复杂度,确保了较高的查找效率。

  2. 最优性证明:Krapivin等人通过对漏斗哈希的深入研究,证明了这种层级结构在最坏情况下的期望探测复杂度达到了理论上的最优界限,为后续研究提供了坚实的理论基础。

  3. 高效的空间利用率:由于大多数插入操作集中在前几层,漏斗哈希能够更加合理地分配存储资源,避免了传统哈希表在高负载状态下可能出现的空间浪费问题。

技术细节

为了更好地理解漏斗哈希的工作原理,以下是一些关键技术细节:

  • 多层结构设计:漏斗哈希采用了多层结构,每层都有不同的容量和哈希函数。这种设计使得插入操作可以在前几层快速完成,减少了对最底层的依赖。

  • 哈希函数的选择:每一层都使用不同的哈希函数,这样可以有效减少跨层冲突的概率,提高整体性能。

  • 负载均衡机制:漏斗哈希通过动态调整各层的容量和哈希函数,确保了系统的负载均衡。这种机制使得即使在极端负载下,系统仍能保持高效运行。

在这里插入图片描述

新算法的实际应用案例

弹性哈希和漏斗哈希这两种新算法在实际应用中展现了巨大的潜力。以下是利用AI生成的几个具体的案例,展示了这些算法在不同领域的成功应用:

电子商务推荐系统

在某知名电商平台的推荐系统中,大量的用户行为数据需要实时处理和分析。传统的哈希表在面对海量数据时,尤其是在高峰时段,往往会出现性能瓶颈,导致推荐结果延迟甚至错误。通过引入弹性哈希,该平台大幅提升了数据存储和检索的效率,确保了推荐系统的实时性和准确性。特别是在用户浏览历史和购物车数据的管理上,弹性哈希的表现尤为突出,显著减少了因哈希冲突引起的性能波动。

金融交易监控系统

在一家大型金融机构的交易监控系统中,实时监测和分析海量交易数据是至关重要的任务。漏斗哈希被应用于交易记录的快速存储和查询,帮助系统在短时间内处理大量并发交易。由于漏斗哈希能够在最坏情况下保持较低的探测复杂度,因此即使在极端负载下,系统仍能稳定运行,确保了交易的安全性和透明度。同时,漏斗哈希的层级结构设计也有助于优化存储空间,降低了硬件成本。

社交媒体内容过滤

社交媒体平台每天都会产生海量的内容,如何快速筛选和过滤这些内容成为了一个亟待解决的问题。某社交巨头在其内容管理系统中引入了弹性哈希和漏斗哈希相结合的方案,用于高效存储和检索用户生成的内容标签。通过这种方式,平台不仅能够快速识别并屏蔽不良信息,还能根据用户的兴趣偏好进行精准推送。特别是在高峰期,该方案显著提升了系统的响应速度和用户体验。

物联网设备管理

随着物联网设备的普及,如何高效管理和监控这些设备成为了一个重要课题。某智能城市项目中,大量传感器和设备的数据需要实时上传和处理。通过使用弹性哈希和漏斗哈希,该项目成功解决了数据存储和检索的瓶颈问题,确保了所有设备数据的及时更新和准确分析。特别是在设备状态监控和故障预警方面,新算法的应用极大地提升了系统的可靠性和维护效率。
在这里插入图片描述

结论与展望

弹性哈希和漏斗哈希的提出标志着哈希表技术的一个重大突破。它们不仅推翻了长久以来关于哈希表性能极限的传统观点,还为数据结构设计提供了新的思路和方法。通过创新性的结构设计,这两种算法在最坏情况下也能保持高效的查找和插入效率,解决了传统哈希表面临的性能瓶颈问题。

对于未来的研究方向,有如下几个方面值得重点关注:

  1. 进一步优化算法性能:尽管弹性哈希和漏斗哈希已经在理论上证明了其优越性,但在实际应用中仍有许多细节需要进一步优化。例如,如何更好地平衡不同层次之间的负载,以及如何选择更合适的哈希函数等。

  2. 拓展应用场景:目前这些新算法主要应用于数据存储和检索领域,但在其他领域如机器学习、大数据分析等方面也有很大的潜力。未来可以探索更多应用场景,充分发挥其优势。

  3. 结合新兴技术:随着人工智能、区块链等新兴技术的发展,如何将弹性哈希和漏斗哈希与这些技术相结合,也是一个值得探讨的方向。例如,在区块链中如何利用这些算法提高交易处理速度和安全性。

总之,弹性哈希和漏斗哈希的出现为数据结构设计带来了新的希望。它们不仅展示了年轻科研人员的创新能力,也为未来的技术发展指明了方向。我们期待看到更多基于这些新算法的创新应用,共同推动科技进步和社会发展。

相关文章:

从猜想终结到算法革新,弹性哈希开启数据存储新篇章

目录 哈希表的前世今生基本原理从传统到现代:哈希表的演变历程 安德鲁 克拉皮文及其团队的创作历程弹性哈希详解基本原理优点技术细节 漏斗哈希解析基本原理优点技术细节 新算法的实际应用案例电子商务推荐系统金融交易监控系统社交媒体内容过滤物联网设备管理 结论…...

云端SaaS系统架构设计

随着互联网的发展,SaaS(软件即服务)架构在众多行业中得到了广泛应用。作为一种高效、可扩展的服务模式,SaaS不仅提升了企业的信息化水平,也使得服务提供商能够通过云计算平台实现全球范围内的业务交付。在设计一个现代…...

黑盒测试和白盒测试的主要优缺点

黑盒测试 vs. 白盒测试:优缺点对比 类别黑盒测试(Black-box Testing)白盒测试(White-box Testing)定义不关注代码实现,仅测试功能和输入输出关注代码逻辑,测试代码内部实现测试依据需求文档、功…...

获取每月最后一个工作日:考虑法定节假日与调休

在许多业务场景中,了解每个月的最后一个工作日对于财务结算、报告生成等至关重要。然而,确定这一日期时必须考虑到国家的法定节假日以及可能存在的调休安排。本文将介绍如何通过Java编写一个工具类来获取指定月份的最后一个工作日,并利用第三…...

Hayabusa:一款针对Windows事件日志的威胁搜索与取证分析工具

关于Hayabusa Hayabusa是一款针对Windows事件日志的威胁搜索与取证分析工具,该工具基于内存安全的Rust开发,支持多线程运行,并且是唯一完全支持 Sigma 规范(包括 v2 关联规则)的开源工具。 Hayabusa本质上是一个Windo…...

leetcode_位运算 190.颠倒二进制位

190. 颠倒二进制位 颠倒给定的 32 位无符号整数的二进制位。 1. 字符串 class Solution:# param n, an integer# return an integerdef reverseBits(self, n):res "" # 创建一个保存结果的空字符串for b in str(bin(n))[2:]:# 遍历n的二进制数res b res # 把每…...

O1 Embedder:让检索器思考后再行动

25年2月来自中科大和北京智源研究院的论文“O1 Embedder: Let Retrievers Think Before Action”。 大语言模型 (LLM) 的功能日益强大,彻底改变人们获取和利用信息的方式。值得注意的是,LLM 擅长执行细粒度数据表示,这有助于精确检索信息。它…...

Python项目中一些常用的关键字

数据定义与类型相关 int:表示整数类型。 float:用于表示浮点数类型。 str:字符串类型,用于处理文本数据。 bool:布尔类型,取值为True或False。 list:列表类型,可存储多个元素&am…...

Java 反射 (Reflection) 详解

一、什么是 Java 反射? Java 反射 (Reflection) 是 Java 语言的一个强大特性,它允许 在运行时 检查和修改类、接口、字段和方法的信息,而不需要在编译时知道这些信息。 换句话说,反射可以让你在程序运行过程中“动态”地获取类的…...

MicroPython使用ESP32和acs712模块测量电流

我们在做物联网应用时,电流检测是监控设备能耗、优化电源管理的重要手段,本文介绍如何利用MicroPython开发ESP32与ACS712霍尔电流传感器模块,实现高精度电流测量,并提供硬件连接、代码实现及校准方法,适用于智能家居、…...

Rust编程语言入门教程 (七)函数与控制流

Rust 系列 🎀Rust编程语言入门教程(一)安装Rust🚪 🎀Rust编程语言入门教程(二)hello_world🚪 🎀Rust编程语言入门教程(三) Hello Cargo&#x1f…...

pdf预览在vue项目中的使用兼容ie浏览器

一、下载pdf预览插件 链接: https://pan.baidu.com/s/1wuzay-saAfiqtS-efd-cvw?pwd6m78 提取码: 6m78 二、创建一个pdf文件夹,将下载下来的文件build和web文件夹复制到pdf文件夹下 三、项目中使用 (路径由两部分组成,第一部分是项目存放pdf插件的路径…...

二级指针略解【C语言】

以int** a为例 1.二级指针的声明 a 是一个指向 int*(指向整型的指针)的指针,即二级指针。 通俗的讲,a是一个指向指针的指针,对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…...

前端基础入门:HTML、CSS 和 JavaScript

在现代网页开发中,前端技术扮演着至关重要的角色。无论是个人网站、企业官网,还是复杂的 Web 应用程序,前端开发的基础技术 HTML、CSS 和 JavaScript 都是每个开发者必须掌握的核心技能。本文将详细介绍这三者的基本概念及其应用 一、HTML——网页的骨架 HTML(HyperText …...

测试 FreeSWITCH 的 sip_invite_route_uri

bgapi originate sofia/external/123461.132.230.73:5161 &echo 得到的是: 172.17.129.123:5088 -> 61.132.230.73:5161 INVITE sip:123461.132.230.73:5161 SIP/2.0 Via: SIP/2.0/UDP 8.141.11.8:5088;rport;branchz9hG4bKcagQFyUgF21NS Max-Forwards: 70 …...

网络安全中的机器学习

当涉及到网络安全时,技术一直是保护系统免受攻击和数据泄露的关键。在这篇论文中,我将介绍一些当前在网络安全领域使用的关键技术,包括加密,身份验证和防火墙。 首先,加密是网络安全中最常见的技术之一。加密是指使用算…...

Electron通过ffi-napi调用dll导出接口

electron使用ffi-napi环境搭建 附打包好的ffi-napi可以直接放到项目目录下使用,避免以后麻烦 一、安装node.js Node.js官网:https://nodejs.org/zh-cn/download,选择LTS长期稳定版本即可 需要注意Node.js 区分32和64位,32位版…...

使用 DeepSeek + 语音转文字工具 实现会议整理

目录 简述 1. DeepSeek与常用的语音转文字工具 1.1 DeepSeek 1.2 讯飞听见 1.3 飞书妙记 1.4 剪映电脑版 1.5 Buzz 2. 安装Buzz 3. 使用DeepSeek Buzz提取并整理语音文字 3.1 使用 Buzz 完成语音转文字工作 3.2 使用 DeepSeek 进行文本处理工作 3.3 整理成思维导图…...

RAGFLOW使用flask转发的open ai接口

flask转发openai标准接口 背景 搭建RAGFLOW 的过程中,遇到一个比较严重的问题,公司部署的大模型代理需要获取token,且token存在有效期5分钟,在RAGFLOW中不能直接用,所以希望通过flask项目转发请求。 方案 比较好的…...

语音芯片非隔离电源供电WT5104

语音芯片非隔离电源供电WT5104 语音芯片供电非隔离电源芯片 WT5104 介绍 在语音相关设备的运行中,稳定的电源供应是确保语音芯片正常工作、实现高质量语音交互的关键。WT5104 作为一款专为多种设备供电设计的非隔离电源芯片,能将常见的 220V 交流电高效转…...

P8752 [蓝桥杯 2021 省 B2] 特殊年份——string提取索引转换为值

这里写目录标题 链接题目代码大佬解答string提取索引转换为值 链接 P8752 [蓝桥杯 2021 省 B2] 特殊年份 题目 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <math.h> #include <queue&g…...

玩机日记 12 群晖部署AList并配置SSL,安装opkg,使用rclone挂载到本地

目录 1、部署alist&#xff0c;配置ssl 安装alist 参考官方文档添加网盘 配置ssl 开启webdav访问 2、安装opkg 修改环境变量 添加计划任务 3、安装配置rclone挂载alist 安装rclone&#xff0c;新建remote 安装fuse3 挂载AList 添加计划任务 1、部署alist&#xff0…...

Fastgpt学习(5)- FastGPT 私有化部署问题解决

1.☺ 问题描述&#xff1a; Windows系统&#xff0c;本地私有化部署&#xff0c;postgresql数据库镜像日志持续报错" data directory “/var/lib/postgresql/data” has invalid permissions "&#xff0c;“ DETAIL: Permissions should be urwx (0700) or urwx,gr…...

我们来学nginx -- work process

题记 回看困惑工作进程能处理大量的并发请求几乎不会阻塞Worker进程可绑定到固定的核&#xff0c;避免CPU频繁地上下文切换看样子&#xff0c;还得转为人话 大白话 作为一般的应用的开发大部分人没有很强的底层技术基础如果深究&#xff0c;涉及复杂技术点&#xff0c;很容易…...

2000-2019年各省农业机械总动力数据

2000-2019年各省农业机械总动力数据 1、时间&#xff1a;2000-2019年 2、指标&#xff1a;行政区划代码、地区、年份、农业机械总动力(万千瓦) 3、范围&#xff1a;31省 4、来源&#xff1a;国家统计局、统计年鉴 5、指标解释&#xff1a;‌农业机械总动力‌是指主要用于农…...

Nginx 常用命令和部署详解及案例示范

一、Nginx常用命令 1.1 启动 Nginx 要启动 Nginx 服务&#xff0c;可以使用以下命令&#xff1a; sudo systemctl start nginx1.2 停止 Nginx 如果需要停止 Nginx 服务&#xff0c;可以使用以下命令&#xff1a; sudo systemctl stop nginx1.3 重启 Nginx 在修改了 Nginx…...

从零开始用STM32驱动DRV8301:无人机/机器人电机控制指南

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、为什么需要专业电机驱动&#xff1f;二、硬件架构深度解析2.1 STM32微控制器核心作用2.2 DRV8301三大核心功能功能…...

HTML5 面试题

1. HTML5 新增了哪些重要特性&#xff1f; 语义化标签&#xff1a;这些标签有助于提高页面的可读性和可维护性。多媒体支持&#xff1a;HTML5 引入了 和 标签&#xff0c;可以直接嵌入音频和视频文件&#xff0c;无需依赖插件。本地存储&#xff1a;引入了 localStorage 和 se…...

获取指定的python库安装路径

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” 贵在坚持&#xff01; ---------------------------------------…...

C语言预处理学习笔记

1. 预处理器的功能 预处理器&#xff08;Preprocessor&#xff09;在编译C语言程序之前对源代码进行预处理。预处理指令以#号开头&#xff0c;主要包括文件包含、宏定义、条件编译等功能。 2. 文件包含 文件包含功能用于在一个文件中包含另一个文件的内容&#xff0c;通常用…...

动态内存分配算法对比:最先适应、最优适应、最坏适应与邻近适应

动态内存分配算法对比&#xff1a;最先适应、最优适应、最坏适应与邻近适应 在操作系统中&#xff0c;动态内存分配算法用于管理空闲内存块的分配和回收。最先适应算法&#xff08;First Fit&#xff09;、最优适应算法&#xff08;Best Fit&#xff09;和最坏适应算法&#x…...

Flutter 常见布局模型

Flutter的常见的布局模型有容器&#xff08;Container&#xff09;、弹性盒子布局&#xff08;Flex、Row、Column、Expanded&#xff09;、流式布局&#xff08;Wrap、Flow&#xff09;、层叠布局&#xff08;Stack、Position&#xff09;、滚动布局&#xff08;ListView、Grid…...

数据结构系列一:初识集合框架+复杂度

前言 数据结构——是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是计算机专业的基础课程&#xff0c;但也是一门不太容易学好的课&#xff0c;它当中有很多费脑子的东西&#xff0c;之后在学习时&#xff0c;你若碰到了困惑或不解的地方 都是很正常的反应&…...

文献阅读 250220-Convective potential and fuel availability complement near-surface

Convective potential and fuel availability complement near-surface weather in regulating global wildfire activity 来自 <https://www.science.org/doi/10.1126/sciadv.adp7765> ## Abstract: 炎热、干燥、多风、无雨的条件有利于野火——这种关于火灾天气的知识为…...

ASP.NET JWT认证失败响应:从默认到自定义的优雅改造

本文主要介绍如何通过ASP.NET Core的JwtBearerEvents机制&#xff0c;实现JWT认证失败响应的深度定制。 1. 背景 在之前的文章《一个简单的ASP.NET一致性返回工具库》 中&#xff0c;我们介绍了 Sang.AspNetCore.CommonLibraries 这一通用库&#xff0c;它通过统一API响应模型…...

AI大模型生成Logo图形商标,快速可选性强!

在申请注册商标时&#xff0c;不仅有文字商标&#xff0c;还有图形商标&#xff0c;及文字和图形的组合商标&#xff0c;如何更好的实现快速出图和对图形描述的要求&#xff0c;普推知产商标老杨近期也是研究测试了各种大模型。 最后选了AI模型本地部署及API接入生成图形商标的…...

Python爬虫实战:爬取豆瓣电影

目录 引言 1. 爬虫基础 1.1 什么是爬虫&#xff1f; 1.2 Python爬虫常用库 2. 实战&#xff1a;抓取豆瓣电影Top250 2.1 安装依赖库 2.2 发送HTTP请求 ​编辑 2.3 解析HTML ​编辑 2.4 存储数据 2.5 完整代码 3. 进阶&#xff1a;处理分页和动态内容 3.1 抓取多页…...

嵌入式0xDEADBEEF

在嵌入式系统中&#xff0c;0xDEADBEEF 是一个常见的“魔数”&#xff08;magic number&#xff09;&#xff0c;通常用于调试和内存管理。它的含义和用途如下&#xff1a; 1. 调试用途 未初始化内存的标记&#xff1a;在调试时&#xff0c;0xDEADBEEF 常用于标记未初始化或已…...

python入门笔记5-集合与字典

元组 Python 的元组&#xff08;tuple&#xff0c;简写为tup&#xff09;与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号​()​&#xff0c;列表使用方括号​[]​。 好处就是节省内存。 集合 集合是无序、不重复元素的容器。 用 {} 或 set() 创建…...

Nginx(详解以及如何使用)

目录 1. 什么是Nginx&#xff1f; 2. 为什么使用nginx? 3. 安装nginx 3.1?安装nginx的依赖插件 3.2 下载nginx ?3.3?创建一个目录作为nginx的安装路径 ?3.4?解压 ?3.5?进入解压后的目录 3.6?指定nginx的安装路径 ?3.7?编译和安装nginx 3.8 启动nginx ?…...

java每日精进 2.20 MQ相关复健

在 RabbitMQ 中&#xff0c;消息消费者对消息的签收&#xff08;acknowledgment&#xff09;可以通过三种方式进行管理&#xff1a;自动签收、手动签收 和 拒绝签收。它们主要控制消费者如何处理消息确认和消息的重新排队。下面详细讲解它们的区别&#xff0c;并通过代码示例展…...

微信小程序地图map全方位解析

微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具&#xff0c;可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点&#xff1a; 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…...

Windows隐藏窗口/开机自启动

目录 使用Start-Process命令控制窗口状态 设置程序开机自启动 使用Start-Process命令控制窗口状态 隐藏窗口运行程序 使用Start-Process命令时&#xff0c;可以通过-WindowStyle Hidden参数让程序在后台运行&#xff0c;窗口不可见。例如&#xff1a; Start-Process D:\note…...

量子计算的威胁,以及企业可以采取的措施

当谷歌、IBM、Honeywell和微软等科技巨头纷纷投身量子计算领域时&#xff0c;一场技术军备竞赛已然拉开帷幕。 量子计算虽能为全球数字经济带来巨大价值&#xff0c;但也有可能对相互关联的系统、设备和数据造成损害。这一潜在影响在全球网络安全领域引起了强烈关注。也正因如…...

日期类(完全讲解版)

1. 类的设计思想 Date 类的设计目的是为了封装和处理日期信息&#xff0c;它提供了对日期的基本操作&#xff0c;如日期加减、日期比较、日期合法性检查等。类中的私有成员 int _year, int _month, int _day 存储了日期的年、月、日。 类的声明和构造 Date 类的声明&#xff1…...

在线考试系统的公平性和高效性如何保证

随着互联网技术的飞速发展&#xff0c;线上教育已成为现代教育体系中的重要组成部分。而在线考试系统作为线上教育的重要环节&#xff0c;其公平性和高效性成为了广大教育工作者和考生关注的焦点。本文将深入探讨在线考试系统如何保证考试的公平性和高效性&#xff0c;以期为线…...

Spring AI + Ollama 实现调用DeepSeek-R1模型API

一、前言 随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;LLM&#xff09;在各个领域的应用越来越广泛。DeepSeek 作为一款备受瞩目的国产大语言模型&#xff0c;凭借其强大的自然语言处理能力和丰富的知识储备&#xff0c;迅速成为业界关注的焦点。无论是文本生…...

基于spring的策略模式

集合spring框架的是策略模式&#xff0c;直接上代码 1、接口 public interface PaymentStrategy {//支付接口void pay(double amount);}2、实现类 2.1 实现类一 Component("creditCard") //作为区分的标识 public class CreditCardPayment implements PaymentStr…...

面试编程题

1. 请写出string类的定义&#xff0c;要求有构造函数&#xff0c;析构函数&#xff0c;拷贝&#xff0c;赋值函数。 #include <cstring> #include <algorithm>class String { public:explicit String(const char* str nullptr){if(str){str_ new char[strlen(st…...

AI工具讲解

推荐超级课程&#xff1a; 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战 目录 模型管理OllamaHugging Face区别 AI模型交互应用程序AnythingLLMCherry Studio AI开发相关Python库 模型管理 Ollama h…...