首页 > 其他分享 >246

246

时间:2023-10-08 22:12:03浏览次数:17  
标签:存储 哈希 算法 地址 查找 246 数据

10-8,周日补课,早上没课
早起补交学费,学习,刷leetcode,做数据结构课程设计的内容,做了一小半,慢慢做。。
学习哈希表:用来快速查找(直接映射一对一,效率很高!):
下午连续四节“计算机网络”,干货满满,这个老师的讲课太棒了,一周四节,都是集中的,可惜了这个傻逼安排
晚上,没课,游戏,看代码,别人的那个“数据云雨”前端特效,看懂了绝大部分,还有一些没看懂,也不管了,或者之后再去理解
哈希到底有什么用,为什么用了哈希就能快速检索。首先要知道数据都存储在内存中,查找数据本质上查找地址,哈希算法就是用来快速找到地址的.
这是别人的评论,讲的很好

up有个重要的点没讲清楚,哈希到底有什么用,为什么用了哈希就能快速检索。有些基础的同学或许能明白,但对于小白可能不知道在讲什么。
首先要知道数据都存储在内存中,假设有几万条商品价格的数据在内存中,我们想从中找到“苹果”价格,如果你事先不知道商品存储规律,就只能一个个去查找,比如第一个是香蕉、第二个是梨,直到第250个才查到苹果。而如果我们记得每个商品价格存在那个位置就没必要去查找,比如直接去查250号的苹果价格。在计算机中的表现就是知道每条数据对应的内存地址,直接去取相应地址的数据。现在的需求是如何在计算机中实现告诉我一个商品描述,瞬间得到该商品信息存储在哪个地址。于是数学家们设计了一套算法,这套算法能够对数据进行一个简单的摘要,可以简单理解为用不同的整数代表不同的数据,这套算法也就是up提到的哈希算法。在存储数据时,我们先对数据的一些描述信息,比如“苹果”,进行哈希运算,得到一个整数,将该整数做些简单处理,转化为一个内存地址,然后将数据存在这个地址对应的存储空间。下次取数据时,仍然对描述信息做哈希运算,得到对应的存储地址,然后到该地址直接取到完整的数据。这样就不用一个个去遍历查找了,即便上亿条数据,也可以瞬间得到想要的数据。
还有几个点补充。这种数据储存的地址依赖哈希运算得到的整数,所以存储是不连续的,编程中提到的字典、map一般就是这种数据结构,而另一种数据结构“数组”则是连续存储的,这两种数据结构各有优缺点各有用途。还有哈希具体的算法实现有很多,也可以根据不同的需求进行不断完善改进。哈希可以对任意数据运算,包括文本,电影,图片,这个很容易理解,因为计算机中数据本质都是二进制01。
还有个很重要的点,哈希运算得到的值并不一定唯一,也就是不同数据有可能哈希值相同。这个也很容易理解,比如我们生成一个8位的哈希值,只要正数,最多也就127个数,如果对1000个数据进行运算,生成1-127之间的数,那必然会有重复。当然这个例子比较极端,我们取的位数不可能那么小。一般重复率极低,我们也有其他办法应对重复的问题。

https://www.bilibili.com/video/BV1qR4y1V7g6/?spm_id_from=333.337.search-card.all.click&vd_source=499f37677e6da77de2c7d851e9cf00df

标签:存储,哈希,算法,地址,查找,246,数据
From: https://www.cnblogs.com/zhanjianhai/p/17748425.html

相关文章

  • kubelet.go 2466 Error getting node not found
    kubeadm初始化kubernetes集群报错,kubelet服务提示:kubelet.go:2466]"Errorgettingnode"err="node\"k8s3-master\"notfound处理记录。  0.ENV kubernetes1.22.x/1.23.x/1.24.x(不限于所列版本)CentOS7.x/Ubuntu22.04(不限于所列版本)  1.问题现象 kube......
  • abc246F - typewriter
    F-typewriter直接容斥即可,每次选出它们的并集。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#definefo(i,a,b)for(int(i)=(a);(i)<=(b);(i)++)#definefd(i,b,a)for(int(i)=(b);(i)>=(a);(i)-......
  • sol. ABC246Ex
    动态DP模板题[ABC246Ex]01?Queries题目大意:给定一个长度为\(N\)且只包含?,1,0的字符串\(a\)。\(Q\)次操作,每次操作会修改字符串中的一个字符,并求出此时整个字符串中本质不同的子序列个数。众所周知,动态DP依然是DP的一种。先考虑没有修改操作,那么本题变为一个普......
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)
    漏洞简介RocketMQ5.1.0及以下版本,在一定条件下,存在远程命令执行风险。RocketMQ的NameServer、Broker、Controller等多个组件外网泄露,缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。此外,攻击者可以通过伪造RocketMQ协议内容来达到......
  • [LeetCode] 2461. Maximum Sum of Distinct Subarrays With Length K
    Youaregivenanintegerarray nums andaninteger k.Findthemaximumsubarraysumofallthesubarraysof nums thatmeetthefollowingconditions:Thelengthofthesubarrayis k,andAlltheelementsofthesubarrayare distinct.Return themaxim......
  • Nuke导出视频缺失 H.246格式 的解决办法
    同事在使用Nuke导出视频时报错,报错提示:缺失H.246格式后来经过我的研究发现,QuicktimePlayer在标准安装时,默认不关联一些格式(具体是哪些格式不清楚)QuicktimePlayer在安装过程中,不要选择标准安装,应该是选择自定义安装,然后在安装的过程中,要完全安装这样就不会报错了。 p......
  • CVE-2023-33246命令执行复现分析
    RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。影响版本<=RocketMQ5.1.0<=RocketMQ4.9.5环境搭建dockerpullapache/rocketmq:4.......
  • 力扣---2462. 雇佣 K 位工人的总代价
    给你一个下标从0 开始的整数数组 costs ,其中 costs[i] 是雇佣第i 位工人的代价。同时给你两个整数 k和 candidates 。我们想根据以下规则恰好雇佣 k 位工人:总共进行 k 轮雇佣,且每一轮恰好雇佣一位工人。在每一轮雇佣中,从最前面candidates 和最后面candidates......
  • Leetcode 2460. 对数组执行操作
    题目:给你一个下标从0开始的数组nums,数组大小为n,且由非负整数组成。你需要对数组执行n-1步操作,其中第i步操作(从0开始计数)要求对nums中第i个元素执行下述指令:如果nums[i]==nums[i+1],则nums[i]的值变成原来的2倍,nums[i+1]的值变成0。否则,跳过......
  • [LeetCode] 2460. Apply Operations to an Array
    Youaregivena 0-indexed array nums ofsize n consistingof non-negative integers.Youneedtoapply n-1 operationstothisarraywhere,inthe ith operation(0-indexed),youwillapplythefollowingonthe ith elementof nums:If nums[i]......