1.當我們向Set集合中添加一個已經存在的元素時
當我們向Set集合中添加一個已經存在的元素時,Set集合會如何處理呢?實際上,Set集合不會將重復的元素添加到集合中。當我們向Set集合中添加一個元素時,Set集合會首先判斷該元素是否已經存在于集合中。如果該元素已經存在于集合中,Set集合就不會將其添加到集合中。如果該元素不存在于集合中,Set集合就會將其添加到集合中。
返回false
所以可以通過返回的boolean值去判斷,set集合中是否已經存在該元素
2.csrf?
2.1.csrf是啥?
跨站請求偽造(英語:Cross-site request forgery)
攻擊者并不能通過CSRF攻擊來直接獲取用戶的賬戶控制權,也不能直接竊取用戶的任何信息。他們能做到的,是欺騙用戶瀏覽器,讓其以用戶的名義運行操作。
2.2.如何防范
?在 HTTP 頭中有一個字段叫 Referer,它記錄了該 HTTP 請求的來源地址。
只需要在最后給所有安全敏感的請求統一增加一個攔截器來檢查 Referer 的值就可以
而如果黑客要對銀行網站實施 CSRF 攻擊,他只能在他自己的網站構造請求,當用戶通過黑客的網站發送請求到銀行時,該請求的 Referer 是指向黑客自己的網站
?3.索引相關
3.1 回表
主鍵索引存所有字段數據
非主鍵索引只會存自己這個字段的數據以及主鍵數據
如果sql的where條件是通過非主鍵索引查詢的,并且select的結果集中需要獲得除了非主鍵索引和主鍵之外的數據,那這個時候搜索引擎內部就會拿著當前查詢得到的主鍵,再去主鍵索引查一遍。這就叫回表。
結果集中有多少條數據,就會發生多少次回表
普通索引和聯合索引,可太簡單了!_嗶哩嗶哩_bilibili
3.2 聯合索引?
聯合索引a,b,c是先按照a排序,a一致時在按照b排序,最后按照c排序
所以這就是為什么直接查找b或者直接查找c,聯合索引不生效,因為他們是亂序的
?4.程序計數器
程序計數器:多線程時使用,記錄當前線程執行到哪里了
5. 虛擬機棧
虛擬機棧 存儲當前線程的數據
本地方法棧:native方法
?
方法以棧幀的形式存放到虛擬機棧:A方法調用B方法,B方法調用C方法。那順序是A先入棧,然后B入棧,C入棧
C方法最后被調用,肯定最先執行完,所以C先出棧。然后B方法繼續執行,執行完出棧,最后C方法繼續執行,執行完出棧?
?
?6.內存空間分配
?
?
?
?
?
?
?大對象直接進入老年代
7.泛型
7.1兼容類型
?
?7.2?泛型擦除 ?編譯時 ?T變為Object
所以下邊這兩個方法會有一個報紅
重載:允許在同一個類中定義多個同名方法,但這些方法的參數列表必須不同。
?在idea眼里它長這樣,方法名相同,參數列表也相同,不滿足重載的規則
?8.句柄池
引用中保存的對象句柄地址相對穩定(不變),當GC操作移動對象時只用維護句柄池中存儲的信息即可,特別是多個變量都引用同一個句柄池中的句柄時,可以減少更新變量存儲的引用,同時確保變量的地址不變
?句柄訪問的形式是堆空間維護一個句柄池,對象引用中保存的是對象的句柄位置。在堆中的句柄包含對象的實例數據和類型數據的真實地址。
9.垃圾回收
GC
Garbage Collectiongc時要stop the world
?
?9.1 復制算法
復制算法是操控新生區中的Survivor區( from 區 和 to區),
每次只使用其中一塊,
在垃圾回收時,將正在使用的內存(from 區)中的存活對象復制到未使用的內存(to區)塊中,
之后,清除正在使用的內存(from 區)塊中的所有對象,
交換兩個內存的角色(from 區變為to區,to區變為程序正在使用的from區),
完成垃圾回收
所以from和to是1:1
?
?9.2 標記清除
?9.3 標記整理
?10.git拉取或者提交報Access denied
remote: HTTP Basic: Access denied的解決方法
如果出現每次提交/拉取都要再次輸入密碼解決方案
請執行:?
git config --global credential.helper store
再次輸入密碼之后 就不會每次都要輸入賬號/密碼
11. 一種思想:用boolean做標志位
?12.策略模式
先了解下什么是鉤子方法
父類方法有一個接收入參的boolean型方法,還有一個鉤子方法
boolean型方法用于判定在執行時具體執行哪個實現類
鉤子方法是每個實現類都要實現,最后真正執行的
好處是,在刪除或者增加子類時,不用修改核心代碼,不用在核心代碼中再去添加if else
13.責任鏈模式
跟策略模式類似,也是有一個公共的父類,父類中有一個鉤子方法
子類實現中,自己的類中注入別人的類,當自己處理不了的時候,讓指定的別人去處理
getBeansOfType這個方法能返回一個接口的全部實現類?
?14.單例模式
之前只知道懶漢餓漢還有加鎖
現在知道還可以用靜態內部類
并且,靜態內部類是最安全的單例模式,因為類加載加載靜態內部類的時候是線程互斥
內部靜態類只會被加載一次,類加載的初始化階段是單線程的
public class Singleton {//不對外開放的方法,一律private//但是最終提供給外部的方法是static,所以private方法也要staticprivate static class SingletonHolder {private static final Singleton INSTANCE = new Singleton();}private Singleton() {// 私有構造方法,以防止外部實例化}//只有這個方法是對外的 所以public 并且staticpublic static Singleton getInstance() {return SingletonHolder.INSTANCE;}
}
15.idea本地deploy沒有upload到遠程
重點是<skip>false</skip>
<build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.7</version><configuration><skip>false</skip></configuration></plugin></plugins></pluginManagement>
</build>