看《韓順平Java》視頻的筆記

一、排序中:快速排序最快,但很佔內存
二、使用位運算、位移運算是最快的,由於是在內存中運算
三、對函數的調用是要開闢棧的,能減小調用就減小(代碼重用)
四、有併發的問題要作成一個原子塊
五、文件操做時使用byte[]數組做緩衝區的做用
六、數據庫的選擇:
1.成本
2.功能多很少
3.併發性(最終用戶是多少)
4.安全性
七、數據庫char類型定長中沒有使用到的長度會使用空格補全;若是能夠肯定一個字段的長度,則使用char類型,使用char類型查詢時會很快;
八、帶漢字的字段使用nvarchar,全英文或符號的用varchar;nvarchar處理漢字或其餘unicode字符集的速度比varchar快
九、 存放小數建議使用numeric;
十、查詢使用別名(須要計算的列數據)能夠提升效率,由於能夠減小計算次數:select sum(A) SA from table group by B having SA>1000
十一、SQL語句優化原則:儘可能把能減小結果集的條件寫在右邊(把能迅速排查的條件、能減小大量查詢結果的條件寫右邊)
十二、delete刪除表記錄會寫日誌,表結構還在,是能夠恢復的,速度慢;drop能夠刪除表的結構和數據;truncate刪除表中全部記錄,表結構還在,不寫日誌,沒法找回刪除記錄,速度快;
1三、在常常查詢、where子句或是鏈接條件上常常引用的列上建索引;javascript

 

 

第01講(介紹java)
java語言是面向對象的、高性能的、跨平臺(操做系統)的(一次編譯,處處運行)
jdk包括jre(java運行環境)、一堆java工具和java基礎的類庫(3600多個類,經常使用150多個)
一個java文件中只能有一個public類
編寫java文件>編譯爲字節碼class文件>加載到JVM中執行css

-----------------------------------------------------
第02講(變量)
類型 字節 範圍
byte 1 -128到127
short 2 -32768到32767
int 4 -2147483648到2147483647
long 8 -9223372036854775808到9223372036854775807

char中a是97,小寫字母從97開始;A是61,大寫字母從61開始;
char在進行運算時,直接當作ascii碼對應的整數對待;
高精度到低精度能夠自動轉換,低到高須要強制轉換,轉換原則:byte<short<int<long<float<double
當一個高精度和一個低精度運算時,值向高精度轉變;html

-----------------------------------------------------
第03講和第04講(變量、流程控制、分支控制、循環)
%運算能夠取到兩個整數相除的餘數
switch中可用數據類型主要是:byte、short、int、char、enum等;java

-----------------------------------------------------
第0五、0六、07講(類和對象,成員屬性、成員方法、構造方法)
對象是老是存在內存中的;web

-----------------------------------------------------
第0九、第10講(類方法、封裝,重載、覆蓋、封裝繼承)
靜態區域塊下的代碼只執行一次;
包的三大做用
①區分相同名字的類
②能夠很好的管理類
③控制訪問範圍
java中經常使用包:
java.lang.*; 自動引入
java.util.*; 工具包
java.net.*; 網絡開發包
java.awt.*; 窗口工具包
方法重載注意事項:
①方法名相同
②方法的參數類型,個數,順序只要有一項不一樣
③方法返回類型能夠不一樣
④方法的修飾符能夠不一樣正則表達式

-----------------------------------------------------
第十一、12講(丟手帕例子,多態)
多態中父類new子類的引用是自動轉換的sql

-----------------------------------------------------
第1三、14講(抽象類和接口和final)
接口體現了程序設計的多態和高內聚低耦合的設計 思想;
接口不能繼承類,可是能夠繼承別的接口;
接口中的變量不能用private和protected修飾
實現接口能夠看做是對繼承的一種補充;
實現接口可在不打破繼承關係的前提下,對某個類工功能進行擴展,很是靈活;

final修飾的父類方法不能被子類覆蓋,被修飾的類不能被繼承;數據庫

第1七、1八、19講(數組,排序、查找、二維數組)
數組能夠理解爲執行數組首地址的引用;
對象數組在定義後,賦值時須要再次爲每一個對象分配空間;
數組大小必須事先指定;

排序分爲內部排序和外部排序法;
內部排序:交換式排序法(冒泡排序、快速排序)、選擇式排序法(選擇排序、堆排序)、插入式排序法(插入排序、謝耳排序、二叉樹排序);
外部排序:合併排序法和直接合並排序法;
查找
順序查找
二分查找(使用了遞歸)
二維數組:int arr[][]=new int[4][5];編程

