全文搜索引擎 ElasticSearch 還是 Solr?

原文鏈接

最近項目組安排了一個任務,項目中用到了全文搜索,基于全文搜索 Solr,但是該 Solr 搜索云項目不穩定,經常查詢不出來數據,需要手動全量同步,而且是其他團隊在維護,依賴性太強,導致 Solr 服務一出問題,我們的項目也基本癱瘓,因為所有的依賴查詢都無結果數據了。所以考慮開發一個適配層,如果 Solr 搜索出問題,自動切換到新的搜索--ES。

其實可以通過 Solr 集群或者服務容錯等設計來解決該問題。但是先不考慮本身設計的合理性,領導需要開發,所以我開始踏上了搭建 ES 服務的道路,從零開始,因為之前完全沒接觸過 ES,所以通過本系列來記錄下自己的開發過程。

1|0什么是全文搜索

什么是全文搜索引擎?

百度百科中的定義
全文搜索引擎是目前廣泛應用的主流搜索引擎。它的工作原理是計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程序就根據事先建立的索引進行查找,并將查找的結果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。

從定義中我們已經可以大致了解全文檢索的思路了,為了更詳細的說明,我們先從生活中的數據說起。

我們生活中的數據總體分為兩種:結構化數據非結構化數據

  • 結構化數據: 指具有固定格式或有限長度的數據,如數據庫,元數據等。
  • 非結構化數據: 非結構化數據又可稱為全文數據,指不定長或無固定格式的數據,如郵件,word文檔等。

當然有的地方還會有第三種:半結構化數據,如XML,HTML等,當根據需要可按結構化數據來處理,也可抽取出純文本按非結構化數據來處理。

根據兩種數據分類,搜索也相應的分為兩種:結構化數據搜索和非結構化數據搜索。

對于結構化數據,我們一般都是可以通過關系型數據庫(mysql,oracle等)的 table 的方式存儲和搜索,也可以建立索引。
對于非結構化數據,也即對全文數據的搜索主要有兩種方法:順序掃描法全文檢索

順序掃描:通過文字名稱也可了解到它的大概搜索方式,即按照順序掃描的方式查詢特定的關鍵字。
例如給你一張報紙,讓你找到該報紙中“RNG”的文字在哪些地方出現過。你肯定需要從頭到尾把報紙閱讀掃描一遍然后標記出關鍵字在哪些版塊出現過以及它的出現位置。

這種方式無疑是最耗時的最低效的,如果報紙排版字體小,而且版塊較多甚至有多份報紙,等你掃描完你的眼睛也差不多了。

全文搜索:對非結構化數據順序掃描很慢,我們是否可以進行優化?把我們的非結構化數據想辦法弄得有一定結構不就行了嗎?將非結構化數據中的一部分信息提取出來,重新組織,使其變得有一定結構,然后對此有一定結構的數據進行搜索,從而達到搜索相對較快的目的。這種方式就構成了全文檢索的基本思路。這部分從非結構化數據中提取出的然后重新組織的信息,我們稱之索引

還以讀報紙為例,我們想關注最近英雄聯盟S8全球總決賽的新聞,假如都是 RNG 的粉絲,如何快速找到 RNG 新聞的報紙和版塊呢?全文搜索的方式就是,將所有報紙中所有版塊中關鍵字進行提取,如"EDG","RNG","FW","戰隊","英雄聯盟"等。然后對這些關鍵字建立索引,通過索引我們就可以對應到該關鍵詞出現的報紙和版塊。注意區別目錄搜索引擎。

2|0為什么要用全文搜索搜索引

之前,有同事問我,為什么要用搜索引擎?我們的所有數據在數據庫里面都有,而且 Oracle、SQL Server 等數據庫里也能提供查詢檢索或者聚類分析功能,直接通過數據庫查詢不就可以了嗎?確實,我們大部分的查詢功能都可以通過數據庫查詢獲得,如果查詢效率低下,還可以通過建數據庫索引,優化SQL等方式進行提升效率,甚至通過引入緩存來加快數據的返回速度。如果數據量更大,就可以分庫分表來分擔查詢壓力。

