freemarker的測試結果框架_java必背綜合知識點總結(框架篇)

框架篇

一、Struts1的運行原理

在啟動時通過前端總控制器ActionServlet加載struts-config.xml并進行解析,當用戶在jsp頁面發送請求被struts1的核心控制器ActionServlet接收,ActionServlet在用戶請求時將請求參數放到對應的ActionForm對象中的成員變量中,然后ActionServlet則會根據struts-config.xml中的映射關系找到相應的Action中的方法,將對應的ActionForm一并傳給這個Action中的方法里,然后執行相應的業務邏輯操作,最后就根據ActionMapping的findforward方法返回一個ActionForward,之后在struts-config.xml中找到與之對應的forward標簽,根據它的配置路徑找到對應的jsp頁面。

二、Struts2的運行原理

1、tomcat 啟動的時候會加載 web.xml 、核心控制器 FilterDispatcher 會加載并解析 struts.xml

2、客戶端會發送一個請求到 action 、FilterDispatcher 會根據后綴名進行攔截

3、FilterDispatcher根據 struts.xml 的配置文件信息 找到 某個action 對應的某個類里的指定方法

4、執行相關的業務邏輯最后返回 一個String

5、 里配置 name的屬性值與返回的String 進行匹配,跳轉到指定的jsp 頁面

三、struts2的體系結構

1、客戶端向Servlet容器(例如Tomcat)發送一個請求;

2、這個請求經過一系列的過濾器(Filter);

3、接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請求是否需要調用某個Action;

4、如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy;

5、ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類;

6、ActionProxy創建一個ActionInvocation的實例。

7、ActionInvocation在調用Action的過程前后,涉及到相關攔截器(Intercepter)的調用。

8、一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是jsp或者FreeMarker的模版。(體系結構圖見下一頁)

39efc5c8f199405c98284194e11ac423

四、Spring MVC運行原理

整個處理過程從一個HTTP請求開始:

1.Tomcat在啟動時加載解析web.xml,找到spring mvc的前端總控制器DispatcherServlet,并且通過DispatcherServlet來加載相關的配置文件信息。

2.DispatcherServlet接收到客戶端請求,找到對應HandlerMapping,根據映射規則,找到對應的處理器(Handler)。

3.調用相應處理器中的處理方法,處理該請求后,會返回一個ModelAndView。

4.DispatcherServlet根據得到的ModelAndView中的視圖對象,找到一個合適的ViewResolver(視圖解析器),根據視圖解析器的配置,DispatcherServlet將要顯示的數據傳給對應的視圖,最后顯示給用戶。

五、Struts1.x與Struts2.x的區別

Struts 2以WebWork為核心,

采用攔截器的機制來處理用戶的請求,struts1嚴重依賴于servletAPI,

屬于侵入性框架,struts2不嚴重依賴于servletAPI,屬于非侵入型框架。

線程模型方面:

Struts1的Action是單實例的,

一個Action的實例處理所有的請求。

Struts2的Action是一個請求對應一個實例(每次請求時都新new出一個對象),

沒有線程安全方面的問題

封裝請求參數:

Struts1中強制使用ActionForm對象封裝請求的參數。

Struts2可以選擇使用POJO類來封裝請求的參數,或者直接使用Action的屬性。

struts1的前端總控制器(核心總控制器)為ActionServlet,

struts2的前端總控制器(核心總控制器)為FilterDispather

六、Spring MVC、struts1和struts2區別

1.spring mvc 單例 非線程安全

struts1單例 非線程安全

struts2線程安全對每個請求都產生一個實例

2.spring mvc的入口是servlet,而struts2是filter

spring 的前端總控制器為 DispatcherServlet

struts2 的前端總控制器為 FilterDispatcher

struts1 的前端總控制器為 actionServlet

3. 參數傳遞:struts是在接受參數的時候,

可以用屬性來接受參數,這就說明參數是讓多個方法共享的。

springmvc 用方法來接受參數

4.spring mvc是基于方法的設計,而sturts是基于類

七、Struts2中result中的type類型

1.dispatcher:它是默認的,用來轉向頁面,通常處理JSP

2.redirect:將用戶重定向到一個已配置好的URL

3.redirectAction:將用戶重定向到一個已定義好的action

