計算隨機情況下HASH發生碰撞的概率

2021-05-28 04:49:16 字數 535 閱讀 9234

// 計算隨機情況下hash碰撞率

// 不碰撞率

// f(n,1) = 1.0;

// f(n,2) = 1.0-1/n;

// f(n,k+1) = f(n,k)*(n-k)/n

// f(n,k) = (n-1)*(n-2)...(n-(k-1))/(n^(k-1))

// 大約演算法:

// 根據: 當x接近0的時候, 1+x = e^x 

// 設 p = (k*k)/(2.0*n)

//  f(n,k) = 1.0/(e^p);

// // 碰撞率: 1.0 - f(n,k)

// 來自:

//

// 經驗資料

// 當 k*k  = n 的時候, 可近視認為碰撞率為 40%

#include "stdafx.h"

double getrate(long k, long n)

return 1-rate;

}int _tmain(int argc, _tchar* argv)

什麼情況下會發生Full GC?

當呼叫system.gc 時,是建議jvm進行full gc,只是建議,不是一定會發生,但一般情況下,jvm也會進行full gc,進行full gc時會讓使用者執行緒暫停執行,建議能不使用此方法就不使用,讓虛擬機器自己去管理它的記憶體 老年代空間只有在新生代空間不足時,進入老年代空間或者建立了大物...

併發insert情況下會發生重複的資料插入問題

併發insert情況下會發生重複的資料插入問題 1.背景 用多執行緒接收推送的訂單資料,把接收的訂單資料存到乙個表中,實現的需求是 如果接收的訂單訊息在資料庫中已經存在,那麼執行update操作 如果沒有存在,那麼執行insert操作 邏輯 if 該訂單在資料庫表中存在 else 執行緒啟動後,發現...

併發insert情況下會發生重複的資料插入問題

1.背景 用多執行緒接收推送的訂單資料,把接收的訂單資料存到乙個表中,實現的需求是 如果接收的訂單訊息在資料庫中已經存在,那麼執行update操作 如果沒有存在,那麼執行insert操作 邏輯 if 該訂單在資料庫表中存在 else 執行緒啟動後,發現 資料庫表中有兩條oderid相同的記錄 通過檢...