标签: buffer

如何在Emacs 23中的底部而不是右侧获取编译缓冲区?

我已经安装了Emacs 23并且发现编译缓冲区(当使用Mx编译时)出现在与Emacs 22不同的位置.当前打开的缓冲区出现在​​左侧,编译缓冲区出现在​​右侧.如何恢复Emacs 22在顶部打开当前缓冲区并在底部打开编译缓冲区的行为?

(水平分割屏幕也是缓冲区列表(Mx切换到缓冲区<tab>)缓冲区的情况.)

emacs buffer emacs23

14
推荐指数
1
解决办法
2001
查看次数

如何在C#中有效地绘制桌面?

我想在C#中直接在桌面上绘图.从搜索一下,我最终使用Desktop HDC中的Graphics对象(null).然后,我正常使用这个Graphics对象绘制.

问题是当重绘屏幕的任何部分时,我的形状会丢失.我尝试了一个While循环,但它实际上最终绘制的速度与应用程序一样快,这不是桌面的更新速率.

通常,我需要将我的绘图代码放在"OnPaint"事件中,但桌面上不存在这样的事情.

我该怎么办?

示例代码:https://stackoverflow.com/questions/1536141/how-to-draw-directly-on-the-windows-desktop-c

c# buffer drawing gdi onpaint

14
推荐指数
2
解决办法
3万
查看次数

加快IIS/.NET/LINQ从网络缓冲区检索数据的速度

在对我的Web服务器和数据库服务器之间的流量进行TCP分析时,我看到网络缓冲区(TCP窗口)经常填满.然后,Web服务器将TCP消息发送到数据库服务器,告知其缓冲区已满,并且在给定更新之前不发送更多数据.

例如,这是网络缓冲区的大小(以字节为单位),用于随着时间的推移,与数据库服务器之间的长期连接之一:

网络缓冲图

Web服务器正在运行在Windows 2008 R2 Web服务器上以IIS集成模式运行的.NET 4.0应用程序.SQL Server是2008 R2服务器.

我对此的解释是,SQL服务器将数据更快地返回到Web服务器,然后Web服务器上的应用程序可以从缓冲区收集数据.我尝试调整网络驱动程序中的所有内容以解决此问题.特别是增加RSS队列,禁用中断审核,并设置Windows 2008 R2服务器以更积极地增加缓冲区大小.

因此,如果我的解释是正确的,让我想知道两种可能性:

  1. 在.NET中是否有任何方法可以告诉它增加网络缓冲区的大小?"增强的2008 R2 TCP堆栈"很少决定为此连接启用窗口缩放(使缓冲区大于65 kBytes)(可能是由于低延迟).看起来手动设置此系统的能力在Windows server 2008 r2中消失了(以前曾经存在的注册表项被忽略).那么我有可能在代码中强制执行此操作吗?
  2. 是否有任何可以调整的内容可以加快应用程序读取网络缓冲区信息的速度,特别是对于SQL连接?

编辑:
请求在ASYNC_NETWORK_IO处关闭DMV查询:

SELECT * FROM sys.dm_os_wait_stats ORDER BY waiting_tasks_count desc;
Run Code Online (Sandbox Code Playgroud)
wait_type  waiting_tasks_count  wait_time_ms  max_wait_time_ms  signal_wait_time_ms
CXPACKET            1436226309    2772827343             39259           354295135
SLEEP_TASK           231661274     337253925             10808            71665032
LATCH_EX             214958564     894509148             11855            84816450
SOS_SCHEDULER_YIELD  176997645     227440530              2997           227332659
ASYNC_NETWORK_IO     112914243      84132232             16707            16250951

.net sql linq buffer tcp

14
推荐指数
1
解决办法
2934
查看次数

如何告诉GDB刷新被调试程序的stdio

stdio通常是缓冲的.当我遇到一个断点并且在断点之前有一个printf时,打印的字符串可能仍然在缓冲区中,我看不到它.

我知道我可以通过在程序中添加一些刷新代码来刷新stdio.如果不这样做,有没有办法告诉GDB在GDB停止后刷新被调试程序的stdio?调试程序时,这种方式更友好.

debugging buffer gdb stdio

14
推荐指数
2
解决办法
4879
查看次数

