小编Evg*_*zin的帖子

Microsoft.Build.Utilities.FileTracker引发了异常错误.发生在不同的项目

最近使用Visual Studio 2010 Ultimate,C#,在Win7 64bit中,当我编译任何项目时,我得到以下错误.解决方法是添加<TrackFileAccess>false</TrackFileAccess>到项目文件中.如果我没有弄错,这将禁用增量构建,所以我想远离这种解决方法.

谁知道永久可靠的解决方案是什么?我确实重新安装了.NET Framework 4和VS 2010.我没有测试版或4.0版本的框架文件夹.

Error   1   The "GenerateResource" task failed unexpectedly.
System.TypeInitializationException: The type initializer for 'Microsoft.Build.Utilities.FileTracker' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Build.Utilities.FileTracker..cctor()
   --- End of inner exception stack trace ---
   at Microsoft.Build.Utilities.FileTracker.ForceOutOfProcTracking(ExecutableType toolType, String dllName, String cancelEventName)
   at Microsoft.Build.Tasks.GenerateResource.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext 
Run Code Online (Sandbox Code Playgroud)

.net msbuild visual-studio-2010

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

超图的真实世界应用

超图是在其中边缘可以连接许多顶点的图的概括.最近我看到很多关于超图(分段,聚类等)的出版物.所以我的问题是:

  • 是否存在超图(以及可能的实现)的实际应用,或者这只是工程师无意使用的学术研究?
  • 是否存在可用于超图的常用图算法的类似物,如max-flow或Dijkstra?

我对普通图有直觉.例如,图可用于表示贝叶斯网络的传输网络或繁忙规则.但我对超图没有这样的直觉,它们对我来说绝对违反直觉.

theory algorithm graph-theory

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

在动态环境中使用Paxos

使用2F + 1处理器时,Paxos算法可以容忍高达F的故障.据我所知,此算法仅适用于固定数量的处理器.是否可以在动态环境中使用此算法,其中可以动态添加和删除节点?

algorithm distributed-computing paxos

9
推荐指数
2
解决办法
1004
查看次数

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

随机搜索与GridSearchCV

我想使用随机搜索算法而不是使用scikit-learn进行网格搜索.但我只能在文档中找到GridSearchCV估算器.是否可以在scikit-learn中使用随机搜索而不是网格搜索?

scikit-learn

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

类似于Python在golang中的setdefault

python中的字典有一个方便的快捷方式 - setdefault方法.例如,如果我有表示从字符串到列表的映射的dict,我可以写这样的东西

if key not in map:
    map[key] = []
map[key].append(value)
Run Code Online (Sandbox Code Playgroud)

这是太冗长,更pythonic方式这样做是这样的:

map.setdefault(key, []).append(value)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,有一个defaultdict类.

所以我的问题是 - Go中的地图有类似的东西吗?我真的很烦恼使用map [string] [] int和类似的类型.

go

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

是否可以将 CMakeLists.txt 转换为 Unix Makefile?

由于某些原因,我试图在我的项目中摆脱 cmake。我需要创建 unix makefile 来构建我的项目。如果我使用 cmake 为我生成它们,那么 makefile 无论如何都将依赖于 cmake。我可以使用的唯一构建工具是 GNU 工具链中的一个。

cmake

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

如何在层次结构中查找数据项位置?

我需要开发一种算法,可以在某个层次结构中定位数据项位置.我有一个层次结构,对某些数据集的元素进行分类.层次结构是分类的 - 顶级元素是最通用的类​​,它匹配数据集的任何元素,更深层的元素包含与数据集的某个子集匹配的更具体的类.

例如,考虑游艇的层次结构.我们有顶级游艇.在下一个级别,我们有帆船游艇机动游艇.帆船游艇有两个孩子 - 巡航游艇赛艇游艇.巡洋舰可以由制造商进一步划分,例如Bavaria YachtsDufour Yachts.然后,每个类可以进一步除以船体类型,长度,风帆面积等.