4.chain:將action和另外一個action鏈接起來

5.freemarker:呈現Freemarker模板

6.httpheader:返回一個已配置好的HTTP頭信息響應

7.stream:向瀏覽器發送InputSream對象對下載的內容和圖片非常有用

8.velocity:呈現Velocity模板

9.xslt:該XML可以通過XSL模板進行轉換

10.plaintext:顯示原始文件內容,例如文件源代碼

八、Struts2標簽

首先需要引用

1. 判斷標簽 后面可跟

2. 迭代標簽

3. 引入標簽 可以把一個JSP頁面或者servlet引入一個頁面中

4. 輸出標簽

5. 標簽賦予變量一個特定范圍內的值

6.

表單標簽

7. 文本域標簽

8. 下拉標簽

9. 聲明一個url的路徑

最常用的是:

判斷

循環

輸出

九、SSI整合

1、Action繼承于Actionsupport

2、引入struts-spring-plugin.jar包,從而完成struts和spring的整合

3、在struts2的action中注入service,保證service的名字和配置文件中的一致,并生成get,set方法

4、Dao層繼承于SqlMapClientDaoSupport

5、在dao層的配置文件中注入sqlMapClient

十、SSH整合

1.首先在web.xml中通過ContextLoaderListener來融入spring,

并加載spring的相關配置文件

2.同樣配置sturts2的前端總控制器filterDispatcher來過濾相關的

請求并且加載struts.xml

3.action繼承ActionSupport,然后通過引入struts-spring-plugin.jar

包并且根據配置文件中service的id生成get,set方法來注入service層。

4.dao層繼承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory.

5.通過spring中的配置文件加載hibernate.cfg.xml文件從而融入hibernate.

在ssh框架中是怎么整合spring?

首先在web.xml中通過ContextLoaderListener來融入spring,

并加載spring的相關配置文件

在ssh框架中是怎么整合hibernate?

通過spring中的配置文件加載hibernate.cfg.xml文件從而融入hibernate

dao層繼承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory

在ssh框架中是怎么整合struts2?

配置sturts2的前端總控制器filterDispatcher來過濾相關的

請求并且加載struts.xml

十、Spring MVC整合

1.首先,要在web.xml里面配置SpringMVC的核心控制器,DispatcherServlet,對指定的后綴請求進行攔截。

2.Controller層要加 @Controller注解,表明該類是MVC的控制層。

3.創建Service接口,給接口加上注解 @Component或者 @Service 表明這是Service業務處理層

4.在Controller層聲明Service變量(屬性),給變量(屬性) 加上 @Autowired注解,通過自動綁定機制將Service注入到Controller。 (注:@Autowired默認是ByType,如果想根據屬性名注入,那么就再加上注解 @Resource(name=“屬性名”))

5.在Controller層的方法上加上注解 @RequestMapping(“requestAddress”) 表明該方法的請求地址

6.Dao層要加上注解 @Repository 表明這是數據庫持久層

7.同樣將dao實例注入到service層中。

8.配置視圖解析器 “InternalResourceViewResolver”,對處理后的跳轉進行統一配置。

十一、Hibernate 中get 和 load的區別

加載方式:

load為延遲加載(返回的是一個只有id屬性的代理,只有使用該對象屬性時,才發出sql語句);

get為立即加載(執行時,會立即向數據庫發出sql語句)

返回結果:

load檢索不到記錄時,會拋ObjectNotFoundException異常

get檢索不到記錄時,會返回null

十二、Hibernate、Ibatis、Jdbc三者的區別

Hibernate屬于全自動, Ibatis屬于半自動,Jdbc屬于手動,從開發效率上講hibernate較高,ibatis居中,jdbc較低,從執行效率上講hibernate較低,ibatis居中,jdbc較高,因為jdbc是手工寫sql語句,程序員對sql的控制能力更大,可以根據業務需要進行優化,而ibatis雖然也可以對sql進行優化,但是他里面將resultset封裝為實體的過程中采用了反射機制所以一定程度上影響了性能,而hibernate因為高度封裝所以開發效率相對較高,但正因為這個原因,所以程序員在對sql語句的控制和優化方面相對比較弱,而且在將resultset封裝成實體的過程中也采用了反射機制,所以在性能方面較低

