ALL POSTS

Posts · Page 7

golang mvc pattern

golang mvc pattern 只前只有學過spring cloud 框架來使用mvc架構來重構一下 bash Copy root@HOME-X213212:~/golang/mvc# tree . ├── controller │ └── productController.go ├── dao │ └── dao.go ├── entity │ └── product…

Programming & Software Engineering
golang mvc pattern

golang design pattern & unit test

golang design pattern 一個專案可能要有設計模式來規劃,這樣在寫程式的時候才可以不會那麼雜亂 來學習一下設計模式 unit test code Copy ├── go.mod ├── main.go └── untils ├── untils.go └── untils_test.go code Copy package untils imp…

Programming & Software Engineering
golang design pattern & unit test

golang websocket

golang websocket server go Copy package main import ( "log" "net/http" "github.com/gorilla/websocket" ) func main () { upgrader := & websocket . Upgrader { //如果有 cross domain 的需求,可加入這個,不檢查 c…

Programming & Software Engineering
golang websocket

golang grpc

grpc code Copy apt install protoc-gen-go apt install protobuf-compiler proto https://www.coder.work/article/198885 https://blog.csdn.net/qq_33565142/article/details/109647937 https://www…

Programming & Software Engineering
golang grpc

golang traffic shaving

golang traffic shaving 模擬 time.Sleep(2 * time.Second)模擬server來不及處理這個request 假設 ddos 攻擊runtime.NumGoroutine() 可以做削峰,也可以防止ddos smallPool = make(chan struct{}, 100) 也可為我們的server做buffer go Copy…

Programming & Software Engineering
golang traffic shaving

golang channel

golang channel 以下列例子假設 pump 為生產者, suck 為消費者,假設消費者 先執行的話則有可能 會阻塞, 所以預設buffer 為2的情況下,可以看到我們可以在suck function 透過按下 enter passue 繼續執行 可以看到buffer 永遠會先有值,則 suck 不會發生阻塞, 這樣我們的程式就不會阻塞,可以嘗試更改 buffer 為…

Programming & Software Engineering
golang channel

learn rust

learn rust 紀錄一下學習rust 筆記,目前大概會以寫web可能會用到的業務邏輯來看大概會用到rust什麼特性。 https://doc.rust-lang.org/stable/std/string/struct.String.html http://jxz1.j9p.com/pc/rustqwzn.pdf https://course.rs/basic/resul…

Programming & Software Engineering
learn rust

linux namespace 實現小型container

mini-docker 最近看到docker 又看到了podman 突然想了解一下容器底層到底如何實現,整體步驟參考 https://coolshell.cn/articles/17010.html 還蠻清晰的,透過linux namespace最後可以看到用簡單的c語言就可以實現一個container 概念 code Copy #define _GNU_SOURCE #inc…

Systems, OS & Compilers
linux namespace 實現小型container

RISC-V XV6 不依靠lib 完成 3 way handshake

xv6 network-net 3 最近土法煉鋼完成三方交握的部分,沒錯這個實驗還在繼續,為了證明最初的概念是對的。 server 我們要完成的是三方交握的第一階段,也就是 bind - listening - accept 能不能節省掉這個步驟是可以的 當我把sockecvudp while 迴圈裡 if判斷是拿掉的當下就是變成所有流量只要有socket 監聽就可以直接回傳。…

Systems, OS & Compilers
RISC-V XV6 不依靠lib 完成 3 way handshake

RISC-V XV6 LAB-NET2 network device 大致概念

xv6 network-net 2 5hr 這一次的trace 要結合前面的部分內容來推測,要完成一個 multi-process ping 改裝成 server bind listen 到底會經過那些步驟. 就已中斷來說我們網卡確實是可以接收封包 但是僅限於 udp 為了證明上一次的思考方向是對的我們嘗試構造一個tcp 連接,不知道會不寫到http server不過大致上可以…

Systems, OS & Compilers
RISC-V XV6 LAB-NET2 network device 大致概念

RISC-V XV6 LAB-NET network device

xv6 network-net 快速記錄一下在xv6 system 上如果要實現一個網卡驅動大致上會經過哪一些環節,算是興趣的很想知道一個OS如何實現網卡連接外部設備我們直接跳最後一個lab來了解一下,這邊只是粗略分析,結合以前看的一些東西做一些聯想與總結,在某些部分可能有理解錯誤請見諒。 main.c 從 asm 一路跳轉過來 main,讓作業系統可以透過 c 語言去撰寫,中…

Systems, OS & Compilers
RISC-V XV6 LAB-NET network device