小编Cla*_*diu的帖子

更多TCP和POSIX套接字listen()和accept()语义

情况:服务器调用listen()(但不是accept()!).客户端将SYN发送到服务器.服务器获取SYN,然后将SYN/ACK发送回客户端.但是,客户端现在挂断/死亡,因此它永远不会将ACK发送回服务器.连接处于SYN_SENT状态.

现在另一个客户端发送一个SYN,从服务器返回一个SYN/ACK,然后发回一个ACK.此连接现在处于ESTABLISHED状态.

现在服务器最终调用accept().怎么了?accept()是否阻塞第一个错误的连接,直到发生某种超时?是否检查队列中是否存在任何ESTABLISHED连接并首先返回这些连接?

language-agnostic sockets network-programming tcp

3
推荐指数
1
解决办法
1936
查看次数

当一些卡片无法使用时,从牌组中挑选随机卡的最有效方法是什么?

我有一个数组,告诉你卡是否正在使用:

int used[52];
Run Code Online (Sandbox Code Playgroud)

如果我有很多二手卡,这是一种挑选随机卡的可怕方法:

do {
  card = rand() % 52;
} while (used[card]);
Run Code Online (Sandbox Code Playgroud)

因为如果我只有3-4张未使用的卡片,那么找到它们需要永远.

我想出了这个:

 int card;
 int k = 0;
 int numUsed = 0;
 for (k=0; k < 52; ++k) {
   if (used[k]) numUsed += 1;
 }
 if (numUsed == 52) return -1;
 card = rand() % (52 - numUsed);

 for (k=0; k < 52; ++k) {
   if (used[k]) continue;
   if (card == 0) return k;
   card -= 1;
 }
Run Code Online (Sandbox Code Playgroud)

我觉得如果甲板已满,效果会更好,但是当甲板是空的时候会更糟,因为我必须通过两个for循环.

最有效的方法是什么?

random algorithm math probability

3
推荐指数
3
解决办法
3125
查看次数

py2exe和文件系统

我有一个Python应用程序.它通过执行以下操作来加载配置文件(以及各种其他文件):

_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
CONFIG_DIR = os.path.join(_path, 'conf')
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,当我用py2exe打包应用程序时,会发生不好的事情:

  File "proj\config.pyc", line 8, in <module>
WindowsError: [Error 3] The system cannot find the path specified: 'C:\\proj\
\dist\\library.zip\\conf'
Run Code Online (Sandbox Code Playgroud)

显然这是一条无效的道路......这样做的更有效的方法是什么?我不想在程序中指定绝对路径,因为它可以放在不同的文件夹中.我应该只说"如果它说文件夹名称是'library.zip',那么再向下一级到'dist'文件夹"?

请注意,我有非常嵌套的目录层次结构...例如,我有一个模块gui.utils.images,存储在"gui/utils/images.py"中,它使用其路径访问"gui/images/ok. png",例如.现在py2exe版本会尝试访问"proj/dist/library.zip/gui/images/ok.png",或其他东西,这是行不通的.

python configuration file py2exe

3
推荐指数
1
解决办法
4910
查看次数

以int数组的最大总和的子序列

给定一个整数数组,你怎么能找到两个索引i和j,这样在索引开始和结束时子元素的总和最大化,在线性时间

language-agnostic arrays algorithm

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

sql从大量ID中选择

我有一张桌子,Foo.我在Foo上运行查询以从Foo的子集中获取ID.然后我想运行一组更复杂的查询,但仅限于那些ID.有没有一种有效的方法来做到这一点?我能想到的最好的是创建一个查询,例如:

SELECT ... --complicated stuff
WHERE ... --more stuff
  AND id IN (1, 2, 3, 9, 413, 4324, ..., 939393)
Run Code Online (Sandbox Code Playgroud)

也就是说,我构建了一个巨大的"IN"子句.这有效吗?有没有更有效的方法,或者是获取ID的初始查询加入的唯一方法?如果它有帮助,我使用SQLObject连接到PostgreSQL数据库,并且我可以访问执行查询的游标以获取所有ID.

更新:我应该提到更复杂的查询都要么依赖这些ID,要么创建更多ID以在其他查​​询中查找.如果我要做一个大型查询,我最终会一次加入六个表,这可能太慢了.

python sql postgresql sqlobject

3
推荐指数
1
解决办法
386
查看次数

哪种SQL模式更快以避免插入重复的行?

我知道有两种方法可以插入而无需重复.第一个是使用一个WHERE NOT EXISTS子句:

INSERT INTO table_name (col1, col2, col3)
SELECT %s, %s, %s
WHERE NOT EXISTS (
    SELECT * FROM table_name AS T
    WHERE T.col1 = %s
      AND T.col2 = %s)
Run Code Online (Sandbox Code Playgroud)

另一个是做LEFT JOIN:

INSERT INTO table_name (col1, col2, col3)
SELECT %s, %s, %s
FROM ( SELECT %s, %s, %s ) A
LEFT JOIN table_name B
ON  B.COL1 = %s
AND B.COL2 = %s
WHERE B.id IS NULL
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

是否存在一个比另一个更快的一般规则,还是依赖于表?有不同的方式比两者都好吗?

sql database postgresql query-optimization

3
推荐指数
1
解决办法
3092
查看次数

突出显示行时设置cellrenderertext前景色

当我有一个时gtk.CellRendererText,我可以将其foreground颜色与一个树存储列相关联,并将该foreground-set属性设置为True,以更改该列中文本的颜色.但是,当选择带有彩色列的行时,其颜色会消失,并且与任何选定单元格的颜色相同.如何在选择颜色时更改颜色?

python gtk pygtk cellrenderer gtktreeview

3
推荐指数
1
解决办法
2170
查看次数

检测gtk.treeview中的列何时调整大小

当列改变大小时,我可以捕获什么信号来检测gtk.TreeView?我似乎无法在文档中找到它.

python gtk signals pygtk gtktreeview

3
推荐指数
1
解决办法
811
查看次数

如何制作一个接受地图或 unordered_map 的函数?

我正在实现一些基于模板的序列化。我为 实现了模板化函数std::map,但现在我使用的是std::unordered_map. 我宁愿不复制和粘贴整个函数,而只是更改参数类型。有没有办法制作一个只需要一张地图或一张无序地图的模板?

c++ templates

3
推荐指数
1
解决办法
895
查看次数

如何列出 OS X 中正在运行的程序的所有窗口标题?

我知道如何列出 Windows 中的所有窗口标题,例如通过 Win32 API使用 Python 。或者最终我可以直接用 C/C++ 编写它。

如何在 Mac OS X 上完成此操作?它不一定必须是Python 语言,也不一定是跨平台的。最好它不需要任何额外的下载就可以运行(例如仅使用包含的命令的 applescript 文件或 bash 文件),但这不是必需的。

macos bash shell user-interface operating-system

3
推荐指数
1
解决办法
2322
查看次数