1. 程式人生 > >Java習題練習

Java習題練習

left .cn image 哈希 更改 是個 根據 修飾 輕量

Java習題練習

1、

技術分享

依賴註入和控制反轉是同一概念:

依賴註入和控制反轉是對同一件事情的不同描述,從某個方面講,就是它們描述的角度不同。依賴註入是從應用程序的角度在描述,可以把依賴註入描述完整點:應用程序依賴容器創建並註入它所需要的外部資源;而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的向應用程序註入應用程序所需要的外部資源。

2、

技術分享

C
load方法來得到一個對象時,此時hibernate會使用延遲加載的機制來加載這個對象,即:當 我們使用session.load()方法來加載一個對象時,此時並不會發出sql語句,當前得到的這個對象其實是一個代理對象,這個代理對象只保存了實 體對象的id值,只有當我們要使用這個對象,得到其它屬性時,這個時候才會發出sql語句,從數據庫中去查詢我們的對象。
相對於load的延遲加載方式,get就直接的多,當我們使用session.get()方法來得到一個對象時,不管我們使不使用這個對象,此時都會發出sql語句去從數據庫中查詢出來。

1. Hibernate2延遲加載實現:a)實體對象 b)集合(Collection)
2. Hibernate3 提供了屬性的延遲加載功能
當Hibernate在查詢數據的時候,數據並沒有存在與內存中,當程序真正對數據的操作時,對象才存在與內存中,就實現了延遲加載,他節省了服務器的內存開銷,從而提高了服務器的性能。

an>是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作
3. hibernate使用Java反射機制,而不是字節碼增強程序來實現透明性。
4. hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系數據庫,從一對一到多對多的各種復雜關系。

3、

技術分享

建議看看這篇博客 入門 通俗易懂 http://blog.csdn.net/sivyer123/article/details/17139443 簡單的來說 java的堆內存分為兩塊:permantspace(持久帶) 和 heap space。 持久帶中主要存放用於存放靜態類型數據,如 Java Class, Method 等, 與垃圾收集器要收集的Java對象關系不大。 而heapspace分為年輕帶和年老帶 年輕代的垃圾回收叫 Young GC, 年老代的垃圾回收叫 Full GC。 在年輕代中經歷了N次(可配置)垃圾回收後仍然存活的對象,就會被復制到年老代中。因此,可以認為年老代中存放的都是一些生命周期較長的對象 年老代溢出原因有 循環上萬次的字符串處理、創建上千萬個對象、在一段代碼內申請上百M甚至上G的內存,既A B D選項 持久代溢出原因 動態加載了大量Java類而導致溢出 4、 技術分享
以上方法都是解決哈希填沖突的策略,但是在java.util.HashMap中,總體來說是使用的鏈地址法來解決沖突的。 當然了,使用鏈地址法會導致get的效率從o(1)降至o(n),所以在Java8中,使用的是平衡樹來解決提高效率的。 參考:http://blog.csdn.net/cpcpcp123/article/details/52744331 解決哈希沖突常用的兩種方法是:開放定址法和鏈地址法
開放定址法:當沖突發生時,使用某種探查(亦稱探測)技術在散列表中形成一個探查(測)序列。沿此序列逐個單元地查找,直到找到給定 的關鍵字,或者碰到一個開放的地址(即該地址單元為空)為止(若要插入,在探查到開放的地址,則可將待插入的新結點存人該地址單元)。查找時探查到開放的 地址則表明表中無待查的關鍵字,即查找失敗。 鏈地址法:將所有關鍵字為同義詞的結點鏈接在同一個單鏈表中。若選定的散列表長度為m,則可將散列表定義為一個由m個頭指針組成的指針數 組T[0..m-1]。凡是散列地址為i的結點,均插入到以T[i]為頭指針的單鏈表中。T中各分量的初值均應為空指針。 5、 技術分享 答案:B 聲明為public類型的類名必須與文件名相同,默認權限的可以不同 並且內部類的類名一般與文件名不同 正解:一個文件中可以有多個類,如果沒有public類,則可以與任意類名相同,如果有public類則文件名必須與此類名相同,因為一個文件中只能有一個public類。如果文件中只有一個類,則文件名必須與類名相同 6、 技術分享

ceil:大於等於 x,並且與它最接近的整數。 floor:小於等於 x,且與 x 最接近的整數。 技術分享

技術分享

7、

技術分享

對象賦值時,比如A=B,只是把A對象的地址指向了B對象的地址,所以其實對象只有一個 8、 技術分享 答案A: A:形式參數可被視為local variable。形參和局部變量一樣都不能離開方法。都只有在方法內才會發生作用,也只有在方法中使用,不會在方法外可見。 B: 對於形式參數只能用final修飾符,其它任何修飾符都會引起編譯器錯誤。但是用這個修飾符也有一定的限制,就是在方法中不能對參數做任何修改。 不過一般情況下,一個方法的形參不用final修飾。只有在特殊情況下,那就是:方法內部類。 一個方法內的內部類如果使用了這個方法的參數或者局部變量的話,這個參數或局部變量應該是final。 C:形參的值在調用時根據調用者更改,實參則用自身的值更改形參的值(指針、引用皆在此列),也就是說真正被傳遞的是實參。 D:方法的參數列表指定要傳遞給方法什麽樣的信息,采用的都是對象的形式。因此,在參數列表中必須指定每個所傳遞對象的類型及名字。想JAVA中任何傳遞對象的場合一樣,這裏傳遞的實際上也是引用,並且引用的類型必須正確。--《Thinking in JAVA》
A
形式參數就是函數定義時設定的參數。例如函數頭 int min(int x,int y,int z) 中 x,y,z 就是形參。實際參數是調用函數時所使用的實際的參數。
C:真正被傳遞的是實參 D:形參可以是對象,是對象的時候傳遞引用. B:對於形式參數只能用final修飾符,其它任何修飾符都會引起編譯器錯誤 。但是用這個修飾符也有一定的限制,就是在方法中不能對參數做任何修改。 不過一般情況下,一個方法的形參不用final修飾。只有在特殊情況下,那就是:方法內部類。

一個方法內的內部類如果使用了這個方法的參數或者局部變量的話,這個參數或局部變量應該是final。

9、

技術分享

答案:B A,CopyOnWriteArrayList適用於寫少讀多的並發場景 B,ReadWriteLock即為讀寫鎖,他要求寫與寫之間互斥,讀與寫之間互斥, 讀與讀之間可以並發執行。在讀多寫少的情況下可以提高效率 C,ConcurrentHashMap是同步的HashMap,讀寫都加鎖 D,volatile只保證多線程操作的可見性,不保證原子性

技術分享

10、

技術分享

技術分享

這裏已經註入了工廠

技術分享

<!-- 配置事務管理器 --> <property name="transactionManager"> <!-- 配置事務屬性 --> <property name="transactionAttributes"> <props> 聲明式事務 管理建立在AOP之上的。其本質是對方法前後進行攔截,然後在目標方法開始之前創建或者加入一個事務,在執行完目標方法之後根據執行情況提交或者回滾事務。聲明式事務最大的優點就是不需要通過編程的方式管理事務,這樣就不需要在業務邏輯代碼中摻雜事務管理的代碼,只需在配置文件中做相關的事務規則聲明(或通過基於@Transactional註解的方式),便可以將事務規則應用到業務邏輯中。

11、

技術分享

D switch語句後的控制表達式只能是short、char、int、long整數類型和枚舉類型,不能是float,double和boolean類型。String類型是java7開始支持

Java習題練習