那為什么還要全文搜索引擎呢?我們主要從以下幾個原因分析:

  • 數據類型
    全文索引搜索支持非結構化數據的搜索,可以更好地快速搜索大量存在的任何單詞或單詞組的非結構化文本。
    例如 Google,百度類的網站搜索,它們都是根據網頁中的關鍵字生成索引,我們在搜索的時候輸入關鍵字,它們會將該關鍵字即索引匹配到的所有網頁返回;還有常見的項目中應用日志的搜索等等。對于這些非結構化的數據文本,關系型數據庫搜索不是能很好的支持。

  • 索引的維護
    一般傳統數據庫,全文檢索都實現的很雞肋,因為一般也沒人用數據庫存文本字段。進行全文檢索需要掃描整個表,如果數據量大的話即使對SQL的語法優化,也收效甚微。建立了索引,但是維護起來也很麻煩,對于 insert 和 update 操作都會重新構建索引。

什么時候使用全文搜索引擎:

  1. 搜索的數據對象是大量的非結構化的文本數據。
  2. 文件記錄量達到數十萬或數百萬個甚至更多。
  3. 支持大量基于交互式文本的查詢。
  4. 需求非常靈活的全文搜索查詢。
  5. 對高度相關的搜索結果的有特殊需求,但是沒有可用的關系數據庫可以滿足。
  6. 對不同記錄類型、非文本數據操作或安全事務處理的需求相對較少的情況。

3|0Lucene,Solr, ElasticSearch ?

現在主流的搜索引擎大概就是:Lucene,Solr,ElasticSearch。

它們的索引建立都是根據倒排索引的方式生成索引,何謂倒排索引?

維基百科
倒排索引(英語:Inverted index),也常被稱為反向索引、置入檔案或反向檔案,是一種索引方法,被用來存儲在全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置的映射。它是文檔檢索系統中最常用的數據結構。

3|1Lucene

Lucene是一個Java全文搜索引擎,完全用Java編寫。Lucene不是一個完整的應用程序,而是一個代碼庫和API,可以很容易地用于向應用程序添加搜索功能。

Lucene通過簡單的API提供強大的功能:

可擴展的高性能索引

  • 在現代硬件上超過150GB /小時
  • 小RAM要求 - 只有1MB堆
  • 增量索引與批量索引一樣快
  • 索引大小約為索引文本大小的20-30%

強大,準確,高效的搜索算法

  • 排名搜索 - 首先返回最佳結果
  • 許多強大的查詢類型:短語查詢,通配符查詢,鄰近查詢,范圍查詢等
  • 現場搜索(例如標題,作者,內容)
  • 按任何字段排序
  • 使用合并結果進行多索引搜索
  • 允許同時更新和搜索
  • 靈活的分面,突出顯示,連接和結果分組
  • 快速,內存效率和錯誤容忍的建議
  • 可插拔排名模型,包括矢量空間模型和Okapi BM25
  • 可配置存儲引擎(編解碼器)

跨平臺解決方案

  • 作為Apache許可下的開源軟件提供 ,允許您在商業和開源程序中使用Lucene
  • 100%-pure Java
  • 可用的其他編程語言中的實現是索引兼容的

Apache軟件基金會
在Apache軟件基金會提供的開源軟件項目的Apache社區的支持。

但是Lucene只是一個框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的學習了解,才能明白它是如何運行的,熟練運用Lucene確實非常復雜。

3|2Solr:

Apache Solr是一個基于名為Lucene的Java庫構建的開源搜索平臺。它以用戶友好的方式提供Apache Lucene的搜索功能。作為一個行業參與者近十年,它是一個成熟的產品,擁有強大而廣泛的用戶社區。它提供分布式索引,復制,負載平衡查詢以及自動故障轉移和恢復。如果它被正確部署然后管理得好,它就能夠成為一個高度可靠,可擴展且容錯的搜索引擎。很多互聯網巨頭,如Netflix,eBay,Instagram和亞馬遜(CloudSearch)都使用Solr,因為它能夠索引和搜索多個站點。

主要功能列表包括:

  • 全文搜索
  • 突出
  • 分面搜索
  • 實時索引
  • 動態群集
  • 數據庫集成
  • NoSQL功能和豐富的文檔處理(例如Word和PDF文件)

3|3ElasticSearch:

Elasticsearch是一個開源(Apache 2許可證),是一個基于Apache Lucene庫構建的RESTful搜索引擎。

Elasticsearch是在Solr之后幾年推出的。它提供了一個分布式,多租戶能力的全文搜索引擎,具有HTTP Web界面(REST)和無架構JSON文檔。Elasticsearch的官方客戶端庫提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript。

分布式搜索引擎包括可以劃分為分片的索引,并且每個分片可以具有多個副本。每個Elasticsearch節點都可以有一個或多個分片,其引擎也可以充當協調器,將操作委派給正確的分片。

