1. 程式人生 > >java相關知識點(二)

java相關知識點(二)

資料庫

1.Oracle 與 MySql 的區別
	a.資料型別
		oracle 特有的 varchar2
		Mysql 只有 varchar
		oracle 整數 number(3)/Integer   小數表示式 number(3,2)
		MySQL  整數 int  小數 double
		Oracle 大文字型別  CLOB
		MySQL  大文字型別  Text
	b.主鍵自動生成方式
		Oracle sequence
			create sequence suns_seq start with 1 increment by 1;
			suns_seq.nextval
		Mysql
			create table t_user(
				id int primary key auto_increment,
			);
	c.分頁查詢
		Oracle rownum偽列子查詢
			select id,name form (select id,name,rownum r from y_user)
			where r>=? and r<=?
		Mysql limit
			select * from t——user limit 2,10
	d. 儲存過程
	e. 體系結構
2. 分頁sql  
3. Oracle 序列  負責主鍵的自動生成
4. View 檢視
	特點:拔一次查詢的結果儲存起來,建立成檢視,後續的使用方便
5.索引
	特點:優化查詢 索引列的查詢的效率更高
	Oracle 索引:
		a.B+Tree 索引    一般會加在資料唯一的列
		b.BitMap點陣圖索引   一般會加在資料不唯一的列
6.Mysql的sql優化(5條)
	一.當使用到數字型別時 儘量使用  mediumint、smallint 和 tinyint  如果非負數最好加入UNSIGNED 
			tinyint  				-128 - 127 
			tinyint   unsigned  	0 - 255 
			smallint  				-32768 - 32767 
			smallint  unsigned  	0 - 65535 
			mediumint  				-8388608 - 8388607 
			mediumint unsigned  	0 - 16777215 
			
	二.VARCHAR的長度只分配真正需要的空間
		
	三.儘量使用TIMESTAMP而非DATETIME
	
	四.單表不要有太多欄位,建議在20以內
	
	五.避免使用NULL欄位,很難查詢優化且佔用額外索引空間
	
	六.不做列運算查詢 如 SELECT id WHERE age + 1 = 10,任何對列的操作都將導致表掃描,它包括資料庫教程函式、計算表示式等等,查詢時要儘可能將操作移至等號右邊
	
	七.不用SELECT *  查詢
	
	八.少用JOIN
	
	九.儘量避免在WHERE子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃描
	
	十.列表資料不要拿全表,要使用LIMIT來分頁,每頁數量也不要太大

JDBC開發

1. PrepareStatement 與 Statement 的區別?
	psmt a) ? 佔位符  可以防止SQL的注入
		在資料庫段  會對SQL語句進行預編譯   執行效率高
2.	MyBatis 或者 Hibernate 的框架  底層的封裝都是JDBC

Servlet

1. JavaEE 他是一種規範(一組介面)
	JDBC、Servlet、JSP
2. Servlet 的生命週期
	1). 什麼時候建立?
		a. 預設情況  使用者第一次請求的時候建立
		b. 如果配置<load-on-startup>1</load-on-startup>
			伺服器啟動時建立
	2).  會有tomcat呼叫init()方法
	3). 正常服務  service
	4). 銷燬 destory() 方法
3. servlet 是單例項 還是多例項
	他是單例項  但不是單例
	a. 如何解決多執行緒訪問的問題?
		1. synchronized(不建議)
		2. 不定義成員變數 (推薦) servlet中便沒有成員變數
	b. 單例項 是不是 單例設計模式?
		Servlet不是單例設計模式,單例模式必須要將建構函式私有
		單例項
			1.單例設計模式  構造私有
			2.容器單例  容器保證單例項    如:tomcat | spring
			3.執行緒單例  一個執行緒一個物件
				ThreadLocal --- Connection
				執行緒中  只有一個Connection Service DAO
4. Servlet 的相關元件的啟動的順序
	tomcat先啟動 Listener 然後再執行 Filter 最後在執行 Servlet,
	如果有多個,則順序執行
5. 中文亂碼問題(get方式通過 url , post 通過請求體(請求正文)傳遞)
	get tomcat中的conf/server.xml <Connector URIEncoding="UTF-8" />
	post 底層 request.setCharacterEncoding("UTF-8");(框架中自己封裝)

JSP

1. JSP本質上就是Servlet,tomcat會在第一次請求jsp時,將jsp翻譯成Servlet進行執行,
	所以JSP的執行效率低,適合做MVC中的View檢視
	而Servlet適合做MVC中 Controller
2. JSP的九大內建物件
	request response session application page pageContext 
	out config exception
3. page指令
	pageEncoding 	jsp轉換成的.java檔案編譯成.class檔案時的編碼格式 
	contentType	就是response響應的內容,等價與resonse.set...("UTF-8"); 
4. EL + JSTL
	jsp中  EL+JSTL 比 struts2 標籤庫的執行效率高