这段时间 在 准备软件设计师考试    目的是想复习一下  自己以前没怎么学的知识    在这个过程中  有了很大的收获  对以前不太懂得东西  在复习的过程中  有了很大程度的提高

比如在复习 程序语言的时候    对编译程序的处理过程和文法分析 有了全新的了解 作为一个半路出家  没学过程序语言这门课的我来说   有一种醍醐灌顶的感觉   以前在看 javaweb技术内幕是

对里面提的javac 的编译原理  看的真的是 云里雾里   哈哈哈   想想 也是醉了  最基础的程序语言 都没有看过  会想去理解javac 的编译原理

(编译程序 中间的处理过程 有 词法分析  语法分析  语义分析  中间代码生成  代码优化  目标代码生成   这次过程中   又有符号管理 和 出错处理 俩个过程贯穿其中    除此之外 还有汇编、解释程序系统等)

在 复习计算机网络的时候   对 SMTP 有了全新的认识  以前上课的时候只是粗略的学了一下  很多东西并没有搞懂   不知道  MIME是对 SMTP的 优化  传统的 SMTP 只能传输 ASCII类型的字符   MIME 及多用途Internet邮件扩充协议  它的最初的设定是为了增加邮件的功能  啊哈哈哈    还记得在 javaweb 中 的  这种 文传输类型吗   如   text/html  还有在文件上传的时候  添加的文件类型后缀

*****************************************************

正文    关于   哈希表   在 java 的 体系在 听的是 太多了  但是 对于  hash表    以前理解的并不是很多  只知道 这个很重要  在很多的地方 都听过  但是对于 底层的原理  自己 知道的真的是微乎其微

哈希表  在 数据结构的位置

作用在  查找的篇章   关于查找   的内容在软件设计师的教材上如下 和  数据结构(严蔚敏篇的内容差不多)

静态查找有 顺序查找   折半查找   分块查找(索引查找 )

动态查找有  二叉排序树 二叉平衡树  B-树   B+ 树   .....

哈希表 的 设立  也是为了便于查找    哈希表放在了静态和 动态的查找的 最后  为什么》???

说明哈希表的重要性?   是的

前面的不管是 静态查找 还是 动态查找  他们所记录在结构中的相对位置 是随机的 和记录的关键字之间不存在确定的关系  因此在查找的过程中  需要进行一系列的比较才能找到        要是理解这句话   差不多 就能明白 哈希表 设计的目的了吧    (前面的两种排序  如我们传统的排序  是在不确定里面数据的情况下  进行的比较   所以  它的查找时间 是和N 有关    而 哈希表 想要做的是  我能不能不进行比较你只要给我一个数据 我就知道 它在哈希表中的存储位置   )虽然他也没法做到  查询时间为 1    因为有冲突

关于 哈希函数的构造方法  如 直接定址法  数字分析法  平方取中法  随机数法 除留余数法等 这里就不一一说明了  仅简绍一下直接定址法

它的方法时    取关键字的某个线性函数值为哈希地址  即:
H(key)=key  或 H(key)=a*key+b
其中a b 为常数  (这种哈希函数叫做自身函数   )
列如 统计每一个省份的人口数   可以将每个省份的编码设为 关键字  哈希函数取关键字本身 H(key)=key
这里着重说明一下 在构造哈希函数方法的之前  首先要明确什么是 好的 哈希函数 
若对于关键字集合中的任一个关键字,经哈希函数映像到地址集合中任何一个地址的概率都是相等的 , 则称此类哈希函数为均匀的哈希函数。  简而言之 就是 使用哈希函数的关键字  能够均匀的分配到哈希表的每一个位置   从而避免冲突

处理冲突的方法 
1  开放定址法  

2  链地址法   它和开发地址发 有本质的差别   前一个是  为了 避免冲突而设定   这一个 是 ”接受冲突”

三个因素 : 哈希函数   处理冲突的方法     哈希表的填装因子

*****************************************************************************************************************************************************

上面说的 哈希表的内容   有很多不足之处     要想对哈希表 有更加深入的了解  十分建议 去 看看数据结构的  查找 的  相关 概念

自己 在 学习java的时候   走了很多的弯路  很多知识 都是 不太了解   知其然  不知其所以然    这是因为 对 很多 计算机的 基础概念的理解不太深入   或者是根本就不了解   在这种前提下  还想不断的去学习最前沿的技术   这显然是 不太明智的      因为楼盖的再高  如果根基不稳的话  很容易塌的  这也是为什么  对于考计算机研究生  要考  数据结构  计算机网络   操作系统   组成原理等 知识

这也是为什么校招那么喜欢问 一些基础的知识

