function new_index_manager()
local res = }
local public = {}
function public.take_away_index()
local t = res[1]
if table.getn(t) >= 1 then
local ret = t[1]
t[1] = t[1] + 1
if t[1] > t[2] then
res[1] = res[ table.getn( res ) ]
res[ table.getn( res ) ] = nil
endreturn ret
endreturn nil
endfunction public.take_back_index( _index )
local t =
res[ table.getn( res ) + 1] = t
if table.getn( res ) > 50 then
public.tidy()
endend
function public.tidy()
local reflash = true
--有新合併發生則繼續進行合併檢測
while reflash do
reflash = false
--進行合併
local len = table.getn( res )
for i=1, len do
for j=i+1, len do
if table.getn(res[i]) > 1 and table.getn(res[j]) > 1 then
local be_mixed = true
--判斷交集情況
if res[i][2]+1 < res[j][1] or res[j][2]+1 < res[i][1] then
be_mixed = false
end--合併
if be_mixed then
local t = {}
if res[i][1] < res[j][1] then
t[1] = res[i][1]
else
t[1] = res[j][1]
endif res[i][2] > res[j][2] then
t[2] = res[i][2]
else
t[2] = res[j][2]
endres[i] = t
res[j] = {}
reflash = true
endend
endend
--重新整理資料
local t = {}
local len = table.getn( res )
for i=1, len do
if table.getn(res[i]) > 1 then
t[ table.getn(t) + 1 ] = res[i]
endend
res = t
endend
function public.show()
local len = table.getn( res )
for i=1, len do
print(res[i][1], res[i][2])
endend
return public
endlocal index_manager = new_index_manager()
local t_record = {}
for i=1, 1000 do
local r = math.random(1,10)
if r < 6 then
t_record[ table.getn(t_record) + 1 ] = index_manager.take_away_index()
else
if table.getn(t_record) > 1 then
index_manager.take_back_index(t_record[1])
t_record[1] = t_record[ table.getn(t_record) ]
t_record[ table.getn(t_record) ] = nil
endend
endindex_manager.show()
print("---------")
index_manager.show()
>lua -e "io.stdout:setvbuf 'no'" "123.lua"
471 99999999
1 451
454 456
458 462
464 464
---------
471 99999999
1 451
454 456
458 462
464 464
>exit code: 0
#includeusing namespace std;
class uid_factory
long create_uid()
return ret;
} return 0;
} bool create_need_uid(long _uid)
if( _uid < e)
return true;}}
} return false;
} void delete_uid(long _uid)
res.push_back( make_pair(_uid, _uid) );
if( res.size() > 50 )
tidy_res();
} void tidy_res()
;
寫了乙個wwwscan的路徑生成工具
drupal 6.22 htaccess drupal 6.22 changelog.txt drupal 6.22 cron.php drupal 6.22 index.php drupal 6.22 install.mysql.txt drupal 6.22 install.pgsql.txt ...
寫了個UIButton的分類
個人寫 有整理強迫症,不喜歡uibutton每次都需要重新寫個函式,就寫了個分類 一些有重複呼叫必要的函式還是不要用此分類的好 inte ce uibutton block handlecontrolevent withblock 使用block處理button事件 入參 event 觸發型別 例 ...
寫了個NSObject的擴充套件類
乙個object的分類,可以在呼叫performselector 函式的時候不限制傳參的數量 bool需要封裝一層 為了讓performselector 後面帶入的引數可識別,很有必要將bool封裝一層,用於在後面解析函式時候的識別 inte ce boolclass nsobject proper...