Elasticsearch可通過近實時搜索進行擴展。其主要功能之一是多??租戶。

主要功能列表包括:

  • 分布式搜索
  • 多租戶
  • 分析搜索
  • 分組和聚合

4|0Elasticsearch vs. Solr的選擇

由于Lucene的復雜性,一般很少會考慮它作為搜索的第一選擇,排除一些公司需要自研搜索框架,底層需要依賴Lucene。所以這里我們重點分析 Elasticsearch 和 Solr。

Elasticsearch vs. Solr。哪一個更好?他們有什么不同?你應該使用哪一個?

4|1歷史比較

Apache Solr是一個成熟的項目,擁有龐大而活躍的開發和用戶社區,以及Apache品牌。Solr于2006年首次發布到開源,長期以來一直占據著搜索引擎領域,并且是任何需要搜索功能的人的首選引擎。它的成熟轉化為豐富的功能,而不僅僅是簡單的文本索引和搜索; 如分面,分組,強大的過濾,可插入的文檔處理,可插入的搜索鏈組件,語言檢測等。

Solr 在搜索領域占據了多年的主導地位。然后,在2010年左右,Elasticsearch成為市場上的另一種選擇。那時候,它遠沒有Solr那么穩定,沒有Solr的功能深度,沒有思想分享,品牌等等。

Elasticsearch雖然很年輕,但它也自己的一些優勢,Elasticsearch 建立在更現代的原則上,針對更現代的用例,并且是為了更容易處理大型索引和高查詢率而構建的。此外,由于它太年輕,沒有社區可以合作,它可以自由地向前推進,而不需要與其他人(用戶或開發人員)達成任何共識或合作,向后兼容,或任何其他更成熟的軟件通常必須處理。

因此,它在Solr之前就公開了一些非常受歡迎的功能(例如,接近實時搜索,英文:Near Real-Time Search)。從技術上講,NRT搜索的能力確實來自Lucene,它是 Solr 和 Elasticsearch 使用的基礎搜索庫。具有諷刺意味的是,因為 Elasticsearch 首先公開了NRT搜索,所以人們將NRT搜索與Elasticsearch 聯系在一起,盡管 Solr 和 Lucene 都是同一個 Apache 項目的一部分,因此,人們會首先期望 Solr 具有如此高要求的功能。

4|2特征差異比較

這兩個搜索引擎都是流行的,先進的的開源搜索引擎。它們都是圍繞核心底層搜索庫 - Lucene構建的 - 但它們又是不同的。像所有東西一樣,每個都有其優點和缺點,根據您的需求和期望,每個都可能更好或更差。Solr和Elasticsearch都在快速發展,所以,話不多說,先來看下它們的差異清單:

特征Solr/SolrCloudElasticsearch
社區和開發者Apache 軟件基金和社區支持單一商業實體及其員工
節點發現Apache Zookeeper,在大量項目中成熟且經過實戰測試Zen內置于Elasticsearch本身,需要專用的主節點才能進行分裂腦保護
碎片放置本質上是靜態,需要手動工作來遷移分片,從Solr 7開始 - Autoscaling API允許一些動態操作動態,可以根據群集狀態按需移動分片
高速緩存全局,每個段更改無效每段,更適合動態更改數據
分析引擎性能非常適合精確計算的靜態數據結果的準確性取決于數據放置
全文搜索功能基于Lucene的語言分析,多建議,拼寫檢查,豐富的高亮顯示支持基于Lucene的語言分析,單一建議API實現,高亮顯示重新計算
DevOps支持尚未完全,但即將到來非常好的API
非平面數據處理嵌套文檔和父-子支持嵌套和對象類型的自然支持允許幾乎無限的嵌套和父-子支持
查詢DSLJSON(有限),XML(有限)或URL參數JSON
索引/收集領導控制領導者安置控制和領導者重新平衡甚至可以節點上的負載不可能
機器學習內置 - 在流聚合之上,專注于邏輯回歸和學習排名貢獻模塊商業功能,專注于異常和異常值以及時間序列數據

這里了解更多。

4|3綜合比較

