小编nik*_*kgp的帖子

为什么字典可以作为元组解压缩?

今天,我看到一个没有例外的声明.任何人都可以解释它背后的理论吗?

>>> x, y = {'a': 2, 'b': 5}
>>> x
'a'
>>> y
'b'
Run Code Online (Sandbox Code Playgroud)

python dictionary python-2.7 iterable-unpacking

61
推荐指数
5
解决办法
2919
查看次数

TortoiseSVN将评级从1.8降至1.7

我使用的是TortoiseSVN 1.7.11客户端(Windows 7).我将其更新为1.8,然后它在1.8版本中运行了一段时间.但是我正在使用的其他机器仍在使用1.7.11,我无法升级它们所以我想降级到1.7.11.现在它根本不起作用.我采取了新的结帐,它仍然要求升级工作副本.

当我单击此选项时,它显示"无法升级,因为它不是1.7之前的工作副本目录.缺少默认条目.我尝试删除注册表并删除配置信息 %appdata%文件夹中,但它不能解决问题.

svn windows tortoisesvn

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

Qt C++:移动文件,源和目标路径在不同的驱动器上

我想将文件从文件夹(例如在驱动器C上)移动到C++中的另一个文件夹(例如在驱动器D上).如果该文件已存在于目标文件夹中,则应覆盖该文件.如何使用C++ std库或Qt实现它?

我找到了"重命名"方法,但我不确定如果路径在不同的驱动器上它会起作用.而且,平台依赖是什么?

c++ qt file

8
推荐指数
1
解决办法
3941
查看次数

Python:httplib getresponse发出许多recv()调用

getresponserecv在读取HTML请求的标头时发出许多调用。实际上recv,它为每个字节发出,导致许多系统调用。如何进行优化?

我在具有strace dump的Ubuntu计算机上进行了验证。

样例代码:

conn = httplib.HTTPConnection("www.python.org")
conn.request("HEAD", "/index.html")
r1 = conn.getresponse()
Run Code Online (Sandbox Code Playgroud)

strace转储:

sendto(3, "HEAD /index.html HTTP/1.1\r\nHost:"..., 78, 0, NULL, 0) = 78
recvfrom(3, "H", 1, 0, NULL, NULL)      = 1
recvfrom(3, "T", 1, 0, NULL, NULL)      = 1
recvfrom(3, "T", 1, 0, NULL, NULL)      = 1
recvfrom(3, "P", 1, 0, NULL, NULL)      = 1
recvfrom(3, "/", 1, 0, NULL, NULL)      = 1
...
Run Code Online (Sandbox Code Playgroud)

python httplib python-2.7

5
推荐指数
1
解决办法
672
查看次数

对于与IOCP端口关联的套接字,WSARecv有时会返回"无效句柄(错误号6)".(C++)

我正在尝试编写一个可以同时支持多个客户端连接的服务器,所以我正在尝试使用IOCP.让我简要介绍一下我的代码流程,然后我可以解释一下我的问题.首先,服务器正在打开一个端口,用于监听和等待对新传入连接的"接受"调用.作为参考,我使用了与此处提到的相同的代码.因此,它接受每个新的传入连接并返回一个新的套接字描述符(sd),然后它标记为非阻塞:

arg = 1;
ioctlsocket(sd, FIONBIO, &arg);
Run Code Online (Sandbox Code Playgroud)

然后启用TCP_NODELAY:

level = IPPROTO_TCP;
optName = TCP_NODELAY;
value = 1;
setsockopt(sd, level, optName, (const char*)&value, sizeof(value));
Run Code Online (Sandbox Code Playgroud)

此后与IOCP端口关联:

CreateIoCompletionPort((HANDLE)sd, iocp_port, (DWORD)completion_key, 4);
Run Code Online (Sandbox Code Playgroud)

completion_key是一个类对象,它只是一个容器,它包含数据缓冲区,重叠缓冲区,查询类型的recv/send等,并在最后发出一个读取调用:

WSARecv(sd, wsabuf, 1, &bytes, &flags, overlapped, NULL);
Run Code Online (Sandbox Code Playgroud)

wsabuf和overlapped是completion_key对象的一部分.

在90%的情况下,它工作正常,即当此套接字上有一些传入数据时,"GetQueuedCompletionStatus"被取消阻止,并且它具有有效数据.但有时WSARecv调用返回错误,GetLastError()返回6,这是"无效句柄"错误.我有点困惑为什么会发生这样的事情.

我正在创建一个iocp端口的方式:

iocp_port = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
Run Code Online (Sandbox Code Playgroud)

并且有一些线程正在等待"GetQueuedCompletionStatus".

c++ windows network-programming tcp iocp

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