Tag: 缓冲

错误的IO操作顺序使用putStr和getLine

我有以下代码: main = do putStr "Test input : " content <- getLine putStrLn content 当我运行它(与runhaskell )或编译它(ghc 6.10.4)的结果是这样的: asd Test input : asd 为什么Test input : asd之后打印? 在使用putStr http://learnyouahaskell.com/上的代码示例中, getLine提供的输出与我的不同。 当我使用putStrLn程序按预期工作(打印,然后提示和打印)。 是ghc一个错误,还是它应该工作的方式?

find不规则形状多边形的“视觉”中心的最快方法是什么?

我需要find一个点,这是一个不规则形状的多边形的视觉中心。 视觉中心,我的意思是一个点,似乎是在视觉的多边形的大面积的中心。 应用程序是在多边形内放置一个标签。 这是一个使用内部缓冲的解决scheme: https://web.archive.org/web/20150708063910/http://proceedings.esri.com/library/userconf/proc01/professional/papers/pap388/p388.htm 如果这是要使用的,那么寻找缓冲区的有效和快速的方法是什么? 如果要使用其他方式,那是这样吗? 一个真正强硬的多边形的一个很好的例子是一个巨大的厚U(用Arial Black或Impact或其他字体书写)。

如何使任何shell命令的输出无缓冲?

有没有办法运行没有输出缓冲的shell命令? 例如, hexdump file | ./my_script hexdump file | ./my_script只会将缓冲块中的input从hexdump传递给my_script,而不是逐行传递。 其实我想知道一个通​​用的解决scheme如何使任何命令无缓冲?

pipe道缓冲区大小是4k还是64k?

我读了多个地方,pipe道的默认缓冲区大小是4kB(例如, 在这里 ),我的ulimit -a倾向于确认该语句: $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15923 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 // […]

当我们需要存储“最后的n个项目”时,列表是否比向量好?

有很多问题表明,应该总是使用一个向量,但是在我看来,一个列表对于这个场景来说会更好,我们需要存储“最后n个项目” 例如,假设我们需要存储最后看到的5个条目:迭代0: 3,24,51,62,37, 然后在每次迭代中,索引0处的项目被移除,并且在最后添加新项目: 迭代1: 24,51,62,37,8 迭代2: 51,62,37,8,12 似乎对于这个用例来说,对于一个向量,复杂度将是O(n),因为我们将不得不拷贝n个项目,但是在一个列表中,它应该是O(1),因为我们总是斩断头,并添加到尾巴每次迭代。 我的理解是正确的吗? 这是一个std :: list的实际行为?

缓冲与非缓冲IO

我了解到,默认情况下,程序中的I / O被缓冲,即它们从临时存储器被提供给请求程序。 我明白,缓冲提高了IO性能(也许通过减less系统调用)。 我见过禁用缓冲的例子,例如C中的setvbuf 。这两种模式之间的区别是什么?什么时候应该使用另一种模式?

如何在Java游戏中增加缓冲区?

所以在我正在做的游戏中,我有一个大理石跟着鼠标,但是当它这样做的时候屏幕闪烁。 背景包括两个JPEG和九个矩形。 我怎么去双缓冲呢? 这是主窗口的代码。 /** * Write a description of class Window here. * * @author (your name) * @version (a version number or a date) */ public class Window extends JApplet implements MouseMotionListener { private BufferedImage image; private BufferedImage side; private int mouseX; private int mouseY; public Window(){ try { image = ImageIO.read(new File("Backgrounds/violet.jpg")); […]

setvbuf无法使stdin无缓冲

我的主要目的是让getchar返回一个字符,而不是等待ENTER键。 我试过这个 int main() { setvbuf(stdin,NULL,_IONBF,0); getchar(); return 0; } 比较这与setvbuf的原型 setvbuf ( FILE * stream, char * buffer, int mode, size_t size ); 它应该将stdin设置为无缓冲模式。 但仍然getchar()不断等待ENTER 我见过这样的相关职位 在C中读取字符时打印 这是build议替代方法使stdin无缓冲。 但我很好奇,知道为什么setvbuf方法不起作用

file.tell()不一致

有人碰巧知道为什么当你这样迭代一个文件: input: f = open('test.txt', 'r') for line in f: print "f.tell(): ",f.tell() 输出: f.tell(): 8192 f.tell(): 8192 f.tell(): 8192 f.tell(): 8192 我始终从tell()获取错误的文件索引,但是,如果使用readline,我将得到tell()的适当索引: input: f = open('test.txt', 'r') while True: line = f.readline() if (line == ''): break print "f.tell(): ",f.tell() 输出: f.tell(): 103 f.tell(): 107 f.tell(): 115 f.tell(): 124 我正在运行Python 2.7.1顺便说一句。

pipe道到三通时,强制标准输出缓冲

通常, stdout是行缓冲的。 换句话说,只要你的printf参数以一个换行符结束,你可以期望行被立即打印。 这在使用pipe道redirect到tee时似乎不成立。 我有一个C ++程序, a输出string,总是\n terminated,到stdout 。 当它自己运行( ./a )时,正如所期望的那样,所有东西都可以正确打印。 但是,如果我将它input到tee ( ./a | tee output.txt )中,它将不会打印任何东西,直到退出为止,这会破坏使用tee的目的。 我知道我可以通过在C ++程序中的每个打印操作之后添加一个fflush(stdout)来修复它。 但是,有没有更简单,更简单的方法? 是否有一个命令我可以运行,例如,即使在使用pipe道时强迫stdout被行缓冲?