SlideShare a Scribd company logo
1 of 71
Download to read offline
10. 資料永續與交換
• 學習目標
– 使用 pickle 與 shelve
– 認識 DB-API 2.0
– 使用 sqlite3 模組
– 處理 CSV、JSON、XML
使用 pickle 模組
• 如果要序列化 Python 物件,可以使用內建
的 pickle 模組
• 將一個Python 物件轉換為 bytes,這稱為
Pickling,相反的操作則稱之為 unpickling,
會將 bytes 轉換為 Python 物件
• 若想將物件轉換為 bytes,可以使用
dumps() 函式
• 若想將一個代表物件的 bytes 轉換為物件,
可以使用 loads() 函式
• 可以 pickling 與unpickling 的型態包括內
建型態、使用者自定義的頂層函式、類別
等
• 如果無法進行 pickling 或 unpickling,就
會引發 PicklingError 或
UnpicklingError
• 保存在檔案,從檔案讀取
• pickling 時實際採用的模式,是 Python 的
專屬格式
• pickle 的保證是能向後相容未來的新版本
• 可以使用 pickle.HIGHEST_PROTOCOL
來得知目前可用的最新格式版本為哪一個
• pickle.DEFAULT_PROTOCOL 則是
pickle 模組的預設版本
• 如果必要指定格式版本,
• 可以在使用 dumps()、dump()、loads()
或 load() 時,指定其 protocol 參數
使用 shelve 模組
• shelve 物件行為上像是字典的物件
• 鍵的部份必須是字串,值的部份可以是
pickle 模組可處理的 Python 物件
• 它直接與一個檔案關聯,因此使用上就像
個簡單的資料庫介面
認識 DB-API 2.0
• DB-API 2.0 由PEP 249 規範,所有的資料
庫介面都應該符合這個規範
• 以便撰寫程式時能有一致的方式,撰寫出
來的程式也便於跨資料庫執行
• Connection 基本上要具備以下的方法:
• Cursor 物件基本上必須具備以下方法:
使用 sqlite3 模組
• Python 中內建了 SQLite 資料庫,這是個
用 C 語言撰寫的輕量級資料庫
• 資料庫本身的資料可以儲存在一個檔案中,
或者是記憶體之中,後者對於資料庫應用
程式的測試非常的方便
• 若想使用 SQLite 作為資料庫,並撰寫
Python 程式與資料庫進行操作,可以使用
sqlite3 模組
建立資料庫與連線
• 可以傳給 connect() 一個 ':memory:'
字串,這樣會在記憶體中建立一個資料庫
建立表格與新增資料
• Connection 物件實作了情境管理器,可
以搭配 with 陳述使用
• 在 with 區塊的動作完成之後,會自動
commit() 與 close(),若發生例外,則
會自動 rollback()
• 若要新增一筆資料,也是使用 Cursor 的
execute()方法
查詢資料
• 先用 Cursor 的 execute()執行查詢語句
• fetchone() 可以取得結果集合中的一筆
資料
• fetchall()取得結果集合中的全部資料
• fetchmany() 指定要從結果集合中取得幾
筆資料
更新與刪除資料
參數化 SQL 語句
• 直接使用 + 來串接字串以組成 SQL,容易
引發 SQL Injection 的安全問題
• 使用字串的 format(),或者是舊式的 %
進行格式化,也會有同樣的問題
• Cursor 的 execute() 方法本身可以將
SQL 語句參數化
• 有兩種參數化的方式:使用問號(?)或具
名佔位符號
• 如果你有多筆 SQL 必須執行,雖然可以使
用 for in 自行處理:
• 用 Cursor 的 executemany() 會更方便:
簡介交易
• 交易的四個基本:
– 要求原子性(Atomicity)
– 一致性(Consistency)
– 隔離行為(Isolation behavior)
– 持續性(Durability)
• 依英文字母首字簡稱為 ACID
• 除了一些會隱含地提交之情況,sqlite3
模組的預設實作,並不會自動提交
• 必須自行呼叫 Connection 的 commit()
來進行提交
• 如果交易過程因為發生錯誤或其他情況,
必須撤回交易時,可以呼叫 Connection
的 rollback() 撤回操作
• 一個基於例外發生時必須撤消交易的示範:
• 在隔離性方面,SQLite 資料庫在更新資料
的相關操作時,預設會鎖定資料庫直到該
次交易完成
• 多個連線時就會造成等待的狀況
• sqlite3 模組的 connect() 函式有個
timeout 可指定等待多久,若逾時就引發
例外,預設是 5.0,也就是是 5 秒
• sqlite3 模組的 Connection 物件有個
isolation_level 屬性,可用來設定或
得知目前的隔離性設定
• 預設是'',實際上在 SQLite 資料庫就會產
生 BEGIN 陳述
• 如果 isolation_level 被設置為 None,
表示不做任何的隔離性,也就成為自動提
交,每次 SQL 更新相關操作時,就不用自
行呼叫 Connection 的 commit()方 法
• 不設隔離性,在多個連線存取資料庫的情
況下,就會引發資料不一致的問題
– 更新遺失(Lost update)
– 髒讀(Dirty read)
– 無法重複的讀取(Unrepeatable read)
– 幻讀(Phantom read)
更新遺失
髒讀
無法重複的讀取
幻讀
• 同一交易期間,讀取到的資料筆數不一致。
例如交易 A 第一次讀取得到五筆資料,此
時交易 B 新增了一筆資料,導致交易 B 再
次讀取得到六筆資料。
• 由於各家資料對於交易的支援程度並不相
同,實際上該採用與如何進行設定也就有
所差異
• 就 sqlite3 模組的實作來說,
Connection 物件的 isolation_level
還可以設定 SQLite 資料庫支援的隔離層級
'DEFERRED'、'IMMEDIATE' 或
'EXCLUSIVE'
CSV
• 全名為 Comma Separated Values,是通
用在試算表、資料庫間的資料交換格式
• Python 提供了 csv 模組,可隱藏 CSV 的
讀寫細節,讓開發人員輕鬆處理 CSV 格式
• 若想將先前下載的 CSV 檔案轉存為 UTF-8
的話
• 可以使用 csv 的 DictReader()、
DictWriter(),將 CSV 以 dict 的方式
處理
• 使用 fieldnames 自行指定欄位名稱:
• 有一些 dict,想要寫出為CSV:
JSON
• 全名 JavaScript Object Notation,為
JavaScript 物件實字
• 可以在〈Introducing JSON〉找到詳細的
JSON 格式說明,以及各語言中可處理
JSON 的程式庫
• 在 Python 中可以使用 dict 與 list 等來
模仿:
• 在 JSON 的物件格式之中:
– 名稱必須用 "" 雙引號包括。
– 值可以是 “” 雙引號包括的字串,或者是數字、
true、false、null、JavaScript 陣列(相
當於Python 的 list)或子 JSON 格式
• 數字、true、false、null、使用 "" 包
括的字串等,都是合法的 JSON 格式
• Python 內建了 json 模組,API 的使用上
類似 pickle
• 內建型態轉為 JSON 格式的過程稱為編碼
(Encoding)
• 將 JSON 格式轉為 Python 內建型態之過程
稱為解碼(Decoding)
• 將 Python 內建型態編碼為 JSON 格式,可
以使用 json.dumps()
• indent 參數可指定數字,這會為JSON 格
式加上指定的空白數量進行縮排:
• seperators 預設是 (', ', ': '),如
果指定為(',', ':'),就不會有空白了
– 像是在資料進行網路傳輸時,若能省掉不必要
的空白,就可省去不必要的流量開銷
• 如果呼叫 json.dump() 時指定了非內建
型態,預設是會引發 TypeError:
• 可以指定一個轉換函式給 default 參數,
轉換函式必須傳回 Python 內建型態,以進
行 JSON 編碼:
• 若要將物件編碼為 JSON 並寫至檔案:
• 要將 JSON 格式解碼為內建型態物件:
• 可以在使用 json.loads() 時,指定一個
函式給 object_hook:
• 若要從檔案中讀取 JSON 並解碼:
XML
• 在處理XML 時,Python 提供了幾個模組:
– xml.dom
– xml.sax
– xml.etree
• Python 建議 xml.etree.ElementTree
• 相對於 DOM 來說,ElementTree 更為簡
單而快速
• 相對於 SAX 來說,也有 iterparse() 可
以使用,可以在讀取 XML 文件的過程中即
時進行處理
• 取得 XML 中全部的標籤名稱:
• 可以使用 fromstring() 來剖析 XML 字
串,這會直接傳回一個 Element 實例,代
表著XML 字串的根節點
• 可以指定 XPath 表示式來取得想要的標籤:
• 想要直接取得 XML 字串的 bytes 資料,
可以使用 tostring():
• 可以使用 append() 來附加一個元素,使
用 insert() 來插入元素,使用 remove()
可以移除元素,使用 set() 設定元素屬性
• 使用 iterparse() 可以針對標籤的
'start'、'end'、'start-ns'、
'end-ns' 事件發生時,進行相對應處理

