技術專區
物件導向程式設計 (Object-oriented programming)
物件導向三大觀念
- 封裝 (Encapsulation):透過程式下達指令,指定物件為 public、private 或 protected 成員,透過此方式來控制程式權限或隱藏部分程式,因此必須透過實作來讓郵差傳入或傳出訊息。
- 繼承 (Inheritance):在特定情況下,一個程式中會有一個子類別 (subclass) ,它會繼承父類別 (super class) 的類別,而子類別的內容會比父類別的內容更具體,也就是擴充了父類別的功能。
- 多型 (Polymorphism):由繼承而產生相關而不同的類別。舉例來說,狗會叫,雞會叫,這時將這些條件輸入進去程式,會發現狗的叫是吠叫,而雞是啼叫,因此需要不同的方式來呈現不同動物叫的方式,但牠們都有叫的功能,因此只需撰寫其相異之處。
HTTP (超文本傳輸協定 HyperText Transfer Protocol)
- 資料傳輸:HTTP 內容只規範了客戶端請求與伺服器回應的標準,實際上是藉由 TCP 作為資料的傳輸方式。例如使用者送出了一個請求,經過 與 TCP 的三次握手之後,資料便能透過 TCP 傳遞給伺服器,並等待伺服器回應。然而這個一來一往的傳輸過程,資料都是明文(在密碼學中是指傳送方想要接收方獲得的可讀資訊),如果傳遞的過程中有惡意竊聽者,資料便有機會被窺探、盜用。
- 加密:加密指的是把明文資料轉換成無法讀取的內容 - 密文(是明文經過加密算法所產生的),並且密文能藉由特定的解密過程,將其回復成明文。
HTTPS (超文本傳輸安全協定 HyperText Transfer Protocol Secure)
- HTTPS 透過 HTTP 進行通訊,但通訊過程使用 SSL (安全通訊協定) / TLS (傳輸層安全性協定) 進行加密,藉由類似於前述的加密方式,在 HTTP 之上定義了相對安全的資料傳輸方法。由於非對稱加密的運算量較高,傳遞回應較慢,實際的架構上,會透過公開金鑰加密傳遞出共用的金鑰,再透過共用金鑰加密進行後續的傳遞,兼顧了安全性及傳遞速度。
HTTP 狀態碼 (HTTP status code)
- 資訊回應 (Informational responses,100~199)
- 成功回應 (Successful responses,200~299)
- 重定向 (Redirects,300~399)
- 用戶端錯誤 (Client errors,400~499)
- 伺服器端錯誤 (Server errors,500~599)
資訊回應
- 100 Continue,此臨時回應表明,目前為止的一切完好,而用戶端應當繼續完成請求、或是在已完成請求的情況下,忽略此資訊。
- 101 Switching Protocol,此狀態碼乃為用戶端 Upgrade 請求標頭發送之回應、且表明伺服器亦切換中。
- 102 Processing (WebDAV),此狀態碼表明伺服器收到並處理請求中,但目前未有回應。
成功回應
- 200 OK,請求成功。成功的意義依照 HTTP 方法而定:
GET:資源成功獲取並於訊息主體中發送。
HEAD:entity 標頭已於訊息主體中。
POST:已傳送訊息主體中的 resource describing the result of the action。
TRACE:伺服器已接收到訊息主體內含的請求訊息。 - 201 Created,請求成功且新的資源成功被創建,通常用於 POST 或一些 PUT 請求後的回應。
- 202 Accepted,此請求已經被接受但尚未處理。此狀態為非承諾性,代表 HTTP 無法在之後傳送一個非同步的回應告知請求的處理結果。最初目的為外部程序或其他伺服器處理請求的情況,或用於批次處理中。
- 203 Non-Authoritative Information,此回應碼表示回傳的中介資料集與並非與原始伺服器上的有效確定集合完全相同,而是來自本地或第三方的副本。除此情況外,200 OK 回應碼應該被優先使用。
重定向訊息
- 300 Multiple Choice,請求擁有一個以上的回應。用戶代理或使用者應該從中選一。不過,並沒有標準的選擇方案。
- 301 Moved Permanently,此回應碼的意思是,請求資源的 URI 已被改變。有時候,會在回應內給予新的 URI。
用戶端錯誤回應
- 400 Bad Request,此回應意味伺服器因為收到無效語法,而無法理解請求。
- 401 Unauthorized,需要授權以回應請求。它有點像 403,但這裡的授權,是有可能辦到的。
- 403 Forbidden,用戶端並無訪問權限,例如未被授權,所以伺服器拒絕給予應有的回應。不同於 401,伺服端知道用戶端的身份。
- 404 Not Found,伺服器找不到請求的資源。因為在網路上它很常出現,這回應碼也許最為人所悉。
- 405 Method Not Allowed,伺服器理解此請求方法,但它被禁用或不可用。有兩個強制性方法:GET 與 HEAD,永遠不該被禁止、也不該回傳此錯誤碼。
伺服器端錯誤回應
- 500 Internal Server Error,伺服器端發生未知或無法處理的錯誤。
- 505 HTTP Version Not Supported,請求使用的 HTTP 版本不被伺服器支援。
RESTful API Service
REST ( Representational State Transfer 表現層狀態轉移 )
優點及限制
- 有唯一的URL表示資源位置,統一的 API 接口。(Uniform Interface)
- 無狀態 (Stateless)
- 可更高效利用快取來提高回應速度 (Cachable)
- 分層系統架構 (Layered System)
- 客戶端服務器分離 (Client-Server)
- 充份利用 HTTP protocal(GET/POST/PUT/DELETE) (Manipulation of resources through representations)
- 可執行程式碼的設計,像是 JavaScript(非必要實作項目) Code-On-Demand (optional)
- RESTful 的狀態,意即 HTTP 的請求狀態,一般 Web 服務中,Server 端和 Client 端交互的資訊,會存在 Server 端的 Session (例如:已登入狀態),在 Client 端再次發送請求的時候,Server 端透過保存在 Server 端的 Session,去執行 request。無狀態的意思,即 Client 端自行保存狀態,在請求 Server 的時候,一併附上給 Server 端,Server 端無保存 Client 端的狀態資訊。
HTTP Method
- POST:新增
- GET:讀取
- PUT:修改(修改整份文件)
- PATCH:修改(修改其中幾個欄位)
- DELETE:刪除
DI - Dependency Injection 依賴注入
- DI (Denpendency Injection) 稱為依賴注入,可解決兩個類別間 耦合性過高 的問題,一般會搭配介面(interface) 形式進行注入,使程式結構保有較高的彈性,以便在需求發生變化時能夠靈活的抽換,達到控制反轉 (IoC) 的效果。 依賴注入有三種注入方式:
- 建構式注入(Constructor Injection)
- 方法注入(Method Injection)
- 屬性注入(Property Injection)
SQL Statement
- 新增內容:insert into table_name (column1, column2, column3...) values (value1, value2, value3...);
- 修改內容:update table_name set column1=value1, column2=value2, column3=value3··· where some_column=some_value;
- 搜尋內容:select table_column1, table_column2, table_column3... into new_table_name [IN another_database] FROM table_name;
- 刪除內容:delete from table_name where column_name operator value;
MVC 軟體架構模式
- MVC 是一種軟體架構模式,它的設計概念是以關注點分離 (separation of concerns, SOC) 為基礎,將應用程式拆解成不同的功能面向,各自處理負責事項,強調團隊分工的概念。
MVC 三核心 (Model、View、Controller)
- 這三種在 Web 端則為前端頁面的 View (HTML / CSS)、後端 API 資料庫的 Model、以及控制 API 資料庫接口的 Controller (JavaScript)。
Model 模型 - 邏輯層
Model 主要管理與資料邏輯有關的事項,若使用者想要對資料進行「新增、修改、刪除、瀏覽」的動作,都需要透過 Model 中的 JavaScript 來操作,如電商網站的免運費、計算訂單總額等等。
View 視圖 - 表現層
View 主要管理第一線與使用者互動的介面,也就是 HTML 樣板,若是動態網站,他則會依照 Model 取出的資料內容,動態呈現使用者需要的網頁內容。
Controller 控制器 - 事件層
Controller 是整個運作過程中的核心,掌握與瀏覽器之間的互動行為,也負責收發 Request 與 Response,因此,通常會在 Controller 設置不同的事件 Event,進而觸發不同指令完成後續動作。
AI 實作平台
- Microsoft Azure
- Google Cloud Platform (GCP)
- Amazon AWS
開源軟體 (open source)
四大開源軟體 (LAMP)
- Linux
- Apache
- MySQL
- PHP
AJAX (Asynchronous JavaScript and XML)
- AJAX 非同步的 JavaScript 與 XML 技術:網頁不用重新整理,就能即時地透過瀏覽器去跟伺服器溝通,撈出資料。伺服器對 AJAX 資料請求回應通常是以三種資料格式其中之一(HTML、XML、JSON),最常與 Javascript 做搭配就是 JSON。
Android 開發
伺服器開發
- SpringBoot 技術
- RESTful API 開發
- 網路協定:TCP / IP、HTTP / HTTPS、OSI 七層協議
- 授權認證協議:OAuth2.0
- 數據緩存技術:Memcached、Redis、Web 緩存原理
- 資料庫操作技術
- 監控、日誌分析技術
前端開發
- 核心:HTML (超文本標記語言 HyperText Markup Language)、CSS (階層式樣式表 Cascading Style Sheets)、JavaScript
- 基礎:瀏覽器兼容性、自定義 UI
- 中階:框架 (vue.js、react.js)
- 協作開發:Package 管理、Model (模塊) 化
- 高階:框架原理