1581526111 发表于 2016-08-12 10:21

一定要点我啊!假设一个字符串对应一个数字,给你某个字符串要找到对应数字

假设一个字符串对应一个数字,给你某个字符串要找到对应数字,大家给我点建议吧,kmp不知道可以吗。
为什么要这样做呢?数字对应数据库的ID,这样索引查找起来比较快。我真是不能理解,其实数据库就百位级别,用索引查找跟字符串(字符串唯一)查找能有区别么?我是这么说的,可是同事反问我“要是一百万台机子请求服务器查找呢?”,我就奇怪了,一百万台请求一百万次,又不是一次查找一百万条。无论是索引还是直接字符串,既然查找一次用的时间可以认为是相同的n秒,你查找一百万次,难道时间就不同的?求解释!

yulihua49 发表于 2016-08-12 12:08

1581526111 发表于 2016-08-12 10:21 static/image/common/back.gif
假设一个字符串对应一个数字,给你某个字符串要找到对应数字,大家给我点建议吧,kmp不知道可以吗。
为什么 ...
支持你的想法。至于“要是一百万台机子请求服务器查找呢”,那是架构问题。要设计一个适当的并行服务架构来解决这个问题。
我不相信你的检索算法会比数据库快。

hanxin83 发表于 2016-08-12 12:13

如果必须要用, 那就用标准的字符串哈希算法呗----
其实DB里面, 字符串长度可控, 没必要这样折腾去.

lxyscls 发表于 2016-08-12 14:25

Map<String, Integer>{:yct12:}

1581526111 发表于 2016-08-12 17:06

大哥怎么不按套路出牌,标题明确写了要自己实现,再说C中没有map:em16: 回复 4# lxyscls


   

yulihua49 发表于 2016-08-13 14:05

本帖最后由 yulihua49 于 2016-08-13 14:07 编辑

1581526111 发表于 2016-08-12 17:06 static/image/common/back.gif
大哥怎么不按套路出牌,标题明确写了要自己实现,再说C中没有map 回复 4# lxyscls
坛子里有C_STL,你找找看。
SDBC里有BB_tree,平衡二叉树。
自己写一个也行。

不过这样做没啥意义。


你还是在数据库里建一个表,必要时调到内存使用。调进来时排个序,然后用二分查找。

wwjxjtu 发表于 2016-10-06 17:26

按套路出牌就不是你大哥了!!!!:lol:lol:lol

yulihua49 发表于 2018-05-01 11:54

hash,只能严格相等,不能模糊匹配。

eveson 发表于 2018-05-01 15:53

就像数组,字节定位到索引,和遍历一遍,哪个快?

cobras 发表于 2018-05-15 21:20

如果字符串插入时就考虑排序,或考虑建索引。则查找可在线性时间内完成。另外,单纯查找操作是可以直接多任务而不需要同步的。所以,支持上百万级的查找是没问题的。难的是修改操作之间以及和查找之间的同步问题。这可以通过系统设计来降低问题的规模。以上乃一家之言,仅当参考。
页: [1]
查看完整版本: 一定要点我啊!假设一个字符串对应一个数字,给你某个字符串要找到对应数字