我正在使用一大组(5到2千万)字符串键(平均长度为10个字符),我需要将其存储在内存数据结构中,该结构在恒定时间或接近恒定时间内支持以下操作:
// Returns true if the input is present in the container, false otherwise
public boolean contains(String input)
Run Code Online (Sandbox Code Playgroud)
就吞吐量而言,Java的Hashmap证明是令人满意的,但占用了大量内存.我正在寻找一种内存效率高的解决方案,并且仍然支持良好的吞吐量(与散列相当或几乎一样好).
我不关心插入/删除时间.在我的应用程序中,我将仅执行插入(仅在启动时),并且随后将仅使用contains
应用程序生命周期的方法查询数据结构.
我读到HAT-Trie数据结构最接近我的需求.我想知道是否有一个具有实现的库.
其他建议与实现的指针欢迎.
谢谢.
我们使用SVN进行源代码修订控制,并正在尝试将其用于非源代码文件.
我们正在处理大量(300-500k)短(1-4kB)文本文件,这些文件将定期更新并需要对其进行版本控制.我们尝试在平面文件模式下使用SVN,它正在努力处理第一次提交(签入500k文件)大约需要36小时.
每天,我们需要系统能够在短时间内(<5分钟)处理每次提交事务的10k个修改文件.
我的问题:
谢谢
编辑1:我需要版本控制,因为多个人将同时修改相同的文件,并将以与程序员编辑源代码完全相同的方式进行手动差异/合并/解决冲突.因此,我需要一个中央存储库,人们可以检查他们的工作并查看其他人的工作.工作流程几乎与编程工作流程相同,只是用户不是程序员,文件内容不是源代码.
更新1:事实证明,主要问题更多的是文件系统问题,而不是SVN问题.对于SVN,即使在24小时后,提交具有50万个新文件的单个目录也没有完成.在1x5x10x10树中排列的500个文件夹中拆分相同的文件,每个文件夹有1000个文件,因此提交时间为70分钟.对于包含大量文件的单个文件夹,提交速度会随着时间的推移而显 Git似乎要快得多.会随着时间而更新.
问题背景
我有一个包含10个符号的有限词汇[AJ].这些符号的含义与问题无关.它们可以是DNA碱基,音素,单词等.
项是一系列符号.在这个问题中,所有项目都具有相同的长度(例如6).例如
A C B A D J
Run Code Online (Sandbox Code Playgroud)
我有一个大的(5M)表,其中包含从一些已知数据中采样的所有长度为6的项目的计数.例如
A C B A D J 55
B C B I C F 923
A B C D E G 478
Run Code Online (Sandbox Code Playgroud)
给定一个带有一个未知符号的新序列,我的任务是猜测符号.在以下示例中,缺少的符号是?.
B C B ? C F
Run Code Online (Sandbox Code Playgroud)
一个简单的猜测解决方案?是查看我的表格,找到符合该模式的最大计数项目B C B ? C F
问题
什么是良好的数据结构来存储我的项目频率表,以便合理有效地处理时空?如果查询时的计算是合理的,我更喜欢使用更少的内存.(我将有很多这样的表格,因此5M数字只是一个近似值.)
哪些实现细节可以对处理速度产生很大影响?
我想到的事情:
从每个序列中创建一个字符串并使用正则表达式进行匹配.警告:1.O(n)是不可接受的.(2)正则表达速度很慢.(3)字符串(至少在java中)是膨胀的.
让Lucene处理索引.关闭tfidf得分.使用短语搜索.潜在地使用计数值进行评分,以便Lucene也负责排序.
使用前缀和后缀尝试索引每个项目.
使用db(可能在内存中)将整个数据放在一个/单独的列中来处理搜索.
更新
有没有人知道一个库(最好是java)可以给我相邻的键给定US_ENGLISH标准键盘的键输入?
例如,如果我输入字符'd',我应该返回以下字符:[w,e,r,s,f,x,c,v].
或者,网格操作api也可以工作(这样我可以实例化具有qwerty键盘布局的网格并使用它来查找我的邻居).
注1:我使用'character'和'key'这两个词来代表字符.
注2:我知道我可以硬编码一种方法来将50个左右的主键映射到它们的邻居.我正在寻找更好的解决方案.
谢谢.
我在Eclipse中开发时不使用Eclipse maven插件.
我使用以下命令在外部生成Eclipse类路径:
mvn eclipse:eclipse
Run Code Online (Sandbox Code Playgroud)
这已经工作了很长时间,我不倾向于添加maven插件.
但是,我希望能够"autoformat"我的pom.xml文件.
我的pom.xml没有显示为"源"文件,因此上下文"源"菜单没有显示.
Control-Shift-F也不起作用.
有没有办法在不安装m2eclipse插件的情况下执行此操作?是否有任何其他通用的"XML编辑器"插件可以帮助解决这个问题?