小编Gra*_* H.的帖子

对于非常长的字符串列表,什么是合适的搜索/检索方法?

这不是一个非常罕见的问题,但我似乎无法找到真正解释选择的答案.

我有一个非常大的字符串列表(确切地说是SHA-256哈希的ASCII表示),我需要查询该列表中是否存在字符串.

此列表中可能会有超过1亿条目,我需要多次重复查询条目的存在.

考虑到尺寸,我怀疑我可以把它全部塞进去HashSet<string>.什么是适当的检索系统,以最大限度地提高性能?

我可以预先对列表进行排序,我可以把它放到一个SQL表中,我可以把它放到一个文本文件中,但我不确定在我的应用程序中哪些是最有意义的.

这些或其他检索方法在性能方面是否有明显的优势?

c# lookup performance data-structures

65
推荐指数
10
解决办法
3864
查看次数

TFS在不同项目中使用相同程序集的多个版本构建问题

我一直在使用我们的TFS构建服务器遇到问题.我有2个项目(都在同一个解决方案中),1个是WebForms项目,运行.Net 4.0.第二个是运行.Net 4.5的ASP .Net MVC5项目.还有一个Silverlight项目,但只有前两个问题才能重现.

这两个项目都使用NuGet包用于各种库.有时,包中有不同的组件用于各自的环境..Net 4.0,4.5,SL组装等

构建服务器似乎将所需的所有库转储到单个文件夹中,然后从中提取构建解决方案.在许多情况下,这会导致问题,错误的项目会得到错误的程序集版本.这不会在本地发生,仅在构建服务器上发生.我无法弄清楚我需要做些什么来防止这种情况发生.有任何想法吗?

.net c# asp.net tfsbuild tfs2010

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

如何将FontFamily存储为StaticResource?

我正在试图弄清楚如何在我的App.xaml中设置一个FontFamily,以便我可以在任何需要的地方以声明方式应用该样式.在ResourceDictionary我可以应用类似的东西:

<System:Double x:Key="SmallTextSize">10</System:Double>
Run Code Online (Sandbox Code Playgroud)

那我想做的是:

<FontFamily x:Key="MainFont">Wingdings</FontFamily>
Run Code Online (Sandbox Code Playgroud)

但是,我唯一可以工作的是隐式样式,它需要一个目标,以及我想要使用的字体的多个声明.我需要能够将我最终使用的样式应用于任何控件的FontFamily属性.

这是我目前最接近的地方:

<System:String x:Key="MainFont">Wingdings</System:String>
<Style TargetType="UserControl">
      <Setter Property="FontFamily" Value="{StaticResource MainFont}"></Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

这个实现不适用于像是因为它期望MainFont是FontFamily而不是字符串:

<TextBlock Text="{Binding}" Margin="0,0,0,4" FontWeight="Normal" FontFamily="{StaticResource MainFont}" FontSize="14.667" />
Run Code Online (Sandbox Code Playgroud)

我该怎么处理?谢谢!

c# silverlight xaml

6
推荐指数
1
解决办法
9929
查看次数

为什么这个按位OR在可空int上返回null?

我基本上有以下内容:

    int? myVal = null;
    myVal |= 1;
    bool stillNull = myVal == null; //returns true
Run Code Online (Sandbox Code Playgroud)

为什么这样做?我对按位运算符/操作数行为的理解并不是非常强大,我找不到在这种情况下不会将其视为简单赋值的原因.

c#

6
推荐指数
1
解决办法
1286
查看次数

SwitchDesktop可以暂时工作,但过了一会儿就会切换回来

我有一些代码来创建一个新的桌面并在该桌面上启动一个进程.

一些选择的Windows XP机器,当这段代码运行时,我可以看到它切换到新桌面并启动过程,但几乎立即,桌面切换回普通桌面.

这个代码在大约98%的机器上工作正常,我似乎无法隔离任何原因导致其他机器无法工作.

应该SwitchDesktop可靠吗?我可以挂钩SwitchDesktop可能从另一个应用程序调用的调用吗?

我的代码:

int DLL_EXP_IMP WINAPI Process_Desktop(char *szDesktopName, char *szPath)
{
    HDESK   hOriginalThread;
    HDESK   hOriginalInput;
    HDESK   hNewDesktop;
    int procSuccess;
    // Save original ...
    hOriginalThread = GetThreadDesktop(GetCurrentThreadId());
    hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);

    // Create a new Desktop and switch to it
    hNewDesktop = CreateDesktop(szDesktopName, NULL, NULL, DF_ALLOWOTHERACCOUNTHOOK, GENERIC_ALL, NULL);
    SetThreadDesktop(hNewDesktop);
    SwitchDesktop(hNewDesktop);

    // This call blocks until the process exits, and is confirmed to work on the affected machines
    procSuccess = StartProcess(szDesktopName, szPath);

    // Restore …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi

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

是否可以使用Rosyln或Resharper来检测可能的DivideByZero案例?

我正在尝试确定是否有一种编程方式来检查DivideByZeroException我的代码库中是否存在可能性.我的代码库包括一系列相对简单到相对复杂的公式,大约1500个(并且正在增长).在编写新公式时,必须注意确保安全地进行除法,以避免在处理这些公式期间出现异常.

例如

