问题标签 [random-access]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compression - 多部分 gzip 文件随机访问(Java 中)
这可能属于“不太可行”或“不值得付出努力”的范畴,但在这里。
我正在尝试随机访问存储在多部分 gzip 文件中的记录。具体来说,我感兴趣的文件是压缩的Heretrix Arc 文件。(如果您不熟悉多部分 gzip 文件,gzip 规范允许将多个 gzip 流连接到一个 gzip 文件中。它们不共享任何字典信息,它是简单的二进制附加。)
我认为应该可以通过在文件中寻找某个偏移量来做到这一点,然后扫描 gzip 魔术头字节(即 0x1f8b,根据RFC),并尝试从以下字节读取 gzip 流. 这种方法的问题在于,这些相同的字节也可能出现在实际数据中,因此寻找这些字节可能会导致开始读取 gzip 流的位置无效。鉴于记录偏移量不是先验已知的,是否有更好的方法来处理随机访问?
sql - SQLite - 按兰德排序()
在 MySQL 中我可以使用 RAND() 函数,在 SQLite 3 中是否有任何替代方法?
c# - 为什么我们不能序列化这些对象?
为什么我们不能将对象序列化为随机访问文件?另一方面,我们可以将对象序列化为顺序访问文件?
""C# 没有提供在运行时获取对象大小的方法。这意味着,如果我们序列化类,我们不能保证固定长度的记录大小“”(来自我读过的书)。
所以我们无法读取随机访问文件,因为我们不知道文件中每个对象的大小,所以我们如何寻找??????
java - 是否有任何 Java 库提供随机访问队列实现?
我正在用 Java 实现事件流上的滑动窗口。所以我想要一个允许我执行以下操作的数据结构:
当新事件发生时添加到数据结构的末尾;
处理旧事件时从数据结构的开头删除;
获得对数据结构元素的标准随机访问(
size()
, );get(i)
一般来说,典型的列表“读取”操作;对上述所有操作都是有效的;
是无界的。
不需要其他访问权限。并且不需要线程安全。
我目前正在使用ArrayList执行此操作,以启动和运行。但我想要更有效的东西;remove(0)
方法 (2. above)对于ArrayList
.
数字 1. 和 2. 是标准的Queue式操作。但是,Queue
JDK 中的实现(例如ArrayDeque)不允许get(i)
in 3.
所以,我想知道是否有任何库有这样的实现,并且适合商业用途。
如果没有,我想我会求助于自己写...
c++ - boost::multi_index_container 带有 random_access 和 ordered_unique
我在boost::multi_index_container
同时使用随机访问和 orderd_unique 时遇到问题。(我很抱歉这个冗长的问题,但我想我应该举个例子..)
这里有一个例子:假设我想在工厂中生产 N 个对象,并且对于每个对象我都有一个需要满足的需求(这个需求在创建多索引时是已知的)。好吧,在我的算法中,我得到了中间结果,我将其存储在以下类中:
向量描述parts
了产生了哪些对象(它的长度是 N,并且它在字典上比我的 coresp 需求向量小!) - 对于每个这样的向量,我也知道 used_time。此外,我得到了这个生成对象向量的值。
我有另一个约束,所以我不能生成每个对象——我的算法需要intermediate_result
在数据结构中存储几个对象。在这里boost::multi_index_container
使用,因为parts
和used_time
描述了一个唯一的intermediate_result
(并且它在我的数据结构中应该是唯一的)但是这max_value
是我必须考虑的另一个索引,因为我的算法总是需要intermediate_result
最高的max_value
。
所以我尝试将boost::multi_index_container
withordered_unique<>
用于我的“parts&used_time-pair”和ordered_non_unique<>
我的max_value
(不同intermediate_result
的对象可能具有相同的值)。
问题是:决定哪个“parts&used_time-pair”更小所需的谓词std::lexicographical_compare
在 my -vector 上使用,因此对于许多-objectsparts
来说非常慢。intermediate_result
但是会有一个解决方案:我对每个对象的需求不是那么高,因此我可以在每个可能的部分向量上存储中间结果唯一的used_time
.
例如:如果我有一个需求向量( 2 , 3 , 1)
,那么我需要一个数据结构来存储(2+1)*(3+1)*(1+1)=24
可能的部分向量,并且在每个这样的条目上都有不同的 used_times,它们必须是唯一的!(存储最小的时间是不够的——例如:如果我的额外限制是:满足给定的生产时间)
但是如何将random_access<>
-index 与ordered_unique<>
-index 结合使用?
(Example11在这方面没有帮助我..)
java - Java 的 FileChannel 的内存版本
我正在对我正在使用的库进行一些更改。为了减少内存使用,库将其临时数据写入磁盘而不是将其保存在内存中。但是,对于我的使用场景,将其保存在内存中会更有效。它也有一些并发问题,因为它的临时文件具有常量名称,因此不能在不同的线程中同时运行(因为线程会破坏彼此的数据)。
因此,我需要更改库,以便将所有数据保存在内存中。我最初并没有编写这个库,因此我对对代码进行大刀阔斧的改变不是很舒服。因此,我希望通过尽可能少的重构来做到这一点。写入磁盘的代码非常简单。这是一个(有些简化的)示例:
块的读取非常相似(即它使用从 RandomAccessFile 获得的 FileChannel)。
感觉最简单的解决方案是如果我可以使用 FileChannel 的一些实现,它映射到内存中的一个位置而不是文件。我知道我可以使用 FileChannel 的映射方法将文件映射到内存中的某个位置。然而,情况恰恰相反。这给了我一个文件的“内存API”。我想要一个针对一些内存的 FileChannel 接口。有没有可用的实现?
java - Java 1.6 抽象的随机访问
作为 Java 大师,您会建议如何抽象随机访问,以便代码可以不知道其访问的数据是在内存中还是在硬盘驱动器上的文件中?
(有问题的文件可能有几 GB 大小。随机访问是最重要的功能。)
compression - 任何可搜索的压缩库?
我正在寻找一个在解压过程中支持随机访问的通用压缩库。我想将维基百科压缩成单一的压缩格式,同时我想从中解压缩/提取单个文章。
当然,我可以单独压缩每篇文章,但这不会给出太大的压缩比。我听说 LZO 压缩文件由许多可以单独解压缩的块组成,但我还没有找到 API+文档。我也可以在 zlib 中使用 Z_FULL_FLUSH 模式,但是还有其他更好的选择吗?
c++ - 不适合内存的随机访问容器?
我有一个对象数组(比如图像),它们太大而无法放入内存(例如 40GB)。但是我的代码需要能够在运行时随机访问这些对象。
做这个的最好方式是什么?
从我的代码的角度来看,当然,某些数据是在磁盘上还是临时存储在内存中并不重要。它应该具有透明的访问权限:
但是我应该如何实现这个容器呢?它应该只是将请求发送到数据库吗?如果是这样,哪一个是最好的选择?(如果是数据库,那么它应该是免费的,并且没有太多的管理麻烦,也许是 Berkeley DB 或 sqlite?)
我应该自己实现它,在访问沙子后记住对象并在内存满时清除内存吗?或者那里有很好的库(C++)吗?
对容器的要求是它最大限度地减少磁盘访问(我的代码可能更频繁地访问某些元素,因此它们应该保存在内存中)并允许快速访问。
更新:我发现 STXXL 不适用于我的问题,因为我存储在容器中的对象具有动态大小,即我的代码可能会在运行时更新它们(增加或减少某些对象的大小)。但 STXXL 无法处理:
STXXL 容器假定它们存储的数据类型是普通旧数据类型 (POD)。 http://algo2.iti.kit.edu/dementiev/stxxl/report/node8.html
您能否对其他解决方案发表评论?使用数据库怎么样?和哪一个?
java - 为什么 RandomAccessFile 使用 int 作为偏移量
我正在编写一些数据访问测试实现,我需要随机访问文件内容。这是代码:
其中 offset 的类型为 long。为什么 RandomAccessFile 不提供方法:
?
如何覆盖这个问题?