高效能的多對少集合對映調整方法

2021-09-27 07:24:43 字數 837 閱讀 6254

當一大一小兩個集合存在關聯關係時,每次小的集合中元素的位置調整,需遍歷大集合來調整其對應的關聯關係,開銷較大,本文介紹一種方法,使得無需調整大集合也能保持其對應的關聯關係。

通過引入中間集合來記錄大集合到小集合的對映關係,大集合中的元素始終指向中間集合中的元素,當小集合中的元素位置發生調整時,無需遍歷修改大集合,而只需修改中間集合即可保持大集合與小集合的對映關係。

#include 

#include

#include

#define max 16

typedef struct tupletuple;

void

sort

(tuple tuple,

int midle_array)

}}}int

main()

//假設大集合中某個元素對應小集合的位置為tmp

int tmp =5;

//排序前,輸出結果a

printf

("%d\n"

,tuple[midle_array[tmp]

].data)

;//元組排序

sort

(tuple,midle_array)

;//排序後,輸出結果b

printf

("%d\n"

,tuple[midle_array[tmp]

].data)

;//排序前後,兩次列印的結果一樣,則成功

return0;

}

上述方法常用於啟發法和快取方案的結合,當快取了集合中的某元素,應用啟發調整集合中元素的位置後,應用該方法,能保證快取位置的正確。

hibernate的多對多對映

平時工作中雖然也經常提到多對多的對映,但是在實際操作中運用到還是第一次.組group和角色role,多對多的對映.role的對映檔案 code start with 1000 code group的對映檔案 code start with 1000 code 頁面支援雙向操作,即可在角色中新增刪除組...

對mapReduce效能調優的總結

mapreduce效能調優的著手點有如下幾個 1 map輸出的壓縮 2 reducetask數量的設定 3 shuffle資料處理過程中的一些引數 分別如下 一 map的輸出壓縮 設定方法有兩種 1 通過configuration.set name,value 設定 2 通過配置檔案mapred s...

對大流量,高併發,高效能的理解

面試的時候經常會被問題 你是如何解決 的高併發問題 據我理解感覺此問題並不是很嚴格,面試官應該想問的是如何降低伺服器壓力,提高 效能,支援 的大流量訪問,不知道理解的是否正確 我的理解是 高併發 指同一時刻訪問同一功能的人數巨多,優化做得不好的情況下,可能導致讀出 寫入髒資料,死鎖等問題 嚴格來說 ...