前言
面試
因爲細節內容實在太多啦,因此只把部分知識點截圖出來粗略的介紹,每一個小節點裏面都有更細化的內容!算法
整理了一份Java核心知識點。覆蓋了JVM、鎖、併發、Java反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等大量知識點。數據庫
若是須要獲取到這個【資料】文檔的話 掃一掃下面數組
if (isPrototypeCurrentlyInCreation(beanName)) { throw new BeanCurrentlyInCreationException(beanName);}複製代碼
public class A { private B b;}// 類B:public class B { private A a;}複製代碼
/** * 放置建立好的bean Map */ private static Map<String, Object> cacheMap = new HashMap<>(2); public static void main(String[] args) { // 僞裝掃描出來的對象 Class[] classes = {A.class, B.class}; // 僞裝項目初始化實例化全部bean for (Class aClass : classes) { getBean(aClass); } // check System.out.println(getBean(B.class).getA() == getBean(A.class)); System.out.println(getBean(A.class).getB() == getBean(B.class)); } @SneakyThrows private static <T> T getBean(Class<T> beanClass) { // 本文用類名小寫 簡單代替bean的命名規則 String beanName = beanClass.getSimpleName().toLowerCase(); // 若是已是一個bean,則直接返回 if (cacheMap.containsKey(beanName)) { return (T) cacheMap.get(beanName); } // 將對象自己實例化 Object object = beanClass.getDeclaredConstructor().newInstance(); // 放入緩存 cacheMap.put(beanName, object); // 把全部字段當成須要注入的bean,建立並注入到當前bean中 Field[] fields = object.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); // 獲取須要注入字段的class Class<?> fieldClass = field.getType(); String fieldBeanName = fieldClass.getSimpleName().toLowerCase(); // 若是須要注入的bean,已經在緩存Map中,那麼把緩存Map中的值注入到該field便可 // 若是緩存沒有 繼續建立 field.set(object, cacheMap.containsKey(fieldBeanName) ? cacheMap.get(fieldBeanName) : getBean(fieldClass)); } // 屬性填充完成,返回 return (T) object; }複製代碼
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsKey(complement)) { return new int[] { map.get(complement), i }; } map.put(nums[i], i); } throw new IllegalArgumentException("No two sum solution"); }}複製代碼
因爲細節內容實在太多啦,因此只把部分知識點截圖出來粗略的介紹,每一個小節點裏面都有更細化的內容!緩存
整理了一份Java核心知識點。覆蓋了JVM、鎖、併發、Java反射、Spring原理、微服務、Zookeeper、數據庫、數據結構等大量知識點。bash
若是須要獲取到這個【資料】文檔的話 掃一掃下面數據結構