问题列表 - 第13363页

工业分区问题

我们说的是金属制品厂.有一种机器可以将长铁棒切割成较小的部件,这些部件后来用于制造各种产品.

例如,我要求生产以下长度和数量的棒:2件248毫米,5件1150毫米,6件2843毫米,3件3621毫米.

那是分区输出.

在输入侧,我有(例如)3个2500mm的条,2个5000mm的条,6个8000mm的条和3个10000mm的条.

我应该找到一种如何最佳地切割输入条的方法 - 切割后的其余部分(其余部分太小而不能使用)应尽可能小.

我创建了算法,只需创建所有可能的组合,然后在其中选择最好的组合.代码有效,但只要输入和输出稍微大一点,计算就可以持续很长时间,所以我必须找到解决问题的新方法.

你有什么提示吗?

algorithm optimization computer-science operations-research

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

枚举命名惯例 - 复数

我问这个问题,尽管在枚举和匹配属性的C#命名约定中读过类似但不完全正确的内容

我发现我倾向于将枚举命名为复数,然后将它们用作单数,例如:

public enum EntityTypes {
  Type1, Type2
}

public class SomeClass {
  /*
    some codes
  */

  public EntityTypes EntityType {get; set;}

}
Run Code Online (Sandbox Code Playgroud)

当然它有效,这是我的风格,但任何人都可以找到这种惯例的潜在问题吗?我确实有一个"丑陋"的命名与"状态"一词:

public enum OrderStatuses {
  Pending, Fulfilled, Error, Blah, Blah
}

public class SomeClass {
  /*
    some codes
  */

  public OrderStatuses OrderStatus {get; set;}

}
Run Code Online (Sandbox Code Playgroud)

附加信息:也许我的问题不够明确.在命名我定义的枚举类型的变量时,我经常要努力思考.我知道最佳实践,但它无助于简化命名这些变量的工作.

我不可能将我的所有枚举属性(比如"状态")公开为"MyStatus".

我的问题:任何人都可以找到上述惯例的潜在问题吗?这不是最佳做法.

问题改写:

嗯,我想我应该这样问这个问题:有人能用一种很好的通用方法来命名枚举类型,这样在使用时,枚举"实例"的命名会非常简单吗?

.net c# enums naming-conventions plural

249
推荐指数
8
解决办法
12万
查看次数

如果我的函数在处理时失败,System.MessageQueue(MSMQ)消息是否会丢失?

我使用以下代码发送消息:

var transaction = new MessageQueueTransaction())
transaction.Begin(  );

var message = new Message
{
   Body = myContent,
   Recoverable = true
};

m_oMessageQueue.Send( message , myTransaction );

transaction.Commit( );
Run Code Online (Sandbox Code Playgroud)

并使用a BeginRecieveReceiveCompleted事件处理程序接收它.

如果我的事件处理程序在调用之前失败EndRecieve,那么该消息是否应保留在队列中并且可用于后续的接收调用?我看到的行为是消息永远消失了.(或者可能会有超时,之后它会再次出现?)

更新接收消息的代码如下所示.

var messageQueue = new MessageQueue( myPath );
messageQueue.ReceiveCompleted += messageQueue_ReceiveCompleted_ThrowException;
messageQueue.BeginReceive();
Run Code Online (Sandbox Code Playgroud)

出于测试目的,我在messageQueue_ReceiveCompleted_ThrowException事件处理程序中抛出异常.

然后我用一个工作事件处理程序重复上面的代码,但我没有被调用.

c# msmq message-queue

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

TListbox排序 - 高点和低点

好的,我有一个TListBox,有时可能会被要求显示43,000行!

我知道,这几乎没有任何意义,但确实如此.

现在这是当前的问题:

使用内置的Sort方法及其Compare回调函数几乎可以永久使用,就像很多分钟一样.

因此,我将列表框中的字符串从ShortStrintgs的普通旧动态数组中提取出来,对其执行QuickSort(),大约需要三秒钟.我想是啊!

做一点思考,我看到QuickSort正在移动所有这些字符串,这是不需要的,所以我将代码移动到指针或索引到字符串,瞧,排序再快一点,羚牛在一秒钟内排序43,000项.大赢,是吗?

但是,现在,如果我执行LB.Items.Add()或LB.Items.Assign将已排序的字符串移动到列表框中,则需要30秒!即使发生了BEgin/EndUpdate.如果我浏览代码,我会看到很多东西正在继续使用delete()Insert()INsertObject()和Windows消息没有任何理由.

片刻虽然揭示了我拥有LB.TStrings中的所有字符串,但我只需要将它们拖到我的QuickSorted()数组周围.这应该是微不足道的,只是移动一些指针.

但我没有看到任何可见的方法来设置原始TStringList指针.不,Exchange()真的很慢.

我有什么想法可以获得TString字符串指针?这应该是微不足道的,但我没有看到它.