另外,我們在從以下幾個方面來分析下:

  • 近幾年的流行趨勢
    我們查看一下這兩種產品的Google搜索趨勢。谷歌趨勢表明,與 Solr 相比,Elasticsearch具有很大的吸引力,但這并不意味著Apache Solr已經死亡。雖然有些人可能不這么認為,但Solr仍然是最受歡迎的搜索引擎之一,擁有強大的社區和開源支持。

  • 安裝和配置
    與Solr相比,Elasticsearch易于安裝且非常輕巧。此外,您可以在幾分鐘內安裝并運行Elasticsearch。
    但是,如果Elasticsearch管理不當,這種易于部署和使用可能會成為一個問題。基于JSON的配置很簡單,但如果要為文件中的每個配置指定注釋,那么它不適合您。
    總的來說,如果您的應用使用的是JSON,那么Elasticsearch是一個更好的選擇。否則,請使用Solr,因為它的schema.xml和solrconfig.xml都有很好的文檔記錄。

  • 社區
    Solr擁有更大,更成熟的用戶,開發者和貢獻者社區。ES雖擁有的規模較小但活躍的用戶社區以及不斷增長的貢獻者社區。
    Solr是真正的開源社區代碼。任何人都可以為Solr做出貢獻,并且根據優點選出新的Solr開發人員(也稱為提交者)。Elasticsearch在技術上是開源的,但在精神上卻不那么重要。任何人都可以看到來源,任何人都可以更改它并提供貢獻,但只有Elasticsearch的員工才能真正對Elasticsearch進行更改。
    Solr貢獻者和提交者來自許多不同的組織,而Elasticsearch提交者來自單個公司。

  • 成熟度
    Solr更成熟,但ES增長迅速,我認為它穩定。

  • 文檔
    Solr在這里得分很高。它是一個非常有據可查的產品,具有清晰的示例和API用例場景。 Elasticsearch的文檔組織良好,但它缺乏好的示例和清晰的配置說明。

5|0總結

那么,到底是Solr還是Elasticsearch?
有時很難找到明確的答案。無論您選擇Solr還是Elasticsearch,首先需要了解正確的用例和未來需求。總結他們的每個屬性。

記住:

  • 由于易于使用,Elasticsearch在新開發者中更受歡迎。但是,如果您已經習慣了與Solr合作,請繼續使用它,因為遷移到Elasticsearch沒有特定的優勢。

  • 如果除了搜索文本之外還需要它來處理分析查詢,Elasticsearch是更好的選擇。

  • 如果需要分布式索引,則需要選擇Elasticsearch。對于需要良好可伸縮性和性能的云和分布式環境,Elasticsearch是更好的選擇。

  • 兩者都有良好的商業支持(咨詢,生產支持,整合等)

  • 兩者都有很好的操作工具,盡管Elasticsearch因其易于使用的API而更多地吸引了DevOps人群,因此可以圍繞它創建一個更加生動的工具生態系統。

  • Elasticsearch在開源日志管理用例中占據主導地位,許多組織在Elasticsearch中索引它們的日志以使其可搜索。雖然Solr現在也可以用于此目的,但它只是錯過了這一想法。

  • Solr仍然更加面向文本搜索。另一方面,Elasticsearch 通常用于過濾和分組 - 分析查詢工作負載 - 而不一定是文本搜索。Elasticsearch 開發人員在 Lucene 和 Elasticsearch 級別上投入了大量精力使此類查詢更高效(降低內存占用和CPU使用)。因此,對于不僅需要進行文本搜索,而且需要復雜的搜索時間聚合的應用程序,Elasticsearch是一個更好的選擇。

  • Elasticsearch更容易上手,一個下載和一個命令就可以啟動一切。Solr傳統上需要更多的工作和知識,但Solr最近在消除這一點上取得了巨大的進步,現在只需努力改變它的聲譽。

  • 在性能方面,它們大致相同。我說“大致”,因為沒有人做過全面和無偏見的基準測試。對于95%的用例,任何一種選擇在性能方面都會很好,剩下的5%需要用它們的特定數據和特定的訪問模式來測試這兩種解決方案。

  • 從操作上講,Elasticsearch使用起來比較簡單 - 它只有一個進程。Solr在其類似Elasticsearch的完全分布式部署模式SolrCloud中依賴于Apache ZooKeeper。ZooKeeper是超級成熟,超級廣泛使用等等,但它仍然是另一個活躍的部分。也就是說,如果您使用的是Hadoop,HBase,Spark,Kafka或其他一些較新的分布式軟件,您可能已經在組織的某個地方運行ZooKeeper。

  • 雖然Elasticsearch內置了類似ZooKeeper的組件Xen,但ZooKeeper可以更好地防止有時在Elasticsearch集群中出現的可怕的裂腦問題。公平地說,Elasticsearch開發人員已經意識到這個問題,并致力于改進Elasticsearch的這個方面。

  • 如果您喜歡監控和指標,那么使用Elasticsearch,您將會進入天堂。這個東西比新年前夜在時代廣場可以擠壓的人有更多的指標!Solr暴露了關鍵指標,但遠不及Elasticsearch那么多。

