1.前端vue3加入定時任務:
import { onMounted, ref,onUnmounted } from 'vue';//初始化,結束調用部分引用let timer: any;//定時器onMounted(async () => {timer = setInterval(() => {open()//需要定時的任務}, 60000)//一分鐘調用一次});
onUnmounted(() => {clearInterval(timer)timer = null
})//結束調用,定時器清空
其中open這個方法是需要定時刷新的方法,定時在一分鐘刷新
2.ES-Elasticsearch-分布式搜索引擎學習
Elaticsearch,簡稱為es, es是一個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。es也使用Java開發并使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。
ElasticSearch(簡稱 ES) 是面向文檔的,文檔是所有可搜索數據的最小單位。
文檔理解為關系型數據庫中的一條記錄
在 ES 中文檔會被序列化成 JSON 格式,保存在 ES 中,JSON 對象由字段組成,其中每個字段都有對應的字段類型(字符串/數組/布爾/日期/二進制/范圍類型)
在 ES 中,每個文檔都有一個 Unique ID,可以自己指定 ID 或者通過 ES 自動生成
索引簡單來說就是相似結構文檔的集合,索引可能有很多文檔,索引中的數據分散在分片上
在一個的索引當中,可以去為它設置 Mapping 和 Setting,Mapping 定義的是索引當中所有文檔字段的類型結構,Setting 主要是指定要用多少的分片以及數據是怎么樣進行分布的。
ES 集群其實是一個分布式系統,要滿足高可用性,高可用就是當集群中有節點服務停止響應的時候,整個服務還能正常工作,也就是服務可用性;或者說整個集群中有部分節點丟失的情況下,不會有數據丟失,即數據可用性。
數據的增長越來越多的時候,系統需要把數據分散到其他節點上,最后來實現水平擴展。當集群中有節點出現問題的時候,整個集群的服務也不會受到影響
節點其實就是一個 ES 實例,本質上是一個 Java 進程,一臺機器上可以運行多個 ES 進程,但是生產環境一般建議一臺機器上只運行一個 ES 實例。
默認節點會去加入一個名稱為?elasticsearch
?的集群,如果直接啟動很多節點,那么它們會自動組成一個?elasticsearch
?集群,當然一個節點也可以組成一個?elasticsearch
?集群。
每一個節點啟動后,默認就是一個 Master-eligible 節點,可以通過在配置文件中設置?node.master: false
?禁止,Master-eligible 節點可以參加選主流程,成為 Master 節點。當第一個節點啟動時候,它會將自己選舉成 Master 節點。
每個節點上都保存了集群的狀態,只有 Master 節點才能修改集群的狀態信息,如果是任意節點都能修改信息就會導致數據的不一致性。
集群狀態(Cluster State),維護一個集群中必要的信息,主要包括如下信息:
所有的節點信息
所有的索引和其相關的 Mapping 與 Setting 信息
分片的路由信息
數據節點:負責保存分片上存儲的所有數據,當集群無法保存現有數據的時候,可以通過增加數據節點來解決存儲上的問題(解決數據存儲問題)
Coordinating Node 負責接收 Client 的請求,將請求分發到合適的節點,最終把結果匯集到一起返回給客戶端,每個節點默認都起到了 Coordinating Node 的職責。
ES 可以將一個索引中的數據切分為多個分片(Shard),分布在多臺服務器上存儲。有了分片就可以橫向擴展,存儲更多數據,讓搜索和分析等操作分布到多臺服務器上去執行,提升吞吐量和性能。
一個 ES 索引包含很多分片,一個分片是一個 Lucene 的索引,它本身就是一個完整的搜索引擎,可以獨立執行建立索引和搜索任務。Lucene 索引又由很多分段組成,每個分段都是一個倒排索引。 ES 每次 refresh 都會生成一個新的分段,其中包含若干文檔的數據。在每個分段內部,文檔的不同字段被單獨建立索引。每個字段的值由若干詞(Term)組成,Term 是原文本內容經過分詞器處理和語言處理后的最終結果
3.java集合學習(javaguide學習心得):
Java 集合,也叫作容器,主要是由兩大接口派生而來:一個是 Collection
接口,主要用于存放單一元素;另一個是 Map
接口,主要用于存放鍵值對。對于Collection
接口,下面又有三個主要的子接口:List(列表)
、Set(集合)
、 Queue(隊列)
List
(對付順序的好幫手): 存儲的元素是有序的、可重復的。Set
(注重獨一無二的性質): 存儲的元素不可重復的。Queue
(實現排隊功能的叫號機): 按特定的排隊規則來確定先后順序,存儲的元素是有序的、可重復的。Map
(用 key 來搜索的專家): 使用鍵值對(key-value)存儲,類似于數學上的函數 y=f(x),"x" 代表 key,"y" 代表 value,key 是無序的、不可重復的,value 是無序的、可重復的,每個鍵最多映射到一個值
- 我們需要根據鍵值獲取到元素值時就選用
Map
接口下的集合,需要排序時選擇TreeMap
,不需要排序時就選擇HashMap
,需要保證線程安全就選用ConcurrentHashMap
。 - 我們只需要存放元素值時,就選擇實現
Collection
接口的集合,需要保證元素唯一時選擇實現Set
接口的集合比如TreeSet
或HashSet
,不需要就選擇實現List
接口的比如ArrayList
或LinkedList
,然后再根據實現這些接口的集合的特點來選用。
使用并發集合類(例如?ConcurrentHashMap
、CopyOnWriteArrayList
?等)或者手動實現線程安全的方法來提供安全的多線程操作支持
ArrayList
?中可以存儲任何類型的對象,包括?null
?值。不過,不建議向ArrayList
?中添加?null
?值,?null
?值無意義,會讓代碼難以維護比如忘記做判空處理就會導致空指針異常