十三、Hibernate的運行原理

首先通過configuration去加載hibernate.cfg.xml這個配置文件,根據

配置文件的信息去創建sessionFactory,sessionFactory是線程安全的,

是一個session工廠,用來創建session,session是線程不安全的,相當于

jdbc的connection,最后通過session去進行數據庫的各種操作,在進行操作

的時候通過transaction進行事務的控制。

十四、Hibernate五大核心(類/接口)簡述

1 .Configuration接口的作用是對Hibernate進行配置,以及對它進行啟動。(加載hibernate.cfg.xml)并創建一個SessionFactory對象。

2 .SessionFactory接口

SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理,并負責創建Session對象。SessionFactory是線程安全的。

3 .Session接口

Session(會話)接口是Hibernate應用使用的主要接口。Session接口負責執行被持久化對象的CRUD操作(增刪改查)。Session對象是非線程安全的。Session 相當于jdbc的connection

4 .Query與Criteria接口

總之Query和Criteria接口負責執行各種數據庫查詢。

5 .Transaction接口

Transaction(事務)負責操作相關的事務。

十五、Hibernate與JDBC的區別

1、hibernate和jdbc主要區別就是,hibernate先檢索緩存中的映射對象( 即hibernate操作的是對象),而jdbc則是直接操作數據庫.

2、Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。Hibernate可以用在任何JDBC可以使用的場合

3、Hibernate是一個和JDBC密切關聯的框架,所以Hibernate的兼容性和JDBC驅動,和數據庫都有一定的關系,但是和使用它的Java程序,和App Server沒有任何關系,也不存在兼容性問題。

4、如果正確的使用JDBC技術,它的執行效率一定比hibernate要好,因為hibernate是基于jdbc的技術.

5、JDBC使用的是SQL語句,Hibernate使用的是HQL語句,但是HQL語句最終還會隱式轉換成SQL語句執行。

十六、Hibernate中的兩大配置文件

.hbm.xml:主鍵生成策略,映射關系,一對多,一對一的關系。

Hibernate.cfg.xml:方言(用哪個數據庫),數據庫連接信息,包含.hbm.xml內容,映射文件,也可以配事務。

十七、Hibernate事務處理

開啟事務 session.beginTransaction();

執行相關的操作,如果成功則session.getTransaction().commit();

執行操作失敗則 session.getTransaction.rollback();

十八、Hibernate的三種狀態以及狀態的轉換

Transient(臨時)

new 一個初始化對象后,并沒有在數據庫里保存數據,處于臨時狀態;

Persistent(持久化)

當執行save()方法,調用session.close()方法之前,內存中的對象與數據庫有 對應關系處于持久化狀態;

Detached(托管/游離)

當執行session.close()之后,處于托管狀態;

狀態的轉換

處于托管狀態下,調用update()方法后,轉換為持久化狀態;

在持久化狀態下,執行delete()方法后,轉換為臨時狀態;

在未初始化對象之前,調用get(),load(),find(),iterate()之后,直接進入持久化狀態。

十九、分頁步驟

①前臺封裝一個顯示分頁的組件

②查詢總條數

③后臺封裝分頁工具類,計算開始位置、結束位置、總頁數

④后臺寫支持分頁的sql語句

⑤前臺包含分頁組件,實現分頁效果

注意:

查詢總條數的where和查詢列表信息的where條件要保證一致。

二十、hibernate緩存概述

hibernate分為一級緩存即session緩存也叫事務級別的緩存以及

二級緩存sessionFactory即應用級別的緩存,還有查詢緩存即三級緩存.

一級緩存的生命周期和session的生命周期保持一致,

hibernate默認就啟用了一級緩存,

不能將其關閉,可以通過session.clear()和session.evict(object)來管理一級緩存。其中get,load,iterate都會使用一級緩存,一級緩存緩存的是對象。

二級緩存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多個session共享,hibernate3默認開啟二級緩存,也可以手動開啟并指定緩存插件如ehcache,oscache

等。二級緩存也只能緩存對象。

三級緩存也叫查詢緩存,查詢緩存是針對普通屬性結果集的緩存,

對實體對象的結果集只緩存id。對query.list()起作用,query.iterate不起作用,也就是query.iterate不使用查詢緩存

