首頁>科技>

在面相學中,人們常用天庭飽滿,地閣方圓來形容人有貴人之相。人們對於圓有著特殊的喜好,人們都喜歡月圓,都喜歡滿月。在計算機程式設計中,圓也有著特殊的用途,它的存在為一些複雜問題提供了圓滿的解決方案,接下來我們就來談一談計算機程式設計中圓的常用用途。

環形佇列

佇列是我們常見的資料結構,先進先出是它最大的特點,可以使用陣列來實現佇列,也可以使用連結串列來實現佇列,它們各自有自己的有缺點。

我們這裡說的環形佇列也是滿足先進先出的特點,不過與普通佇列不同的是,它會構成一個環,也就是佇列的頭部和尾部會連線起來,這樣的好處就是當從佇列頭部移除元素的時候,可以不用調整佇列就可以插入新的元素,因為佇列的頭部採用的是一個指標標記,每次只要把頭指標指向的元素移除佇列即可。

碰撞檢測

在遊戲中碰撞檢測是非常重要的技術點,我們通常使用矩形或者圓形來包裹不規則物體,然後透過包裹的規則矩形或者圓形來進行碰撞的檢測。

當使用圓形進行碰撞檢測的時候,我們透過比較兩個圓心的距離來判斷物體是否碰撞,如果圓心的距離小於兩個圓的半徑之和,那麼我們就認為發生了碰撞。

而在碰撞檢測時候,更多地是使用圓形和矩形的結合進行判斷,透過找出矩形上離圓心最近的點,然後透過判斷該點與圓心的距離是否小於圓的半徑,若小於則為碰撞。

一致性HASH

hash演算法是我們平時接觸比較多的演算法,而一致性hash演算法是什麼呢?

我們知道hash演算法就是將不同的輸入經過運算對映到固定的長度位置,而一致性hash是對對映的位置進行了限制,原來的普通hash演算法對映的一個線段區間,而一致性hash對映的值是在一個圓環上,但是隻有這些還不夠,它還要求在查詢計算hash值的時候,採用的是順時針就近原則。也就是返回的是最近節點的hash值。

一致性hash的最大好處就是增加了容錯性和可擴充套件性,在分散式系統中,我們可以將多個機器部署到hash環上,然後將資料經過hash儲存到相應的機器上,在這種情況下即使一個機器宕機,不會影響過多的節點資料重新分配,只會將失效的節點資料進行轉移,同樣,在新增節點的時候,也只是很小地影響一部分資料。

總結

地球是圓的,太陽是圓的,或者說它們近似是圓的,也就是說它們還不夠完美。對於圓的理解人們只是看到了冰山一角,關於圓還有更多的神秘等待我們去挖掘。

9
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 郎春濤:早期網際網路思維應用,還記得多年前到處貼的小廣告嗎?