无法做到常数时间复杂度的数据结构 已翻译 100%

oschina 投递于 2014/12/03 07:14 (共 7 段, 翻译完成于 12-09)
阅读 3828
收藏 17
2
加载中

假如你有一个web站点,人们可以通过一个密码访问。 没有用户名,只需要一个密码。 你的站点会有一批合法的密码。 判断一个密码是否在密码集中是一个安全性敏感的问题: 如果一个用户输入合法的密码,那么他可以访问一些私密的信息;否则站点显示404页面。你如何判断一个密码是否合法?

对于这类问题,大部分程序员首先想到的解决方案是用一个 hash表。 一个 hash表是一个键值对的集合,由于它不用逐个验证集合中的映射关系,因此它有一个很好的特性:根据键可以快速找到值。

daxiang
daxiang
翻译于 2014/12/03 08:40
1

哈希表通常被实现为一种存储结构的数组,每一元素都有包含有相关的信息。例如这个数组的可容纳32个该元素,假设它的hash方法是H,H的实现就是通过对32求余的值来查找元素。 这个哈斯表存储了一系列key-value键值对。查找一个key需要遍历该列表直到首次匹配到某个元素的key与给定key的相等;如果没有匹配到,则查找失败。

不幸的是,将密码存储在普通的哈希表的中不是一个好注意。问题在不在于计算哈希值的函数而在于判断相等的函数;通常判断相等的函数的时间复杂度并不是常数阶的。攻击者可以根据系统判断不相等所需要的响应时间不同来发现规律,并以此来破解你的密码。

lxfeng
lxfeng
翻译于 2014/12/04 15:08
1

如果你能确保你的哈希表使用一个常数时间的比较函数,以此防御骇客的攻击,那么你就安全了么?不!因为不是每个链式结构的长度都是一样的,例如,有些”有兴趣的人“可以搜集信息,据此分辨那个链式结构上的查找操作究竟是进行了一次比较还是两次。通常,他们有能力获取各个长度的链式结构在你的哈希表的那个数组中所占的百分比。如果给定这个哈希表的粒度(granularity),那么他们可能就会得到这个数组的长度。

据我得知微小的时间差仍然会泄露敏感信息,导致完全失守。所以我们试图寻找一个在查询一个值这个操作上与哈希表消耗了同样的算法步骤的数据结构。例如,在一个已排序的长度为SIZE的数组上进行二分查找需要ceil(log2(SIZE))步来找到某个值(译注:ceil(x)指比x大的最小整数),这并不取决于我们想找的这个键是什么或者所进行查找的集合中究竟有什么。在每一步中,我们比较这个键和一个”中点“的值哪个较大,并在其中一半上重复该操作。

crab2313
crab2313
翻译于 2014/12/07 02:21
1

一个问题是,我不知道比较160位字符串时间复杂度为常量的算法。(我想,站点的密码是服务器随机生成的,并且密码的长度可能达到160位。) 我非常感谢如果有人能够给出一个时间复杂度不超过常量的算法。 一个更大的问题是,访问内存的时间不是固定的:访问一个有序数组中0耗费的时间可能与访问10耗费的时间或多或少存在差异。 在算法方面,我们可以在一个更高抽象级别上使用一般模型进行访问,但是在硬件方面,低级别的内存有一个复杂的并行和并发协议,它对于任意指定的访问,耗费时间为一个非确定的值。“热”内存(经常访问的存储空间)的读取速度比“冷”内存快。

内存访问的非确定性泄漏了时间信息,如果进行二进制搜索,将会发生灾难: 通过观察时间的差异,攻击者可以从字面上二分密码集。 这是最糟糕的事情!

daxiang
daxiang
翻译于 2014/12/07 09:17
1

你可以有办法应付这密码排序,不再通过它们的真实值而是通过它们加密后的hash值(例如通过SHA256加密的值)。这种做法迫使攻击者不再以密码值二分空间,而是以hash值,这样做法可以保护真实的密码受到攻击者的攻击。你还是会泄露一些关于关于哪些路径是‘热’的,哪些是‘冷’的时间信息,但是你不会真正暴露真实密码值。

