2018年最新JAVA面試題總結之框架(4)

轉自於:https://zhuanlan.zhihu.com/p/40098726html

 

一、談談對spring框架的瞭解 ,spring有什麼做用(IOC,AOP),spring的核心是什麼?
回答:Spring是一個開源框架,它是爲了解決企業應用開發的複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許使用者選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。簡單來講,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。
Spring的核心是控制反轉(IoC)和麪向切面(AOP)。

  Spring的做用:1)方便解耦,簡化開發:經過Spring提供的IOC容器,咱們能夠將對象之間的依賴關係交由Spring進行控制,避免編碼所形成的過分程序耦合。有了Spring,用戶沒必要再爲單例模式類、屬性文件解析等這些不少底層的需求編寫代碼,能夠更專一於上層的應用。
2)AOP編程的支持:經過Spring提供的AOP功能,方便進行面向切面的編程,許多不容易用傳統OOP實現的功能能夠經過AOP輕鬆應付。

3)聲明式事務的支持:在Spring中,咱們能夠從單調煩悶的事務管理代碼中解脫出來,經過聲明式方式靈活地進行事務的管理,提供開發效率和質量。

4)方便程序的測試:能夠用非容器依賴的編程方式進行幾乎全部的測試工做,在Spring裏,測試再也不是昂貴的操做,而是隨手可作的事情。例如:Spring對Junit4支持,能夠經過註解方便的測試Spring程序。

5)方便集成各類優秀框架:Spring不排斥各類優秀的開源框架,相反,Spring能夠下降各類框架的使用難度,Spring提供了對各類優秀框架的直接支持。

6)下降Java EE API的使用難度:Spring對不少難用的Java EE API 提供了一個薄薄的封裝層,經過Spring的簡易封裝,這些Java EE API的使用難度大爲下降。
注:Spring的源碼設計精巧、結構清晰、匠心獨運,到處體現着大師對Java設計模式靈活運用以及Java技術的高深造詣。Spring框架源碼無疑是Java技術的最佳實踐範例。若是想在短期內迅速提升本身的Java技術水平和應用開發水平,學習和研究Spring源碼將會使你收到意想不到的效果。




二、SpringMVC的經常使用註解,執行流程,都有哪幾種解析器,必需要返回modelAndView麼,SpringMVC接收一個json數據時怎麼處理的,用什麼註解?
回答:SpringMVC經常使用註解:1)@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller對象。
2)@RequestMapping 是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。

3)@Resource和@Autowired 二者都是作bean的注入時使用,其實@Resource並非Spring的註解,它的包是java.annotation.Resource,須要導入,可是Spring支持該註解的注入。@Autowired爲Spring提供的註解,須要導入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。

4)@PathVariable 用於將請求URL中的模板變量映射到功能處理方法的參數上,即取出uri模板中的變量做爲參數。

5)@Cookie 用來獲取Cookie中的值。

6)@RequestParam 用於將請求參數區數據映射到功能處理方法的參數上。

7)@SessionAttrbutes 即將值放到session做用域中,寫在class上面;除了能夠經過屬性名指定須要放到會話中的屬性外(value 屬性值),還能夠經過模型屬性的對象類型指定哪些模型屬性須要放到會話中(types 屬性值)。

8)@ModelAttribute 表明的是:該Controller的全部方法在調用前,先執行此@ModelAttribute方法,可用於註解和方法參數中,能夠把這個@ModelAttribute特性,應用在BaseController當中,全部的Controller繼承BaseController,便可實如今調用Controller時,先執行@ModelAttribute方法。
9)@ResponseBody 該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區;返回數據不是html標籤的頁面,而是其餘某種格式的數據時(如son、xml等)使用。
10)@RequestBody 該用於讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,而後把相應的數據綁定到要返回的對象上;再把HttpMessageConverter返回的對象數據綁定到controller中方法的參數上。
SpringMVC的執行流程:java



經常使用的視圖解析器:(AbstractCachingViewResolver、UrlBasedViewResolver、XmlViewResolver、BeanNameViewResolver、ResourceBundleViewResolver、FreeMarkerViewResolver、VolocityViewResolver)
必需要返回modelAndView麼,SpringMVC接收一個json數據時怎麼處理的,用什麼註解?

