對知識的理解以及實際操作要做到融匯貫通,要能夠獨自解決問題
1,arraylist擴容機制:三個構造方法,新增元素的時候,會直接放到列表末尾。呼叫add方法的時候,會首先呼叫
ensurecapacityinternal方法, 然後在這個方法內部呼叫,直接對舊容量進行擴充一半,是原來的1.5倍,這裡是通過位運算來解決的,然後得到新容量以後,再對新容量和最小容量做比較。如果還是小於最小需要容量,就把最小需要容量當作新容量。如果鑫融聯大於最大陣列容量,就將新容量設定位最大允許容量。然後執行陣列元素的拷貝。
arraycopy() 需要目標陣列,將原陣列拷貝到你自己定義的陣列裡或者原陣列,而且可以選擇拷貝的起點和長度以及放入新陣列中的位置 copyof() 是系統自動在內部新建乙個陣列,並返回該陣列
arraylist 原始碼中有乙個 ensurecapacity 方法,是提供給使用者來呼叫的,可以減少重新分配的次數
2,springboot中註解問題,
xml中註解來配置物件 ,或者直接通過註解,類上直接加註解@configuration,是告訴spring這是乙個配置類,,類中bean註解的方法都可以被spring呼叫,註冊@bean可以給bean指定乙個名字,通常是類名首字母小寫的形式,不指定名字的情況下,spring將用方法名作為bean的名稱。然後當我們使用bean物件的時候,可以通過@autowired來注入,預設按照型別來進行裝配依賴物件,如果物件可能為null的話,可以將required= false,如果我們想使用按照名稱來裝配,可以結合@qualfiler
bean注入的時候也可以用@resource,需要導包,但是spring支援該註解的注入,預設按照byname自動注入,spring會將resource註解的name屬性解析為bean的名字,,當我們在裡面使用name屬性的時候會使用byname的自動注入策略,當我們使用type屬性的時候會使用bytype自動。如果既不制定name也不制定type屬性,這時將通過反射機制使用byname自動注入策略。
@resource裝配順序:
①如果同時指定了name和type,則從spring上下文中找到唯一匹配的bean進行裝配,找不到則丟擲異常。
②如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不到則丟擲異常。
③如果指定了type,則從上下文中找到類似匹配的唯一bean進行裝配,找不到或是找到多個,都會丟擲異常。
④如果既沒有指定name,又沒有指定type,則自動按照byname方式進行裝配;如果沒有匹配,則回退為乙個原始型別進行匹配,如果匹配則自動裝配。
@resource的作用相當於@autowired,只不過@autowired按照bytype自動注入。
@component,@service, @controller,@repository 中@bean,然後使用的時候,直接@autowired,@qualfier, @resource來使用
@value,直接使用配置檔案中的內容,@configuratiuonproperties 這兩個是讀取配置資訊的
@pathvariable是獲取請求連線中的引數,@requestparm是獲取請求物件中的引數,@requestbody是直接獲取請求體
Java新特性(二) 介面定義增強
從jdk1.8開始,支援的新特性非常多,並且打破了很多原有的設計方案,其中具有最大變化的就是介面。介面只是乙個方法的宣告,而沒有具體的方法實現,時間一長,許多的支援就會出現問題 量大的問題 實現類則只能覆寫無數次介面中的抽象方法,那麼該介面就將無法繼續使用。但是此操作不屬於標準設計,屬於挽救設計!p...