BUPT(Beijing University of Posts and Telecommunications) school projects index
- Built using C++17/CMake
- Use Catch2 for testing
- Use Flex & Bison for Scanner and SLR Parser
- Implemented a GUI wrapper using Electron
- Use Emscripten for a convenient WebAssembly library
- 2 versions:
- A hand-written DFA in pure C
- flex version using regex matching
- Implements yylex() API that resembles flex
- implemented LL(1)/SLR(1) parser for a given grammar in C
- use flex for scanner
- hard-coded LR DFA table
The labs includes:
- use syscalls to write user-space utils like
sleep
,xargs
,find
- implements new syscalls including
mmap()
,symlink()
- implements enhancements including
copy on write
,lazy allocation
- designed 3 versions of protocols:
stop and wait
,go back n
,selective repeat
- optimized version
selective repeat
reached theoretical value of efficiency- optimized by carefully select window size and max retries
- designed a special NAK strategy to reduce latency
- supports
A
,AAAA
local query and remote DNS server relay, which resemblesdnsmasq
(but without dhcp server functionality) - UDP query only. Implemented addr decompression but didn’t implement compression
- Multithreading using
pthread
library
- built with C++14+CMake
- taking advantages of OOP & templates & RAII
- parallel with
std::thread
- interactive cli interface
- Doc generation with Doxygen
- use SQLite3 with SQLite ORM
- use TCP sockets for connection(using http is not allowed)