# Networking
## OSI 7 層

- 應用層:提供為應用軟體而設計的介面,以設定與另一應用軟體之間的通訊。例如:HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3等。
- 表示層 presentation layer:把數據轉換為能與接收者的系統格式相容並適合傳輸的格式
- 格式的轉換, 加密解密, 壓縮解壓縮。
- ASCII 碼和 EDCDIC 碼之間的轉換
- 會議層 session:把 two node 之間建立維持與終止的通信,
- 設定和維護電腦網路中兩台電腦之間的通訊連接
- SQL, RPC
- 傳輸層 transport :提供傳輸的服務
- 資料傳輸錯誤的偵測和復原,資料封包的 重行排列。
- 把傳輸表頭(TH)加至數據以形成數據包。傳輸表頭包含了所使用的協定等傳送資訊
- like TCP, UDP
- segment
- 網路層:決定數據的路徑選擇和轉寄, 封包交換 package
- 選擇合適的路由和交換結點,確保數據及時傳送。主要包括IP協議
- router : host to host
- 資料連結層:負責網路尋址、錯誤偵測和改錯, 當表頭和表尾被加至數據包時,會形成資訊框(Data Frame)
- 将网络层传下来的IP数据包组装成帧,并再相邻节点的链路上传送帧。
- 訊框 (frame) 與實體位置 (MAC), CSMA/CD
- Switch:
- MAC address, ARP
- Slotted ALOHA
- CSMA
- 實體層:定義實際傳輸資料的硬體設備的規範
- 纜線,hub,
- 实现相邻节点间bit流的透明传输,尽可能屏蔽传输介质和通信手段的差异。
- 做編碼的地方,曼切斯特編碼, 差分曼切斯特編碼
## DNS
IP AND DOMAIN NAME 做 mapping 的分散式資料庫,
而Server必須要回答此Domain Name的真正IP地址。而當地的DNS先會查自己的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的的DNS尋問,依此得到答案之後,將收到的答案存起來,並回達客戶
- 
- 
- linux:
- /etc/hosts
- /etc/resolv.conf
- c. 大部份的 DNS server 都可以接受 recursive 和 iterative 兩種 query 方式, 但是考量負載問題, root name server 只接受 iterative query.
- Master/Slave
- Records:
- Linux command: dig, nslookup(resolve), host
- MX: mail server
- A: IP
- NS: DNS 伺服器
- CNAME: 別名,實際代表這個主機別名的主機名字.
- ex: google.com 可用 1.google.com
- AAAA: IPv6
- SOA :查詢管理領域名稱的伺服器管理資訊
- Name Resolution:
- local DNS -> Root name server -> top domain - com server
- Recursive
- Iterative
- Local DNS 會有 cache 來解省
- TLD: com, edu
- 權威 DNS 伺服器
- 提供主機名(英語:host name)到 IP 位址間的對映
- 管理 DNS 紀錄的主機
- 多數人都會使用 DNS 代管服務。會在購買網域名稱的時候就使用域名註冊商所提供的 DNS 代管或是用其他第三方 DNS 代管,代管主機就是你的網域名稱的權威伺服器。
## TCP/UDP
- Intro
- 都是屬於 transport layer, TCP 是可靠的通信傳輸,UDP 則非可靠信傳輸
- UDP 在發送 data 之前不需要先建立 link, TCP 需要
- TCP 在傳送 data 時,會確保資料一定會 client 端, UDP 則不保證, 所以需要看時機來採用不同的 protocal
- TCP 快, UDP 慢
- Ttransimission Control Protocol
- reliable
- FSM
- 可靠資料傳輸原理(reliable data transfer protocol, rdt)
- rdt1.0
- 主要有傳輸端與接收端兩個部分,資料傳輸方式很單純,傳輸端等待上層傳資料進來,收到上面的資料以後裝成封包送出去。接收端收到封包以後 將封包解開,把訊息往上送。
- rdt2.0
- 考慮到了資料錯誤的情形,當接收端收到資料會有ACK(相當於OK)與NAK
- rdt2.1
- sequence number,同樣使用ACK與NAK來確認訊息,封包的號碼可以用來確認是否重新傳輸封
- rdt2.2
- 兩種確認訊息 處理起來比較費力,因此2.2中移除NAK的訊息
- rdt3.0
- 封包遺失與資料錯誤的情形,除了使用ACK機制,另外在傳送端多了倒數計時器,封包送出去如果超過時間仍未收到ACK或是收到不正確編號的ACK,則再送出封包一次。
- Go-Back-N(GBN)與Selective Repeat(SR)
- rdt: Stop-and-Wait機制,效能方面無法讓人接受,因為送出封包後必須等待對方回應才能繼續傳送,假如連線Delay太長,整體效率會嚴重低落。
- Go-Back-N(GBN)
- 傳輸多個封包 必須有個暫存的區域,暫存的區域中存在著窗格大小(Window Size) N,存放著各種封包(已確認、已送出但未收到ACK、未送出的封包等等)。
- Selective Repeat(SR)
- GBN的傳送方法 往往會造成不必要的重複,因此SR的傳送方法 就是只針對未收到的封包做重新傳輸的動作。首先規劃出大小為N的窗格來限制大小,窗格的基底會停留在最近一個尚未收到ACK的封包區域,當封包時間逾時會重新送出封包,直到收到該封包的ACK 窗格基底才會往前移動。
- 可以對順序資料的封包控制
- receive window(window size): 控制流量
- 有 SYN, ACK, RST, FIN
- SYN: 發送連結
- ACK: response
- RST: reconnect
- FIN: finish
- why 是可靠ㄉ?
- 因為保證資料的順序性,每個 id 都會一個一個發送,所以會需要 ACK 的 respones ,所以確認說封包是否有丟失的狀態。
- 在 buffer 裡面會紀錄這些 ID 封包。所以可確認與重傳
- 流量控制: Sliding window
- 想像一個水管,頻寬有多少就能發送多少,再送的時候如果反應不過來,樣用 buffer 來存取
- 主要是為了防止丟包超時重傳。
- User Datagram Protocol
- 如果封包丟失部會重新發。
- 不需要大量的資料結構,與處理邏輯
- 可以作為廣播應用,即便網路擁塞也不會怎樣,繼續送資料
- ex: DHCP, video, audio, SNMP, streaming
- checksum: 偵測 error
- 擁塞控制 Congestion Control
- cwnd 單次傳送量
- TCP 封包遺失都是由網路繁忙造成的。
- method
- AIMD (Additive-Increase, Multiplicative-Decrease): sender一次增加一定的rate, 如果發生lose(擁塞) 就把rate減少
- Slow Start: 與AIMD類似 改成sender一次增加次方數rate
- TCP:
- 低於Threshold時以Slow start也就是次方方式加上去, 進入congestion-avoidance狀態,改成以線性方式增加
- 當收到3個重覆ACK後Threshold設成1/2,CongWin設成新的Threshold 當timeout發生時Threshold設成1/2,ConWin設為 1 MSS
- ssthresh (Slow Start Threshold, ssthresh
- 當收到3個重覆ACK後Threshold設成1/2,CongWin設成新的Threshold 當timeout發生時Threshold設成1/2,ConWin設為 1 MSS
- 當 cwnd 到達此門檻,或 觀察到壅塞時,即停止 指數成長 的 慢啟動,進入 線性成長 的
- 三項交握
- 最主要的目的就是双方确认自己与对方的发送与接收是正常
- SYN (client)
- SYN, ACK (server)
- ACK (client)
- 四次挥手:關閉連線亦必需是雙向確認
- FIN (client)
- ACK (server), 需要等 CLOSE_WAIT(server) CLOSE_WAIT是被动关闭形成的
- FIN, ACK (server)
- 如果沒有這個, TCP 沒有專門處理這個東西, Linux 可用 tcp_fin_timeout
- 告訴主動關閉方
- ACK (client)
- TIME_WAIT(送完後 client 才真正關閉)
- 是主动关闭形成的
## HTTP
- STATUS
- 200
- 300: 重定向
- 400: client error
- 500: server error
- METHOD:
- GET
- POST: create
- PUT:
- PETCH: update partial
- DELETE
- OPTIONS: 回傳這個伺服器支援的所有HTTP Method。 all method, 来测试服务器的功能。
- HEAD: like GET, no response body, get metadata
- CORS
- 防止其他網域存取相關資料
- HTTP1.0
- 默認使用短連接,
- ex: css js image
- 消耗 RTT: time for a small package to travel from client to server and back
- 往返時間. 指的是,網路封包從發送命令
- 2RTT + file transmission 對於每個 object
- HTTP1.1
- 默認使用長連接
- connection: keep-alive
- 較少的CPU和記憶體的使用(由於同時打開的連接的減少了)
- 允許請求和應答的HTTP管線
- 降低擁塞控制 (TCP連接減少了)
- 減少了後續請求的延遲(無需再進行握手)
- 報告錯誤無需關閉TCP連接
- persistent
- - 2RTT + file transmission 對於 all object
- HTTP2.0
- 新的二進位制格式, 以前適用文本ㄉ
- 連接共享:
- Header 壓縮過
- server to client
- 以往是只能 client to server
- HTTP 問題
- 由 client 發 request to server, but may 被切聽或竄改 或冒充問題, -> HTTPS
- HTTPS
- 在 HHTP 與 TCP 中間多加一層 TLS/SSL
- 使用非對稱加密, 為公鑰與私鑰是不一樣ㄉ
- 私钥由服务端自己保存
- HTTPS
- 
- first TCP handshake
- second SSL handshake
- Authentication (Handshake): 使用 Public/Asymmetric Key Encryption Algorithms.
- Key Exchange (Handshake): 使用 Public/Asymmetric Key Encryption Algorithms/Key Exchange protocol.
- Encrypted Data Transfer (Record): 使用 Private/Symmetric Key Encryption Algorithms
- 前兩階段又合稱為”SSL Handshake protocol”, 其目的是要認證 server 並且決定要用來進行實際的資料傳輸之對稱式金鑰, 第三步稱為”SSL Record protocol”, 用意在於傳輸加密資料.
HTTPS connection 發起之前, 先透過 SSL/TLS 協議來協調 client/server, 使兩邊都可以產生出一個基於對稱式金鑰加密演算法的 secret. 有了這個 secret, 就可以在普通的 HTTP 協議中傳輸經過 secret 加密過後的資料內容. 因為這個 secret 是安全的, 所以被加密的內容也就是安全的了.
## ARP
- internet layer
- IP to mac address
- 在 host or router 中都建立一個 ARP cache table
- MAC address 為 physical address, 由製造商所提供寫在硬體內部的,且不能更改,每個乙太設備的 amc 都是唯一ㄉ
- DATA 傳輸時
- 高到低: IP data(internet layer) -> mac frame(data link)
- mac frame 在傳送時的 source address or dest 都適用 mac address
- 間單來說 ip: 是在 host and host 中溝通, mac 是 data link 之間在溝通
- ARP 流程
- 在區域內網, A -> B with IP data, A 會先去 ARP table 中找是否有 ip address map mac address, 有的話寫入到 mac frame 中,then send mac frame to B host
- if no -> A will broadcast 到所有 host 中去找到相對應ㄉ ip and mac, then write to table
- if A and B not in same 網路中,不能直接溝通,需要通過 router 轉發到 B host 中找到 B host
- 当时并不用IP地址,只用MAC地址,后来随着网络中的设备越来越多,整个路由过程越来越复杂
- 是因为IP地址是和地域相关的,对于同一个子网上的设备,IP地址的前缀都是一样的,这样路由器通过IP地址的前缀就知道设备在在哪个子网上了,而只用MAC地址的话,路由器则需要记住每个MAC地址在哪个子网,这需要路由器有极大的存储空间,是无法实现的。
## ICMP
- PING
- ICMP
- 测试两个主机的连通性。
- router: ip path
- switch: 识别MAC地址并根据MAC地址转发数据帧
## DHCP
- 動態分配 ip
- 流程
- DHCP discover
- DHCP offer
- DHCP request
- DHCP ack
## NAT
主要主要改變封包重傳送的位置,減輕IP使用量(因為 IP 有限),or 可以將 private ip to public ip then to the internet.
- 功能:
- 防火牆 package filter
- load balance
- 轉 port
- 
- Main: 主要是透過一個 table 去做 mapping
-
## ROUTE
- router 是兩個網路做連接, manybe diff data link layer but same internet layer
- switch
- longest prefix matching
- FIFO
- router algo
- dijkstra
- distance vector
- bellman ford
## PORT
## IP
- private ip
- A类地址:10.0.0.0~10.255.255.255
- B类地址:172.16.0.0~172.31.255.255
- C类地址:192.168.0.0~192.168.255.255
- public ip
- subnet
- 利用位址的前半部分劃分組。在一個IP網路中劃分子網路使我們能將一個單一的大型網路——至少(邏輯上)看上去如此——分成若干個較小的網路
- router 對應到一個 host 其實不是很優,對應到 subnet 是最棒ㄉ
- network id + host id
- 網路遮罩
- 調整 netowrk id 去限制他
- 表示這個網路或子網路之中可以使用的IP位址有多少
- CIDR
- 提升IPv4地址空间分配效率
- Gateway:
- Gateway主要功能是用來"連接兩個不同的網段"。也就是說,如果系統判定目的端為不同網段,就會將封包丟給Gateway來做轉送,反之,如果判定為相同網段,即直接傳到目的端,不會經由Gateway.
1.A電腦連至B電腦: 相同網段 (不經由Gateway,直接連線)
2.A電腦連至Internet: 不同網段 (封包由Gateway來轉送,經由ADSL連至Internet)
3.B電腦連至A電腦: 相同網段 (不經由Gateway,直接連線)
4.B電腦連至Internet: 不同網段 (封包由Gateway轉送,但因Gateway留空,故無法上網)
經由以上環境可以發現,如果您的電腦不需連上Internet,而只需與內部同網段電腦互通,那Gateway是可以不用設的。
主機的IP就是GateWay;或者是IP分享器,本身分配給其他電腦上網,那台IP分享器的IP就是Gateway。
## Nginx
- Apache
- 反向代理&負載平衡
- 設定 config
- 方法
- round-robin
- least-connected
- IP-hash
## Application
- FTP: 21
- Telnet: 23
- SMTP: 25
- POP3: 110
- Route: 53
- HTTP: 80
- HTTPS: 443
## ICMP
- internet layer
- 解析網路封包或是分析路由的情況
- 所傳回來的錯誤訊息進行分析,而網路管理人員則利用這個協定的工具來了解狀況
## SMTP
- user agent
- mail server
- message queue
- port: 25
-
## Mail
- SMTP 伺服器
- 主要處理外送的電郵
- 流程: I send mail -> 透過 SMTP -> ISP SMTP -> ISP listen -> ISP 確認身份 -> then message queue -> send to client
- 分成
- mailbox: incoming messge
- message queue
- SMTP protocol
- user agent
- mail server
- Use TCP connect
- POP3 伺服器
- 主要處理內收的電郵
- 透過 text file 去存取
- 流程: I send mail -> 在兩方的 POP3 會有 xxx.txt -> 寫入訊息 -> 當 client request accept mail -> -> POP3 request password -> client can see email
## SDN
## Linux
- traceroute
- 兩主機間各節點分析
- 追蹤兩部主機之間通過的各個節點 (node) 通訊狀況的好壞呢
- ex: 如果我們連線到 yahoo 的速度比平常慢,你覺得是 (1)自己的網路環境有問題? (2)還是外部的 Internet 有問題?如
- ping
- 主要透過 ICMP 封包 來進行整個網路的狀況報告
- tracepath
- linux
- ifconfig
- ipconfig
- 看網卡 or ip 資訊
- route
- 查詢、設定路由表 (route table)
- mac: netstat -rn
- netstat
- TCP/IP 的網路介面
- 網路連線狀態
- host
- 查出某個主機名稱的 IP 喔
- from /etc/resolv.conf
- linux base
- nslookup
- like host
- can show record
- window base
- dig
- linux base
## VPN
## AWS
## ELSE
- 在 broswer 輸入 www.google.com
- 從 broswer search DSN 暫存,沒有的話 -> hosts 去搜尋,如果都沒有 0-> local dns ->
- find local dns cache (recursive) -> iteration(to TLD) -> then connect ip ->
- use TCP three way handshack -> which port (80) -> http -> return html
- client get html -> render
- Cookie
- 保留 data 在本地端, token ...等
- 由Server送給使用者瀏覽器的一小塊資料(文檔)。瀏覽器會儲存它並且在瀏覽器下一次發送要求的時候將它送回原本送來的伺服器。
- Session
- 在 server 端ㄉ,紀錄在 server端上的使用者訊息, ex: token id ...
## 經驗分享
- Real Time Streaming Protocol
- Socket
- HTTP
- nginx
## 面試
HTTP 遇到什麼問題:
無法驗證身份
訊息沒加密
無法驗證訊息完整性
HTTPS 如何解決這些問題:
非對稱加密 - 驗證身份
對稱加密 - 將訊息加密
雜湊(Hash)- 驗證訊息完整性
need
- IP
- TCP
- 不太
Java
static 是一個關鍵字,是用來修飾成員(member,類別的屬性、方法或子類別),使其成為靜態成員。
靜態的意思是,在程式載入記憶體的時候,跟著程式一起在記憶體中佔有空間,而不是主程式開始執行後才跟記憶體要空間。
## bandwidth
光纖: 電纜的兩端之間傳輸光
因為每根光纖都可以通過稱為波分複用 (WDM) 的過程傳輸許多不同波長(通道)的光。因此,光纖鏈路的總帶寬是每通道數據速率和復用通道數的倍數。
光纖的典型折射率值
CDN: 即在全球範圍內分發內容,並將該內容從附近位置提供給客戶端,使我們能夠顯著減少所有內容的傳播時間。數據包。
Measuring Latency with Traceroute: ex: 看 package hop 到哪些地方誒hop listimt, it's return ICMP message,
改善延遲:
- 改進光纖鏈路的質量,讓我們更接近光速:更好的材料具有更低的折射率和更快的路由器
- 我們可以縮短距離——地球上任意兩點之間的最短距離由它們之間的大圓路徑定義
## TCP
- :丟失數據的重傳、按順序交付、擁塞控制和避免、數據完整性
加載網頁通常需要從數十個不同的主機中獲取數百個資源。反過來,這可能需要瀏覽器建立數十個新的 TCP 連接,每個連接都必須承擔 TCP 握手的開銷。毋庸置疑,這可能是 Web 瀏覽延遲的重要來源,尤其是在較慢的移動網絡上
TCP Fast Open (TFO) 是一種機制,旨在通過允許在 SYN 數據包內傳輸數據來消除對新 TCP 連接施加的延遲懲罰。但是,它確實有自己的一套限制:SYN 數據包內的數據負載的最大大小有限制,只能發送某些類型的 HTTP 請求,並且由於需要加密 cookie。有關 TFO 的功能和限制的詳細討論,請查看最新的 IETF 草案“TCP Fast Open”。
除了第一次的完整握手,之后的握手,在SYN中就可以携带数据,这样的好处是可以减少一个RTT。
flow control, congestion control, and congestion avoidance.
- flow control: 可防止發送方將其可能無法處理的數據壓倒接收方
- rwnd
- buffer
- 當第一次建立連接時,雙方使用他們的系統默認設置啟動他們的 rwnd 值
- 接收緩衝區 (Receiving Buffers)
- 時常使用 環狀佇列 (circular queue) 資料結構來實作, 使空間有效率的復用,並避免大量資料的搬移。
- 如果由於任何原因,一方無法跟上,那麼它可以向發送方通告一個較小的窗口
- 如果窗口達到零,則將其視為在應用層清除緩衝區中的現有數據之前不應發送更多數據的信號
- 然而 發送視窗 皆需取決於 接收端?
- 這種 動態調整視窗大小,來實現流量控制的方式,
- 即是鼎鼎大名的 — — 滑動視窗 (Sliding Window)。
- Slow-Start
- 發送方和接收方都不知道新連接開始時的可用帶寬,因此需要一種估計它並使其速度適應網絡內不斷變化的條件的機制。
- linux command: see cwnd initcwnd
- 稱為“指數增長”算法
壅塞視窗 (Congestion Window, cwnd): 在收到確認 (ACK) 之前,可以發送到網絡中的資料量的 傳送端限制。
流量控制 的 接收視窗 (rwnd) 是: 接收未完成資料量的 接收端限制。
慢啟動門檻 (Slow Start Threshold, ssthresh)
慢啟動 (Slow Start)、壅塞避免 (Congestion Avoidance)、
快速重送 (Fast Retransmit) 和 快速恢復 (Fast Recovery)
- Congestion Control : 指數呈漲
- 使用保守窗口初始化連接,並且對於每次往返,將傳輸中的數據量加倍
- Congestion Avoidance: 線性成長
- TCP 是專門為使用丟包作為反饋機制來幫助調節其性能而設計的
- 直到它超過接收器的流量控制窗口、系統配置的擁塞閾值 (ssthresh) 窗口或直到數據包丟失,此時擁塞避免算法
- 原來TCP採用的是乘減加增(AIMD)算法:當發生丟包時,將擁塞窗口大小減半,然後每次往返緩慢增加一個固定量的窗口。然而,在許多情況下,AIMD 過於保守,因此開發了新的算法。
- 比例速率降低 (PRR) 是 RFC 6937 指定的一種新算法,其目標是提高數據包丟失時的恢復速度。好多少?根據開發新算法的谷歌所做的測量,它為有數據包丟失的連接提供了 3-10% 的平均延遲減少。
Bandwidth-Delay Product
前面都是沒有超過傳輸大小
如果發送方或接收方超過了未確認數據的最大數量,則它必須停止並等待另一端在繼續之前確認一些數據包。需要等多久?這是由兩者之間的往返時間決定的!
Head-of-Line Blocking
TCP 數據包在上線時都帶有唯一的序列號,並且數據必須按順序傳遞給接收者
隊頭阻塞造成的延遲使我們的應用程序不必處理數據包重新排序和重組
## UDP
WebRTC
語音和視頻通話以及其他形式的點對點 (P2P) 通信在瀏覽器中通過 UDP
不保證消息傳遞
沒有確認、重傳或超時
不保證交貨順序
無數據包序列號、無重新排序、無隊頭阻塞
無連接狀態跟踪
沒有連接建立或拆卸狀態機
無擁塞控制
沒有內置的客戶端或網絡反饋機制
幾乎所有的協議設計決策都留給它上面的應用程序
SCTP 提供了 TCP 和 UDP 的最佳特性:面向消息的 API、可配置的可靠性和交付語義,以及內置的流量和擁塞控制機制。對協議的全面分析超出了我們的討論範圍,但是,讓我們簡要介紹一些 SCTP 概念和術語:
- Principle
-
- 客戶至上
- 領導者從客戶開始,向後工作。他們積極工作以贏得併保持客戶的信任。領導者雖然關注競爭對手,但他們對客戶很著迷。
- 所有權
- 領導者是所有者。他們從長遠考慮,不會為了短期結果而犧牲長期價值。他們代表整個公司行事,而不僅僅是他們自己的團隊。他們從不說“那不是我的工作”。
- 發明和簡化
- 領導者期望並要求他們的團隊進行創新和發明,並且總是想方設法簡化。他們具有外部意識,從四面八方尋找新的想法,不受“不是這裡發明的”的限制。當我們做新事物時,我們承認我們可能會被長期誤解時間。
- 是對的,很多
- 領導說得對。他們有很強的判斷力和良好的直覺。他們尋求不同的觀點並努力推翻他們的信念。
- 學習和好奇
- 領導者的學習永遠不會結束,他們總是尋求提高自己。他們對新的可能性充滿好奇並採取行動去探索它們。
- 僱用和發展最好的
- 領導者通過每次招聘和晉升提高績效標準。他們認可傑出的人才,並願意在整個組織內調動他們。領導者培養領導者並認真對待他們在指導他人方面的作用。我們代表我們的員工努力創造諸如職業選擇之類的發展機制。
- 客戶至上
- 領導者從客戶開始,向後工作。他們積極工作以贏得併保持客戶的信任。領導者雖然關注競爭對手,但他們對客戶很著迷。
- 所有權
- 領導者是所有者。他們從長遠考慮,不會為了短期結果而犧牲長期價值。他們代表整個公司行事,而不僅僅是他們自己的團隊。他們從不說“那不是我的工作”。
- 發明和簡化
- 領導者期望並要求他們的團隊進行創新和發明,並且總是想方設法簡化。他們具有外部意識,從四面八方尋找新的想法,不受“不是這裡發明的”的限制。當我們做新事物時,我們承認我們可能會被長期誤解時間。
- 是對的,很多
- 領導說得對。 他們有很強的判斷力和良好的直覺。 他們尋求不同的觀點,並努力推翻自己的信念。
- 學習和好奇
- 領導者的學習永遠不會結束,他們總是尋求提高自己。他們對新的可能性充滿好奇並採取行動去探索它們。
- 僱用和發展最好的
- 領導者通過每次招聘和晉升提高績效標準。他們認可傑出的人才,並願意在整個組織內調動他們。領導者培養領導者並認真對待他們在指導他人方面的作用。我們代表我們的員工努力創造諸如職業選擇之類的發展機制。
- 堅持最高標準
- 領導者有無情的高標準——很多人可能認為這些標準高得不合理。領導者不斷提高標準並推動他們的團隊提供高質量的產品、服務和流程。領導者確保缺陷不會被發送到生產線上,並且問題得到解決,以便他們保持固定。
- 大膽思考
- 小處思考是一種自我實現的預言。領導者創建並傳達一個大膽的方向,以激發結果。他們以不同的方式思考並四處尋找服務客戶的方法。
- 行動偏見
- 速度在商業中很重要。許多決定和行動是可逆的,不需要深入研究。我們重視經過計算的風險承擔。
- 節儉
- 事半功倍。限制孕育了足智多謀、自給自足和發明創造。增加員工人數、預算規模或固定費用沒有額外加分。
- 贏得信任
- 領導者認真傾聽,坦誠交談,尊重他人。他們在口頭上自我批評,即使這樣做很尷尬或尷尬。領導者不相信他們或他們團隊的體味聞起來有香水味。他們以自己和團隊為基準最好的。
- 深潛 Dive Deep
- 領導者在各個層面運作,與細節保持聯繫,經常審計,並且在指標和軼事不同時持懷疑態度。沒有任務是在他們之下的。
- 有骨幹;不同意並承諾
- 當他們不同意時,領導者有義務恭敬地挑戰決定,即使這樣做會讓人不舒服或筋疲力盡。領導者有信念,有頑強。他們不會為了社會凝聚力而妥協。一旦做出決定,他們就會全身心投入。
- 交付成果
- 領導者專注於其業務的關鍵投入,並以正確的質量及時地交付這些投入。儘管遭遇挫折,他們還是挺身而出,永不落伍。
- 努力成為地球上最好的雇主
- 領導者每天都在努力創造一個更安全、更高效、更高績效、更多樣化和更公正的工作環境。他們以同理心領導,在工作中獲得樂趣,並讓其他人輕鬆獲得樂趣。領導者自問:我的同事在成長嗎?他們有權力嗎?他們準備好迎接下一步了嗎?領導者對員工的個人成功有著遠見和承諾,無論是在亞馬遜還是其他地方。
- 成功和規模帶來 廣泛的責任
- 我們從車庫開始,但我們不是沒有了。我們很大,我們影響世界,但我們遠非完美。我們必須謙虛謹慎,即使是我們行為的次要影響。我們的當地社區、地球和子孫後代每天都需要我們變得更好。我們必須下定決心開始每一天,為我們的客戶、員工、合作夥伴和整個世界做得更好、做得更好。我們必須每天結束,知道我們明天可以做得更多。領導者創造的比他們消耗的更多,並且總是讓事情比他們發現它們的方式更好。
遇到困難
S: situation, 情境, 問題的背景陳述。以前曾經面臨什麼情況?
T: task, 任務, 但我比較喜歡把它看作是target。關於這個情況下要完成的目標、任務。
A: action, 行動。您採取了什麼行動?
R: result, 結果。這些行動的結果是什麼?
- 自我介紹:
你好,我的名字叫做郭鎮源,目前就讀臺灣科技大學資管所,是碩二的學生,在碩士研究領域為深度學習相關領域 應用於推薦系統,而在目前的生涯中,主要分別實習過兩間公司,第一間為雲端相關公司,其中主要負責開發內部系統與製作相關教材,第二間時負責處理資料相關專案。
其實 從過去到現在,我接觸過很多不同領域,
對於我的個人優點是善於與他人溝通與勇於嘗試,例如在我的經歷中常與他人共同開發系統,需要很多的與別人分配工作或是配合他人的需求,而在我也積極參與相關比賽,像是在大學期也參與過許多雲端或是黑客松競賽
我會應徵這份工作的原因是因為職能與過往的經驗相符,且看好未來工業電腦在5G時代的物聯網的發展。希望未來在這塊新領域有所發揮,幫公司及自己創造新的價值。
- 大學時期
- 專題
- S: 遇到不熟習的領域, like 深度學習
- T: 目標完成專案
- A: 分配工作,組員之間互相學習
- R: 完成專題
- 碩士
- 研究題目
- S: 實習
- T: 目標完成專案
- A: 分配工作,組員之間互相學習
- R: 完成專題
- 實習階段 - ECV
- S:
- T: 目標完成專案
- A: 分配工作,組員之間互相學習
- R: 完成專題
- 實習階段 - 友達
- S:
- T: 目標完成專案
- A: 分配工作,組員之間互相學習
- R: 完成專題
### Linux
0: 關機模式
1: 單用戶模式 (破解root密碼)
2: 無網路支持的多用戶模式
3: 有網路支持的多用戶模式 (工作最常使用到的)
4: 保留,未使用
5: 有網路支持的X-windows支持多用戶模式(桌面)
6: 重新引導系統,就是重新啟動電腦的意思
- Unix和Linux
- Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
- Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。
- Linux kernal
- 系统内存管理
- 应用程序管理
- 硬件设备管理
- 文件系统管理
- User and app
- 用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。
- 内核空间(Kernel Space) :内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code) 。
Linux 开机启动过程?
了解即可。
1、主机加电自检,加载 BIOS 硬件信息。
2、读取 MBR 的引导文件(GRUB、LILO)。
3、引导 Linux 内核。
4、运行第一个进程 init (进程号永远为 1 )。
5、进入相应的运行级别。
6、运行终端,输入用户名和密码。
针对网站访问慢,怎么去排查?
首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。
如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还是某些数据加载慢。
针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。
如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看 MySQL慢查询的日志,看看是不是某条 SQL 语句查询慢,导致网站访问慢。
如果是出口带宽问题,那么久申请加大出口带宽。
2、如果慢查询比较多,那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
3、如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等等。然后也可以搭建MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
4、申请购买 CDN 服务,加载用户的访问。
5、如果访问还比较慢,那就需要从整体架构上进行优化咯。做到专角色专用,多台服务器提供同一个服务。
描述Linux系統從開機到登陸介面的啟動過程.
Ans:
1. 開機BIOS自己檢查,加載硬碟。
2. 讀取MBR→MBR引導。
3. grub引導Menu ( Boot loader )。
4. 加載kernel.
5. 加載init process,根據initab文件設定運行級別。
6. init process,執行rc.sysinit文件。
7. 啟動kernel model,執行不同級別的腳本程式。
8. 執行/etc/rc.d/rc.local
9. 啟動mingetty,進入系統登陸介面。
給出正確的關機和重新啟動服務器的命令
pthread有寫過嗎!?
Linux下IPC方式有哪些!? share memory, signal, kill, FIFO
等等相關function有用過嗎!?
LILO表示Linux Loader是用于Linux操作系统的引导加载程序。大多数Linux操作系统使用LILO将操作系统引导到主内存中以启动操作。
解释Linux中的文件权限类型?
回答:每个文件或目录都具有3个权限
他们是
Read--它是指只有他们可以读取该文件。
Write--这是指他们可以写入文件或修改目录的文件。
Execute--影响用户执行文件或查看目录文件的能力。
什么是inode和进程ID?
回答: inode是赋予每个文件的唯一名称,进程id是赋予每个进程的唯一名称。
getpid():查找唯一的进程ID。
getppid():查找唯一的父进程ID。
chmod
4-读取权限
2-写入权限
1-执行权限
chown”代表变更文件的所有者和组。此命令用于更改指定用户或组的一个或多个文件或文件夹的所有权。
comm file1 file2
chmod:修改文件的权限
chown:即change owner,修改文件和目录的所有者权限
chattr:chmod的底层操作,锁定文件
偵錯程式有 gdb,kdb
kgdb。另一種方法是在系統崩潰時,將記憶體儲存起來,供事後進行分析。多數情況下,單步調式跟蹤可以滿足需求,但是單步跟蹤除錯也有缺點。如遇到如下幾種情況時:
錯誤發生在客戶的機器上。
錯誤發生在很關鍵的生產機器上。
錯誤很難重現。
chmod
文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
rwx rwx rwx
https://www.runoob.com/linux/linux-comm-chmod.html