2018/2/26
- git 的rebase 操作是什么意思, git 的checkout 和reset 操作的區(qū)別, 復(fù)習(xí)了 git workflow
參考資料 - 對 alibaba/jvm-sandbox 工具進(jìn)行了進(jìn)一步調(diào)研,了解了 jvm 的類加載機(jī)制、雙親委派機(jī)制,通過實際查看java.lang.ClassLoader 文件了解了類加載器之間的父子關(guān)系是通過組合而非繼承來實現(xiàn)的,jvm 將類加載的過程放在了 jvm 之外。
了解了 jvm-sandbox 的大致工作原理灼捂、框架以及如何使用。
相關(guān)筆記
參考資料:《深入理解Java虛擬機(jī) 第2版本》 周志明 著 機(jī)械工業(yè)出版社 - 對 java 字節(jié)碼的內(nèi)容組織規(guī)則進(jìn)行了大概了解换团。字節(jié)碼可以被 jvm 執(zhí)行悉稠,可以根據(jù)字節(jié)碼規(guī)范逆向生成 java文件。magic number啥寇, 常量池偎球,常量索引
參考資料
挖坑:什么是依賴注入和控制反轉(zhuǎn),設(shè)計模式的幾個基本原則是什么辑甜?
2018/2/27
- git 的chekout 和 reset
checkout 會取消工作區(qū)的修改衰絮,而不會取消暫存區(qū)的修改
reset 分為 soft 和 hard 兩個選項,默認(rèn)為 soft磷醋,對具體的文件而非版本不能應(yīng)用 hard猫牡,hard 會沖掉工作區(qū)和暫存區(qū)的所有內(nèi)容。
參考資料
2018/3/1
- maven 中的 snapshot 版本和正式版本區(qū)別
maven 處理正式版本的時候邓线,一般會先看本地是否已經(jīng)下載過了該版本的依賴淌友,如果有煌恢,則不會從遠(yuǎn)程倉庫中獲取。在頻繁開發(fā)的過程中震庭,這種處理方式很蛋疼瑰抵。因為我們依賴的其他項目如果有改動,除非每次提交的時候升級版本器联,否則都無法獲取到該項目最新的改動二汛。
而在處理 snapshot 版本的時候,不管本地是否已經(jīng)存儲了該版本的依賴拨拓。會優(yōu)先查看遠(yuǎn)程倉庫中是否有最新的發(fā)布肴颊,如果有的話,就會優(yōu)先從遠(yuǎn)倉庫中獲取該發(fā)布渣磷。
snapshot 版本一般用于內(nèi)部開發(fā)的時候使用婿着,當(dāng)該版本穩(wěn)定之后,才會出一個不帶 snapshot 的正式版本醋界。當(dāng)然竟宋,對于 snapshot 從遠(yuǎn)端的倉庫中獲取依賴的頻率也可以在 maven 中配置。
參考資料
2018/3/9
java 中的注解
java 注解和 interface, class 一樣物独,屬于一種類型袜硫,一般用 @interface 來表示,定義的時候和 class 一樣挡篓。
java 的注解就相當(dāng)于一種標(biāo)簽,我們可以給一個類或者接口做注解帚称,也可以對類的屬性官研、方法做注解,可以對方法的參數(shù)進(jìn)行注解等等闯睹,甚至可以對 package 進(jìn)行注解戏羽。java 內(nèi)置了 5 種元注解,可以理解為注解的注解楼吃,包括 @Retention始花、@Documented、@Target孩锡、@Inherited酷宵、@Repeatable。
定義注解:注解只有屬性沒有方法躬窜,其屬性在定義的時候用無參成員函數(shù)來表示浇垦。
使用注解:注解的使用很簡單,只要在定義相應(yīng)的類荣挨、屬性男韧、方法朴摊、變量等地方添加注解即可
解析注解:注解的解析則使用到了 java 的反射機(jī)制,我們需要自己根據(jù)自己的設(shè)計來解析注解此虑,有很多框架提供了很便利的方式來解析注解
參考資料java 的 @resource 注解
同樣是用來注入的甚纲,加了 @resource注解的 字段可以不用我們在代碼里面手動初始化,類似于 spring 里面的 @autowire
2018/4/12
- java 的 interface 和 abstract class
interface 奇奇怪怪的繼承:
interface 被另一個 interface 可以實現(xiàn)繼承朦前,但interface的父類必須是interface
A extends B介杆,A和B中只要有一個是interface,另一個也必須是 interface
abstract class 可以被繼承况既,不可以被實現(xiàn)
繼承的類除非全部實現(xiàn)父類的方法这溅,否則也必須聲明為abstract class
構(gòu)造函數(shù)未解之謎
java中每個類會默認(rèn)帶有一個無參構(gòu)造函數(shù),類實現(xiàn)的時候自行定義了構(gòu)造函數(shù)棒仍,默認(rèn)的構(gòu)造函數(shù)會被覆蓋悲靴。此時如果還要通過無參構(gòu)造函數(shù)來實例化類的對象,需要自行定義無參構(gòu)造函數(shù)莫其。java 類中靜態(tài)代碼塊癞尚,構(gòu)造代碼塊,構(gòu)造函數(shù)的執(zhí)行順序
執(zhí)行順序為:
1.靜態(tài)代碼塊 2.構(gòu)造代碼塊 3.構(gòu)造函數(shù)
其中靜態(tài)代碼塊只執(zhí)行一次乱陡,而構(gòu)造代碼塊和構(gòu)造函數(shù)會在每次實例化類的時候調(diào)用
參考資料java 構(gòu)造函數(shù)調(diào)用鏈
先調(diào)用父類的構(gòu)造函數(shù)浇揩,然后調(diào)用子類的構(gòu)造函數(shù)
在子類的實例方法中,可以通過super成員來調(diào)用父類的實例方法(能夠訪問到的情況下)
子類的構(gòu)造函數(shù)被調(diào)用的時候憨颠,會調(diào)用父類的構(gòu)造函數(shù)胳徽,如果子類構(gòu)造函數(shù)中沒有顯示調(diào)用父類的構(gòu)造函數(shù),則會默認(rèn)調(diào)用父類的無參構(gòu)造函數(shù)爽彤。java多態(tài)實現(xiàn)
靜態(tài)多態(tài)通過重載方式實現(xiàn)养盗,動態(tài)多態(tài)通過覆蓋方式實現(xiàn)java傳參方式
java真正意義上只有一種傳參方式,就是按值傳遞
java中對象都是通過new的方式產(chǎn)生的适篙,存儲在堆中往核,for 循環(huán)中定義變量
for循環(huán)里面是可以定義變量的,內(nèi)部還是外部定義都可以嚷节,效率其實差別不是很大
2018/4/26
SAP Anywhere 產(chǎn)品的總結(jié)
Anywhere 開發(fā)所涉及到的技術(shù)聂儒、框架以及工具。
后端開發(fā)語言為 java硫痰,IDE為eclipse衩婚,版本控制工具為git,持續(xù)集成環(huán)境為jenkins碍论。
git 基本操作
ssh 的基本原理和概念
非對稱加密的原理和基本算法
maven 腳本的編寫