-----------------------------------------------------
(重點)第20講(二進制、位運算、位移運算)
1字節=8byte
二進制(原碼、反碼、補碼)概念:
二進制的最高位是符號位:0正數,1負數
正數的原碼、反碼、補碼都同樣
負數的反碼=它的原碼符號位不變,其餘位取反;
負數的補碼=它的反碼+1
0的反碼、補碼都是0
java沒有無符號數
計算機運算的時候都是以補碼的方式運算數組

-----------------------------------------------------
第2一、2二、23講(集合)
經常使用集合類:List、ArrayList、Vector、LinkedList、hashMap、hashTable

ArrayList和Vector的區別
Vector是同步的,保證了Vector中的對象是線程安全的;而ArrayList則是異步的,所以不是線程安全的;
Vector缺省狀況下自動增加原來一倍的數組長度,ArrayList是原來的50%,因此若是要在集合中保存大量的數據使用Vector有優點一點,由於能夠經過設置集合的初始化大小來避免沒必要要的資源開銷;

HashTable和HashMap的區別
HashTable是同步的,是線程安全的;而HashMap是異步的,所以不是線程安全的。由於同步的要求會影響執行的效率,因此若是不須要線程安全的集合,那麼使用HashMap是一個很好的選擇,這樣能夠避免因爲同步帶來的沒必要要的性能開銷,從而提升效率。

總結
⒈若是要求線程安全,使用Vector、hashTbale;
⒉若是不要求線程安全,使用ArrayList、LinkedList、HashMap;
⒊若是要求鍵值對,則使用HashMap、hashTable;
⒋若是數據量大,又要線程安全考慮Vector;

-----------------------------------------------------
第25講(泛型、異常)
泛型的優勢:類型安全、向後兼容、層次清晰、性能較高;用泛型Java編寫的代碼能夠爲java編譯器和虛擬機帶來更多的類型信息,這些信息對java程序作進一步優化提供條件;

異常
一、編譯異常
二、運行時異常
三、error錯誤(環境錯誤、外部影響)

finally不會被執行的狀況
(1)finally塊中發生了異常;
(2)程序所在線程死亡;
(3)在前面的代碼中用了System.exit();
(4)關閉CPU;

-----------------------------------------------------
第29講(swing介紹)
佈局管理
流式佈局管理器
邊界佈局管理器
網格佈局管理器
卡片佈局管理器
網格包佈局管理器
開發GUI程序步驟
1.繼承JFrame
2.定義須要的組件
3.建立組件
4.設置佈局管理器
5.添加組件
6.顯示窗體

-----------------------------------------------------
第35講(事件處理)
java事件處理機制
java.awt.Event.*;
java事件處理是採起「委派事件模型」;

-----------------------------------------------------
第38講(線程)
線程是進程中的一個實體,一個線程能夠建立和撤銷另外一個線程,同一進程中的多個線程之間能夠併發執行。
線程有就緒、堵塞和運行三種進本狀態;
①線程是輕量級的進程
②線程沒有獨立的地址空間(內存空間)
③線程是由進程建立的
④一個進程能夠擁有多個線程——這就是多線程編程
⑤線程的狀態:新建狀態(new)、就緒狀態(Runnable)、運行狀態(Running)、阻塞狀態(Blocked)、死亡狀態(Dead)

對象的標誌位就是對象鎖
同步機制:若是有多個線程因等待一個對象的標誌位而處於阻塞狀態時,當該對象的標誌位恢復到1狀態時,只會有一個線程可以進入同步代碼執行,其餘的線程仍然處於阻塞狀態。

-----------------------------------------------------
第4三、44講(IO編程)
字節流:用於讀寫二進制文件及任何類型文件byte
字符流:用於讀寫文本文件,不能操做二進制文件
類名最後是ready和write就是字符流

-----------------------------------------------------
第53講(數據庫)
DBA:數據庫管理員
數據庫基本結構的三個層次:
(1)物理數據層
(2)概念數據層
(3)邏輯數據層
數據庫的基本特色
(1)實現數據共享
(2)減小數據的冗餘度
(3)數據實現集中控制
(4)數據一致性和可維護性,以確保數據的安全性和可靠性
(5)故障恢復
主流數據庫
微軟:SQL Server、access
瑞典AB公司:MySQL(適合Linux)
ibm公司:db2(海量數據)、informix(安全性很好,銀行喜歡用)
美國Sybase公司:Sybase
美國oracle公司:Oracle
SQL語言包含4個部分:
數據定義語言(DDL):create、drop、alert
數據操做語言(DML):insert、update、delete等
數據查詢語言(DQL):select語句
數據控制語言(DCL):grant、remove、commit、rollback等
數據庫的選擇:
1.成本
2.功能多很少
3.併發性(最終用戶是多少)
4.安全性
unicode編碼:用兩個字節表示一個字符
非unicode編碼:用一個字節表示一個字母,用兩個字節表示一個漢字;