不是,使用@ResponseBody把後臺pojo轉換json對象,返回到頁面;@RequestBody接受前臺json,把json數據自動封裝pojo。


三、Spring 依賴注入的幾種方式?
回答:Spring經常使用的依賴注入方式是:Setter方法注入、構造器注入、Filed注入(用於註解方式);
1)Setter方法注入:首先要配置被注入的bean,在該bean對應的類中,應該有要注入的對象屬性或者基本數據類型的屬性。

2)構造器注入:在PersonBiz類中注入PersonDAO和一個String類型的數據;在該類中,不用爲PersonDAO屬性和String數據類型的屬性設置setter方法,可是須要生成該類的構造方法;在配置文件中配置該類的bean,並配置構造器,在配置構造器中用到了<constructor-arg>節點。

3)Filed注入(用於註解方式):在spring中,注入依賴對象能夠採用手工裝配或自動裝配,在實際應用開發中建議使用手工裝配,由於自動裝配會產生許多未知狀況,開發人員沒法預見最終的裝配結果。


四、Spring設置爲單例 ,那麼線程安全問題怎麼解決?
回答:首先了解一下在什麼狀況下,單例的Bean對象存在線程安全問題,當Bean對象對應的類存在可變的成員變量而且其中存在改變這個變量的線程時,多線程操做該Bean對象時會出現線程安全;產生的緣由是當多線程中存在線程改變了bean對象的可變成員變量時,其餘線程沒法訪問該bean對象的初始狀態,從而形成數據錯亂;
解決辦法:1)在Bean對象中儘可能避免定義可變的成員變量;2)在Bean對象中定義一個ThreadLocal成員變量,將須要的可變成員變量保存在ThreadLocal中。


五、 Struts2 和SpringMVC的區別 ?
回答:1)Struts2是類級別上的攔截,一個Action對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文;並且Struts2過濾後是去Struts2配置文件中Action,而SpringMVC過濾後是去Controller中找對應於@RequestMapping註解的uri綁定的方法,從這裏看Struts2使用起來更麻煩,由於你要每一個類的請求你都要配置對應的攔截器。
2)由於攔截器的緣由,致使Struts2的action比較亂,由於它要定義屬性來獲取請求中參數的數據,而屬性在一個類的方法間是共享的(方法間不能獨享request、response數據),因此會有點亂;SpringMVC方法之間基本獨立,獨享request、response之間的數據。請求數據經過參數獲取,處理結果經過model Map交回給框架(方法間不共享變量)。

3)SpringMVC集成了Ajax,使用很是方便,只須要一個註解@ResponseBody就能夠實現,而後直接返回響應文本便可,而Struts2攔截器集成了Ajax,在Action中處理時通常必須安裝插件或者本身寫代碼集成進去,使用起來也相對不方便。



六、Struts2能夠是單例的嗎 爲何?
回答:Struts2的Action是多例模式的,也就是每次請求產生一個Action的對象,可是經過spring能夠控制成單例,控制成單例的話,能夠減小內存的消耗,由於能夠保存action不被銷燬,但不保證這些數據在多線程的環境下不被相互影響。
七、什麼是有狀態對象,什麼是無狀態對象?
回答:1)有狀態對象,多線程環境下不安全,那麼適合用Prototype原型模式。Prototype: 每次對bean的請求都會建立一個新的bean實例;
2)無狀態對象(Stateless Bean),就是沒有實例變量的對象,不能保存數據,是不變類,是線程安全的。


八、Spring的經常使用註解?
回答:@Controller:標記於一個類上面;用來註解這個bean(類)是MVC模型中的一個控制層,使分發處理器識別到該類,該類會被spring的auto-scan掃到歸入管理。
@RequestMapping:標記於一個被@Controller標註的類上;標記於被@Controller標註類裏面的方法上面;表示該被標註類下面全部方法的父類標註。

@Service:用於標註業務層組件上;標註與業務層組件上表示定義一個bean,自動根據所標註的組件名稱實例化一個首字母爲小寫的bean。