二十一、Ssh的概述:

ssh是web開發中常見的一種框架

s-struts

s-spring

h-hibernate

其中struts在框架中充當控制器,實現MVC,主要用來處理用戶的請求,和跳轉頁面。使項目結構清晰,開發者只需要關注業務邏輯的實現即可。

spring在ssh充當粘合劑,粘合struts-sping-hibernate,主要用來進行事物的控制,

hibernate-充當數據庫持久層,主要用它來與數據庫交互,提高開發效率,減輕程序員sql控制要求,而且hibernate通過反射機制,有靈活的映射性,還支持各種關系,一對一,一對多,多對多。

在進行ssh整合的時候,我們應該注意:

  1. Action繼承于ActionSupport
  2. 引入struts-spring-plugin.jar包,從而完成struts和spring的整合
  3. 在struts2的action中注入service,保證service的名字和配置文件中的一致,并生成get,set方法
  4. Dao層繼承于hibernateDaoSupport
  5. 在dao層的配置文件中注入sessionFactory

二十二、防止表單重復提交

針對于重復提交的整體解決方案:

1.用redirect來解決重復提交的問題

2.點擊一次之后,按鈕失效

3.通過loading

4.自定義重復提交過濾器

5.解決struts2重復提交

可以結合s:token標簽來解決重復提交問題

利用token的原理:

1.在前端的jsp頁面中加入s:token標簽,在訪問該頁面時就會生成

隱藏域,該隱藏域中包含一個隨機生成的字符串,并把該字符串

存入session中

2.在struts2的配置文件中加入token攔截器后,當正常訪問action

的時候,會從session中取出該字符串,然后和頁面隱藏域中提交

字符串做對比,如果一致則正常執行并刪除session中存儲的字符串。

二十三、JSP標簽:

1.JSP include動作

jsp:include 動作

以“ ” 結束

比如:

2.JSP指令:

以“ ” 結束。比如:

3.JSP輸出表達式:

輸出變量的值,后邊不能加

4.JSP Scriptlet【腳本】:

例子:

5.JSP聲明:

例子:

String getHello(String name) {

return “Hi,” + name + “!”;

}

%>

6.迭代標簽:

Jstl中的核心標簽(core)

7.JSP注釋:

8.el表達式:${}

9.jsp:include動作是在運行時動態包含。

@include指令是在編譯時包含。

它們兩個都只能包含本項目的相關文件,不能包含其他項目的。

如果要包含其他項目的文件可以使用c:import

二十四、過濾器

filter的概述:

filter是一個過濾器,用來在請求前和響應后進行數據的處理。

filter的生命周期是:

實例化—>初始化(init)–>進行過濾(doFilter)—>銷毀(destroy)–>釋放資源

一個Filter必須實現javax.servlet.Filter接口

在項目中我們通常通過filter進行編碼轉換,

進行安全驗證,進行重復提交的判斷。

了解(不需要主動說)

filter 相當于 攔截器 相當于Spring AOP

servlet+jsp+javabean+jdbc+filter

encodingFilterorg.leopard.filter.EncodingFilterencodeutf-8encodingFilter*

二十五、攔截器的理解

什么是攔截器:

攔截器是AOP中的概念,它本身是一段代碼,可以通過定義“織入點”,來指定攔截器的代碼在“織入點”的前后執行,從而起到攔截的作用

正如上面 Struts2的Reference中講述的,Struts2的Interceptor,其攔截的對象是Action代碼,可以定義在Action代碼之前或者之后執行攔截器的代碼。

在項目中,我們經常用來攔截通過非正常程序而進行的訪問

Struts2的攔截器和Servlet過濾器類似。在執行Action的execute方法之前,Struts2會首先執行在struts.xml中引用的攔截器,在執行完所有引用的攔截器的intercept方法后,會執行Action的execute方法。

其中intercept方法是攔截器的核心方法,所有安裝的攔截器都會調用之個方法。在Struts2中已經在struts-default.xml中預定義了一些自帶的攔截器,如timer、params等。如果在標簽中繼承struts-default,則當前package就會自動擁有struts-default.xml中的所有配置。代碼如下:

攔截器是Struts2框架的核心,它主要完成解析請求參數、將請求參數賦值給Action屬性、執行數據校驗、文件上傳等工作