字符型
類型 大小(字符) unicode編碼
char 8000 非
varchar 8000 非
ntext 1073741823 是
text 2147483647 非
nchar 4000 是
nvarchar 4000 是
text是字節格式存儲英文的,也能夠存中文但可能會出現亂碼
ntext是多字節格式存儲unicode,可存儲各類文字

isNull(comm,0):comm爲null返回0,不然返回原值

-----------------------------------------------------
第62講(複雜查詢)
在from字句中使用子查詢時,該子查詢會做爲一個臨時表來對待,必須指定別名。
左外鏈接:左邊表的記錄所有顯示,若是沒有匹配的記錄就用null填;
右外鏈接:右邊表的記錄所有顯示,若是沒有匹配的記錄就用null填;

-----------------------------------------------------
第84講(網絡基礎)
tcp/ip:網絡通信協議,由網絡層的IP協議和傳輸層的TCP協議組成;
TCP/IP四層:
應用層(application)
傳輸層(transport)
網絡層(ip)
鏈路層(link)
端口範圍:0-65535
0號是保留端口,1-1024是固定端口,1025-65535是動態端口(可使用)
端口注意事項
在計算機(尤爲是作服務器的電腦)要儘量的少開端口
一個端口只能被一個程序監聽
若是使用netstat-an可查看本機有那些端口在監聽
可使用netstat-anb來查看監聽端口的pid,在結合任務管理器關閉不安全的端口

url概念:統一資源定位符;每個網頁的惟一的名稱標識符;
url的組成
(1)協議(http,https)
(2)ip地址(32位)
(3)端口號(16位)0-65535
(4)資源名稱

單工:單工數據傳輸只支持數據在一個方向上傳輸
半雙工:容許數據在兩個方向上傳輸,但不能同時傳輸;
全雙工:容許數據同時在兩個方向上傳輸數據;

 

——————————————JSP部分——————————————————————

第01講(JSP)
jsp是什麼?
1.jsp運行在服務器
2.jsp(java server page)
3.jsp的基礎是servlet(至關於對servlet進行一個包裝)
4.jsp是綜合技術(jsp=html+css+javascript+java代碼+jsp標籤)

服務器若是是第一次訪問該jsp文件,就會把demo.jsp翻譯成一個Servletdemo_jsp.java,再編譯成demo_jsp.class,而後在把class加在到內存中;
若是是第二次訪問,就直接訪問內存中的實例;
若是某個jsp文件被修改了,就須要從新訪問該jsp文件(即至關於第一次);
小腳本<% %>中的變量會成爲jsp.java文件中的service函數的局部變量;
jsp九大內置對象:
1.out 向客戶端輸出數據,字節流
2.request 接受客戶端的http請求
3.response 封裝jsp的產生的迴應
4.session 會話,保存用戶信息跟蹤用戶的行爲
5.application 全局的,多個用戶共享該對象,能夠做計數器(count)
6.pageContext jsp頁面的上下文,域對象
7.exception 表明運行時的一個異常
8.page 表明jsp實例自己
9.config 表明jsp對應的servlet的配置,能夠獲得web.xml中的參數

contentType和pageEncoding的區別
contentType指定網頁以什麼形式顯示; pageEncoding不只能夠指定網頁的顯示形式,還能指定web服務器以什麼方式來翻譯servlet

在開發jsp過程當中宏,咱們一般把jsp放入WEB-INF目錄,目的是爲了防止用戶直接訪問這些jsp文件;在WebRoot下咱們有一個index入口頁面,它主要是作轉發跳轉:<jsp:forward page="/WEB-INF/jsp頁面.jsp"></jsp:forward>;

動態引入:<jsp:include file=""></jsp:include>
靜態引入:<%@ include file="" %>
相同點:把一個文件引入到另外一個文件
區別:靜態引入把兩個jsp翻譯成一個Servlet,因此被引入的文件不要包含<body><html>;
動態引入把兩個jsp分別翻譯,因此被引入的jsp包含有<body><html>也能夠;

註釋:
<!-- -->會在servlet中對應生成out.write("<!-- -->"),返回給瀏覽器的靜態頁面也有,不過用戶看不到;
<%-- --%>在servlet中沒有輸出,是jsp專用註釋方法,建議使用;

正則表達式中使用test驗證則表達式不要帶/g

防止用戶請求重複提交: 使用response.sendRedirect()跳轉到保存轉發跳轉頁面的servlet;

