【连载】关系型数据库是如何工作的?(6)
最后我们介绍的重要数据结构就是Hash表。当你需要快速查找的时候非常有用,而且理解Hash表会有助于我们以后理解常用数据库Join方式之一Hash join。这种数据结构常被数据库用作存储内部数据结构:表锁或缓存池(后续章节会介绍)。 Hash表能够通过元素Key快速
最后我们介绍的重要数据结构就是Hash表。当你需要快速查找的时候非常有用,而且理解Hash表会有助于我们以后理解常用数据库Join方式之一Hash join。这种数据结构常被数据库用作存储内部数据结构:表锁或缓存池(后续章节会介绍)。
Hash表能够通过元素Key快速找到元素的,为了构建一张Hash表,你需要定义:
- 一个元素的Key;
- 一个关于Key的Hash函数,Key的hash值就代表元素所在的位置(我们通常称为Hash桶);
- 一个关于Key的比较函数,一旦你找到了正确的桶,你就可以通过比较函数找到正确的元素。
一个简单的例子
让我们看一个虚拟的例子:
上图中的Hash表实际有10个桶,Hash函数就是取10的余数,也就是每个Key的个位数字:
- 如果个位数是0,则元素在0号桶;
- 如果个位数是1,则元素在1号桶;
- 如果个位数是2,则元素在2号桶;
- …
比较函数就是比较两个整数是否相同的函数。如果我们想要找到78:
- Hash表计算的78的哈希值是8;
- 找到8号桶,第一个元素就是78;
- 返回78;
- 整个搜索花费2个操作:1-计算Hash值;2-找到桶中的元素;
如果我们想要找到59:
- Hash表计算的59的哈希值是9;
- 找到9号桶,第一个元素是99,99!=59,因此这不是我要找的元素;
- 用相同的逻辑找到9,79,…,最后一个29;
- 元素59并不存在;
- 真个搜索花费7个操作。
好Hash函数的标准
标准依赖于你要查找的值,不同类型的值花费是不同的。
如果将之前例子中的Hash函数换为取1 000 000的余数(也就是最后6位数),第二个例子耗费的操作数就会降为1,因为在000059号桶中没有元素。实际上,真正的难点就是找到一个能够尽可能降低每个桶中元素数量的Hash函数。(译者注:我们一般称之为降低Hash冲突)
在上述两个例子中,找到一个好的Hash函数很容易。但是当Key是下列类型时,找到一个好Hash函数很困难:
- 1个字符串,比如一个人的名字;
- 2个字符串,比如一个人的姓+名字;
- 2个字符串和一个日期,比如一个人的姓+名字+出生日期。
只要拥有一个足够好的Hash函数,搜索的时间复杂度就是O(1)。
数组和Hash表的比较
什么情况下需要使用数组呢?这是一个好问题!
- 基于Hash的数据库表,可以在内存中只加载一般的桶,其他桶可以留在磁盘上;
- 数组必须占用一个连续的内存空间,如果一个基于二维数组的数据库表很大,那么要在内存中找到足够的连续空间很困难;
- 基于Hash的数据库表,你可以选择任意的Key,比如可以选择Key为国家+名字。
关于更多的信息,可以参考我写的另外一篇文章Java HashMap。但理解这篇文章并不要求你理解Java。
下一章我们来开始介绍数据库的整体视图。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

2024 est la première année des téléphones mobiles IA. De plus en plus de téléphones mobiles intègrent plusieurs fonctions IA. Grâce à la technologie intelligente IA, nos téléphones mobiles peuvent être utilisés plus efficacement et plus facilement. Récemment, la série Galaxy S24 lancée au début de l’année a encore une fois amélioré son expérience d’IA générative. Jetons un coup d’œil à l’introduction détaillée des fonctions ci-dessous. 1. Autonomisation profonde de l'IA générative. La série Samsung Galaxy S24 a apporté de nombreuses applications intelligentes grâce à l'autonomisation du Galaxy AI. Ces fonctions sont profondément intégrées à Samsung One UI6.1, permettant aux utilisateurs d'obtenir une expérience intelligente pratique à tout moment, de manière significative. améliorer les performances des téléphones mobiles. La fonction de recherche instantanée lancée par la série Galaxy S24 est l’un des points forts. Il suffit aux utilisateurs d’appuyer longuement.

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Dogecoin est une crypto-monnaie créée sur la base de mèmes Internet, sans plafond d'approvisionnement fixe, avec des délais de transaction rapides, des frais de transaction faibles et une grande communauté de mèmes. Les utilisations incluent les petites transactions, les pourboires et les dons de bienfaisance. Cependant, son offre illimitée, la volatilité du marché et son statut de pièce de monnaie farfelue comportent également des risques et des inquiétudes. Qu’est-ce que Dogecoin ? Dogecoin est une crypto-monnaie créée à partir de mèmes et de blagues Internet. Origine et histoire : Dogecoin a été créé en décembre 2013 par deux ingénieurs logiciels, Billy Markus et Jackson Palmer. Inspiré du mème alors populaire « Doge », une photo comique représentant un Shiba Inu avec un anglais approximatif. Caractéristiques et avantages : Offre illimitée : contrairement à d’autres crypto-monnaies telles que Bitcoin

Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

La huitième couleur est une arme dans Neon Abyss. De nombreux joueurs veulent connaître la balistique de la huitième couleur de l'arme et comment jouer avec la force de l'arme. Jetons donc un coup d’œil au guide détaillé de la trajectoire des armes de la huitième couleur de Neon Abyss, de la force des armes et du gameplay des armes. Neon Abyss Color 8 Guide détaillé Introduction à l'arme : l'arme secrète du sorcier ! Vitesse d'attaque de l'arme : Normale Force de l'arme : Modérée Gameplay avec l'arme : La méthode d'attaque de la huitième couleur consiste en trois attaques à cible unique, puis en lançant un rayon. Affichage balistique :
