标签: flush

如何在Erlang中刷新io缓冲区?

你如何在Erlang中刷新io缓冲区?

对于实例:

io:format("hello") 要么 io:format(user, "hello")

这篇文章似乎表明没有干净的解决方案.

有没有比那篇文章更好的解决方案?

erlang buffer input flush

5
推荐指数
1
解决办法
2730
查看次数

刷新NHibernate同时仍然允许事务回滚

我试图将NHibernate与未与NHibernate映射的遗留实体一起使用.有时这意味着我需要手动将NHibernate数据刷新到数据库,这样当我尝试将遗留实体与NHibernate映射实体连接时,我不会收到外键异常.

当这发生在需要回滚的事务中时会发生问题.从NHibernate刷新的数据不会回滚.

我能做些什么吗?

UPDATE

仍然很好奇如何做到这一点 - 我不相信给出的任何答案都解决了这个问题.我需要调用Flush().问题是,如何回滚已刷新的数据?

nhibernate transactions flush

5
推荐指数
1
解决办法
5017
查看次数

冲洗boost :: iostreams :: zlib_compressor。如何获得“同步冲洗”?

有没有得到需要的一些神奇的“zlib的同步刷新”使用时boost::iostreams::zlib_compressor?只需调用flush过滤器上,或strict_syncfiltering_ostream包含它没有看到做的工作(即我想压缩机冲刷足够的解压缩器可以恢复所有字节压缩机消耗到目前为止,没有关闭流)。

查看标头,似乎定义了一些“冲洗代码”(特别是a sync_flush),但我不清楚应如何使用它们(请注意,我的压缩器只是添加到了filtering_ostream)。

c++ boost zlib flush boost-iostreams

5
推荐指数
1
解决办法
1852
查看次数

定期保存/刷新/提交 - 这个模式有名称吗?

我发现自己一次又一次地遇到类似的问题:有一些代码处理来自用户/网络/某种类型的产品的数据.出于效率原因,我不想打电话flush()或打电话给commit()我收到的每一条数据,但只是偶尔打电话.

我通常会想出这样的代码:

class Processor {
    private final static MAX_SAVE_PERIOD = 60000;
    private final static MIN_SAVE_PERIOD = 20000;

    private final static int MAX_BUFFER = 10000;
    Arraylist<Data> dataBuffer = new Arraylist<Data>();

    private long lastSave = 0;

