Python print 立即打印内容到重定向的文件

看到本文标题也许要奇怪了,Python 的 print 难道不是也上可以看到结果的吗?在 Python shell 下只要 

>> print('Hello world!')
Hello world!

不就立马能看到控制台输出的 "Hello world!" 吗。或者是一个 Python 脚本文件 hello.py

import time

for i in range(3):
    print('Hello {}'.format(i))
    time.sleep(3)

然后执行 python hello.py 的话,我们也同样能看到在控制台下在预定的每 3 秒输出一行

Hello 0
Hello 1
Hello 2

但执行下面的命令试图重定向输出到文件时的效果就不一样了 阅读全文 >>

Vi Buffer 的基本操作

在 vi 中打开过多个文件时,每个文件都是存放在各自的 buffer  中,可以用命令 ls (buffers 或 files,三个命令中拣你最喜欢的一个即可,ls 输入方便,buffers/files 更表意) 显示所有的 buffer。显示出来的结果如下:

vi-list-buffers

可以看到

每个 Buffer  的编号,分别是 1, 4, 5, 6
% 表示的是当前窗口中的 Buffer
+ 表该 Buffer  中的内容有修改
Buffer 中的文件名称 阅读全文 >>

Java NIO 入门学习(通道和缓冲区)

对于 NIO 来说,Channel(通道) 和 Buffer(缓冲区) 这两个东西是不得不提的,因为它们是 NIO 的核心对象,几乎每一个 I/O 操作都要它们。

通道是对原 I/O 流的模拟,但有不同的是它是双向的,不再像流那样分 InputStream 和 OutputStream,通道的双向性更好的反映了底层操作系统的真识情况。也不能像原 I/O 那样可以直接往流里写或读数据,在通道了传输数据必须经由缓冲区。有点类似原 I/O 流通过过滤器流 BufferedInputStream 和 BufferedOutputStream 来读写数据。

FileInputStream/FileOutputStream/RandomAccessFile/DatagramSocket/ServerSocket/Socket 的 getChannel() 方法可以获得相应类型的 Channel,Channel 的类型有 FileChannel/SocketChannel/SelectableChannel/DatagramChannel/ServerSocketChannel 等。 阅读全文 >>