java相關知識點(二)
阿新 • • 發佈:2018-11-23
資料庫
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 標籤庫的執行效率高