JAVA複習重點知識

1.sql順序
順序4:SELECT *(all),列名,運算符,distinct(除去重複記錄)
順序1:FROM 表名,視圖,別名
順序2:WHERE 條件表達式
順序3:GROP BY 列名 having 條件表達式
順序5:ORDER BY 列名 asc(默認升序)desc(降序)
2.位運算符號
按位與運算符(&)
參加運算的兩個數,按二進制位進行“與”運算。
運算規則:只有兩個數的二進制同時爲1,結果才爲1,否則爲0。(負數按補碼形式參加按位與運算)
即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。

按位或運算符(|)
參加運算的兩個數,按二進制位進行“或”運算。
運算規則:參加運算的兩個數只要兩個數中的一個爲1,結果就爲1。
即 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1 。
例:2 | 4 即 00000010 | 00000100 = 00000110 ,所以2 | 4的值爲 6 。

異或運算符(^)
參加運算的兩個數,按二進制位進行“異或”運算。
運算規則:參加運算的兩個數,如果兩個相應位爲“異”(值不同),則該位結果爲1,否則爲0。
即 0 ^ 0=0 , 0 ^ 1= 1 , 1 ^ 0= 1 , 1 ^ 1= 0 。
例: 2 ^ 4 即 00000010 ^ 00000100 =00000110 ,所以 2 ^ 4 的值爲6

總結:
& 按位與 如果兩個相應的二進制位都爲1,則該位的結果值爲1,否則爲0
| 按位或 兩個相應的二進制位中只要有一個爲1,該位的結果值爲1
^ 按位異或 若參加運算的兩個二進制位值相同則爲0,否則爲1
~ 取反 ~是一元運算符,用來對一個二進制數按位取反,即將0變1,將1變0
<< 左移 用來將一個數的各二進制位全部左移N位,右補0
>> 右移 將一個數的各二進制位右移N位,移到右端的低位被捨棄,對於無符號數,高位補0


3.數組常用方法:
數組填充:
Arrays.fill(數組名,值)
Arrays.fill(數組名,開始下標,結束下標,值)
數組複製:
Arraycopy(數組a,開始複製下標,複製到數組b,開始複製下標,複製長度)
數組比較:
Arrays.equals(數組1,數組2)
數組排序:
Arrays.sort(數組)或者Arrays.sort(數組開始下標,數組結束下標)
數組中搜索指定元素
binarySearch(數組,指定元素)
binarySearch(數組,開始位置,結束位置,指定元素)
數組轉化爲字符串:
toString(數組類型,數組名)

4.字符串常用方法:
https://blog.csdn.net/xupt_rl/article/details/89474033
split()分割字符串返回字符串數組
trim()去除左右兩端空格

5.Cookie規範:
Cookie大小上限4KB
一個服務器最多在客戶端瀏覽器上保存20個Cookie
一個瀏覽器最多保存300個CookieCookie是通過HTTP
請求和響應頭在客戶端和服務器端傳遞的

6.JSP入門
6.1:java Server Pages是javaweb服務器端的動態資源,他與HTML
頁面的作用是相同的,顯示數據 和獲取數據
6.2:JSP=html+Java腳本(代碼片段)+JSP動態標籤
6.3:JSP腳本就是java片段
分爲3種:
<%...%>:java語句
<%=...%>:java表達式// 與out.print()功能相同,向客戶端輸出
<%!...%>:java定義類成員
6.4原理:
是特殊的Servlet,當jsp頁面首次被訪問時,容器Tomcat會先把
jsp編譯成Servlet,然後再去執行Servlet

7.Cookie概述
Cookie在HTTP中他表示服務器送給客戶端瀏覽器的Cookie,就是
一個鍵和一個值構成的,隨着服務器端的響應送給客戶端瀏覽器,
然後客戶端瀏覽器會把Cookie保存起來,當下一次再訪問的時候
把Cookie再發送給服務器