这是数据集中的一个示例:

Drive   Class   Manufacturer   Hull type Len  Sails Area ... Model
Sailing Cruiser Bavaria Yachts Mono-hull 25ft 560sqft    ... Bavaria 32
Sailing Cruiser Dufour Yachts  Mono-hull 27ft 580sqft    ... Dufour 32 Classic
Run Code Online (Sandbox Code Playgroud)

通过深度优先顺序搜索,我可以轻松地将每个样本映射到层次结构.

乍一看这是一个简单的搜索问题,但存在一些困难.

第一个难点:数据项不必包含所有元素.数据项通常缺少10%到50%的元素.许多这些元素并不是很重要,例如游艇Drive只能是MotorSail,所以它不会带来很多信息(只有1位).可以使用更重要的元素轻松推断这些元素,例如,如果我们知道游艇模型,我们可以推断出数据项的所有其他元素(或字段).

第二个难点:某些元素可能因不同数据项而异,即使它们对应于层次结构中的相同位置(相同的游艇模型).例如,帆船区域可能会有很大差异,因为船主以不同的方式修改游艇的装备或仅仅是圆形区域值.

正如我已经提到的,我需要从层次结构中的数据集中找到不同的数据项.每个数据项可以以不同的精度定位.精度是层次结构中搜索过程停止的深度.换句话说,我需要在层次结构中获取与每个数据项对应的路径,并且此路径可能不完整.例如,算法可以发现数据项对应于Juliet 23游艇,但生产年份仍然是未知的.

如果我可以为每个路径获得具有概率测量的多个路径,那将会很酷.例如,算法可以为不同的生产年份返回Juliet 23的 4条路径,每条路径的概率为25%.

此时我使用深度优先搜索和一些启发式方法解决了这个问题.它给出了很好的结果,但我认为可以获得更好的结果.也许你可以用更通用的方式来表达这个问题,这样我就可以搜索一些关于它的学术论文.

algorithm

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

C++低延迟线程异步缓冲流(用于记录) - Boost

问题:

3下面的循环包含已注释掉的代码.我搜索("TAG1","TAG2"和"TAG3")以便于识别.我只是希望while循环在测试的条件下等待,然后继续进行,同时尽可能地减少CPU资源.我首先尝试使用Boost条件变量,但是存在竞争条件.让线程休眠'x'微秒是低效的,因为没有办法精确计时唤醒.最后,boost :: this_thread :: yield()似乎没有做任何事情.可能是因为我在双核系统上只有2个活动线程.具体来说,如何在引入尽可能少的不必要阻塞的同时,使下面的三个标记区域更有效地运行.

背景

目的:

我有一个记录大量数据的应用程序.在分析之后,我发现在日志记录操作上花费了很多时间(将文本或二进制文件记录到本地硬盘上的文件中).我的目标是通过使用线程缓冲流记录器的调用替换非线程直接写入调用来减少logData调用的延迟.

选项探索:

  • 将2005年代的慢速硬盘升级到SSD ......可能.成本并不高昂......但涉及大量工作......超过200台计算机必须升级......
  • 提升ASIO ......我不需要所有的proactor /网络开销,寻找更简单,更轻量级的东西.

