本公開涉及計算機應(yīng)用
技術(shù)領(lǐng)域:
,尤其涉及一種視野列表的更新方法及裝置。
背景技術(shù):
:對于地圖類應(yīng)用程序,服務(wù)器通常會為每一個用戶維護(hù)對應(yīng)的視野列表,以通過視野列表指示每一個用戶在地圖中可見的對象。該對象可以是用戶,還可以是物品。以對象為用戶為例,對于用戶a而言,用戶a的視野列表中包含了其他10個用戶,則表示地圖中該其他10個用戶是用戶a可見的。應(yīng)當(dāng)理解,用戶在地圖中的位置經(jīng)常發(fā)生變化,相應(yīng)地,用戶可見的對象也將隨之變化。例如,某一時刻用戶b被用戶a可見,而下一時刻用戶b離開,而導(dǎo)致用戶a看不見用戶b,由此,用戶的視野列表將需要頻繁地更新。目前,無論是采用雙向鏈表方法對視野列表進(jìn)行的更新,還是采用平衡二叉樹方法對視野列表進(jìn)行的更新,視野列表更新的時間復(fù)雜度均為o(logn),即更新的時間復(fù)雜度將隨著用戶可見的對象數(shù)量的增長而增長,這必將導(dǎo)致服務(wù)器的壓力遠(yuǎn)遠(yuǎn)超過其所能承受的范圍。技術(shù)實現(xiàn)要素:基于此,為了解決上述技術(shù)問題,本公開的一個目的在于提供一種視野列表的更新方法及裝置。其中,本公開所采用的技術(shù)方案為:一種視野列表的更新方法,包括:當(dāng)用戶的視野列表需要更新時,通過地圖中進(jìn)行的視野搜索獲取待更新對象的對象信息;獲取預(yù)先存儲的索引信息,所述索引信息用于表示所述視野列表中位置的索引;在所述視野列表中根據(jù)獲取到的索引信息查找對應(yīng)的位置;通過分配或者回收查找得到的位置,對所述待更新對象的對象信息進(jìn)行相應(yīng)的更新處理。一種視野列表的更新裝置,包括:對象信息獲取模塊,用于當(dāng)用戶的視野列表需要更新時,通過地圖中進(jìn)行的視野搜索獲取待更新對象的對象信息;索引信息獲取模塊,用于獲取預(yù)先存儲的索引信息,所述索引信息用于表示所述視野列表中位置的索引;位置查找模塊,用于在所述視野列表中根據(jù)獲取到的索引信息查找對應(yīng)的位置;更新處理模塊,用于通過分配或者回收查找得到的位置,對所述待更新對象的對象信息進(jìn)行相應(yīng)的更新處理。與現(xiàn)有技術(shù)相比,本公開具有以下有益效果:在用戶的視野列表需要更新時,利用預(yù)先存儲的索引信息,能夠快速地查找到視野列表中的對應(yīng)位置,進(jìn)而通過對該位置進(jìn)行分配或者回收實現(xiàn)視野列表的更新,大大加快了視野列表的更新速度,并使得視野列表更新的時間復(fù)雜度降低至o(1),即無論對象數(shù)量是否增長均為一常數(shù),從而有效地減輕了服務(wù)器的壓力。應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。附圖說明此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并于說明書一起用于解釋本公開的原理。圖1是根據(jù)本公開所涉及的實施環(huán)境的示意圖;圖2是根據(jù)一示例性實施例示出的一種服務(wù)器的硬件結(jié)構(gòu)框圖;圖3是根據(jù)一示例性實施例示出的一種視野列表的更新方法的流程圖;圖4是圖3對應(yīng)實施例所涉及的九宮格的示意圖;圖5是根據(jù)一示例性實施例示出的另一種視野列表的更新方法的流程圖;圖6是根據(jù)一示例性實施例示出的另一種視野列表的更新方法的流程圖;圖7是圖3對應(yīng)實施例中步驟370在一個實施例的流程圖;圖8是圖3對應(yīng)實施例中步驟370在另一個實施例的流程圖;圖9是圖8對應(yīng)實施例中步驟370在另一個實施例的流程圖;圖10是一應(yīng)用場景中一種視野列表的更新方法的具體實現(xiàn)示意圖;圖11是根據(jù)一示例性實施例示出的一種視野列表的更新裝置的框圖;圖12是根據(jù)一示例性實施例示出的另一種視野列表的更新裝置的框圖;圖13是根據(jù)一示例性實施例示出的一種視野列表的更新裝置的框圖;圖14是圖11對應(yīng)實施例中更新處理模塊770在一個實施例的框圖;圖15是圖11對應(yīng)實施例中更新處理模塊770在另一個實施例的框圖;圖16是圖15對應(yīng)實施例中更新處理模塊770在另一個實施例的框圖。通過上述附圖,已示出本公開明確的實施例,后文中將有更詳細(xì)的描述,這些附圖和文字描述并不是為了通過任何方式限制本公開構(gòu)思的范圍,而是通過參考特定實施例為本領(lǐng)域技術(shù)人員說明本公開的概念。具體實施方式這里將詳細(xì)地對示例性實施例執(zhí)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。請參閱圖1,圖1為一種視野列表的更新方法所涉及的實施環(huán)境的示意圖。該實施環(huán)境包括終端100和服務(wù)器200。其中,終端100可以是智能手機、平板電腦、掌上電腦、筆記本電腦、計算機或者其它可供地圖類應(yīng)用程序運行的電子設(shè)備,在此并未加以限定。對于終端100而言,實時上報用戶在地圖中的位置,以供服務(wù)器200中生成用戶的視野列表以及判斷用戶的視野列表是否需要更新。對于服務(wù)器200而言,在用戶的視野列表需要更新時,通過地圖中進(jìn)行的視野搜索獲取待更新對象的對象信息,并在視野列表中根據(jù)預(yù)先存儲的索引信息進(jìn)行對應(yīng)位置的查找,通過分配或者回收查找得到的位置對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理,以此完成視野列表的更新。由于索引信息用于表示視野列表中位置的索引,使得視野列表中的位置能夠被快速地查找到,無論視野列表中對象數(shù)量是否增長,視野列表更新的時間復(fù)雜度均為o(1),即一常數(shù),以此大大降低了服務(wù)器的壓力。請參閱圖2,圖2是根據(jù)一示例性實施例示出的一種服務(wù)器200的硬件結(jié)構(gòu)框圖。該硬件結(jié)構(gòu)只是一個適用于本公開的示例,不能認(rèn)為是提供了對本公開的使用范圍的任何限制,也不能解釋為本公開需要依賴于或者必須具有圖2中示出的示例性的服務(wù)器200中的一個或者多個部件。該服務(wù)器200可因配置或者性能的不同而產(chǎn)生較大的差異,如圖2所示,服務(wù)器200包括:電源210、接口230、至少一存儲介質(zhì)250、以及至少一中央處理器(cpu,centralprocessingunits)270??梢岳斫猓瑘D2所示的結(jié)構(gòu)僅為示意,服務(wù)器200還可以包括比圖2中所示更多或著更少的部件,或者具有與圖2所示不同的部件。其中,電源210用于為服務(wù)器200上的各硬件設(shè)備提供工作電壓。接口230包括至少一有線或無線網(wǎng)絡(luò)接口231、至少一串并轉(zhuǎn)換接口233、至少一輸入輸出接口235以及至少一usb接口237等,用于與外部設(shè)備通信。存儲介質(zhì)250作為資源存儲的載體,可以是隨機存儲介質(zhì)、磁盤或者光盤等,其上所存儲的資源包括操作系統(tǒng)251、應(yīng)用程序253及數(shù)據(jù)255等,存儲方式可以是短暫存儲或者永久存儲。其中,操作系統(tǒng)251用于管理與控制服務(wù)器200上的各硬件設(shè)備以及應(yīng)用程序253,以實現(xiàn)中央處理器270對海量數(shù)據(jù)255的計算與處理,其可以是windowsservertm、macosxtm、unixtm、linuxtm、freebsdtm等。應(yīng)用程序253是基于操作系統(tǒng)251之上完成至少一項特定工作的計算機程序,其可以包括至少一模塊(圖示未示出),每個模塊都可以分別包含有對服務(wù)器200的一系列操作指令。數(shù)據(jù)255可以是存儲于磁盤中的照片、圖片等等。中央處理器270可以包括一個或多個以上的處理器,并設(shè)置為通過總線與存儲介質(zhì)250通信,用于運算與處理存儲介質(zhì)250中的海量數(shù)據(jù)255。如上面所詳細(xì)描述的,適用本公開的服務(wù)器200將對用戶的視野列表進(jìn)行更新,即通過中央處理器270讀取存儲介質(zhì)250中存儲的一系列操作指令的形式來根據(jù)預(yù)先存儲的索引信息,分配或者回收視野列表中該索引信息對應(yīng)的位置,對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理,以此更新用戶的視野列表。此外,通過硬件電路或者硬件電路結(jié)合軟件指令也能同樣實現(xiàn)本公開,因此,實現(xiàn)本公開并不限于任何特定硬件電路、軟件以及兩者的組合。請參閱圖3,在一示例性實施例中,一種視野列表的更新方法適用于圖1所示實施環(huán)境的服務(wù)器200,該種視野列表的更新方法可以由服務(wù)器200執(zhí)行,可以包括以下步驟:步驟310,當(dāng)用戶的視野列表需要更新時,通過地圖中進(jìn)行的視野搜索獲取待更新對象的對象信息。地圖類應(yīng)用程序是指基于地圖來為用戶提供相關(guān)服務(wù)的應(yīng)用程序,例如,相關(guān)服務(wù)包括瀏覽地圖、搜索地圖中的位置、查看地圖中用戶周邊信息等等。當(dāng)?shù)貓D類應(yīng)用程序運行于用戶所在終端,用戶可以通過賬戶注冊的形式獲取地圖類應(yīng)用程序所提供的各種服務(wù)。為了便于注冊用戶之間能夠相互聯(lián)系,服務(wù)器通常會為每一個用戶存儲對應(yīng)的用戶列表,該用戶列表中包含了可供注冊用戶聯(lián)系的用戶??梢岳斫猓L問地圖類應(yīng)用程序的用戶不止一個,而是海量的,因此,為了減輕服務(wù)器的存儲壓力,同時也是為了提高用戶的訪問體驗,用戶列表中將僅包含地圖中用戶的視野范圍內(nèi)可見的用戶,即用戶的視野列表。隨著用戶需求的多元化,根據(jù)不同的應(yīng)用場景,用戶的視野列表中包含的不僅僅局限于用戶,還可以是物品,或者其他地圖中顯示的對象。例如,在虛擬交互場景中,視野列表中既可以包含游戲玩家,還可以包含掉落的玩家裝備等等,又或者,在地圖導(dǎo)航場景中,視野列表中還可以包含車輛、車主攜帶的通信設(shè)備等等。基于運行在用戶所在終端的地圖類應(yīng)用程序,用戶的視野范圍是指終端中所能顯示的地圖中的場景范圍,例如,終端配置的顯示屏的分辨率為1024*768,則終端中所能顯示的地圖不超過1024*768像素,相應(yīng)地,用戶的視野范圍不超過1024*768像素。以對象為用戶為例,對于用戶a而言,用戶a的視野列表中包含了其他10個用戶,則表示該其他10個用戶是在用戶a的視野范圍內(nèi)可見的。對于終端而言,則是將該其他10個用戶顯示在終端中所能顯示的地圖中。進(jìn)一步地,每一個對象在地圖中的顯示均是通過該每一個對象的對象信息進(jìn)行標(biāo)識的。例如,對象信息可以是用戶的注冊信息,例如用戶名,或者,對象信息還可以是設(shè)備識別碼等等。相應(yīng)地,地圖中將通過顯示用戶名或者設(shè)備識別碼來唯一地標(biāo)識對象。更進(jìn)一步地,用戶的視野列表用于存儲地圖中用戶的視野范圍內(nèi)可見對象的對象信息。其中,視野列表中對象信息的存儲方式可以是數(shù)組的形式,也可以是存儲器的形式,在此并未加以限定。當(dāng)用戶的視野列表需要更新,即表示用戶的視野范圍內(nèi)可見的對象發(fā)生了變化,要么是有新進(jìn)入用戶視野范圍內(nèi)的新增對象,要么是有離開用戶視野范圍內(nèi)的離開對象?;诖耍瑸榱藢τ脩舻囊曇傲斜磉M(jìn)行更新,需要獲取待更新對象的對象信息。其中,待更新對象包括新增對象和離開對象。本實施例中,待更新對象的對象信息是通過地圖中進(jìn)行的視野搜索實現(xiàn)的。如圖4所示,以用戶的視野范圍為九宮格為例,對地圖中進(jìn)行的視野搜索過程加以描述。地圖中,當(dāng)用戶從位置a移動至位置b,用戶的視野范圍也隨之發(fā)生了變化,即最右邊的三個小格(如圖中虛線所示)將取代最左邊的三個小格,重新構(gòu)成九宮格。此時,通過地圖中進(jìn)行的視野搜索,判定位于最左邊的三個小格中的對象離開了用戶的視野范圍,則該些對象的對象信息為離開對象的對象信息,相對的,判定位于最右邊的三個小格中的對象新進(jìn)入用戶的視野范圍,則該些對象的對象信息為新增對象的對象信息。在獲取到待更新對象的對象信息之后,后續(xù)便可對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理。即,將新增對象的對象信息存儲至視野列表中某一位置,將離開對象的對象信息由視野列表中某一位置刪除。值得一提的是,視野具有對稱性,例如,服務(wù)器更新用戶a的視野列表時,將用戶b新增或者刪除,同時,也對用戶b的視野列表進(jìn)行更新,將用戶a新增或者刪除。又例如,在虛擬交互場景中,服務(wù)器更新游戲玩家c的視野列表時,將游戲玩家c拾起的玩家裝備e新增至視野列表中,則對于其他游戲玩家而言,該玩家裝備e已不屬于掉落的玩家裝備,將相應(yīng)地從其他游戲玩家的視野列表中刪除。由此,本實施例中,在進(jìn)行視野搜索的時候,并未考慮中間六個小格內(nèi)對象的變化,避免視野列表的重復(fù)更新,以此減輕服務(wù)器的壓力。步驟330,獲取預(yù)先存儲的索引信息。如上所述,對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理即為:將新增對象的對象信息存儲至視野列表中某一位置中,將離開對象的對象信息由視野列表中某一位置刪除。換而言之,欲對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理,服務(wù)器需要獲知用戶的視野列表中哪個位置可以用于存儲新增對象的對象信息,以及哪個位置中存儲了離開對象的對象信息。本實施例中,視野列表中位置的索引將通過預(yù)先存儲形成索引信息。即,索引信息用于表示視野列表中位置的索引。例如,視野列表中所有位置的索引都可以存儲至存儲器,即存儲器中存儲的數(shù)據(jù)便是索引信息。又或者,若視野列表中的位置被分配給某個用戶,則該視野列表中的該位置的索引還可以存儲至該某個用戶的用戶信息中,以此形成的索引信息即表示該某個用戶的用戶信息存儲在視野列表中位置的索引。相應(yīng)地,由預(yù)先存儲的索引信息中便可獲取到索引信息,以使服務(wù)器獲知與更新相關(guān)的視野列表中的位置,進(jìn)而對該位置進(jìn)行分配或者回收。步驟350,在視野列表中根據(jù)獲取到的索引信息查找對應(yīng)的位置。由于索引信息用于表示視野列表中位置的索引,為此,在得到索引信息之后,便可按照該索引信息所表示的視野列表中位置的索引,查找得到視野列表中的位置,進(jìn)而使得服務(wù)器獲知與更新相關(guān)的該位置,即該位置可以被用于存儲新增對象的對象信息,或者,該位置中存儲了離開對象的對象信息。步驟370,通過分配或者回收查找得到的位置,對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理。在查找得到位置之后,服務(wù)器便可對該位置進(jìn)行分配或者回收,即分配該位置給新增對象,以將新增對象的對象信息存儲至該位置,或者,將該位置回收,以刪除該位置中存儲的離開對象的對象信息,以此完成對待更新對象的對象信息進(jìn)行的相應(yīng)更新處理。通過如上所述的過程,實現(xiàn)了根據(jù)預(yù)先存儲的索引信息快速查找視野列表中的位置,大大加快了視野列表的更新速度,并使得視野列表更新的時間復(fù)雜度降低至o(1),顯著減輕了服務(wù)器的壓力。請參閱圖5,在一示例性實施例中,步驟310之前,如上所述的方法還可以包括以下步驟:步驟410,獲取用戶對應(yīng)的位置消息。如前所述,用戶的視野列表需要頻繁地更新,是由于用戶在地圖中的位置會經(jīng)常地發(fā)生變化,即用戶移動了其在地圖中的位置,使得用戶可見的對象也將隨之變化,例如,某一時刻用戶b對用戶a可見,而下一時刻用戶a又看不見用戶b了。由此,為了后續(xù)對用戶的視野列表進(jìn)行更新,需要得到用戶在地圖中的位置。本實施例中,用戶在地圖中的位置是通過位置消息由用戶所在的終端上報至服務(wù)器中的。即,位置消息包含地圖中用戶的位置。相對于服務(wù)器而言,在接收到用戶所在終端上報的位置消息之后,即可獲知地圖中用戶的位置,進(jìn)而根據(jù)該用戶的位置是否發(fā)生了變化進(jìn)行是否更新用戶視野列表的判斷。步驟430,根據(jù)地圖中的預(yù)設(shè)區(qū)域判斷用戶的位置是否離開了預(yù)設(shè)區(qū)域??梢岳斫猓绻侵灰脩粢苿恿似湓诘貓D中的位置就更新用戶的視野列表,則視野列表的更新頻率勢必過于頻繁,而不利于減輕服務(wù)器的壓力。為此,本實施例中,預(yù)先將地圖劃分成若干大小相等的預(yù)設(shè)區(qū)域,以根據(jù)該預(yù)設(shè)區(qū)域和用戶的位置,判斷是否更新用戶的視野列表。具體而言,當(dāng)用戶的位置離開了當(dāng)前所在的預(yù)設(shè)區(qū)域,而移動至區(qū)別于當(dāng)前所在的預(yù)設(shè)區(qū)域的其他任何預(yù)設(shè)區(qū)域時,用戶可見的對象將發(fā)生變化,此時,即判定用戶的視野列表需要進(jìn)行更新。相應(yīng)地,在用戶的視野列表需要進(jìn)行更新時,服務(wù)器將在地圖中進(jìn)行視野搜索,以此獲知哪些用戶可見的對象發(fā)生了變化,進(jìn)而對用戶的視野列表進(jìn)行更新。進(jìn)一步地,為了控制視野列表的更新頻率,預(yù)設(shè)區(qū)域的劃分可以靈活地調(diào)整。例如,把1024*1024像素的地圖劃分成4096個16*16像素的預(yù)設(shè)區(qū)域,只有用戶的位置越過了當(dāng)前所在的16*16像素的預(yù)設(shè)區(qū)域,才進(jìn)行視野列表的更新。在一示例性實施例中,待更新對象包括新增對象。該新增對象指的是新進(jìn)入用戶視野范圍內(nèi)的對象。相應(yīng)地,步驟330可以包括以下步驟:通過預(yù)先設(shè)置的輔助更新數(shù)組的頭指針訪問輔助更新數(shù)組中的數(shù)組元素,得到頭指針指向的數(shù)組元素中的索引信息。本實施例中,索引信息作為數(shù)組元素被預(yù)先存儲在輔助更新數(shù)組中。同時,為該輔助更新數(shù)組設(shè)置可供訪問的頭指針,以通過頭指針對輔助更新數(shù)組中的索引信息進(jìn)行訪問,即通過頭指針訪問輔助更新數(shù)組中的數(shù)組元素,便可得到頭指針指向的索引信息。進(jìn)一步地,頭指針?biāo)赶虻乃饕畔⑴c位置分配相關(guān),即頭指針指向的索引信息用于表示視野列表中待分配給新增對象的位置的索引。通過如此設(shè)置,實現(xiàn)了待分配位置的快速查找,即該待分配位置的索引是通過頭指針指向的索引信息表示的,從而有利于加快視野列表更新的速度,有利于降低視野列表的更新復(fù)雜度,減輕服務(wù)器的壓力。請參閱圖6,在一示例性實施例中,步驟370之前,如上所述的方法還可以包括以下步驟:步驟510,根據(jù)訪問得到的索引信息由輔助更新數(shù)組中獲取對應(yīng)的分配信息??梢岳斫猓谝曇傲斜碇懈鶕?jù)索引信息查找得到對應(yīng)的位置之后,該位置可能沒有存儲任何對象的對象信息,也可能已經(jīng)存儲了某個對象的對象信息。如果將新增對象的對象信息直接存儲至該位置,則可能導(dǎo)致之前存儲的某個對象的對象信息被覆蓋,而造成視野列表錯誤的更新。為此,在對查找得到的位置進(jìn)行分配之前,需要獲取該查找得到的位置的分配狀態(tài)。分配狀態(tài)包括空閑狀態(tài)和使用狀態(tài),若位置的分配狀態(tài)為空閑狀態(tài),則表示該位置中沒有存儲任何對象的對象信息,即該位置可以被分配給新增對象,相對的,若位置的分配狀態(tài)為使用狀態(tài),則表示該位置中已經(jīng)存儲了對象的對象信息,即該位置不可以進(jìn)行二次分配?;谏鲜?,本實施例中,分配信息作為數(shù)組元素的一部分被預(yù)先存儲在輔助更新數(shù)組中。其中,分配信息用于指示視野列表中位置的分配狀態(tài),分配狀態(tài)包括空閑狀態(tài)和使用狀態(tài)。進(jìn)一步地,分配信息所在的數(shù)組位置與索引信息對應(yīng)。例如,索引信息表示的索引為2,便可在輔助更新數(shù)組索引為2的數(shù)組位置上獲取對應(yīng)的分配信息。在得到分配信息之后,服務(wù)器即獲知了查找得到的位置的分配狀態(tài),進(jìn)而能夠根據(jù)該位置的分配狀態(tài)對該位置進(jìn)行分配,即進(jìn)入步驟530。步驟530,按照分配信息指示的位置的分配狀態(tài)進(jìn)行位置的分配。若分配信息指示的位置的分配狀態(tài)為空閑狀態(tài),則分配該位置給新增對象,即進(jìn)入步驟370。否則,若分配信息指示的位置的分配狀態(tài)為使用狀態(tài),則繼續(xù)獲取索引信息,以根據(jù)索引信息在視野列表中進(jìn)行對應(yīng)位置的查找,即返回步驟330,直至得到分配狀態(tài)為空閑狀態(tài)的位置。通過如上所述的過程,以分配信息對位置的分配狀態(tài)進(jìn)行判斷,避免了分配狀態(tài)為使用狀態(tài)的位置被錯誤地分配,從而有利于提高視野列表更新的準(zhǔn)確率。請參閱圖7,在一示例性實施例中,步驟370可以包括以下步驟:步驟371,在分配信息指示位置的分配狀態(tài)為空閑狀態(tài)時,將新增對象的對象信息存儲至位置。若分配信息指示位置的分配狀態(tài)為空閑狀態(tài),表示該位置中沒有存儲任何對象的對象信息,則將該位置分配給新增對象,即存儲新增對象的對象信息至該位置中。進(jìn)一步地,當(dāng)位置被分配給新增對象時,該位置對應(yīng)的索引即已確定,此時,還可以將該位置對應(yīng)的索引作為索引信息添加至新增對象的對象信息中,以表示該新增對象的對象信息存儲在視野列表中位置的索引,以便于后續(xù)查詢該新增對象的對象信息在視野列表中的位置。步驟373,更改分配信息,使得分配信息指示的位置的分配狀態(tài)切換為使用狀態(tài)。待新增對象的對象信息被存儲至該位置之后,該位置即已經(jīng)存儲有新增對象的對象信息,此時,該位置的分配狀態(tài)將由空閑狀態(tài)變更為使用狀態(tài)。由此,分配信息需要更改,即更改后的分配信息指示的位置的分配狀態(tài)為使用狀態(tài)。步驟375,沿指定方向移動頭指針,使得頭指針指向輔助更新數(shù)組的下一個數(shù)組元素。如前所述,索引信息所對應(yīng)查找到的位置將被用于分配或者回收,以實現(xiàn)對待更新對象相應(yīng)的更新處理。應(yīng)當(dāng)理解,在新增對象的對象信息已經(jīng)被存儲至該位置中,該位置即已經(jīng)完成了分配。若還有其他的新增對象,則需要重新獲取索引信息,以根據(jù)重新獲取的索引信息進(jìn)行對應(yīng)位置的再一次查找,方可將再一次查找到的位置分配給其他新增對象。由此,在該位置完成分配之后,令頭指針沿指定方向移動,將頭指針指向輔助更新數(shù)組的下一個數(shù)組元素,即使得在下一次通過頭指針訪問輔助更新數(shù)組時,將得到下一個數(shù)組元素中的索引信息,并通過該索引信息進(jìn)行后續(xù)的位置分配。也就是說,當(dāng)位置被分配,頭指針將沿指定方向移動至下一個數(shù)組元素,進(jìn)而使得服務(wù)器獲知可供分配的位置有所減少。通過如上所述的過程,實現(xiàn)了空閑狀態(tài)的位置的動態(tài)分配,同時,實現(xiàn)了位置的分配狀態(tài)的及時更新,避免已分配的位置被錯誤地分配,進(jìn)一步有利于提高視野列表更新的準(zhǔn)確率。此外,當(dāng)視野列表中位置全部分配完畢時,頭指針將重新指向輔助更新數(shù)組的第一個數(shù)組元素,通過結(jié)合分配信息即可避免已分配的位置被二次分配,進(jìn)而有效地提高了視野列表更新的準(zhǔn)確率。在一示例性實施例中,待更新對象包括離開對象。該離開對象指的是離開用戶視野范圍內(nèi)的對象。相應(yīng)地,步驟330可以包括以下步驟:由離開對象的對象信息中提取得到索引信息。如前所述,新增對象的對象信息在進(jìn)行位置分配時,可以將分配到的位置對應(yīng)的索引作為索引信息添加至對象信息中,以供查詢該新增對象的對象信息在視野列表中的位置。可以理解,新增對象和離開對象是可以相互轉(zhuǎn)化的,即離開用戶視野范圍內(nèi)的新增對象即成為離開對象,而離開對象在進(jìn)入另一用戶視野范圍內(nèi)又轉(zhuǎn)化為新增對象。因此,離開對象的對象信息中將包含有其存儲在視野列表中位置的索引,即索引信息。相應(yīng)地,對離開對象的對象信息進(jìn)行索引信息的提取,便可得到索引信息。其中,該索引信息用于表示離開對象的對象信息存儲在視野列表中位置的索引。請參閱圖8,在一示例性實施例中,步驟370可以包括以下步驟:步驟471,刪除存儲在查找得到的位置中離開對象的對象信息。在視野列表中查找得到離開對象的對象信息所存儲的位置之后,便可回收該位置,即由該位置中刪除離開對象的對象信息。步驟473,通過預(yù)先設(shè)置的輔助更新數(shù)組的尾指針訪問輔助更新數(shù)組中的數(shù)組元素,得到尾指針指向的數(shù)組元素中的索引信息,并將該索引信息更改為提取得到的索引信息。由于此時離開對象的對象信息已經(jīng)由視野列表中的該位置刪除,即該位置中沒有存儲任何對象的對象信息,由此,在完成索引信息更改之后,尾指針指向的索引信息即用于表示視野列表中可供分配位置的索引。步驟475,沿指定方向移動尾指針,使得尾指針指向輔助更新數(shù)組的下一個數(shù)組元素。應(yīng)當(dāng)理解,若還有其他的離開對象待更新,相應(yīng)地,將會有其他位置中存儲的離開對象的對象信息被刪除,此時,需要尾指針指向其他的索引信息來表示視野列表中該些可供分配位置的索引。具體地,令尾指針沿指定方向移動,將尾指針指向輔助更新數(shù)組的下一個數(shù)組元素,即使得在下一次通過尾指針訪問輔助更新數(shù)組時,進(jìn)行索引信息更改的將是下一個數(shù)組元素中的索引信息。也就是說,當(dāng)位置被回收,尾指針指向的索引信息進(jìn)行更改,且尾指針將沿指定方向移動至下一個數(shù)組元素,使得服務(wù)器獲知視野列表中可供分配的位置有所增加。通過如上所述的過程,實現(xiàn)了位置的動態(tài)回收,避免未存儲任何對象信息的位置不能及時地被分配,從而有利于提高視野列表更新的及時率。此外,通過輔助更新數(shù)組設(shè)置的兩個數(shù)組指針,使得服務(wù)器能夠快速地獲知視野列表中可供分配的位置,即頭指針與尾指針之間數(shù)組元素中的索引信息對應(yīng)于視野列表中可供分配的位置,從而有利于加快視野列表更新的速度,有利于降低視野列表的更新復(fù)雜度,減輕服務(wù)器的壓力。請參閱圖9,在一示例性實施例中,步驟370還可以包括以下步驟:步驟477,根據(jù)提取得到的索引信息由輔助更新數(shù)組中獲取對應(yīng)的分配信息。本實施例中,分配信息作為數(shù)組元素的一部分被預(yù)先存儲在輔助更新數(shù)組中。其中,分配信息用于指示視野列表中位置的分配狀態(tài),分配狀態(tài)包括空閑狀態(tài)和使用狀態(tài)。進(jìn)一步地,分配信息所在的數(shù)組位置與索引信息對應(yīng)。例如,索引信息表示的索引為2,便可在輔助更新數(shù)組的索引為2的數(shù)組位置上獲取對應(yīng)的分配信息。在得到分配信息之后,服務(wù)器便可對該位置的分配狀態(tài)進(jìn)行更改,即進(jìn)入步驟479。步驟479,更改分配信息,使得分配信息指示的位置的分配狀態(tài)由使用狀態(tài)切換為空閑狀態(tài)。由于離開對象的對象信息已經(jīng)由該位置刪除,即該位置已經(jīng)未存儲任何對象的對象信息,此時,該位置的分配狀態(tài)將由使用狀態(tài)變更為空間狀態(tài)。由此,分配信息需要更改,即更改后的分配信息指示的位置的分配狀態(tài)為空閑狀態(tài)。通過如上所述的過程,實現(xiàn)了位置的分配狀態(tài)的及時更新,避免未分配的位置無法及時地得到分配,進(jìn)一步有利于提高視野列表更新的及時率。在一示例性實施例中,步驟471之后,如上所述的方法還可以包括以下步驟:當(dāng)離開對象的對象信息由視野列表中刪除,清除離開對象的對象信息中的索引信息。在視野列表中刪除離開對象的對象信息,表明該離開對象的對象信息已經(jīng)不再存儲于視野列表中之前的位置,相應(yīng)地,離開對象的對象信息中也不必再存儲索引信息,以使該索引信息不必再用于表示之前位置的索引。為此,將該索引信息由離開對象的對象信息中清除,以便于后續(xù)該離開對象被其他用戶可見時,再重新進(jìn)行索引信息的添加,即,該索引信息將表示該離開對象的對象信息存儲在其他用戶的視野列表中位置的索引。圖10是一應(yīng)用場景中一種視野列表的更新方法的具體實現(xiàn)示意圖。如圖10所示,游戲服務(wù)器中,通過執(zhí)行步驟501,監(jiān)聽到游戲玩家的視野范圍發(fā)生了變化,則通過執(zhí)行步驟502至步驟507,從視野列表中刪除離開視野的游戲玩家,通過執(zhí)行步驟508至512,將新進(jìn)入視野的游戲玩家存儲至視野列表中,以此實現(xiàn)視野列表的更新,有效地減輕服務(wù)器的壓力。下面以表格的形式對上述視野列表的更新流程進(jìn)行演示。假設(shè)視野列表以a數(shù)組的形式進(jìn)行玩家信息的存儲,該a數(shù)組的長度為5。輔助更新數(shù)組即b數(shù)組,該b數(shù)組的長度與a數(shù)組保持一致,也為5。該b數(shù)組的每個數(shù)組元素均為二元組,該二元組包括索引信息emptyindex和分配信息state。其中,索引信息emptyindex用于表示a數(shù)組中位置的索引。分配信息state用于指示a數(shù)組中位置的分配狀態(tài)。若值為e,表示a數(shù)組中位置的分配狀態(tài)為空閑狀態(tài),即可在該位置存儲新進(jìn)入視野范圍的游戲玩家。若值為u,表示a數(shù)組中位置的分配狀態(tài)為使用狀態(tài),即該位置已經(jīng)存儲了視野范圍中的游戲玩家。此外,b數(shù)組還設(shè)置了可供訪問的兩個數(shù)組指針pointer:頭指針head和尾指針tail,該兩個數(shù)組指針pointer可在b數(shù)組上移動,以通過移動指向b數(shù)組中的下一個數(shù)組元素。下面展示在對a數(shù)組進(jìn)行分配和回收位置時,b數(shù)組對應(yīng)的結(jié)果狀態(tài)。如表1所示,a數(shù)組為空時,即視野列表中各位置未存儲任何游戲玩家的玩家信息,即視野列表中各位置的分配狀態(tài)均為空閑狀態(tài)。相應(yīng)地,b數(shù)組中預(yù)先存儲的索引信息emptyindex為0、1、2、3、4,表示a數(shù)組中位置的索引。b數(shù)組中對應(yīng)索引信息預(yù)先存儲的分配信息state的值全部為e,用于指示a數(shù)組中全部位置(0~4)的分配狀態(tài)均為空閑狀態(tài)。需要說明的是,如表1所示,arrayindex表示的是b數(shù)組中數(shù)組元素位置的索引,只是為了方便于查看分配信息state在b數(shù)組中的位置。此時,b數(shù)組中的兩個數(shù)組指針均指向第一個數(shù)組元素,該兩個數(shù)組指針之間數(shù)組元素中的索引信息對應(yīng)于a數(shù)組中可供分配的位置為0~4。表1a數(shù)組為空時,b數(shù)組的結(jié)果狀態(tài)arrayindex01234emptyindex01234stateeeeeepointerhead、tail假設(shè)獲取到三個新進(jìn)入視野范圍的游戲玩家的玩家信息,即有三個游戲玩家待新增,則需要對a數(shù)組中三個分配狀態(tài)為空閑狀態(tài)的位置進(jìn)行分配。相應(yīng)地,通過頭指針head訪問b數(shù)組中的數(shù)組元素,得到頭指針head指向的第一個數(shù)組元素中的索引信息emptyindex為0,該索引0表示視野列表中待分配給第一個游戲玩家的位置的索引為0,如表1第二列第二行所示,則根據(jù)該索引0查找得到a數(shù)組的第一個位置。進(jìn)一步根據(jù)索引信息emptyindex表示的索引0(如表1第二列第二行所示),得到存儲在該索引0對應(yīng)位置中的分配信息的值為e,如表1第二列第三行所示。根據(jù)分配信息的值為e,表示a數(shù)組的第一個位置的分配狀態(tài)為空閑狀態(tài),則將第一個游戲玩家的玩家信息存儲至該第一個位置,并更改分配信息的值為u,使得該第一個位置的分配狀態(tài)切換為使用狀態(tài),如表2第二列第三行所示。向右移動頭指針head,使其指向第二個數(shù)組元素,以此類推,待完成三個游戲玩家的更新處理,頭指針將指向第四個數(shù)組元素,如表2第五列第四行所示。此時,兩個數(shù)組指針之間數(shù)組元素中的索引信息對應(yīng)于a數(shù)組中可供分配的位置為3~4。表2分配a數(shù)組中的三個位置給新進(jìn)入視野范圍的游戲玩家時,b數(shù)組的結(jié)果狀態(tài)假設(shè)獲取到一個離開視野范圍的游戲玩家的玩家信息,即有一個游戲玩家待刪除,則需要將a數(shù)組中存儲該游戲玩家的玩家信息的位置回收。相應(yīng)地,先由該游戲玩家的玩家信息中提取得到索引信息為2,表示該游戲玩家的玩家信息存儲在a數(shù)組中位置的索引為2,則根據(jù)該索引2查找得到a數(shù)組的第三個位置,并刪除該第三個位置中存儲的游戲玩家的玩家信息。通過尾指針tail訪問b數(shù)組中的數(shù)組元素,得到尾指針tail指向的第一個數(shù)組元素中的索引信息emptyindex為0,如表2第二列第二行所示,并將該索引信息emptyindex更改為2,即提取得到的索引信息,如表3第二列第二行所示,并將該游戲玩家的玩家信息中的索引信息清除。進(jìn)一步根據(jù)索引信息emptyindex表示的索引2(如表2第四列第二行所示),得到存儲在該索引2對應(yīng)位置中的分配信息的值為u,如表2第四列第三行所示,更改該分配信息的值為e,使得a數(shù)組第三個位置的分配狀態(tài)切換為空閑狀態(tài),如表3第四列第三行所示。向右移動尾指針tail,使其指向第二個數(shù)組元素,如表3第三列第四行所示。此時,兩個數(shù)組指針之間數(shù)組元素中的索引信息對應(yīng)于a數(shù)組中可供分配的位置為3~4、2。表3回收a數(shù)組中的一個位置時,b數(shù)組的結(jié)果狀態(tài)arrayindex01234emptyindex21234stateuueeepointertailhead再假設(shè)有二個游戲玩家待新增,則將a數(shù)組中二個分配狀態(tài)為空閑狀態(tài)的位置分配給該二個游戲玩家,具體過程與上述新增三個游戲玩家的過程一致,在此不再贅述。此時,兩個數(shù)組指針之間數(shù)組元素中的索引信息對應(yīng)于a數(shù)組中可供分配的位置僅為2,如表4所示。表4分配a數(shù)組中的兩個位置給新進(jìn)入視野范圍的游戲玩家時,b數(shù)組的結(jié)果狀態(tài)arrayindex01234emptyindex21234stateuueuupointerheadtail最后,假設(shè)清空a數(shù)組中所有游戲玩家,則將a數(shù)組中存儲所有游戲玩家的玩家信息的位置回收,具體過程與上述刪除一個游戲玩家的過程一致,在此不再贅述。此時,兩個數(shù)組指針均重新指向第一個數(shù)組元素,該兩個數(shù)組元素之間數(shù)組指針中的索引信息對應(yīng)于a數(shù)組中可供分配的位置為0~4,如表5所示。表5回收a數(shù)組中的所有位置時,b數(shù)組的結(jié)果狀態(tài)arrayindex01234emptyindex20134stateeeeeepointerhead、tail下述為本公開裝置實施例,可以用于執(zhí)行本公開所涉及的視野列表的更新方法。對于本公開裝置實施例中未披露的細(xì)節(jié),請參照本公開所涉及的視野列表的更新方法實施例。請參閱圖11,在一示例性實施例中,一種視野列表的更新裝置700包括但不限于:對象信息獲取模塊710、索引信息獲取模塊730、位置查找模塊750和更新處理模塊770。其中,對象信息獲取模塊710用于當(dāng)用戶的視野列表需要更新時,通過地圖中進(jìn)行的視野搜索獲取待更新對象的對象信息。索引信息獲取模塊730用于獲取預(yù)先存儲的索引信息,索引信息用于表示視野列表中位置的索引。位置查找模塊750用于在視野列表中根據(jù)獲取到的索引信息查找對應(yīng)的位置。更新處理模塊770用于通過分配或者回收查找得到的位置,對待更新對象的對象信息進(jìn)行相應(yīng)的更新處理。請參閱圖12,在一示例性實施例中,如上所述的裝置700還包括但不限于:位置消息獲取模塊810和更新判斷模塊830。其中,位置消息獲取模塊810用于獲取用戶對應(yīng)的位置消息,位置消息包含地圖中用戶的位置。更新判斷模塊830用于根據(jù)地圖中的預(yù)設(shè)區(qū)域判斷用戶的位置是否離開了預(yù)設(shè)區(qū)域。若為是,則判定用戶的視野列表需要更新。在一示例性實施例中,待更新對象包括新增對象。相應(yīng)地,索引信息獲取模塊730包括但不限于:頭指針訪問單元。其中,頭指針訪問單元用于通過預(yù)先設(shè)置的輔助更新數(shù)組的頭指針訪問輔助更新數(shù)組中的數(shù)組元素,得到頭指針指向的數(shù)組元素中的索引信息,該索引信息用于表示視野列表中待分配給新增對象的位置的索引。請參閱圖13,在一示例性實施例中,如上所述的裝置700還包括但不限于:第一分配信息獲取模塊910和位置分配模塊930。其中,第一分配信息獲取模塊910用于根據(jù)訪問得到的索引信息由輔助更新數(shù)組中獲取對應(yīng)的分配信息,分配信息用于指示視野列表中位置的分配狀態(tài),分配狀態(tài)包括空閑狀態(tài)和使用狀態(tài)。位置分配模塊930用于按照分配信息指示的位置的分配狀態(tài)進(jìn)行位置的分配。請參閱圖14,在一示例性實施例中,更新處理模塊770包括但不限于:新增對象存儲單元771、第一分配信息更改單元773和頭指針移動單元775。其中,新增對象存儲單元771用于在分配信息指示位置的分配狀態(tài)為空閑狀態(tài)時,將新增對象的對象信息存儲至位置。第一分配信息更改單元773用于更改分配信息,使得分配信息指示的位置的分配狀態(tài)切換為使用狀態(tài)。頭指針移動單元775用于沿指定方向移動頭指針,使得頭指針指向輔助更新數(shù)組的下一個數(shù)組元素。在一示例性實施例中,待更新對象包括離開對象。相應(yīng)地,索引信息獲取模塊730包括但不限于:索引信息提取單元。其中,索引信息提取單元用于由離開對象的對象信息中提取得到索引信息,該索引信息用于表示離開對象的對象信息存儲在視野列表中位置索引。請參閱圖15,在一示例性實施例中,更新處理模塊770包括但不限于:離開對象刪除單元1071、尾指針訪問單元1073和尾指針移動單元1075。其中,離開對象刪除單元1071用于刪除存儲在查找得到的位置中離開對象的對象信息。尾指針訪問單元1073用于通過預(yù)先設(shè)置的輔助更新數(shù)組的尾指針訪問輔助更新數(shù)組中的數(shù)組元素,得到尾指針指向的數(shù)組元素中的索引信息,并將該索引信息更改為提取得到的索引信息。尾指針移動單元1075用于沿指定方向移動尾指針,使得尾指針指向輔助更新數(shù)組的下一個數(shù)組元素。請參閱圖16,在一示例性實施例中,更新處理模塊770還包括但不限于:第二分配信息獲取模塊1077和第二分配信息更改模塊1079。其中,第二分配信息獲取模塊1077用于根據(jù)提取得到的索引信息由輔助更新數(shù)組中獲取對應(yīng)的分配信息,分配信息用于指示視野列表中位置的分配狀態(tài),分配狀態(tài)包括空閑狀態(tài)和使用狀態(tài)。第二分配信息更改模塊1079用于更改分配信息,使得分配信息指示的位置的分配狀態(tài)由使用狀態(tài)切換為空閑狀態(tài)。在一示例性實施例中,如上所述的裝置還包括但不限于:索引信息清除模塊。其中,索引信息清除模塊用于當(dāng)離開對象的對象信息由視野列表中刪除,清除離開對象的對象信息中的索引信息。需要說明的是,上述實施例所提供的視野列表的更新裝置在進(jìn)行用戶的視野列表更新時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即視野列表的更新裝置的內(nèi)部結(jié)構(gòu)將劃分為不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例所提供的視野列表的更新裝置與視野列表的更新方法的實施例屬于同一構(gòu)思,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在方法實施例中進(jìn)行了詳細(xì)描述,此處不再贅述。上述內(nèi)容,僅為本公開的較佳示例性實施例,并非用于限制本公開的實施方案,本領(lǐng)域普通技術(shù)人員根據(jù)本公開的主要構(gòu)思和精神,可以十分方便地進(jìn)行相應(yīng)的變通或修改,故本公開的保護(hù)范圍應(yīng)以權(quán)利要求書所要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁12