我已经安装了Emacs 23并且发现编译缓冲区(当使用Mx编译时)出现在与Emacs 22不同的位置.当前打开的缓冲区出现在左侧,编译缓冲区出现在右侧.如何恢复Emacs 22在顶部打开当前缓冲区并在底部打开编译缓冲区的行为?
(水平分割屏幕也是缓冲区列表(Mx切换到缓冲区<tab>)缓冲区的情况.)
我想在C#中直接在桌面上绘图.从搜索一下,我最终使用Desktop HDC中的Graphics对象(null).然后,我正常使用这个Graphics对象绘制.
问题是当重绘屏幕的任何部分时,我的形状会丢失.我尝试了一个While循环,但它实际上最终绘制的速度与应用程序一样快,这不是桌面的更新速率.
通常,我需要将我的绘图代码放在"OnPaint"事件中,但桌面上不存在这样的事情.
我该怎么办?
示例代码:https://stackoverflow.com/questions/1536141/how-to-draw-directly-on-the-windows-desktop-c
在对我的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服务器以更积极地增加缓冲区大小.
因此,如果我的解释是正确的,让我想知道两种可能性:
编辑:
请求在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
stdio通常是缓冲的.当我遇到一个断点并且在断点之前有一个printf时,打印的字符串可能仍然在缓冲区中,我看不到它.
我知道我可以通过在程序中添加一些刷新代码来刷新stdio.如果不这样做,有没有办法告诉GDB在GDB停止后刷新被调试程序的stdio?调试程序时,这种方式更友好.
我希望在没有错误且没有警告的情况下自动关闭编译缓冲区,但是我想在有警告时显示它.有人可以帮帮我吗?来自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) 我正在使用该subprocess模块从python启动进程.我希望能够在写入/缓冲后立即访问输出(stdout,stderr).
例如,假设我想运行一个名为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定义).有两个重要的变量,c2pread而c2pwrite …
我查看了 Node.js Buffer 文档,但不明白Buffer.slice和Buffer.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 文档中的切片示例不是很清楚)。
那么有什么区别呢?
当我尝试使用带有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 :: …
我正在尝试拍摄图像并使用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) 为了更好地理解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)
即使我强制运行时出错,看起来缓冲区在终止时仍然会被刷新.是否有可能在缓冲区中"绑定"某些数据,使其不被写入设备?