Java基础相关
https://blog.csdn.net/a724888/article/details/70038420
程序員江湖陸小鳳的博客,作為學習Java的順序目錄還可以,內容結合其它博客看比較容易理解,以下未加外鏈的在此人博客Java分類下基本能找到。
?
面向對象三大特性:繼承、封裝和多態
?
java基本數據類型:byte(8位),short(16),int,long,float,double,boolean(8),char(16)
對應包裝類:Byte,Short,Integer,Long,Float,Double,Boolean,Character
自動拆箱裝箱:https://www.cnblogs.com/wang-yaz/p/8516151.html,基本數據類型的包裝類只在數字范圍-128到127中用到常量池,會自動拆箱裝箱,其余數字范圍的包裝類則會新建實例
?
final關鍵字:
final修飾基本數據類型保證不可變
修飾引用類型保證引用不能指向別的對象,否則報錯
修飾類,不能被繼承,類的實例分配空間后地址不可變,子類不能重寫所有父類方法
修飾方法,子類不能重寫該方法
?
抽象類和接口
可以有方法實現,有非final成員變量,用abstract修飾,可以有構造方法,但只能由子類實例化
接口可用extends加多個接口實現多繼承,接口只能有public final類型的成員變量,接口只能有抽象方法、不能有方法體,接口不能實例化,但是可以作為引用類型
?
代碼塊和加載順序
假設該類是第一次進行實例化,加載順序如下:
靜態代碼塊比非靜態優先,從早到晚包括:靜態代碼塊和靜態成員變量順序根據代碼位置前后來決定,代碼塊和成員變量順序也根據代碼位置來決定,最后才調用構造方法
1、父類靜態變量
2、父類靜態代碼塊(若有多個按代碼先后順序執行)
3、子類靜態變量
4、子類靜態代碼塊(若有多個按代碼先后順序執行)
5、父類非靜態變量
6、父類非靜態代碼塊(若有多個按代碼先后順序執行)
7、父類構造函數
8、子類非靜態變量
9、子類非靜態代碼塊(若有多個按代碼先后順序執行)
10、子類構造函數
?
外部類、內部類
外部類只有public和default兩種修飾,全局訪問和包內訪問
內部類可以有全部訪問權限,概念為一個成員變量,故訪問權限設置與一般成員變量相同,非靜態內部類是外部類一個成員變量,只和外部類的實例有關,靜態內部類是獨立于外部類存在的一個類,與外部類實例無關,可以通過外部類.內部類直接獲取Class類型
?
異常
Throwable
Error(jvm完全無法處理的系統錯誤,只能終止運行) 和Exception,日志框架,log4j,slf4j
?
泛型 https://blog.csdn.net/s10461/article/details/53941091
java中是偽泛型,運行期自動進行泛型擦除,將泛型替換為實際上傳入的類型
泛型通配符1、泛化 2、<? extends Number> 上邊界 3、<? super Integer>下邊界 此種方式限制上下邊界
泛型的使用:泛型類,泛型接口,泛型方法
數組的類型不可以是類型變量,除非是采用通配符的方式
?
Class類和Object類
class.forName
對象.getClass
類名.class
clone()調用需要實現Cloneable接口
?
反射機制
https://www.jianshu.com/p/5b3acad0f025
注解
https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html
https://www.cnblogs.com/liangweiping/p/3837332.html
?
枚舉類
https://blog.csdn.net/javazejian/article/details/71333103
?
集合框架
Collection
List:ArrayList、LinkedList、Vector、Stack
Set:EnumSet、HashSet、HashSet
Map:HashMap,TreeMap,HashTable
Queue:ArrayBlockQueue,PriorityBlockingQueue,LinkedBlockingQueue,ArrayDeque,LinkedBlockingDeque,LinkedList
https://blog.csdn.net/a724888/article/details/80215706
http://calvin1978.blogcn.com/articles/collection.html
?
序列化:實現serializable接口,transient修飾符保證某個成員變量不被序列化
原文:https://blog.csdn.net/a724888/article/details/80210095
在序列化過程中,如果被序列化的類中定義了writeObject 和 readObject 方法,虛擬機會試圖調用對象類里的 writeObject 和 readObject 方法,進行用戶自定義的序列化和反序列化。
如果沒有這樣的方法,則默認調用是 ObjectOutputStream 的 defaultWriteObject 方法以及 ObjectInputStream 的 defaultReadObject 方法。
why transient
ArrayList實際上是動態數組,每次在放滿以后自動增長設定的長度值,如果數組自動增長長度設為100,而實際只放了一個元素,那就會序列化99個null元素。為了保證在序列化的時候不會將這么多null同時進行序列化,ArrayList把元素數組設置為transient。
why writeObject and readObject
前面說過,為了防止一個包含大量空對象的數組被序列化,為了優化存儲,所以,ArrayList使用transient來聲明elementData。 但是,作為一個集合,在序列化過程中還必須保證其中的元素可以被持久化下來,所以,通過重寫writeObject 和 readObject方法的方式把其中的元素保留下來。
writeObject方法把elementData數組中的元素遍歷的保存到輸出流(ObjectOutputStream)中。
readObject方法從輸入流(ObjectInputStream)中讀出對象并保存賦值到elementData數組中。
?
多線程:
線程7種狀態:new runable running blocked waiting time_waiting terminate
https://www.cnblogs.com/wxd0108/p/5479442.html
Lock類:
java.util.concurrent包內,三個實現,ReentrantLock,ReentrantReadWriteLock.ReadLock,ReentrantReadWriteLock.WriteLock
BlockingQueue:ArrayListBlockingQueue,LinkedListBlockingQueue,DelayQueue,SynchronousQueue
ConcurrentHashMap
CachedThreadPool,SingleThreadPool,FixedThreadPool,ScheduledExecutorService
ThreadPoolExecutor:https://www.cnblogs.com/dolphin0520/p/3932921.html,https://www.cnblogs.com/cjsblog/p/8214921.html(1.8)
public?ThreadPoolExecutor(int?corePoolSize,int?maximumPoolSize,long?keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);
1、如果正在運行的線程數少于核心線程數,則新建一個線程去運行這個任務
2、如果工作隊列沒有滿,則放到工作隊列中
3、如果工作隊列已滿(PS:workQueue.offer(command)返回false),則再新建線程
4、若線程數已經達到最大線程數則reject(command)
?
IO流與網絡編程
字節流、字符流。
?
代理
https://www.cnblogs.com/cenyu/p/6289209.html
https://www.jianshu.com/p/471c80a7e831
https://blog.csdn.net/a724888/article/details/77194098
靜態代理:使用時定義接口或父類,被代理對象與代理對象一起實現相同的接口或是繼承相同父類
動態代理(JDK代理,接口代理):代理對象,不需要實現接口;代理對象的生成,是利用JDK的API,動態的在內存中構建代理對象
Cglib代理(子類代理):目標對象只是一個單獨的對象,并沒有實現任何的接口,這個時候就可以使用以目標對象子類的方式類實現代理,這種方法就叫做:Cglib代理
?
轉載于:https://www.cnblogs.com/lun14061076/p/10545002.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結

- 上一篇: Python接口自动化实战 ( 第一阶段
- 下一篇: 《移动平台开发》第3周学习总结