在Spring安全生成的类中(UserRole或者SecUserSecRole你可以随意调用它),有一个命令来制作new UserRole()并保存它.save(flush:flush, insert:true)
那是什么意思?它与.save(flush:true)的不同之处是什么?
我正在使用Boost.Log中的boost 1.54.0来查看它是否适用于我的应用程序.一般来说,我没有缓冲问题,所以我不打算打开auto_flush或其他任何东西......但是我注意到在我调用之前记录的消息fork()是重复的,我想知道它是否是因为它们是缓冲的,所以在复制过程映像时缓冲区会被复制,然后两个进程最终将它们的缓冲区副本写入日志文件......
所以基本上,我只想在我打电话之前在日志上做一次手动刷新,fork()以确保没有消息仍然在内存中.换句话说,我正在寻找一个类似于fflush(),.flush(),<< flush等我可以在升压日志使用.
我确实尝试使用<< flush日志,但我仍然得到重复的消息,所以我不是100%确定它是否正在刷新并且重复是由其他一些问题引起的,或者它是否以某种方式默默地忽略了<< flush...
编辑:
我环顾四周,发现升压日志不是叉安全的.所以我应该补充一点,我不是想在父进程和子进程中使用相同的日志.我有两个分叉场景 - 在一个,父母立即终止和孩子contineus(这应该是安全的),而在另一个,孩子应该打开自己的单独的日志文件,所以这应该是安全的...但我需要弄清楚如何关闭日志文件接收器,然后打开一个新文件(在不同的文件上).我想关闭水槽也可能是一种强制冲洗的方法......?
我使用下面的代码片段,我不确定是否需要调用Flush方法(一旦打开StreamWriter,一次打开MemoryStream):
//converts an xsd object to the corresponding xml string, using the UTF8 encoding
public string Serialize(T t)
{
using (var memoryStream = new MemoryStream())
{
var encoding = new UTF8Encoding(false);
using (var writer = new StreamWriter(memoryStream, encoding))
{
var serializer = new XmlSerializer(typeof (T));
serializer.Serialize(writer, t);
writer.Flush();
}
memoryStream.Flush();
return encoding.GetString(memoryStream.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
首先,因为代码在using块内,我认为自动调用dispose方法可能会为我做这个.这是真的,还是正在形成一个完全不同的概念?
根据stackoverflow本身:
Flush意思清除流的所有缓冲区,并使任何缓冲的数据写入底层设备.
在上面的代码中,这意味着什么?
其次,MemoryStream 根据api,flush的方法没有任何作用,那么具体是什么呢?为什么我们称之为无效的方法?
我有这个代码:
sys.stdout.write("\r [*] Serching for "+FirstName+" AND "+LastName )
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
但是当我把它放在循环中时,我一步一步地将FirstName与对方混合在一起,并将LastName与对方混合在一起.
Searching for TEST_THREE AND EXAMPLE_THREE #First time
Searching for TEST_TWOEE AND EXAMPLE_TWOEE #Next time
Run Code Online (Sandbox Code Playgroud)
你看还有EE的THREE后TWO...
我该如何解决?
如果我从XAMPP上的本地服务器加载此脚本的chrome:
header("Content-Type:text/plain");
set_time_limit(0);
$max = 40;
for ($i = 0; $i < $max; $i++) {
$response = array( 'server time: ' . date("h:i:s", time()), 'progress' => round($i/$max*100));
echo json_encode($response);
ob_flush();
flush();
sleep(1);
}
ob_clean();
Run Code Online (Sandbox Code Playgroud)
它按预期工作,每秒页面显示一个新的响应.但是,当我将其上传到我的远程服务器(运行相同版本的php)时,它会等到整个脚本完成后再显示输出.在非常长的脚本上,它每30-60秒左右更新一次输出.
正如标题所示,我尝试使用所有不同的刷新功能,但没有任何作用.我的本地服务器和远程服务器的php.ini可能有些不同,但我不知道是什么.
请帮忙.
- -编辑 - -
我一直在做更多的测试.我注意到它确实只更新每4096个字节,这恰好是我的远程服务器的'output_buffering'的php ini值.但是,出于某种原因,如果我将output_buffering更改为"1"或"关闭",则不会发生任何变化.它仍然只更新每4096个字节.
我正在同一浏览器上的不同服务器上测试2个相同的脚本.
如何在 Eclipse 中执行/打印一些语句后清除控制台。我已经使用了flush()但没有工作。只是发布示例代码。
System.out.println("execute ");
System.out.println("these set of lines ");
System.out.println("first");
Thread.sleep(2000); // just to see the printed statements in the console
System.out.flush(); // it is not clearing the above statements
Run Code Online (Sandbox Code Playgroud) 在过去的几天里,这一直困扰着我,因为它曾经工作过.我升级了我的intellij,现在它不起作用.我不想回去,但我需要一个答案.
所以,我正在编写一个控制台应用程序,当它运行时,我想要显示进度的shell.它正常工作时,它的运行,但是当我在的IntelliJ IDEA调试我,除非缓冲区包含一个换行符System.out.flush()将不刷新到控制台.我编写了以下单元测试,以确定它是我还是我的应用程序.
@Test
public void flushTest() {
int loops = 100;
for (int i = 0 ; i < 100 ; ++i) {
System.out.print("This is a print, does it flush : " + i + "\r");
if (i %10 == 0) {
System.out.print("\n");
}
System.out.flush();
}
}
Run Code Online (Sandbox Code Playgroud)
扰流板,它是应用程序.我不知道发生了什么变化,但是如果没有在命令行上进行完整构建和运行,就很难调试显示问题.如果有人可以帮我弄清楚为什么这会改变和/或帮助我修复它所以它会正确地冲洗,我会非常感激.
我正在Linux下编写一个C/C++应用程序,它从原始套接字读取数据(用于ICMP数据包).问题:有没有办法丢弃仍然在套接字上排队的所有数据?
问题是睡了一会儿之后,插座上排队的数据我不感兴趣; 所以最好只告诉套接字"忘记你现在缓冲的所有数据",这样如果我进入select()/ recvfrom()循环,那么我只得到最近收到的数据.
有没有比先进入单独的poll()/ recvfrom()循环更好的方法?有些socket API调用可能吗?便携式,甚至?:-)
假设我有一个进程打印出一些类似于这个ruby代码的数据.
1.upto(10) {
|i|
puts i
puts "\n"
sleep 0.6
}
Run Code Online (Sandbox Code Playgroud)
我想要一个生成此过程的python代码,并从中读取数据以将其打印出来.
import os
import sys
cmd = "ruby /Users/smcho/Desktop/testit.rb";
pingaling = os.popen(cmd,"r")
while 1:
line = pingaling.readline()
if not line: break
print line,
sys.stdout.flush()
pingaling.close()
Run Code Online (Sandbox Code Playgroud)
这段代码的问题在于它不会逐个打印数字.似乎python在最后一点打印出所有缓冲的数据.
有没有办法打印出没有缓冲的衍生过程的输出?
好吧,我一直在google上搜索很多关于如何正确刷新输入流的问题.我听到的只是关于如何为输入流定义fflush()的混合论点,有些人说只是这样做,而其他人只是说不要这样做,我没有太多运气找到明确的效率/这样做的正确方法,大多数人都同意..我在编程方面很陌生,所以我还不知道该语言的所有语法/技巧,所以我的问题是哪种方式是最有效/最合适的解决方案清除C输入流??
getchar()在我尝试接收更多输入之前使用两次?
只需fflush()在输入上使用该功能?要么
这就是我认为我应该这样做的方式.
void clearInputBuf(void);
void clearInputBuf(void)
{
int garbageCollector;
while ((garbageCollector = getchar()) != '\n' && garbageCollector != EOF)
{}
}
Run Code Online (Sandbox Code Playgroud)因此,每当我需要读取一个新的scanf(),或者使用getchar()来暂停程序时,我只需要调用clearInputBuf ..那么这三种解决方案中最好的方法是什么?还是有更好的选择?