就我所知,有一件事情很明显,就是我们无法在常见的硬件上设计出一个键值对的map,可以在常量级时间内读取并且map中的实体数量是亚线性分布的。例如Zooko 存入进去,运行时间常量集意味着最好的情况和最坏的情况都在相同时间量上。当然对于链表散列的hash表来说这是错误的,对于二进制搜索来说也是错误的,因为‘热’的内存访问时比‘冷’的访问快。这仅仅似乎合理的常量时间访问,是在一个数据结构上每一次以相同的顺序访问每一个元素。所有在数据结构上常量时间的操作都依据数据大小成线性。消息泄露,你所能做的是对那些在你的模型泄露的信息做出解释,因为我们是以他们的hash值排序而不是他们的真实值排序。

-悟空-
-悟空-
翻译于 2014/12/08 12:21
1

一旦你说服自己,可以从计时上泄露一些密码的位,那么你完全可以使用不同的哈希表——直接使用一个加密哈希函数和一个常数时间复杂度的相等函数,这没有什么问题。我们不需要发明一个常数时间复杂度的小于符号。你从计时上泄露了大概 log 2 (COUNT)个密码位,但是因为它们被加密过,你不能将它们用于二分真正的键值。当然,你需要确保这个哈希表没有按顺序存放数据。这类实现细节并不是大多常见的哈希表实现所具备的,所以你仍然可能需要实现你自己的哈希表。

crab2313
crab2313
翻译于 2014/12/08 22:57
2

还有一种其他的解决方案,你可以改变对数据的编码方式。例如,让键本身就包含被只服务端(译注:接受这个键并返回键所对应值的那头)知道的私有key签名加密过的数据。但是这种方案被网络带宽所限制,同时,对数据的重复拷贝也造成了浪费。这对例如照片这样的东西并不适用,它们太大了。

欢迎有见解的读者的指正:) 当我意识到没有什么很好的常数时间复杂度数据结构的时候我很沮丧,但是我很高兴如果你能证明我是错的。感谢在Twitter上的 Darius BaconZooko Wilcox-O'HearnJan Lehnardt,和Paul Khuong的见解,指出了我的错误。

crab2313
crab2313
翻译于 2014/12/08 23:27
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(26)

Z
ZXEOC
争了这么半天,这跟一致性有什么关系啊,整篇文章都在说能否找到一个访问的时间复杂度为常量的数据结构,以免被人通过响应时间猜测密码。话说回来,我觉得这个难道不是过度设计?别说网络响应时间本来就比内存响应时间长得多而且更不稳定,即便用户是在本地访问,你也完全可以在响应之前增加一个随机长的等待时间来混淆响应时间。
crab2313
crab2313

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力

引用来自“crab2313”的评论

呵呵以对,代数没入门的人在这谈抽象。等你把抽象代数研究透彻了或许我还会有兴趣听你谈抽象。在此之前不要在这磨嘴皮。

引用来自“开源中国射线科科长”的评论

你再一次错了 哥们 数学的本质不是代数也不是微积分 数学的本质是推导 作者说constant time是一致性 这代表他的理解就是“一致性” 而不是“常数” 你懂不懂?
另外,作为文章译者,本文所有出现的constant time都指算法意义上的常数时间
crab2313
crab2313

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力

引用来自“crab2313”的评论

呵呵以对,代数没入门的人在这谈抽象。等你把抽象代数研究透彻了或许我还会有兴趣听你谈抽象。在此之前不要在这磨嘴皮。

引用来自“开源中国射线科科长”的评论

你再一次错了 哥们 数学的本质不是代数也不是微积分 数学的本质是推导 作者说constant time是一致性 这代表他的理解就是“一致性” 而不是“常数” 你懂不懂?
呵呵,我说了你连代数都没入门。对数学的认识还停留在代数微积分,你确定你听懂我在说什么?先把数学的分类搞清楚再说,搞清楚我说的“代数“什么东西再说。这年头,除了数学专业少有代数入门的,唉。外加特殊名词特殊翻译,学英语的不懂?也对,估计是去学日常英语混日子。我说了constant time没有一致的意思?
crab2313
crab2313

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力

引用来自“crab2313”的评论

呵呵以对,代数没入门的人在这谈抽象。等你把抽象代数研究透彻了或许我还会有兴趣听你谈抽象。在此之前不要在这磨嘴皮。

引用来自“开源中国射线科科长”的评论

你再一次错了 哥们 数学的本质不是代数也不是微积分 数学的本质是推导 作者说constant time是一致性 这代表他的理解就是“一致性” 而不是“常数” 你懂不懂?
笑尿,哥们,境界都扯出来了,我记得信达雅是初中老师整天嚷嚷的吧。这个板块本质就是翻译科技英语,英语分几大类你不会不知道,你真是英语专业的?科技英语不扣字眼扣什么,还境界呢,你境界真低。
开源中国射线科科长
开源中国射线科科长

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力