谢谢,

乔治

delphi sorting shuffle

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

PHP:如何在另一个图像上绘制图像?

我正在使用 PHP 和 GD 库。

我想在另一张图片上画一张图片(比如这个:http : //www.gravatar.com/avatar/107f2fafb2d29fedc3783b141139a878?s=128&d=identicon&r= PG):http : //www.geekpedia.com/gallery/fullsize /simplistic-windows-wallpaper.jpg在指定坐标(左上角或右上角或图像中的任何位置)。

如何使用 PHP 和 GD 库做到这一点。

php gdi+

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

阻止IE8打开或下载text/plain MIME类型

我在PHP中动态生成一个文本文件,因此它具有.php扩展名,但是文本/纯MIME类型.除IE8外,所有浏览器都将文件显示为格式良好的预格式化文本.

谷歌搜索告诉我他们已经添加了安全性,如果HTTP标头内容类型与预期的内容类型不匹配(我认为基于扩展和一些嗅探)然后它强制下载文件.在我的情况下,我必须打开它,并允许打开我刚刚告诉它打开的文件!这可能是Win7的烦恼.当然,提供静态纯文本文件可以正常工作.

那么我可以阻止IE8下载文件并让它正常查看吗?代码必须在多个共享托管环境中运行,所以我认为我坚持使用.php扩展.

text mime types internet-explorer-8

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

关于收益率回报和对foreach的打破

有没有一种正确的方法可以打破foreach,以便IEnumerable <>知道我已经完成并且应该清理它.

请考虑以下代码:

    private static IEnumerable<Person> getPeople()
    {
        using (SqlConnection sqlConnection = new SqlConnection("..."))
        {
            try
            {
                sqlConnection.Open();
                using (SqlCommand sqlCommand = new SqlCommand("select id, firstName, lastName from people", sqlConnection))
                {

                    using (SqlDataReader reader = sqlCommand.ExecuteReader())
                    {
                        while (reader.Read())
                            yield return new Person(reader.GetGuid(0), reader.GetString(1), reader.GetString(2));
                    }
                }
            }
            finally
            {
                Console.WriteLine("finally disposing of the connection");
                if (sqlConnection.State == System.Data.ConnectionState.Open)
                    sqlConnection.Close();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果他的消费者没有脱离foreach,那么everthing很好并且读者将返回false,while循环willend并且该函数清除数据库命令和连接.但是如果在我结束之前呼叫者从foreach断开会发生什么呢?

.net c#

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

抛出的异常不会停止应用程序

抛出的一些异常如下:

throw new Exception( errMsg );
Run Code Online (Sandbox Code Playgroud)

... doest正在停止我的申请!

我的期望是当我扔任何前任. - 应立即停止应用程序.
但我注意到我的应用程序抛出一个前.一个接一个(特别是绑定时)而不是终止相同的时间

EDIT_1:
当它可以拦截时,我没有try-catch块

EDIT_2:

如上所述 - 这主要发生在绑定时.

例如,我有对象的getter检查用户的权限(GetValue方法) - 如果不引发异常.
我可以在调试器中看到它执行抛出新的Exception(...) 语句,但应用程序不会停止.我也注意到异常被抛出的次数与绑定集合中的许多项目一样多...

知道如何强制停止绑定并提升真正的异常吗?

示例代码来说明我在说什么

public  string  Name {
  get { return  GetValue( name, "Name"); }
}
Run Code Online (Sandbox Code Playgroud)

.net c# exception

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

初始化和分配值,从引用传递

好的,这只是一个小小的警告.我目前正在与ESRI的可爱ArcSDK合作.现在要从任何函数中获取值,您基本上必须传递变量,您想要将值赋值给.

例如:

long output_width;
IRasterProps->get_Width(&output_width);
Run Code Online (Sandbox Code Playgroud)

这是一件小事,但是当你必须从他们的各种功能中挑出大约30个不同的数据时,它真的开始变得烦人.

所以我想知道是否有可能以某种方式通过STL或C++的魔力将其转换为:

long output_width = IRasterProps->get_Width(<something magical>);
Run Code Online (Sandbox Code Playgroud)

所有函数都返回void,否则它们中的一些可能会返回一个HRESULT,我可以放心地忽略它.有任何想法吗?

***编辑****

继承了我得到的最终结果:)!!!!!

A magic(P p, R (__stdcall T::*f)(A *)) {
    A a;
    ((*p).*f)(&a);
    return a;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

如何确定我的python shell是否在OS X上以32位或64位模式执行?

我需要一种方法来告诉shell在shell中的模式.

我试过看平台模块,但它似乎只是告诉你"关于位体系结构和用于可执行文件的链接格式":二进制编译为64位虽然(我在OS X 10.6上运行)所以它似乎总是报告64位,即使我使用这里描述的方法强制32位模式).

python macos

386
推荐指数
15
解决办法
30万
查看次数