问题列表 - 第29165页

正确的数据结构用于(此特定的)过期缓存?

我需要从一个非常大,高度相互关联的数据集中读取数据,这些数据相当局限,而且读取也相当昂贵。特别:

  1. 数据集的大小为2gig-30gigs,因此我必须将文件的各个部分映射到内存中才能读取。与我在算法中所做的其余工作相比,这是非常昂贵的。通过分析,我发现大约60%的时间都花在读取内存上,因此这是开始优化的正确位置。
  2. 当处理该数据集的一部分时,我必须遵循其内部的链接(将其想象为类似于链表),尽管不能保证这些读取接近顺序,但它们的位置相当合理。这意味着:
  3. 例如,假设我们一次处理2兆的内存。如果您将2兆的数据读取到内存中,则我随后必须进行的读取操作中大约有40%将位于相同的2兆的内存中。大约20%的读取将是其余数据中的纯随机访问,而另外40%的链接很有可能链接回到指向该段的2meg段。

从对问题的了解和剖析中,我相信向程序引入缓存将大有帮助。我想要做的是创建一个缓存,其中包含N个X内存块的N个块(N和X是可配置的,因此我可以对其进行调整),在必须映射另一部分内存之前,我首先要检查它。此外,缓存中存储的内容越长,我们在短期内请求该内存的可能性就越小,因此最早的数据将需要过期。

毕竟,我的问题很简单: 哪种数据结构最适合实现这种性质的缓存?

我需要非常快速的查找以查看给定地址是否在缓存中。对于缓存的每个“未命中”,我都希望使它的最旧成员过期,并添加一个新成员。但是,我计划尝试对其进行调整(通过更改缓存的数量),以使70%或更多的读取被命中。

我当前的想法是使用AVL树(用于搜索/插入/删除的LOG2 n)将是最安全的(不退化的情况)。我的另一个选择是稀疏哈希表,以便在最佳情况下查找将为O(1)。从理论上讲,它可以退化为O(n),但实际上,我可以将碰撞保持在较低水平。这里的问题是查找和删除哈希表中最旧的条目需要多长时间。

是否有人对这里最好的数据结构有什么想法或建议,为什么?

c++ algorithm caching

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

常量和 mysql,最佳实践

我目前有一个定义的常量列表和一个函数,该函数对每个拉取的 MySQL 字符串进行正则表达式,并查找 CLIENT_NAME、LOCAL_API_ADDRESS 之类的内容并自动更改它。

// several fields
define ('CLIENT_NAME', '...');
define ('LOCAL_API_ADDRESS', '...');
...
Run Code Online (Sandbox Code Playgroud)

问题是,随着我的应用程序变得越来越大,我觉得这非常低效并且必然会出现松散的字符串(忘记在这里或那里使用正则表达式)。

大家是怎么应对的?

php regex mysql constants

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

R中存在哪些技术可视化"距离矩阵"?

我想在我写的文章中提出一个距离矩阵,我正在为它寻找良好的可视化.

到目前为止,我遇到了气球图(我在这里使用它,但我不认为它会在这种情况下起作用),热图(这是一个很好的例子,但它们不允许在表中显示数字,正确我,如果我错了.也许一半的颜色和一半的数字将是很酷的)和最后的相关椭圆图(这里是一些代码和示例 - 使用一个形状很酷,但我不知道如何使用它这里).

还有各种聚类方法,但它们会聚合数据(这不是我想要的),而我想要的是呈现所有数据.

示例数据:

nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv")
dist(nba[1:20, -1], )
Run Code Online (Sandbox Code Playgroud)

我很开心.

visualization r data-visualization matrix

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

[...] Async和Begin [...] .net异步API之间的区别

任何人都可以解释一下,在.NET 3.5中,Begin [...]/End [...]异步API模式和后来的异步模式有什么区别?

  • 为什么后来创造了?
  • 为什么人们更喜欢一种模式呢?

例如,Socket.BeginAccept()和Socket.AcceptAsync().

.net sockets asynchronous .net-3.5

16
推荐指数
2
解决办法
3943
查看次数

SQL子查询 - 有更好的方法

这是一个SQL效率问题.

不久前,我不得不编写一系列查询来从ERP系统中提取数据.其中大部分都很简单,但其中一个导致了一个相当低效的查询,并且一直困扰着我,因为必须有更好的方法.

问题并不复杂.您有一系列销售数据.在每一行中,您都有数量,销售价格和销售员代码以及其他信息.

佣金是基于阶梯式滑动比例支付的.他们卖的越多,佣金越多.步数可能是1000,10000,10000 $等等.现实世界的问题更复杂,但就其本质而言.

我发现这样做的唯一方法是做这样的事情(显然不是真正的查询)

select qty, price, salesman,
  (select top 1 percentage from comissions 
    where comisiones.salesman = saleslines.salesman 
    and saleslines.qty > comisiones.qty
    order by comissiones.qty desc
  ) percentage
from saleslines 
Run Code Online (Sandbox Code Playgroud)

这导致了正确的佣金,但是非常沉重.