decimal val1 = 1.1m;
decimal val2 = 0m;
var res = val1/val2; //bad

var res = val2 == 0 ? 0 : val1/val2; //good
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Roslyn或Resharper或其他工具来检查我的代码库并找出DivideByZeroException未经适当防范的情况?公式基于动态且复杂的数据,足以使用简单的单元测试难以检测.这些公式可以访问数百个输入,并且可以动态地相互构建.

我的环境是:VS2017Pro,Resharper(最新).

c# resharper roslyn roslyn-code-analysis

4
推荐指数
2
解决办法
338
查看次数

在C#中创建一个STL std :: set并编组为c ++

实现这一目标的最佳方法是什么?我有一个在C#windows服务中生成的文件名列表.我需要最终将它们放入STL集中,并将其推送到文件映射.我假设实际上在C#中创建这个结构要么被禁止,要么太难以值得,但我可以使用一个本机dll返回指向它创建的集合的指针,然后我在文件映射中传递?这里的任何想法都会有所帮助!

c# c++ pinvoke

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

如果向量<int>按顺序添加到向量中,是否需要对它进行排序?

如果从已经排序的文件中读入项目,是否需要对矢量进行排序?如果不必要,我不想承担性能损失.作为参考,我正在使用它来构建它,并且每个项目在读入时都是有序的.

在@dribeas的评论后编辑

std::vector<int> split(const std::string &s, char delim) {
    std::vector<int> elems;
    std::stringstream ss(s);
    std::string item;
    while(std::getline(ss, item, delim)) {
        elems.push_back(static_cast<int>(atoi(item.c_str())));
    }
    return elems;
}
Run Code Online (Sandbox Code Playgroud)

c++ vector

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

ORA-01008:并非所有变量都与空值绑定

我正在创建一个查询,我似乎无法超越Not all variables boundOracle中的错误

尽我所知,一切看起来都是正确的.我错过了什么?

代码混淆了一点,以保护无辜......

OracleCommand execCmd = new OracleCommand();

OracleParameter outParam =
        new OracleParameter("ID", OracleType.Int32);
outParam.Value = DBNull.Value;
outParam.Direction = System.Data.ParameterDirection.Output;
execCmd.CommandText = "insert into o " +
        "(A, B, " +
        "C, D, E, " +
        "F, G, H, I, " +
        "J, K) " +
        "VALUES (:A, :B, :C, :D, :E, " +
        ":F, :G, :H, :I, :J, :K) " +
        "RETURNING O_ID INTO :ID";
execCmd.Parameters.AddWithValue("A", og.N);
execCmd.Parameters.AddWithValue("B", DBNull.Value);
execCmd.Parameters.AddWithValue("C", DBNull.Value);
execCmd.Parameters.AddWithValue("D", og.A);
execCmd.Parameters.AddWithValue("E", …
Run Code Online (Sandbox Code Playgroud)

c# oracle

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

知道路径是指c ++中的文件夹还是文件最简单的方法是什么?

我正在使用shell扩展覆盖处理程序,我将传递一条我知道有效的路径,但我不知道它是文件夹还是文件.可以相对经常调用此操作,因此我想尽可能便宜地确定它是文件还是文件夹.使用c ++(特定于Windows可以满足我的要求),我怎样才能最好地实现这一目标?

c++ windows filesystems

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

For循环中的变量没有变化

在我的程序中,我在"button1_Click"中定义了一些变量,并且"button1_Click"函数中还有一个"for"循环.在那个循环中,我希望改变这些变量,但它们不会.我应该做什么......通过引用传递它们?如果有,怎么样?

private void button1_Click(object sender, EventArgs e)
        {
            double t=0;
            double x = double.Parse(X0.Text);
            double z = double.Parse(Z0.Text);
            double y = double.Parse(Y0.Text);
            double u = double.Parse(U0.Text);
            double tn = double.Parse(Tn.Text);
            double h = double.Parse(textbox_h.Text);

            for (int i = 0; i < (tn / h); i++)
            {

                double K1x = h * fx(t, x, y, z, u);

                double K2x = h * fx(t + h / 2, x + K1x / 2, y + K1y / 2, z + K1z / …
Run Code Online (Sandbox Code Playgroud)

c# variables loops

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

为什么异步Parallel.ForEach中的异常会使应用程序崩溃?

如果在控制台应用程序中运行而不是将其抛出AggregateException并被外部捕获,以下的崩溃为什么会崩溃try/catch

I've simplified the use case for the await for brevity, but in the relevant code I am indeed trying to execute an awaitable Task of importance.

var list = new List<string>() {"Error"};

        try
        {
            Parallel.ForEach(list, new ParallelOptions()
            {
                MaxDegreeOfParallelism = 8
            }, async listEntry =>
            {
                await Task.Delay(5000);
                throw new Exception("Exception");
            });
        }
        catch (Exception ex)
        {
            //never hits, the application crashes
        }

        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

I note that the following does not cause the application to …

c# exception task-parallel-library parallel.foreach

0
推荐指数
1
解决办法
1051
查看次数

如何将字符串MAC地址转换为十六进制

我如何转换MAC地址string一样00:18:4d:D0:9d:62,以一个十六进制字符串像466F7572746820466C6F6F72在C#中?谢谢.

.net c#

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