小编Bwm*_*mat的帖子

在python中重复生成排列

我知道itertools,但它似乎只能生成排列而不重复.

例如,我想为2个骰子生成所有可能的骰子.所以我需要[1,2,3,4,5,6]的大小为2的所有排列,包括重复:(1,1),(1,2),(2,1)......等等

如果可能的话,我不想从头开始实现这一点

python permutation combinatorics

69
推荐指数
3
解决办法
4万
查看次数

调试CLR挂起

我已经上传了WinDBG会话的日志,我将参考它:https : //pastebin.com/TvYD9500

因此,我正在调试客户报告的挂起。复制器是一个小的C#程序:

using System;
using System.Data.Odbc;
using System.Threading;

namespace ConnectionPoolingTest
{
    class Program
    {
        static void Main(string[] args)
        {
            String connString = "DSN=DotNetUltraLightDSII";
            using (OdbcConnection connnection = new OdbcConnection(connString))
            {
                connnection.Open();
                connnection.Close();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们出售用于构建ODBC驱动程序的框架,而客户正在测试使用该框架构建的ODBC驱动程序。可能相关的一个细节是,他们正在使用一种组件,该组件允许用C#编写其业务逻辑,而该组件是用C ++ / CLI编写的,以在本机代码和客户代码之间建立桥梁(因此,ODBC驱动程序DLL是一种混合模式的DLL,它向ODBC驱动程序管理器公开C接口。

(如果需要,我也可以上传驱动程序二进制文件。)

在此复制器(必须在使用的DSN上启用连接池的情况下运行)上发生的事情是,该过程最终被单个线程挂起,其堆栈如下所示:

RetAddr           : Args to Child                                                           : Call Site
000007fe`fcea10dc : 00000000`00470000 00000000`770d0290 00000000`00000000 00000000`009ae8e0 : ntdll!ZwWaitForSingleObject+0xa
000007fe`f0298407 : 00000000`00999a98 00000000`770d5972 00000000`00000000 00000000`00000250 : KERNELBASE!WaitForSingleObjectEx+0x79
000007fe`f0294d04 : 00000000`00999a98 00000000`00a870e0 00000000`00999a68 00000000`00991a10 : comsvcs!UTSemReadWrite::LockWrite+0x90
000007fe`f0294ca8 : 00000000`00999a68 …
Run Code Online (Sandbox Code Playgroud)

c# clr odbc deadlock

12
推荐指数
1
解决办法
267
查看次数

C++标准是否保证字符串文字存储在程序二进制文件中?

例如,如果您有一个程序

int main()
{
    const char* str = "1111111111111111111111111111111111111111111";
    printf("%s", str);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

你编译它,如果你搜索生成的二进制文件"1111111111111111111111111111111111111111111",(忽略编码等问题),你保证找到它,或者编译器是否允许生成代码,例如,分配堆内存,使用循环填充'1',然后修复对该字符串文字的所有引用以指向堆内存?(然后确保它在正确的时间被解除分配,等等)

我怀疑实际上是否有任何实现这样做......但如果它符合标准,那么它是否符合标准?

c++ standards

7
推荐指数
1
解决办法
248
查看次数

除了'n字节对齐'之外,类型是否有可能具有对齐要求

例如,请考虑以下事项:

假设int是4字节对齐的,long是8字节对齐的.

struct example
{
    int a;
    long b;
    int c;
};
Run Code Online (Sandbox Code Playgroud)

编译器在内存中放置它的明显方法是:AAAAPPPPBBBBBBBBCCCCPPPP,整个结构具有8字节对齐.

  • P指的是一个填充字节
  • A指的是a的字节
  • B指b的字节
  • C指的是c的一个字节

在这种情况下,sizeof(示例)为24.

但另一种做法如下:AAAABBBBBBBBCCCC,整个结构具有对齐,使得起始字节mod 8的地址= 4(不知道如何更简洁地说这个)

在这种情况下,不需要填充,因此每个实例可以节省8个字节.

我的问题是,编译器是否允许这样做(按标准)?他们真的这样做了吗?我总是看到以字节为单位讨论对齐.

c++ memory-alignment

7
推荐指数
1
解决办法
197
查看次数

我怎样才能让emacs自动插入关闭括号

我刚刚开始使用emacs,并且有一个我非常喜欢的功能,并且搜索一下也没用.我希望其他人这样做是因为我还不想学习elisp.

void foo()<cursor>
Run Code Online (Sandbox Code Playgroud)

我想输入一个"{"来导致这种情况发生

void foo(){
    <cursor>
}
Run Code Online (Sandbox Code Playgroud)

我希望这只发生在cc模式中,并且只在不在字符串/ comment/etc中的行尾

我想到的第一件事是重新绑定"{"来做到这一点(我可以弄清楚如何自己做),但很难让它只在恰当的时间发生.

任何提示将不胜感激.

emacs curly-braces cc-mode

6
推荐指数
2
解决办法
3517
查看次数

是'给出'在构造函数中对'this'的引用ok?

我的代码:

Scene::Scene(const std::string &scene_file) : ambient_light(0, 0, 0), background(0, 0, 0){
  scene_parser parser(*this);
  parser.parse(scene_file);
}
Run Code Online (Sandbox Code Playgroud)

scene_parser是Scene的朋友,在parse方法中它访问(r/w)Scene的成员.这会导致任何问题吗?

c++

6
推荐指数
2
解决办法
173
查看次数

是否有用于解析printf格式字符串的Java库?

我正在为一台带有'printf'操作码的机器编写一个模拟器,虽然我知道Formatter类可能足以实际格式化字符串,但我需要一种方法来计算参数的数量.由printf调用消耗.

在我的头脑中,我可能会用正则表达式来计算'%'的数量,但我对格式字符串不太熟悉,所以我可能算不上......(不包括转义的,等等)

编辑:我实际上需要参数的数量,以及参数#到参数类型的映射,例如,"hello%s%+.3i"会给{0 - > String,1 - > Integer}

java printf

6
推荐指数
2
解决办法
2093
查看次数

编写LLDB脚本以在崩溃后获取堆栈跟踪

我试图在我们的一个测试崩溃时自动添加从mac核心转储生成堆栈跟踪的功能.

我能够在linux上轻松地完成它

gdb --batch --quiet -ex "thread apply all bt" -ex "quit" <binary> <core file> 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

但是我在使用lldb在mac(OSX 10.8)上做同样的事情时遇到了一些麻烦.首先,我使用的lldb版本是lldb-310.2.37.

我最初的方法是使用该-s选项并传入一个脚本文件,如下所示:

target create -c <core file> <binary>
thread backtrace all
quit
Run Code Online (Sandbox Code Playgroud)

最初我遇到了一些麻烦,我认为这是因为在脚本文件末尾错过了一行导致lldb无法退出的新行,但在修复之后,我得到以下内容:执行'lldbSource'中的命令.

(lldb)  target create -c <core file> <binary>
Core file '<core file>' (x86_64) was loaded.
(lldb)  thread backtrace all
error: Aborting reading of commands after command #1: 'thread backtrace all' failed with error: invalid thread
Aborting after_file command execution, command file: 'lldbSource' failed.
Run Code Online (Sandbox Code Playgroud)

有趣的是,在那之后,我们仍在运行lldb,并且手动发出'thread backtrace all'就可以了.

所以,方法#2是创建一个python脚本并使用他们的python API(我试过这个,然后搞清楚我描述的初始阻塞是由于缺少换行). …

crash automation lldb

6
推荐指数
2
解决办法
3225
查看次数

合并静态库时合并调试信息

我们构建了两个静态库,让我们称之为LibA和LibB.

在Visual Studio中,我使用projectA和projectB设置了一个解决方案,这样对于projectB,Configuration Properties -> Librarian -> General -> Additional Dependencies我已经添加了LibA.这使得VS将LibA合并到生成的LibB中.这样做是因为我们不想更改我们向客户提供的静态库.

现在,LibA和LibB都是用"程序数据库"作为调试信息格式构建的,一旦我将LibB链接到最终二进制文件,我就会收到没有找到LibA.pdb的警告.这让我相信来自LibA的调试信息没有被合并到LibB中,所以我想自己这样做.虽然,我找不到任何这样做的工具.如果可能的话,我宁愿不发送额外的文件.

我想到的一种解决方法,但尚未尝试,将使用'C7兼容'作为调试信息格式构建LibA.希望Visual Studio足够聪明,可以提取该信息并将其添加到为LibB创建的pdb中.

c++ static-libraries visual-studio pdb-files

6
推荐指数
0
解决办法
312
查看次数

是否可以使用ICU以任意编码从字符串中"修剪"尾随空格/制表符,而无需进行任何转换

具体来说,给出以下内容:

  • 指向包含ICU支持的某些编码X中的字符串数据的缓冲区的指针
  • 缓冲区中数据的长度,以字节为单位
  • 缓冲区的编码(即X)

我可以计算字符串的长度,减去尾随空格/制表符,而不是先将其转换为ICU的内部编码,然后再转换回来吗?(由于unicode规范化,这本身可能会有问题).

对于某些编码,例如任何基于ascii的编码以及utf-8/16/32,解决方案非常简单,只需从字符串的后面迭代,一次比较两个常量的1/2/4字节.

对于其他人来说,它可能更难(可变长度编码浮现在脑海中).我希望这个尽可能高效.

c++ character-encoding icu

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