More Related Content

What's hot

並行與平行
並行與平行並行與平行
並行與平行Justin Lin
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJustin Lin
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Justin Lin
 
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註Justin Lin
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJustin Lin
 
從模組到類別
從模組到類別從模組到類別
從模組到類別Justin Lin
 
CH10:輸入輸出
CH10:輸入輸出CH10:輸入輸出
CH10:輸入輸出Justin Lin
 
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章  - 通用APIJava SE 7 技術手冊投影片第 12 章  - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用APIJustin Lin
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Justin Lin
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJustin Lin
 
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件Justin Lin
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Justin Lin
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Justin Lin
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJustin Lin
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJustin Lin
 
CH14:NIO 與 NIO2
CH14:NIO 與 NIO2CH14:NIO 與 NIO2
CH14:NIO 與 NIO2Justin Lin
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 

What's hot (20)

並行與平行
並行與平行並行與平行
並行與平行
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
 
CH10:輸入輸出
CH10:輸入輸出CH10:輸入輸出
CH10:輸入輸出
 
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章  - 通用APIJava SE 7 技術手冊投影片第 12 章  - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
 
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
 
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
 
CH14:NIO 與 NIO2
CH14:NIO 與 NIO2CH14:NIO 與 NIO2
CH14:NIO 與 NIO2
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 

