- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试生成像 youtube 视频 ID 这样的短字符串散列以在我的应用程序中使用,但我无法弄清楚什么是最快和最简单的方法,同时使用数组或基于 json 的字符串提供可能的最短散列。
我读了 Kevin van Zonneveld 的 excellent article关于这个主题,他基于整数生成 alphaID,它有两种工作方式。也有很好的 SO 答案,但我的情况有点不同:
数据库中的每个唯一记录都有很多(超过 100K)但很小的数据集(数组),例如:
$id = 1;
$set[$id] = array(533 => array('a' => 78), 460 => array('a' => 89));
$set[$id] = array(534 => array('b' => 79), 620 => array('a' => 908));
$set[$id] = array(535 => array('a' => 80), 782 => array('c' => 901));
$id = 2;
$set[$id] = array(672 => array('a' => 12), 852 => array('a' => 122));
$set[$id] = array(542 => array('a' => 67), 372 => array('a' => 831));
$set[$id] = array(573 => array('a' => 77), 853 => array('a' => 127));
// ...
1:aeF4t
、2:eaXvT
、3:t4fa
.同一id下的唯一性很重要。例如:
1:aeF4t
和 2:aeF4t
没问题,但我不想在相同的唯一 ID 下使用相同的哈希值:1:aeF4t
和 1:aeF4t
。
是否有任何优雅的选项或良好的编程技术可以在 php 中实现这一点,同时牢记性能?
最佳答案
您可以尝试像 crc32 这样的校验和函数.我不确定您是否会发生冲突(不同数组的校验和相同),但概率应该非常低。
$array = array(533 => array('a' => 78), 460 => array('a' => 89));
$crc32 = sprintf('%u', crc32(serialize($array)));
echo $crc32; // 547561972
通过基础转换,您可以使这个整数更短:
echo base_convert($crc32, 10, 36); // 9205is
如果您要转换为 base 62,您可以进一步缩短它:
base62 = b3Vsi
对于 base 62 转换访问:
converting a number base 10 to base 62 (a-zA-Z0-9)
http://marcus.bointon.com/php-base-62-encoding/ .
顺便说一句:通过基本转换,您也可以缩短 md5 哈希值:
md5 (base 16) = de07bf84ad7708b93eca60b608c7b6e2
md5 (base 62) = 6KXPVjy4V22IgMsCKo86IQ
关于php - 如何基于单向输入的字符串或数组生成短散列(又名 alphaid)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275270/
我正在构建一个游戏,例如 Same Game ,当我必须创建一个新关卡时,我刚刚运行了一个算法来用 N 种颜色填充板子,这个算法随机填充板子,但显然以这种方式生成的关卡并不是都有解决方案。 我必须做一
有两个 TFLearn 项目 TF Learn (aka Scikit Flow) https://github.com/tensorflow/tensorflow/tree/master/tenso
我正在尝试使用代码从 NSDictionary 中解析一个整数 [activeItem setData_id:[[NSString stringWithFormat:@"%@", [dict valu
是否有在线资源描述 VC10 与 VC9 相比代码生成的变化? 我不是在谈论 c++0x 和其他不错的功能(例如内置 static_assert),也不是在谈论精致的 UI。我需要知道的是,由于优化、
那里。我是 Swift 的初学者,正在尝试将旧程序转换为 Swift3。我设法修复了一堆错误,但我无法使该功能正常工作。 fileprivate func extractEntitlements(_
我正在尝试实现 Easy Game Center link但我得到这个错误: Cannot convert value of type 'NSRange' (aka 'NSRange') to exp
我是 Swift 的新手,我正在尝试按照 lynda.com 上的类(class)编写一个简单的类(class)此代码在视频中运行良好,但在我的系统上出现错误。 protocol JSONDecoda
我的代码中有一个错误,例如“无法将类型‘NSRange’(又名‘_NSRange’)的值转换为预期的参数类型‘Range’(又名‘Range’)”,但我不知道如何解决这个问题请任何人帮助我? 我在这里
检查字符串字符的范围时出现此错误... @objc func textField(textField: UITextField, shouldChangeCharactersInRange range
我正在尝试用属性字符串替换子字符串。以下是我的代码。 let searchText = self.searchBar.text! let name = item.firstName ?? "" let
string convert(string name) { string code = name[0]; ... } 我从这一行得到“没有从'value_type'(又名'char')到'st
标题说明了一切,我相信。我只是好奇 () -> () 是否充当函数的参数... class Test { var isAwesome = true func loadData (callbac
我正在编写这个很棒的应用程序,至少我认为它很棒,在 C 中与 GObject 的完美结合,过了一段时间我开始遇到这个非常非常奇怪的错误。我也相信已经注意到它并不总是出现。然而,这可能只是 IDE 的错
我一直在尝试使用类型族来抽象 UI 工具包。当我尝试使用 HLists (http://homepages.cwi.nl/~ralf/HList/) 来改进 API 时,我陷入了困境。 我的 API
在 Scala 中,as explained in the PR that introduced it , parasitic允许偷窃 execution time from other thread
我在网上看到过这个关于加载效果的回车示例,但我无法正确理解它。为什么它必须是 2 \rLoading 而不是 1?有人可以给我解释一下吗? for (int j = 0; j < 3; j++) {
我有一个字符串列表 strs = [ 'foo', 'bar' ] 和一些字典 foo = {'a': 1, 'b': 2}, bar = {'a': 3, 'b': 4}。我想使用 with_ite
我有一个由许多点组成的LineString(坐标字符串),我想计算沿线最近的距离(从第一个点到最后一个点,方向性很重要)到一个点,就像这样说的:"project()" calculation 如果我不
所以最近我确实为我的业务购买了一些模板。它们基于 HTML/CSS/JQUERY/JS/PHP。 问题如下:在我的领域,并发率非常高,人们下载模板并自己使用它们是很常见的。由于我确实为它们付出了很多,
我认为这很容易找到预制的,但似乎我在网上找到的任何解决方案都只能解决部分问题。 我想对用户提供的文件名列表进行排序(这些文件大多以人和/或地址命名),有时使用不同的语言(主要是德语,带有一些法语和意大
我是一名优秀的程序员,十分优秀!