@Resource:標註於字段上或者setter方法上,@Resource默認按ByName進行自動裝配;用來自動裝配Bean,激活一個命名資源的依賴注入,@Resource屬性name能夠定義被自動裝配Bean的名稱。

@Autowired:與@Resource的用法和做用基本一致;@Resource屬於J2EE,@Autowired屬於Spring;@Autowired是根據類型(ByType)進行自動裝配的;@Autowired沒有name屬性,若是要按名稱進行裝配,須要配合@Qualifier使用。

@Repository:是用戶標註數據訪問層組件(DAO層);實現DAO訪問,將類識別爲Bean,同時它將所標註的類中拋出的數據訪問異常封裝爲Spring的數據訪問異常類型。

@Component:泛指組件,當組件很差歸類的時候,咱們可使用這個註解進行標註;和前面@Service、@Repository、@Controller同樣,只是它們比@Component更細化。

九、報表用的什麼生成圖表?
回答:1)JFreeChart :.jfree.org/jfreechart/
2)ECharts:

3) jCharts:.sourceforge.net/

4)DynamicReports:.dynamicreports.org/

5)JChartLib:http://sourceforge.net/projects/jchartlib/

6)SWTChart:.swtchart.org/

以上JAVA經常使用的生成圖表工具。



十、Spring 是如何管理事務的?
回答:Spring的事務機制包括聲明式事務和編程式事務;編程式事務管理(Spring推薦使用TransactionTemplate,實際開發中使用聲明式事務較多);聲明式事務管理(將咱們從複雜的事務處理中解脫出來,獲取鏈接,關閉鏈接,事務提交、回滾、異常處理等這些操做都不用咱們處理了,Spring都會幫咱們處理;使用了AOP面向切面編程實現的,本質就是在目標方法執行先後進行攔截。在目標方法執行前加入或建立一個事務,在執行方法執行後,根據實際狀況選擇提交或是回滾事務。)
Spring事務管理主要包括3個接口,Spring的事務主要由它們三個共同完成的。

1)PlatformTransactionManager:事務管理器(主要用於平臺相關事務的管理),主要有三個方法(commit 事務提交;rollback 事務回滾;getTransaction 獲取事務狀態);

2)TransactionDefinition:事務定義信息(用來定義事務相關的屬性,給事務管理器PlatformTransactionManager使用),主要有四個方法(getIsolationLevel 獲取隔離級別、getPropagationBehavior 獲取傳播行爲、getTimeout 獲取超時時間、isReadOnly 是否只讀);

3)TransactionStatus:事務具體運行狀態(事務管理過程當中,每一個時間點事務的狀態信息)。

聲明式事務:優勢(不須要在業務邏輯代碼中編寫事務相關代碼,只須要在配置文件配置或使用註解(@Transaction),這種方式沒有入侵性);
缺點(聲明式事務的最細粒度做用於方法上,若是像代碼塊也有事務需求,只能變通下,將代碼塊變爲方法)。

十一、簡單說說你知道的spring的底層?
回答:1)Spring對Bean進行實例化(至關於程序中的new Xx())
2)Spring將值和Bean的引用注入進Bean對應的屬性中
3)若是Bean實現了BeanNameAware接口,Spring將Bean的ID傳遞給setBeanName()方法(實現BeanNameAware清主要是爲了經過Bean的引用來得到Bean的ID,通常業務中是不多有用到Bean的ID的)
4)若是Bean實現了BeanFactoryAware接口,Spring將調用setBeanDactory(BeanFactory bf)方法並把BeanFactory容器實例做爲參數傳入。(實現BeanFactoryAware 主要目的是爲了獲取Spring容器,如Bean經過Spring容器發佈事件等)
5)若是Bean實現了ApplicationContextAwaer接口,Spring容器將調用setApplicationContext(ApplicationContext ctx)方法,把y應用上下文做爲參數傳入.(做用與BeanFactory相似都是爲了獲取Spring容器,不一樣的是Spring容器在調用setApplicationContext方法時會把它本身做爲setApplicationContext 的參數傳入,而Spring容器在調用setBeanDactory前須要程序員本身指定(注入)setBeanDactory裏的參數BeanFactory )
6)若是Bean實現了BeanPostProcess接口,Spring將調用它們的postProcessBeforeInitialization(預初始化)方法(做用是在Bean實例建立成功後對進行加強處理,如對Bean進行修改,增長某個功能)
7)若是Bean實現了InitializingBean接口,Spring將調用它們的afterPropertiesSet方法,做用與在配置文件中對Bean使用init-method聲明初始化的做用同樣,都是在Bean的所有屬性設置成功後執行的初始化方法。
8)若是Bean實現了BeanPostProcess接口,Spring將調用它們的postProcessAfterInitialization(後初始化)方法(做用與6的同樣,只不過6是在Bean初始化前執行的,而這個是在Bean初始化後執行的,時機不一樣)
9)通過以上的工做後,Bean將一直駐留在應用上下文中給應用使用,直到應用上下文被銷燬
10)若是Bean實現了DispostbleBean接口,Spring將調用它的destory方法,做用與在配置文件中對Bean使用destory-method屬性的做用同樣,都是在Bean實例銷燬前執行的方法。