    public Saver() {
        new Timer().schedule(new TimerTask() {
            periodicSave();
        }, MAX_SAVE_PERIOD, MAX_SAVE_PERIOD);
        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
            public void run() {
                periodicSave();
            }
        }));
    }

    public synchronized void processData(Data data) {
        dataBuffer.add(data);
        if(dataBuffer.size() >= MAX_BUFFER) {
            saveData();
        }
    }

    private synchronzied void periodicSave() { …
Run Code Online (Sandbox Code Playgroud)

java flush

5
推荐指数
1
解决办法
318
查看次数

为什么Hibernate只在事务中自动刷新?

这种行为背后的理由是什么?

如果由于某种原因我在事务之外执行两个合适的操作(不推荐,我知道!)并且我已经将Hibernate配置为自动刷新,如果第二个操作是应该触发自动的操作,我希望它会自动刷新-flush(如list,iterateexecuteUpdate).

如果没有对autoFlushIfRequried方法的第二行进行显式检查,那正是会发生什么:

protected boolean autoFlushIfRequired(Set querySpaces) throws HibernateException {
    errorIfClosed();
    if ( ! isTransactionInProgress() ) {
        // do not auto-flush while outside a transaction
        return false;
    }
    AutoFlushEvent event = new AutoFlushEvent(querySpaces, this);
    AutoFlushEventListener[] autoFlushEventListener = listeners.getAutoFlushEventListeners();
    for ( int i = 0; i < autoFlushEventListener.length; i++ ) {
    autoFlushEventListener[i].onAutoFlush(event);
    }
    return event.isFlushRequired();
}
Run Code Online (Sandbox Code Playgroud)

更新:感谢axtavt找到导致此更改的Hibernate问题(在3.2中):FlushMode.AUTO - >在事务外部时执行COMMIT.

一个相关的问题仍然存在:在FlushMode.MANUAL/NEVER的情况下延迟IDENTITY插入,但两个讨论都没有说明"当在事务外操作时,FlushMode.AUTO是一件坏事".

hibernate transactions flush

5
推荐指数
1
解决办法
4408
查看次数

BufferedOutputStream如何实际工作在较低水平?

我理解背后的理论BufferedOutputStream.字节被写入缓冲区数组直到它已满,然后写入(刷新)到底层流 - 这个想法是它比逐字节写入更快,因为OS调用更少.

但是,通过查看BufferedOutputStream类和方法(BufferedOutputStream.java)的实现,似乎最终,缓冲区中的字节只是逐字节写入.

我认为情况是这样的,因为:

在BufferedOutputStream.write(byte b [],int off,int len)中,它有行out.write(b,off,len).由于out是OutputStream的实例,而不是BufferedOutputStream,因此它调用OutputStream.write(byte [],int,int).这又使用for循环逐字节写入

请有人澄清实际发生了什么,以及它如何更快?

java buffer flush bufferedoutputstream

5
推荐指数
1
解决办法
3940
查看次数

破解远程/虚拟磁盘上的"真正"Java刷新

我正在寻找一个"技巧"或"黑客"来确定文件是否已经保存在远程磁盘上,通过vmware缓存,NAS缓存等.

刷新和关闭FileOutputStream是不够的.我认为Channel.force(true)既不是.

我正在考虑这样的事情:

  • 写入文件并读回文件
  • 写入文件,检查时间戳,重命名文件,检查不同的时间戳
  • 使用"错误内容"编写文件,用原始内容覆盖,读回并检查内容

也许有人有同样的问题,并找到了解决方案.

我的要求是不要丢失数据.java应用程序以这种方式工作:

  1. 接受来自远程源的文件
  2. 添加数字签名和经过认证的时间戳,以创建新文件.如果此文件丢失,则无法以任何方式重新创建.
  3. 将此文件写入存储
  4. 将文件标记为在数据库上签名
  5. 告诉偏远的一面,一切都好

今晚我们遇到了崩溃,并且在第5步之后但是在将数据实际刷新到远程存储之前有三次交易失败.所以数据库说一切都很好,远程端被告知相同,但15秒的签名数据丢失了.这不好.

正确的解决方案可能是对远程文件系统进行"同步安装".但这不会在短时间内发生.即使在这种情况下,鉴于应用程序在VMWare服务器上运行,我也不完全信任这种情况.

因此,我希望有一个"尽力而为"的黑客来防止(缓解)像这样的事件.

java vmware flush nas

5
推荐指数
1
解决办法
307
查看次数

"启动地图输出的刷新"在hadoop地图任务中需要很长时间

我在一个小文件(3-4 MB)上执行一个map任务,但是map输出相对较大(150 MB).显示地图100%后,需要很长时间才能完成泄漏.请建议我如何缩短这段时间.以下是一些示例日志......

13/07/10 17:45:31 INFO mapred.MapTask: Starting flush of map output
13/07/10 17:45:32 INFO mapred.JobClient:  map 98% reduce 0%
13/07/10 17:45:34 INFO mapred.LocalJobRunner: 
13/07/10 17:45:35 INFO mapred.JobClient:  map 100% reduce 0%
13/07/10 17:45:37 INFO mapred.LocalJobRunner: 
13/07/10 17:45:40 INFO mapred.LocalJobRunner: 
13/07/10 17:45:43 INFO mapred.LocalJobRunner: 
13/07/10 17:45:46 INFO mapred.LocalJobRunner: 
13/07/10 17:45:49 INFO mapred.LocalJobRunner: 
13/07/10 17:45:52 INFO mapred.LocalJobRunner: 
13/07/10 17:45:55 INFO mapred.LocalJobRunner: 
13/07/10 17:45:58 INFO mapred.LocalJobRunner: 
13/07/10 17:46:01 INFO mapred.LocalJobRunner: 
13/07/10 17:46:04 INFO mapred.LocalJobRunner: 
13/07/10 17:46:07 INFO mapred.LocalJobRunner: 
13/07/10 17:46:10 INFO mapred.LocalJobRunner: …
Run Code Online (Sandbox Code Playgroud)

hadoop flush map

5
推荐指数
1
解决办法
913
查看次数

用freemarker冲洗Html头部

我有一个Spring MVC Web应用程序,它使用freemarker作为模板语言.我目前正在进行更改以刷新html头部分而不是缓冲整个html并在最后进行刷新.我尝试将auto_flush freemarker设置为false并使用freemarker的内置<#flush>指令,如下所示,但这似乎不起作用.

common-header.ftl
<head>
 .......
</head>
<#flush>

page.ftl
<#include "common-header.ftl" />
<body>
 .......
</body>
Run Code Online (Sandbox Code Playgroud)

我很感激你的帮助.此外,根据API文档,autoFlush()似乎仅适用于不是由#include语句组成并需要多个Template.process()方法的页面.如果这是正确的,我应该编写一个自定义模板处理器来处理页面中的头部和身体部分吗?任何指针都会有所帮助.

更新:

尝试使用FreeMarkerView.java作为视图类,因为它使用HttpServletResponse的默认编写器(PrinterWriter)来处理编写器.虽然PrinterWriter支持flush()并且我的模板中的<#flush> freemarker指令似乎没有调用它,但这不起作用.

尝试扩展FreeMarkerView类以将PrinterWriter包装在BufferedWriter中,但这也不起作用.

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="suffix"><value>.ftl</value></property>
    <property name="contentType"><value>text/html; charset=utf-8</value></property>
    <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
    <property name="exposeSpringMacroHelpers"><value>true</value></property>
</bean>
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助.

html freemarker flush spring-mvc

5
推荐指数
1
解决办法
546
查看次数

选择给定数据时,防止刷新EntityManager

我正在开发一个JPA应用程序(使用hibernate),我正在使用AutoFlush功能.

默认情况下,每当我们处理任何实体的查询时,都会刷新完整的EntityManager.在大多数情况下这是可以的:我们希望JPA处理针对最新数据库的查询.

但是,我们还在DB中存储了一些功能参数.这与我们的核心业务模型完全分离,我们不希望选择我们刷新EM的参数:参数的获取可能在过程中发生得非常深,当我们知道它时我们就失去了冲洗EM的控制;好的.

实际上,这会导致一些DB约束异常:数据模型尚未一致(在进程的中间),并且选择参数会强制刷新此数据模型.

我正在考虑添加第二个entityManager,只是参数,但我发现它有点矫枉过正.

可以更轻松地解决吗?使用参数DAO上的隔离级别,以便在单独的事务中处理参数?

hibernate jpa transactions flush entitymanager

5
推荐指数
1
解决办法
305
查看次数