當咱們的java對象和數據庫關聯的時候使用java.sql.Date;若是是service類,則使用java.util.Date

 

——————————————Oracle部分——————————————————————

一、oracle安裝成功會默認生成三個用戶 sys:超級管理員,dba權限最高角色 system:系統管理員 scott:普通用戶二、sys與system相比sys有create databse權限,其餘相似;三、刪除用戶時,若是刪除的用戶中有表的話就須要在刪除時代一個參數cascade;四、系統權限:用戶對數據庫的相關權限; 對象權限:用戶對其餘用戶的數據對象操做的權限;五、oracle的系統權限有140多種,對象權限25種;六、profile管理用戶口令能夠對用戶進行限制,好比限制用戶登錄時最多可輸入密碼的次數等;profile命令通常用dba的身份執行;七、delete刪除表記錄會寫日誌,表結構還在,是能夠恢復的,速度慢;drop能夠刪除表的結構和數據;truncate刪除表中全部記錄,表結構還在,不寫日誌,沒法找回刪除記錄,速度快;八、大量添加數據語句:insert into Users(字段,字段,字段) select * from Users九、all表示要比其中的條件都大;any只要比其中的任意一個條件大便可;十、(多行子查詢)查詢與SMITH的部門和崗位徹底相同的全部僱員:select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH';十一、如何顯示高於本身部門平均工資的員工的信息:select e1.ename,e1.sal,e1.deptno,e2.avgsal from emp e1,(select deptno,avg(sal) avgsal from emp group by deptno) e2 where e1.deptno=e2.deptno and e1.sal>e2.avgsal;十二、oracle分頁:select * from (select e1.*,rownum rn from (select * from emp) e1 where rownum<=10) t where t.rn>=6; 指定查詢列或須要對列進行排序時只須要修改最裏層的子查詢;1三、使用查詢結果建立一個新表:create table newEmp(id,name,sal,job) as select from id,name,sal,job from emp;1四、快速update:update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';1五、事物的幾個重要操做: 設置保存點 savepoint a 取消部分事務 rollback to a 取消所有事務 rollback1六、設置只讀事務 set transaction read only;只讀事務是指只容許執行查詢的操做,而不容許執行任何其餘DML操做的事務;1七、若是沒有表可以使用dual表進行函數測試: select abs(n) from dual;1八、字符函數 lower(char):轉小寫 upper(char):轉大寫 length(char):獲取字符長度 substr(char,m,n):從字符的m位截取n個字符 數學函數 round(n,[m]):四捨五入 trunc(n,[m]):截取小數 mod(m,n):用m數%n數 floor(n):向下取整 ceil(n):向上取整 日期函數 sysdate:返回當前時間 add_months(d,n):給指定日期加上n個月 last_dat(d):返回指定日期所在月份的最後一天1九、索引的創建原則: 在大表上創建索引纔有意義 在where子句或是鏈接條件上常常引用的列上建索引 索引的層次不要超過4層20、索引的缺點 創建索引系統要佔用大約爲表的1.2倍的硬盤和內存空間來保存索引; 更新數據的時候,系統必需要有額外的時間來同事對索引進行更新,以維護數據和索引的一致性,所以要花更多的系統時間;2一、在如下狀況不該創建索引 不多或從不引用的字段 邏輯型的字段,好比男或女(是或否)等2二、B樹索引創建在重複值不多的列上,而位圖索引則創建在重複值不少、不一樣值相對固定的列上;2三、查看某個角色包括哪些系統權限:select * from role_sys_privs where role='DBA'2四、存儲過程命名規範: 定義變量建議用v_做爲前綴v_sal 定義常量建議用c_做爲前綴c_rate 定義遊標建議用_cursor做爲後綴emp_cursor 定義例外建議用e_做爲前綴e_error2五、PL/SQL有 存儲過程、函數、包(可組合過程和函數);2六、複合類型 結構體: declare type_record_type is record( name emp.ename%type,sal emp.sal%type); sp_record emp_record_type; 將emp_record_type類型賦值給sp_record變量,sp_record能夠接收emp_record_type類型中定義的全部類型的值; 數組: declare type sp_table_type is table of emp.ename%type index by binary_integerl; sp_table sp_table_type; 將這個複合類型賦值給sp_table變量,sp_table做爲數組經過下標保存值; 遊標: 瞭解不寫了;2七、PL/SQL的循環有look、while和for循環;2八、第30講是存儲過程的分頁2九、例外的分類 預約義例外:常見的oracle錯誤(20多個) 非預約義例外:預約義例外不能處理的例外 自定義例外:與oracle錯誤無關的其餘狀況

相關文章
相關標籤/搜索