在struts-default.xml中有一個默認的引用,在默認情況下(也就是中未引用攔截器時)會自動引用一些攔截器。struts2中默認的攔截器是defaultStack.

自定義攔截器需要特別注意的是不要忘記引入struts2默認的攔截器。為了實現某些操作,我們可以自定義攔截器,

自定義攔截器有三種方式定義。分別為實現Interceptor接口,繼承抽象類AbstractInterceptor,繼承MethodFilterInteceptor類。

攔截器在項目中的運用:

同時可以減輕代碼冗余,提高重用率。

如果要求用戶密碼、權限等的驗證,就可以用自定義的攔截器進行密碼驗證和權限限制。對符合的登入者才跳轉到正確頁面。

二十六、Spring融入框架

我們通過在web.xml中配置ContextLoaderListener這個監聽器也加載

spring的配置文件,從而融入到項目框架中。

二十七、項目的部署方式

1、如果項目單獨部署到tomcat中的時候,應該看tomcat中的server.xml;

2、如果和eclipse結合使用進行項目部署的時候,應該看eclipse里面的server.xml.

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

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

相關文章

Java SecurityManager checkPackageDefinition()方法與示例

SecurityManager類的checkPackageDefinition()方法 (SecurityManager Class checkPackageDefinition() method) checkPackageDefinition() method is available in java.lang package. checkPackageDefinition()方法在java.lang包中可用。 We call getProperty("package.d…

java容器詳解_詳解Java 容器(第①篇)——概覽

![](http://img.blog.itpub.net/blog/2020/04/02/9d89d3008962c127.png?x-oss-processstyle/bb)容器主要包括 Collection 和 Map 兩種,Collection 存儲著對象的集合,而 Map 存儲著鍵值對(兩個對象)的映射表。# 一、Collection![](https://upload-images…

python圖形界面庫哪個好_8個必備的Python GUI庫

Python GUI 庫有很多,下面給大家羅列常用的幾種 GUI庫。下面介紹的這些GUI框架,能滿足大部分開發人員的需要,你可以根據自己的需求,選擇合適的GUI庫。1. wxPython wxPython 是一個跨平臺的 GUI 工具集,是 Python 語言的…

為什么在Python中使用string.join(list)而不是list.join(string)?

join() is a string method and while using it the separator string iterates over an arbitrary sequence, forming string representations of each of the elements, inserting itself between the elements. join()是一個字符串方法,使用它時,分隔…

js的client、scroll、offset詳解與兼容性

clientWidth:可視區寬說明:樣式寬padding參考:js的client詳解 scrollTop : 滾動條滾動距離說明:chrome下他會以為滾動條是文檔元素的,所以需要做兼容:var scrollTop document.documentElement.scrollTop |…

88是python語言的整數類型_Python基礎數據類型題

Python基礎數據類型 題 考試時間:三個小時 滿分100分(80分以上包含80分及格) 1,簡述變量命名規范(3分)1.必須是字母,數字,下劃線的任意組合。 2.不能是數字開頭 3.不能是python中的關…

[轉載]使用awk進行數字計算,保留指定位小數

對于在Shell中進行數字的計算,其實方法有很多,但是常用的方法都有其弱點: 1、bc bc應該是最常用的Linux中計算器了,簡單方便,支持浮點。 [wangdongcentos715-node1 ~]$ echo 12 |bc 3 [wangdongcentos715-node1 ~]$ ec…

dcom配置_spring cloud 二代架構依賴組件 全配置放送

一 背景介紹先來看一下我們熟悉的第一代 spring cloud 的組件spring cloud 現在已經是一種標準了,各公司可以基于它的編程模型編寫自己的組件 ,比如Netflix、阿里巴巴都有自己的一套通過spring cloud 編程模型開發的分布式服務組件 。Spring Cloud 二代組…

olap 多維分析_OLAP(在線分析處理)| OLAP多維數據集和操作

olap 多維分析In the previous article of OLAP, we have seen various applications of OLAP, Various types of OLAP, advantages, and disadvantages of OLAP. In this article, we will learn about the, 在OLAP的上一篇文章中,我們了解了OLAP的各種應用&#x…

dede mysql語句_讓dede運行php代碼和mysql語句

一、dede運行php代碼舉例1:{dede:name runphpyes}$str "hello ";me $str;me . "world";{/dede:name}結果:hello world說明:"name"為任意定義的名字,me 表示當前的值,也就是要輸出最后…

每周一書-2016年8月28日到9月4日獲獎讀者公布

每周一書-2016年8月28日到9月4日獲獎讀者公布 上次送出的《Bootstrap基礎教程》,已經被幸運者收到了。我們先來回顧下《改善C程序代碼的125個建議》活動文章下的精彩留言。 這是一段高屋建瓴的評述,足見作者對C語言的了解和熱愛層度,當然也得…

c構造函數和析構函數_C ++構造函數和析構函數| 查找輸出程序| 套裝2

c構造函數和析構函數Program 1: 程序1&#xff1a; #include<iostream>using namespace std;class Sample{private:int X;int Y;public:Sample(int x, int y){X x;Y y;}void set(int x, int y){X x;Y y;}void print(){cout<<X<<" "<<Y&…

python map函數的作用_Python的map函數

map()是 Python 內置的高階函數&#xff0c;它接收一個函數 f 和一個 list&#xff0c;并通過把函數 f 依次作用在 list 的每個元素上&#xff0c;得到一個新的 list 并返回。 例如&#xff0c;對于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每個元素都作平方&#xf…

idea java no sdk_java - intelliJ IDEA 13錯誤:請選擇Android SDK

java - intelliJ IDEA 13錯誤&#xff1a;請選擇Android SDK我已經在Error: Cannot find any configured Android SDK上安裝了intelliJ 12.1.2和Error: Cannot find any configured Android SDK。現在我使用intelliJ 13.0.1創建了一個空的android應用程序項目(也使用模擬器作為…

該怎樣在KeyShot中進行貼圖

2019獨角獸企業重金招聘Python工程師標準>>> 在渲染物體的時候&#xff0c;貼圖常常是不可缺少的部分&#xff0c;貼圖主要用于描述對象表面的物質形態&#xff0c;構造真實世界中自然物質表面的視覺表象。不同的貼圖能給人帶來不同的視覺感受&#xff0c;KeyShot3D…

python淘寶cookies搶購_Python實現淘寶秒殺聚劃算搶購自動提醒源碼

說明 本實例能夠監控聚劃算的搶購按鈕&#xff0c;在聚劃算整點聚的時間到達時發出提醒&#xff08;音頻文件自己定義位置&#xff09;并自動彈開頁面&#xff08;URL自己定義&#xff09;。 同時還可以通過命令行參數自定義刷新間隔時間&#xff08;默認0.1s&#xff09;和監控…

kadane算法_使用KADANE的算法求最大子陣列和

kadane算法What is a sub-array? 什么是子陣列&#xff1f; A sub-array is basically an arrays contiguous part. For example, if we have an array of integers [1,2,3] so the sub-arrays that we can form from the given array are [1], [2] , [3] , [1,2] , [2,3] , …

java汽車油耗計算_轉發一個手機油耗計算器 (java)

今天在一個汽車論壇上看見的&#xff0c;試了試&#xff0c;還真不錯。比以前那個Fuel Consumption 功能要強大,雖然都是JAVA軟件。小羅盤手機計算器是作者獨自產品策劃、美術設計、程序開發、測試發布的手機應用軟件&#xff0c;是為作者的一個朋友寫的&#xff0c;當然我們用…

6.dubbo常用的xml配置有哪些_【面試篇】必須掌握的Spring 常用注解

閱讀文本大概需要5分鐘。注解本身沒有功能的&#xff0c;就和 xml 一樣。注解和 xml 都是一種元數據&#xff0c;元數據即解釋數據的數據&#xff0c;這就是所謂配置。本文主要羅列 Spring|Spring MVC相關注解的簡介。Spring部分1、聲明bean的注解Component 組件&#xff0c;沒…

Linux的iptables常用配置范例(2)

iptables -F #清除所有規則 iptables -X #清除所有自定義規則 iptables -Z #各項計數歸零 iptables -P INPUT DROP #將input鏈默認規則設置為丟棄 iptables -P OUTPUT DROP #將output鏈默認規則設置為丟棄 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo …