章節(jié)一
一:各環(huán)境變量的意義
1.環(huán)境變量的意義
操作系統(tǒng)中具有特定名字的對(duì)象浪耘,用于儲(chǔ)存一個(gè)路徑纹笼,該路徑指明某些文件、程序的完整路徑运挫;JAVA的環(huán)境變量便是指明jdk、jrm等文件的路徑以便系統(tǒng)查找在編程過程中用到的相應(yīng)的語法套耕、函數(shù)所在的具體文件位置谁帕。
2.JAVA_HOME
儲(chǔ)存Java的安裝目錄;聽說有各規(guī)定就是當(dāng)有軟件需要用到Java時(shí)會(huì)直接在操作系統(tǒng)中找這個(gè)變量箍铲。
3.PATH
儲(chǔ)存Java命令所在路徑雇卷,即jdk下的bin目錄所在路徑,設(shè)置好PATH后可以在系統(tǒng)執(zhí)行命令時(shí)使用javac/java等工具颠猴,所以PATH在JAVA_HOME之下关划。
4.CLASSPATH
儲(chǔ)存Java的執(zhí)行環(huán)境在哪些路徑、目錄之下翘瓮,通常與improt贮折、package、class有關(guān)资盅,即jdk下的lib调榄,也在JAVA_HOME之下踊赠。
二:JDK、JRE每庆、JVM的區(qū)別
1.跨平臺(tái)核心JVM
Java可以實(shí)現(xiàn)一處編寫筐带、多處運(yùn)行,其原因就在于JVM缤灵,在不同的的操作系統(tǒng)中JVM通過適應(yīng)于本系統(tǒng)的獨(dú)立的JVM實(shí)現(xiàn)將代碼編譯為唯一的字節(jié)碼然后在JavaAPI層面調(diào)用相同的設(shè)備實(shí)現(xiàn)同一功能伦籍,也就是先得到同一的指令集(字節(jié)流)然后解釋自己的指令集到 CPU 的指令集或 OS 的系統(tǒng)調(diào)用。
2.運(yùn)行環(huán)境JRE
包含底層的JVM實(shí)現(xiàn)(bin)腮出、JVM工作需要的基本類庫(kù)(lib)帖鸦,所以可以說是Java運(yùn)行、開發(fā)時(shí)的環(huán)境胚嘲。
3.開發(fā)工具JDK
工具包作儿,Java開發(fā)的核心,包含編譯器相關(guān)的文件(bin)馋劈、Java與JVM交互的頭文件(include)攻锰、類庫(kù)(lib)、運(yùn)行環(huán)境(jre)妓雾。
? ?4.總結(jié):Jdk中有jre口注,jre中有jvm,jvm與操作系統(tǒng)相連君珠。
三:流程
編寫Java源文件
Javac命令將其編譯為class文件(字節(jié)碼)
JVM加載class文件
四:class文件
Class文件與操作系統(tǒng)無關(guān)所以可以在不同操作系統(tǒng)中使用為Java程序提供獨(dú)立于底層的二進(jìn)制形式服務(wù)。
五:Git
1.基本知識(shí)
主要是管理GitHub娇斑,托管項(xiàng)目代碼策添;
同時(shí)主要功能為管理代碼的版本,便于用戶查找以前版本毫缆;
本地有三個(gè)工作區(qū)域:
在工作區(qū)對(duì)文件修唯竹、添、改苦丁;
暫存區(qū)暫存修浸颓、添、改的文件方便再一次做進(jìn)一步的修旺拉、添产上、改操作;
確認(rèn)無誤后將暫存區(qū)的文件提交到git本地倉(cāng)庫(kù)蛾狗。
2.git管理本地倉(cāng)庫(kù)
創(chuàng)建文件夾:mkdir文件夾名
進(jìn)入文件夾目錄:cd 文件夾名/文件夾路徑
初始化Git倉(cāng)庫(kù)(存儲(chǔ)倉(cāng)庫(kù)所有信息):gitinit
退到上一級(jí):
當(dāng)前文件狀況:gitstatus
創(chuàng)建文件:touch文件名
刪除文件:rm 文件名
修改文件內(nèi)容:vi 文件名
查看文件內(nèi)容:cat 文件名
將文件從工作區(qū)轉(zhuǎn)到暫存區(qū):git
add 文件名
將暫存區(qū)中的文件刪除:git
rm 文件名
確認(rèn)暫存區(qū)中執(zhí)行的操作保存到倉(cāng)庫(kù):git commit -m”描述”
3.git管理遠(yuǎn)程倉(cāng)庫(kù)
從遠(yuǎn)程倉(cāng)庫(kù)中項(xiàng)目克隆到本地:git
clone 倉(cāng)庫(kù)地址
在本地工作區(qū)對(duì)文件進(jìn)行操作后添加到本地倉(cāng)庫(kù)的暫存區(qū)晋涣;
確認(rèn)無誤后確定添加到本地倉(cāng)庫(kù);
將本地倉(cāng)庫(kù)同步到遠(yuǎn)程倉(cāng)庫(kù):gitpush
六:對(duì)分支的理解
1.基本知識(shí)
分支是一次處理不同版本存儲(chǔ)庫(kù)的方法沉桌。
默認(rèn)情況下谢鹊,存儲(chǔ)庫(kù)有一個(gè)名為master的分支算吩,該分支被視為最終分支。在將分支提交給master之前佃扼,我們使用分支進(jìn)行實(shí)驗(yàn)和編輯偎巢。
當(dāng)我在主分支上創(chuàng)建分支時(shí),我正在按主分支在該時(shí)間點(diǎn)上的狀態(tài)創(chuàng)建主分支的副本或快照兼耀。如果在我處理分支時(shí)其他人對(duì)主分支進(jìn)行了更改压昼,則可以引入這些更新。
七:語法知識(shí)
1.基本組成
關(guān)鍵字翠订、運(yùn)算符巢音、標(biāo)識(shí)符、語句尽超、注釋官撼、函數(shù)、常量與變量似谁、數(shù)組傲绣。
2.關(guān)鍵字和標(biāo)識(shí)符
關(guān)鍵字:(Java自帶)
用于定義數(shù)據(jù)類型的關(guān)鍵字classinterface byte short int long float double char boolean void
用于定義數(shù)據(jù)類型值的關(guān)鍵字truefalse null
用于定義流程控制的關(guān)鍵字ifelse switch case default while do for break continue return
用于定義訪問權(quán)限修飾符的關(guān)鍵字privateprotected public
用于定義類,函數(shù)巩踏,變量修飾符的關(guān)鍵字abstract final static synchronized
用于定義類與類之間關(guān)系的關(guān)鍵字extendsimplements
用于定義建立實(shí)例及引用實(shí)例秃诵,判斷實(shí)例的關(guān)鍵字new this super instanceof
用于異常處理的關(guān)鍵字trycatch finally throw throws
用于包的關(guān)鍵字packageimport
其他修飾符關(guān)鍵字nativestrictfp transient volatile assert
標(biāo)識(shí)符:(自定義)
遵循大小寫嚴(yán)格、不能與關(guān)鍵字沖突塞琼、不能以數(shù)字開頭
3.基本數(shù)據(jù)類型
數(shù)值型:byteshort int long float double
字符型:char
布爾型:boolean
4.引用數(shù)據(jù)類型
類class菠净、接口interface、數(shù)組[]
章節(jié)二
一:簡(jiǎn)述類與對(duì)象的關(guān)系
1.類
事物的描述彪杉。是具備某些共同特征的實(shí)體的集合毅往,它是一種抽象的數(shù)據(jù)類型,它是對(duì)所具有相同特征實(shí)體的抽象派近。在面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中攀唯,類是對(duì)一類“事物”的屬性與行為的抽象。
2.對(duì)象
正文該類事物的實(shí)例渴丸。在Java中通過new進(jìn)行創(chuàng)建侯嘀。是一個(gè)真實(shí)世界中的實(shí)體,對(duì)象與實(shí)體是一一對(duì)應(yīng)關(guān)系的谱轨,意思就是現(xiàn)實(shí)世界的每一個(gè)實(shí)體都是一個(gè)對(duì)象戒幔,所以對(duì)象是一個(gè)具體的概念。對(duì)象是一種個(gè)性的表示碟嘴,表示一個(gè)獨(dú)立的個(gè)體溪食,每個(gè)對(duì)象擁有自己獨(dú)立的屬性,依靠屬性來區(qū)分不同對(duì)象娜扇。错沃;
3.區(qū)別
a).類是一個(gè)抽象的概念栅组,它不存在于現(xiàn)實(shí)中的時(shí)間/空間里,類只是為所有的對(duì)象定義了抽象的屬性與行為枢析。就好像“Person(人)”這個(gè)類玉掸,它雖然可以包含很多個(gè)體,但它本身不存在于現(xiàn)實(shí)世界上醒叁。
b).
對(duì)象是類的一個(gè)具體司浪。它是一個(gè)實(shí)實(shí)在在存在的東西。類是一個(gè)靜態(tài)的概念把沼,類本身不攜帶任何數(shù)據(jù)啊易。當(dāng)沒有為類創(chuàng)建任何對(duì)象時(shí),類本身不存在于內(nèi)存空間中饮睬。
c).
對(duì)象是一個(gè)動(dòng)態(tài)的概念租谈。每一個(gè)對(duì)象都存在著有別于其它對(duì)象的屬于自己的獨(dú)特的屬性和行為。對(duì)象的屬性可以隨著它自己的行為而發(fā)生改變捆愁。割去;
二:封裝的概念
1.基本概念
正文封裝是面向?qū)ο蟮姆椒ㄗ裱囊粋€(gè)重要原則,有時(shí)也叫做數(shù)據(jù)隱藏昼丑。
從形式上看呻逆,封裝將數(shù)據(jù)和行為組合在一個(gè)包中,并對(duì)對(duì)象的使用者隱藏了數(shù)據(jù)的實(shí)現(xiàn)形式菩帝。
對(duì)象中的數(shù)據(jù)稱為實(shí)例域,操縱數(shù)據(jù)的過程叫做方法咖城,對(duì)于每個(gè)特定的對(duì)象,都有一組特定的實(shí)例域值呼奢。這些值的集合就是這個(gè)對(duì)象的當(dāng)前狀態(tài).無論何時(shí)酒繁,只要向?qū)ο蟀l(fā)送一個(gè)消息,它的狀態(tài)就有可能發(fā)生改變控妻。
封裝的關(guān)鍵在于不能讓類中的方法直接地訪問其他類的實(shí)例域。程序僅通過對(duì)象的方法揭绑,與對(duì)象數(shù)據(jù)進(jìn)行交互弓候。這意味著一個(gè)類可以全面地改變存儲(chǔ)數(shù)據(jù)的方式,只要仍舊使用同樣的方法操作數(shù)據(jù)他匪,其他對(duì)象就不知道所發(fā)生的變化
三:對(duì)構(gòu)造函數(shù)的理解
1.概念
構(gòu)造函數(shù)是一種特殊的函數(shù)菇存。其主要功能是用來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象,即為對(duì)象成員變量賦初始值邦蜜,總與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語句中依鸥。構(gòu)造函數(shù)與類名相同尊蚁,可重載多個(gè)不同的構(gòu)造函數(shù)桑李。在JAVA語言中懦砂,構(gòu)造函數(shù)普遍被稱之為構(gòu)造方法抬探。;
2.特點(diǎn)
a).構(gòu)造方法的方法名必須與類名相同衣吠。
構(gòu)造方法沒有返回值類型茶敏,可以有return,但是不能有返回值缚俏,在這里只是表示結(jié)束惊搏,并不是返回的表示,一般也不使用return忧换。
b).構(gòu)造方法的主要作用是完成對(duì)象的初始化工作恬惯,它能夠把定義對(duì)象時(shí)的參數(shù)傳給對(duì)象的域。
c).一個(gè)類可以定義多個(gè)構(gòu)造方法亚茬,如果在定義類時(shí)沒有定義構(gòu)造方法酪耳,則編譯系統(tǒng)會(huì)自動(dòng)插入一個(gè)無參數(shù)的默認(rèn)構(gòu)造方法,這個(gè)構(gòu)造方法不執(zhí)行任何代碼才写。
d).構(gòu)造方法可以重載葡兑,以參數(shù)的個(gè)數(shù),類型赞草,順序讹堤。
3.理解
構(gòu)造一個(gè)新對(duì)象的方法。
四:JAVA能不能多繼承厨疙,若不能洲守,怎么處理這種問題
1.不能
其問題在于子類的功能由誰實(shí)現(xiàn),使用時(shí)能否準(zhǔn)確定位是誰做沾凄。子類繼承父類梗醇,沒有重寫方法,調(diào)用的是父類的功能撒蟀;假如可以繼承多個(gè)父類叙谨,那么當(dāng)父類A,B中有同樣的方法或參數(shù)時(shí),子類C調(diào)用父類方法或?qū)傩詴r(shí)很難判斷要調(diào)用誰保屯;
2.二解決方法
通過接口手负,接口不同,接口沒有方法體姑尺,也就是沒有功能竟终,功能是實(shí)現(xiàn)類來做的,因此不用考慮讓誰做的問題切蟋;定義的屬性也是常量统捶,要通過接口名來調(diào)用
五:?jiǎn)卫O(shè)計(jì)模式的理解
1.概念
一個(gè)類中只提供一個(gè)實(shí)例對(duì)象讓外面訪問。;
2.實(shí)現(xiàn)方法
a).在類初始化時(shí)喘鸟,已經(jīng)自行實(shí)例化匆绣;
b). 在第一次調(diào)用的時(shí)候?qū)嵗?/p>
c). 將類名注冊(cè),下次從里面直接獲取
3.理解
由類的訪問模式定義的編程設(shè)計(jì)模式迷守;
六:解釋下這句代碼什么意思
public static void main(String[] args)
1.答:
A)犬绒、String[] args:字符串?dāng)?shù)組,接收程序執(zhí)行時(shí)來傳進(jìn)來的參數(shù)兑凿;
B)凯力、public:程序訪問權(quán)限,表示該程序在任何場(chǎng)合都可以被引用礼华;
C)咐鹤、static:表示方法是靜態(tài)的,不依賴類的對(duì)象圣絮,是屬于類的祈惶;
D)、void:表示方法無返回值扮匠;
?
七:UML類圖
1.作用:
識(shí)別出所有必須的類捧请,并分析這些類之間的關(guān)系。
2.知識(shí):
a)類圖中包含類之間的關(guān)系分別有有關(guān)聯(lián)棒搜、聚合疹蛉、組合、泛化力麸、依賴可款,
b)聚合表示整體與部分的關(guān)系;
c)關(guān)聯(lián)是模型元素之間的一種語義聯(lián)系克蚂,是類之間的一種很弱的聯(lián)系
d)組合表示類之間整體和部分的關(guān)系
e)泛化定義了一般元素和特殊元素之間的分類關(guān)系闺鲸,類之間的這種泛化關(guān)系也就是繼承關(guān)系。
埃叭,? ? ? ? ? ? ? ? ? ? ? ?
章節(jié)三
一:線程 進(jìn)程區(qū)別
4.進(jìn)程
進(jìn)程是程序資源分配的最小單元摸恍,是程序在系統(tǒng)上的一次動(dòng)態(tài)執(zhí)行、運(yùn)行過程赤屋,它經(jīng)歷了從代碼加載误墓、執(zhí)行到執(zhí)行完畢的一個(gè)完整過程,是一個(gè)能獨(dú)立運(yùn)行的單位益缎,它有自己的獨(dú)立資源和私有的地址空間;
5.線程
線程是程序執(zhí)行的最小單元然想,是進(jìn)程的一個(gè)實(shí)體莺奔,是cpu調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位;
6.總結(jié)
線程在進(jìn)程當(dāng)中令哟,進(jìn)程標(biāo)識(shí)一個(gè)完整程序恼琼,所以進(jìn)程之間無明顯聯(lián)系;線程直屬于cpu屏富,是進(jìn)程中的基本單位晴竞,所以線程之間可以共享內(nèi)存
二:實(shí)現(xiàn)線程幾種方式
1.Thread類
通過繼承Thread類,重寫Thread的run()方法狠半,將線程運(yùn)行的邏輯放入其中噩死;
2.Runnable接口
實(shí)現(xiàn)Runnable接口,實(shí)例化Thread類神年;
?
三:Thread類中的start()
run()方法的區(qū)別
區(qū)別:
Run在原來的線程中調(diào)用已维,start啟動(dòng)新的線程;start內(nèi)部調(diào)用run方法已日。
四:什么是線程安全垛耳?Vector是一個(gè)線程安全類嗎?
1.線程安全:
多線程編程時(shí)的計(jì)算機(jī)程序代碼的一個(gè)概念飘千,線程安全的代碼會(huì)通過同步機(jī)制保證各個(gè)線程都都可以正確且正常的執(zhí)行堂鲜,因此如果單線程每次運(yùn)行的結(jié)果與單線程運(yùn)行時(shí)的結(jié)果一致,且其它的變量的值也與預(yù)期一致時(shí)便是線程安全的护奈;
2.Vector:
Vector通過同步的方法缔莲,使多個(gè)線程不可能同時(shí)訪問Vector中的數(shù)據(jù),只能一個(gè)一個(gè)訪問逆济,不會(huì)出現(xiàn)數(shù)據(jù)混亂的現(xiàn)象酌予,所以線程安全;
五:如何在兩個(gè)線程間共享數(shù)據(jù)奖慌?什么是生產(chǎn)消費(fèi)者模型抛虫?
1.線程間的數(shù)據(jù)共享:
如果每個(gè)線程執(zhí)行相同的代碼,那么可以使用runnable對(duì)象简僧,runnable里面的數(shù)據(jù)共享建椰;如果每個(gè)線程執(zhí)行的代碼不同,則需要兩個(gè)Runnable岛马,通過內(nèi)部類方法棉姐,將共享數(shù)據(jù)寫在內(nèi)部類中,提供每個(gè)線程不同的方法啦逆,構(gòu)建實(shí)例伞矩,通過構(gòu)造方法傳遞的對(duì)象,進(jìn)行數(shù)據(jù)共享夏志;或者通過外部類方法乃坤,將共享數(shù)據(jù)提供在外部類的成員變量中,提供外部類的不用線程的方法,在Runnable中調(diào)用外部類的方法或者變量湿诊,以此實(shí)現(xiàn)數(shù)據(jù)共享狱杰。
2.消費(fèi)者模型
在一個(gè)系統(tǒng)中存在生產(chǎn)者、消費(fèi)者兩種角色厅须,通過內(nèi)存緩沖區(qū)進(jìn)行通信仿畸,生產(chǎn)者生產(chǎn)數(shù)據(jù),消費(fèi)者將數(shù)據(jù)做成產(chǎn)品朗和;生產(chǎn)者生產(chǎn)數(shù)據(jù)到緩沖區(qū)中错沽,消費(fèi)者從緩沖區(qū)中取數(shù)據(jù)。
如果緩沖區(qū)已經(jīng)滿了例隆,則生產(chǎn)者線程阻塞甥捺。
如果緩沖區(qū)為空,那么消費(fèi)者線程阻塞
六:什么是線程池镀层?為什么要使用它镰禾?
1.線程池:
一種線程使用模式;
線程池維護(hù)著多個(gè)線程唱逢,等待著監(jiān)督管理者分配可并發(fā)執(zhí)行的任務(wù)吴侦。這避免了在處理短時(shí)間任務(wù)時(shí)創(chuàng)建與銷毀線程的代價(jià)。線程池不僅能夠保證內(nèi)核的充分利用坞古,還能防止過分調(diào)度备韧。可用線程數(shù)量應(yīng)該取決于可用的并發(fā)處理器痪枫、處理器內(nèi)核织堂、內(nèi)存、網(wǎng)絡(luò)sockets等的數(shù)量奶陈。
2.線程池優(yōu)點(diǎn):
線程池可以通過重用已存在的線程降低系統(tǒng)資源消耗易阳,降低線程創(chuàng)建和銷毀造成的消耗;提高系統(tǒng)響應(yīng)速度吃粒,當(dāng)有任務(wù)到達(dá)時(shí)潦俺,通過復(fù)用已存在的線程,無需等待新線程的創(chuàng)建便能立即執(zhí)行徐勃;方便線程并發(fā)數(shù)的管控事示。因?yàn)榫€程若是無限制的創(chuàng)建,可能會(huì)導(dǎo)致內(nèi)存占用過多而產(chǎn)生OOM僻肖,并且會(huì)造成cpu過度切換(cpu切換線程是有時(shí)間成本的(需要保持當(dāng)前執(zhí)行線程的現(xiàn)場(chǎng)肖爵,并恢復(fù)要執(zhí)行線程的現(xiàn)場(chǎng)))。提供更強(qiáng)大的功能臀脏,延時(shí)定時(shí)線程池劝堪。
七:多線程中調(diào)用wait()和sleep()方法有什么不同法挨?
1.Wait()
Object類的方法,可以中斷線程的運(yùn)行幅聘,使本線程等待,暫時(shí)讓出CPU的使用權(quán)窃植,并允許其他線程使用這個(gè)同步方法帝蒿。其他線程如果在使用這個(gè)同步方法時(shí)不需要等待,那么它使用完這個(gè)方法的同時(shí)巷怜,應(yīng)該用notifyAll()方法通知所有由于使用了這個(gè)同步方法而處于等待的線程結(jié)束等待葛超,曾中斷的線程就會(huì)從剛才中斷處繼續(xù)執(zhí)行這個(gè)同步方法(并不是立馬執(zhí)行,而是結(jié)束等待)延塑,并遵循“先中斷先繼續(xù)”的原則绣张。
2.sleep()
Thread類的方法,線程通過調(diào)用該方法关带,進(jìn)入休眠狀態(tài)主動(dòng)讓出CPU侥涵,從而CPU可以執(zhí)行其他的線程。經(jīng)過sleep指定的時(shí)間后宋雏,CPU回到這個(gè)線程上繼續(xù)往下執(zhí)行芜飘。;
3.區(qū)別:
sleep()方法的主要作用是讓線程暫停一段時(shí)間磨总,時(shí)間一到則自動(dòng)恢復(fù)嗦明,不涉及線程間的通信,也不會(huì)釋放鎖蚪燕,可以放在任何地方使用娶牌,但sleep()方法必須捕獲異常;
調(diào)用wait()方法后馆纳,線程會(huì)釋放掉它所占用的鎖诗良,從而使線程所在對(duì)象中的其他synchronized數(shù)據(jù)可被別的線程使用,用于線程間的通信厕诡,必須放在同步控制方法或者同步語句塊中使用累榜,不需要捕獲異常。
八:synchronized和ReentrantLock 有什么不同灵嫌?
1.synchronized
Java語言的關(guān)鍵字壹罚,可用來給對(duì)象和方法或者代碼塊加鎖,當(dāng)它鎖定一個(gè)方法或者一個(gè)代碼塊的時(shí)候寿羞,同一時(shí)刻最多只有一個(gè)線程執(zhí)行這段代碼猖凛。當(dāng)兩個(gè)并發(fā)線程訪問同一個(gè)對(duì)象object中的這個(gè)加鎖同步代碼塊時(shí),一個(gè)時(shí)間內(nèi)只能有一個(gè)線程得到執(zhí)行绪穆。另一個(gè)線程必須等待當(dāng)前線程執(zhí)行完這個(gè)代碼塊以后才能執(zhí)行該代碼塊辨泳。然而虱岂,當(dāng)一個(gè)線程訪問object的一個(gè)加鎖代碼塊時(shí),另一個(gè)線程仍可以訪問該object中的非加鎖代碼塊菠红。第岖;
2.ReentrantLock
ReentrantLock類,實(shí)現(xiàn)了Lock接口试溯,是一種可重入的獨(dú)占鎖蔑滓,具有與使用?synchronized?相同的一些基本行為和語義,但功能更強(qiáng)大遇绞。ReentrantLock內(nèi)部通過內(nèi)部類實(shí)現(xiàn)了AQS框架的API來實(shí)現(xiàn)獨(dú)占鎖的功能键袱;
3.區(qū)別:
Synchronized是java語言的關(guān)鍵字,是原生語法層面的互斥摹闽,需要jvm實(shí)現(xiàn)蹄咖,使用比較方便簡(jiǎn)潔;
ReentrantLock是JDK 1.5之后提供的API層面的互斥鎖付鹿,需要lock()和unlock()方法配合try/finally語句塊來完成澜汤,鎖更靈活慨畸;
優(yōu)化以后的Sunchronized的性能與ReenTrantLock差不多弥姻。
鎖機(jī)制
4.悲觀鎖
是一種對(duì)數(shù)據(jù)的修改持悲觀態(tài)度的并發(fā)控制方式,悲觀鎖總是假設(shè)其它線程在讀取數(shù)據(jù)時(shí)候會(huì)更改數(shù)據(jù)盖矫,因此進(jìn)行加鎖操作纽匙,當(dāng)其他線程想要訪問數(shù)據(jù)時(shí)候都將線程阻塞掛起务蝠。synchronized的實(shí)現(xiàn)就是悲觀鎖的例子。悲觀鎖采用的悲觀并發(fā)控制實(shí)際上是先取鎖再訪問的保守策略烛缔,能對(duì)數(shù)據(jù)處理的安全提供保障馏段,只是效率有所降低。適用于寫多讀少的場(chǎng)景践瓷。
5.樂觀鎖
樂觀鎖則假設(shè)數(shù)據(jù)一般不會(huì)造成沖突院喜,只在數(shù)據(jù)更新時(shí)才對(duì)數(shù)據(jù)是否沖突進(jìn)行檢測(cè),如果沖突則返回給用戶異常信息晕翠,讓用戶決定如何去做喷舀,適用于讀多寫少的場(chǎng)景。
樂觀鎖的實(shí)現(xiàn)步驟為:沖突檢測(cè)和數(shù)據(jù)更新淋肾。樂觀鎖中的CAS(比較與交換)概念為解決多線程并行情況下使用鎖造成損耗的一種機(jī)制硫麻。
章節(jié)四
一:集合的理解
7.簡(jiǎn)介
因?yàn)閿?shù)組只能存放同一類型的數(shù)據(jù),且長(zhǎng)度固定在實(shí)際編程中會(huì)存在一些麻煩樊卓,所以集合應(yīng)運(yùn)而生拿愧;不存儲(chǔ)對(duì)象而是用于存放對(duì)象的引用,所以可以以引用類型存放不同的類型且不限數(shù)量碌尔。Java集合框架主要包括兩種:儲(chǔ)存元素的集合Collocation和儲(chǔ)存鍵值對(duì)映射的圖Map浇辜。
8.List:
繼承于Collocation券敌,屬于集合的一種,是有序的隊(duì)列柳洋,List中每一個(gè)元素有一個(gè)索引待诅,第一個(gè)索引值為0,List中允許有重復(fù)的元素熊镣;
9.Set:
繼承于Collocation咱士,是不包括重復(fù)元素的集合的一種,維持內(nèi)部排序轧钓,所以隨機(jī)訪問沒有意義;
10.Map:
是由一系列鍵值對(duì)組成的圖锐膜,提供了鍵值Key到Value的映射毕箍,且該映射一一對(duì)應(yīng),不允許多對(duì)一道盏,允許一對(duì)多而柑;
二:Hashtable
1.簡(jiǎn)介
實(shí)現(xiàn)Map接口的類,以哈希表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)荷逞,每個(gè)鍵媒咳、值都是一個(gè)對(duì)象,采用拉鏈法實(shí)現(xiàn)哈希表种远,性能不如HashMap涩澡;
三:TreeMap
1.簡(jiǎn)介
有序散列表,實(shí)現(xiàn)SortedMap接口坠敷,儲(chǔ)存K-V鍵值對(duì)妙同,底層通過紅黑樹實(shí)現(xiàn),可以實(shí)現(xiàn)元素的自動(dòng)排序膝迎。
四:HashMap
1.簡(jiǎn)介
實(shí)現(xiàn)Map接口的類粥帚,以哈希表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),通過哈希函數(shù)將元素的鍵值轉(zhuǎn)化為索引限次,為快速查詢而設(shè)計(jì)的芒涡;
五:三者的異同
1.相同點(diǎn)
都對(duì)Map接口進(jìn)行了實(shí)現(xiàn);
2.相異點(diǎn)
Hashtable是線程安全的卖漫、同步的费尽,不支持null和空值,同步導(dǎo)致開銷大懊亡;HashMap大體與Hashtable一致依啰,但HashMap支持null和空值,不是同步的開銷較械暝妗速警;treeMap是基于紅黑樹實(shí)現(xiàn)的可以進(jìn)行排序叹誉、順序訪問的Map
六:IO基本操作 ,可以找下IO文件操作的模板代碼
1.簡(jiǎn)介
JavaIO包中有五個(gè)類(File闷旧、InputStream长豁、OutPutStream、writer忙灼、reader)和一個(gè)接口匠襟,類中除了File之外全部屬于抽象類,那些抽象類有很多復(fù)雜且麻煩的子類该园,且這些類在使用完成后需要手動(dòng)關(guān)閉流酸舍。字符流只能用來復(fù)制純文本文件,字節(jié)流可以復(fù)制所以類型的文件里初。
2.IO基本操作
創(chuàng)建與指定路徑文件相連的輸入流啃勉,輸出流,用于讀寫文件:
FileInputStream(File
file||String name)双妨;
FileOutputStream(File
file||String name)淮阐;
創(chuàng)建緩沖輸入流、輸出流刁品,用于緩存字節(jié)數(shù)據(jù)的字節(jié)流:
BufferedInputStream(InputStreamin,null||int
size)泣特;
BufferedOutputStream(InputStreamin,null||int
size);
創(chuàng)建讀取挑随、寫入字符的字符流:
FileReader(File file||String name)状您;
FileWriter(File file||String name);
創(chuàng)建文本緩沖輸入流兜挨、輸出流竞阐,用于緩存字符數(shù)據(jù)的字符流:
BufferedReader(Reader
in,null||int size);
BufferedWriter(Reader
in,null||int size)暑劝;
字節(jié)流轉(zhuǎn)字符流:
InputStreamReader(InputStream
in骆莹,null||Charset
cs);
字符流轉(zhuǎn)字節(jié)流:
OutputStreamWriter(OutputStream
out担猛,null||Charset
cs)幕垦;
從流中讀取下一個(gè)字節(jié),返回字節(jié)值傅联,若讀到流尾返回-1:
Read(byte[] b,null||-int off,int
len-)先改;
將字節(jié)寫入流中:
Read(byte[] b,null||-int off,int
len-);
關(guān)閉流:
Close()蒸走;
刷新:
Flush()仇奶;
七:網(wǎng)絡(luò)編程中TCP和UDP協(xié)議開發(fā)的基本流程,網(wǎng)上也有很多Demo代碼
1.TCP(C/S模式):
TCP通過連接的方式進(jìn)行通信數(shù)據(jù)以流的形式傳送比驻,流程如下:
a.創(chuàng)建服務(wù)器端该溯,設(shè)定服務(wù)器端口和ip地址岛抄;
b.創(chuàng)建客戶端,設(shè)定服務(wù)器的端口和ip地址以及本地端口狈茉;
c.客戶端通過Socket對(duì)象將數(shù)據(jù)以流的形式在網(wǎng)絡(luò)中傳輸夫椭;
d.服務(wù)器端通過ServerSocket對(duì)象監(jiān)聽客戶端的連接;
e.服務(wù)器端通過Socket對(duì)象獲取客戶端發(fā)來服務(wù)器端通過Socket對(duì)象反饋信息回客戶端氯庆;
f.關(guān)閉套接字蹭秋;
2.UDP(交互式):
UDP以無連接的方式進(jìn)行通信數(shù)據(jù)以數(shù)據(jù)報(bào)的形式傳送:
a. 創(chuàng)建UdpSocket用于發(fā)送接收數(shù)據(jù);
b. 創(chuàng)建數(shù)據(jù)包DatagramPacket儲(chǔ)存數(shù)據(jù)堤撵;
c. 調(diào)用DatagramSocket方法發(fā)送仁讨、接收數(shù)據(jù)包;
d. 若接收到報(bào)文則通過調(diào)用數(shù)據(jù)包的方法獲取接收到的數(shù)據(jù)实昨;
e. 關(guān)閉套接字陪竿;
章節(jié)五
一:SQL基本語句
1.基本概念
???? 數(shù)據(jù)庫(kù):操作數(shù)據(jù)的集合;
???? SQL語句:管理數(shù)據(jù)庫(kù)的命令屠橄,大小寫不敏感;
???? DDL:數(shù)據(jù)定義語言闰挡,對(duì)數(shù)據(jù)庫(kù)內(nèi)部的對(duì)象進(jìn)行創(chuàng)建锐墙;
???? DML:數(shù)據(jù)操縱語言,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查等操作长酗;
???? DCL:數(shù)據(jù)控制語言溪北,定義數(shù)據(jù)庫(kù)相應(yīng)對(duì)象的訪問權(quán)限和安全級(jí)別。
2.數(shù)據(jù)庫(kù)相關(guān)
語句語義
數(shù)據(jù)庫(kù)操作:
Create database創(chuàng)建數(shù)據(jù)庫(kù)
Show create database查看數(shù)據(jù)庫(kù)
Show database查看所有數(shù)據(jù)庫(kù)
Create database db character set ‘’創(chuàng)建指定字符集
Drop database刪除數(shù)據(jù)庫(kù)
Use使用數(shù)據(jù)庫(kù)
表相關(guān):
create table t1(id,name)創(chuàng)建表
show create table t1查看單個(gè)表屬性
show tables查看所有表
create table t1(id,name) engine=‘’ charset=
‘’創(chuàng)建表指定引擎和字符集
修改表:
rename table t1 to t2修改表名
alter table t1 engine= ‘’ charset= ‘’修改表屬性
alter table t1 add age int first/after xx添加表字段
alter table t1 drop age刪除表字段
alter table t1 change age newAge int修改表字段名和類型
alter table t1 modify age int first/after
xx修改表類型和位置
drop table t1刪除表
數(shù)據(jù)相關(guān):
insert into t1 values()增
insert into t1’’ values()
insert into t1 values(),()
insert into t1() values(),()
delete from t1 where id=10刪
update stu set mid=x where age=y and name=
"";改
select * from t1 where id查
select name from t1
select * from t1
服務(wù)器相關(guān):
Service mysqld start啟動(dòng)MySQL服務(wù)器
Mysql -u ‘’/root -p連接服務(wù)器
\h顯示幫助內(nèi)容
\c清除命令行
?二:數(shù)據(jù)庫(kù)五大范式范式
1.數(shù)據(jù)庫(kù)范式
設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)為了使數(shù)據(jù)庫(kù)為合理的關(guān)系型數(shù)據(jù)庫(kù)夺脾,需要遵從不同的規(guī)范要求之拨,這些不同的規(guī)范要求被稱為范式,滿足規(guī)范祭祀說屬于對(duì)應(yīng)范式咧叭,范式越高數(shù)據(jù)庫(kù)冗雜越小蚀乔。
2.第一范式(1NF)
原子型,每一列的字段不可分割菲茬。每一列都是不可分割的基本數(shù)據(jù)項(xiàng)吉挣,同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者重復(fù)的屬性婉弹。消除非主鍵屬性對(duì)鍵的部分函數(shù)依賴睬魂。
3.第二范式(2NF)
主鍵,第二范式在滿足第一范式的前提下建立起來的镀赌,即每個(gè)表中都要有一個(gè)主鍵氯哮,這個(gè)主鍵關(guān)鍵字段與其它非主鍵字段緊密相連,可以說依賴這個(gè)主鍵商佛。非主屬性非部分依賴于主關(guān)鍵字喉钢。消除非主屬性對(duì)鍵的傳遞函數(shù)依賴姆打。
4.第三范式(3NF)
外鍵,要求非主鍵列互不依賴出牧,一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其他表中已包含的非主關(guān)鍵字信息穴肘,如果需要只需把另一張表的關(guān)鍵字作為外鍵保存在需要的表中。消除主屬性對(duì)鍵的部分和傳遞函數(shù)依賴舔痕。
5.第四范式(BCNF)
禁止主鍵列和非主鍵列一對(duì)多關(guān)系不受約束评抚。消除非平凡且非依賴的多值依賴。
6.第五范式(4NF)
將表分割成盡可能小的塊伯复,為了排除在表中所有的冗余慨代。
三:JDBC的執(zhí)行步驟
1.JDBC概念
JAVA數(shù)據(jù)庫(kù)連接,是JAVA語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫(kù)的運(yùn)用接口啸如,提供諸如查詢和更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法侍匙。
2.執(zhí)行步驟
加載驅(qū)動(dòng)Class.forName(“com.mysql.jdbc.Driver”)不會(huì)產(chǎn)生依賴
System.setProperty(“jdbc.drivers”,“driver1:driver2”);?注冊(cè)不太方便
DriverManager.registerDriver(com.mysql.jdbc.Driver);產(chǎn)生依賴
建立連接Connectionconn? =DriverManager.getConnection(url,user,password);
URL:子協(xié)議:子名稱//主機(jī)名:port/數(shù)據(jù)庫(kù)名?屬性名=屬性值&
User:登錄數(shù)據(jù)庫(kù)的username;password:登錄數(shù)據(jù)庫(kù)的密碼叮雳,為空就填“”
創(chuàng)建運(yùn)行對(duì)象Statementst = connection.createStatement();
子類PreparedStatement能夠?qū)QL語句進(jìn)行預(yù)編譯防止SQL注入
孫子類CallableStatement主要用于運(yùn)行SQL存儲(chǔ)過程
運(yùn)行SQL語句ResultSet?
rs =st.executeQuery(sql);用于運(yùn)行實(shí)現(xiàn)查詢功能的語句想暗,返回結(jié)果集
int flag = st.executeUpdate(sql);用于運(yùn)行實(shí)現(xiàn)增刪改查功能的語句,返回整型
處理運(yùn)行結(jié)果ResultSet通過游標(biāo)操作帘不,游標(biāo)是一個(gè)可控制的说莫、能夠指向隨意一條記錄的指針。
釋放資源Close();數(shù)據(jù)庫(kù)資源不關(guān)閉寞焙,其占用的內(nèi)存不會(huì)被釋放储狭,徒耗資源,影響系統(tǒng)
?四:什么是事務(wù)
1.事務(wù)概念
事務(wù)是訪問數(shù)據(jù)庫(kù)的一個(gè)操作序列捣郊,數(shù)據(jù)庫(kù)運(yùn)用系統(tǒng)通過事務(wù)集來完成對(duì)數(shù)據(jù)庫(kù)的存取辽狈,使得數(shù)據(jù)庫(kù)從一種狀態(tài)轉(zhuǎn)換為另一種狀態(tài)。
2.事務(wù)特點(diǎn)
必須事務(wù)必須服從ISO/IEC所制定的ACID原則呛牲。即原子性刮萌、一致性、隔離性和持久性娘扩。
五:事務(wù)的四個(gè)特性
1.原子性
不可分割性尊勿,事務(wù)要么全部被執(zhí)行,要么就全部不被執(zhí)行畜侦。如果事務(wù)的所有子事務(wù)全部提交成功元扔,則所有的數(shù)據(jù)庫(kù)操作被提交,數(shù)據(jù)庫(kù)狀態(tài)發(fā)生轉(zhuǎn)換旋膳;如果有子事務(wù)失敗澎语,則其他子事務(wù)的數(shù)據(jù)庫(kù)操作被回滾,即數(shù)據(jù)庫(kù)回到事務(wù)執(zhí)行前的狀態(tài),不會(huì)發(fā)生狀態(tài)轉(zhuǎn)換擅羞。
2.一致性
事務(wù)的執(zhí)行使得數(shù)據(jù)庫(kù)從一種正確狀態(tài)轉(zhuǎn)換成另一種正確狀態(tài)尸变。
3.隔離性
在事務(wù)正確提交之前,不允許把該事務(wù)對(duì)數(shù)據(jù)的任何改變提供給任何其他事務(wù)减俏,即在事務(wù)正確提交之前召烂,它可能的結(jié)果不應(yīng)顯示給任何其他事務(wù)。
4.持久性
事務(wù)正確提交后娃承,其結(jié)果將永久保存在數(shù)據(jù)庫(kù)中奏夫,即使在事務(wù)提交后有了其他故障,事務(wù)的處理結(jié)果也會(huì)得到保存历筝。
六:事務(wù)的隔離級(jí)別
1.并發(fā)事務(wù)存在的問題
臟讀:指事務(wù)A讀到了事務(wù)B還沒有提交的數(shù)據(jù)酗昼;
幻讀:在一個(gè)事務(wù)操作里面發(fā)現(xiàn)了未被操作的數(shù)據(jù);
不可重復(fù)讀:一個(gè)事務(wù)里面讀取兩次某個(gè)數(shù)據(jù)梳猪,但結(jié)果數(shù)據(jù)不一樣麻削;
2.隔離的基本概率
隔離已解決并發(fā)存在的問題,事務(wù)隔離級(jí)別越高春弥,在并發(fā)下會(huì)產(chǎn)生的問題就越少呛哟。因?yàn)橥ㄟ^消耗性能解決問題,所以設(shè)立事務(wù)隔離級(jí)別匿沛,以便不同的項(xiàng)目根據(jù)各自情況選擇合適的事務(wù)隔離級(jí)別扫责。
3.隔離等級(jí)
DEFAULT默認(rèn)隔離級(jí)別
READ_UNCOMMITTED無法解決臟讀、不可重復(fù)讀俺祠、幻讀中的任何一種
READ_COMMITED防止臟讀,但是無法限制不可重復(fù)讀和幻讀
REPEATABLE_READ解決了臟讀借帘、不可重復(fù)讀的問題蜘渣,但是幻讀的問題還是無法解決
SERLALIZABLE解決了臟讀、不可重復(fù)讀和幻讀問題
七:索引的類別和每種索引的創(chuàng)建方式
1.索引類別
??????? 單列索引:主鍵索引肺然、唯索引蔫缸、普通索引;
組合索引:包含兩個(gè)或兩個(gè)以上的索引
2.索引的創(chuàng)建方式
主鍵索引不允許有空值
唯索引CREATEUNIQUE INDEX account_UNIQUE_Index ON? `award`(`account`);
普通索引CREATEINDEX account_Index ON `award`(`account`);
ALTER TABLE award ADD INDEXaccount_Index(`account`)
組合索引CREATEINDEX nickname_account_createdTime_Index ON? `award`(`nickname`,`account`, `created_time`);
?八:聚簇索引和非聚簇索引的區(qū)別
1.聚簇索引
表數(shù)據(jù)按照索引的順序來存儲(chǔ)的际起,索引項(xiàng)的順序與表中記錄的物理順序一致拾碌。其葉子結(jié)點(diǎn)即存儲(chǔ)了真實(shí)的數(shù)據(jù)行,不再有另外單獨(dú)的數(shù)據(jù)頁(yè)街望。?在一張表上最多只能創(chuàng)建一個(gè)聚集索引校翔,因?yàn)檎鎸?shí)數(shù)據(jù)的物理順序只能有一種。
2.非聚簇索引
表數(shù)據(jù)存儲(chǔ)順序與索引順序無關(guān)灾前。其葉結(jié)點(diǎn)包含索引字段值及指向數(shù)據(jù)頁(yè)數(shù)據(jù)行的邏輯指針防症,其行數(shù)量與數(shù)據(jù)表行數(shù)據(jù)量一致。
3.其它
聚簇索引為稀疏索引,數(shù)據(jù)頁(yè)上一級(jí)的索引頁(yè)存儲(chǔ)的是頁(yè)指針蔫敲,而不是行指針饲嗽;
非聚簇索引則是密集索引,在數(shù)據(jù)頁(yè)的上一級(jí)索引頁(yè)它為每一個(gè)數(shù)據(jù)行存儲(chǔ)一條索引記錄奈嘿。
九:B和B+樹的區(qū)別
1.B樹
每個(gè)節(jié)點(diǎn)最多包含m個(gè)孩子貌虾,m稱為b樹的階,m的大小取決于磁盤頁(yè)的大小裙犹。關(guān)鍵字集合分布子啊整棵樹中尽狠;任何一個(gè)關(guān)鍵字出現(xiàn)且只出現(xiàn)在一個(gè)結(jié)點(diǎn)中;搜索有可能在非葉子結(jié)點(diǎn)結(jié)束伯诬;其搜索性能等價(jià)于在關(guān)鍵字全集內(nèi)做一次二分查找晚唇;
2.B+樹
有n棵子樹的非葉子結(jié)點(diǎn)中含有n個(gè)關(guān)鍵字(b樹是n-1個(gè)),關(guān)鍵字不保存數(shù)據(jù)盗似,只用來索引哩陕,所有數(shù)據(jù)都保存在葉子節(jié)點(diǎn)(b樹是每個(gè)關(guān)鍵字都保存數(shù)據(jù));
葉子結(jié)點(diǎn)中包含了全部關(guān)鍵字的信息赫舒,及指向含這些關(guān)鍵字記錄的指針悍及,且葉子結(jié)點(diǎn)本身依關(guān)鍵字的大小自小而大順序鏈接。
所有的非葉子結(jié)點(diǎn)可以看成是索引部分接癌,結(jié)點(diǎn)中僅含其子樹中的最大(或最行母稀)關(guān)鍵字;
通常在b+樹上有兩個(gè)頭指針缺猛,一個(gè)指向根結(jié)點(diǎn)缨叫,一個(gè)指向關(guān)鍵字最小的葉子結(jié)點(diǎn);
同一個(gè)數(shù)字會(huì)在不同節(jié)點(diǎn)中重復(fù)出現(xiàn)荔燎,根節(jié)點(diǎn)的最大元素就是b+樹的最大元素耻姥;
章節(jié)六
一:HTML基礎(chǔ)知識(shí)
1.HTML簡(jiǎn)介
HTML為一種標(biāo)記語言而非編程語言,而標(biāo)記語言是一套標(biāo)記標(biāo)簽有咨,HTML用標(biāo)簽來描述網(wǎng)頁(yè)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語言琐簇,HTML文檔中包含了HTML標(biāo)簽以及文本內(nèi)容由瀏覽器解析,所以同時(shí)HTML文檔又叫做web頁(yè)面座享;
2.HTML標(biāo)記構(gòu)成
HTML元素:
?主要指標(biāo)題婉商、段落、鏈接渣叛、圖像等構(gòu)成整個(gè)HTML文檔的框架丈秩;元素之間可以嵌套;
HTML屬性:
HTML屬性定義HTML元素的對(duì)應(yīng)特征例如顏色淳衙、大小癣籽,布局等屬性挽唉;
二:HTML超鏈接有哪些
內(nèi)部鏈接;外部鏈接筷狼;空鏈接瓶籽;描點(diǎn)鏈接;
三:HTML創(chuàng)建表格
表格由標(biāo)簽table定義埂材,標(biāo)簽tr創(chuàng)建行塑顺,td創(chuàng)建單元格。
四:HTML中From表單
1.簡(jiǎn)介
由標(biāo)簽form定義俏险,用于創(chuàng)建供用戶輸入的HTML表單严拒,一個(gè)form元素可以包含一個(gè)或多個(gè)表單元素;
2.表單元素
Input、tetarea、button兼蕊、select摩钙、option蕴侧、optgroup、fieldset、label;
五:SCC(層疊樣式)
1.簡(jiǎn)介
層疊樣式表航瞭,一種用來表現(xiàn)HTML或XML等文件樣式,可以靜態(tài)地修飾網(wǎng)頁(yè)坦辟,可以配合各種腳本語言動(dòng)態(tài)地對(duì)網(wǎng)頁(yè)各元素進(jìn)行格式化刊侯。
2.層疊概念
對(duì)一個(gè)元素多次設(shè)置同一個(gè)樣式,將使用最后一次設(shè)置的屬性值锉走,后來的樣式將對(duì)前面的樣式設(shè)置進(jìn)行重寫滨彻,在瀏覽器當(dāng)中看到的將是最后設(shè)置的樣式效果。
六:CSS復(fù)合選擇器
1.后代選擇器
后代選擇器又稱為包含選擇器挪蹭,用來選擇元素或元素組的后代亭饵,其寫法是把外層標(biāo)簽寫在前面,內(nèi)層標(biāo)簽寫在后面嚣潜,中間用空格分割冬骚。當(dāng)標(biāo)簽發(fā)生嵌套時(shí)椅贱,內(nèi)層標(biāo)簽就成為外層標(biāo)簽的后代懂算。
2.子元素選擇器
子元素選擇器只能選擇作為某元素子元素的元素。其寫法就是把父級(jí)標(biāo)簽寫在前面庇麦,子級(jí)標(biāo)簽寫在后面计技,中間跟一個(gè)空格進(jìn)行連接,且符號(hào)左右兩側(cè)各保留一個(gè)空格山橄。
3.屬性選擇器
選擇標(biāo)簽帶有某些特殊屬性的選擇器垮媒。
4.偽元素選擇器
用于向某些選擇器添加特殊效果,比如給鏈接添加效果,比如選擇指定下標(biāo)的元素睡雇,需要注意的是偽元素選擇器有鏈接偽類萌衬,結(jié)構(gòu)偽類。
5.交集選擇器
有兩個(gè)選擇器構(gòu)成它抱,找到的標(biāo)簽需要滿足兩個(gè)選擇器秕豫。
6.并集選擇器
若某些選擇器定義的樣式完全相同,或部分相同观蓄,就可以利用并集選擇器為他們定義相同的CSS樣式混移。
七:SCC文字效果
枚舉:
文本陰影;模糊效果侮穿;卡片效果歌径;
八:用CSS設(shè)置圖像效果
設(shè)置圖片邊框
設(shè)置圖片大小及收縮
圖文混排;
設(shè)置圖片與文字的對(duì)齊方式
? 注:相關(guān)操作博客地址如下
九:用CSS設(shè)置背景顏色和背景圖像
1.設(shè)置背景顏色
Background-color:顏色;
2.設(shè)置背景圖像
Background-image:url(地址)
3.設(shè)置背景圖像平鋪
Background-repeat:平鋪方式
4.設(shè)置背景圖像位置
Background-position:位置
5.設(shè)置背景圖片位置固定
Attachment:fixed
十:盒模型
1.簡(jiǎn)介
所有HTML元素都可以看作是盒子,CSS盒模型本質(zhì)上是一個(gè)盒子亲茅,封裝周圍的HTML元素回铛,它包括:邊距,邊框芯急,填充勺届,和實(shí)際內(nèi)容。盒模型允許我們?cè)谄渌睾椭車剡吙蛑g的空間放置元素娶耍。
十一:用CSS設(shè)置樣式
1.直接設(shè)置style的屬性
某些情況用這個(gè)設(shè)置!important值無效免姿,如果屬性有'-'號(hào),就寫成駝峰的形式(如textAlign) ?如果想保留 - 號(hào)榕酒,就中括號(hào)的形式
element.style['text-align']= '100px';
element.style.height= '100px';
2.直接設(shè)置屬性(只能用于某些屬性胚膊,相關(guān)樣式會(huì)自動(dòng)識(shí)別)
element.setAttribute('height',100);
element.setAttribute('height','100px');
3.設(shè)置style的屬性
element.setAttribute('style','height: 100px!important');
4.使用setProperty
element.style.setProperty('height','300px','important');
5.改變class
因JS獲取不到css的偽元素,所以可以通過改變偽元素父級(jí)的class來動(dòng)態(tài)更改偽元素的樣式
element.className= 'blue';
element.className+= 'blue fb';
6.設(shè)置cssText
element.style.cssText= 'height: 100px!important';
element.style.cssText+= 'height: 100px!important';
十二:JavaScript簡(jiǎn)介
1.簡(jiǎn)介
JavaScript用于HTML想鹰、web紊婉,更廣泛用于服務(wù)器、PC辑舷、筆記本喻犁、平板電腦和智能手機(jī)等設(shè)備;是一種輕量級(jí)的編程語言何缓;是可插入到HTML頁(yè)面的編程代碼肢础;JavaScript插入到HTML頁(yè)面后可由所有的現(xiàn)代瀏覽器執(zhí)行;
會(huì)隨網(wǎng)頁(yè)中一些控件的調(diào)用觸發(fā)碌廓。
2.功能
增強(qiáng)用戶和HTML頁(yè)面的交互過程传轰,可以控制HTML元素,讓頁(yè)面有一些動(dòng)態(tài)的效果谷婆,增強(qiáng)用戶體驗(yàn)慨蛙。
十三:基本語法
1.數(shù)據(jù)類型
A.原始數(shù)據(jù)類型:
Number:整數(shù)辽聊、小數(shù);
String:字符串期贫,如 “abc”跟匆;
Boolean:true和false;
Null:空通砍,一個(gè)對(duì)象為空的占位符贾铝;
Undefined:未定義的類型,在未被初始化時(shí)默認(rèn)的類型埠帕;
B.引用數(shù)據(jù)類型:
對(duì)象垢揩。
2.變量
一小塊儲(chǔ)存數(shù)據(jù)的內(nèi)存空間,但也分兩種敛瓷,
一種定義了空間將來儲(chǔ)存的數(shù)據(jù)數(shù)據(jù)類型且只能儲(chǔ)存固定類型數(shù)據(jù)的強(qiáng)類型叁巨;
一種是不定義空間將來的儲(chǔ)存數(shù)據(jù)類型,可以存放任意類型的弱類型呐籽。
3.內(nèi)部JS
定義<script>,標(biāo)簽體內(nèi)容就是js代碼锋勺。
4.外部JS
定義<script>,通過src屬性引入外部的js文件。
十四:JavaScript數(shù)組
1.概念
數(shù)組是一種特殊的變量狡蝶,能夠一次存放一個(gè)以上的值庶橱,并且可以通過引用索引號(hào)來訪問這些值。JavaScript變量可以是對(duì)象贪惹,數(shù)組是特殊類型的對(duì)象苏章,所以相同數(shù)組中可以存放不同的類型的變量,可以保存對(duì)象奏瞬、函數(shù)甚至嵌套一個(gè)數(shù)組枫绅。
2.操作
操作實(shí)現(xiàn)
創(chuàng)建數(shù)組Var 數(shù)組名=[*,*,*];
Var 數(shù)組名= new Array(*,*,*);
訪問數(shù)組元素Var
name = 數(shù)組[小標(biāo)];
修改元素值Cars[下標(biāo)] = ‘’
獲取數(shù)組元素?cái)?shù)目.length;
添加元素.push(“元素”);
?十五:JavaScript對(duì)象
1.概念
對(duì)象也是變量硼端,但是對(duì)象包含很多值并淋,是被命名值的容器;對(duì)象存在方法珍昨,方法是在對(duì)象上執(zhí)行的動(dòng)作县耽,方法以函數(shù)定義的形式被儲(chǔ)存在屬性里面×偷洌總的來說對(duì)象擁有能夠被訪問的屬性兔毙、方法。
十六:JavaScript對(duì)象函數(shù)
1.概念
函數(shù)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊骆撇;JavaScript中的所有事物都是對(duì)象瞒御,函數(shù)也是如此父叙,且函數(shù)在JS中會(huì)大量運(yùn)用
十七:JavaScript中DOM(document)節(jié)點(diǎn)
1.概念
在HTML中一切都是節(jié)點(diǎn)神郊,所有節(jié)點(diǎn)都是object肴裙,而整個(gè)HTML文檔就是一個(gè)文檔節(jié)點(diǎn)。
DOM為文檔對(duì)象模型涌乳,為文檔提供了結(jié)構(gòu)化表示蜻懦,并定義了如何通過腳本來訪問結(jié)構(gòu),目的其實(shí)就是為了能讓js操作html元素而制定的一個(gè)規(guī)范夕晓;DOM就是由節(jié)點(diǎn)組成宛乃。
HTML加載完畢后,渲染系統(tǒng)會(huì)在內(nèi)存中把HTML文檔生成一個(gè)DOM樹蒸辆,getElementByld獲取內(nèi)存中DOM上的元素節(jié)點(diǎn)征炼,然后操作的時(shí)候修改的是該元素的屬性。
2.操作
操作實(shí)現(xiàn)
創(chuàng)建節(jié)點(diǎn)var?node=document.createTextNode("");
var node = document.createElement(“”);
插入節(jié)點(diǎn)父節(jié)點(diǎn).appendChild(子節(jié)點(diǎn));
父節(jié)點(diǎn).insertBefore(子節(jié)點(diǎn));
刪除節(jié)點(diǎn)父節(jié)點(diǎn).removeChild(子節(jié)點(diǎn));
nodel.parentNode.removeChild(node1);
復(fù)制節(jié)點(diǎn)cloneNode(復(fù)制對(duì)象)
.cloneNode(true);
node.屬性= “”;
node.setAttribute(屬性名躬贡,屬性);
刪除節(jié)點(diǎn)屬性node.removeAttribute(屬性名);
十八:HTML
CSS JavaScript三者的聯(lián)系
1.HTML
???? 決定網(wǎng)絡(luò)的結(jié)構(gòu)和內(nèi)容谆奥;
2.CSS
???? 設(shè)計(jì)網(wǎng)頁(yè)的表現(xiàn)形式,設(shè)計(jì)樣式拂玻;
3.JavaScript
???? 控制網(wǎng)頁(yè)的行為酸些、事件;
章節(jié)七
一檐蚜、Maven項(xiàng)目
1.Maven簡(jiǎn)介
強(qiáng)大的構(gòu)建工具魄懂,可以自動(dòng)化構(gòu)建過程:從清理、編譯闯第、測(cè)試到生成報(bào)告市栗、打包部署;
項(xiàng)目管理工具咳短,能運(yùn)行報(bào)告肃廓、生成站點(diǎn)、標(biāo)準(zhǔn)化以便項(xiàng)目成員之間交流诲泌,知識(shí)積累盲赊;
一個(gè)項(xiàng)目對(duì)象模型、一組標(biāo)準(zhǔn)集合敷扫、一個(gè)項(xiàng)目生命周期哀蘑、一個(gè)依賴管理系統(tǒng)、一個(gè)運(yùn)行項(xiàng)目生命周期階段中插件目標(biāo)邏輯的軟件葵第;
當(dāng)使用Maven的時(shí)候绘迁,項(xiàng)目會(huì)被一個(gè)明確定義了的項(xiàng)目對(duì)象模型描述。
總的來說Maven項(xiàng)目是借助Maven搭建的項(xiàng)目卒密,在搭建過程中一些繁瑣的工作由插件Maven完成缀台。
二、Tomcat
1.簡(jiǎn)介
免費(fèi)開源的輕量級(jí)Web運(yùn)用服務(wù)器哮奇,很好的體現(xiàn)了Servlet膛腐、JSP規(guī)范睛约。
三、Servlet
1.簡(jiǎn)介
運(yùn)行在Web服務(wù)器上的程序哲身,作為來自Web瀏覽器或者其它HTTP客戶端的請(qǐng)求和HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或者運(yùn)用程序之間的中間層辩涝;
使用Servlet可以收集來自網(wǎng)頁(yè)表單的用戶的輸入,呈現(xiàn)來自數(shù)據(jù)庫(kù)或者其他源的記錄勘天,還可以動(dòng)態(tài)創(chuàng)建網(wǎng)頁(yè)怔揩。
2.Servlet任務(wù)
讀取顯示數(shù)據(jù):客戶端發(fā)送的網(wǎng)頁(yè)HTML表單、applet/自定義的HTTP客戶端程序表單脯丝;
讀取隱式的 HTTP請(qǐng)求數(shù)據(jù):包括客戶端(瀏覽器)發(fā)送的 cookies商膊、媒體類型和瀏覽器能理解的壓縮格式等;
處理數(shù)據(jù)并生成結(jié)果:這個(gè)過程可能需要訪問數(shù)據(jù)庫(kù)宠进,執(zhí)行 RMI 或 CORBA 調(diào)用翘狱,調(diào)用Web 服務(wù),或者直接計(jì)算得出對(duì)應(yīng)的響應(yīng)砰苍;
發(fā)送顯式的數(shù)據(jù):發(fā)送文檔到客戶端(瀏覽器)潦匈。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)赚导、二進(jìn)制文件(GIF 圖像)茬缩、Excel等;
發(fā)送隱式的 HTTP響應(yīng):包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML)吼旧,設(shè)置 cookies 和緩存參數(shù)凰锡,以及其他類似的任務(wù)。
四圈暗、Servlet生命周期
1.簡(jiǎn)介
Servlet生命周期可被定義為從創(chuàng)建直到毀滅的整個(gè)過程掂为。
2.過程
Init()初始化、service()處理請(qǐng)求员串、destroy()終止勇哗、JVM的垃圾回收器回收
五、Request和Response
1.Request
??????? 獲取瀏覽器發(fā)過來的參數(shù)寸齐,請(qǐng)求方式:
2.Response
??????? 用于向?yàn)g覽器寫東西欲诺,格式:
3.小結(jié)
Web服務(wù)器收到客戶端的Http請(qǐng)求,會(huì)針對(duì)每一次請(qǐng)求渺鹦,分別建立一個(gè)用于代表請(qǐng)求的request對(duì)象和代表響應(yīng)的response對(duì)象:當(dāng)需要獲取客戶機(jī)提交的數(shù)據(jù)時(shí)找request對(duì)象扰法;當(dāng)需要向客戶機(jī)輸出數(shù)據(jù)時(shí)找response對(duì)象。
六毅厚、Cookie和Session
1.Cookie
會(huì)話跟蹤機(jī)制塞颁,記錄一個(gè)用戶的所有請(qǐng)求操作;服務(wù)器端通過發(fā)送response控制客戶端瀏覽器跟蹤用戶的會(huì)話。
2.Session
服務(wù)器端使用的一種記錄客戶端狀態(tài)的機(jī)制祠锣,比Cookie簡(jiǎn)單酷窥,只是增加了服務(wù)器的存儲(chǔ)壓力;
七锤岸、Filter和Listener
ⅰ.Filter
1.過濾器-Filter
可以插入的Web組件,能夠?qū)ervlet容器的接收到的客戶端請(qǐng)求和向客戶端發(fā)出的響應(yīng)對(duì)象進(jìn)行截獲板乙,但自身不產(chǎn)生請(qǐng)求和響應(yīng)是偷,只提供過濾功能。過濾器支持對(duì)Servlet程序和JSP頁(yè)面的基本請(qǐng)求處理功能募逞,如日志蛋铆、性能、安全放接、會(huì)話刺啦、處理、XSLT轉(zhuǎn)換纠脾。
2.Filter的作用
??????? 查詢請(qǐng)求并做出響應(yīng)的行動(dòng)玛瘸;
??????? 阻塞請(qǐng)求對(duì)-響應(yīng)對(duì),使其不能進(jìn)一步傳遞苟蹈;
??????? 修改請(qǐng)求頭和內(nèi)容糊渊,用戶可以提供自定義的請(qǐng)求;
修改響應(yīng)頭和內(nèi)容慧脱,用戶可以通過提供定制的響應(yīng)版本實(shí)現(xiàn)渺绒;
與外部資源進(jìn)行交互;
3.創(chuàng)建Filter步驟
??????? 創(chuàng)建一個(gè)實(shí)現(xiàn)了javax.servlet.Filter的類菱鸥;
??????? 重寫init()方法宗兼,讀入初始化參數(shù),申請(qǐng)所需資源氮采;
??????? 重寫doFilter()完成過濾操作殷绍;
??????? 使用FilterChain參數(shù)的doFilter()方法后傳請(qǐng)求;
對(duì)響應(yīng)的servlet程序注冊(cè)過濾器鹊漠,在部署文件中對(duì)過濾器進(jìn)行配置篡帕。
ⅱ.Listener
1.監(jiān)聽器-Listener
監(jiān)聽Web運(yùn)用的上下文環(huán)境信息、Servlet請(qǐng)求信息贸呢、Servlet會(huì)話信息镰烧、并自動(dòng)根據(jù)不同的情況,在后臺(tái)調(diào)用相應(yīng)的處理程序楞陷。
八怔鳖、HTTP協(xié)議
1.超文本傳輸協(xié)議
??????? 基于面向連接的C/S模式,主要包括但不限于:
??????? 客戶與服務(wù)器建立連接固蛾;
??????? 客戶向服務(wù)器提出請(qǐng)求结执;
服務(wù)器接收請(qǐng)求度陆,并根據(jù)請(qǐng)求返回相應(yīng)的文件作為應(yīng)答;
客戶與服務(wù)器關(guān)閉連接献幔;
2.HTTP報(bào)文格式
九懂傀、POSTMAN的使用
1.Get請(qǐng)求
? 2.Post請(qǐng)求
??????? 提交表單、json蜡感、xml蹬蚁、二進(jìn)制文件。
3.Collections
??????? 將多個(gè)接口請(qǐng)求放在一起郑兴,集中管理犀斋。
十、JSON
1.簡(jiǎn)介
一種輕量級(jí)的數(shù)據(jù)交換格式情连,獨(dú)立于編程語言叽粹、語法,易于閱讀和編寫却舀,同時(shí)易于機(jī)器解析和生成虫几,本質(zhì)是一個(gè)字符串。
哈哈哈哈挽拔,還挺有成就感持钉,哈哈哈哈哈