问题标签 [buffering]
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.
python - Python套接字缓冲
假设我想使用标准socket
模块从套接字读取一行:
究竟发生了s.recv(1)
什么?每次都会发出系统调用吗?无论如何,我想我应该添加一些缓冲:
为了与硬件和网络现实进行最佳匹配,bufsize的值应该是 2 的相对较小的幂,例如 4096。
http://docs.python.org/library/socket.html#socket.socket.recv
但是编写高效且线程安全的缓冲似乎并不容易。如果我使用file.readline()
怎么办?
c - 检查通过程序的 C 管道——边界情况
我从套接字 A 接收并即时将其写入套接字 B(就像代理服务器可能一样)。我想检查并可能修改通过的数据。我的问题是如何处理边界情况,即我正在搜索的正则表达式将在两个连续的套接字 A 读取和套接字 B 写入迭代之间匹配。
cgi - 是否可以获得无缓冲的网络浏览器输出?
我有一个小的 cgi 脚本,用于获取和验证 Nagios 的配置文件。典型的运行时间是几分钟,我想在运行期间在浏览器中获得一些反馈。
为了说明我想要发生的事情,请考虑一下:
当我通过 telnet 或 wget 在此脚本上执行 GET 时,输出一次一行,间隔十秒(“A”...“B”...“C”...等等) .
当我尝试在普通浏览器中打开它时,浏览器似乎将其全部缓冲并在脚本完成时显示输出(50 秒的静默......“ABCDE”)。
是否可以让浏览器在数据到达后立即将其呈现给用户?
c - 如何在内存中缓冲标准输出并从专用线程写入
我有一个带有许多工作线程的 C 应用程序。重要的是这些不会阻塞,因此在工作线程需要写入磁盘上的文件的地方,我让它们写入内存中的循环缓冲区,然后有一个专用线程将该缓冲区写入磁盘。
工作线程不再阻塞。专用线程可以在写入磁盘时安全地阻塞而不影响工作线程(在写入磁盘时它不持有锁)。我的内存缓冲区被调整到足够大,以至于编写器线程可以跟上。
这一切都很好。我的问题是,我如何为标准输出实现类似的东西?
我可以宏 printf() 写入内存缓冲区,但我无法控制可能写入标准输出的所有代码(其中一些在第三方库中)。
想法?尼克B
perl - Perl 的 $| 设置影响系统命令?
我正在查看 Perl 中的一些旧代码,作者
$| = 1
在第一行写过。
但是代码没有任何打印语句,它使用system
命令调用 C++ 二进制文件。现在我读到$|
每次打印后都会强制刷新。它是否会以任何方式影响系统命令的输出,或者我可以安全地删除该行。
谢谢阿文德
.net - 如何缓冲 .net BackgroundWorker 的输出?
我有一个来自外部源的数据流,我目前在BackgroundWorker
. 每次它获得另一块数据时,它都会使用ReportProgress()
调用将该数据呈现给 GUI。
我得到的印象是该ProgressChanged
函数只是一个同步机制,所以当我的工作线程调用它时,两个线程都被锁定,而 GUI 线程处理更改。所以我认为问题在于,当后台线程更新 GUI 时,它无法接收任何数据,这意味着我们丢失了一些数据包。这是正确的还是我的丢包更有可能来自其他地方?
如果这是原因,那么添加第二个线程来进行 GUI 更新是一个合理的解决方案,还是有更好/更彻底的方法来解决我应该深入研究的这些问题?
非常欢迎任何想法和建议。
java - JAVA NIO ByteBuffer 分配以适应最大的数据集?
我正在开发一款在线游戏,在服务器端工作时遇到了一些问题。
在 Java 中使用非阻塞套接字时,处理在所有数据可用之前无法处理的完整数据包数据集的最佳操作方案是什么?例如,通过套接字发送大型 2D 平铺地图。
我可以想到两种方法来处理它:
分配足够大的 ByteBuffer 以处理处理我的示例中的大型 2D 平铺地图所需的完整数据集。继续将读取数据添加到缓冲区,直到它全部被接收并从那里处理。
如果 ByteBuffer 的大小较小(可能为 1500),则可以完成后续读取并将其放入文件中,直到可以从文件中完全处理它。这将避免必须拥有大的 ByteBuffer,但会因为磁盘 I/O 而降低性能。
我为每个 SocketChannel 使用了一个专用的 ByteBuffer,这样我就可以继续读取数据,直到它完成处理。问题是,如果我的 2D Tiled Map 大小达到 2MB,那么使用 1000 个 2MB ByteBuffers 真的明智吗(假设 1000 是客户端连接限制并且它们都在使用中)?一定有更好的方法,我没有想到。
我宁愿保持简单,但我愿意接受任何建议并感谢您的帮助。谢谢!
sockets - 是 Socket.BeginReceive(IList> 缓冲区.. 不是异步的?
我一直在寻找实现一个自定义类:
这将被传递给一个套接字,并用作从该套接字接收数据的缓冲区。
在测试时我发现打电话时
开始接收(IList..
挡住了?!当用 BeginReceive(byte[]... 替换它时,它是异步操作的。
有没有其他人遇到过这个?
如果需要,我会发布我的测试代码,但在我丑化这个问题之前,我想听听任何人的意见:)
谢谢!
php - 在 php 中缓存文件的最佳方法是什么?
我在我的 php 代码中使用 Smarty,我喜欢缓存一些网站页面,所以我使用了以下代码:
但是当我在 php 文件末尾打印 ob_get_contents() 时,它是空的!实际上创建的缓存文件也是空的!那么当我使用 smarty 时如何在 php 中缓存文件我知道我可以使用 smarty 缓存,但由于某种原因它对我不起作用。
另外请给我有关 APC 缓存的信息。如何使用它?在我的情况下是否值得使用,我认为它只是用于缓存数据库查询,我阅读了关于它的 php 手册,但我什么也得不到:) 坦克。