Viewers also liked

《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿Justin Lin
 
除錯、測試與效能
除錯、測試與效能除錯、測試與效能
除錯、測試與效能Justin Lin
 
Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming LanguageTahani Al-Manie
 
類別的繼承
類別的繼承類別的繼承
類別的繼承Justin Lin
 
Python Programming Essentials - M44 - Overview of Web Development
Python Programming Essentials - M44 - Overview of Web DevelopmentPython Programming Essentials - M44 - Overview of Web Development
Python Programming Essentials - M44 - Overview of Web DevelopmentP3 InfoTech Solutions Pvt. Ltd.
 
流程語法與函式
流程語法與函式流程語法與函式
流程語法與函式Justin Lin
 
從 REPL 到 IDE
從 REPL 到 IDE從 REPL 到 IDE
從 REPL 到 IDEJustin Lin
 
open() 與 io 模組
open() 與 io 模組open() 與 io 模組
open() 與 io 模組Justin Lin
 
PyCon Taiwan 2013 Tutorial
PyCon Taiwan 2013 TutorialPyCon Taiwan 2013 Tutorial
PyCon Taiwan 2013 TutorialJustin Lin
 
3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCADJustin Lin
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知Justin Lin
 
常用內建模組
常用內建模組常用內建模組
常用內建模組Justin Lin
 
型態與運算子
型態與運算子型態與運算子
型態與運算子Justin Lin
 
Python 起步走
Python 起步走Python 起步走
Python 起步走Justin Lin
 
初學R語言的60分鐘
初學R語言的60分鐘初學R語言的60分鐘
初學R語言的60分鐘Chen-Pan Liao
 

Viewers also liked (20)

《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿《Python 3.5 技術手冊》第二章草稿
《Python 3.5 技術手冊》第二章草稿
 
除錯、測試與效能
除錯、測試與效能除錯、測試與效能
除錯、測試與效能
 
Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming Language
 
類別的繼承
類別的繼承類別的繼承
類別的繼承
 
Python
PythonPython
Python
 
Python Programming Essentials - M44 - Overview of Web Development
Python Programming Essentials - M44 - Overview of Web DevelopmentPython Programming Essentials - M44 - Overview of Web Development
Python Programming Essentials - M44 - Overview of Web Development
 
Python Programming Essentials - M22 - File Operations
Python Programming Essentials - M22 - File OperationsPython Programming Essentials - M22 - File Operations
Python Programming Essentials - M22 - File Operations
 
流程語法與函式
流程語法與函式流程語法與函式
流程語法與函式
 
例外處理
例外處理例外處理
例外處理
 
從 REPL 到 IDE
從 REPL 到 IDE從 REPL 到 IDE
從 REPL 到 IDE
 
open() 與 io 模組
open() 與 io 模組open() 與 io 模組
open() 與 io 模組
 
資料結構
資料結構資料結構
資料結構
 
PyCon Taiwan 2013 Tutorial
PyCon Taiwan 2013 TutorialPyCon Taiwan 2013 Tutorial
PyCon Taiwan 2013 Tutorial
 
3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
 
常用內建模組
常用內建模組常用內建模組
常用內建模組
 
型態與運算子
型態與運算子型態與運算子
型態與運算子
 
進階主題
進階主題進階主題
進階主題
 
Python 起步走
Python 起步走Python 起步走
Python 起步走
 
初學R語言的60分鐘
初學R語言的60分鐘初學R語言的60分鐘
初學R語言的60分鐘
 

Similar to 資料永續與交換

Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110bngoogle
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLJustin Lin
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料yiditushe
 
NSCopying between Objective-C and Swift
NSCopying between Objective-C and SwiftNSCopying between Objective-C and Swift
NSCopying between Objective-C and SwiftMarvin Lin
 
Chapter 4 models
Chapter 4 modelsChapter 4 models
Chapter 4 modelsEkman Hsieh
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Justin Lin
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)Lixun Peng
 
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001rainx1982
 

Similar to 資料永續與交換 (10)

Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料
 
NSCopying between Objective-C and Swift
NSCopying between Objective-C and SwiftNSCopying between Objective-C and Swift
NSCopying between Objective-C and Swift
 
Chapter 4 models
Chapter 4 modelsChapter 4 models
Chapter 4 models
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
 
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001
 

More from Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構Justin Lin
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組Justin Lin
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理Justin Lin
 
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承Justin Lin
 

More from Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理
 
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
 

資料永續與交換