原创 Spring Data api常用mongoDB操作(不定期更新)

文章目錄查詢collection中指定屬性對document進行"存在則更新不存在則新增"操作MongoCursor使用基於Document對mongoDB原生js操作命令轉義mongoDB根據多屬性是否存在查詢相關記錄mongo

原创 redis集羣使用HashMap優化鍵值存儲結構提升存儲性能

項目中遇到Spark Streaming吞吐量太低的問題,redis集羣使用HashMap優化鍵值存儲結構提升Spark Streaming吞吐量。 場景: 設備將運行報文發送到kafka,Spark Streaming對報文進行

原创 windows系統中java項目編譯的target文件刪除報“文件夾或文件已在另一個程序中打開”解決辦法

在java項目編譯完成後有時需要刪除target文件夾或其中jar,進行重新編譯和打包。windows系統中偶爾會報“文件夾或文件已在另一個程序中打開”。導致刪除失敗的問題。 有時開的軟件和進程太多不好排查,最後只能採取簡單粗暴的

原创 大數據高併發場景下存量/增量指標實時計算方法

業務場景: 設備每10分鐘上報一次A指標數據,需要對設備的A指標數據進行日增量/存量打標。即對於A指標,標記設備是存量設備還是增量設備。 日存量/增量判斷標準:將當日設備上報A指標數據的總次數,與該設備前30天內上報的A指標數據

原创 monogodb使用$lookup,$unwind,$project,$group,$push進行多表關聯查詢,提取指定字段,根據指定字段分組

mongo aggregate操作使用$lookup,$unwind,$project,$group,$push操作符,執行多表連接查詢,提取多表指定字段,對指定字段進行分組求和得到結果: db.getCollection('De

原创 燃燒我的卡路里——Spring boot項目jar包瘦身

文章目錄Spring boot jar包瘦身的便利性具體步驟使用spring-boot-maven-plugin組件jar包啓動方式 Spring boot項目由於使用了太多依賴包,導致jar包過大,下面使用Spring boot

原创 高併發場景下,使用redis lua腳本實現計數範圍內原子級增減

業務場景: 一個時間區間內業務系統需給一批設備下發任務,該任務需設備依賴外部系統完成執行,外部系統最多支持60個設備同時訪問。設備通過週期上報,在業務系統中獲取任務下發通知。爲了防止大數據高併發場景下,大量設備同時訪問業務系統,查

原创 步步爲營,mongodb3.2.x版本升級至4.2.x版本全過程——面向standalone和副本集部署模式

文章目錄一.standalone部署模式升級步驟1.1 升級前準備1.2 執行升級1.2.1 升級至3.4.x版本:1.2.2 從3.4.x版本升級至3.6.x版本1.2.3 從3.6.x版本升級至4.0.x版本(操作同

原创 超簡單mongodb 4.2分片集羣搭建指南

文章目錄1.部署環境:2.集羣結構3.前期準備:虛擬機時間同步:配置hosts(可選)防火牆開啓相應端口下載包4.創建副本集副本集節點實例配置參考:啓動mongo副本集副本集節點初始化腳本:初始化副本集:在mongo控制檯查看各副

原创 mongodb副本集模式執行命令遭遇not authorized on admin to execute command報錯的解決方式

現象 分片集羣的副本集登錄mongo shell突然發現執行不了常用命令了,報錯: Error: error: { "ok" : 0, "errmsg" : "not authorized on admin to execut

原创 基於mongodb 3.2.x版本,從mongodb standalone模式遷移至副本集模式

從mongodb standalone模式遷移至副本集模式(3.2.x版本) 步驟一:停止所有mongodb讀寫,否則影響數據同步。 步驟二:創建副本集的mongo實例,將standalone模式的數據庫文件拷貝所有副本集實例對應

原创 java獲取當前時間離一天結束剩餘秒數

  在使用redis緩存的場景中,往往需要設置 鍵-值 的過期時間,我們在項目中遇到需要獲得當前時間點離當前天結束剩餘的秒數作爲存儲到redis的 鍵-值 的過期時間。改時間通過java生成,下面提供幾種方案供讀者參考: 方案一

原创 mongodb執行外掛js腳本實現根據指定屬性分組,提取相關屬性輸出到csv文件

編寫js腳本,實現根據設備廠商型號分組並提取對應廠商、型號。 var cursor=db.getCollection('LatestDeviceInfo').aggregate( [ { "$group":{

原创 java stream List轉Map

//list泛型爲JSONObject Map<String, String> map = list.parallelStream().collect(Collectors .toMap(e ->

原创 高併發場景下,使用redis lua腳本實現閾值範圍內計數減數

業務場景: 一個時間區間內需給一批設備下發任務並讓設備完成執行,該任務需要設備訪問外部系統進行執行,外部設備同時僅支持60個設備同時訪問。設備通過週期上報,在業務系統中獲取任務下發通知。爲了防止大數據高併發場景下,大量設備同時訪問