HttpListener为您提供响应流,但调用flush意味着什么(从源代码来看很清楚,因为它实际上什么都不做).在HTTP API内部挖掘表明这是HttpListener本身的限制.
任何人都知道如何刷新HttpListener的响应流(可能是反射或额外的P/Invokes)?
更新:如果您没有刷新选项或定义缓冲区大小的能力,则无法对任何内容进行http流.
再会,
我编写了一个 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内部清理?
在查看PrintWriter以下构造函数的合同时:
public PrintWriter(OutputStream out, boolean autoFlush)
PrintWriter从现有的OutputStream. 这个方便的构造函数创建必要的中间体OutputStreamWriter,它将使用默认的字符编码将字符转换为字节。参数:
out- 输出流
autoFlush- Aboolean;iftrue、println、printf、 或format方法将刷新输出缓冲区另请参见:OutputStreamWriter.OutputStreamWriter(java.io.OutputStream)
请注意,该autoFlush标志仅适用于println、printf和format。现在,我知道这一点printf,并且format基本上做与除了更多选择之外完全相同的事情print,但我只是不明白为什么他们没有print在合同中包含同样的内容。他们为什么做出这个决定?
在没有缓冲的情况下在标准输出上打印数据的方法是什么?println 缓冲数据并将它们全部写入在一起。
同样,清空打印缓冲区的命令也会很有用。
我想知道“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。