Posts

[計算機概論] 第五講、Data Manipulation (2)

Image
 [計算機概論] 第五講、Data Manipulation (2)  臺大科學教育發展中心CASE reference [計算機概論] 第五講、Data Manipulation (2)  臺大科學教育發展中心CASE 課後感想   簡記課程內容 `Communication with other device DMA Hand Shaking 2-way communication Coordinating activities Parallel/Serial Parallel 平行傳輸:SATA/LPT port 印表機 Serial 一個一個傳:USB Serial 漸漸成為主流 Transfer rate bps, Kbps, Mbps router 傳輸速率通常是 bits/per second Pipelining

[計算機概論] 第四講、Data Manipulation (1)

Image
reference [計算機概論] 第四講、Data Manipulation (1) 臺大科學教育發展中心CASE 課後感想 我們可以使用高階語言,是件幸福的事   簡記課程內容 Computer Architecture CPU Registers Memory Bus Motherboard Machine Instructions Data transfer 主記憶體與 CPU,皆通過 registers 暫存器 LOAD STORE 週邊裝置:滑鼠、Mass storage, 鍵盤 Arithmetic/Logic AND, OR, ADD, SUB, etc SHIFT, ROTATE Control JUMP, HALT CPU 現在分兩類 CISC x86, x86-64 intel 的 CPU RISC 嵌入是系統如手機 CPU 組成 機械指令 156C 組合語言 LOAD, 5, 6C 高階語言 c = a + b: a 的 pointer 在 6C Compile 編譯 把高階語言轉成機械指令 不完整,還有 Link 完整流程: C/C++ ---compile----> object (c out) 還缺 library (函式庫) 人家寫好可以執行的東西 object + library = exe (可執行檔) 這個過程叫 Link Program Execution CPU 執行指令的過程 Instruction register (IR): 執行指令 2 bytes program counter(PC): cell 記憶體位置 1 bytes Machine Cycle fetch:根據 PC 從 main memory 拿資料到 IR decode:根據執行指令,知道要幹嘛 execute:執行 clock 時脈: 1 秒鐘可以執行多少個 cycle (3 * 10^9)  Shift/Rotation Logic shift Arithmetic shift Rotation 會比 + - 運算快,因為電腦 2 進位,shift 通常是 * 2 或 / 2 Controller CPU 跟 MM 透過 bus 溝通 周邊系統存取也透過 bus CPU 再跟某裝置溝通,無法同時跟別人溝通 為了避免同時,因此...

[計算機概論] 第三講、Data Storage (3)

Image
reference [計算機概論] 第三講、Data Storage (3) 臺大科學教育發展中心CASE 課後感想 終於知道為什麼電腦指定值為 0.1 時,實際上會是 0.000000000000000000555111151 因為電腦在算數學的時候都只是「大概」,太好笑ㄌ 雖然他計算速度很快,但是值只是大概XD 因為電腦記憶體不夠,以二進位表示法儲存 10 進位的數字時,只能找「最接近」的數字,而非「精確」的數字。有趣! 知道 overflow 是什麼,truncation error 是什麼~ 接著是檔案傳輸。 電腦在傳輸檔案的時候,會需要壓縮,課程講了常用到的 rar, zip, mp3 等壓縮檔壓縮的方式。 壓縮後的傳輸,是怎麼 Encoding 的,把文字或音訊變成 01010 的信號。 其中有提到很多方法,不過我就是看看而已XD 簡記課程內容 Data Storage 延續上一講  Data Storage (2) Normalized form IEEE normalized Double, Float 記憶數字的大小固定,以 python 來說 float: 4 bytes 如果 a = 0.1 當你強破電腦印出小數以下 50 位時,他會顯示 format ( 0.1 , ".50f" ) '0.10000000000000000555111512312578270211815834045410' 簡單來說就是記憶體位置不夠 當用 4 bytes 存取數字時 = 8 * 4 = 32 bits 那麼最多能存取的位數就是 32 個 bits,所以在存的時候,對電腦來說,0.1 是個大概。 用 2 進位表示法,電腦沒辦法精準給到 0.1,所以會有後面的數字。 因為 1/10 在 2 進位,怎麼換都換不完 除非你叫他記 1/2 那他會很開心 :)) 資料傳輸 資料量很大,如何有效率?資料壓縮 傳輸過程有錯,怎麼辦? Data compression .zip, .rar, .mp3, ,mpg Lossy Relative/difference 影像,連續圖片,但一直紀錄圖片很浪費,因此只紀錄有變化的東西,像是上課教室的黑板是固定的,兩張圖之間就不用一直記黑板 Lossless 非失真 Run-length encod...

[計算機概論] 第二講、Data Storage (2)

Image
 reference [計算機概論] 第一講、Data Storage (2) 臺大科學教育發展中心CASE 課後感想 簡記課程內容 Data Storage 延續上一講  第一講 - Data Storage  最後的 Topic Representation Representation with 0 and 1 聲音 每隔一段時間,紀錄震幅位置 參數設定 Sampling rate:每隔多久紀錄一次(赫 HZ) Bit resolution: 振幅要用 _ bits 表達,ex: 用 1 bytes 只能分 256 種不同高度 Bit rate = sample rate * bit resolution: 聲音檔案每秒鐘有多少 bit 的儲存量 bps: bit per second 數字越高,聲音品質越接近原音,檔案越大 每秒鐘有 200 個數字要記,每個數字 8 個 bits,200 * 8 = 1600 bits/每秒鐘 要寫入 = 1600 bps 數字(延伸) + - * / Binary System Revisited Addition Subtraction Negative Numbers Two's Complement 3 bits 表達一個數字時 _ _ _ 會有七個符號 都是正數: 0 ~ 7  有負數: -4 ~ 3 這樣的設計有一個好處,加法會直接成立: 2 - 1 = 2 + (-1) = 010 + 111 = 1001(第一位捨棄,因為只能記住 3 個 bits) = 001 = 1 Two's Complement Encoding 3 bits -2 表示: 2^3 = 8 8 - 2 = 6 6 的 binary = 110 4 bits -2 表示: 2^4 = 16 16 - 2 = 14 14 的 binary = 2^3 + 2^2 + 2^1 = 1110 Excess 表示法 平移 加法 如果正數是 2^16 個 = 2^n 加入負數就是除以 2 = 2^15 = 2^(n - 1) Overflow 記憶體不夠,導致兩個正的相加變成負的 Bin: 2 + 3 = 010 + 011 = 101 = -3 = 5 (mod 8) -2 + -3 = 101 + 110...

[計算機概論] 第一講、Data Storage (1)

Image
reference [計算機概論] 第一講、Data Storage (1) 臺大科學教育發展中心CASE 課後感想 前陣子在 Gigabyte 做轉職後第一份軟體工程師的工作,因為部門負責的臉部辨識及人型偵測應用程式,除了軟體外,也很吃硬體效能, 常常聽到同事說: 「記憶體位置 、     記憶體多少 、     用了多少、     剩多少、     看一下 RAM、     你電腦有兩個 RAM、     這塊板子要裝 SATA、     看一下 rpm...」 想當然耳,我根本都聽不懂,Google 這些單一名詞之後,努力把他們的定義背下來,大概知道他們可以幹嘛,在幹嘛,然後過一陣子就忘記了,這堂課在 Main Memory, Mass Memory 的部分很幫我解惑。 還多知道了公司的名字 Gigabyte 原來是 2 ^ 30 ,有趣XD 另外檔案系統中,資料是分散存取的,而飛連續,所以有 pointer 有 value,資料間有 link,像是 5 Mb 的檔案 1 Mb 存在 A、2 Mb 存在 B、 2 Mb 存在 C。讓我想起寫程式時用到的資料結構: linked list,程式碼裡的 pointer & value,真的是息息相關! 然而資料不連續地儲存,難免儲存空間會產生 fragmentation problem,所以需要格式化,但是 記憶體存取的次數是固定的,超過一定次數後就會壞掉😱,以後不敢沒事就格式化。 聽完這門課後,終於覺得從單點知識變成線了。 . . . . . ->  雖然還是斷斷續的線 - - - ---- -- - --- 期待他們繼續慢慢從點,變線,最後變成一幅畫~ 簡記課程內容 Data Storage 二進制 好處: Simple  Logical unambiguous: 0, 1, only 這個世界是一個 Binary world,由 0, 1 組成。 二進制會讓表示太長 例如:要表示記憶體位置 0010111010110101 (這裡才 16 bits,現在很多都 64 bits 更長) 太冗長,所以有 16 進制 十六進制 Hexadeci...

資料庫設計 - 有效的使用系統資料 - 第九章 - 補充

Image
單元 1 MySQL 資料庫維護 Workbench 還有一些方便的資料統計資訊可以看,像是哪個 SQL statements 花費最多時間之類的,滿有趣的! Dashboard Network Status 網路狀態、流量 MySQL Status Select 每秒有幾筆,有系統連線就會有資料產生 insert update delete 每秒有幾筆 InnoDB Status 儲存引擎 連接十題資料的 input output 狀態 Performance Reports Memory I/O 資料庫儲存提取實體檔案時的 IO 狀況 High Cost SQL Statements 花費最多時間的前五個 Statements Users & Privileges 這邊可以新增不同 User 並且做權限設定。 例如有不同角色,User 管理 限制帳號 Query 使用額度 資料庫就限制,可能外部連線進來的系統會發生錯誤,超過額度會無法繼續服務前面使用者 Max connections: 每小時最多可連線的 Connection 數量 Concurrent connections: 瞬間可連線數量 Administrative Role DBA 可以擁有所有權限, User Admin 就只能 Create User  單元 2 NoSQL 資料庫 簡介 N ot O nly S QL 非關聯式資料庫 解決讀取海量資料的資料庫技術(FaceBook) Key-Value 資料型態(ex: id = 123) 資料量大時讀取快速 增加/減少資料效率高 擴充方便 用 API 的方式 Query 資料 資料庫軟體 MongoDB Hadoop Redis 雲端服務 Google - Google Cloud BigTable Amazone - DynamoDB Amazone: AWS Service > DataBase >  DynamoDB 單元 4 SQL 語法判斷資料的方式 判斷的語法 深入了解 procedures 的功能 Case 幫助我們對欄位做多種情況的區分 switch if else 用法: select Case sex WHEN 1 THEN "男生" WHEN 0 THEN "女生...

資料庫設計 - 有效的使用系統資料 - 第八章 - 程式語言串接資料庫的設計與實作

Image
Python 串接 MySQL 資料庫 安裝 python 與 mysql 的 connector  執行 pip3 install mysql-connector-python 建立 practice.py 檔練習串接 MySQL 資料庫 # practice.py from mysql import connector connection = connector.connect(host="localhost", database="orders", user="root", password="********") cursor = connection.cursor() cursor.execute("select database();") record = cursor.fetchone() print(record) host:資料庫的 IP 位址 database: database scheme 名稱 user: 當初設定 MySQL 資料庫時的 user 名稱 password: 當初設定 MySQL 資料庫時的 password execute("SQL 語法"): 將要執行的 SQL 語法放入 execute 的參數中 用 fetchone 取回回傳值 當輸入 "select database();" 時,可以看到取得我們匯入到 MySQL 的 orders 資料庫 與在 workbench 執行 select database(); 是一樣的 connection.close():  非常重要,一定要做!!! 資料庫不用,但在開發應用程式時,使用完 connection 要關閉,向外部存取資源時,都會有 建立資源通道 -> 關閉資源通道 的動作,如果沒有關閉, 系統會不斷佔用資源,最後當機,所以常常看到電腦重開機就會恢復正常,多是因為系統累積太多沒有在使用,或是忘記關閉的資源通道造成的,重新開啟釋放資源後,就會恢復正常。 重要觀念 連線可能會發生問題 資料庫使用完畢後要關閉連線 try except finally 用來避免發生錯誤時,系統資源佔用的問題,其結構如下 try # 執行連線,和...