问题标签 [autoflush]
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.
perl - 使用 Perl 解析标准输出时避免缓冲
我想使用 Perl 逐行解析外部程序(一些 shell 命令)的输出。该命令连续运行,因此我将其放入一个线程并使用共享变量与我的主程序进行通信。
到目前为止,我的代码看起来类似于
对于某些命令,这工作得非常好,并且行在它们进入时被处理。输出将类似于:
但是,对于其他命令,这表现得很奇怪,并且正在逐块处理这些行。所以$var
不会更新,Debug
也不会打印一段时间。然后,突然输出是(类似于):
并$var
设置为最后/当前值。然后重复。解析总是延迟并在块中完成,而$var
在两者之间不更新。
首先:除了使用管道之外,还有什么更好/更合适的方法来解析外部程序的输出(逐行!)?
如果没有,我该如何避免这种行为?
我读过,使用autoflush(1);
或$|=1;
可能是一种解决方案,但仅适用于“当前选择的输出通道”。我将如何在我的上下文中使用它?
先感谢您。
perl - 你可以在 Perl 中强制刷新输出吗?
我在 Perl 中有以下两行:
问题是在 Perl 脚本暂停输入之前打印行没有被执行。也就是说,Perl 脚本似乎无缘无故地无限期停止。我猜输出以某种方式被缓冲(这就是我放入 \n 的原因,但这似乎没有帮助)。
perl - IPC::Open3 如何为 CHLD_IN 启用自动刷新
IPC::Open3的文档指出:
但源代码中没有提到IO::Handle::autoflush
. 模块使用什么机制来打开 autoflush CHLD_IN
?
java - System.out.print 输出到控制台立即可见。所以 PrintStream 在每次打印后都会刷新,而不仅仅是 println?
从 PrintStream文档:
可选地,可以创建一个 PrintStream 以便自动刷新;这意味着在写入字节数组、调用 println 方法之一或写入换行符或字节 ('\n')后会自动调用 flush 方法。
然后给出代码
为什么我会看到控制台的输出?不应将任何内容写入控制台(来自 System.out 的 PrintStream 实例),因为到目前为止不应刷新任何内容!
这没有回答这个问题。
我想,答案在源代码中(私有实用程序方法 BufferedWriter.flushBuffer()),但我不明白对代码的注释:“将输出缓冲区刷新到底层字符流,而不刷新流本身”:如果 PrintStream(与控制台输出相关联),即“流本身”未刷新,则不应刷新到控制台的输出!...
PrintStream.print(String) 的来源:
BufferedWriter.flushBuffer() 的来源:
此处还提供了更多详细信息。它非常复杂,但似乎在某个阶段 BufferedWriter 被赋予了 PrintStream 构造函数。
io - 如何自动刷新 Perl 6 文件处理?
Perl 6 在 Parrot 时代有几个答案,但它们目前似乎不起作用:
这是基于 MoarVM 版本 2017.04-53-g66c6dda 实现 Perl 6.c 的 Rakudo 版本 2017.04.3。
perl6是否默认启用“autoflush”的答案?说它默认启用(但那是 2011 年)。
这是我正在玩的一个程序:
以及它的输出,这是一个不幸的命令:
所以也许我需要打开它。有我如何禁用自动刷新?其中提到了一种autoflush
方法:
但这不起作用:
'IO::Handle' 类型的调用者没有这样的方法 'autoflush'
我想我可以通过让我的 IO 类在每次输出后刷新来自己伪造这个。就其价值而言,正是缺少此功能使我无法将 Perl 6 用于今天的特定任务。
作为第二个问题,为什么 Perl 6 现在没有这个,尤其是当它看起来像以前有的时候?你如何说服 Perl 5 的人这不是问题?
perl - Perl 套接字 (IO::Socket::INET6) 没有自动刷新
我有一个非常奇怪的场景。我有一个 Perl 应用程序,它接收来自多个连接(套接字和管道)的输入。比我将消息转发到预定义的目的地(套接字已经打开)。
见代码示例:
该程序在前几分钟运行良好,但由于某种原因自动刷新停止工作并且套接字开始缓冲。套接字开始发送约 1500 字节的块。
目前似乎有帮助的是手动调用flush函数(见内联注释)。谁能解释为什么几分钟后自动冲洗突然停止工作?是否手动调用以刷新有效且唯一的解决方案?
仅供参考 - 我在进程上运行 strace 并确保它是写入 ~1500 字节块的进程(这不是决定缓冲它的接口驱动程序)
更多信息(如果需要):平台:Linux Perl 版本:5.16 模块版本:2.69 (INET6) | 1.34(插座)
arduino - 基于 Arduino 的自动刷新
我想使用 3 个 LED 和一个伺服电机创建一个基于 Arduino 的自动冲洗。问题陈述是:
当检测到人时,第一个 LED 应发光,第二个 LED 应变低。
直到人站着,第二个 LED 应该变高。
当人离开时,第二个 LED 应该变低,第三个 LED 应该变高然后变低。
我被困在第二部分。
hibernate - DefaultAutoFlushEventListener.onAutoFlush 期间 IdentityHashMap 中的挂起线程
我是 Spring 和 Hibernate 世界的新手。这个问题正在扼杀我们。它只发生在生产中。我们试图在具有相同负载和配置的较低环境中重现这一点。但是,它没有被复制。
返回问题 - 当我们从数据库加载一组数据时。Hibernate 在读取之前刷新会话。在那次冲洗期间,我们面临着这个问题。我们知道我们可以使用刷新模式或只读事务或可变实体(如果是只读表)来处理它。但实际上,问题,因为它没有在较低的环境中复制,我们无法将上述任何内容标记为修复。
任何建议,帮助都非常感谢。
[5/1/18 14:33:00:774 EDT] 0000008b ThreadMonitor W WSVR0605W:线程“WebContainer:23”(00000142)已活动 758291 毫秒,可能已挂起。服务器中总共有 19 个线程可能被挂起。在 java.util.IdentityHashMap.put(IdentityHashMap.java:440) 在 org.hibernate.engine.internal.StatefulPersistenceContext.addChildParent(StatefulPersistenceContext.java:1657) 在 org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java :456) 在 org.hibernate.engine.internal.org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:193) 在 org.hibernate.engine.internal 的 org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:383)。 Cascade.cascade(Cascade.java:126) 在 org.hibernate.event.internal.AbstractFlushingEventListener。
wordpress - Wordpress 页面更新未在全球发布
我有一个客户对她所做的更新没有在线显示感到沮丧。如果客户端错过了刷新缓存,有没有办法自动完成。是否有任何插件不会增加已经很大的网站的大小并完成这项工作。谢谢你的建议
在 httacess 中删除缓存代码没有帮助
jms - 如何根据消息的年龄从 JMS 主题中清除消息
我们有一个将事件通知发布到 JMS 主题的应用程序。这里注意到的问题是,经过相当长的一段时间后,Weblogic 中的消息存储达到了 10GB 以上的大小。有没有一种方法可以实现一个组件,该组件可以从 JMS 主题中删除超过一定年龄(比如 30 天)的消息?
当前到位的是一个过程,在停机活动期间,消息存储被删除。然而,该过程具有来自订阅应用程序所有者的先决条件检查,是否已处理基于最后一条消息的操作。
谢谢