java中的小問號
if (a == b) {
do(a);
} else {
do(b);
}
相當於
(a == b) ? do(a) : do(b);
關係
- Inheritance 繼承
- Aggregation 聚集
聚合是一種特殊的關聯(Association)形式,表示兩個對象之間的所屬(has-a)關係。所有者對象稱爲聚合對象,它的類稱爲聚合類;從屬對象稱爲被聚合對象,它的類稱爲被聚合類。例如,一個公司有很多員工就是公司類Company和員工類Employee之間的一種聚合關係。被聚合對象和聚合對象有着各自的生命週期,即如果公司倒閉並不影響員工的存在。 - Composition 合成
聚合是一種較弱形式的對象包含(一個對象包含另一個對象)關係。較強形式是組合(Composition). 在組合關係中包含對象負責被包含對象的創建以及生命週期,即當包含對象被銷燬時被包含對象也會不復存在。例如一輛汽車擁有一個引擎是汽車類Car與引擎類Engine的組合關係。下面是組合的一些例子。
Wireframe
- 是一種低保真度的設計原型,
- 在去除所有視覺設計細節之下,
- 進行頁面結構、功能、內容規劃。
Program 組成
- Instruction
- method
computer history
- 1G machine language
- 2G Assembly language
- 3G Procedural language
- 4G Non-procedural language
- 5G intelligent language
Paradigm
- Procedural(How)
– C - Declarative(What)
- Functional
– Lisp, Haskell - Rule based(Role->action)邏輯編程
– Prolog - Query based
– DB language - Event driven
– Html, Java AWT(Abstract Window Toolkit) - Object oriented
– Name
– Properties(attribute)
– Operations(behavior, methods)
Primitive Data Types
Bit 計算機最小單位
- Integers
– Byte:8bits
– Short:16bits
– Int:32bits = 4byte
– Long:64bits
- Decimals
– Float: 32bits– Double: 64bits
- Character–
– Char: 16bits
- Boolean
命名規則
- 開頭小寫
– Variable: 開頭小寫,後邊大寫
– Method:同variable - 開頭大寫
– Class:每個單詞開頭大
– Interface:同Class - 全部小寫
– Package: 全部小寫 - 全部大寫
– Constants:全部大寫
Variable
- Global variable: in the class, out of method
Operations
- Arithmetic
– 8%2 equals 0
– Increment: ++ : a =a+1
– Decrement:– : a=a-1 - Comparison
– &&是相乘,全對纔是對
– ||是相加,一個對就是對– &,,^二進制運算符 - Logical
- Concatenation
++a 先自加1,再計算 a++先計算,再自加1
Switch
- 如果case內沒有break,會一直執行下去
Looping
While
– Initialization
– Condition
– Increment/decrementDo while:和while的區別,即使沒有判斷,也會先執行一次
- for
array的寫法
- blocks of memory
- int[] mark = {1,2,3,4,5};
- int[] mark = new int[5];
class
- user defined data type
- new: dynamic memory location
Constructor
- Used for Initial class
Value
- Class value: has “static”, outside of method
- Instance value: has no “static”, outside of method
- Local: inside the method, destroyed after finish the method
- Block
Program segment
- Static
″ Local variables, block - Static
– Static variables - Heap: Dynamic
– Everything created by using the word “new”
AAA a = new AAA0;
- A is local viable
- New AAA() is in heap
- C obj = new C();
– obj: Reference Variable
– new C(): object
Variables should be private
- Data should be private; public is simple, but public is dangerous
- Method can be public
This
- Current object
Block
- Static block will runs before “main”
Heap and stack
- If I want to find something in heap,
I must search in stack for its address.
java的基本概念
- Encapsulation:封裝
- abstraction :抽象
- inheritance:繼承: is-a父子繼承關係
– single level
– multi-level
– hierarchical: several children - polymorphism :多型
– compile time:overloading
– method overloading - public void sum(int i){}
- public void sum(){}
– constructor overloading - public sum(){}
- public sum(int i){}
– runtime
– Parent obj = new C1;// obj can store any child of parent; 工廠模式的一種
符號
- -:private
- +:public
- #:protected
– 只有繼承的子class纔可以訪問
Stack 表現
- Compile,從子類到父類,執行,從父類到子類
Super(i)
- 可以調用parent class的properties
- 如果父類和子類有相同方法或是屬性,父類被覆寫
Overridden
- 方法入力相同,出力相同
Final
- Final variable: unable to change
- Final method: unable to override
- Final class: unable to inherit
Abstract
- May have variable
- May have abstract method and normal method
Interface
- Pure abstract class
- Variables: static, final
- Method: abstract method
Composition
- Car <- engine
關係
- is a,是這個類的一種,繼承
– implement, abstract class - has a, 含有這個類,包含
– public e
collection
- arrarylist: 效率低
- linkedlist: 效率高
- Collection是一個接口
- List和Set都是接口,它們繼承於Collection。
– List是有序的隊列,List中可以有重複的元素;
– 而Set是數學概念中的集合,Set中沒有重複元素! - List和Set都有它們各自的實現類。
List arraylist = new ArrayList(5);
- List : interface
– ArrayList
– LinkedList
Collection
- Set
– HashSet
– LinkedSet - List
– Arraylist
– Linkedlist
Map
- HashMap
– Map
Ensure
- testing
assure
- exception
Throwable
- Error
– Stack over follow - Exception
– Checked exception
– Unchecked exception
–Finally: release memory
Checked & unchecked
- RuntimeException和他的子類都是unchecked異常。
- 其他的都是checked異常。
– 在編譯階段,編譯器會檢查每一個方法,看是否方法裏面拋出了checked異常。
– 假設拋出了checked異常,那個方法裏必須加catch,或者加throws語句(下一節講解),否則的話編譯器會報錯。
– unchecked異常就沒這規矩。
Throwable類是所有異常的始祖,它有兩個直接子類Error / Exception:
- Error
– 僅在Java虛擬機中發生動態連接失敗或其它的定位失敗的時候拋出一個Error對象。一般程序不用捕捉或拋出Error對象。
Exception
- Unchecked Exception:
– a. 指的是程序的瑕疵或邏輯錯誤,並且在運行時無法恢復。
– b. 包括Error與runtime Exception及其子類,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException, Arithmetic Exception.
– c. 語法上不需要聲明拋出異常。 - Checked Exception:
– a. 代表程序不能直接控制的無效外界情況(如用戶輸入,數據庫問題,網絡異常,文件丟失等)
– b. 除了Error和Runtime Exception及其子類之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。
– c. 需要try catch處理或throws聲明拋出異常。
測試
SME
- Plan -> analysis -> design -> build -> test -> deploy
Tests
- Unit testing (developer)
- Integration/ assembly testing
- Performance testing
- Product testing
- User acceptance testing
- Operational readies testing( deploy team)
Junit
Database
- RDBMS: Relational database management system
- DBMS: DataBase Management System
Query language
- DDL: data definition language
″ Create, drop, truncate - DML: Data Manipulation language
″ Insert, update, delete - TCL: transaction control language
″ Rollback, commit - Data retrieval
″ select
datatype for DB
- NUMBER(n,[d])
- Date: 24-Mar-2009
- TIME: 11:20:23
- TIMESTAMP: YYYY-MM-DD HH:MM:SS
- BLOB: binary
ACID事物的特性
事務是指對系統進行的一組操作,爲了保證系統的完整性,事務需要具有ACID特性,具體如下:
- 是指數據庫管理系統(DBMS)在寫入/更新資料的過程中,爲保證事務(transaction)是正確可靠的,所必須具備的四個特性:
″ 原子性(atomicity,或稱不可分割性)、
″ 一致性(consistency)
″ 隔離性(isolation,又稱獨立性)、
″ 持久性(durability)。
- 原子性:一個事務(transaction)中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
- 一致性:在事務開始之前和事務結束以後,數據庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及後續數據庫可以自發性地完成預定的工作。
- 隔離性:當兩個或者多個事務併發訪問(此處訪問指查詢和修改的操作)數據庫的同一數據時所表現出的相互關係。事務隔離分爲不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重複讀(repeatable read)和串行化(Serializable)。
- 持久性:在事務完成以後,該事務對數據庫所作的更改便持久地保存在數據庫之中,並且是完全的。
Primary key
- 不能重複
- 不能爲空
- 只能有一個primary key
Alias
- Employee e
- e.userId = ..
Statement stmt = conn.createStatement();
- stmt.execute
″ Excute: true/false
″ ExcuteUpdate: int of line
″ ExcuteQuery: ResultSet only for SELECT
prepareStatement
Html
Html: static web page
JavaScript: Dynamic web page
CSS: 層疊樣式表Cascading Style Sheets
Get method will go through URL, post method will not
Html table
- Tr: table row
- Th: table header
- Td: table data
JavaScript
Datatype: Only var in JavaScript
CSS
CSS must be in head section
Enterprise Architecture
One class has only one responsibility
Ties: different locations
- Layers: logical separation
XSLT
- 可擴展樣式錶轉換語言(英語:Extensible Stylesheet Language Transformations,縮寫XSLT)是一種對XML文檔進行轉化的語言,
- XSLT中的T代表英語中的“轉換”(transformation)。它是XSL(Extensible stylesheet language)規範的一部分。XSL規範的另外一部分
Servlet
Apache tomcat
Servlet engine
Life cycle
- Instantiation: object creation
- Initialization: init()
– Only one time - Service: service()
– Can many times - Destroy: destroy()
– Only one time
Copy connecter to WebContent->Web –inf->lib
Out.print 可以打印到html
JSP
Java code in web page
<%-- This is JSP comment --%>
<%! Declaration %>
<%= expansion %>
<% Java Code %>
java bean
A class with var, constructor, get/do
Spring
DI: dependency injection
- Setter: setter injection
- 或者是構造體: constructor injection
Spring MVC
- Model: communicate with DB
- View: JSP
- controller
- MVC is middleware connecting frontend and backend