Cookie是由服務器創建,然後通過響應發送給客戶端的一個鍵值對,
客戶端會保存Cookie,並會標註出Cookie的來源(哪個服務器的Cookie)
當客戶端向服務器發送請求時會把所有這個服務器Cookie包含在請求中
發送給服務器,這樣服務器就可以識別客戶端了。

8.進程和線程
8.1:進程包括線程,程序執行狀態叫進程,線程可以共享資源,一旦出現
共享資源,必須注意線程安全
8.2:分類:
守護線程:典型就是垃圾回收GC
用戶線程:當JVM中都是守護線程,當前JVM將退出
8.3線程繼承的兩種方式:
1.繼承Thread類,重寫其中run方法,
完成了兩步:啓動子線程,調用子線程的run方法
2.實現了Runnable接口,實現其中的run方法,但是源碼沒有start方法
需要自己手動寫Thread 線程名=new Thread(new出來的類名),然
後再調用這個線程的start方法才能啓動線程
3.線程安全:
資源共享的操作會出現線程安全問題,比如售票問題
解決方法:讓同一時刻共享數據操作的線程減少爲有且只有一個
3.1同步代碼塊
synchronized(同步監視器,即鎖){需要被同步的代碼}
3.2同步方法
只有實現方式的線程可以用,繼承方式的線程不可以用
4.死鎖問題
產生:不同線程分別佔用對方需要的同步的資源,都在等待雙方
放棄同步資源

9.線程通信
5.1:wait()掛起當前線程並放棄CPU資源,使其他線程可以訪問共享資源
而當前線程重新排隊等待資源訪問的機會
5.2:notify()喚醒正在排隊中優先級最高的線程,結束等待
5.3:notifyall()喚醒所有正在排隊的線程,通常可用在共享資源操作

10.單例模式
1.主要有兩種:懶漢式單例,餓漢式單例
2.單例模式有以下特點:
2.1:單例類只能有一個實例
2.2:單例類必須自己創建自己的唯一的實例
2.3:單例類必須給所有其它對象提供這一實例

例子:
懶漢式//在第一次調用的時候纔會實例化自己
public class Singleton{
private Singleton(){}
private static Singleton single=null;
//靜態工廠方法
public static Singleton getInstance(){
if(single==null){
single=new Singleton();
}
return Single;
}}


11.框架各個包或者類含義
dao:數據訪問層,操作數據庫,實現增刪改查
jdbc:客戶端如何訪問數據庫的應用程序接口
pojo:數據對象(實體)
service:業務邏輯,事務管理
dao層:dao層叫數據訪問層,全稱爲data access object,屬於一種比較底層,比較基礎的操作,具體到對於某個表、某個實體的增刪改查
service層:service層叫服務層,被稱爲服務,肯定是相比之下比較高層次的一層結構,相當於將幾種操作封裝起來。
至於爲什麼service層要使用接口來定義有以下幾點好處:
在java中接口是多繼承的,而類是單繼承的,如果你需要一個類實現多個service,你用接口可以實現,用類定義service就沒那麼靈活
要提供不同的數據庫的服務時,我們只需要面對接口用不同的類實現即可,而不用重複地定義類
編程規範問題,接口化的編程爲的就是將實現封裝起來,然調用者只關心接口不關心實現,也就是“高內聚,低耦合”的思想。
Servlet:控制層,接收請求和向客戶端響應的中間層,servlet是一種服務器端的java應 用程序
他往往用來處理請求的。他的外一層就是View、他的一層就是Service(Servlet往往調用他做邏輯判斷的操作)
原始的Servlet的生命週期
servlet在第一次訪問的時候就會被初始化
servlet對象一旦被創建就會駐留在內存中,當服務器關閉或者web應用被e69da5e6ba903231313335323631343130323136353331333332633065移除的時候servlet對象才銷燬
1:當servlet被創建的時候那麼 servlet就會被初始化 調用init方法
2:任何請求來自客戶端,service方法就會被自動調用
3:當servlet從服務器被移除的時候 distroy方法將會被調用


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章