举个例子,当我\u03C0使用FileReader API从File中读取π字符()时,当我使用FileReader.readAsText(blob)期望的内容读取它时,我会将pi字符返回给我.但是当我使用时FileReader.readAsBinaryString(blob),我得到了结果\xcf\x80,这似乎与pi字符没有任何明显的相关性.这是怎么回事?(这可能与UTF-8/16的编码方式有关...)
几乎所有的编程语言都有一些使用动态数组的列表的实现,当它达到一定容量时会自动扩展。例如,Java 有ArrayList,C++ 有std::vector。
最近我了解了循环数组双端队列,它也是使用动态数组实现的。它们跟踪列表的起始索引,并使用模运算来访问元素。与数组列表一样,它们允许 O(1) 查找和 O(1) 在末尾插入,并且空间与 O(N) 成正比。但是,它们也允许在开头插入 O(1)。
(虽然 JavaArrayDeque实现了这种数据结构,但它不允许查找元素。C++std::deque似乎使用了不同的实现。)
如果这些数组双端队列具有与数组列表相同或更好的性能特征,那么为什么不总是将它们用作列表的默认实现呢?
现在,我有一个流列表,我想用字符串"online"将流推送到数组的前面,但我想这么快就做到这一点.我知道我可以按值复制数组值并将在线值推到前面,但我想知道是否有更好的方法来执行此操作.
这只是一些示例代码,但它类似于我的目标.我怎样才能重新安排我的阵列向前推进?我对JavaScript或jQuery答案持开放态度.
var streams = new Array('online', 'offline', 'online', 'offline', 'online', 'offline', 'offline', 'online');
Run Code Online (Sandbox Code Playgroud) arrays ×2
javascript ×2
deque ×1
html5 ×1
jquery ×1
sorting ×1
string ×1
typed-arrays ×1
utf ×1