Computer Science (哈佛CS50導讀)- 上
Computer Science50是哈佛大學的免費線上課程,沒有程式基礎的人也可以看完,網路有很多資源,就不詳細介紹了。
各種進位制
- Binary
世界上有1 0種人,一種是懂二進位的人,一種是不懂二進位的人。 - Decimal
0, 1, 2, 3, 4, 6, 7, 8, 9 - Octal, Hex
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
RGB
RGB一般稱為【色光三原色】,R(red)紅、G(green)綠、B(blue)藍,RGB的顏色階調為0-255
R, G, B 分別可以用兩位十六進位來表示:
⇒ #FFFFFF 表示白色,R(red)、G(green)、B(blue)都是最高色階255
⇒ #000000 表示黑色,R(red)、G(green)、B(blue)都是最低色階0
⇒ #FF0000 表示純紅色
Command line
Print Working Directory
List Segmant
Change Directory
MaKe DIRectory
ReMove
MoVe
CoPy
MANual
1 |
|
$ make hello
$ ./ helle
Compiler
- Preprcessing
處理#include - Compilier
C code -> Assembly code - Assembling
Assembly code -> Machine code - Linding
把你的code跟系統的code連結起來
儲存型態
- Binary 4bit
0000 0001 … - 負數(Overflow)
把所有bit反轉+1就是負數! - 32bit 最大元素是2^31 - 1
2147483647
C++ |搜尋法
線性搜尋
一個一個搜二分搜尋法
必須是已經排序過的數列
1 | bool seach(int values, int values[], int n) { |
C++ |排序法
選擇排序法
不斷的找最小值泡沫排序法
倆倆比較,順序錯了就交換上來
1 | void sort(int values[], int n) { |
- 插入排序法
像撲克牌一樣
1 | viod insertion_sort(int values[], int n) { |
- 合併排序法
左右兩邊排好之後再合併起來
1 | void merge(int values[], int start, int middle, int end) { |
- 快速排序法
找中值,左邊都比值小且右邊都比值大那值就在正確位子
1 | int partition(int values[], int start, int end) { |
C++ | 指標(pointer)
- 一種特殊的資料型態,存的是記憶體的位子。
1 | int a = 20; |
程式底層運作(Heap ane Steak)
Heap
動態(malloc)取得的記憶體會在這裡Steak
儲存function, local, variable的地方
1 | // 因為記憶體位子不一樣,所以不會交換 |
圖片解析
- 負片效果
1 | triple.rabtGreen = abs(255 - triple.rgbtGreen); |
- 黑白效果
1 | int avg = (triple.rabtGreen + triple.rabtBlue + triple.rabtRed) / 3; |
鏈結串列(Linked list)
- 優點:
- 新增/刪除資料較Array簡單
- 資料數量可以是動態的,不會有resize問題
- 缺點:
- 搜尋需要從頭開始找起,時間複雜度為O(N)
- 需要額外記憶體來儲存pointer
佇列(Queue)
Queue是具有First-In-First-Out的特徵
- 應用:
CPU、應表機、網站等一次只能執行一個的需求,因此需要有Queue來安排
堆疊(Stack)
Stack 是具有 Last-In-First-Out 的資料結構
- 應用:
- 編輯器的undo
- 遊覽器的上一頁
網路相關知識
- IP位置
每台可以上網的電腦,都會有一個IP位置,都是由4個數字組成範圍是0~255,例如:101.13.113.80,四個數字方法叫做IPv4,因應更多IP位置有了IPv6。 - 域名(Domain)
域名就是我們常用的網址,比起IP可讀且好記,像是Google.com,必須透過DNS(Domain Name System)才能知道確切位置。 - Host
域名必須跟域名供應商買,才能確保你連線時連到正確位置,但可以在自己電腦上調整設定檔,像是把127.0.0.1對到localhost這個網址,在自己電腦上建立DNS紀錄,只有在自己電腦上有效,這也是為什麼測試環境沒有設host就連不上的緣故。 - VPN(Virtual Private Network)
有些服務會鎖IP,只開放特定IP存取,為了提升安全性,讓一些系統只能從公司內部登入,像是大陸的”翻牆”軟體。 - Status Code
- 200 ⇒ OK
- 404 ⇒ ont found
- 500 ⇒ internet server error
- 網頁(HTML)
全名是 超文件標示語言(Hyper Text Markup Language)
分成三部分:
內容與架構 | HTML | ⇒ 骨架 |
樣式 | CSS | ⇒ 外觀 |
程式碼 | Javascript | ⇒ 肌肉 |
1 | <html> |
登入機制
發給你一個識別證,你把識別證存起來,之後戴上就好,瀏覽器提供一個地方叫做”Cookie”,可以讓伺服器想要的資訊放這裡。
存識別證的地方 ⇒ Cookie
對照訪客名冊 ⇒ Session