背景技術(shù):
價格便宜的軟件應(yīng)用可用于各種計算平臺。通常,某些類型的軟件應(yīng)用在主機設(shè)備上執(zhí)行時與遠(yuǎn)離主機設(shè)備的后端服務(wù)器交互。后端服務(wù)器在一些情況下可以經(jīng)由網(wǎng)絡(luò)與應(yīng)用實例交換信息。
技術(shù)實現(xiàn)要素:
在一些方面,本公開涉及一種系統(tǒng),其包括知識庫,存儲從在多個遠(yuǎn)程設(shè)備上執(zhí)行的多個應(yīng)用實例中收集到的多個成功跟蹤。系統(tǒng)包括網(wǎng)絡(luò)接口和計算機處理器,所述計算機處理器被配置為經(jīng)由所述網(wǎng)絡(luò)接口從在第一遠(yuǎn)程設(shè)備上執(zhí)行的第一應(yīng)用示例接收調(diào)用棧信息的一個或多個單元,所述調(diào)用棧信息包括對所述應(yīng)用的所述第一實例的執(zhí)行狀態(tài)的周期性捕捉;以及從所述應(yīng)用的所述第一實例接收所述應(yīng)用的所述第一實例已經(jīng)執(zhí)行目標(biāo)的指示符。所述計算機處理器被配置為響應(yīng)于接收到所述指示符,聚集所接收到的導(dǎo)致所執(zhí)行的目標(biāo)的調(diào)用棧信息的單元作為成功跟蹤并且在所述知識庫中存儲所述成功跟蹤。所述計算機處理器還被配置為從在第二遠(yuǎn)程設(shè)備上執(zhí)行的所述應(yīng)用的第二實例接收調(diào)用棧信息的一個或多個單元,所述調(diào)用棧信息包括對所述應(yīng)用的所述第二實例的執(zhí)行狀態(tài)的周期性捕捉;確定從所述應(yīng)用的所述第二實例接收到的所述調(diào)用棧信息與多個成功跟蹤之間的相似性;以及響應(yīng)于確定所述相似性,將所述第二遠(yuǎn)程設(shè)備添加到可能執(zhí)行所述目標(biāo)的設(shè)備群中。
在一些方面,本公開涉及一種方法,包括從在第一遠(yuǎn)程設(shè)備上執(zhí)行的應(yīng)用的第一實例接收調(diào)用棧信息的一個或多個單元,所述調(diào)用棧信息包括對所述應(yīng)用的所述第一實例的執(zhí)行狀態(tài)的周期性捕捉;以及從所述應(yīng)用的所述第一實例接收所述應(yīng)用的所述第一實例已經(jīng)執(zhí)行目標(biāo)的指示符。該方法包括聚集所接收到的導(dǎo)致所執(zhí)行的目標(biāo)的調(diào)用棧信息的單元作為成功跟蹤以及從在多個遠(yuǎn)程設(shè)備上執(zhí)行的所述應(yīng)用的多個實例中收集多個成功跟蹤。該方法還包括從在第二遠(yuǎn)程設(shè)備上執(zhí)行的所述應(yīng)用的第二實例接收調(diào)用棧信息的一個或多個單元,所述調(diào)用棧信息包括對所述應(yīng)用的所述第二實例的執(zhí)行狀態(tài)的周期性捕捉;確定從所述應(yīng)用的所述第二實例接收到的所述調(diào)用棧信息與多個成功跟蹤之間的相似性;以及將所述第二遠(yuǎn)程設(shè)備添加到可能執(zhí)行所述目標(biāo)的設(shè)備群中。
在一些方面,本公開涉及一種存儲指令的計算機可讀介質(zhì),所述指令當(dāng)被包括一個或多個計算處理器的計算設(shè)備執(zhí)行時,使得所述計算設(shè)備:從在第一遠(yuǎn)程設(shè)備上執(zhí)行的應(yīng)用的第一實例接收調(diào)用棧信息的一個或多個單元,所述調(diào)用棧信息包括對所述應(yīng)用的所述第一實例的執(zhí)行狀態(tài)的周期性捕捉,以及從所述應(yīng)用的所述第一實例接收所述應(yīng)用的所述第一實例已經(jīng)執(zhí)行目標(biāo)的指示符。所述指令還進一步使得計算設(shè)備聚集所接收到的導(dǎo)致所執(zhí)行的目標(biāo)的調(diào)用棧信息的單元作為成功跟蹤并且在存儲從在多個遠(yuǎn)程設(shè)備上執(zhí)行的應(yīng)用的多個實例中收集到的多個成功跟蹤的知識庫中存儲所述成功跟蹤。所述指令還使得計算設(shè)備從在第二遠(yuǎn)程設(shè)備上執(zhí)行的所述應(yīng)用的第二實例接收調(diào)用棧信息的一個或多個單元,所述調(diào)用棧信息包括對所述應(yīng)用的所述第二實例的執(zhí)行狀態(tài)的周期性捕捉;確定從所述應(yīng)用的所述第二實例接收到的所述調(diào)用棧信息與多個成功跟蹤之間的相似性;以及響應(yīng)于肯定的確定,將所述第二遠(yuǎn)程設(shè)備添加到可能執(zhí)行所述目標(biāo)的設(shè)備群中。
附圖說明
通過參考下面的具體實施方式,當(dāng)參考附圖時,將更加全面地理解本公開的上述和相關(guān)目的、特征和優(yōu)點,其中:
圖1是根據(jù)示例實施方式的網(wǎng)絡(luò)環(huán)境的示意圖;
圖2是調(diào)用棧視覺化;
圖3是描繪用于周期性捕捉和傳送調(diào)用棧信息的方法的實施方式的流程圖;
圖4是描繪用于收集和比較多個遠(yuǎn)程設(shè)備的調(diào)用棧信息的方法的實施方式的流程圖;
圖5是描繪用于響應(yīng)對于接收到的調(diào)用棧信息的分段(segment)關(guān)聯(lián)的識別的方法的實施方式的流程圖;以及
圖6是適用于在所述的各種實施方式中使用的計算系統(tǒng)的框圖。
清楚起見,不是任何元件可以在任何圖中被標(biāo)注。附圖不旨在按比例繪制。各個附圖中相似附圖標(biāo)記和指示表示相似的元素。
具體實施方式
價格便宜的軟件應(yīng)用可用于各種計算平臺。應(yīng)用用戶可以支付少量的錢,或者在一些情況下根本不用付錢,而在用戶設(shè)備上安裝應(yīng)用且運行應(yīng)用。用戶可以支付很少的金額來解鎖應(yīng)用的附加特征,或者升級到應(yīng)用的高級版本。在一些情形中,應(yīng)用呈現(xiàn)由應(yīng)用創(chuàng)建者或第三方所供應(yīng)的內(nèi)容。在一些情形中,應(yīng)用關(guān)聯(lián)于另一產(chǎn)品而分發(fā),例如,作為對事件或場所的市場營銷搭配。通常,一些應(yīng)用,有時被稱為“apps”,與一個或多個后端服務(wù)器通信以獲得更新、多方交互和附加內(nèi)容。后端服務(wù)器可以基于各種參數(shù)來選擇要遞送到每個應(yīng)用實例的內(nèi)容。在一些實施方式中,應(yīng)用的特定實例的具體執(zhí)行模式被用于幫助選擇內(nèi)容。一些執(zhí)行模式可以指示執(zhí)行一個或多個特定事件的增加的可能性。如果執(zhí)行模式啟示特定應(yīng)用實例可能執(zhí)行目標(biāo)事件,則可以選擇內(nèi)容來幫助引導(dǎo)應(yīng)用的用戶朝向目標(biāo)。目標(biāo)包括但不限于,用戶與所選內(nèi)容的交互、應(yīng)用內(nèi)購買、以及與應(yīng)用的持續(xù)用戶參與。在一個場景中,如果娛樂應(yīng)用(即游戲)重復(fù)執(zhí)行來自游戲中困難級別的函數(shù)調(diào)用,則應(yīng)用的用戶可能對怎樣通過困難級別的提示感興趣。
參看圖1的概覽,圖示說明了網(wǎng)絡(luò)環(huán)境的示意圖。網(wǎng)絡(luò)110使得在各個用戶設(shè)備120和后端服務(wù)器130之間能夠通信。每個用戶設(shè)備120(a)–120(n)執(zhí)行應(yīng)用的相應(yīng)實例124(a)–124(n)。應(yīng)用實例124(a)–124(n)(通常被稱為實例124)每個經(jīng)由網(wǎng)絡(luò)110傳送調(diào)用棧信息到棧聚集服務(wù)器140。棧聚集服務(wù)器140在存儲器134中存儲接收到的信息。服務(wù)器140識別調(diào)用棧信息中的執(zhí)行模式并且指定應(yīng)用實例124的分段以基于所識別的模式接收特殊內(nèi)容。內(nèi)容服務(wù)器160將內(nèi)容提供給應(yīng)用實例124。應(yīng)用實例124在指定的分段中從內(nèi)容服務(wù)器160接收為該分段所選的特殊內(nèi)容。
更具體地,網(wǎng)絡(luò)110在用戶設(shè)備120和后端服務(wù)器130之間傳送信息。網(wǎng)絡(luò)110由鏈接在一起以形成參與設(shè)備之間的一個或多個通信路徑的各種網(wǎng)絡(luò)設(shè)備組成。每個聯(lián)網(wǎng)設(shè)備包括至少一個網(wǎng)絡(luò)接口,用于傳送和接收數(shù)據(jù),通常作為一個或多個分組。網(wǎng)絡(luò)接口將聯(lián)網(wǎng)設(shè)備鏈接到網(wǎng)絡(luò)110,由此通過網(wǎng)絡(luò)110鏈接彼此。圖示的網(wǎng)絡(luò)110是互聯(lián)網(wǎng);但是,其他網(wǎng)絡(luò)也可被使用。網(wǎng)絡(luò)110可以由多個相連的子網(wǎng)絡(luò)組成。網(wǎng)絡(luò)110可以是諸如公司內(nèi)聯(lián)網(wǎng)的局域網(wǎng)(lan)、城域網(wǎng)(man)、廣域網(wǎng)(wan)、諸如互聯(lián)網(wǎng)的互聯(lián)網(wǎng)絡(luò),或者例如adhocwifi對等網(wǎng)絡(luò)的對等網(wǎng)絡(luò)。網(wǎng)絡(luò)110中設(shè)備之間的數(shù)據(jù)鏈路可以是有線鏈路(例如光纖、電纜、cat-5等等)和/或無線鏈路(例如基于無線電、衛(wèi)星或微波)的任意組合。網(wǎng)絡(luò)110可以是公共的、私有的、或者公共和私有網(wǎng)絡(luò)的組合。網(wǎng)絡(luò)110可以是任意類型和/或形式的數(shù)據(jù)網(wǎng)絡(luò)和/或通信網(wǎng)絡(luò)。
用戶設(shè)備120能夠經(jīng)由網(wǎng)絡(luò)110交換信息。用戶設(shè)備120可以是被配置用于用戶交互的任意種類的計算設(shè)備。用戶設(shè)備120可以是,但不限于,膝上型計算機、桌面型計算機、平板計算機、電子平板、個人數(shù)字助理、智能電話、視頻游戲設(shè)備、電視、電視附屬盒子(也被稱為“機頂盒”)、電話亭或便攜計算機。通常,且無限制,用戶設(shè)備120能夠呈現(xiàn)內(nèi)容給用戶或者便利于內(nèi)容向用戶的呈現(xiàn)。用戶設(shè)備120通常運行管理用戶設(shè)備120上的軟件應(yīng)用的執(zhí)行的操作系統(tǒng)。在一些實施方式中,向用戶提供操作系統(tǒng)。參考圖6所述的計算設(shè)備在一些配置中是適于用作用戶設(shè)備120的計算設(shè)備。
后端服務(wù)器130包括棧聚集服務(wù)器140和內(nèi)容服務(wù)器160,下面更詳細(xì)描述。后端服務(wù)器130在一些實施方式中還可以包括其他促進系統(tǒng),諸如作用為路由器或交換機、數(shù)據(jù)處理和過濾服務(wù)器、數(shù)據(jù)存儲系統(tǒng)134、應(yīng)用服務(wù)器等等的網(wǎng)絡(luò)設(shè)備。后端服務(wù)器130可以位于單個位置或者跨多個位置分布,所述多個位置被網(wǎng)絡(luò)110和/或第二主體網(wǎng)絡(luò)連接。一些后端服務(wù)器130可以被虛擬化,即,后端服務(wù)器130可以作為虛擬機被托管在另一計算設(shè)備上。在一些情形中,一個或多個虛擬服務(wù)器可以由第三方云服務(wù)提供商托管。一些后端服務(wù)器130可以以定制硬件來實現(xiàn)。一些后端服務(wù)器130可以是通用計算設(shè)備,配置有特定、非通用的功能。參考圖6描述的計算設(shè)備在一些配置中是適于用作后端服務(wù)器130的計算設(shè)備。
后端130包括數(shù)據(jù)存儲134,其可以是任何設(shè)備或者設(shè)備集合,適于存儲計算機可讀數(shù)據(jù)。數(shù)據(jù)存儲134設(shè)備可以是易失性或非易失性存儲、附接于網(wǎng)絡(luò)的存儲、或者存儲區(qū)域網(wǎng)絡(luò)。數(shù)據(jù)存儲134設(shè)備可以合并一個或多個大容量存儲設(shè)備,其可以是共同定位或分布的。適于存儲數(shù)據(jù)的設(shè)備包括所有形式的非易失性存儲器、媒體和存儲器設(shè)備,例如,半導(dǎo)體存儲器設(shè)備,諸如eprom、eeprom、sdram和閃存存儲器設(shè)備,磁盤,例如內(nèi)部硬盤或可移動盤,磁光盤,以及cdrom、dvd-rom以及
用戶可以操作用戶設(shè)備120與各個后端服務(wù)器130經(jīng)由網(wǎng)絡(luò)110遠(yuǎn)程交互。在一些場景中,用戶可以使用客戶端設(shè)備120從后端服務(wù)器130,例如內(nèi)容服務(wù)器160,請求一個或多個內(nèi)容項。響應(yīng)于由后端服務(wù)器130接收到的請求,所請求內(nèi)容從一個或多個內(nèi)容服務(wù)器160經(jīng)由網(wǎng)絡(luò)110傳遞到客戶端設(shè)備120??蛻舳嗽O(shè)備120隨后渲染接收到的內(nèi)容以便向用戶呈現(xiàn)。用戶可以這樣與后端服務(wù)器130交互,使得請求、響應(yīng)和后續(xù)請求的集合可以形成會話。用戶的會話持續(xù),直到用戶停止請求內(nèi)容項。在一些實施方式中,在傳遞最后的內(nèi)容項之后的固定時間段內(nèi)會話保持活動,給用戶提供時間來占用內(nèi)容和進行后續(xù)請求。在一些實施方式中,傳遞到客戶端設(shè)備120的內(nèi)容被配置為周期性對后端服務(wù)器130進行請求以保持會話是活動的。在一些實施方式中,會話是對一段時間內(nèi)來自客戶端設(shè)備120的請求的邏輯分組。
在一些實施方式中,每個用戶設(shè)備120具有標(biāo)識符,可用來區(qū)分各種用戶設(shè)備實例。標(biāo)識符可以是唯一的。在一些實施方式中,ip地址用作標(biāo)識符。在一些實施方式中,制造商或供應(yīng)商向用戶設(shè)備120指派永久系統(tǒng)標(biāo)識符,諸如duid、inid、imsi或min,在例如sim卡中記錄,以便用作標(biāo)識符。在一些實施方式中,用戶提供用來識別用戶設(shè)備120的信息。在一些實施方式中,標(biāo)識符被提供給用戶設(shè)備120且存儲在用戶設(shè)備中,例如,作為cookie。當(dāng)用戶設(shè)備120與后端服務(wù)器130交互時,用戶設(shè)備120可以向服務(wù)器130提供存儲的標(biāo)識符。在一些實施方式中,所提供的用于在用戶設(shè)備120上存儲的標(biāo)識符是任意或隨機選擇的數(shù)字或字符串。在一些實施方式中,后端服務(wù)器130維護序號;對于每個與用戶設(shè)備120的首次交互,服務(wù)器130發(fā)送該序號給新遇到的用戶設(shè)備120作為標(biāo)識符,然后將該序號增加某個固定或動態(tài)量。在一些實施方式中,所提供的用于在用戶設(shè)備120處存儲的標(biāo)識符是用戶設(shè)備120和后端服務(wù)器130之間的首次交互的日期和時間的函數(shù)。在一些實施方式中,每個應(yīng)用實例124接收其自己的標(biāo)識符,其并不附屬于由相同主機用戶設(shè)備120上的其他應(yīng)用所使用的標(biāo)識符。在一些實施方式中,所提供的用于在用戶設(shè)備120上存儲的標(biāo)識符不具有其他含義,除了它是唯一分派給用戶設(shè)備120(或者在用戶設(shè)備120上執(zhí)行的應(yīng)用124)的特定實例使得在線上或線下,該標(biāo)識都無法識別用戶個人身份,或與之相關(guān)聯(lián)。
用戶設(shè)備120執(zhí)行各種軟件應(yīng)用。在一些實施方式中,一個或多個軟件應(yīng)用用于周期性生成狀態(tài)信息以及周期性傳送該狀態(tài)信息到后端服務(wù)器130。在一些實施方式中,狀態(tài)信息是用于特定應(yīng)用實例124的調(diào)用棧信息。在一些實施方式中,調(diào)用棧信息表示應(yīng)用當(dāng)前執(zhí)行狀態(tài)的快照。參考圖2更詳細(xì)描述調(diào)用棧信息,圖2是調(diào)用棧信息的表示。特定應(yīng)用實例124可以通過捕捉調(diào)用棧信息而周期性生成狀態(tài)信息并將該狀態(tài)信息傳送到后端服務(wù)器130。所傳送的信息可以與該應(yīng)用實例124的標(biāo)識符相關(guān)聯(lián),但不需要包括有關(guān)用戶的任何個人身份信息。參考圖3來詳細(xì)描述調(diào)用棧信息的傳輸,圖3是描繪用于周期性捕捉和傳送調(diào)用棧信息的方法的實施方式的流程圖。下面更詳細(xì)描述圖2和3。在一些實施方式中,用戶可以選擇選項來禁用狀態(tài)信息到后端服務(wù)器130的傳輸。
棧聚集服務(wù)器140是后端服務(wù)器130,后端服務(wù)器130被配置為經(jīng)由網(wǎng)絡(luò)110從各種用戶設(shè)備120接收調(diào)用棧信息。在一些實施方式中,棧聚集服務(wù)器140處理調(diào)用棧信息,例如基于規(guī)則集合過濾掉一些信息和/或從調(diào)用棧信息中識別發(fā)送應(yīng)用實例124是否已經(jīng)執(zhí)行了特定函數(shù)或事件。在一些實施方式中,棧聚集服務(wù)器140在數(shù)據(jù)存儲134中記錄所有或一些接收到的調(diào)用棧信息。在一些實施方式中,棧聚集服務(wù)器140與一個或多個附加棧聚集服務(wù)器140相結(jié)合工作。在一些實施方式中,多個棧聚集服務(wù)器140訪問共享信息存儲,例如數(shù)據(jù)存儲134。在一些實施方式中,棧聚集服務(wù)器140比較接收到的調(diào)用棧信息與存儲的調(diào)用棧信息并識別任何相似性。下面描述的圖4是描述用于收集和比較多個遠(yuǎn)程設(shè)備的調(diào)用棧信息的方法的實施方式的流程圖。
通常,棧聚集服務(wù)器140被配置為從用戶設(shè)備120(例如用戶設(shè)備120(a))接收調(diào)用棧信息并且比較接收到的調(diào)用棧信息與之前從其它用戶設(shè)備120(例如用戶設(shè)備120(b)–120(n))接收到的聚集的調(diào)用棧信息。更具體地,聚集的調(diào)用棧信息可以被劃分為源用戶設(shè)備120的兩個或更多子組(稱為“分段”)。在一些實施方式中,組是基于從比較結(jié)果中識別的相似性而劃分的,使得用戶設(shè)備120可以被認(rèn)為是一個分類或另一分類的一部分,取決于棧聚集服務(wù)器140從各個用戶設(shè)備120所接收到的調(diào)用棧信息的相似性。在一些實施方式中,組是基于附加因素而被劃分的。在一些這樣的實施方式中,附加因素包括應(yīng)用實例是否完成其它目標(biāo),諸如達到特定游戲等級或完成應(yīng)用內(nèi)購買。在一些實施方式中,分段是通過將聚類算法施加于接收到的調(diào)用棧信息而生成的,例如層級聚類算法。
在一些實施方式中,調(diào)用棧信息專用于應(yīng)用,使得只有執(zhí)行應(yīng)用的實例124的用戶設(shè)備120將提交調(diào)用棧信息以用于比較。如果特定分段中存在為用戶設(shè)備120保留的特殊動作,棧聚集服務(wù)器140或另一后端服務(wù)器130,諸如內(nèi)容服務(wù)器160,可以響應(yīng)于確定用戶設(shè)備120屬于特定分段而執(zhí)行特殊動作。在一些實施方式中,特殊內(nèi)容可以被傳遞到落入特定分段內(nèi)的用戶設(shè)備。在一些實施方式中,多等級游戲應(yīng)用可以確定在特定難度重復(fù)調(diào)用特定函數(shù)的用戶可能從怎樣前進到下一等級的提示中受益;響應(yīng)于該確定,用戶的應(yīng)用實例可以接收包含提示的特殊消息,或者邀請接受者購買該提示。下面描述的圖5是描繪用于接收調(diào)用棧信息、識別接收到的調(diào)用棧信息的任何分段關(guān)聯(lián)、以及如果源被識別為特定分段的一部分,則指定接收到的調(diào)用棧信息的源以便接收特殊內(nèi)容的方法的實施方式的流程圖。
參看圖2的概覽,圖示說明的是調(diào)用棧視覺化200。調(diào)用??梢员唤Y(jié)構(gòu)化為包含子例程狀態(tài)信息的數(shù)據(jù)。調(diào)用棧快照由用于應(yīng)用的每個線程在給定時刻的棧幀組成。調(diào)用棧中的每個棧幀對應(yīng)于對還沒有用返回終止的子例程的調(diào)用。在一些實施方式中,應(yīng)用的作者在工具庫(instrumentationlibrary)中進行鏈接,所述工具庫以規(guī)則間隔捕捉應(yīng)用的調(diào)用棧的跟蹤。在一些實施方式中,操作系統(tǒng)自身捕捉應(yīng)用的周期性調(diào)用棧信息。在一些實施方式中,調(diào)用棧信息表示應(yīng)用當(dāng)前操作狀態(tài)的快照,例如哪些線程已經(jīng)調(diào)用了哪些函數(shù)并且在進行快照時正在等待所述函數(shù)完成執(zhí)行。表示中的信息可以被歸一化。在一些實施方式中,調(diào)用棧信息是線程標(biāo)識符、對象標(biāo)識符、和方法名稱的集合。在一些實施方式中,調(diào)用棧信息被表示或存儲作為對象名稱以及方法名稱的數(shù)組或鏈表。
參看圖3的概覽,圖示說明的是描繪用于周期性捕捉和傳送調(diào)用棧信息的方法的實施方式的流程圖。在方法300中,用戶設(shè)備120處的棧信息收集模塊在階段310捕捉正在執(zhí)行的應(yīng)用的調(diào)用棧信息,且在階段320,生成和存儲所捕捉的調(diào)用棧信息的本地表示。模塊以周期間隔重復(fù)階段310捕捉和階段320存儲,如箭頭330所指示。在生成至少一個調(diào)用棧的表示之后,模塊在階段340一起分批處理捕捉到的調(diào)用棧信息的一個或多個表示的集合,且在階段350經(jīng)由網(wǎng)絡(luò)110傳送分批的調(diào)用棧信息的集合到后端服務(wù)器130。棧信息收集模塊可以是在用戶設(shè)備120中實現(xiàn)的例如asic的硬件電路,或者可以是由用戶設(shè)備120的操作系統(tǒng)或由鏈接到應(yīng)用實例124中的軟件庫來提供的軟件模塊。在一些實施方式中,向軟件應(yīng)用的作者提供軟件庫以包括在應(yīng)用中,并且應(yīng)用實例124使用一個或多個庫指令來調(diào)用棧信息聚集模塊。
詳細(xì)參看圖3,方法300包括調(diào)用棧信息的周期性捕捉(階段310)和捕捉到的調(diào)用棧信息的本地表示的生成(階段320)。
在階段310,用戶設(shè)備120處的棧信息收集模塊捕捉調(diào)用棧信息。如參考圖2所述,調(diào)用棧指示應(yīng)用的每個線程的狀態(tài)。在一些實施方式中,用戶設(shè)備120處的棧信息收集模塊在階段310通過調(diào)用調(diào)試函數(shù)而捕捉正在執(zhí)行的應(yīng)用的調(diào)用棧信息。該函數(shù)的結(jié)果是調(diào)用棧信息,例如跟蹤或跟蹤轉(zhuǎn)儲(tracedump)輸出。在一些實施方式中,調(diào)用棧信息是通過對輸出應(yīng)用執(zhí)行的狀態(tài)的操作系統(tǒng)指令的調(diào)用而捕捉的。在一些實施方式中,調(diào)用棧信息是通過對程序執(zhí)行環(huán)境(例如調(diào)試程序或perl解釋程序)或輸出應(yīng)用的執(zhí)行的狀態(tài)的虛擬機(例如java虛擬機)指令的調(diào)用而捕捉的。調(diào)用棧生成指令包括,但不限于:java中的“jstack”;perl中的“caller”;php中的“debug_backtrace”;linux中的“backtrace”;安卓(android)中的“android::callstack”;.net中的“environment.stacktrace”和“traceeventcache.callstack”;以及由mscorlib.dll庫來提供的c++中的“stacktrace”。
在階段320,棧信息收集模塊處理調(diào)用棧信息并生成捕捉到的調(diào)用棧信息的表示,其隨后存儲在用戶設(shè)備120本地的存儲器中。調(diào)用棧信息的本地表示可以在一些實施方式中被結(jié)構(gòu)化為對象名稱和方法名稱的數(shù)組或鏈表。在一些實施方式中,表示的結(jié)構(gòu)包括層級數(shù)據(jù)。在一些實施方式中,在階段320,調(diào)用棧收集模塊過濾掉沒有信息量的函數(shù)調(diào)用。在一些實施方式中,當(dāng)足以知道高等級函數(shù)被調(diào)用時,高等級函數(shù)所調(diào)用的低等級函數(shù)被過濾器移除。也就是,如果調(diào)用是在屏幕上繪制按鈕,并且足以知道該按鈕已經(jīng)被繪制,則沒有必要確切知道按鈕是怎樣被繪制的,且過濾器可以省略繪制按鈕時涉及的低等級調(diào)用。在一些實施方式中,本地表示被壓縮。
重復(fù)調(diào)用棧信息捕捉和存儲階段310和320,如箭頭330所指示。在一些實施方式中,在每十分之一秒(或更小)一個迭代到每六十秒(或更多)一個迭代的范圍中,以規(guī)則周期間隔重復(fù)這兩個階段。在一些實施方式中,周期間隔是固定的。在一些實施方式中,周期間隔是由應(yīng)用的作者來設(shè)定的。在一些實施方式中,周期間隔是變化的,例如以隨機間隔長度或者以例行調(diào)整以避免性能影響的間隔長度。
在階段320的調(diào)用棧信息的一個或多個表示生成并存儲之后,棧信息收集模塊一起分批處理信息(階段340)并且傳送分批的調(diào)用棧信息的集合到后端服務(wù)器130(階段350)。在一些實施方式中,在階段340一起分批處理的迭代調(diào)用棧表示的數(shù)目基于預(yù)先確定的迭代數(shù)目,例如每五個迭代。在一些實施方式中,在階段340一起分批處理的迭代調(diào)用棧表示的數(shù)目基于預(yù)先確定的時間長度,例如,每五分鐘收集所有信息。在一些實施方式中,迭代330繼續(xù),直到處理器需要下降到低于閾值利用百分比。在一些實施方式中,迭代330繼續(xù),直到網(wǎng)絡(luò)帶寬利用率下降到低于閾值水平。在一些實施方式中,迭代330繼續(xù),直到網(wǎng)絡(luò)質(zhì)量高于閾值。在一些實施方式中,信息不通過諸如3g或4g網(wǎng)絡(luò)連接的移動網(wǎng)絡(luò)連接傳送,而是保持直到wi-fi網(wǎng)絡(luò)連接可用。
調(diào)用棧信息可以在階段350使用任何合適網(wǎng)絡(luò)協(xié)議,例如傳輸控制協(xié)議(tcp)、流控制傳輸協(xié)議(sctp)或用戶數(shù)據(jù)報協(xié)議(udp)來傳送。在一些實施方式中,調(diào)用棧信息使用文件傳輸協(xié)議(ftp)來傳送。在一些實施方式中,調(diào)用棧信息使用在tcp、sctp或udp中的一個上分層的定制協(xié)議來傳送。
參看圖4的概覽,圖示說明的是描繪用于收集和比較用于多個遠(yuǎn)程設(shè)備的調(diào)用棧信息的方法400的實施方式的流程圖。棧聚集服務(wù)器140從應(yīng)用的多個“第一”實例124收集多個成功跟蹤,每個實例在多個遠(yuǎn)程設(shè)備中的相應(yīng)遠(yuǎn)程設(shè)備120上執(zhí)行(階段410)。在階段410收集至少一些成功跟蹤之后,棧聚集服務(wù)器140從在遠(yuǎn)程設(shè)備120上執(zhí)行的應(yīng)用的“第二”實例124接收調(diào)用棧信息(階段430)。棧聚集服務(wù)器140確定從應(yīng)用的第二實例124接收到的調(diào)用棧信息與從第一應(yīng)用實例中接收到的多個成功跟蹤中的調(diào)用棧信息之間的相似性(階段450)。棧聚集服務(wù)器140隨后響應(yīng)于階段450處從應(yīng)用的第二實例124接收到的調(diào)用棧信息與階段410中收集的成功跟蹤相似的肯定確定,將遠(yuǎn)程用戶設(shè)備120添加到被預(yù)測為可能執(zhí)行特定目標(biāo)的設(shè)備群中(階段470)。
更詳細(xì)參看圖4,方法400開始于棧聚集服務(wù)器140從應(yīng)用的多個實例124收集多個成功跟蹤,每個實例在多個遠(yuǎn)程設(shè)備中的相應(yīng)遠(yuǎn)程設(shè)備120處執(zhí)行(階段410)。在階段410的收集包括由棧聚集服務(wù)器140在階段422從在第一遠(yuǎn)程設(shè)備120上執(zhí)行的應(yīng)用的第一實例124(例如參看圖1,在用戶設(shè)備120(a)上執(zhí)行的應(yīng)用示例124(a))接收調(diào)用棧信息以及在階段424接收應(yīng)用的第一實例124(a)已經(jīng)執(zhí)行了目標(biāo)的指示符。棧聚集服務(wù)器140響應(yīng)于該指示符,隨后在階段426聚集接收到的導(dǎo)致執(zhí)行目標(biāo)的調(diào)用棧信息并且將聚集的信息看作成功跟蹤。在階段410的成功跟蹤的收集在進行中,并且可以與棧信息的接收同時、或者在其之后繼續(xù),以便與成功跟蹤相比較。
在階段422,棧聚集服務(wù)器140從在第一遠(yuǎn)程設(shè)備120(a)上執(zhí)行的應(yīng)用的第一實例124(a)接收調(diào)用棧信息。遠(yuǎn)程用戶設(shè)備120提交信息以由服務(wù)器140接收,例如,如參考圖3中所述。在一些實施方式中,當(dāng)棧聚集服務(wù)器140接收到調(diào)用棧信息時,服務(wù)器140存儲接收到的信息,例如在存儲134中。在一些實施方式中,棧聚集服務(wù)器140識別接收到的調(diào)用棧信息的源,例如與第一應(yīng)用實例124(a)和/或第一遠(yuǎn)程設(shè)備120(a)相關(guān)聯(lián)的標(biāo)識符。在一些實施方式中,棧聚集服務(wù)器140聚集所接收到的信息和之前從相同應(yīng)用實例124(a)和/或相同遠(yuǎn)程設(shè)備120(a)接收的信息。在一些實施方式中,棧聚集服務(wù)器140過濾接收到的信息,例如過濾掉沒有信息量的函數(shù)調(diào)用。在一些實施方式中,當(dāng)足以知道高級函數(shù)被調(diào)用,高級函數(shù)所調(diào)用的低級函數(shù)就會被過濾器移除。在一些實施方式中,過濾器動態(tài)識別在從所有應(yīng)用實例接收的所有調(diào)用棧信息上一致的函數(shù)調(diào)用,并且移除所識別的函數(shù)調(diào)用信息。在一些實施方式中,對于在執(zhí)行模式之間進行區(qū)分沒有用的任何調(diào)用棧信息可以被過濾并且移除。在一些實施方式中,當(dāng)棧聚集服務(wù)器140在階段430從應(yīng)用實例接收調(diào)用棧信息時,服務(wù)器140也將接收到的信息看作在階段422的信息接收。
在階段424,棧聚集服務(wù)器140接收應(yīng)用的第一實例124(a)已經(jīng)執(zhí)行了目標(biāo)的指示符。在一些實施方式中,指示符是來自應(yīng)用實例124的明確指示符。在一些實施方式中,指示符是通過分析在階段422接收到的調(diào)用棧信息而識別的。在一些實施方式中,目標(biāo)是特定函數(shù)調(diào)用的執(zhí)行(或函數(shù)調(diào)用的組);在一些這樣的實施方式中,特定目標(biāo)已被執(zhí)行的指示符是特定函數(shù)調(diào)用(或函數(shù)調(diào)用的組)已被執(zhí)行,其通過在接收到的調(diào)用棧信息中的函數(shù)的存在而被識別。在一些實施方式中,指示符是從后端服務(wù)器130接收的。在一些實施方式中,目標(biāo)通過用戶設(shè)備120和后端服務(wù)器130之間的交互而達成,其中服務(wù)器130(向棧聚集服務(wù)器140)報告成功完成目標(biāo)的指示符。在一些實施方式中,指示符是接收到的調(diào)用棧信息是用于與成功完成該目標(biāo)相一致的執(zhí)行模式的。在一些這樣的實施方式中,棧聚集服務(wù)器140使用聚類算法來確定接收到的調(diào)用棧信息是否類似于已經(jīng)完成目標(biāo)的應(yīng)用實例的調(diào)用棧信息,如果是的話,指示該應(yīng)用實例也已經(jīng)完成了目標(biāo)。在一些這樣的實施方式中,聚類算法生成置信度分?jǐn)?shù)且棧聚集服務(wù)器140使用高于預(yù)先確定的閾值的置信度分?jǐn)?shù)作為應(yīng)用實例已經(jīng)執(zhí)行了目標(biāo)的指示。在階段424,棧聚集服務(wù)器140確定應(yīng)用的第一實例124(a)已經(jīng)執(zhí)行了目標(biāo),使得在階段422接收的調(diào)用棧信息是與可能包括目標(biāo)的執(zhí)行的執(zhí)行模式相一致的調(diào)用棧信息。
在階段426,棧聚集服務(wù)器140響應(yīng)于指示符,聚集所接收到的導(dǎo)致執(zhí)行目標(biāo)的調(diào)用棧信息,并且將聚集的信息看作成功跟蹤。在一些實施方式中,聚集的調(diào)用棧信息和/或指示符被存儲例如在存儲134中。在階段410收集的多個成功跟蹤包括來自階段426的用于多個應(yīng)用實例124中每個應(yīng)用實例的所聚集的調(diào)用棧信息。
在階段430,在階段410收集至少一些成功跟蹤之后,棧聚集服務(wù)器140從在遠(yuǎn)程設(shè)備120上執(zhí)行的應(yīng)用的實例124(例如在用戶設(shè)備120(b)上執(zhí)行的應(yīng)用實例124(b),如圖1中所示)接收調(diào)用棧信息。與在階段410處在多個實例中使用的應(yīng)用的各個“第一實例”相比較,階段430、450和470中的應(yīng)用實例被描述為應(yīng)用的“第二實例”。在一些實施方式中,應(yīng)用的“第二實例”可能已經(jīng)作為“第一實例”參與,而在其他實施方式中,“第二實例”可能被特定地從已經(jīng)作為“第一實例”參與的實例中排除。棧聚集服務(wù)器140經(jīng)由網(wǎng)絡(luò)110從遠(yuǎn)程用戶設(shè)備120接收調(diào)用棧信息。遠(yuǎn)程用戶設(shè)備120提交信息以便由服務(wù)器140接收,例如如參考圖3所述。在一些實施方式中,棧聚集服務(wù)器140過濾接收到的信息,例如過濾掉沒有信息量的函數(shù)調(diào)用。在一些實施方式中,過濾器移除在從應(yīng)用的所有實例接收的所有調(diào)用棧信息中一致的函數(shù)調(diào)用。在一些實施方式中,對于在執(zhí)行模式之間進行區(qū)分沒有用處的任何調(diào)用棧信息可以被過濾并移除。
在階段450,棧聚集服務(wù)器140確定在階段430從應(yīng)用的第二實例124(b)接收的調(diào)用棧信息與在階段410收集的多個成功跟蹤中的調(diào)用棧信息之間的相似性。在一些實施方式中,相似性是通過向接收到的調(diào)用棧信息施加聚類算法來識別的。諸如層級聚類算法的聚類算法識別具有高相似程度的接收到的調(diào)用棧信息的聚類。一個或多個這樣的聚類與成功跟蹤相關(guān)聯(lián),且如果在階段430從應(yīng)用的第二實例124(b)接收的調(diào)用棧信息是與成功跟蹤相關(guān)聯(lián)的一個聚類分組的,則在階段430接收的調(diào)用棧信息是用于可能是成功跟蹤一部分的應(yīng)用實例的。在一些實施方式中,相似的程度是在階段450通過相似性分?jǐn)?shù)來測量的,相似性分?jǐn)?shù)必須高于閾值值以便在階段430接收的調(diào)用棧信息被充分認(rèn)為類似于調(diào)用棧信息的特定聚類。在一些實施方式中,棧聚集服務(wù)器140確定調(diào)用棧信息將該用戶設(shè)備從可能執(zhí)行目標(biāo)的用戶設(shè)備的分段中排除。也就是,在一些情形中,在接收到的調(diào)用棧信息和在階段410中收集的多個成功跟蹤中的調(diào)用棧信息之間不存在相似性。在一些實施方式中,該不相似性被記錄作為替選的分段。
在階段470,響應(yīng)于在階段450從應(yīng)用的第二實例124接收到的調(diào)用棧信息與在階段410收集的成功跟蹤相似的肯定確定,棧聚集服務(wù)器140將遠(yuǎn)程用戶設(shè)備120添加到預(yù)測為可能執(zhí)行特定目標(biāo)的設(shè)備群中(階段470)。在一些實施方式中,例如在存儲134中與用戶設(shè)備的標(biāo)識符相關(guān)聯(lián)的記錄被利用標(biāo)簽或標(biāo)識符更新,所述標(biāo)簽或標(biāo)識符指示用戶設(shè)備托管處于可能執(zhí)行特定目標(biāo)的特定分段中的應(yīng)用實例。
參考圖5的概覽,圖示說明的是描繪用于對所接收到的調(diào)用棧信息的分段關(guān)聯(lián)的識別作出響應(yīng)的方法500的實施方式的流程圖。棧聚集服務(wù)器140從在遠(yuǎn)程用戶設(shè)備120上執(zhí)行的應(yīng)用的實例124接收調(diào)用棧信息,如參考圖4所述。棧聚集服務(wù)器140在方法500的階段530處基于從在遠(yuǎn)程設(shè)備上執(zhí)行的應(yīng)用接收的調(diào)用棧信息來識別遠(yuǎn)程設(shè)備120的分段關(guān)聯(lián)。棧聚集服務(wù)器140在階段540確定是否存在所識別的分段的特殊內(nèi)容,并且如果是的話,在階段550指定遠(yuǎn)程設(shè)備以便特殊內(nèi)容的接收。棧聚集服務(wù)器140在階段560存儲接收到的調(diào)用棧信息和所識別的分段關(guān)聯(lián)到知識庫中,例如存儲在數(shù)據(jù)存儲134中。
更詳細(xì)參看圖5,棧聚集服務(wù)器140在方法500的階段530基于從在遠(yuǎn)程設(shè)備上執(zhí)行的應(yīng)用接收到的調(diào)用棧信息識別遠(yuǎn)程設(shè)備120的分段關(guān)聯(lián)。調(diào)用棧信息是由棧聚集服務(wù)器140以之前描述的方式從遠(yuǎn)程用戶設(shè)備120接收的。也就是,用戶設(shè)備120捕捉調(diào)用棧信息并經(jīng)由網(wǎng)絡(luò)110傳送信息到棧聚集服務(wù)器140,其接收信息。棧聚集服務(wù)器140基于接收到的調(diào)用棧信息識別用戶設(shè)備120的分段從屬關(guān)系(affiliation),如參考圖4所述。在一些實施方式中,棧聚集服務(wù)器140使用聚類算法來比較接收到的調(diào)用棧信息與之前接收到的信息,并且識別之前接收到的信息中最類似于新接收到的信息的子組。所識別的子組對應(yīng)于群分段。棧聚集服務(wù)器140在階段530基于這些比較識別用戶設(shè)備的分段關(guān)聯(lián)。
在階段540,棧聚集服務(wù)器140隨后確定是否存在所識別的分段的特殊內(nèi)容。在一些實施方式中,如果所識別的特定分段可能執(zhí)行特定目標(biāo),則可能存在指定用于該分段的內(nèi)容,其中,該內(nèi)容意味著幫助執(zhí)行特定目標(biāo)。在一些實施方式中,該內(nèi)容是由特定軟件應(yīng)用的作者或供應(yīng)商指定。在一些實施方式中,該內(nèi)容由第三方(或者應(yīng)第三方請求而)指定。在一些實施方式中,是否存在特殊內(nèi)容的確定與調(diào)用棧信息的接收相分離。也就是,棧聚集服務(wù)器140可以在第一時間段接收調(diào)用棧信息,且隨后在稍后的第二時間段確定存在用于所識別的分段的特殊內(nèi)容。
在階段550,如果棧聚集服務(wù)器140在階段540確定存在特殊內(nèi)容以便傳遞到在階段530處識別的分段,則服務(wù)器140在階段550指定遠(yuǎn)程設(shè)備以便特殊內(nèi)容的接收。在一些實施方式中,棧聚集服務(wù)器140使得內(nèi)容服務(wù)器160傳送內(nèi)容到用戶設(shè)備120。在一些實施方式中,棧聚集服務(wù)器140設(shè)置標(biāo)志或記錄由內(nèi)容服務(wù)器160所使用的指示,以用于識別特定內(nèi)容的指定的接收者。在一些這樣的實施方式中,棧聚集服務(wù)器140用與正在托管應(yīng)用實例124的用戶設(shè)備120相關(guān)聯(lián)的記錄來更新知識庫。更新向內(nèi)容服務(wù)器160指出,用戶設(shè)備120應(yīng)該接收該特殊內(nèi)容。內(nèi)容服務(wù)器160響應(yīng)于該記錄,隨后經(jīng)由網(wǎng)絡(luò)110傳送內(nèi)容到用戶設(shè)備。
在階段560,棧聚集服務(wù)器140將接收到的調(diào)用棧信息和所識別的分段關(guān)聯(lián)存儲到知識庫中,例如在數(shù)據(jù)存儲134處。在一些實施方式中,該數(shù)據(jù)被以與參考圖4描述的相同方式存儲。
圖6是適合于在實現(xiàn)這里所述的計算機化組件時使用的計算系統(tǒng)910的框圖。概覽來看,計算系統(tǒng)910包括至少一個處理器950以用于根據(jù)指令執(zhí)行動作,還包括一個或多個存儲設(shè)備970和/或975來存儲指令和數(shù)據(jù)。圖示說明的計算系統(tǒng)910包括經(jīng)由總線915與存儲器970和至少一個網(wǎng)絡(luò)接口控制器920通信的一個或多個處理器950,至少一個網(wǎng)絡(luò)接口控制器920具有用于連接到外部網(wǎng)絡(luò)設(shè)備924,例如參與網(wǎng)絡(luò)(諸如圖1中所示的網(wǎng)絡(luò)110、160和180)的網(wǎng)絡(luò)接口922。一個或多個處理器950還經(jīng)由總線915與一個或多個i/o接口930上的任何i/o設(shè)備以及任何其他設(shè)備980通信。所圖示說明的處理器950合并,或直接連接到,高速緩存存儲器975。通常,處理器將執(zhí)行從存儲器接收到的指令。
更詳細(xì)地,處理器950可以是處理指令的任何邏輯電路,指令例如是從存儲器970或高速緩存975中取出的指令。在許多實施例中,處理器950是微處理器單元或?qū)S锰幚砥?。計算設(shè)備910可以基于能夠按這里所述操作的任何處理器或者處理器的組。處理器950可以是單核或多核處理器。處理器950可以是多個處理器。
存儲器970可以是適用于存儲計算機可讀數(shù)據(jù)的任何設(shè)備。存儲器970可以是具有固定存儲的設(shè)備或者用于讀取可移動存儲媒體的設(shè)備。存儲器970可以包括任何形式的非易失存儲器、媒體和存儲器設(shè)備、半導(dǎo)體存儲器設(shè)備(例如eprom、eeprom、sdram和閃存存儲器設(shè)備)、磁盤、磁光盤、和/或光盤(例如cdrom、dvd-rom以及
高速緩存存儲器975通常是計算機存儲器的形式,所述計算機存儲器布置在靠近處理器950,例如用于快速讀取時間。在一些實施方式中,高速緩存存儲器975是處理器950的一部分,或者與處理器950在相同芯片上。在一些實施方式中,存在多個等級的高速緩存975,例如l2和l3高速緩存層。
網(wǎng)絡(luò)接口控制器920經(jīng)由網(wǎng)絡(luò)接口922管理數(shù)據(jù)交換。網(wǎng)絡(luò)接口控制器920控制網(wǎng)絡(luò)通信的osi模型的物理和數(shù)據(jù)鏈路層。在一些實施方式中,一些網(wǎng)絡(luò)接口控制器的任務(wù)是由處理器950控制的。在一些實施方式中,網(wǎng)絡(luò)接口控制器920是處理器950的一部分。在一些實施方式中,計算系統(tǒng)910具有多個網(wǎng)絡(luò)接口控制器920。在一些實施方式中,網(wǎng)絡(luò)接口922是物理網(wǎng)絡(luò)鏈路的連接點,例如rj45連接器。在一些實施方式中,網(wǎng)絡(luò)接口控制器920支持無線網(wǎng)絡(luò)連接且接口端口922是無線接收機/發(fā)射機。通常,計算設(shè)備910經(jīng)由到網(wǎng)絡(luò)接口922的物理或無線鏈路來與其他計算設(shè)備924交換數(shù)據(jù)。在一些實施方式中,網(wǎng)絡(luò)接口控制器920實現(xiàn)諸如以太網(wǎng)的網(wǎng)絡(luò)協(xié)議。
其他計算設(shè)備924經(jīng)由網(wǎng)絡(luò)接口922(有時被稱為“端口”或“物理端口”,以便區(qū)分協(xié)議級端口)連接到計算設(shè)備910。其他計算設(shè)備924可以是對等計算設(shè)備、網(wǎng)絡(luò)設(shè)備、或者具有網(wǎng)絡(luò)功能的任何其他計算設(shè)備。在一些實施方式中,其他計算設(shè)備924是諸如集線器、橋接器、交換機、或路由器的網(wǎng)絡(luò)設(shè)備,使得其他計算設(shè)備924將計算設(shè)備910連接到諸如互聯(lián)網(wǎng)的數(shù)據(jù)網(wǎng)絡(luò)。
在一些使用中,i/o接口930支持輸入設(shè)備和/或輸出設(shè)備(未示出)。在一些使用中,輸入設(shè)備和輸出設(shè)備被集成到相同硬件中,例如在觸摸屏中。在一些使用中,諸如在服務(wù)器場境下,沒有i/o接口930或不使用i/o接口930。在一些使用中,附加的其他組件980與計算機系統(tǒng)910通信,例如經(jīng)由通用串行總線(usb)連接的外部設(shè)備。
其他設(shè)備980可以包括i/o接口930、外部串行設(shè)備端口以及任何附加協(xié)處理器。在一些實施方式中,計算系統(tǒng)910包括接口(例如通用串行總線(usb)接口),用于連接輸入設(shè)備(例如鍵盤、麥克風(fēng)、鼠標(biāo)或其他指示設(shè)備)、輸出設(shè)備(例如視頻顯示器、揚聲器、可刷新盲文終端或打印機)、或附加存儲器設(shè)備(例如便攜閃存驅(qū)動器或外部媒體驅(qū)動器)。在一些實施方式中,i/o設(shè)備被合并到計算系統(tǒng)910中,例如平板設(shè)備上的觸摸屏。在一些實施方式中,計算設(shè)備910包括附加設(shè)備980,諸如協(xié)同處理器,例如算術(shù)協(xié)同處理器,其可以利用高精確性或復(fù)雜計算來協(xié)助處理器950。
本主題的實施方式以及在本說明書中所述的操作可以用數(shù)字電子電路來實現(xiàn),或者用在有形介質(zhì)、固件、或硬件上體現(xiàn)的計算機軟件來實現(xiàn),包括本說明書中公開的結(jié)構(gòu)及其結(jié)構(gòu)等價物,或者它們一個或多個的組合。本說明書中所述的主題的實施方式可以實現(xiàn)為體現(xiàn)在有形介質(zhì)上的一個或多個計算機程序,即計算機程序指令的一個或多個模塊,在一個或多個計算機存儲介質(zhì)上編碼,以便由數(shù)據(jù)處理裝置執(zhí)行或者控制數(shù)據(jù)處理裝置的操作。計算機存儲介質(zhì)可以是計算機可讀存儲設(shè)備、計算機可讀存儲襯底、隨機或串行存取存儲陣列或設(shè)備、或者它們中一個或多個的組合,或者包括在其中。計算機存儲介質(zhì)還可以是一個或多個獨立部件或介質(zhì)(例如多個cd、盤、或者其他存儲設(shè)備),或者包括在其中。計算機存儲介質(zhì)可以是有形且非暫時的。
本說明書中所述的操作可以被實現(xiàn)為由數(shù)據(jù)處理裝置對存儲在一個或多個計算機可讀存儲設(shè)備上或從其他源接收的數(shù)據(jù)執(zhí)行的操作。過程和邏輯流程還可以由專用邏輯電路來執(zhí)行,且裝置也可以被實現(xiàn)為專用邏輯電路,專用邏輯電路例如fpga(現(xiàn)場可編程門陣列)或asic(專用集成電路)。
盡管本說明書包含許多特定實現(xiàn)細(xì)節(jié),這些不應(yīng)該被解釋為對任何發(fā)明的范圍或可以要求的范圍的限制,而是作為對特定發(fā)明的特定實施方式的具體特征的描述。在分立的實施方式的場境中的本說明書中所述的某些特征還可以在單個實施方式中組合實現(xiàn)。反之,在單個實施方式的語境中所述的各種特征也可以在分別的多個實施方式中或者以任何合適的子組合的方式來實現(xiàn)。而且,盡管特征可以如上被描述為以某些組合來動作且甚至最初就是這樣被要求保護的,但來自所要求保護的組合的一個或多個特征在一些情況下可以從組合中剝離,且所要求保護的組合可以被導(dǎo)向子組合或子組合的變型。
對“或”的引用可以被解釋為包括,使得使用“或”描述的任何術(shù)語可以指示單個、多于一個、或所有所描述的術(shù)語中的任何術(shù)語。標(biāo)簽“第一”、“第二”、“第三”等等不必意味著指示次序且通常僅僅用來在相似或類似的項目或元素之間進行區(qū)分。
因此,已經(jīng)描述了本主題的特定實施方式。其他實施方式也在所附權(quán)利要求的范圍內(nèi)。在一些情況下,權(quán)利要求中所述的動作可以以不同次序來執(zhí)行且仍舊獲得所需的結(jié)果。此外,附圖中所描繪的過程不必要求所示的特定次序或順序的次序來獲取所需結(jié)果。在某些實施方式中,可以利用多任務(wù)或并行處理。