有没有更好的方法呢?我不是在找人重写我的sql,更多的是"看看foobar查询",我可以从那里拿走它.

可以为不同的销售人员,物品和客户甚至销售日期指定现实生活佣金结构.它也会不时变化,所以一切都必须由表中的数据驱动...即我不能在sql中放置固定范围.当前查询返回大约3-400000行,大约需要20-30秒.幸运的是它只用了一个月,但缓慢有点烦我.

这是在mssql上.

伊恩

编辑:

我应该从一开始就给出一个更复杂的例子.我现在意识到,我最初的例子是遗漏了复杂性的一些基本要素,向所有人道歉.

这可能更好地捕获它

select client-code, product, product-family, qty, price, discount, salesman,
    (select top 1 percentage from comissions 
        where comisiones.salesman = saleslines.salesman 
        and saleslines.qty > comisiones.qty
        and [
           a collection of conditions which may or may not apply:
           Exclude rows if the salesman has …
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance

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

Qt多键组合事件

我正在使用Qt 4.6,我想对正在按下的多键组合(例如Key_Q + Key_W)做出反应.因此,当您按住一个键组合时,应始终调用该事件,就像处理单个键事件一样.我尝试使用QShortcuts并为它们启用自动重复,但这不起作用:

keyCombos_.push_back(new QShortcut(QKeySequence(Qt::Key_W, Qt::Key_D), this));
connect(keyCombos_[0], SIGNAL(activated()), SLOT(keySequenceEvent_WD()));
setShortcutAutoRepeat(keyCombos_[0]->id(), true);
Run Code Online (Sandbox Code Playgroud)

当使用这种方法时,我也遇到了一个问题,即我无法捕获单个Key_W(或者密钥序列中的第一个键).

谢谢,托马斯

c++ events qt key

5
推荐指数
2
解决办法
5148
查看次数

YouTube:获取youtube标题+图片+描述,如facebook

当你在"你现在在做什么?"中粘贴youtube链接时,他们如何做到这一点?然后出现在链接,youtube图片+标题+描述?他们是怎么做到的,这很难做到吗?这样做的例子很棒!

javascript

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

我在哪里可以获得一组好的IDE图标?

我正在开发一个小型IDE,我想知道在哪里可以找到一组IDE图标.一些谷歌搜索没有提出任何有用的东西.我想这可能是因为'ide icon set'不会获得很多购买(与更通用的图标相比).

无论如何,有谁知道我可以在哪里得到一些这样的图标?某些图标,如保存,加载等,我可以找到自己.我正在寻找更多与调试相关的图标.

我感兴趣的图标包括:

  • 开始调试
  • 跳过,走进等等
  • 运行/调试
  • 查看反汇编
  • 等等

我想为主工具栏添加一些较大的工具栏,还有一些迷你版可以放在下拉菜单中的重要操作旁边.

我很可能不会从我简陋的IDE中获利,但在我"商业化"的情况下,我希望图标的许可证不会限制我这样做.但是,我在about菜单和代码中的归属没有问题.

最后,如果商业图标相当便宜,它们根本不是禁止的,但我更喜欢免费的:)

谢谢!


更新:100代表赏金


是一组示例图标,如果它包含我需要的实际图标,那将是完美的(大小/样式).事实上,我可能会使用其中一些图标,例如剪切,粘贴和保存图标.我也可以使用'play'和'record'按钮分别启动和创建断点.

我特别想找一步/跑到光标的图标.首选图标大小:22x22像素.


编辑: Netbeans图标怎么样?它们是完美的尺寸,看起来非常漂亮,但我似乎无法找到关于我是否可以使用它们的任何信息.我意识到netbeans是开源的,但我无法弄清楚我是否可以使用这些图标.

编辑:事实证明,使用NetBeans图标很好,所以我将继续这样做.感谢大家!

icons

14
推荐指数
4
解决办法
6743
查看次数

自定义迭代器:如何跟踪它?

我有这种情况:

我有一个跟踪指针数组的类.我构建了一个循环遍历此数组的自定义迭代器.

我的问题是如何使其线程安全,特别是在递增/递减时?

以下是我所拥有的相关部分的草稿:

typedef fruit * iterator;

class fruits
{
  private:
    fruit ** flist;
    int n;     //keeps track of position in flist
    int count; //number of fruits

  public:
    iterator begin() {n=0; return fruit[n];}
    iterator end() {n=count; return fruit[n];}

    iterator operator++ ()
    {
      return fruit[++n];
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到的问题是,如果程序的两个部分创建迭代器,则事情将无法工作.C++ STL如何处理它?

更新:我发现了我的方式错误.迭代器应该跟踪它自己的位置.为此,我创建了一个嵌入在我的主类中的迭代器类.生活现在很好.

c++ templates iterator stl

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

我在哪里可以找到这个unicode角色?

我正在寻找一个看起来像«或»但旋转90º和270º的unicode字符,用于在GUI中表示可以垂直拖动的东西.

有人知道这样的角色吗?

unicode user-interface

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