SSH中一些典型的問題

struts2

1-1:為什么每次請求都要創建一個Action對象???

是出于對線程安全的考慮,每個request都不會相互影響

1-2:ModelDriven攔截器的配置中refreshModelBeforeResult解決了什么問題???

先把舊的model對象從ValueStack中移除,然后再把新的model對象壓入ValueStack!

官方解釋:

set to true if you want the model to be refreshed on the value stack after action execution and before result execution. The setting is useful if you want to change the model instance during the action execution phase, like when loading it from the data layer. This will result in getModel() being called at least twice.

一般不需要配,順便罵句誰出的這么坑爹的問題。

1-3:為什么在web.xml中配置的StrutsPrepareAndExecuteFilter要過濾所有的請求?

其實這里可以選擇性的過濾,但是一般大家都是/*,所有的請求都必須經過StrutsPrepareAndExecuteFilter這個請求轉發器。

它會去找struts.xml文件,一般放在src下面的第一層目錄,然后找到相應的資源去轉發。

1-4:請你給我談談ValueStack? ? ??

所謂值棧就是在一個棧里面堆了一大坨的數值,在action中可以這樣獲得ValueStack vs1 = ActionContext.getContext().getValueStack();

其實值棧就類似于一個map的容器,里面存放的是鍵值對,但是有個區別,這個值棧的鍵都是String類型的。我們一般可以這樣來拿出值棧里面的內容

名字屬性獲取 : 也可以用el表達式${aa}或者ognl表達式

其中ognl表達式主要就是去訪問值棧,它的查找路線為用于按request > session > application順序訪問其屬性(attribute),#user.username相當于按順序在以上三個范圍(scope)內讀取user.username屬性,直到找到為止

1-5:Struts2是如何實現MVC設計模式的???

自己去理解,按自己的request走一遍就知道了。不懂MVC還用STRUTS?

?

Spring

2-1:你為什么要用Spring??
XXX,為什么要用?好用才用的啊。spring有很多作用比如他的安全機制,事務管理,日志管理等等。。最主要的是把耦合度降到最低。
2-2:請你聊一聊IOC/DI??
把工廠和對象生成這兩者獨立分隔開來,提高靈活性和可維護性。具體的太多了。
2-3:什么是聲明式的事務管理?為什么要使用聲明式的事務管理?Spring如何實現聲明式的事務管理??
Spring 的聲明式事務管理在底層是建立在 AOP 的基礎之上的。其本質是對方法前后進行攔截,然后在目標方法開始之前創建或者加入一個事務,在執行完目標方法之后根據執行情況提交或者回滾事務。?
使用聲明式的事務管理可重用性高。這里就列舉一種最常用的配置吧。

Xml代碼??收藏代碼
  1. <</span>bean?id="dataSource"??
  2. ????????class="org.springframework.jdbc.datasource.DriverManagerDataSource">??
  3. ????????<</span>property?name="driverClassName"?value="${jdbc.driverClassName}"?/>??
  4. ????????<</span>property?name="url"?value="${jdbc.url}"?/>??
  5. ????????<</span>property?name="username"?value="${jdbc.username}"?/>??
  6. ????????<</span>property?name="password"?value="${jdbc.password}"?/>??
  7. ????</</span>bean>??
  8. ????<</span>bean?id="transactionManager"??
  9. ????????class="org.springframework.orm.hibernate3.HibernateTransactionManager">??
  10. ????????<</span>property?name="sessionFactory">??
  11. ????????????<</span>ref?local="sessionFactory"?/>??
  12. ????????</</span>property>??
  13. ????</</span>bean>??
  14. ??????
  15. ??????
  16. ????<</span>bean?id="nativeJdbcExtractor"?lazy-init="true"??
  17. ????????class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"?/>??
  18. ????<</span>bean?id="lobHandler"?lazy-init="true"??
  19. ????????class="org.springframework.jdbc.support.lob.OracleLobHandler">??
  20. ????????<</span>property?name="nativeJdbcExtractor">??
  21. ????????????<</span>ref?bean="nativeJdbcExtractor"?/>??
  22. ????????</</span>property>??
  23. ????</</span>bean>??
  24. ??????
  25. ??????
  26. ????<</span>bean?id="sessionFactory"??
  27. ????????class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">??
  28. ????????<</span>property?name="dataSource"?ref="dataSource"?/>??
  29. ????????<</span>property?name="lobHandler"?ref="lobHandler"?/>??
  30. ????????<</span>property?name="mappingDirectoryLocations">??
  31. ????????????<</span>list>??
  32. ????????????????<</span>value>classpath*:XXX</</span>value>??
  33. ????????????</</span>list>??
  34. ????????</</span>property>??
  35. ????????<</span>property?name="hibernateProperties">??
  36. ????????????<</span>props>??
  37. ?????????????????
  38. ????????????????<</span>prop?key="hibernate.dialect">${hibernate.dialect}</</span>prop>??
  39. ????????????????<</span>prop?key="hibernate.show_sql">${hibernate.show_sql}</</span>prop>??
  40. ????????????????<</span>prop?key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</</span>prop>??
  41. ????????????????<</span>prop?key="hibernate.default_schema">${hibernate.default_schema}</</span>prop>??
  42. ????????????</</span>props>??
  43. ????????</</span>property>??
  44. ????</</span>bean>??
  45. ????<</span>bean?id="txProxyTemplate"?abstract="true"??
  46. ????????class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">??
  47. ????????<</span>property?name="transactionManager">??
  48. ????????????<</span>ref?local="transactionManager"></</span>ref>??
  49. ????????</</span>property>??
  50. ????????<</span>property?name="transactionAttributes">??
  51. ????????????<</span>props>??
  52. ????????????????<</span>prop?key="save*">PROPAGATION_REQUIRED,-exception</</span>prop>??
  53. ????????????????<</span>prop?key="update*">PROPAGATION_REQUIRED,-exception</</span>prop>??
  54. ????????????????<</span>prop?key="delete*">PROPAGATION_REQUIRED,-exception</</span>prop>??
  55. ????????????????<</span>prop?key="*">PROPAGATION_REQUIRED,readOnly</</span>prop>??
  56. ????????????</</span>props>??
  57. ????????</</span>property>??
  58. ????</</span>bean>??

?2-4:把spring和hibernate集成,定義事務管理特性的時候,為何要將除了添加、刪除、更新操作之外的方法,即主要執行 查詢任務的方法定義為read-only??
應用這項屬性時,底層的數據庫可以對讀取進行最優化,但要配合PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW或PROPAGATION_NESTED使用,即只能在事物中使用。簡單的說就是增快查詢速度。

Hibernate

3-1:請你談談你對OR映射的理解??
對象關系映射,把關系數據庫的數據結構與你的對象關聯起來,以操作對象操縱關系數據庫。
3-2:很多人說Hibernate不適合大項目,性能有問題,你是如何理解的??
好不好是看你怎么用,不一定用了hibernate就不使用sql了,一些復雜的 比如說統計需要的數據一般都是直接用sql去執行的。使用hibernate最重要的一點是
看你如何去使用懶加載,在適當的時候使用懶加載會提高你的性能。
3-3:Hibernate為什么一定要定義一個數據庫標識???
因為要對應數據庫表的主鍵,唯一性原則。
3-4:為什么Hibernate建議你的實體類實現hashCode和equals方法??
多對多雙向關系,如果hashCode和equals正常寫之,將出現load不上的問題。
經常使用set集合來保存相關對象,而set集合是不允許重復的。而hibernate正是去"=="比較兩個對象是否是同一個,所以它會去比較hashCode和用equals來比較。
3-5:談談你對Hibernate實體類中的數據庫標識與數據庫主鍵之間關系的認識??
是對象與關系數據庫中的表識別的唯一標識。
3-6:談談你對Hibernate關聯映射與數據庫外鍵之間關系的認識??
關系映射中一個外鍵就相當于一個對象的實例,這樣就形成了1-1 ,1-N,N-1,N-N這種關系。
3-7:調用session.save()方法,hibernate一定會發出insert語句嗎?談談你的理解?
save, 把一個瞬態的實例持久化標識符,及時的產生,它要返回標識符,在save之前hibernate會去根據主鍵查一次,看能否保存。
3-8:調用session.update()方法,hibernate一定會發出update語句嗎?談談你的理解?
update是把一個脫管狀態的對象或自由態對象(一定要和一個記錄對應)更新到數據庫。在update之前hibernate會去根據主鍵查一次,看能否可以更新。
3-9:請你聊一下以下名詞、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size?
lazy概念:只有真正使用該對象內普通屬性時,才會創建,對于hibernate而言,正真使用的時候才會發出sql,load支持lazy(懶加載),get不支持懶加載。
extra:一種比較聰明的懶加載策略,即調用集合的size/contains等方法的時候,hibernate
lazy=”extra”時并不會去加載整個集合的數據,而是發出一條聰明的SQL語句,以便獲得需要的值,只有在真正需要用到這些集合元素對象數據的時候,才去發出查詢語句加載所有對象的數據。
inverse – 標記由哪一方來維護關聯關系(雙向關聯中會用到,inverse默認值為false。如果inverse設置為true,表示將由對方維護兩者之間的關聯關系。
fetch是抓取策略:
fetch = "select"是在查詢的時候先查詢出一端的實體,然后在根據一端的查詢出多端的實體,會產生1+n條sql語句;
fetch = "join"是在查詢的時候使用外連接進行查詢,不會差生1+n的現象
fetch=”subselect”發送一條select語句抓取在前面查詢到的所有實體對象的關聯集合

batch-size?

是來設置批量更新的HQL/SQL數量 如果達到此數量會提交給數據庫 但是生成的HQL/SQL語句一個也不會少
3-10:配置了lazy=”true”一定會實現懶加載嗎??
get()是不能實現懶加載的。必須使用load()。fetch要使用select?
3-11:請你談談Hibernate中的“N+1”問題?
一對多是查詢一次會帶出N次查詢。就是一些主外鍵關系的對象。當進行一個表的查詢時,當這個表與另外的表是多對一,或者是一對多關聯時,就會出現N+1問題,當查詢一條語句時,比如主鍵name=1,而與這個 name相關聯的另一張表對應name的有N個記錄,這時就出另外發出N條語句去查詢,而我又不要那些記錄,這時就是N+1問題。

轉載于:https://www.cnblogs.com/zch-lxh1314/p/7055239.html

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

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

相關文章

為什么計算機連接不上打印機,為什么電腦連接打印機后卻沒反應

2013-12-12我的筆記本怎么連接不了打印機 顯示是這樣的好&#xff1a;以下方法供您參考&#xff1a;看一下您的系統服務中這兩個(最上面 和最下面的是不是沒啟用)總之是您的局域網連接沒有連接上&#xff0c;要不在網上鄰居里您會看到其他的機器的&#xff0c;這是搜到的解決的…

JavaFX 2.0布局窗格– BorderPane

BorderPane非常適合開發更復雜的布局。 通常&#xff0c; BorderPane提供五個不同的區域&#xff1a;頂部&#xff0c;右側&#xff0c;底部&#xff0c;左側和中央。 您可以通過調用setTop/setBottom/set…方法將Node設置到每個區域。 這種方法使開發“類似于網站”的應用程序…

頁面排版簡單樣式

頁面排版簡單樣式demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" xml:lang"zh-cn"> &l…

JavaWeb基礎(jsp初識)

jsp, java server page jsp頁面是在服務器上運行的一個頁面 動態網頁 與后臺有數據交互的頁面 與其他語言的區別: jsp 使用java語言進行開發, 安全性高, 適合大型項目, 企業級的文本應用分布式項目, 服務器集群, hadoop asp.net 使用c#, .Net平臺, 簡單易用, 因為不開源, 所以安…

nao機器人拆解_一些機器人硬件網站

以前收集過一些網站&#xff0c;偏機器人機械結構、硬件、參數(也有模擬或算法)。在 https://www.zhihu.com/question/19826366 也夾雜著一些網址&#xff0c;但是有些網址沒有深入的內容&#xff0c;排版也不好&#xff0c;所以 在這里編輯成一個列表&#xff0c;方便歸檔。歡…

心電圖是模擬計算機嗎,心電圖儀

心電圖儀是由威廉愛因托芬(W. Einthoven,1860-1927)發明的。 什么是心電圖儀(機)M311986 心電圖儀能將心臟活動時心肌激動產生的生物電信號(心電信號)自動記錄下來&#xff0c;為臨床診斷和科研常用的醫療電子儀器。國內一般按照記錄器輸出道數劃分為&#xff1a;單道、三道、六…

從Java 8啟動項目拼圖?

在馬克雷因霍爾德 &#xff08; Mark Reinhold &#xff09;在他的《 項目拼圖&#xff1a;火車晚點 》一文中提出“將項目拼圖推遲到Java 9的下一個發行版中”。 他解釋了這樣做的原因&#xff1a;“仍然存在一些重大的技術挑戰”&#xff0c;并且“沒有足夠的時間來進行廣泛的…

ChannelOption用到的socket的標準參數

ChannelOption.SO_BACKLOG, 1024 BACKLOG用于構造服務端套接字ServerSocket對象&#xff0c;標識當服務器請求處理線程全滿時&#xff0c;用于臨時存放已完成三次握手的請求的隊列的最大長度。如果未設置或所設置的值小于1&#xff0c;Java將使用默認值50。 ChannelOption.SO_K…

cbrt c語音_isgraph - [ C語言中文開發手冊 ] - 在線原生手冊 - php中文網

在頭文件中定義int isgraph(int ch);檢查給定字符是否具有圖形表示形式&#xff0c;即它是數字(0123456789)&#xff0c;大寫字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)&#xff0c;小寫字母(abcdefghijklmnopqrstuvwxyz)或標點符號(!"#$%&()*,-./:;<>?[\]^_{|}~)或特定…

計算機的內存和cpu,內存與CPU二者之間的關系_Intel服務器CPU_服務器產業-中關村在線...

“在一起&#xff0c;在一起”&#xff0c;相信這也是很多人希望的結果&#xff0c;無論是從技術角度&#xff0c;還是從空間角度&#xff0c;似乎二者都有著很多理由被放在一起完成任務。但是&#xff0c;二者為何一直沒有“在一起”呢&#xff1f;也許這句歌詞可以回答原因&a…

JUnit,Logback,帶有Maven 3的Maven

在本系列中&#xff0c;我們已經學習了建立基本的Spring MVC應用程序并學習了如何在Spring MVC中處理表單 。 現在該討論更多涉及的主題了。 但是&#xff0c;在我們涉足更深的領域之前&#xff0c;讓我們先進行一些基礎設置。 單元測試 我不是TDD傳播者。 我在那里說了。 我從…

Gradle中的buildScript,gradle wrapper,dependencies等一些基礎知識

就想收藏一篇好文&#xff0c;哈哈&#xff0c;無他 Gradle中的buildScript代碼塊 - 黃博文 然后記錄一些gradle的基礎知識&#xff1a; 1.gradle wrapper就是對gradle的封裝&#xff0c;可以理解為項目內部內置了gradle 2.dependencies的參數 上官方參數表https://docs.gradle…

phonegap工程中修改app的名字

針對phonegap比較高的版本&#xff0c;我的是6.4.0。 在phonegap工程中&#xff0c;當添加了iOS和android平臺或多個平臺后&#xff0c;工程進行了開發&#xff0c;然后覺得app的名字想修改一下&#xff08;比如在手機上顯示的app名字&#xff0c;或者通過ipa導入安裝或者apk包…

ac ap方案 華為_華為無線_AC+AP小型無線網絡配置實驗_v1

【如果在實驗中有什么疑問&#xff0c;歡迎關注微信公眾號“IT后院”給我留言&#xff0c;我會抽空回答你的問題】華為無線-ACAP小型無線網絡配置實驗_v1網絡結構圖&#xff1a;步驟一&#xff1a;配置網絡連通性SW:interface Vlanif100ip address 192.168.0.1 255.255.255.0in…

css類選擇器或邏輯,深入理解CSS中選擇器的邏輯處理

在過去的很長一段時間中&#xff0c;我們都說 CSS 是不帶有任何邏輯的&#xff0c;意思是在 CSS 中沒有控制流&#xff0c;也沒有某種類似于其他編程語言的方式來組織 CSS。CSS 天生缺乏邏輯性的問題導致了預處理器的出現。然而業界卻對 CSS 預處理器褒貶不一&#xff0c;支持預…

JSF基于事件的交流:新派方法

在上一篇文章中 &#xff0c;我們學習了基于Observer / Event Listener和Mediator模式的基于事件的通信。 由于它們的缺點&#xff0c;我想展示基于事件的通信的更有效方法。 我們將從Google Guava EventBus開始&#xff0c;以CDI &#xff08;Java EE平臺的上下文和依賴注入&a…

菜鳥之路-淺談設計模式之單例設計模式

單例設計模式 定義&#xff1a;確保一個類僅僅有一個實例&#xff0c;并且自行實例化并向整個系統提供這個實例。單例模式是一種經常使用的軟件設計模式。在它的核心結構中僅僅包括一個被稱為單例的特殊類。通過單例模式能夠保證系統中一個類僅僅有一個實例并且該實例易于外界訪…

python 32bit數據結構_python實現bitmap數據結構詳解

bitmap是很常見的算法設計&#xff0c;例如用以Bloom Filter中&#xff1b;用以無反復整數金額的排列這些。bitmap一般根據數組來完成&#xff0c;數組中每一個原素能夠當做是一系列二進制數&#xff0c;全部元素組成更高的二進制結合。針對Python而言&#xff0c;整數金額種類…

MVC如何使用開源分頁插件shenniu.pager.js

最近比較忙&#xff0c;前期忙公司手機端接口項目&#xff0c;各種開發調試發布現在幾乎上線無問題了&#xff1b;雖然公司項目忙不過在期間抽空做了兩件個人覺得有意義的事情&#xff0c;一者使用aspnetcore開發了個人線上項目&#xff08;要說線上其實只能ip訪問&#xff0c;…

四. 基于環視Camera的BEV感知算法-PETR

目錄 前言0. 簡述1. 算法動機&開創性思路2. 主體結構3. 損失函數4. 性能對比5. PETRv2總結下載鏈接參考 前言 自動駕駛之心推出的《國內首個BVE感知全棧系列學習教程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們來學習下課程第四章——基…