CS
gRPC๋?google์์ ๊ฐ๋ฐํ RPC(Remote Procedure Call)๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ ๊ฐํธํ๊ณ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ์ค๊ณ๋ ํ๋กํ ์ฝ์ด๋ค.์ฆ, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋น ๋ฅด๊ณ ์ ๋ขฐ์ฑ ์๊ฒ ๊ตํํ ์ ์๋๋ก ๋์์ค๋ค.ํ๋กํ ์ฝ ๋ฒํผ (Protocol Buffers, Protobuf)gRPC๋ Protobuf๋ผ๋ ์ง๋ ฌํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.Protobuf๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ง ํ์์ผ๋ก ์ง๋ ฌํํ๊ณ ์ญ์ง๋ ฌํํ๋ ๋ฐฉ์์ผ๋ก, JSON์ด๋ XML๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ค.ํนํ ์์ ๋ฉ์์ง ํฌ๊ธฐ์ ๊ฒฝ์ฐ, ์ง๋ ฌํ/์ญ์ง๋ ฌํ ๊ณผ์ ์์ ๋งค์ฐ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ ์ก์ ์ ๊ณต์ด ๊ฐ๋ฅํ๋ค. ์ด ๋ฐฉ์์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๊ณ , ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํ ์๊ฐ์ ํฌ๊ฒ ์ค์ฌ ๋คํธ์ํฌ ๋์ญํญ์ ์ ์ฝํ๊ณ ์ฑ..
CS
๋๊ธฐ์ ๋น๋๊ธฐ๋๊ธฐ์์
์ ์์ฐจ์ ์ผ๋ก ์งํํ๋ ๋ฐฉ์ํ๋์ ์์
์ด ๋๋ ๋๊น์ง ๋ค์ ์์
์ ์คํ๋์ง ์๊ณ ๊ธฐ๋ค๋ฆฐ๋ค. ์์ : ์์
A -> ์์
B -> ์์
C (A๊ฐ ๋๋ ๋๊น์ง B, C๋ ์คํ๋์ง ์์)๋น๋๊ธฐ์์
์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋์์ ์งํ์์
์ ์์ฒญํ๋ฉด ๊ทธ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค๋ฅธ ์์
์ ๊ณ์ ์งํ ์์ : ์์
A -> ์์
B -> ์์
C (A๊ฐ ์งํ๋๋ ๋์ B์ C๋ ๋์์ ์คํ๋ ์ ์์)๋ธ๋กํน๊ณผ ๋
ผ๋ธ๋กํน๋ธ๋กํน์์
์ด ์๋ฃ๋ ๋๊น์ง ์ ์ด๊ถ์ ๋ฐํํ์ง ์๋ ๋ฐฉ์์ด๋ ํ ์์
์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์
์ ์ํํ๋ ๊ฒฝ์ฐ ์์ : ์์
A -> ๋๊ธฐ -> ์์
B -> ๋๊ธฐ -> ์์
C (๊ฐ ์์
์ด ๋๋ ๋๊น์ง ๋๊ธฐ)๋
ผ๋ธ๋กํน์์
์ด ์งํ๋๋ ๋์์๋ ์ ์ด๊ถ์ ๋ฐํํ๊ณ ๋ค๋ฅธ ์์
์ ๊ณ..
CS
processํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋
๋ฆฝ์ ์ธ ๋จ์์ด์์ฒด์ ๋ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋ฉฐ, ํ๋ก์ธ์ค ๊ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ณต์ ๋์ง ์๋๋ค.thread์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์์
์ ๋จ์ํ ํ๋ก์ธ์ค ๋ด์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ์กด์ฌํ ์ ์์ผ๋ฉฐ, ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ๊ตฌ๋ถ ProcessThread๊ธฐ๋ณธ ๋จ์์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋
๋ฆฝ์ ์ธ ๋จ์ํ๋ก์ธ์ค ๋ด ์์
์ ์คํ ๋จ์๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ณ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(Code, Data, Heap, Stack)Code, Data, Heap ๊ณต์ , Stack์ ๋
๋ฆฝ์ ๋
๋ฆฝ์ฑํ๋ก์ธ์ค ๊ฐ ๋
๋ฆฝ์ , ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๋ถ๊ฐ๊ฐ์ ํ๋ก์ธ์ค ๋ด์์ ๋ค๋ฅธ ์ค๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ์์ฑ ์๋ํ๋ก์ธ์ค ์์ฑ ์๋๊ฐ ๋๋ฆฌ๊ณ ์ค๋ฒํค๋๊ฐ ํผ์ค๋ ๋ ์์ฑ ์๋๊ฐ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์๋ฌธ..
CS
oop๋ฅผ ์ ๋ฆฌํ๊ธฐ์ ์์ ์ฉ์ด๋ค์ ์ ๋ฆฌ๊ฐ ํ์คํ๊ฒ ์ด๋ฃจ์ด์ง์ง์๋๊ฑฐ๊ฐ์ class, instance, object๋ค์ ๋ํ ๊ฐ๋
์ ๋ฆฌ๋ฅผ ์งํํ์๋ค.ํด๋์ค (class)๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ
ํ๋ฆฟ ๋๋ ์ฒญ์ฌ์ง๋ฌด์์ธ๊ฐ์ ๋ชจ์, ์งํฉ์ฒด๊ฐ์ฒด๋ฅผ ์์ ํ๋ ๋ฌธ๋ฒ// cppclass Color { ...}// ์์ ์ฝ๋์ ๊ฐ์ด object or instance๋ฅผ ์์ฑํ๊ธฐ์ํ ํ์ ๊ฐ๋
์ class๋ผ๊ณ ์ด์ผ๊ธฐํ๋ค. ์ธ์คํด์ค (instance)ํด๋์ค๋ก ๋ถํฐ ์์ฑ๋ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒดclass Color { ...}Color Blue; Color Grean; // ์ฆ Blue, Grean ๊ฐ์ ๊ฒ๋ค์ ๊ฐ์ฒด(object)๋ผ๊ณ ์ด์ผ๊ธฐํ๋ค.๊ฐ์ฒด (object)ํฌ๊ด์ ์ธ ์ผ๋ฐ ๋ช
์ฌ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌผ์ด๋ ์ถ์์ ์ธ ๊ฐ๋
๋
๋ฆฝ์ , ์์์ ์ผ๋ก ์กด์ฌํ๋ ๋ฌด..
CS
Socket์์ผ์ ๋คํธ์ํฌ ํต์ ์ ์ํ ์ํํธ์จ์ด ์ธํฐํ์ด์ค๋ก, ๋คํธ์ํฌ ํต์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ํต๋ก ์ญํ ์ ํ๋ค.์์ผ์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ก ๊ตฌ์ฑ๋์ด, ์ด๋ค์ ํตํด ๋คํธ์ํฌ์์ ๋ค๋ฅธ ์ฅ์น์ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.๋๋ถ๋ถ์ ๋คํธ์ํฌ ํต์ ์ ์์ผ์ ์ฌ์ฉํด ์ด๋ฃจ์ด์ง๋ค. ์๋ฅผ ๋ค์ด, TCP์ UDP ํต์ ์ ๋ชจ๋ ์์ผ์ ํตํด ์ฒ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.Stream์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ ๋ฌํ๋ ๋ฐฉ์TCP์์๋ ๋ฐ์ดํฐ๋ฅผ packet ๋จ์๋ก ๋๋์ด ๋ณด๋ด์ง๋ง, ์ฐ์์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ(stream) ํํ๋ก ์ฒ๋ฆฌ๋๋ค. ์ฆ, ์ฌ๋ฌ ํจํท์ด ์์ฐจ์ ์ผ๋ก ์ ๋ฌ๋๋ฉด์, ์์ ์ธก์์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์ฐ์์ ์ธ ํ๋ฆ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค.์คํธ๋ฆผ์ TCP์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ฐ์์ ์ด๊ณ ์์ ์ ์ธ ๋ฐ์ด..
CS
๋ชฉํ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐproject - client - Dockerfile - CMakeLists.txt - src - ... - server - Dockerfile - CMakeLists.txt - src - ... - common - Dockerfile - CMakeLists.txt - src - ... - CMakeLists.txt - Docker-compose.txt๋์ ํ๋ก์ ํธ์๋ ํฌ๊ฒ 3๊ฐ์ ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ๋ค. ๋์ ๋ชฉํ๋ ์ด์ ๊ฐ๋ค.๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฐ CMake๋ฅผ ํตํด ์๋ก๋ฅผ ์ฐ๊ฒฐํ๊ณ docker-compose..
CS
ํ (Heap) ๋?ํน์ํ ํธ๋ฆฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐํ์ ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์์ ์ด์ง ํธ๋ฆฌ ํํ์ ์๋ฃ๊ตฌ์กฐ์ต๋ ํ (Max Heap)๊ณผ ์ต์ ํ(Min Heap) ์ด 2๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.์ต๋ ํ (Max Heap)๋ถ๋ชจ์ ๋
ธ๋๊ฐ ํญ์ ์์์ ๋
ธ๋๋ณด๋ค ํฐ ๊ตฌ์กฐํ์ชฝ ๋
ธ๋๋ง ๊ณ์ ์งํ๋์๋ ์๋๋ค.์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ์๋ ๊ฐ์ ์์
์ ์ํํด์ผํ๋ค.๋ถ๋ชจ์ ๊ฐ๋ณด๋ค ์์์ ๊ฐ์ด ํฌ๋ฉด ์๋๋ค.์ต์ ํ(Min Heap)๋ถ๋ชจ์ ๋
ธ๋๊ฐ ํญ์ ์์์ ๋
ธ๋๋ณด๋ค ์์ ๊ตฌ์กฐํ์ชฝ ๋
ธ๋๋ง ๊ณ์ ์งํ๋์๋ ์๋๋ค.์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ํ์ ํธ๋ฆฌ์๋ ๊ฐ์ ์์
์ ์ํํด์ผํ๋ค.๋ถ๋ชจ์ ๊ฐ๋ณด๋ค ์์์ ๊ฐ์ด ์์ผ๋ฉด ์๋๋ค.์ฅ๋จ์ ์ฅ์ ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ณ ์ฝ์
ํ ์ ์์.์ฐ์ ์์ ํ๋ ์์
์ค์ผ์ค๋ง์์ ํ์ฉํ๊ธฐ ์ข์.๋จ์ ์ค๊ฐ ์์์ ..
CS
ํด์ ํ
์ด๋ธ (Hash Table) ๋?ํค-๊ฐ ์์ ๋น ๋ฅด๊ฒ ์ฝ์
, ์กฐํ, ์ ๊ฑฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ฅ๋จ์ ์ฅ์ ํ๊ท ์ ์ผ๋ก O(1)์ ์๊ฐ์ ๊ฒ์, ์ฝ์
, ์ญ์ ๊ฐ ๊ฐ๋ฅํด ๋น ๋ฆ.ํฐ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ์ ์ ๋ฆฌํ๋ฉฐ, ์ค๋ณต ๋ฐ์ดํฐ ๋ฐฉ์ง์ ์ ์ฉ.๋จ์ ์ถฉ๋ ๋ฐ์ ์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์.ํด์ ํจ์์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ด ๋จ์ด์ง ์ ์์.๊ตฌํvector๋ฅผ ์ฌ์ฉํ ๊ตฌํ#include #include #include class HashTable{private: int BUCKET; std::vector > table; public: HashTable(int b) { this->BUCKET = b; table.resize(BUCKET); } ~HashTable() {}; // ์ ์ผํ ์ธ๋ฑ์ค..
CS
ํธ๋ผ์ด (Trie) ๋?๋ฌธ์์ด์ ์ ์ฅํ๊ณ , ํจ์จ์ ์ผ๋ก ํ์ํ๊ธฐ ์ํ ํธ๋ฆฌ ํํ์ ์๋ฃ๊ตฌ์กฐtree ํํ์ ์๋ฃ๊ตฌ์กฐ์ ๋ณด ๊ฒ์ ๊ฐ์ ๋ถ์ผ์์ ํ์ฉ๋๋ค.์์ ๊ฐ์ ๊ทธ๋ฆผ์ฒ๋ผ ๋น ๋ฅด๊ฒ ๋จ์ด๋ฅผ ์ฐพ๋ ๊ฒ์ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์๋ค. ์ฅ๋จ์ ์ฅ์ ๋ฌธ์์ด ๊ฒ์์ ํจ์จ์ ์ด๋ฉฐ, ์ ๋์ฌ ๊ฒ์์ O(m) ์๊ฐ์ ์ํ ๊ฐ๋ฅ (m์ ๋ฌธ์์ด ๊ธธ์ด).์๋ ์์ฑ ๊ธฐ๋ฅ ๊ตฌํ์ ์ ์ฉ.๋จ์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์์ ๋
ธ๋๊ฐ ๋ง์์ง์๋ก ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์.๊ตฌํclass TrieNode๋ฅผ ์ฌ์ฉํ ๊ตฌํ#include #include #include class TrieNode{private:public: TrieNode *child[26]; bool wordEnd; TrieNode() { wordEnd = false; for(int i = 0;..