• <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>
            posts - 7,  comments - 64,  trackbacks - 0
                我想寫一個爬蟲程序。現在需要存放訪問過的URL。如果用數據庫存放則太慢,若放在默認的SET容器中,當到達一定數量時會使程序崩潰。
            現在我想把文件直接映射成set<string>容器的空間。也就是set申請的內存全部在我所指定的文件中。
            另外程序可用4G空間中有2G是系統保留的。如果進行文件映射后,是不是也只能訪問2G的空間?
            最后,我想問問,如果我進行了文件映射,同時又從實際內存中申請了一快內存,如何保證映射的地址和從內存中申請的地址不重復呢?
            請大家幫幫忙,最后有源碼或網站參考。
            posted on 2010-12-10 16:18 HIT@ME 閱讀(2024) 評論(6)  編輯 收藏 引用

            FeedBack:
            # re: 求助。關于如何將文件映射成STL容器內存空間的方法。[未登錄]
            2010-12-10 18:49 |
            自己研究下set的第三個模板參數
            basic_string也同樣是第三個模板參數
              回復  更多評論
              
            # re: 求助。關于如何將文件映射成STL容器內存空間的方法。[未登錄]
            2010-12-10 20:58 | hdqqq
            文件映射無助于增加進程可用地址空間。除非你修改set的實現,把對節點的訪問直接
            對應到對文件的訪問,但是在大數據量的情況下,隨機訪問的效率很差。

            關鍵還是在于減少內存的使用上

            1. stl 中的set使用紅黑樹實現的,一個節點有左,右,父節點三個指針和一個紅黑標志位.32位系統下最少占用13個字節,
            考慮內存對齊下,可能使用到16個字節,在大數據量的情況下,為了保持這個樹結構,額外使用的內存是很多的,可以考慮使用hash set.

            2. url長度都比較長,可考慮計算md5 hash,減少存儲占用.

            3. 不要妄想把所有數據都存在內存,總會有內存耗盡的時候,另外,如果程序異常或者崩潰,所有數據將丟失.

            我以前實現的一種方式是,以數據庫為主要存儲,內存作為優先查詢cache.
            1. 數據庫建散列表, 以十六進制 0-F 開始,根據md5第一位決定存儲表,用于存儲md5值,并對md5建索引加快查詢.
            2. 在內存中用set或map保存md5值,查詢時先計算url md5值,再查詢內存,如果不存在,則從數據庫加載.如為新url,先存入內存.
            3. 內存總量到一定閥值,進行數據保存,并清空內存cache.

            不過這種實現存在cache命中問題,你可以一次加載整張表,也可以用 like 查詢條件,減少數據庫返回的記錄數.

            已有的php實現,內存cache200萬條記錄,總內存使用在1200M左右,可長時間運行,沒有內存使用問題.
              回復  更多評論
              
            # re: 求助。關于如何將文件映射成STL容器內存空間的方法。
            2010-12-11 16:15 | 匿名人士
            按你描述,問題可以拆成兩個,1是文件到內存數據的轉換,2是數據的組織

            一個一個來解決。問題1 用序列化就得了,boost還是什么的隨意
            問題2 你可以不用把數據類(假設是用序列化)的本體放set/map里啊,自己用new來控制數據,map里只索引數據的引用或指針,那不就得了  回復  更多評論
              
            # re: 求助。關于如何將文件映射成STL容器內存空間的方法。
            2010-12-12 20:26 | 陳梓瀚(vczh)
            CreateFileMappingObject?這個api是不是這么叫我忘記了
            第二個是set最后一個模板參數,是一個allocator,用來控制set內部的內存。  回復  更多評論
              
            # re: 求助。關于如何將文件映射成STL容器內存空間的方法。
            2010-12-12 21:31 | 空明流轉
            現在首頁求助都成風了。。。  回復  更多評論
              
            # re: 求助。關于如何將文件映射成STL容器內存空間的方法。
            2010-12-12 21:34 | 空明流轉
            回答你部分問題的說,
            第一個,內存映射會吃你的地址空間,所以也就是只有2G可用,在32bit下。
            如果你需要巨大的空間,建議使用64bit,或者使用其他的存儲方案,比方說B-Tree;
            第二個問題,關于Address Overlapping的問題,因為第一條,所以不會的。  回復  更多評論
              
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(5)

            隨筆檔案

            test

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            伊人久久大香线蕉精品| 久久久久亚洲AV无码专区体验| 狠狠色丁香婷婷综合久久来来去| 亚洲国产精品婷婷久久| 久久久久国色AV免费看图片| 囯产极品美女高潮无套久久久| 欧美黑人又粗又大久久久| 99久久成人国产精品免费| 久久久久一级精品亚洲国产成人综合AV区| 日本亚洲色大成网站WWW久久 | 久久国产精品无码网站| 亚洲欧洲精品成人久久曰影片| 无码人妻久久一区二区三区免费| 99热精品久久只有精品| 久久精品一区二区三区AV| 麻豆精品久久久一区二区| 欧美精品乱码99久久蜜桃| 国产精品一久久香蕉国产线看| 久久久99精品成人片中文字幕| 精品国产乱码久久久久久人妻| 久久精品免费观看| 漂亮人妻被中出中文字幕久久| 亚洲国产成人久久综合碰碰动漫3d | 99久久婷婷国产综合亚洲| 色综合久久久久综合99| 国产精品久久久久久久| 久久亚洲国产精品成人AV秋霞| 伊人久久综合热线大杳蕉下载| 久久精品国产2020| 久久精品国产一区二区三区| 久久天天躁狠狠躁夜夜avapp| 久久夜色撩人精品国产| 久久精品一区二区| 久久无码人妻一区二区三区午夜| 欧美久久亚洲精品| 久久国产视屏| 久久精品免费一区二区三区| 久久精品人成免费| 亚洲午夜无码久久久久| 色悠久久久久久久综合网| 久久国产三级无码一区二区|