在PHP和Mysql中实现hashtable的步骤
我是编程语言的新手,我正在使用PHP和MySQL.我有一个在php中进行哈希鞋的作业.我需要做的是存储用户收集的项目,然后显示它.通过互联网进行了一些研究后,我将在实施标签时做以下步骤,如果我错了,请纠正我: 设置表: - >用户表:uid(int [5]),用户名(varchar [128]),item_id(int [8],items_id_hash(int [50]) - >项目表:item_id(int [5]),item_name(varchar [128]),ittem_id_hash(int [50]) 创建哈希函数(如何创建哈希函数?我自己创建或从Internet创建?)以将密钥转换为哈希值,然后将其插入数据库.例如:hash item_id = 001进入哈希值=(例如)12345.然后插入用户表. 显示/搜索.从用户中检索哈希值,然后将其比较与项目表并显示. 问题: 我的步骤正确吗? 在哪里可以找到良好的PHP哈希功能?我可
4 2023-05-28
编程技术问答社区
哈希表VS关联数组
最近,我在一本非常著名的书中读过 hash-tables " 算法简介".我尚未在任何实际应用中使用它们,但想要.但是我不知道该怎么开始. 谁能给我一些使用它的示例,例如,如何使用标签表实现字典应用程序(例如Abbyy Lingvo)? 最后,我想知道PHP中的标签表和关联阵列之间有什么区别,我的意思是我应该使用哪种技术以及在哪种情况下? 如果我错了(我恳求)请纠正我,因为实际上我是从标签开始的,我只有基本的(理论)知识. 非常感谢. 解决方案 在PHP中,关联数组被实现为Hashtables,具有一些额外的功能. 从技术上讲,关联阵列与散布的数组并不相同 - 它简单地实现了,部分是在场景后面的台词.因为它的大部分实现都是标签,所以它可以做一个可以做到的所有内容 - 但它也可以做更多的事情. 例如,您可以使用for loop循环循环循环,您无法使用该循环. 因此,尽管它们相似,但关联阵列实际上可以做一个超集, hashtable可以做的事情 - 因此它们
0 2023-05-26
编程技术问答社区
将数组KEY改为子数组中的一个值
这是我数据库的一组结果 print_r($plan); Array ( [0] => Array ( [id] => 2 [subscr_unit] => D [subscr_period] => [subscr_fee] => ) [1] => Array ( [id] => 3 [subscr_unit] => M,Y [subscr_period] => 1,1 [subscr_fee] => 90,1000 ) [2] => Array ( [id] => 32 [subscr_unit] => M,Y
0 2023-05-26
编程技术问答社区
Blackberry: 如何使一个数据结构(例如Hashtable)具有持久性?
我的代码很好: static { myStore = PersistentStore.getPersistentObject(MY_LONG_KEY); myList = (Vector) myStore.getContents(); if (_storedStations == null) { myList = new Vector(4); // prepopulate with fake data myList.addElement(new MyItem("Eins")); myList.addElement(new MyItem("Zwei")); myList.addElement(new MyItem("Drei")); myList.addElement(new MyItem("Vier"));
0 2023-05-25
编程技术问答社区
如何用perl将整个子程序传入hashtable数据?
i具有以下子例程,我应该将例程作为标签,并且应该使用perl在另一个子例程中再次调用hashtable? 输入文件(来自linux命令bdata): NAME PEND RUN SUSP JLIM JLIMR RATE HAPPY achandra 0 48 0 2000 50:2000 151217 100% agutta 1 5 0 100 50:100 16561 83% 我的子例程: sub g_usrs_data() { my($lines) = @_; my $header_found = 0; my @headers = (); my $row_count = 0; my %table_data = (); my %row_data = (); $lines=`bdata`; #print $lines; fore
0 2023-05-25
编程技术问答社区
理解推送到哈希和|=[]结构。(产生于boilerplate.t)
我正在与perl重新竞争,并且刚刚使用module-starter来初始化一个新项目.我现在试图了解生成的代码.除了以下行所指示的情况外,一切都很好: sub not_in_file_ok { my ($filename, %regex) = @_; open( my $fh, ') { while (my ($desc, $regex) = each %regex) { if ($line =~ $regex) { ##I'm having problems here push @{$violated{$desc}||=[]}, $.; } } }
0 2023-05-24
编程技术问答社区
用键中的特殊字符进行Perl哈希替换
我当前的脚本将表达出来,例如: my $expression = '( a || b || c )'; 使用子/替换的输入的每个布尔组合,例如: my $keys = join '|', keys %stimhash; $expression =~ s/($keys)\b/$stimhash{$1}/g; 因此,例如表达可能会保存, ( 0 || 1 || 0 ) 这很好. 但是,我想允许变量(也在%strimhash中)包含一个标签, *. my $expression = '( a* || b* || c* )'; 另外,打印Stimhash的钥匙返回: a*|b*|c* 它无法正确替换/替换额外的特殊字符 *. 它发出警告: 在替代迭代器中%striphash中使用非初始化值 我尝试使用quotemeta(),但到目前为止还没有很好的效果. 它将删除值.替代后的一个例子看起来像: ( * || * ||
0 2023-05-24
编程技术问答社区
Java的Hashtable放置方法使我的应用程序变慢了
我需要做: Dictionary cache; cache = new Hashtable(); this.getDocument().putProperty("imageCache", cache); 然后我有一种方法: cache.put(url, picture); 图片是图像对象. 我以这种方式创建: public Image getSmiley(String smileyName) { BufferedImage img = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB); Graphics g = img.getGraphics(); ImageIcon myicon = new ImageIcon(getClass().getResource("/ola/smileys/" + smileyName + ".png")); myicon.paintIcon
0 2023-05-24
编程技术问答社区
碰撞解决: 二次探查与单独链路的对比
好吧,所以我一直在使用哈希表和不同的碰撞解决问题进行一些实验.我试图找出哪个更有效地进行查找,这是一个使用单独的链式或二次探测进行碰撞解决方案的哈希表.我的结果表明,即使对于诸如0.4或0.2之类的小负载因子,单独的链条也比二次探测快.是这样还是我的结果错误? 解决方案 处理成本的差异 两种方法是 的方法 (链接) - 间接方向,即指针删除 vs. (与二次探测) - 评估[简单但复合]算术公式 - 索引到新位置 - 可能的重复序列(由于探针值和存储在这些位置的非目标值之间的碰撞;链接不必担心. 因此,链接更快也就不足为奇了.指针删除是大多数CPU的"本地"指令,与索引到数组的索引相当(在大多数情况下是相同),留下了算术操作和可能的碰撞,因为它是为探测探测的开销.最简单的探测序列公式将需要一些CPU指令(初始化stepnr,通常对stepnr进行一些转移,添加到当前位置/探针)本身很容易慢了几次,而不是指针的降低. (POSS.警告:此后不久,请参阅"编辑",
0 2023-05-23
编程技术问答社区
在hashtable中和在排序的列表中寻找一个项目,哪个更快?
哪个更快的速度可以在标签或排序列表中找到一个项目? 解决方案 算法复杂性是一件好事,并且已知hashtables是 o(1) (在您的情况下,我想最好使用排序的数组比列表)将提供 o(log n)访问时间. ,但是您应该知道复杂性符号为您提供了进入无限的访问时间.这意味着,如果您知道您的数据将继续增长,那么复杂性表示法就可以提示选择的算法. 当您知道数据将保持相当低的长度时:例如,您的数组/hashtable中只有几个条目时,您必须使用手表和测量.因此,请进行测试. 例如,在另一个问题中:对数组进行排序.对于一些条目气泡排序,而 o(n^2)可能比..快速排序更快,而它是 o(n log n). 也相应地,根据其他答案,根据您的项目,您必须尝试为您的Hashtable实例找到最佳的哈希功能.否则,这可能会导致您在散布中查找的戏剧性不良表现(正如汉克·盖伊(Hank Gay)的答案中指出的那样). 编辑:请查看本文以了解大符号的含义./p> 其他解决
2 2023-05-23
编程技术问答社区
既然有单独的链式链接的列表,为什么我们还要在哈希表中使用线性探测?
我最近了解了处理哈希表中碰撞的不同方法,并发现带有链接列表的单独链接总是比线性探测更有效率.为了达到空间效率,我们分配了一个预定义的内存进行线性探测,该探测后来我们可能不使用,但是为了单独的链接,我们动态使用内存. 与线性探测更有效地使用链接列表的单独链接?如果是这样,为什么我们完全使用线性探测? 解决方案 我很惊讶您看到链接的哈希比线性探测快 - 实际上,线性探测通常比链接要快得多.这主要归因于参考的局部性,因为以线性探测的访问倾向于近距离记忆比在链式哈希中执行的访问. 线性探测中还有其他胜利.例如,插入线性探测哈希表不需要任何新分配(除非您重新拨打表),因此在诸如稀缺内存的网络路由器之类的应用程序中,很高兴知道一旦设置了表,一旦设置了表,可以将元素放入其中而没有malloc失败的风险. 线性探测的一个弱点是,初级群集可能导致表的性能显着降解.虽然链接的哈希仍然会遭受不良哈希功能的困扰,但它对附近哈希码的元素不太敏感,这不会对运行时间产生不利影响.从理论上讲,
0 2023-05-23
编程技术问答社区
Unordered_Map查询时间
内置地图和C ++库中的集合(包括unordered_map和multimap)要求查找函数(用于查找特定元素)使用迭代器来遍历元素. C ++参考站点声称,使用这些数据结构查找元素需要平均恒定时间,就像常规哈希表一样.但是,在找到元素之前,迭代器是否不需要穿越整个列表,平均使此o(n)时间限制? 解决方案 您的语句不是真的: map,set,multimap和multiset通常以二进制树(例如:在vs中实现为红色黑树),在这种情况下,查找方法在这种情况下搜索使用该属性的键在一个节点中,left child is less比节点(根据比较)和the right child is greater(根据比较).根据标准的要求,这给出了 o(log n). 在unordered_map和unordered_set的情况下,实施为哈希表,通常以桶集(例如:std::vector)的形式实施,并且将铲斗作为unordered_map元素的集合实现((例如:std:
2 2023-05-23
编程技术问答社区
为什么Dictionary.First()这么慢?
不是一个真正的问题,因为我已经找到了答案,但仍然很有趣. 我一直认为,如果您正确哈希,哈希表是最快的关联容器. 但是,以下代码非常慢.它仅执行约100万次迭代,并且在核心2 CPU上需要超过2分钟的时间. 代码执行以下操作:它维护需要处理的项目的集合todo.在每次迭代中,它都会从此集合中获取一个项目(无论哪个项目),将其删除,如果没有处理(可能添加更多的项目),然后重复此内容,然后重复此操作,直到没有项目进行处理. 罪魁祸首似乎是dictionary.keys.first()操作. 问题是为什么慢? Stopwatch watch = new Stopwatch(); watch.Start(); HashSet processed = new HashSet(); Dictionary todo = new Dictionary(); todo.Add(1, 1); int itera
0 2023-05-23
编程技术问答社区
为什么在Javascript中推送方法明显比通过数组索引放值要慢
我不明白为什么这项测试: http://jsperf.com/push-method-method-method-method-method-vs-setting -via-key 表明 a.push(Math.random()); 比 慢十倍 a[i] = Math.random(); 您能解释一下为什么是这种情况吗?什么魔术"推"会让它如此慢? (与其他有效的方法相比, 是如此慢). 编辑 注意:推动测试是偏差的.我增加了每次迭代的阵列的大小!阅读仔细接受的答案! 解决方案 您能解释一下为什么是这种情况吗? 因为您的测试有缺陷. push确实始终将其附加到现有的a数组使其更大,而第二个测试只使用了第一个1000个索引. 在这里使用setup是不够的,您必须在每个循环之前重置a数组: http://jsperf.com/push-method-vs-setting-via-key/3 . 除此之外,与使用For-l
0 2023-05-23
编程技术问答社区
哈希表--为什么它比数组快?
如果我为每个元素都有一个键并且我不知道该元素的索引成数组,那么Hashtables的性能要比数组更好(O(1)vs O(n)). 为什么?我的意思是:我有一个钥匙,我哈希..我有哈希..算法不应该将此哈希与每个元素的哈希进行比较吗?我认为记忆处置背后有一些技巧,不是吗? 解决方案 在我有每个元素的密钥的情况下,我不知道 元素的索引成阵列,Hashtables的性能优于 数组(O(1)vs o(n)). 在平均情况下,哈希表搜索执行O(1).在最坏的情况下,哈希表搜索会执行O(n):当您发生碰撞时,哈希函数始终返回相同的插槽.人们可能会认为"这是一种遥远的情况",但是应该考虑的一个很好的分析.在这种情况下,您应该遍历所有元素,例如数组或链接列表(O(n)). 为什么?我的意思是:我有一个钥匙,我哈希..我有哈希. 是否应该将算法与每个元素的哈希人进行比较 哈希?我认为记忆处置背后有一些技巧,不是 它? 您有一个钥匙,就可以.此时,您可以访问O(1)中的哈
0 2023-05-23
编程技术问答社区
cs50 pset5 拼写器优化
我已经完成了拼写器并通过了所有检查.但是我仍然对表演感到困惑.我在研究和运行测试方面尽了最大的努力,但是与员工的实施相比,我的实施速度较慢10-20%.我该如何改进我的代码? // Implements a dictionary's functionality #include #include #include #include #include #include #include "dictionary.h" // Represents a node in a hash table typedef struct node { char word[LENGTH + 1]; struct node *next; } node; //Prototypes unsigned int hash(const char *word);
0 2023-05-23
编程技术问答社区
在Linq中except方法是如何工作的
我有课: class SomeClass { public string Name{get;set;} public int SomeInt{get;set;} } class SomeComparison: IEqualityComparer { public bool Equals(SomeClass s, SomeClass d) { return s.Name == d.Name; } public int GetHashCode(SomeClass a) { return (a.Name.GetHashCode() * 251); } } 我也有两个大型List称为list1和list2 我曾经有: var q = (from a in list1 from b in list2
2 2023-05-23
编程技术问答社区
C++中的Hashtable?
我通常需要使用C ++ stdlib映射,每当我需要存储一些与特定类型的值相关的数据(例如键值 - 例如字符串或其他对象). STDLIB地图实现基于树,该树提供比标准数组或stdlib vector提供更好性能(O(log n))的树. 我的问题是,您知道提供更好的性能的C ++"标准" Hashtable实现(O(1))?类似于Java API的Hashtable类中可用的东西. 解决方案 如果您使用的是C ++ 11,则可以访问和标头.这些提供课程 std::unordered_map 和 std::unordered_set . 如果您使用tr1的C ++ 03,则可以使用相同的标头访问std::tr1::unordered_map和std::tr1::unordered_set(除非您使用GCC,否则该标题为而). 在
0 2023-05-23
编程技术问答社区
提高Python中超大型字典的性能
我发现,如果我在开始时初始化一个空词典,然后在for循环中添加元素(大约110,000个键,每个密钥的值是列表,也在循环中增加),速度沿着循环进行下去. 我怀疑问题是,词典不知道刚开始时的键数,而且它的作用不是很聪明,所以也许存储碰撞变得频繁并且会变慢. 如果我知道钥匙的数量,而这些密钥到底是什么,那么Python有什么办法可以更有效地使dict(或标签)工作?我隐约记得,如果您知道钥匙,可以巧妙地设计哈希功能(完美的哈希?)并事先分配空间. 解决方案 如果我知道钥匙的数量,以及这些键是什么,在那里 python的任何方式都可以做更多的工作 有效率的?我隐约记得,如果您知道钥匙,可以 巧妙地设计哈希功能(完美的哈希?)并分配 事先空间. python没有揭示词典的"增长阶段"的预尺寸选项,也没有提供对词典中"放置"的任何直接控制. 也就是说,如果键始终是提前知道的,则可以将它们存储在a set 并使用 dict.fromkeys() .该classMe
0 2023-05-23
编程技术问答社区