電信採集總結

2021-08-14 04:08:38 字數 2024 閱讀 4262

專案之初的一些了解:

一、電信採集資料的過程

電信公司管理使用者上網計費流程:

簡化為:

採集資料——>進行備份——>客戶端——>伺服器——>入庫

二、各個模組的實現以及在實現過程中遇到的一些小問題

#採集模組

所需要採集的資料結構如下:

#briup9064|037:wkgb9064a|7|1239184940|133.32.176.98

#briup7585|037:wkgb7585a|7|1239170150|19.147.112.98

#|037:wkgb9683a|8|1239733378|215.238.25.124

#使用者名稱|3a伺服器位址|上下線標記|時間戳|使用者ip

7:上線

8:下線

具體實現過程:

使用io流讀取乙個時間段內的所有使用者上下線資訊,進行解析,一旦讀到乙個上線資訊,則儲存到key為使用者ip位址的map集合中,如果使用者

在這個時間段內下線了,則儲存完整資訊給乙個list集合,將map中該使用者的上線資訊清空,將完整資訊傳給網路模組,不完整資料進行備份。

那麼下一次採集資料時,需要先判斷備份檔案中是否還存在資訊,如果存在,則需重新新增到map中,在這裡可以直接通過物件流的方式將不完整

資料map集合寫到備份檔案中,這樣,讀取備份檔案可以直接讀取乙個集合,然後從這個集合開始繼續解析資料。

#網路模組

使用socket程式設計將完整資訊從客戶端傳送給伺服器 。

#入庫模組

將伺服器接收到的完整資料集合list,進行遍歷,將一條一條的資料封裝成乙個個bidr物件,然後存到資料庫裡,在入庫過程中,

有乙個需要注意的點:因為我們是根據時間戳的日期來儲存物件,所以,在preparestatement處理sql語句時會出現游標上線的問題,

這是資料庫 的預設配置,在資料庫資源開關重複太頻繁時就容易報這個錯,我用了兩種解決方式,第一種,使用陣列根據日期儲存31個

preparestatement,然後再獲取資料時,根據時間戳的日期選擇相對應的preparestatement執行sql語句。第二種就是最簡單的,直接

在每執行完一條sql語句後就將preparestatement關閉。

然後就是在入庫過程中一旦發生異常,就回滾事務,並將未入庫資料進行備份,因此,下一次入庫時要先檢查備份檔案中是否有資料,如果

不為空的話,則需先將這些資料入庫

#備份模組

即將資料進行備份,在這個專案過程中,我備份了兩次,分別是在採集和入庫兩個模組。

#日誌模組

主要進行日誌輸出,檢視當前操作資訊,還可以自定義日誌

#配置模組

讀取配置檔案中配置的各個類的資訊,通過反射獲取所有的類的例項,將這些例項存入map集合中,然後通過例項的名字可以拿到對應的例項,

也就是說,在其他類中不會直接建立類的例項,而是通過配置類拿到類的例項,避免了類與類之間的依賴關係

這個專案做的還不夠完善,就只實現了資料採集功能,其他的以後補上

電信採集專案的乙個小總結

這個小專案只是整個電信採集專案的一小部分,只有採集,入庫功能。整個專案的過程如下 1 本來電信公司用3a伺服器來收用使用者的資訊,傳送給使用者。2 現在我們建立gathimpl和clientimpl這兩個類分別用來收集資料和把資料傳送給伺服器端 serverimpl 3 serverimp接收到資料...

採集資料小總結

採集過程遇到的問題 1.十分鐘內訪問資料頁面,需要輸入驗證碼 2.每天ip限定訪問五十個以內,用完則明天再來 b 剛開始的解決辦法 b 去抓取網上提供的 ip 埠,然後 訪問 問題 ip好多不能用,需要 ip個數較多,然後還要根據採集 的規則設定,比如十分鐘內每個 訪問規則數量 1,之後再次訪問.b...

採集俠 採集

安裝好之後 採集測試 先新增欄目,1 rss採集,xml路徑 採集測試 3 定向採集 新增採集規則 1 目標頁編碼 檢視目標網頁charset,是什麼圖中就選什麼 2 列表 如果只採集乙個列表頁,那麼輸入乙個列表首頁 即可,如 要採集所有列表頁就需要設定萬用字元了,萬用字元 1 20 代表1 20頁...