小编kad*_*dzu的帖子

Robomongo:超出$ group的内存限制

我使用脚本来删除mongo上的重复项,它在我用作测试的10个项目的集合中工作但是当我使用600万个文档的真实集合时,我收到错误.

这是我在Robomongo(现在称为Robo 3T)中运行的脚本:

var bulk = db.getCollection('RAW_COLLECTION').initializeOrderedBulkOp();
var count = 0;

db.getCollection('RAW_COLLECTION').aggregate([
  // Group on unique value storing _id values to array and count 
  { "$group": {
    "_id": { RegisterNumber: "$RegisterNumber", Region: "$Region" },
    "ids": { "$push": "$_id" },
    "count": { "$sum": 1 }      
  }},
  // Only return things that matched more than once. i.e a duplicate
  { "$match": { "count": { "$gt": 1 } } }
]).forEach(function(doc) {
  var keep = doc.ids.shift();     // takes the first _id …
Run Code Online (Sandbox Code Playgroud)

out-of-memory duplicates mongodb

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

在图像 c# 中分隔字母

我有 6 个字母的图像,我希望将它分成 6 个图像,每个图像有 1 个字母。我正在使用这个功能:

public static List<UnmanagedImage> ApplyBlobExtractor (UnmanagedImage unmanaged)
        {
            // Extract blobs
            BlobCounter blobCounter  = new BlobCounter ();
            blobCounter.ObjectsOrder = ObjectsOrder.XY;
            blobCounter.ProcessImage (unmanaged);

            // Add blobs into list
            Blob[] blobs = blobCounter.GetObjects (unmanaged, false);
            List<UnmanagedImage> unmanagedList = new List<UnmanagedImage> (blobs.Length);
            foreach (Blob blob in blobs)
                unmanagedList.Add (blob.Image);

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

问题是有时字母相互接触,这使得函数将 2 个字母识别为一个字母。有没有办法改进我的功能或创建更好的功能?

这是给出错误结果的图像示例: 在此处输入图片说明

该功能给了我 2 个图像而不是 6 个。

图 1:在此处输入图片说明

图 2:在此处输入图片说明

c# image image-processing aforge

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

使用不同程序进行序列化c#

我在2个不同的项目中有2个使用序列化的程序.程序1序列化和反序列化一个名为Quiz的类的数组.Both项目具有Quiz类.程序2仅反序列化程序1序列化的内容:

private void loadSerialize(object sender, EventArgs e)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        Stream stream = new System.IO.FileStream("DataFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
        Quiz[] obj = (Quiz[]) formatter.Deserialize(stream);
        for(int i = 0; i< obj.Length; i++)
        {
            quizes.Add(obj[i]);
        }
        stream.Close();
    }

    private void saveSerialize(object sender, FormClosedEventArgs e) {

        Quiz[] obj = quizes.ToArray();
        BinaryFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("DataFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
        formatter.Serialize(stream, obj);
        stream.Close();
    }
Run Code Online (Sandbox Code Playgroud)

两个程序都具有"loadSerialize"功能,而只有Program1具有"saveSerialize"功能.当我尝试在Program2中反序列化文件时,我得到一个serializationException.说(消息错误是葡萄牙语所以我把它翻译成英语):找不到程序集'infoAplicadaEnsino,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'.如何在Program2中反序列化?

.net c# serialization binaryformatter

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

Redshift 按周分组

我正在尝试按周计算我的表,但该DATE_TRUNCT('week',date)函数将星期一视为一周的开始,但我需要从星期日开始一周。

这是查询,它运行正常,但从星期一开始......

SELECT DATE_TRUNC('week',myDate) AS Reference,
       column1 AS Item1,
       column2 AS Item2,
       COUNT(*) AS Volume,
       COUNT(CASE WHEN status = 'status1' THEN 1 END) AS Status1,
       COUNT(CASE WHEN status = 'status2' THEN 1 END) AS Status2,
       COUNT(CASE WHEN status = 'status2' AND fase = '1' THEN 1 END) AS Fase1,
       COUNT(CASE WHEN status = 'status2' AND fase = '2' THEN 1 END) AS Fase2,
       COUNT(CASE WHEN status = 'status2' AND fase = '3' THEN 1 END) AS Fase3
FROM …
Run Code Online (Sandbox Code Playgroud)

sql amazon-redshift

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

限制线程数C#

我必须运行一个循环与许多交互,所以我想使用线程,但我不知道如何控制线程的数量:

for (int i = 0; i < 45856582; i = i + 10000)
{
    string result = request.Get(String.Format(mold, i));
    Worker temp = new Worker(i, i + 10000);
    Thread th = new Thread( new ThreadStart( temp.DoWork ));
    th.Start();
}
Run Code Online (Sandbox Code Playgroud)

这个循环会创建太多的线程,我怎么能以循环停止的方式创建它并且不会创建比某个数字更多的线程并等待一个创建的线程完成以便继续?

这是工人阶级:

public class Worker
{
    int startIndex = 0;
    int endIndex   = 0;

    public Worker(int startIndex , int endIndex)
    {
        this.startIndex = startIndex;
        this.endIndex   = endIndex;
    }

    public void DoWork()
    {

        for (int i = startIndex; i < endIndex; i++) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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