emacs编译缓冲区自动关闭?

我希望在没有错误且没有警告的情况下自动关闭编译缓冲区,但是我想在有警告时显示它.有人可以帮帮我吗?来自emacswiki的此代码仅执行第一个要求.怎么改呢?

  ;; Helper for compilation. Close the compilation window if
  ;; there was no error at all.
  (defun compilation-exit-autoclose (status code msg)
    ;; If M-x compile exists with a 0
    (when (and (eq status 'exit) (zerop code))
      ;; then bury the *compilation* buffer, so that C-x b doesn't go there
      (bury-buffer)
      ;; and delete the *compilation* window
      (delete-window (get-buffer-window (get-buffer "*compilation*"))))
    ;; Always return the anticipated result of compilation-exit-message-function
    (cons msg code))
  ;; Specify my function (maybe I …
Run Code Online (Sandbox Code Playgroud)

emacs buffer compile-mode

14
推荐指数
1
解决办法
3898
查看次数

使用python从子进程读取输出

上下文

我正在使用该subprocess模块从python启动进程.我希望能够在写入/缓冲后立即访问输出(stdout,stderr).

  • 该解决方案必须支持Windows 7.我也需要Unix系统的解决方案,但我怀疑Windows案例更难以解决.
  • 该解决方案应该支持Python 2.6.我目前仅限于Python 2.6,但仍然赞赏使用更高版本的Python的解决方案.
  • 解决方案不应使用第三方库.理想情况下,我会喜欢使用标准库的解决方案,但我愿意接受建议.
  • 解决方案必须适用于任何流程.假设无法控制正在执行的进程.

儿童过程

例如,假设我想运行一个名为counter.pyvia a 的python文件subprocess.内容counter.py如下:

import sys

for index in range(10):

    # Write data to standard out.
    sys.stdout.write(str(index))

    # Push buffered data to disk.
    sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

父流程

负责执行该counter.py示例的父进程如下:

import subprocess

command = ['python', 'counter.py']

process = subprocess.Popen(
    cmd,
    bufsize=1,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    ) 
Run Code Online (Sandbox Code Playgroud)

问题

使用该counter.py示例,我可以在流程完成之前访问数据.这很棒!这正是我想要的.但是,删除该sys.stdout.flush()调用会阻止在我想要的时间访问数据.这是不好的!这正是我不想要的.我的理解是flush()调用强制将数据写入磁盘,在将数据写入磁盘之前,它只存在于缓冲区中.请记住,我希望能够运行任何进程.我不希望这个过程执行这种刷新,但我仍然期望数据可以实时(或接近它).有没有办法实现这个目标?

关于父进程的快速说明.您可能会注意到我正在使用bufsize=0线路缓冲.我希望这会导致每行的磁盘刷新,但它似乎不会那样工作.这个论点如何运作?

您还会注意到我正在使用subprocess.PIPE.这是因为它似乎是在父进程和子进程之间生成IO对象的唯一值.我通过查看模块中的Popen._get_handles方法得出了这个结论subprocess(我在这里指的是Windows定义).有两个重要的变量,c2preadc2pwrite …

python buffer subprocess pipe flush

14
推荐指数
1
解决办法
2621
查看次数

Node.js:Buffer.slice 和 Buffer.subarray 之间的区别

我查看了 Node.js Buffer 文档,但不明白Buffer.sliceBuffer.subarray之间的区别。

两者都指向“与原件相同的记忆”。

但似乎没有人不是对方的别名(似乎是当事时说的)。

测试表明行为是相同的:

> buf=Buffer.from([0,1,2,3,4,5,6])
<Buffer 00 01 02 03 04 05 06>
> bufSlice=buf.slice(1,5)
<Buffer 01 02 03 04>
> bufSub=buf.subarray(1,5)
<Buffer 01 02 03 04>
> bufSlice
<Buffer 01 02 03 04>
> bufSub
<Buffer 01 02 03 04>
> buf[3]=0xff
255
> buf
<Buffer 00 01 02 ff 04 05 06>
> bufSub
<Buffer 01 02 ff 04>
> bufSlice
<Buffer 01 02 ff 04>
Run Code Online (Sandbox Code Playgroud)

(即使 Node.js 文档中的切片示例不是很清楚)。

那么有什么区别呢?

buffer node.js

14
推荐指数
2
解决办法
7864
查看次数

如何在asio :: buffer()中使用std :: string

当我尝试使用带有boost :: asio :: buffer的std :: string时,我收到以下错误消息:

boost/asio/detail/consume_buffers.hpp:在构造函数'boost :: asio :: detail :: consume_buffers <boost :: asio :: mutable_buffer,boost :: asio :: const_buffers_1

:: consume_buffers(const boost :: asio :: const_buffers_1&)':boost/asio/impl/read.hpp:140:25:
从'boost :: asio :: detail :: read_op <boost :: asio ::实例化basic_stream_socket,boost :: asio :: const_buffers_1,boost :: asio :: detail :: transfer_all_t,boost :: _ bi :: bind_t <void,boost :: _ mfi :: mf1,boost :: _ bi :: list2,boost :: arg <1>(*)()>

:: read_op(boost :: asio :: basic_stream_socket&,const boost :: asio :: …

buffer boost boost-asio

13
推荐指数
3
解决办法
2万
查看次数

使用Node.js将二进制数据推送到Amazon S3

我正在尝试拍摄图像并使用Node.js将其上传到Amazon S3存储桶.最后,我希望能够将图像推送到S3,然后能够访问该S3 URL并在浏览器中查看图像.我正在使用Curl查询来执行HTTP POST请求,并将图像作为正文.

curl -kvX POST --data-binary "@test.jpg" 'http://localhost:3031/upload/image'

然后在Node.js方面,我这样做:

exports.pushImage = function(req, res) {
    var image = new Buffer(req.body);
    var s3bucket = new AWS.S3();
    s3bucket.createBucket(function() {
        var params = {Bucket: 'My/bucket', Key: 'test.jpg', Body: image};
        // Put the object into the bucket.
        s3bucket.putObject(params, function(err) {
            if (err) {
                res.writeHead(403, {'Content-Type':'text/plain'});
                res.write("Error uploading data");
                res.end()
            } else {
                res.writeHead(200, {'Content-Type':'text/plain'});
                res.write("Success");
                res.end()
            }
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

我的文件是0字节,如Amazon S3上所示.我该如何制作它以便我可以使用Node.js将二进制文件推送到S3?我对二进制数据和缓冲区做错了什么?

更新:

我发现了我需要做的事情.curl查询是应该更改的第一件事.这是工作的:

curl -kvX POST -F foobar=@my_image_name.jpg 'http://localhost:3031/upload/image'

然后,我添加了一行来转换为Stream.这是工作代码:

exports.pushImage = …
Run Code Online (Sandbox Code Playgroud)

binary buffer amazon-s3 node.js

13
推荐指数
1
解决办法
2万
查看次数

如何制作一个简单的C++程序,其中没有刷新std :: cout

为了更好地理解C++中的缓冲流,我想编写一个简单的程序,std::cout在终止之前不刷新缓冲区.由于我已经读取了std::cout在正常终止时刷新,我尝试抛出运行时错误.我也避免使用std::endl,据我所知,强制冲洗.第一次尝试:

//file noflush.cpp
#include <iostream>

int main() {
    std::cout << "Don't write me to the console!";
    throw 0;
}
Run Code Online (Sandbox Code Playgroud)

用g ++编译,从终端调用:

$ ./noflush
libc++abi.dylib: terminating with uncaught exception of type int
Don't write me to the console!Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

即使我强制运行时出错,看起来缓冲区在终止时仍然会被刷新.是否有可能在缓冲区中"绑定"某些数据,使其不被写入设备?

c++ buffer cout stdout stream

13
推荐指数
2
解决办法
1506
查看次数

标签 统计

buffer ×10

emacs ×2

node.js ×2

.net ×1

amazon-s3 ×1

binary ×1

boost ×1

boost-asio ×1

c# ×1

c++ ×1

compile-mode ×1

cout ×1

debugging ×1

drawing ×1

emacs23 ×1

flush ×1

gdb ×1

gdi ×1

linq ×1

onpaint ×1

pipe ×1

python ×1

sql ×1

stdio ×1

stdout ×1

stream ×1

subprocess ×1

tcp ×1