草庐IT

heaps-algorithm

全部标签

algorithm - Redis:大型键集的高效键分片

我遇到了超出服务器RAM容量的问题。我需要减小数据库大小,以便仍然可以使用Redis。我的应用程序是一个巨大的键/值存储,其中键是用户给定的文本字符串(目录/文件路径)。这些值是指向我创建的对象的非常简单的指针。所以它是一个对象存储。问题是我有一个PB的对象,其中一个对象可能是100K字节。我实际上可以将平均对象限制为不小于1M字节,因此10^15/10^6=10^9个对象。因为每个对象都需要一个key,即10^9,或1Gkey。如果每个键/值对为100个字节,则RAM中有100GB。这几乎适合具有128GBRAM的服务器,但它并不是服务器中唯一发生的事情。如果可以的话,我想减少足迹。

algorithm - 用户匹配算法

所以这个问题我们有用户匹配到其他在线用户。然而,这不仅仅是一对一的比赛。为用户提供5个其他用户的选择,然后将其标记为已看到,并且当用户请求显示另外5个用户时不应再次显示。在此过程中可以有更多人上网。问题是,我想要一种方法让每个用户都显示在其他用户的选择中,使用Redis,但算法主要是我正在寻找的。我正在尝试以最快的方式实现这一点,如果可能的话使用redis,但如果需要的话我也可以调用数据库。我目前的解决方案如下,希望有人能从O(N)次调用中得到一些改进的技巧。因此每个用户都需要有一组已看到的user_id。我们可以有一个onlineusers的redis列表(队列)。我们一直从左侧弹出

algorithm - 使用 Redis 从有限范围内生成唯一 ID

我有一些数据库项目,除了它们的主键之外,还需要一个对于项目所属的组唯一的索引。我们称该属性为nbr,以及将项目组合在一起并定义唯一范围的属性nbr:s我们会调用group.这nbr必须在[1-N]范围内,并且当从外部源导入项目时可以设置。因为所有项目都必须有nbr,然后任务变成了如何跟踪使用了哪些值,以启用免费的nbr对于手动添加的新项目。我正在使用DynamoDB和Redis。我不能在nbr上建立DynamoDB索引.到目前为止,我的想法是使用Redis来跟踪哪些数字已用于特定组,以便对于Rediskey,例如-item-nbrs我可以存储所有用过的nbr:s并实现查找下一个空闲nb

algorithm - redis.h中的skiplistnode变量 "span"是什么意思?

在redis.h中,skipnode定义如下:typedefstructzskiplistNode{robj*obj;doublescore;structzskiplistNode*backward;structzskiplistLevel{structzskiplistNode*forward;unsignedintspan;}level[];}zskiplistNode;varspan是什么意思?这个var存储什么? 最佳答案 特定节点的span存储当前节点和当前级别的node->forward之间的节点数。span用于计算跳过

C++头文件 <algorithm>的 常用函数(详细)

1.sort()用于排序,默认从小到大排。2.max():两数最大3.min():两数最小4.abs():求一个数的绝对值 ( 与中的fbs(),不同,因abs()只用于整型变量)5.swap():交换x与y的值6.reverse():反转数组函数 (1)翻转整个数组  例:#include#includeusingnamespacestd;intmain(){   inta[5]={11,22,33,44,55};   reverse(a,a+5);   for(inti=0;i输出5544332211 (2)翻转部分数组 #include#includeusingnamespacestd;

algorithm - 如何计算两个列表的增量(插入/删除/移动索引)?

假设我有两个对象列表,它们具有唯一ID和一个确定它们顺序的属性,我如何才能有效地获取增量索引(哪些索引被插入,哪些被删除,哪些被移动)?输入示例:letbefore:[(id:String,timestamp:String)]=[("A","2015-06-04T12:38:09Z"),("B","2015-06-04T10:12:45Z"),("C","2015-06-04T08:39:55Z"),("D","2015-06-03T23:58:32Z"),("E","2015-06-01T00:05:51Z"),]letafter:[(id:String,timestamp:Stri

Google 的 'Encoded Polyline Algorithm' 的 C# 实现

有没有人有Google的EncodedPolylineAlgorithm的简洁而强大的实现?在C#中?我基本上想要实现这个签名:publicstringEncode(IEnumerablepoints); 最佳答案 这是我确定的实现方式:publicstaticstringEncode(IEnumerablepoints){varstr=newStringBuilder();varencodeDiff=(Action)(diff=>{intshifted=diff=0x20){str.Append((char)((0x20|(rem

c# - 为什么 "View Heap"结果与 Visual Studio 中的 'Process Memory Usage' 不匹配

我正在尝试使用VisualStudio来跟踪我的应用程序中的内存使用情况。在“诊断工具”窗口中,它显示我的应用程序正在使用423MB。谢谢,我转到“内存使用”和“ViewHeap”,当我单击快照时,我会得到一个显示对象大小的表格。但是当我把这些数字加起来时:=3317228+403764+354832+264984+244836+195748+144032+28840+16452+13920+13888+3428+2100+20=5004072=4.77MB我的问题是为什么这个数字4.77MB与我在“内存”图表上看到的423MB不匹配。我希望在左边的表格中看到423MB的去向。请告诉我

c# - float 解析 : Is there a Catch All algorithm?

多文化编程中有趣的部分之一是数字格式。美国人使用10,000.50德国人使用10.000,50法语使用10000,50我的第一种方法是获取字符串,向后解析它直到遇到分隔符并将其用作我的小数点分隔符。这有一个明显的缺陷:10.000会被解释为10。另一种方法:如果字符串包含2个不同的非数字字符,则使用最后一个作为小数点分隔符并丢弃其他字符。如果我只有一个,请检查它是否出现不止一次,如果出现则丢弃它。如果它只出现一次,请检查它后面是否有3位数字。如果是,则丢弃它,否则,将其用作小数点分隔符。显而易见的“最佳解决方案”是检测用户的文化或浏览器,但如果您的法国人使用的是en-USWindows

c# - 内存分配 : Stack vs Heap?

我对堆栈与堆之间的内存分配基础感到困惑。根据标准定义(每个人都这么说),所有值类型都将分配到堆栈,引用类型将分配到堆。现在考虑下面的例子:classMyClass{intmyInt=0;stringmyString="Something";}classProgram{staticvoidMain(string[]args){MyClassm=newMyClass();}}现在,内存分配将如何在C#中发生?MyClass(即m)的对象会不会被完全分配到Heap?也就是说,intmyInt和stringmyString都将进入堆?或者,对象会被分成两部分,分配到Stack和Heap的两个内