青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,請移步
叫我abc

常用鏈接

留言簿(12)

隨筆分類

我的博客

搜索

  •  

積分與排名

  • 積分 - 306720
  • 排名 - 84

最新評論

閱讀排行榜

接著昨天的cache_flush,首先進入以此開頭的這個代碼塊
        if (children) {
            
while (j<children->number) {
這個代碼塊主要是處理一些取消內(nèi)存關(guān)系的cache節(jié)點,并預(yù)估需要重新分配的children大小。這里有一個先決條件是,cache是按child_id升序排序的,同樣children也是升序排序的。

                if (child == (children->children[j] | UNSET_MASK)) {
                    
--k;
                    head
->parent=-1;
                    
--sz;
                    
++head;
                }
從上面可以看出,如果是取消內(nèi)存關(guān)系的cache節(jié)點,之前統(tǒng)計的cache節(jié)點數(shù)量sz就要減一。估計有些人會納悶為什么還要減一,畢竟當初統(tǒng)計節(jié)點數(shù)量的時候,就沒有把UNSET_MASK的cache節(jié)點算進去。這是因為sz的作用并不是用來表示節(jié)點的數(shù)量,而是表示children需要拓展的尺寸,由于標記UNSET_MASK的child要從children中刪除,那么children數(shù)組中就有空閑的位置,所以需要拓展的尺寸也就減少,sz就減一了。

再看
                if (head>=next) {
                    
goto copy_next;
                }
如果cache中的所有節(jié)點都是UNSET_MASK的話,就會跳到copy_next處,移動children的其他部分來填充被刪除的那些child_id。copy_next的代碼我就不貼了。

                else if ((child & ~UNSET_MASK) < children->children[j]) {
                    
break;
                }
如果進入這個判斷,則說明cache中不全是UNSET_MASK節(jié)點,還包含添加新關(guān)系的節(jié)點存在。雖然這個判斷不直觀,但是鑒于他們都是升序排序的,這樣的判斷也就行得通了。

進入下面的代碼,就是利用上面計算出來的sz拓展children的時候了。
        if (sz>0{
            children
=node->u.n.children=link_expand(node->u.n.children,sz);
            assert(children);
            memmove(children
->children + j + sz, children->children +j , (children->number - j) * sizeof(int));
            j
+=sz;
        }
其中的link_expand就是拓展數(shù)組的地方,里面的實現(xiàn)基本上就是realloc,策略不同而已。
拓展之后,用移動內(nèi)存的方式,在children數(shù)組中留個空缺,容納還沒有處理的cache節(jié)點。空缺要留得足夠大,搞不好剩下的cache節(jié)點都是添加的。

接下來有再進入一個代碼塊
while(j<children->number) {
這個while循環(huán)和上面講述的有點像,不過其任務(wù)不再是計算需要拓展的空間。
第1個if,仍舊是從children中刪除關(guān)系的。但是第2個if,則不再是一個break了
            else if ((child & ~UNSET_MASK) < children->children[j]) {
                assert(child 
>= 0 );
                children
->children[k]=child;
                head
->parent=-1;
                
++head;
                
--j;
            }
新添加的child_id,放到剛才拓展children時騰出來的空間中去,并保持children升序排序,這一點很重要。

剩下的代碼就沒什么了,就是復(fù)制child_id到children中,無論child_id來自children還是cache,總之要保證他們升序排序。

看起來,cache_flush是看完了。但是仍舊覺得這個函數(shù)無比爛,有太多的地方,需要用人類有限的處理能力去進行分析和維護。
明天,是應(yīng)該看看之前那些暫時略過不看的代碼了。到這里為止,只是跟著程序一條分支看看而已,還有其他分支呢。
posted on 2008-09-16 21:41 LOGOS 閱讀(1727) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合电影| 99精品国产热久久91蜜凸| 亚洲夜间福利| 欧美成人激情视频免费观看| 亚洲欧洲精品一区二区| 黄网站色欧美视频| 国产一区在线免费观看| 欧美日韩精品免费观看视频完整| 亚洲一区二区欧美日韩| 麻豆av一区二区三区久久| 亚洲欧美日韩中文播放| 亚洲人成网站999久久久综合| 在线观看亚洲精品| 在线看一区二区| 国产主播一区二区三区| 国产精品看片资源| 影音先锋久久| 黄色成人免费网站| 日韩视频二区| 欧美亚洲尤物久久| 久久av一区二区三区漫画| 亚洲欧美日韩国产另类专区| 亚洲少妇一区| 欧美1区2区| 久久婷婷亚洲| 一区二区三区精品| 亚洲图片激情小说| 另类天堂av| 美日韩丰满少妇在线观看| 欧美激情中文不卡| 极品尤物一区二区三区| 午夜日韩在线观看| 99国内精品| 国产精品九九久久久久久久| 欧美剧在线观看| 久热爱精品视频线路一| 国产精品一区二区在线观看不卡| 亚洲精品久久久久久久久久久| 久久久久久久久久久久久久一区| 欧美国产免费| 欧美一区免费| 国产日韩精品一区二区三区| 久久午夜国产精品| 欧美理论在线播放| 欧美大片免费观看在线观看网站推荐| 欧美日韩综合在线免费观看| 亚洲清纯自拍| 91久久国产综合久久| 欧美乱人伦中文字幕在线| 红杏aⅴ成人免费视频| 亚洲视频电影在线| 久久久久久久999精品视频| 国产欧美日韩一区二区三区在线| 一区二区三区 在线观看视频| 免费短视频成人日韩| 欧美精品自拍偷拍动漫精品| 亚洲欧美久久久| 亚洲在线观看| 亚洲黄色免费网站| 久久国产主播精品| 亚洲午夜视频| 欧美剧在线免费观看网站| 亚洲精品1区| 一区二区三区四区在线| 欧美无砖砖区免费| 亚洲午夜伦理| 亚洲综合欧美| 日韩一二三区视频| 美日韩免费视频| 欧美日本精品| 亚洲一级在线| 西西裸体人体做爰大胆久久久| 禁久久精品乱码| 亚洲人永久免费| 一色屋精品视频免费看| 亚洲人成人99网站| 欧美精品久久一区二区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲电影下载| 国产精品日韩精品欧美精品| 久久精品国产精品 | 欧美日本韩国在线| 亚洲美女啪啪| 亚洲影视综合| 欧美影院视频| 欧美高清不卡在线| 亚洲一区二区三区国产| 久久久人成影片一区二区三区| 性欧美xxxx大乳国产app| 欧美精品啪啪| 欧美**人妖| 9色精品在线| 欧美一区二区三区啪啪| 午夜精品在线观看| 欧美日韩国产精品专区| 亚洲欧洲精品一区二区三区不卡| 国产一区二区按摩在线观看| 亚洲日本aⅴ片在线观看香蕉| 国产日韩欧美一区二区三区四区| 亚洲一区制服诱惑| 欧美一区二区| 亚洲精品中文字幕有码专区| 欧美不卡激情三级在线观看| 91久久精品久久国产性色也91| 国产精品成人免费精品自在线观看| 亚洲电影在线| 亚洲深夜激情| 国产精品一区二区三区观看 | 午夜精品一区二区三区在线视| 国产精品卡一卡二| 一区二区国产在线观看| 午夜精品久久| 国产视频一区二区在线观看| 欧美一区二区三区在线视频 | 亚洲高清视频在线观看| 亚洲日本va午夜在线电影| 亚洲网站视频福利| 亚洲男人的天堂在线观看| 欧美精品福利在线| 99热这里只有精品8| 久久精品99久久香蕉国产色戒| 国产欧美高清| 欧美激情一级片一区二区| 亚久久调教视频| 亚洲电影有码| 亚洲欧美日韩中文视频| 亚洲国产你懂的| 欧美日韩1区| 欧美一区二区三区免费视| 久久精品123| 亚洲性人人天天夜夜摸| 国模套图日韩精品一区二区| 欧美精品系列| 美女脱光内衣内裤视频久久影院| 欧美不卡视频一区发布| 亚洲午夜精品久久| 亚洲国产老妈| 99re这里只有精品6| 亚洲国产一区二区三区在线播| 国产日产亚洲精品| 国产农村妇女精品一二区| 欧美午夜不卡在线观看免费 | 亚洲激情电影在线| 欧美在线视频播放| 一本色道久久综合| 亚洲精品日韩精品| 亚洲高清av在线| 国产欧美日韩综合一区在线播放| 欧美日产国产成人免费图片| 老司机午夜精品视频| 亚洲视频香蕉人妖| 欧美专区亚洲专区| 久久狠狠亚洲综合| 久久精品视频在线看| 久久免费视频网站| 久久综合色8888| 欧美专区在线观看一区| 午夜久久久久久久久久一区二区| 一区二区三区鲁丝不卡| 一区二区三区**美女毛片| 欧美一区二区大片| 美女诱惑黄网站一区| 国产精品一区久久久久| 激情欧美亚洲| 一本一道久久综合狠狠老精东影业| 中日韩视频在线观看| 亚洲一区二区久久| 亚洲一区日韩在线| 欧美不卡视频一区发布| 久久精品国产亚洲5555| 久久一区二区三区超碰国产精品| 国产精品视频xxx| 狠狠色综合网站久久久久久久| 国内揄拍国内精品少妇国语| 亚洲高清一区二| 久久精品日韩| 亚洲一级黄色av| 欧美三区美女| 国产亚洲日本欧美韩国| 欧美在线观看一区二区三区| 亚洲高清毛片| 久久综合久久综合久久| 欧美日韩在线视频首页| 亚洲特黄一级片| 欧美激情在线观看| 欧美日韩国产在线播放| 在线播放国产一区中文字幕剧情欧美 | 国产精品卡一卡二卡三| 经典三级久久| 久久男人资源视频| 亚洲欧美国产日韩中文字幕 | 亚洲女性喷水在线观看一区| 亚洲人成啪啪网站| 欧美成人一区二区三区| 国产自产在线视频一区| 久久蜜桃av一区精品变态类天堂| 亚洲视频在线看| 亚洲国产综合在线| 美日韩精品免费观看视频| 久久人人爽人人爽爽久久|