總之,兩者都是功能豐富的搜索引擎,只要設計和實現得當,它們或多或少都能提供相同的性能。

參考:

  1. https://www.datanami.com/2015/01/22/solr-elasticsearch-question/
  2. https://blog.csdn.net/hhx0626/article/details/78095593/
  3. https://www.elastic.co/cn/
  4. https://logz.io/blog/solr-vs-elasticsearch/
  5. https://sematext.com/blog/solr-vs-elasticsearch-differences/

轉載于:https://www.cnblogs.com/kaleidoscope/p/9835299.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249170.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249170.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對局匹配

問題描述小明喜歡在一個圍棋網站上找別人在線對弈。這個網站上所有注冊用戶都有一個積分,代表他的圍棋水平。小明發現網站的自動對局系統在匹配對手時,只會將積分差恰好是K的兩名用戶匹配在一起。如果兩人分差小于或大于K,系統都不會將他們匹…

NodeJS作為Web架構中間層的使用

截至2016年12月,中國網民規模已達7.31億。傳統的網站系統是否能夠支撐得起如此龐大的且不斷增長的用戶訪問并且為用戶提供體驗友好的頁面? 一、傳統的前后端: 二、傳統的前后端分離問題: 性能問題: 1、渲染、數據都在…

Springboot項目修改html后不需要重啟---springboot項目的熱部署

一、spring-boot-devtools 在pom中直接引入依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency> 設置以下兩項&#xff08…

Hibernate中session的get方法和load方法的區別

一.發送SQL時機&#xff1a; load方法采用延遲加載&#xff08;lazy懶加載&#xff09;&#xff0c;執行到這行代碼的時候&#xff0c;不會發送SQL語句&#xff0c;當真正使用這個對象的數據&#xff08;對象的數據不包括主鍵&#xff09;的時候才發送SQL語句&#xff1b; get…

Node.js Web 開發框架大全《中間件篇》

這篇文章與大家分享優秀的 Node.js 中間件模塊。Node 是一個服務器端 JavaScript 解釋器&#xff0c;它將改變服務器應該如何工作的概念。它的目標是幫助程序員構建高度可伸縮的應用程序&#xff0c;編寫能夠處理數萬條同時連接到一個&#xff08;只有一個&#xff09;物理機的…

windows server 2012 流媒體服務器搭建(直播與點播)

IIS Live Smooth Streaming&#xff08;實時平滑流式處理&#xff09;是微軟下一代流媒體解決方案。該技術是在IIS web中集成媒體傳輸平臺IIS media services&#xff0c;實現利用標準 HTTP Web 技術以及高級 Silverlight 功能&#xff0c;確保在互聯上傳輸質量最佳、播放流暢音…

團隊項目第一篇——NABCD

團隊名稱&#xff1a;筑夢之舟 團隊項目名稱&#xff1a;跑跑 N&#xff08;Need&#xff09;需求&#xff1a; 有許多人在跑步時想了解自己的移動軌跡和跑步距離很不便利&#xff0c;無法了解跑步的日程&#xff0c;我們的軟件就是為了更加方便熱愛跑步的人能夠參加到跑步之中…

Vue warn Failed to mount component: template or render function not defined

問題如圖&#xff0c;造成這類的問題一般有這么幾個原因。 代碼的拼寫問題&#xff0c;當然這是最低級的錯誤vue定義的問題&#xff0c;這里我說明兩點 在組件內部定義組件時&#xff0c;template 對應的必須是html字符串引用外部組件時&#xff0c;vue文件必須以template標簽…

Python實現線性回歸2,梯度下降算法

接上篇 4.梯度下降算法 《斯坦福大學公開課 &#xff1a;機器學習課程》吳恩達講解第二課時&#xff0c;是直接從梯度下降開始講解&#xff0c;最后采用向量和矩陣的方式推導了解析解&#xff0c;國內很多培訓視頻是先講解析解后講梯度下降&#xff0c;個人認為梯度下降算法更為…

在centos和redhat上安裝docker

