我正在使用 PeerJS,它是 WebRTC 的 JavaScript 实现。我用它通过 DataChannel 发送数据。
浏览器引擎有速度限制吗?
即使我的应用程序的两个实例都在同一台计算机上运行,我也无法发送超过 ~20MB/s 的数据。使用我的 Linux 机器的系统监视器可以看到数据没有通过网络发送。我已经尝试过 Chrome 和 Firefox。
有人使用 WebRTC 数据通道体验过更快的速度吗?我认为点对点连接应该是最快的数据传输方式,并且想知道这是我的实现还是协议问题。我知道窗口大小对性能尤其重要。PeerJS 的任何实际经验可能会有帮助吗?
假设我有一个列表,其结构如下,包含大约 100 万个元素:
a = [["a","a"],["b","a"],["c","a"],["d","a"],["a","a"],["a","a"]]
Run Code Online (Sandbox Code Playgroud)
删除a
索引 0 处具有相同值的所有元素的最快方法是什么?结果应该是
b = [["a","a"],["b","a"],["c","a"],["d","a"]]
Run Code Online (Sandbox Code Playgroud)
有没有比这更快的方法:
processed = []
no_duplicates = []
for elem in a:
if elem[0] not in processed:
no_duplicates.append(elem)
processed.append(elem[0])
Run Code Online (Sandbox Code Playgroud)
这可行,但附加操作需要很长时间。
我想显示从 Firestore 获取的文档列表。我想默认显示 5 个文档并显示一个“加载更多”按钮,单击该按钮将获取另外 5 个文档。
使用静态列表,我会这样做,相当简单:
loadMoreInvoices() {
//Get number of last item
var lastItemInvoiceNumber = (this.invoices[this.invoices.length-1] as any).invoice_number;
this.afs.collection('clients').doc(uid).collection('invoices', ref => ref.orderBy('invoice_number').startAt(lastItemInvoiceNumber).limit(5+1)).get().then(snap => {
//Remove first elem from array as it is a duplicate
snap.shift()
//Add all loaded invoices to array
snap.forEach(item => {
this.invoices.push(item)
})
//Check if there are any more invoices to be loaded and set status accordingly
if (snap.length < this.moreInvoicesToBeLoaded) {
this.noMoreInvoices = true;
} else {
this.noMoreInvoices = false;
}
});
} …
Run Code Online (Sandbox Code Playgroud) 当且仅当授予许可(即会话集)时,显示整个网页的最佳方法是什么?
<?php
session_start();
if(isset($_SESSION['id'])){
echo "<html>Huge HTML Page with secret content</html>";
}
else {
echo "<html>Sorry, access not granted!</html>";
Run Code Online (Sandbox Code Playgroud)
回显整个html页面对我来说似乎有点不干净,但是有什么更好的方法呢?
如果我只是想在两个元素之间创建间距,我应该使用“padding”还是“margin”?这两种方式都可以吗?我应该选择一种方式吗?