十二、說說solr的底層 ?
回答:1) 索引過程:(一、有一系列被索引文件;二、被索引文件通過語法分析和語言處理造成一系列詞(Term);三、通過索引建立造成詞典和反向索引表;四、經過索引存儲將索引寫入硬盤。)
2)搜索過程:(一、用戶輸入查詢語句;二、 對查詢語句通過語法分析和語言分析獲得一系列詞(Term);三、經過語法分析獲得一個查詢樹;四、經過索引存儲將索引讀入到內存;五、利用查詢樹搜索索引,從而獲得每一個詞(Term)的文檔鏈表,對文檔鏈表進行交,差,並獲得結果文檔;六、將搜索到的結果文檔對查詢的相關性進行排序;七、返回查詢結果給用戶。)
源碼實現:




1三、Solr如何搭建,簡單介紹一下,你用的什麼版本?
回答:solr-4.10.3搭建:1)下載solr-4.10.3版本,JDK須要1.7及以上版本;2)解壓solr-4.10.3;3)建立solr工程;4)部署到tomcat容器;5)新建solrCore,在此目錄下新建core2文件夾;6)查詢數據表數據;7)java經過solr查詢數據庫表。
詳細過程參考:


1四、Mybatis和hibernate的區別?
回答:mybatis:1)入門簡單,即學即用,提供數據庫查詢的自動對象綁定功能,並且延續了很好的SQL使用經驗,對於沒有那麼高的對象模型要求的項目來講,至關完美;
2)能夠進行更爲細緻的SQL優化,能夠減小查詢字段;

3)缺點就是框架仍是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,可是整個底層數據庫查詢實際仍是要本身寫的,工做量也比較大,並且不太容易適應快速數據庫修改;

4)二級緩存機制不佳。

hibernate:1)功能強大,數據庫無關性好,O/R映射能力強,若是你對Hibernate至關精通,並且對Hibernate進行了適當的封裝,那麼你的項目整個持久層代碼會至關簡單,須要寫的代碼不多,開發速度很快,很是爽;

2)有更好的二級緩存機制,可使用第三方緩存;

3)缺點就是學習門檻不低,要精通門檻更高,並且怎麼設計O/R映射,在性能和對象模型之間如何取得平衡,以及怎樣用好Hibernate方面須要你的經驗和能力都很強才行。


1五、對於hibernate3,4,5有什麼瞭解,其中的特性是什麼?
回答:hibernate4中的新特性基於hibernate3中的改變:1)數據庫方言的設置(在3.3版本中鏈接MySQL數據庫只須要指明MySQLDialect便可。在4.1版本中能夠指出MySQL5Dialect)
2)buildSessionFactory(4.1版本中buildSessionFactory()已經被buildSessionFactory(ServiceRegistry ServiceRegistry)取代)
3)annotation(4.1版本中推薦使用annotation配置,因此在引進jar包時把requested裏面的包所有引進來就已經包含了annotation必須包了)
4)事務,hibernateTemplate(hibernate4已經徹底能夠實現事務了與spring3.1中的hibernatedao,hibernateTemplate等有衝突,因此spring3.1裏已經不提供hibernatedaosupport,hibernateTemplate)
5)自動建表(hibernate4.1已經能夠自動建表,因此開發時只須要本身開發類而後配置很久OK)
hibernate5的新特性:1)明確了關聯關係映射;2)明確Hibernate檢索優化;3)明確Hibernate緩存機制;4)明確Hibernate對事務併發控制的管理;5)明確Hibernate註解開發。