前置條件 64-bit 系統kernel 3.101.檢查內核版本&#xff0c;返回的值大于3.10即可。$ uname -r 2.使用 sudo 或 root 權限的用戶登入終端。 3.卸載舊版本(如果安裝過舊版本的話) $ yum remove docker \docker-common \docker-selinux \docker-engine 4.安裝需要的軟件包 #yum-…

mac 下用 brew 安裝mongodb

mac 下安裝mongoDB一般倆種方法. (1)下載源碼,解壓,編譯,配置,啟動 比較艱難的一種模式. (2)brew install mongodb ,然后就可以悠閑的品一口茶,順便瞄一眼網易新聞,這是一種傻瓜模式. 但傻瓜模式也有人為干預的時候,粗略說一下使用brew 安裝mongodb 1 zhangzhimoke:~/code$…

比較python類的兩個instance(對象) 是否相等

http://www.yihaomen.com/article/python/281.htm 比較python類的兩個instance(對象) 是否相等 作者:輕舞肥羊 日期:2012-10-25 字體大小: 小 中 大對于同一個Class,可以創建不同的實例(instance), 如何比較這兩個 instance 是否相等呢&#xff1f;我們知道&#xff0c;對于計算…

Mybaits插入記錄返回主鍵值

某些情況進行insert時不知道主鍵值&#xff08;主鍵為自增&#xff09;&#xff0c;例如系統新增用戶時&#xff0c;有用戶序號&#xff08;主鍵 自增&#xff09;&#xff0c;用戶名&#xff0c;密碼。插入時只需插入用戶名和密碼&#xff0c;之后取得mysql自增的序號。 如下為…

Mac 解決brew一直卡在Updating Homebrew

運行命令brew install node&#xff0c;結果界面一直卡在Updating Homebrew...上&#xff0c;有兩種解決辦法 方法一&#xff1a;直接關閉brew每次執行命令時的自動更新&#xff08;推薦&#xff09; vim ~/.bash_profile# 新增一行 export HOMEBREW_NO_AUTO_UPDATEtrue方法二…

CAS單點登錄原理簡單介紹

1. SSO簡介 1.1 單點登錄定義 單點登錄(Single sign on)&#xff0c;英文名稱縮寫SSO&#xff0c;SSO的意思就是在多系統的環境中&#xff0c;登錄單方系統&#xff0c;就可以在不用再次登錄的情況下訪問相關受信任的系統。也就是說只要登錄一次單體系統就可以。計劃在項目中加…

前端跨域通信的幾種方式

前言 前端通信類的問題&#xff0c;主要包括以下內容&#xff1a; 1、什么是同源策略及限制 同源策略是一個概念&#xff0c;就一句話。有什么限制&#xff0c;就三句話。能說出來即可。 2、前后端如何通信 如果你不準備&#xff0c;估計也就只能說出ajax。 3、如何創建Aja…

T4((Text Template Transformation Toolkit))模版引擎之基礎入門 C#中文本模板(.tt)的應用...

1 關于C#中文本模板(.tt)的簡單應用https://blog.csdn.net/zunguitiancheng/article/details/78011145 任何一個傻瓜都能寫出計算機能理解的程序&#xff0c;而優秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler 2 T4模版引擎之生成數據庫實體類 http://www.cnblogs…

LeetCode412Fizz Buzz

寫一個程序&#xff0c;輸出從 1 到 n 數字的字符串表示。 1. 如果 n 是3的倍數&#xff0c;輸出“Fizz”&#xff1b; 2. 如果 n 是5的倍數&#xff0c;輸出“Buzz”&#xff1b; 3.如果 n 同時是3和5的倍數&#xff0c;輸出 “FizzBuzz”。 示例&#xff1a; n 15, 返回: [ …

vue+node實現中間層同步調用接口

為了應對業務的復雜性&#xff0c;提高前端的渲染能力&#xff0c;故在項目中引入nodejs做中間層&#xff0c;前端承接vue&#xff0c;后端對接Java。 至于為什么這么搞&#xff0c;網上有好多文章都在討論&#xff0c;可以說仁者見仁智者見智&#xff0c;這里我們不在深究。 …

ES6學習筆記(二十二)ArrayBuffer

ArrayBuffer ArrayBuffer對象、TypedArray視圖和DataView視圖是 JavaScript 操作二進制數據的一個接口。它們都是以數組的語法處理二進制數據&#xff0c;所以統稱為二進制數組。 二進制數組由三類對象組成。 &#xff08;1&#xff09;ArrayBuffer對象&#xff1a; 代表內存之…