引用来自“crab2313”的评论

呵呵以对,代数没入门的人在这谈抽象。等你把抽象代数研究透彻了或许我还会有兴趣听你谈抽象。在此之前不要在这磨嘴皮。
你再一次错了 哥们 数学的本质不是代数也不是微积分 数学的本质是推导 作者说constant time是一致性 这代表他的理解就是“一致性” 而不是“常数” 你懂不懂?
开源中国射线科科长
开源中国射线科科长

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力

引用来自“crab2313”的评论

笑尿,还信达雅呢,我管它什么达,我只纠结信,而我没看到你的信。别搞笑了,还学英语呢,看篇文章都看不懂。
你纠结于信 那是因为你境界不够 懂不 呵呵 并不是说所有人都跟你一样 我说:汪汪 表示我根我家旺财去溜狗 旺财听得懂就够了 你能听得懂吗?
crab2313
crab2313

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力
呵呵以对,代数没入门的人在这谈抽象。等你把抽象代数研究透彻了或许我还会有兴趣听你谈抽象。在此之前不要在这磨嘴皮。
开源中国射线科科长
开源中国射线科科长

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力

引用来自“crab2313”的评论

笑尿,还信达雅呢,我管它什么达,我只纠结信,而我没看到你的信。别搞笑了,还学英语呢,看篇文章都看不懂。
我不是不懂 而是我根本就不看文章 我10年来上网 基本都只看评论不看文章 以为只有自己的思想才是真正的思想 别人告诉你1+1=2 难道1+1就真的=2 ?你好搞笑哦 , 你自己看不懂的文章标题 即使别人翻译错了 我一样能懂 那我说你是猪 你就真的是猪么?
crab2313
crab2313

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。

引用来自“开源中国射线科科长”的评论

你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力
笑尿,还信达雅呢,我管它什么达,我只纠结信,而我没看到你的信。别搞笑了,还学英语呢,看篇文章都看不懂。
开源中国射线科科长
开源中国射线科科长

引用来自“crab2313”的评论

看到这标题的翻译我也是醉了
@红薯
求解决

引用来自“红薯”的评论

你醉了,我应该怎么解决,给你醒酒?哈哈 ,你说怎么改合适?

引用来自“crab2313”的评论

按照本人分析,标题中的”一致“怎么看都是constant翻译出来的,但是constant-time应该指的是时间复杂度为常数 http://en.wikipedia.org/wiki/Time_complexity#Constant_time constant-time data structure应该指 具有某些常数时间复杂度的操作的数据结构, 直译成“常数时间复杂度的数据结构”虽然也有点问题,但是比“时间复杂度一致”这样的机翻要好很多

引用来自“hengheng8848”的评论

太死板,非要用原文标题的语法结构 。可改为《是否存在保持时间复杂度一直的数据结构》就行,言简意赅,也根本不影响全文阅读,符合中国特色。

引用来自“crab2313”的评论

哥们,看清楚再回啊,还“一致“那?我眼神不好,”一致“这词哪里翻出来的,麻烦指出。还有,there are no good明显是个否定,怎么就成疑问了。

引用来自“开源中国射线科科长”的评论

翻译分为三层 本人就是学英语的 1⃣️ 信 2⃣️达 3⃣️雅 在二次元世界又分为字面翻译和意译 我再来做一个意译 这文章的意思就是 把hash表读到ssd上 再更新算法 用更简单的hash 其实 用短信验证和重复时间内限制登录次数也是一个道理 当用程序语言无法解决问题的时候我们可以用抽象思维去解决 支付宝的登录验证就是这个道理 你最多只能错5次 编程 不一定非要用语言 用时间编程也是可以的 前提你能明白我的话 内功要够

引用来自“crab2313”的评论

你的表达能力堪忧,我真的看不懂。 本人信奉Dijstra和Haskell Curry的理论,我认为根本没有什么语言。Dijistra的理论将imperative编程语言抽象成形式系统,Haskell Curry等人开发的lambda calculus和Combinational Logic这两个形式系统更是函数式语言的基础,根本没有什么编程语言,有的只有数学,前提是你能明白我的话,内功要够。
你过于纠结 信达雅中的达 而忽略了信和雅 这并不是不可以 但你很容易丢失程序设计最重要的能力:抽象能力
返回顶部
顶部