设计:

  • 生产者和消费者线程模式,应用程序将数据写入缓冲区和后台线程,然后稍后将其写入磁盘.因此,最终目标是让应用程序层调用的writeMessage函数尽可能快地返回,而数据在以后的某个时间以FIFO顺序正确/完全记录到日志文件中.
  • 只有一个应用程序线程,只有一个编写器线程
  • 基于环形缓冲区.这个决定的原因是使用尽可能少的锁,理想情况......如果我错了,请纠正我......我认为我不需要任何锁.
  • Buffer是一个静态分配的字符数组,但如果出于性能原因需要/期望,可以将其移动到堆中.
  • Buffer有一个开始指针,指向应写入文件的下一个字符.缓冲区有一个结束指针,指向要写入文件的最后一个字符后的数组索引.结束指针NEVER传递开始指针.如果出现大于缓冲区的消息,则编写器等待直到缓冲区清空并直接将新消息写入文件,而不将超大消息放入缓冲区(一旦缓冲区清空,工作线程)不会写任何东西,所以没有争论).
  • writer(工作线程)仅更新环形缓冲区的开始指针.
  • 主(应用程序线程)仅更新环形缓冲区的结束指针,并且当有可用空间时,它仅将新数据插入缓冲区...否则它将等待缓冲区中的空间变为可用或直接按描述写入以上.
  • 工作线程不断检查是否有要写入的数据(由缓冲区启动指针!=缓冲区结束指针时的情况表示).如果没有要写入的数据,一旦应用程序线程将某些东西插入缓冲区,工作线程理想情况下应进入休眠状态并唤醒(并更改缓冲区的结束指针,使其不再指向与开始时相同的索引)指针).我在下面的内容涉及while循环不断检查该条件.这是一种非常糟糕/低效的缓冲区等待方式.

结果:

  • 在我的2009年配备SSD的双核笔记本电脑上,我看到线程/缓冲基准测试与直接写入的总写入时间大约是1:6(0.609秒对0.095秒),但变化很大.通常,缓冲写入基准测试实际上比直接写入慢.我认为可变性是由于等待空间在缓冲区中释放,等待缓冲区清空以及让工作线程等待工作变得可用而实现的可能性差.我已经测量过一些while循环消耗超过10000个周期,我怀疑这些循环实际上是在争夺另一个线程(工作者或应用程序)完成等待计算所需的硬件资源.
  • 输出似乎结账.启用TEST模式并将10的小缓冲区作为压力测试,我将数百MB的输出分开并发现它等于输入.

使用当前版本的Boost进行编译(1.55)

    #ifndef BufferedLogStream_h
    #define BufferedLogStream_h

    #include <stdio.h>
    #include <iostream>
    #include <iostream>
    #include <cstdlib>
    #include "boost\chrono\chrono.hpp"
    #include "boost\thread\thread.hpp"
    #include "boost\thread\locks.hpp"
    #include "boost\thread\mutex.hpp"
    #include "boost\thread\condition_variable.hpp"
    #include <time.h>

    using namespace std;

    #define BENCHMARK_STR_SIZE 128
    #define NUM_BENCHMARK_WRITES 524288
    #define TEST 0
    #define BENCHMARK 1
    #define WORKER_LOOP_WAIT_MICROSEC 20
    #define MAIN_LOOP_WAIT_MICROSEC 10

    #if(TEST)
    #define BUFFER_SIZE 10 
    #else …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading boost asynchronous low-latency

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

在elasticsearch中查找空字符串

我正在尝试_search在该领域具有一些特定价值的文件.

{
  "query": {
      "bool": {
        "must": [
         {"field": {"advs.status": "warn"}}
       ]
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

找到了.但是,当我试图在该字段中查找具有空字符串的文档时,我收到此错误:

ParseException[Cannot parse '' ...
Run Code Online (Sandbox Code Playgroud)

然后 - 预期的长列表而不是空字符串.

我试试这个查询:

{
  "query": { 
    "bool": {
        "must": [
            {"term": {"advs.status": ""}}
         ]
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

它没有失败但却一无所获.它适用于非空字符串.我该怎么做?

我对这种类型的映射看起来完全像这样:

{
    "reports": {
        "dynamic": "false",
        "_ttl": {
            "enabled": true,
            "default": 7776000000
        },
        "properties": {
            "@fields": {
                "dynamic": "true",
                "properties": {
                    "upstream_status": {
                        "type": "string"
                    }
                }
            },
            "advs": {
                "properties": {
                    "status": {
                        "type": "string",
                        "store": "yes"
                    } …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

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