sys.stderr多久刷新一次缓冲区,这是不同环境中的标准?
>>> import sys
>>> sys.__stderr__
<open file '<stderr>', mode 'w' at 0x2b4fcb7ac270>
Run Code Online (Sandbox Code Playgroud)
我看到它只是一个标准的文件类型,但我不知道它应该是什么缓冲值.dir()似乎也没有产生任何有用的信息.
在将我的Grails项目从1.3.7升级到2.4.0之后,在修复了与新grails版本相关的各种问题后,我意识到除了save(flush:true)被调用之外,对任何对象所做的任何更改都不会再存在(根本没有).
使用Grails 1.3.7时,使用域实例保存时的默认行为save()是,由于hibernate flushMode =>,更改会自动保留FlushMode.AUTO.在Grails 2.4.0中,这不再适用.任何控制器操作或服务类内的hibernate会话的默认flushMode是FlushMode.MANUAL.
sessionFactory.currentSession.flushMode在BootStrap中检索时,事情变得更加奇怪,它FlushMode.AUTO在控制器操作中具有值,并且具有值FlushMode.MANUAL.这可以通过创建新的grails应用程序并放入println "flushMode = $sessionFactory.currentSession.flushMode"BootStrap和控制器操作(例如index())来验证.
我在过去的两天里一直在搜索所有类型的论坛,但没有找到任何合理的解释,为什么必须在Grails 2.4.0(或者甚至是早期版本)中更改它.我只发现评论说它有风险,FlushMode.MANUAL因为在修改了其他一些文件后,你可能会遇到陈旧的对象.
我知道:
grails.gorm.autoFlush = true在配置你可以强制刷新:真实每次保存()FlushMode.AUTO
hibernate.flush.mode = 'auto'
hibernate.flushMode = 'auto'
hibernate.session.flush.mode = 'auto'
hibernate.session.flushMode = 'auto'
dataSource.hibernate.flush.mode = 'auto'
dataSource.hibernate.flushMode = 'auto'
dataSource.hibernate.session.flush.mode = 'auto'
dataSource.hibernate.session.flushMode = 'auto'
dataSource.flush.mode = 'auto'
dataSource.flushMode = 'auto'
dataSource.session.flush.mode = 'auto'
dataSource.session.flushMode = 'auto'请问有人可以点一点吗?
实际上我想知道Grails 2.4.0 FlushMode.MANUAL现在是否是理想的默认值?
如果是这样: …
再会,
我编写了一个 Java 程序,它使用 Process 对象和 Runtime.exec() 函数调用启动多个 C++ 编写的程序。C++ 程序使用 cout 和 cin 作为它们的输入和输出。Java 程序从 C++ 程序的输入流和输出流中发送信息和读取信息。
然后我有一个字符串缓冲区,它通过将 C++ 程序的输入和输出附加到字符串缓冲区来构建程序的典型交互。问题是所有输入调用都被追加,然后所有输出调用都被发布。例如,StringBuffer 的实例可能是这样的......
2
3
Please enter two numbers to add. Your result is 5
Run Code Online (Sandbox Code Playgroud)
当程序在标准控制台上看起来像这样
Please enter two numbers to add. 2
3
Your result is 5
Run Code Online (Sandbox Code Playgroud)
问题是我得到了输入和输出的顺序,因为除非 C++ 程序调用 cout.flush() 函数,否则在给出输入之前不会写入输出。
有没有办法自动刷新缓冲区,这样 C++ 程序就不必担心调用 cout.flush()?类似于 C++ 程序是一个与命令控制台交互的独立程序,程序员并不总是需要 cout.flush(),命令控制台仍然在输入之前输出数据。
谢谢,
我想HttpServletResponse在其内容(通常是HTML)呈现之后添加cookie .
正如这里所提到的(http://osdir.com/ml/java.jasig.uportal/2005-10/msg00276.html),这里(在刷新标题后,在Java中为响应添加一个cookie?),这个可以通过缓冲响应来实现它不会被刷新并发送到客户端(因为在将报头发送到客户端之后,响应被提交,并且不再有标头,即cookie头,可以发送到客户端).
假设这是目前的目标:我认为实现这一目标的一种可能方法是使用a HttpServletResponseWrapper,我可以覆盖它的flushBuffer()方法并防止将header\content实际刷新到客户端:
public class BufferedHttpServletResponse extends HttpServletResponseWrapper {
public BufferedHttpServletResponse(HttpServletResponse response) {
super(response);
}
public void flushBuffer() {
}
}
Run Code Online (Sandbox Code Playgroud)
并将此缓冲响应应用于a Filter,以使用过滤器链的其余部分:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
BufferedHttpServletResponse bufferedResponse = new BufferedHttpServletResponse(response);
chain.doFilter(request, bufferedResponse);
// ... create Cookie and add it to response ... response.addCookie(newCookie)
// response.flushBuffer() ?
}
Run Code Online (Sandbox Code Playgroud)
问题:上面还可以,还是完全关闭?响应的缓冲区是否会继续填充内容\标题(并且可能会重新调整大小)直到我 …
我使用的是Spring 3.1.1.RELEASE,Hibernate 4.1.0.Final和JPA 2.0.有没有一种方法可以在没有Java代码的情况下执行事务后将Spring事务配置为提交?换句话说,我想将flush模式设置为在应用程序上下文文件,hibernate配置文件或persistence.xml文件中提交.我的Spring事务服务类看起来像
@Transactional(rollbackFor = Exception.class)
@Service
public class ContractServiceImpl implements ContractService
{
@Autowired
private ContractDAO m_contractDao;
public void addContract(Contract contract)
{
m_contractDao.create(contract);
}
...
Run Code Online (Sandbox Code Playgroud)
我的应用程序上下文设置如此......
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:myproject" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="persistenceXmlLocation" value="classpath*:META-INF/test-persistence.xml"/>
<property name="persistenceUnitName" value="testingDatabase"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sharedEntityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven /> …Run Code Online (Sandbox Code Playgroud) 这个问题:如何保护日志免受应用程序崩溃?引导我到另一个 - std::ofstream::close()实际上做了什么?我知道它的召唤flush(),这是一回事.但还有什么?实际关闭文件的是什么?
编辑:让我重新解释一下我的问题 - 在调用过程中对实际文件做了什么实际操作,close()还是只是std::ofstream内部清理?
我想知道“flush”和“flash”是什么意思以及它们之间的区别。
我是编码和编程的新手(实际上从今天开始)。我一直在观看一些视频并阅读几本书的开头以查看我可以点击哪些内容,但我无法理解其中的一些内容。
在基本的“Hello World”介绍中使用的一个视频endl和另一个使用的视频\n。我想更多地了解两者之间的差异。
所以,我明白endl和之间的区别\n是endl会刷新代码,而\n不会,这会endl变慢。我可以在谷歌上搜索这么多。
但是,在搜索冲洗 C++ 时,由于行话,我无法弄清楚它的含义。
冲洗是什么意思,何时以及为什么要这样做?什么是缓冲区?
如果可以,请以非常基本的方式解释它。
我知道您可以通过flush=True如下设置在打印语句后刷新:
print("Hello World!", flush=True)
Run Code Online (Sandbox Code Playgroud)
但是,对于进行多次打印的情况,手动将每次打印设置为 是很麻烦的flush=True。有没有办法将flush=TruePython 3.x 设置为默认值?我正在考虑类似于 numpy 使用 提供的打印选项numpy.set_printoptions。