摘要:本文首發(fā)于的博客轉(zhuǎn)載請(qǐng)注明出處抽象類與接口的區(qū)別類抽象類只能繼承一個(gè)直接父類,可以實(shí)現(xiàn)多個(gè)接口接口可以繼承多個(gè)接口變量抽象類允許所有作用域或者關(guān)鍵字進(jìn)行變量的修飾,與普通類沒有區(qū)別接口只允許靜態(tài)不可變的變量方法接口中在之前所有方法都是抽象的
????本文首發(fā)于cartoon的博客
????轉(zhuǎn)載請(qǐng)注明出處:https://cartoonyu.github.io/c...
抽象類與接口的區(qū)別
類
抽象類只能繼承一個(gè)直接父類,可以實(shí)現(xiàn)多個(gè)接口
接口可以繼承多個(gè)接口
變量
抽象類允許所有作用域或者關(guān)鍵字進(jìn)行變量的修飾,與普通類沒有區(qū)別
接口只允許靜態(tài)不可變的public變量
方法
接口中在jdk1.8之前所有方法都是抽象的public方法,在1.8得到增強(qiáng),可以有靜態(tài)方法或者默認(rèn)的普通方法
抽象類中可以有抽象方法,普通方法,靜態(tài)方法,可以被多種關(guān)鍵字修飾,普通方法中可以有自身的邏輯
作用
接口主要用于模塊間行為的約束
抽象類主要用于模板類的實(shí)現(xiàn)
線程不同步集合轉(zhuǎn)換成線程同步集合以及區(qū)別
繼承原有集合通過java的線程同步機(jī)制實(shí)現(xiàn)
使用Collections的synchronizedXxx方法進(jìn)行集合的轉(zhuǎn)換
簡(jiǎn)單
鎖的對(duì)象為對(duì)象,粒度過大
使用java.util包中的ConCurrent方法進(jìn)行包裝
簡(jiǎn)單
鎖的粒度為行級(jí),且鎖的種類比較豐富
java常見異常以及發(fā)生場(chǎng)景(最少5個(gè)exception)
OutOfMemoryError
創(chuàng)建大對(duì)象超過java老年代內(nèi)存拋出
循環(huán)調(diào)用過多,甚至出現(xiàn)無(wú)限循環(huán)拋出
ClassCastException
對(duì)象向下轉(zhuǎn)型時(shí)發(fā)生
NullPointerException
對(duì)象引用未指定對(duì)象實(shí)例直接使用
SQLException
sql語(yǔ)句執(zhí)行錯(cuò)誤
InterruptedException
線程意外終止
IndexOutOfBoundException
數(shù)組越界
為什么要用線程池,線程池有什么參數(shù)可以對(duì)線程池進(jìn)行配置
使用線程池原因
異步操作頻繁造成的線程切換
線程頻繁創(chuàng)建銷毀造成的資源的消耗
參數(shù)
ThreadFactory
corePoolSize
CPU密集,n+1
IO密集,多線程
keepAliveTime
maximumPoolSize
BlockingQueue
6種實(shí)現(xiàn)隊(duì)列
TimeUnit
List,Set,Map的區(qū)別
存儲(chǔ)元素
List與Set是存儲(chǔ)單一元素的集合
Map是存儲(chǔ)key-value對(duì)元素的集合
元素有序性
Set與Map內(nèi)的元素在方法調(diào)用層面是無(wú)序的
List元素是有序的
元素可重復(fù)性
List元素是可重復(fù)的
Set不允許重復(fù),Map不允許key重復(fù)
繼承接口
Set與List繼承了Collection
Map是與Collection層次一致的接口
Iterator與ListIterator的區(qū)別
繼承性
ListIterator繼承于Iterator
遍歷集合
Iterator可以遍歷Collection內(nèi)的所有實(shí)現(xiàn)類
ListIterator只能遍歷List接口下的ArrayList以及LinkedList
遍歷方向
Iterator只能向下遍歷
ListIterator可以向上向下遍歷
迭代時(shí)修改元素
Iterator不支持迭代時(shí)修改或插入集合元素
ListIterator支持迭代時(shí)修改或刪除元素
迭代時(shí)移除元素
兩個(gè)迭代器都可以在迭代時(shí)移除元素
JVM
垃圾回收算法
標(biāo)記-清理
標(biāo)記存活對(duì)象
清除未標(biāo)記對(duì)象
效率高,但是會(huì)造成內(nèi)存碎片
復(fù)制
將內(nèi)存區(qū)域劃分成清理區(qū)與存活區(qū)
將存活對(duì)象復(fù)制到存活區(qū)
清理清理區(qū)的所有對(duì)象
不會(huì)造成內(nèi)存碎片,但是降低內(nèi)存的使用率
標(biāo)記-整理
標(biāo)記待清理對(duì)象
將標(biāo)記對(duì)象移到另外一側(cè)
清理邊界外內(nèi)存區(qū)域
有效解決了內(nèi)存碎片的產(chǎn)生以及內(nèi)存使用率下降的問題
數(shù)據(jù)庫(kù)
char與varchar的區(qū)別
數(shù)據(jù)插入方面
當(dāng)插入數(shù)據(jù)等于定義長(zhǎng)度,兩者處理沒有區(qū)別
當(dāng)插入元素小于定義長(zhǎng)度
char會(huì)填充空格到定義長(zhǎng)度
varchar不會(huì)填充空格
空格問題
數(shù)據(jù)最后出現(xiàn)空格
char會(huì)將空格刪除
varchar不會(huì)
檢索速度
char比varchar的檢索速度快
數(shù)據(jù)庫(kù)的事務(wù)特性
原子性(Atomic),事務(wù)內(nèi)操作結(jié)果時(shí)一致的
一致性(Consitency),事務(wù)執(zhí)行前后數(shù)據(jù)庫(kù)的狀態(tài)時(shí)一致的
隔離性(Isolation),并發(fā)事務(wù)的執(zhí)行是互不干擾的
持久性(Durability),事務(wù)執(zhí)行結(jié)果是永久存儲(chǔ)的
數(shù)據(jù)庫(kù)中select語(yǔ)句執(zhí)行流程(客戶端到存儲(chǔ)引擎)
客戶端通過TCP三次握手與服務(wù)端進(jìn)行連接
連接器判斷賬號(hào)信息是否有效
有效,則進(jìn)入第三步
無(wú)效,連接器返回Access denied的錯(cuò)誤
查詢緩存中是否有執(zhí)行的記錄
不建議使用,可以通過query_cache_type關(guān)閉,MySQL 8.0去除了查詢緩存的功能
有執(zhí)行記錄,則返回上次執(zhí)行結(jié)果
沒有執(zhí)行記錄,進(jìn)入第四步
分析器進(jìn)行詞法分析,語(yǔ)法分析
詞法分析
判斷輸入的SQL語(yǔ)句中的關(guān)鍵詞的含義
語(yǔ)法分析
判斷SQL是否合法
若合法,進(jìn)入第五步
若不合法,返回 You have an error in your SQL syntax錯(cuò)誤到客戶端
sql語(yǔ)句經(jīng)過優(yōu)化器選擇最佳執(zhí)行策略
多索引情況下的最佳索引的選擇
多表關(guān)聯(lián)時(shí)決定表的連接順序
sql語(yǔ)句交由執(zhí)行器進(jìn)行存儲(chǔ)引擎的操作并返回結(jié)果
根據(jù)from找到需要查詢的表,根據(jù)where形成有效的結(jié)果集合
(如果有order by,對(duì)數(shù)據(jù)進(jìn)行排序)select返回結(jié)果
數(shù)據(jù)庫(kù)中數(shù)據(jù)更新語(yǔ)句執(zhí)行流程(客戶端到存儲(chǔ)引擎)
1. 客戶端通過TCP三次握手與服務(wù)端進(jìn)行連接 2. 連接器判斷賬號(hào)信息是否有效 1. 有效,則進(jìn)入第三步 2. 無(wú)效,連接器返回Access denied的錯(cuò)誤 3. 查詢緩存中是否有執(zhí)行的記錄 1. 不建議使用,可以通過query_cache_type關(guān)閉,MySQL 8.0去除了查詢緩存的功能 2. 有執(zhí)行記錄,則返回上次執(zhí)行結(jié)果 3. 沒有執(zhí)行記錄,進(jìn)入第四步 4. 分析器進(jìn)行詞法分析,語(yǔ)法分析 1. 詞法分析 1. 判斷輸入的SQL語(yǔ)句中的關(guān)鍵詞的含義 2. 語(yǔ)法分析 1. 判斷SQL是否合法 2. 若合法,進(jìn)入第五步 3. 若不合法,返回 You have an error in your SQL syntax錯(cuò)誤到客戶端 5. sql語(yǔ)句經(jīng)過優(yōu)化器選擇最佳執(zhí)行策略 6. sql語(yǔ)句交由執(zhí)行器進(jìn)行存儲(chǔ)引擎的操作并返回結(jié)果 7. 兩段式提交 1. 檢查并讀入相關(guān)數(shù)據(jù)頁(yè)到內(nèi)存 2. 將更新語(yǔ)句的操作行寫入內(nèi)存 1. 寫入操作記錄到readlog中,處于prepare狀態(tài) 2. 寫入操作記錄到binlog中 3. 事務(wù)提交,處于commit狀態(tài)
redis的數(shù)據(jù)類型以及底層實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)
1. string 1. 動(dòng)態(tài)字符串 2. hash 1. 數(shù)據(jù)量小,壓縮鏈表 2. 數(shù)據(jù)量大,哈希表 3. list 1. 數(shù)據(jù)量小,壓縮列表 2. 數(shù)據(jù)量大,雙循環(huán)鏈表 4. 有序集合 1. 數(shù)據(jù)量小,壓縮鏈表 2. 數(shù)據(jù)量大,跳表 5. set 1. 數(shù)據(jù)量小,有序數(shù)組 2. 數(shù)據(jù)量大,哈希表算法
將有序數(shù)組轉(zhuǎn)換為二叉搜索樹
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75596.html
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...
閱讀 1942·2019-08-30 15:55
閱讀 1078·2019-08-30 15:44
閱讀 977·2019-08-30 10:48
閱讀 2163·2019-08-29 13:42
閱讀 3301·2019-08-29 11:16
閱讀 1532·2019-08-29 11:09
閱讀 2154·2019-08-26 11:46
閱讀 719·2019-08-26 11:44