破渔网兜兜 发表于 2017-4-17 08:48:46

【2017-4-17】每天进步一点点

翻译原文:This consumption of memory is not the result of the queue's size but is a side effect of the queue's access procedure. (A small yet active queue can easily require more of a machine's memory resources than a large, inactive one.) One solution to this memory space problem might be to move the entries in a queue forward as the leading ones are removed, in the same manner as people waiting to buy theater tickets step forward each time a person has been served. However, this mass movement of data would be very inefficient. What we need is a way of confining the queue to one area of memory without being forced to perform major rearrangements of data.

翻译答案:存储器的消耗问题并不是因队列的大小而生的,其真正原因在于队列的实现问题。(一个小而动态变化的队列比一个大而保持不变的队列需要更多的机器存储资源。)解决存储器空间问题的一个可能方法是:当最前面的条目被移出时,前移队列中的其他条目,就好像人们在购买戏票时所采用的方法一样,每当一个人买到票后,就前移一人。然而这种方法在计算机中运行的效率很低,因为它将需要对数据进行大量的移动。

        翻译篇(每次翻译的量都不会很大,全部翻译才有奖励哦)




非计算机方向系列:读完一本书(这是一本经典书籍,里面的每一个单词都值得查阅)




        每日一句
You will find that it is necessary to let things go; simply for the reason that they are heavy.
你会明白,放手是必要的——原因很简单,它们太过沉重。 (刮刮乐,挂出大奖)

清风揽月shine 发表于 2017-4-17 11:57:42

你将会发现对于一些事情放手是必须的,因为它们承担的太过于沉重。

清风揽月shine 发表于 2017-4-17 15:40:37

一个普遍的做法是为队列留出一块内存,在块的一段启动队列,是队列移动到块的另一端。因此,当队列尾部到达块的末尾处,我们才开始插入额外的条目进入到块的原始末尾空缺处。同样的,当块中最后一个条目变成头并且被移除时,头指针将会调节返回到块的起始位置,等待其他条目的到来。在这种管理模式下,队列工作时只在本身的块中而不会贯穿到整个存储器中。

WeiChat阿威 发表于 2017-4-26 22:42:40

一个常规的解决办法是,讲队列置于一个内存模块旁边,队列由内存模块的末尾开始,讲队列从这一模块迁徙到另一个模块的末尾。当队列的末尾到达模块的末尾时,我们开始输入数据在模块的末尾段,此时模块是空闲的。同样的,当最后进入模块的最终成为了队列的起头,然后它被移除;顶端指针移到内存模块的起头,开始等待。在车个方法中,队列讲自己出于内存模块中的循环,而不是在内存中四处游荡。

很明显,他们企图夺回农庄。这个情况已经被预料到了,所有的准备都已经制备妥当。Snowball,在农庄屋子里找到了写凯撒大帝的书籍,从中学会了防御工事。他很快的下了命令,不一会儿,每一个动物都到了自己的岗位上。当人们仅仅靠近了农庄建筑,Snowball就开始了它的第一次攻击。鸽子们是第一梯队的,大概有三十五只,俯冲飞向人们的头顶,吸引人类的注意;当人类注意力都在鸽子身上时,鹅们快速冲出来,奋力啄击人类的腿部关节。然而,这个仅仅是小型的攻防战,目的是造成一些混乱,人类很快用棍棒压制了鹅的攻击。Snowball发起了第二轮进攻。Muriel,Benjamin和所有的羊们,由Snowball带头冲向人们,用角刺向人们,Benjamin转身,用它小小的蹄子攻击人类。然而,人们用 棍棒和厚实的靴子挡住了第二轮的进攻;Snowball发出尖叫,这时撤退的信号,所有的动物们通过大门回退到了园子中。


{:10_285:},这下赶又要花好多时间了。

joker11111 发表于 2017-5-3 07:35:30

本帖最后由 joker11111 于 2017-5-3 21:30 编辑

一个通用的解决方法是给队列分配一块内存区域,让队列从这块内存区域的一端到另一端进行插入移动。然后,当队尾到达内存的端点时,我们仅仅需要从这块内存的初始端点进行的插入,因为在这个时候,这个头端点一定是空的。也就是说,当这内存块的尾端开始被队头指针指向并要进行下一个元素的出队操作时,队头指针只需要调整指向内存块开始的端点,这儿也就是内存块遍历完后插入的元素。通过这种方法,队列会在它自己的内存块里追赶它自己循环,而不是在内存区域徘徊内存溢出。---这不是就循环队列的概念么,哈哈哈哈哈!

用来在计算机中控制队列的最一般的方法是为队列分配一块存储器,从存储块的末端开始存储队列,并且让队列向另一端增长。然而当队尾到达块的末端,即队列为空时,我们开始将新的条目反向于末端的方向插入。同样,当队列的最后一条成为队头并被移出时,调整头指针回到块的开端,同时在此等待。在此方法下,队列在一块区域内循环而不会出现内存溢出情况。

mgsky1 发表于 2017-7-14 08:23:08

一种普遍的解决方式是留出(set aside)一个区块给队列,从这一块区块的一个末端开始,让这个队列向着区块的另外一端移动(migrate)。然后,当队列的尾部达到区块末端时,我们仅仅(merely)将额外的数据插回到原始区块的末端,此时,这一块空间是空的。相似的,当在区块中的最后一个实体变为队头的,并且被移除的时候,头指针会调整至区块头,那里存放着其他元素。到此,依据这种方式,队列在区块中追寻(chase)自身,而不是在内存中游走。

zlj19931010 发表于 2018-1-4 17:34:40

一个通用的解决方案是留出一块队列所需的内存块,在内存块的一端开始队列,让队列往内存块的另一端移动。
当队尾到达内存块末端的时候,我们只从开始端点的空位置向后插入额外的数据(也就是说会将尾指针调整到开端吗?)。
相同的,当内存块中的最后一个数据变成队首然后又被删除了,头指针调整回内存块的开端,在这个时候,等待。
在这种内存管理方式中,队列的首尾指针会在内存块中循环追逐而不是游历整个内存空间。

动物农场:
这件事情早就在于其之内了,并且做了充足的准备。snowball从一本名为julius caesar·s战役的老书中学到了抵御敌人的方法,
这本书是在农场房子里面找到的。
他快速下达了他的命令,所有动物在2几分钟内就到位了。
当人们冲到农产的时候,snowball发起了他的第一次防御。
所有的35只鸽子在人们的上空飞来飞去,从半空中吸引人们的注意力;
当人们在处理鸽子的时候,藏在篱笆后面的鹅冲过去狠狠地啄人们的小腿。
不管怎么说,这只是一个小把戏,为了是能制造一点混乱,人们拿手中的棒子很轻松地就把鹅赶跑了。
接着snowball发起了他的第二轮攻击。muriel。benjamin和所有的羊由snowball带头从四面八方冲向人们,刺和撞他们。
这个时候,本杰明转过身来,用它的小蹄子猛击他们。
但是这一次,这些人穿着的靴子和手里的棒子对动物来说太厉害了;突然,snowball发出了一声尖叫,是撤退的信号,
所有动物转过身,通过大门跑到了院子。

You will find that it is necessary to let things go; simply for the reason that they are heavy.
你会发现不去想一些事情是有必要的,简单来说是因为他们太繁重了。

13752836504 发表于 2019-11-18 09:28:42

一种常见的解决方案是给队列预留内存块,队列从块的一端开始,然后让队列向块的另一端
移动。然后,当队列的尾端到达块的一端,我们只开始在块的原始末梢插入额外的条目,这
个操作是在空闲时间里执行。同样的,当最后一个条目在块中最终变成队列的头部并且被移
除,同一时间等待头部指针调整回块开始的其他条目的地方。用这种方法,队列在块内自行
搜索,而不是在内存中徘徊。
页: [1]
查看完整版本: 【2017-4-17】每天进步一点点