1六、SpringMVC的底層是基於什麼實現的?
回答:Spring MVC是基於servlet功能實現的,經過實現Servlet接口的DispatcherServlet來封裝其核心功能實現,經過將請求分派給處理程序,同時帶有可配置的處理程序映射、視圖解析、本地語言、主題解析以及上傳下載文件支持。

1七、請羅列出您所理解的微服務架構應具備的關鍵組件及關鍵指標?
回答:1)負載平衡:Linkerd提供了多種負載均衡算法,它們使用實時性能指標來分配負載並減小整個應用程序的尾部延遲。
2)熔斷:Linkerd包含自動熔斷,將中止將流量發送到被認爲不健康的實例,從而使他們有機會恢復並避免連鎖反應故障。
3)服務發現:Linkerd 與各類服務發現後端集成,經過刪除特定的(ad-hoc)服務發現實現來幫助您下降代碼的複雜性。
4)動態請求路由:Linkerd 啓用動態請求路由和從新路由,容許您使用最少許的配置來設置分段服務(staging service),金絲雀(canaries),藍綠部署(blue-green deploy),跨DC故障切換和黑暗流量(dark traffic)。
5)重試次數和截止日期:Linkerd能夠在某些故障時自動重試請求,而且能夠在指定的時間段以後讓請求超時。
6)TLS:Linkerd能夠配置爲使用TLS發送和接收請求,您可使用它來加密跨主機邊界的通訊,而不用修改現有的應用程序代碼。
7)HTTP代理集成:Linkerd能夠做爲HTTP代理,幾乎全部現代HTTP客戶端都普遍支持,使其易於集成到現有應用程序中。
8)透明代理:您能夠在主機上使用iptables規則,設置經過Linkerd的透明代理。
9)gRPC:Linkerd支持HTTP/2和TLS,容許它路由gRPC請求,支持高級RPC機制,如雙向流,流程控制和結構化數據負載。
10)分佈式跟蹤:Linkerd支持分佈式跟蹤和度量儀器,能夠提供跨越全部服務的統一的可觀察性。
11)儀器儀表:Linkerd支持分佈式跟蹤和度量儀器,能夠提供跨越全部服務的統一的可觀察性。

1八、hibernate的二級緩存有什麼用?
回答:由於應用程序訪問數據庫,讀寫數據的代價很是高,而利用持久層的緩存能夠減小應用程序與數據庫之間的交互,即把訪問過的數據保存到緩存中,應用程序再次訪問已經訪問過的數據,這些數據就能夠從緩存中獲取,而沒必要再從數據庫中獲取。同時若是數據庫中的數據被修改或者刪除,那麼是該數據所對應的緩存數據,也會被同步修改或刪除,進而保持緩存數據的一致性。

1九、介紹一下mybatis?
回答:1)入門簡單,即學即用,提供數據庫查詢的自動對象綁定功能,並且延續了很好的SQL使用經驗,對於沒有那麼高的對象模型要求的項目來講,至關完美;

2)二級緩存機制不佳。

3)能夠進行更爲細緻的SQL優化,能夠減小查詢字段;

4)缺點就是框架仍是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,可是整個底層數據庫查詢實際仍是要本身寫的,工做量也比較大,並且不太容易適應快速數據庫修改;




20、 Shiro的原理?
回答:shiro是apache的一個開源框架,是一個權限管理的框架,實現用戶認證,用戶受權。spring中有spring security(原名Acegi),是一個權限框架,它和spring依賴過於緊密,沒有shiro使用簡單。shiro不依賴與spring,shiro不只能夠實現web應用的權限管理,還能夠實現c/s系統,分佈式系統權限管理,shiro屬於輕量級框架,愈來愈多的企業項目使用shiro。使用shiro實現系統的權限管理,有效提升開發效率,從而下降開發成本。
shiro架構有3個主要概念:Subject、SecurityManager、Realms。