因为对这些相对基础的知识不太了解的话  就很难去理解 那些已经封装好的东西  以及升华   比如   java虚拟机的知识  要是对计算机的底层 不太了解的话  理解java虚拟机的是相当吃力的  当然 远不止java这些......

所以 最后  希望 那些半路出家的 人   能一起去 学一点 这些 相对 底层的东西吧  虽然它们都相当枯燥 但是静下心去学 还是会有所收获的

转载于:https://www.cnblogs.com/qinning/p/10850443.html

查找-------(HashCode)哈希表的原理相关推荐

  1. 【转载】哈希表的原理,真的很难弄懂么?

    [转载]哈希表的原理,真的很难弄懂么? 刘小爱v 发布时间:05-0909:06科技达人 转载路径: https://baijiahao.baidu.com/s?id=1666172942887109 ...

  2. 【数据结构】哈希表的原理及实现

    1.什么是哈希表 哈希表又称为散列表,它是一种以键值对形式来存储数据的结构,只要输入待查找的key,就可以通过该key寻找到对应的值.对应函数:y = f(key) 通过把关键码映射到表中的对应位置来 ...

  3. 除留余数法构造哈希表_哈希表算法原理

    基本概念 哈希表(Hash Table)是一种根据关键字直接访问内存存储位置的数据结构.通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数. 哈 ...

  4. 散列表查找(哈希表)

    散列函数构造经常要考虑: 1.散列表的长度 2.关键字的长度 3.关键字的分布情况 4.计算散列函数所需的时间 5.记录的查找频率 一个"好"的散列函数应遵循一下两条原则 (1)函 ...

  5. 二十四、哈希表的原理分析及代码实现

    一.哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速 ...

  6. 查找 之 散列表查找(哈希表)

    基础概念 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key).这里对应关系f称为散列函数,又称为哈希(Hash)函数. 采用散列技术将 ...

  7. 查找三 哈希表的查找

    要点 哈希表和哈希函数 在记录的存储位置和它的关键字之间是建立一个确定的对应关系(映射函数),使每个关键字和一个存储位置能唯一对应.这个映射函数称为哈希函数,根据这个原则建立的表称为哈希表(Hash ...

  8. 算法查找,顺序查找,二分查找,分块查找,哈希表查找

    七大查找算法博客园:https://www.cnblogs.com/yw09041432/p/5908444.html

  9. 【数据结构与算法篇】 哈希表原理、底层实现剖析

    一个在校大二学生,在CSDN记录自我成长!!!最近在自学数据结构和算法时,学到了哈希表,有很多地方都不明白.如何使用哈希表?原理是什么?如何工作的?我们如何设计哈希表?等等,所以就在网络上查了相关博客 ...

最新文章

  1. keras中的fit函数参数_keras的fit_generator与callback函数
  2. 对“单子模式”的补充
  3. sql中group by 和having 用法解析
  4. python设置坐标轴刻度值字体大小_python 设置xlabel,ylabel 坐标轴字体大小,字体类型...
  5. Reactive Extensions for .NET (Rx)
  6. You third iOS app,这个APP要放到手机上面运行,才会成功,才会新建记录。
  7. 跟周报焦虑说拜拜!Excel打通FineBI,到底有多香
  8. Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
  9. 洛谷P3676 小清新数据结构题(动态点分治)
  10. 老子《道德经》第三章
  11. usermod+用户密码管理+mkpasswd
  12. 机架式服务器可以安装win7系统,Win7 32位系统怎么安装电音
  13. 温度传感器、VB.NET
  14. 2019,我们被“黑”科技薅过的羊毛?
  15. 【数据处理】Python matplotlib绘制双柱状图以及绘制堆积柱状图——保姆级教程
  16. Affinity Mattrix 亲和矩阵总结
  17. lib库知识全面讲解(.lib、.dll)
  18. memcmp函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )
  19. 微信分享,图标背景黑色问题解决
  20. 代码写过300张可视化,为什么建议你用报表工具开发数据大屏?

热门文章

  1. js ajax java传参_js使用ajax传值给后台,后台返回字符串处理方法
  2. java akka_AKKA文档(java版)——什么是AKKA?
  3. P1303 A*B Problem(python3实现)
  4. mysql 联合主键_深入理解Mysql索引底层数据结构与算法,背后的故事
  5. 【ES11(2020)】可选链操作符和空值合并运算符
  6. C++工作笔记-hiredis中关于ERR wrong number of arguments for HMSET问题的解决
  7. IDEA工作笔记-自动生成POJO或JPA的实体类
  8. HTTP之Cache-Control基本概念以及实例(C++ Qt实现)
  9. 表格为一条细线的html代码,html制作细线表格的简单实例
  10. go io.reader 多次读取_你应该掌握的 Go 高级并发模式:计时器