Computer Science 入門

#CS

Posted by Nicolakacha on 2020-09-05

這是程式導師計畫第四期第一週內容筆記的一部份,這篇主要會介紹一些計算機概論的基礎

二進位

不會有 2 出現,因為碰到 2 就要進位
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010

幾進位就代表是以幾為基底的

5340 = 510^4 + 310^3 + 410^2 + 010^1
// ^ 是次方的意思

十進位和二進位轉換

以十進位的 56 為例

  1. 先找到跟它最相近的 2 的倍數,發現是 32
  2. 56 -32 = 24,跟24最接近的 2 的倍數是 16
  3. 24-16 = 8,所以知道 56 的組成是 8 + 16 +32
  4. 等於 1 2^5 + 12^4 + 1*2^3
  5. 轉換成二進位就是 11100

負數是把正數的所有位元顛倒之後 +1

  0000 1010 是 10
  1111 0110 是-10 +
------------------
1 0000 0000 = 0 
^
多掉的一位會丟掉

相加溢位,會出錯

// 以 8 bits 的儲存空間為例:

  0111 0000 = 112
  0100 0000 =  64 +
--------------------
  1010 0000
  1010 1111 (減一)
  0101 0000 (反轉)
             = -80

怎麼儲存小數

容量儲存單位

1 bit 位元
1 byte 位元組 = 8 bits
1 kilobyte = 1024 bytes
1 megabyte = 1024 kb
1 gigabyte = 1024 mn
1 TB = 1024 GB

寫程式到底在幹嘛?

任何程式碼,只是標準化的一套語言幫你把你想做的事情轉譯給電腦看得懂的機器語言。
思考怎麼讓電腦幫你做你想做的事的時候,程式碼不是重點,解決問題才是。
把自己當成電腦,一次只能執行一個指令,解決問題的方法,逐步拆解成條列式

今天有一串數字 1247249841,請問這串數字中有沒有 7,如果有的話,是在第幾個位置?

如果是人腦:唔,用眼睛看就知道了嘛,第一個出現的 7 是在第 4 個位置

如果是電腦:

  1. 從第一個看到最後一個字,看有沒有 7
  2. 如果有 7 這個字就把位置記起來,並且繼續往下找

電腦一次只做一件事,所以我們再把上面的步驟在拆開來:

  1. 看第一個字是不是 7,是的話就記下來,不是就繼續往下找
  2. 看第二個字是不是 7,是的話就記下來,不是就繼續往下找
  3. 看第三個字是不是 7,是的話就記下來,不是就繼續往下找
  4. ...

天吶,這樣要列到什麼時候,我們還是想辦法把重複的步驟簡化條列看看,但原則還是一次只做一件事

  1. 從 1 開始,把一個 n 設為 1
  2. 設這串字的長度為 length
  3. 把找到的位置設為 A,因為還沒開始找,先把 A 設為 -1
  4. 看第 n 個字是不是 7,是的話把 A 變成 n
  5. 把 n+1
  6. 如果 n+1 大於 length 的話,就跳到第 8 步
  7. 跳回第 3 部
  8. 如果 A < 0,代表 A 沒出現過,否則 A 就是答案

網頁前後端

網頁前端傳 request 給後端,後端回傳 response 給前端

前端
是指所有和使用者介面有關的範疇,這個介面可以是指所有裝置的瀏覽器,甚至是應用程式,以瀏覽器的介面來說,就包含了網頁的內容(HTML)、網頁的樣式(HTML)、監聽、控制、改變網頁的程式(JavaScript)。前端會把使用者要做的事,例如搜尋網頁、填寫表單等,發出 request 給後端。

後端
則是接收 request 之後,做一切背後要做的事,主要是處理功能的程式邏輯和收到資料之後的資料儲存,後端主要的技術有處理功能邏輯的程式語言,如 PHP、Python、Ruby on Rails 等,以及儲存資料的資料庫,如 MySQL。

網路背後默默發生的事

我們在瀏覽器打 google.com 按下搜尋的時候,背後發生什麼事?

  1. 瀏覽器去問 DNS:請問 google.com 怎麼走?
  2. DNS 說:你去 10.1.1.1 就是了
  3. 瀏覽器發送 request 給 10.1.1.1
  4. 位在 10.1.1.1 的 google 伺服器 (server) 收到 request
  5. server 去問資料庫,查找你要的關鍵字
  6. 資料庫找到了,把資料拿給 server
  7. server 回傳資料 response 給瀏覽器
  8. 瀏覽器解析回傳的資料並顯示出來

資料結構

  1. Linked list
  2. Queue
  3. Stack
  4. HashTable
  5. Tree

VPN

  • 有一些網路服務會鎖 IP,只開放特定 IP 可以存取,這樣可以提升安全性,讓一些管理系統只能從公司內部登入,那如果不在公司怎麼辦?
  • 可以透過 Virtual Private Network 的服務,類似先連到公司內部,再從公司連到其他地方,在中國大陸若是要翻牆,也可以透過這種機制。

#CS







Related Posts

CS50 IP (Internet Protocol)

CS50 IP (Internet Protocol)

[Html] 關於<meta>的大小事

[Html] 關於<meta>的大小事

Git 與 GitHub

Git 與 GitHub


Comments