1)Subject,正如咱們在教程中所說,Subject其實表明的就是當前正在執行操做的用戶,只不過由於「User」通常指代人,可是一個「Subject」能夠是人,也能夠是任何的第三方系統,服務帳號等任何其餘正在和當前系統交互的第三方軟件系統。
全部的Subject實例都被綁定到一個SecurityManager,若是你和一個Subject交互,全部的交互動做都會被轉換成Subject與SecurityManager的交互。

2)SecurityManager。SecurityManager是Shiro的核心,他主要用於協調Shiro內部各類安全組件,不過咱們通常不用太關心SecurityManager,對於應用程序開發者來講,主要仍是使用Subject的API來處理各類安全驗證邏輯。
3)Realm,這是用於鏈接Shiro和客戶系統的用戶數據的橋樑。一旦Shiro真正須要訪問各類安全相關的數據(好比使用用戶帳戶來作用戶身份驗證以及權限驗證)時,他老是經過調用系統配置的各類Realm來讀取數據。

正由於如此,Realm每每被看作是安全領域的DAO,他封裝了數據源鏈接相關的細節,將數據以Shiro須要的格式提供給Shiro。當咱們配置Shiro的時候,咱們至少須要配置一個Realm來提供用戶驗證和權限控制方面的數據。咱們可能會給SecurityManager配置多個Realm,可是無論怎樣,咱們至少須要配置一個。
Shiro提供了幾種開箱即用的Realm來訪問安全數據源,好比LDAP、關係數據庫、基於ini的安全配置文件等等,若是默認提供的這幾種Realm沒法知足你的需求,那麼你也能夠編寫本身的定製化的Realm插件。
和其餘內部組件同樣,SecurityManager決定了在Shiro中如何使用Realm來讀取身份和權限方面的數據,而後組裝成Subject實例。


shiro詳細架構:

git




2一、Webservice是什麼,怎麼用 ?
回答:從表面上看,WebService就是一個應用程序,它向外界暴露出一個可以經過Web進行調用的API。這就是說,你可以用編程的方法經過Web調用來實現某個功能的應用程序。從深層次上看,Web Service是一種新的Web應用程序分支,它們是自包含、自描述、模塊化的應用,能夠在網絡(一般爲Web)中被描述、發佈、查找以及經過Web來調用;Web Service即是基於網絡的、分佈式的模塊化組件,它執行特定的任務,遵照具體的技術規範,這些規範使得Web Service能與其餘兼容的組件進行互操做。它可使用標準的互聯網協議,像超文本傳輸協議HTTP和XML,將功能體如今互聯網和企業內部網上。WebService平臺是一套標準,它定義了應用程序如何在Web上實現互操做性。你能夠用你喜歡的任何語言,在你喜歡的任何平臺上寫Web Service;WebService 爲Internet 上的組件服務•經過網絡提供,以URL 定位方法調用•以Internet技術爲基礎•未來的分散式應用程序。

第一步:建立一個Java項目
  第二步:建立一個類,加入Webservice註解
@WebService是jdk提供的一個註解,它位於javax.jws.*這個包中。
  第三步:建立一個方法
  第四步:在main方法中調用jdk提供的發佈服務的方法
    經過EndPoint(端點服務)發佈一個webService。
Endpoint也是jdk提供的一個專門用於發佈服務的類,它的publish方法接收兩個參數,一個是本地的服務地址,二是提供服務的類。它位於javax.xml.ws.*包中。
static Endpoint.publish(String address, Object implementor) 在給定地址處針對指定的實現者對象建立併發布端點。
stop方法用於中止服務。
EndPoint發佈完成服務之後,將會獨立的線程運行。因此,publish
以後的代碼,能夠正常執行



2二、solr存數據是否是要建立索引?
回答:要建立,存數據以前須要建立標籤並設置屬性,須要建立的索引必須在Schema裏面有。程序員

相關文章
相關標籤/搜索