版本 86edb095f3ef843868eeff443109c02161ee8903
Changes from 86edb095f3ef843868eeff443109c02161ee8903 to eedd0f2cfe3984bb2cac1a2aaa84a6206e664a62
---
title: nickchenchj (陳浩容)
categories: User
...
個人簡介 Personal profile
========================
- 姓名: 陳浩容 (Nick Chen)
- 學號: E14056083
- Email: nickchenchj@gmail.com
- GitHub: [https://github.com/nickchenchj](https://github.com/nickchenchj)
學歷
- 國立成功大學 機械工程學系 (2016-)
- 國立成功大學 資訊工程學系 (2016-)
2021 Linux Internals 個人評量
============================
作業及筆記
---------
- Homework1:
* [開發紀錄 (lab0)](https://hackmd.io/@nickchenchj/2021q1-homework1-lab0) / [GitHub](https://github.com/nickchenchj/lab0-c)
* [開發紀錄 (quiz1)](https://hackmd.io/@nickchenchj/2021q1_quiz1)
- Final Project:
* [開發紀錄 (fiber)](https://hackmd.io/@nickchenchj/linux2021-quiz6c) / [GitHub](https://github.com/nickchenchj/ncku-linux-kernal-internals/tree/main/quiz6c)
題目
----
1) 知道如何寫出時間複雜度和空間複雜度皆為 O(1) 的 abs64 嗎?(沒有分支) 這樣的 abs64 又可用於真實世界哪邊?
* Res:
```cpp=
#include <stdint.h>
int64_t abs64(int64_t x)
{
/* y is -1 if x is negative, otherwise y is 0. */
/* The following code works for both arithmetic shift and logical shift.
* y is -1 (all ones) if x is negative, and y is 0 if x is non-negative. */
int64_t y = ~(((x >> 63) & 1) - 1);
/* XORing with all ones inverts all the bits of (x + y),
* while XORing with all zeros keeps the original value */
/* XORing with all ones (-1) inverts all the bits of (x + y),
* while XORing with all zeros (0) keeps the original value */
return (x + y) ^ y;
}
```
學會的工具
------------
Vim
心得
------------
自我評量分數 (1 到 10 級分)
------------------------
2020 秋季班 個人評量
==================
作業及筆記
---------
- Homework1:
* [開發紀錄 (lab0)](https://hackmd.io/@nickchenchj/sysprog2020_lab0) / [GitHub](https://github.com/nickchenchj/lab0-c)
* [開發紀錄 (quiz1)](https://hackmd.io/@nickchenchj/sysprog2020_quiz1) / [GitHub](https://github.com/nickchenchj/System-Programming)
- Homework2:
* [開發紀錄 (quiz2)](https://hackmd.io/@nickchenchj/sysprog2020_quiz2)
- Homework3:
* [開發紀錄 (quiz3)](https://hackmd.io/@nickchenchj/sysprog2020_quiz3)
* [開發紀錄 (dict)](https://hackmd.io/@nickchenchj/dict) / [GitHub](https://github.com/nickchenchj/dict)
- Homework4:
* [開發紀錄 (quiz4)](https://hackmd.io/@nickchenchj/sysprog2020_quiz4)
Side projects
-------------
- External sorting: [documentation](https://hackmd.io/@nickchenchj/external_sorting) / [GitHub](https://github.com/nickchenchj/external-sorting)
- ETL process: [documentation](https://hackmd.io/@nickchenchj/ETL_Process) / [GitHub](https://github.com/nickchenchj/ETL-process)
- Key-value database: [documentation](https://hackmd.io/@nickchenchj/key-value-storage) / [GitHub](https://github.com/nickchenchj/key-value-database)
題目
------------
1. 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章)
* Res: 如果 x = 1U, y = 2U,則 (x - y < 0) 永遠為 false (overflow),但 (x < y) 將會是 true。
2. 知道 void (*signal(int sig, void (*handler)(int))) (int); 這樣的宣告該如何解讀嗎?
* Res: signal 是一個回傳 pointer to function 的 function,signal 的參數是一個 int 和一個叫做 handler、參數為 int、且回傳型態為 void 的 function。signal 所回傳的 pointer to function 指向參數為 int、回傳型態為 void 的 function。參考: [Understanding typedefs for function pointers in C](https://stackoverflow.com/a/1591492), [cdecl: C gibberish ↔ English](https://cdecl.org/)
3. 知道傅立葉分析在通訊領域的應用嗎?舉例說明
* Res: 可以應用於抗噪耳機,或是去除通話中的噪音。
4. 知道 Bloom filter 嗎?以你寫過或用過的程式,舉例說明這機制帶來的好處
* Res: 知道,這學期有實做 key-value database,當中有運用到 Bloom filter。由於資料庫相當龐大,而且取得資料可能需要進行檔案存取,因此引進 Bloom filter 將能大幅降低在資料庫搜尋的時間。
學會的工具
------------
Git, Perf, Valgrind, Markdown, Makefile, Bash script, gnuplot, etc.