问题标签 [allocation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
280 浏览

sql - 给用户分配id的SQL场景

我有一个如下的 sql 场景,我一直在努力改进。

有一个“退货”表,其中包含针对某商品的商店退货商品的 ID。其结构如下。

还有一个表 Supplier 与 Shop、supplier 和 Item 如下所示。

现在如您所见,supp1 向 shop1 供应 20% 的 item1 总量,而 supp2 向 shop1 供应 80% 的 Item1。同一 Shop1 的同一 Item1 有 5 次退货。现在我需要将任意四个返回 ID 分配给 Supp1,将剩余的一个返回 ID 分配给 supp2。这种数量的分配是基于供应商的供应量百分比的比率。这种分配取决于供应物品的数量比例。

现在我尝试了一种使用临时表的方法,如下所示。

临时表 1 将包含商店、退货 ID、商品、退货 ID 总数和退货 ID 排名。

temp table 2 将有 shop、Supplier、Item 和他的比例和比例等级。

现在我面临着将顶级退货 ID 分配给顶级供应商的困难,如上图所示。由于 SQL 没有循环,我该如何实现这一点。我一直在尝试几种方法。

我的环境是 Teradata(ANSI SQL 就够了)。

0 投票
1 回答
3630 浏览

python - 分配算法帮助,使用Python

我一直在为学生研究这种通用分配算法。

它的伪代码(Python 实现)是:

很简单,这将尝试从他们最喜欢的开始分配项目。它的工作方式,在一组比如说 100 个项目中,你列出了 10 个你想做的事情。因此,第 10 个项目不会是“总体上最不受欢迎的”,而是在他们选择的集合中最不受欢迎的,这还不错。

显然,如果它不能分配一个项目,一个学生只会回到基本情况,即分配无,排名为 11。

我正在做的是根据排名的加权和计算分配“质量”。因此,数字越低(即更偏爱的项目),分配质量就越好(即更多的学生有更偏爱的项目)。

这基本上就是我目前所拥有的。简单而且有效。


现在我正在研究这个算法,试图在本地最小化分配权重(这个伪代码有点乱,抱歉)。

这可能会起作用的唯一原因是因为我的“搜索空间”并不是特别大(请注意,这只是一个非常普遍的轶事观察)。由于该项目仅针对我的部门,因此我们有自己的限制。所以学生人数不能超过100,偏好的数量不会超过10。

关于评论的更新:


我正在尝试做的事情:

  • 我正在尝试一次在两个学生组之间实现“最低体重分配”(即本地)

  • 权重分配是学生分配的排名的总和。我们希望学生获得总体排名最高的项目。因此,如果学生 A 获得了他排名第 1 的项目,学生 B 获得了她排名第 5 的项目,那么他们的本地分配权重为 6。如果我们将学生 A 移动到他的排名 2 的项目,因此,学生 B 移动到她的排名3 项目然后权重现在是 5。5 < 6 总体上更好。

  • 因此,我从我收集的学生开始,然后开始遍历他们

  • 我从第一个和第二个学生开始,分配他们的项目

  • 然后我如上所述计算重量。鉴于权重等于排名,如果两者都排名第 1,则权重为 2。这是最好的,我们想继续第二和第三个学生。

  • 现在,如果权重大于 2,说明有一个或多个项目的排名大于 2,我们试图得到一个更好的版本。

  • 因此,我们选择排名最低的学生,然后将他/她降低一个排名(因此,如果他/她是排名 1,这会将他降低到排名 2)

  • 然后我们尝试将另一个学生重新分配到另一个级别。

  • 现在,如果权重比以前的权重好,那么我们就让它成为新的权重,让他们拥有那些项目。如果情况更糟或相等,那么我们就继续讨论下一个学生组合。

  • 在本地,对于学生来说,这件事一直在尝试,直到达到最小重量并且不能做得更好。

希望这能解释我想要做什么?


所以,问题:

  1. 这是对模拟退火的一种修改,但对此的任何评论都将不胜感激。

  2. 我将如何跟踪哪个学生是 (i) 以及哪个学生是 (i+1)

  3. 如果我的学生总数为 100,那么 (i+1) = 101 就会出错,因为没有。我该如何规避呢?

  4. 任何可以立即发现的缺陷?

额外信息:

我的学生词典是这样设计的:

0 投票
5 回答
2107 浏览

c++ - 回收释放的对象

假设我需要经常在堆上分配和删除对象(任意大小),如果不是删除这些对象,我会将其返回到某个“池”以供以后重用,是否有任何性能优势?

它会通过减少堆分配/释放来带来好处吗?还是会比内存分配器性能更慢,因为“池”需要管理指针的动态集合。

我的用例:假设我创建了一个基于链表的队列容器,并且该列表的每个节点都分配在堆上,因此每次调用 push() 和 pop() 都会分配和取消分配该节点:

`

`

0 投票
2 回答
331 浏览

winapi - 内存重新分配

重新分配内存的正确和最佳方法是什么?例如,我使用 WinAPI 函数 HeapAlloc 分配 100 个字节,然后我用一些数据填充该内存的 100 个字节,现在我想在上一个结尾添加更多新数据......

我该怎么办?使用更多字节进行新分配,然后将旧+新复制到新位置并释放旧内存?或者有一些方法可以在旧数据末尾分配新内存,然后只复制新数据?

0 投票
1 回答
251 浏览

algorithm - 用于将组理想分布到具有潜在溢出的容器中的有效算法?

我有一组学生需要分配到固定容量的教室(例如,每个教室 100 把椅子)。

每个小组只能分配到一个教室,即使它大于容量(即可能会出现溢出,学生站起来)

我需要一种算法来分配最少溢出和容量不足的教室。

当有大约 200 个小组时,进行这种分配的简单算法非常慢,其中大约一半的分配不到教室规模的 20%。

有什么想法可以让我至少找到一些好的起点来使这个算法快如闪电吗?

谢谢!

0 投票
4 回答
1973 浏览

c++ - Boost::Mutex & Malloc

我正在尝试在 C++ 中使用更快的内存分配器。由于许可/成本,我无法使用 Hoard。我在单线程设置中使用 NEDMalloc 并获得了出色的性能,但我想知道是否应该切换到其他东西——据我了解,NEDMalloc 只是基于 C 的 malloc() 和 free() 的替代品,不是基于 C++ 的 new & delete 运算符(我广泛使用)。

问题是我现在需要是线程安全的,所以我试图 malloc 一个引用计数的对象(以防止过度复制),但它也包含一个互斥指针。这样,如果您要删除最后一个副本,您首先需要锁定指针,然后释放对象,最后解锁并释放互斥锁。

但是,使用 malloc 创建 boost::mutex 似乎是不可能的,因为我无法将私有对象初始化为直接调用构造函数。

所以我遇到了这种奇怪的情况,我使用 new 分配锁,使用 nedmalloc 分配其他所有内容。但是当我分配大量内存时,我遇到了分配错误(当我切换到 malloc 而不是 nedmalloc 时消失了〜但性能很糟糕)。我的猜测是,这是由于内存碎片以及 nedmalloc 和 new 无法并排放置 nice 造成的。

必须有更好的解决方案。你有什么建议?

0 投票
4 回答
4098 浏览

c++ - C++中构造函数分配内存失败怎么办?

我刚刚遇到了一个类的构造函数需要分配内存的问题。于是我愉快地写了char *mem = static_cast<char*>(malloc(100*sizeof(*mem)));。但后来我突然意识到,如果出现错误,我无法返回错误代码(我的代码中没有使用异常)。我怎么解决这个问题?

我是否应该添加一个bool initialized成员,然后在我的课程之后,然后立即检查它,如:

谢谢,博达赛多。

0 投票
1 回答
171 浏览

cocoa - 处理临时字符串的更好方法是什么?

我有一种情况,我需要暂时使用一些字符串,但我已经阅读了很多相互矛盾的东西,以至于我对最好的处理方式有点困惑。

我需要在 if 结构中分配一些字符串,但在 if 结构之外使用它们,因此需要在 if 之外创建它们,我在想类似的事情:

我见过人们刚刚使用的例子:

创建字符串变量

谷歌的 Objective C 指南说它最好在创建时自动发布:

“创建新的临时对象时,在创建它们的同一行自动释放它们,而不是稍后在同一方法中单独释放”:

所以我不知道,哪个是最佳实践?

0 投票
6 回答
336 浏览

c++ - C++:“新”一个持续增长的集合意味着什么?

我是 C++ 新手。“新”系列究竟意味着什么?例如:

当你“新”一些东西时,你必须确切地知道你需要它有多大,对吧?那么当我使用赋值构造函数复制一个对象时,计算机如何知道应该在堆上分配多少内存呢?例如:

another_string_list 正在被复制到堆内存中我新的 UnicodeStringList 中,但我最初从未指定该堆内存应该有多大。而且编译器不知道 another_string_list 有多大,所以有多少内存进入堆?

我很困惑,希望我已经足够详细地说明我的问题,以便有人可以理解我,但我不确定。

请帮忙

谢谢,

朱利安

0 投票
6 回答
1614 浏览

c++ - 释放动态分配的内存

在 C++ 中,当您像这样在堆上创建一个新变量时:

你可以告诉 C++ 使用 delete 来回收内存,如下所示:

但是,当您的程序关闭时,它会自动释放新分配的内存吗?