๋ชฉ๋ก์ ์ฒด ๊ธ (129)
์ฐ์ ๊ธฐ๋ก ๐ช
์๋ ์ฟผ๋ฆฌ๊ฐ ์์์ ์ผ๋ก ๋์ํ๋์ง ๊ฒ์ฆํด๋ณด์. InnoDB ์์ง์ ์ฌ์ฉํ๋ MySQL์ด๋ผ๊ณ ๊ฐ์ ํ๋ค.UPDATE tmp SET cnt = cnt+1 WHERE id = 1;์ฟผ๋ฆฌ๊ฐ ์์์ ์ผ๋ก ๋์ํ๋ค๋ ๊ฒ์ ์ฟผ๋ฆฌ๊ฐ ์ชผ๊ฐ์ง์ง ์๋์ง๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ์ด๋ค. ์ฆ ์์ ์ฟผ๋ฆฌ์์๋ cnt๊ฐ 1 ์ฆ๊ฐํ๊ฑฐ๋ ์ ํ ์ฆ๊ฐํ์ง ์๋์ง๋ฅผ ๊ฒ์ฆํ๋ค. 1) ํ ์คํธ ์ค๋น์๋ ์ฟผ๋ฆฌ๋ฅผ ์คํํด ๊ฐ๋จํ ํ ์ด๋ธ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ค๋นํ๋ค.CREATE TABLE tmp ( id INT PRIMARY KEY, cnt INT NOT NULL DEFAULT 0) ENGINE=InnoDB;INSERT INTO tmp VALUES (1, 0), (2, 0); 2) ์ด๋ก ์ ๊ฒ์ฆ๋จผ์ InnoDB์์๋ ์ ๋ฐ์ดํธ ๋๋ ํ์ exclusive lock(๋ฐฐํ์ ์ ๊ธ)..
์ผ๋ฐ์ ์ผ๋ก๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ํ ํฐ์ ์ ๊ณตํด์ค๋ค. ์ดํ ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ํ ๋ ๋ง๋ค ํ ํฐ์ ํจ๊ป ์ ์กํ๊ณ , ์๋ฒ๋ ์ด ํ ํฐ์ ๊ฒ์ฆํ ๋ค ์์ฒญ์ ์ฒ๋ฆฌํด์ค๋ค.ํ ํฐ์ ํตํด ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ธฐ ์ํด ํฌ๊ฒ ์๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.์๋ฒ์ ๋ณ๋ ์ ์ฅ์์ ํ ํฐ๊ณผ ์ฌ์ฉ์ ์๋ณ์ ๋ณด ์ ์ฅํ ํฐ ์์ฒด์ ์ฌ์ฉ์ ์๋ณ์ ๋ณด ์ ์ฅ๋ณ๋ ์ ์ฅ์์ ํ ํฐ๊ณผ ์ฌ์ฉ์ ์๋ณ์ ๋ณด ์ ์ฅ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ๋ฉด ์๋ฒ๋ ๋ณ๋ ์ ์ฅ์์ ํ ํฐ๊ณผ ์ฌ์ฉ์ ์๋ณ์๋ฅผ ์ ์ฅํ๋ค. ์ดํ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํ ํฐ๊ณผ ํจ๊ป ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ๋ณ๋ ์ ์ฅ์์์ ์ฌ์ฉ์ ์๋ณ์๋ฅผ ๊ตฌํ๋ค.์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ํ ํฐ ์ ๋ณด๋ฅผ ์ ์ฅํ ์๋ ์๋ค. ํฐ์บฃ๊ณผ ๊ฐ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ธ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋๋ฐ, ์ด ์ธ์ ์ ID๊ฐ ๋ฐ๋ก ํ ํฐ์ด ๋๋ค.์๋ฅผ๋ค์ด ์ฌ..
ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด DB์ 100๋ง๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ณด์. ํ์ด์ฌ์ Faker ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด 100๋ง๊ฑด์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด csvํ์ผ์ ๋ง๋ค๊ณ , ์ด๋ฅผ Mysql์์ ๋ก๋ํ๋ ์์ผ๋ก ์งํํ ๊ฒ์ด๋ค.Faker๋ฅผ ์ฌ์ฉํด csv ๋ง๋ค๊ธฐ๋จผ์ pip install Faker ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.์ดํ ์๋ ์ฝ๋๋ฅผ ์คํํ๋ฉด csv ํ์ผ์ด ๋ง๋ค์ด์ง๋ค.from faker import Fakerimport csvfake = Faker('ko-KR')with open('users.csv', 'w', newline='') as f: # ํ์ผ ์ด๋ฆ ์ค์ writer = csv.writer(f) for _ in range(1000000): # ๋ฐ์ดํฐ ์ฉ๋ ์กฐ์ writer.writerow([fake...
๊ฐ์Spring Boot ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด application.yaml์ ์๋์ ๊ฐ์ด ์ค์ ํ์ฌ DB์ ์ฐ๊ฒฐ์ ํ๋ค.spring: application: name: backend-basics-for-juniors datasource: url: jdbc:mysql://localhost:3306/${DB_NAME} username: ${DB_USERNAME} password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 10 minimum-idle: 2 connection-timeout: 30000์ฌ๊ธฐ ๋ณด์ด๋ hikari๋ H..
2๊ฐ ์ด์์ ์์ ์ด ์๋ก ์๋๋ฐฉ์ ์์ ์ด ๋๋๊ธฐ๋ง์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด, ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ฌด๊ฒ๋ ์๋ฃ๋์ง ์๋ ์ํ๋ฅผ ๊ต์ฐฉ ์ํ(deadlock)๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์๋์ ๊ฐ๋ค.๊ต์ฐฉ ์ํ ๋ฐ์ ์กฐ๊ฑด๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋ ค๋ฉด 4๊ฐ์ ์กฐ๊ฑด์ด ๋์์ ์ถฉ์กฑ๋์ด์ผ ํ๋ค.1. ์ํธ๋ฐฐ์ ํ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์์ ๋์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์๋ค. 2. ์ ์ ์ ๋๊ธฐํ ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ํ ๋น๋ฐ์ ์ํ์์ ๋ค๋ฅธ ์์ ํ ๋น๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค. 3. ๋น์ ์ ํ ํ๋ก์ธ์ค๊ฐ ์์์ ์ฌ์ฉํ๊ณ ์์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์์ ๊ฐ์ ๋ก ๋บ์ ์ ์๋ค. 4. ์ํ๋๊ธฐ(ํํ๋๊ธฐ) ํ๋ก์ธ์ค๊ฐ ์๋ก ์ ์ ํ ์์์ ํ ๋น๋ฐ๊ธฐ ์ํด ์์ ํํ๋ก ๋๊ธฐํ๋ค. ์ด์์ฒด์ ๋ ํฌ๊ฒ 3๊ฐ์ง ๋ฐฉ๋ฒ(์๋ฐฉ, ํํผ, ๊ฒ์ถ ํ ํ๋ณต)์ผ๋ก ๊ต์ฐฉ์ํ๋ฅผ ํํผํ๋ค...
์์ ๊ธ์์ ํ๋ก์ธ์ค๋ ์ฐ๋ ๋๊ฐ ๋์์ ์๊ณ๊ตฌ์ญ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ ์ด์ค ์ปจ๋์ ์ด ๋ฐ์ํ๋ค๊ณ ํ๋ค. ์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ฎคํ ์ค, ์ธ๋งํฌ์ด, ๋ชจ๋ํฐ ๋ฑ์ด ์๋ค. ์ด๋ค์ ๋ํด ํ๋ํ๋ ์์๋ณด๋๋ก ํ์. ๋ฎคํ ์ค(MUTEX, MUTual EXclusion)๋ฎคํ ์ค๋ ์๊ณ๊ตฌ์ญ์ ์ ๊ทผํ๊ณ ์ ํ๋ค๋ฉด ๋ฝ(Lock)์ ํ๋ํด์ผ ํ๊ณ , ์์ ์ด ๋๋๋ฉด ๋ฝ์ ํด์ (Release)ํ๋๋ก ํจ์ผ๋ก์จ ๋์์ ์๊ณ๊ตฌ์ญ์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ๋ ๊ธฐ๋ฒ์ด๋ค.์ฐธ๊ณ ๋ก ํ์ด์ฌ์ด๋ C/C++์ ๋ฎคํ ์ค ๋ฝ์ ์ง์ํ๊ณ , Java์ญ์ ๋ฝ์ ์ง์ํ๋ค. C++์์ ๋ฎคํ ์ค ๋ฝ์ ํ์ฉํ๋ ์์ ๋ ์๋์ ๊ฐ๋ค.#include #include #include using namespace std;int counter = 0;mutex m; //๋ฎคํ ์ค ์ ์ธv..
๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ฐ๋ ๋ํ๋ก์ธ์ค๋ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ, ์ฐ๋ ๋๋ ํ๋ก์ธ์ค ๋ด๋ถ์์ ๋์ํ๋ ์์ ์ ๋จ์์ด๋ค. ๋ฉํฐ ํ๋ก์ธ์ค์ ๋ฉํฐ ์ฐ๋ ๋์ ํน์ง์ ์๋์ ๊ฐ๋ค.๋ฉํฐ ํ๋ก์ธ์ค๋ฉํฐ ์ฐ๋ ๋์์์ด ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น์์์ ๊ณต์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ํฅ์ ๋ฏธ์น ๊ฐ๋ฅ์ฑ ์์์์ ๊ฐ์ด ๋ฉํฐ ์ฐ๋ ๋๋ ์์์ ๊ณต์ ํ๊ธด ํ์ง๋ง ์ฐ๋ ๋๋ณ๋ก ๊ฐ๊ฐ์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ ๊ฐ๊ณผ ์คํ์ ๊ฐ์ง๊ณ ์๋ค. ํ๋ก์ธ์ค๊ฐ ํต์ (IPC, Inter-Process Communication)ํ๋ก์ธ์ค๋ ์์์ด ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น๋๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค. ์ด๋ฅผ ์ํ ๊ธฐ๋ฒ์ผ๋ก ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฉ์์ง ์ ๋ฌ์ด ์๋ค.๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก์ธ์ค ๊ฐ ๊ณต์ ํ๋ ..
์ด์์ฒด์ ์ ์ญํ ์ด์์ฒด์ ์ ์ญํ ์ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ ์ ์๋ค.์์ ๊ด๋ฆฌ ๋ฐ ํ ๋นํ๋ก์ธ์ค ๋ฐ ์ค๋ ๋ ๊ด๋ฆฌ์ฌ๊ธฐ์ 1๋ฒ์ ์์์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋ณด์กฐ๊ธฐ์ต์ฅ์น ๋ฑ์ด๋ค.CPU ๊ด๋ฆฌ(CPU ์ค์ผ์ค๋ง) : ์คํ์ค์ธ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ๊ณต์ ํ๊ฒ ํ ๋น๋ฐ๋๋ก ๊ด๋ฆฌ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ : ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ , ์ข ๋ฃ๋ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ์ผ/๋๋ ํ ๋ฆฌ ๊ด๋ฆฌ : ๋ณด์กฐ๊ธฐ์ต์ฅ์น ๋ด๋ถ ์ ๋ณด๋ฅผ ํ์ผ ๋ฐ ํด๋ ๋จ์๋ก ์ ๊ทผํ๊ฒ ํด์ค2๋ฒ ํ๋ก์ธ์ค ๋ฐ ์ค๋ ๋ ๊ด๋ฆฌ๋ ์ด๋ฏธ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ(ํ๋ก์ธ์ค)์ ์์์ ํ ๋นํ๊ณ ๋ด๋ถ์ ์๋ ์ค๋ ๋๋ผ๋ ์คํ์ ๋จ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค.์ฆ ์ด์์ฒด์ ๋ ์์ ๊ด๋ฆฌ์์ด๋ค. ์์คํ ์ฝ๊ณผ ์ด์ค ๋ชจ๋์์ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํด์ผํ๋ค๊ณ ํ๋๋ฐ, ์ด์์ฒด์ ๋ ์ผ์ข ์ ํ๋ก๊ทธ๋จ์ด๊ธฐ ๋๋ฌธ..
ํฌ์๋ ํ๋ก์ vs ๋ฆฌ๋ฒ์ค ํ๋ก์ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์๋ ๋ค์ํ ์ค๊ฐ์๋ฒ์ ๋คํธ์ํฌ ์ฅ๋น๋ค์ด ์กด์ฌํ๋ค. ์ค๊ฐ์๋ฒ์ ์ ํ์ผ๋ก๋ ํฌ์๋ ํ๋ก์(ํ๋ก์), ๋ฆฌ๋ฒ์ค ํ๋ก์(๊ฒ์ดํธ์จ์ด)๊ฐ ์กด์ฌํ๋ค.ํฌ์๋๋ ์ผ๋ฐ์ ์ผ๋ก ์์ ์๋ฏธํ๋๋ฐ, ์ด๊ฒ์ ์ธํฐ๋ท์ ์๋จ์ ์๋ค๋ ๋ป์ด๋ค. ํ๋ก์ ์๋ฒ๋ ์ฃผ๋ก ์บ์ ์ ์ฅ, ํด๋ผ์ด์ธํธ ์ํธํ ๋ฐ ์ ๊ทผ์ ํ๊ณผ ๊ฐ์ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ธํฐ๋ท์ผ๋ก ๋์๊ฐ๊ธฐ ์ ํ๋ก์ ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๋ค. ๋ง์ฝ ์บ์ฑ๋์ด ์๋ ๋ด์ฉ์ด๋ผ๋ฉด ์ธํฐ๋ท์ ๊ฑฐ์ณ ์ค๋ฆฌ์ง ์๋ฒ๊ฐ ์๋ ๊ณณ๊น์ง ๊ฐ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.๋ฆฌ๋ฒ์ค ํ๋ก์, ์ฆ ๊ฒ์ดํธ์จ์ด๋ ์ธํฐ๋ท์ ๊ฑฐ์ณ์ ์จ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ค์ด ์ค๋ฆฌ์ง์๋ฒ์ ๋๋ฌํ๊ธฐ ์ ๊ฑฐ์ณ๊ฐ๋ ๊ณณ์ด๋ค. ์ด๋ฌํ ๊ฒ์ดํธ์จ์ด๋ ์บ์ ์ ์ฅ์ ํ ์๋ ์๊ณ ๋ก๋ ๋ฐธ๋ฐ์(๋ถํ ๋ถ์ฐ)๋ก..
์ฟ ํค์์ HTTP๋ ์คํ ์ดํธ๋ฆฌ์ค ํ๋กํ ์ฝ์ด๋ผ๊ณ ํ์๋ค. ๊ทธ๋ ๊ธฐ์ ๊ฐ์ ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ๋ ๋ฒ ๋ณด๋ด๋ ๋ณ๊ฐ์ ์์ฒญ์ผ๋ก ํ๋จํ๋ค. ๊ทธ๋ฐ๋ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ธฐ์ตํด์ผ ํ ๋๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ํน์ ์น์ฌ์ดํธ์์ ๋คํฌ๋ชจ๋๋ฅผ ์ผฐ๋ค๊ณ ๊ฐ์ ํ์. ์ดํ ์ด ์ฌ์ฉ์๊ฐ ๋ค์ ์น์ฌ์ดํธ์ ์ ์ํ๋ฉด ๋คํฌ๋ชจ๋๋ก ๋ณด์ฌ์ง๊ฒ ๋๋ค. ์ด๋ฐ ์ ๋ณด๋ ์๋ฒ์ธก์์ Set-Cookie: mode=dark ํค๋๋ฅผ ์ ๋ฌํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฅผ ๋ฐ์ ์ ์ฅํด๋๋ค.์ดํ ๊ฐ์ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ๋ฐ์๋ ์ฟ ํค๊ฐ์ ์ ๋ฌํ๋ค. ์ฟ ํค๊ฐ์ด ์ฌ๋ฌ๊ฐ์ด๋ฉด ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๋๋์ด ์ ๋ฌํ๋ค. (Cookie : mode=dark; message=test; . . .)์์์ ๋ดค๋ฏ์ด ์ฟ ํค๋ ์ด๋ฆ=๊ฐ ํ์์ผ๋ก ์ ์ฅ๋๋๋ฐ, ๊ทธ ์ธ์๋ ๋๋ฉ์ธ๊ณผ ๊ฒฝ๋ก, ์ ํจ๊ธฐ๊ฐ๊ณผ ๊ฐ์ ..
DNS ์๋ฒ๋คํธ์ํฌ ์์ ํธ์คํธ๋ฅผ ์๋ณํ ๋์๋ IP์ฃผ์๊ฐ ์ฌ์ฉ๋์ง๋ง, ํธ์คํธ์ IP ์ฃผ์๋ ๋ฐ๋ ์ ์๊ณ ์ฌ๋์ด ๋ณด๊ธฐ์๋ ์ข์ง ์๋ค. ๊ทธ๋ ๊ธฐ์ ๋๋ฉ์ธ ๋ค์์ ์ฌ์ฉํ๋ค. www.google.com ๊ฐ์ ๊ฒ์ ๋๋ฉ์ธ ๋ค์์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.๊ทธ๋ฌ๋ฉด IP์ฃผ์์ ๋๋ฉ์ธ ๋ค์์ ๋งคํ์์ผ์ฃผ๋ ์๋ฒ๊ฐ ํ์ํด์ง๋๋ฐ, ์ด๋ฅผ DNS ์๋ฒ๋ผ๊ณ ํ๋ค. ์์์ ๋ดค๋ค์ํผ ๋๋ฉ์ธ์ ๊ณ์ธต์ ์ผ๋ก ๋ถ๋ฅ๋์ด ์๋ค. ์ด ์ ์ ์ด์ฉํ์ฌ ์ํ๋ ๋๋ฉ์ธ์ IP๋ฅผ ์ฐพ์ ๋ ๊ณ์ธต์ ์ผ๋ก ์ง์ํ๋ค. ๋๋ฉ์ธ ๋ค์์ IP๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ์ข ๋ ์์ธํ ์ดํด๋ณด๋๋ก ํ์. ๋จผ์ www.google.com ์ IP ์ฃผ์๋ฅผ ์ฐพ๋๋ค๊ณ ๊ฐ์ ํด๋ณด๋ค. ๊ฐ์ฅ ๋จผ์ ๋ก์ปฌ์์ ์ฐพ๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ฐ์๋ C:\Windows\System32\drivers\etc ๋๋ ํ ๋ฆฌ์ ho..
ํจํท์ ์ต์ข ๋ชฉ์ ์ง๋ ํธ์คํธ๊ฐ ์คํํ๋ ํ๋ก์ธ์ค์ด๋ค. ์ด๋ IP์ฃผ์+ํฌํธ ๋ฒํธ์ ์กฐํฉ์ผ๋ก ์์๋ผ ์ ์๋๋ฐ, ์ ์ก๊ณ์ธต์ ์ด ํฌํธ ๋ฒํธ๋ฅผ ๋ค๋ฃจ๋ ๊ณ์ธต์ด๋ค.ํฌํธ ๋ฒํธํฌํธ ๋ฒํธ๋ ์ด 16๋นํธ๋ก ํํ๋๋ค. ๊ทธ๋์ 0~2^16-1๊น์ง ํํ์ด ๊ฐ๋ฅํ๋ค.0~1023์ฐ๋ ธ์ด ํฌํธ1024~49151๋ฑ๋ก๋ ํฌํธ49152~65535๋์ ํฌํธ์ฐ๋ ธ์ด ํฌํธ๋ ๋์ค์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ํฌํธ์ด๋ค. ์๋ฅผ๋ค์ด FTP(20, 21), SSH(22), TELNET(23), DNS(53), DHCP(67, 68), HTTP(80), HTTPS(443) ๋ฑ์ด ์๋ค.๋ ๋ฑ๋ก๋ ํฌํธ๋ ์ฐ๋ฆฌ๊ฐ ์๋ MySQL(3306), Redis(6379), MSSQL(1433)๋ฑ์ด ์๋ค.๋ง์ง๋ง์ผ๋ก ๋์ ํฌํธ๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๋ก์ ๋์ํ๋ ํ๋ก..
IP ์ฃผ์๋ํ๋ ์์ ๋ชฉ์ ์ง์ ์ก์ ์ง์ MAC ์ฃผ์๊ฐ ์์๋ฏ์ด, IP ํจํท ํค๋์๋ ์ก์ ์ง, ์์ ์ง์ IP ์ฃผ์ ํ๋๊ฐ ์๋ค. ๋ผ์ฐํฐ๋ ์ด IP ์ฃผ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชฉ์ ์ง๊น์ง ์ต์ ์ ๊ฒฝ๋ก๋ก ํจํท์ ์ ๋ฌํด์ฃผ๋ ๋คํธ์ํฌ ์ฅ๋น์ด๋ค.IPv4 vs IPv6IPv4๋ 32๋นํธ๋ก 2^32๊ฐ์ ์ฃผ์๋ฅผ ํ ๋นํ ์ ์๋ค.IPv6๋ 128๋นํธ์ด๋ฏ๋ก ์ด 2^128๊ฐ์ ์ฃผ์๋ฅผ ํ ๋นํ ์ ์๋ค.IPv4 192.168.1.1IPv62001:0230:abcd:ffff:0000:0000:ffff:1111IPv4 ํจํท ํค๋์๋ ์๋ณ์, ํ๋๊ทธ, ๋จํธํ ์คํ์ ์ด ์๋ค.์๋ณ์ : ์ด๋ค ํจํท์ด ๋จํธํ ๋ ๊ฒ์ธ์ง ๊ตฌ๋ถํด์ค๋ค. ๊ฐ์ ์กฐ๊ฐ์์ ๋์จ ํจํท๋ค์ ์๋ณ์๊ฐ ๊ฐ๋ค.ํ๋๊ทธ : 3๋นํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ฒซ ๋ฒ์งธ๋ 0์ด๊ณ DF(Don’t fragme..
์ด๋๋ท์ด๋?์ด๋๋ท(Ethernet) ์ ๋ฌผ๋ฆฌ ๊ณ์ธต๊ณผ ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต์์์ ๊ท๊ฒฉ์ ์ ์ํด ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต์์ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ์ ๋จ์์ธ ํ๋ ์์ ๊ตฌ์กฐ๋ผ๊ฑฐ๋, MAC์ฃผ์์ ๊ตฌ์กฐ ๋ฑ์ด ์ ์๋์ด ์๋ค.ํ๋ ๋๋ถ๋ถ์ LAN์ ์ด๋๋ท์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์๋ค. ๊ทธ๋ฌ๋ฉด ์์ ๋งํ ํ๋ ์์ ๋ํด ๋จผ์ ์ดํด๋ณด๋๋ก ํ์.์ด๋๋ท ํ์ค์ ๋ฐ๋ฅด๋ฉด ํ๋ ์์ ํ๋ฆฌ์ฐ๋ธ, ์คํํธ ํ๋ ์ ๋๋ฆฌ๋ฏธํฐ, ๋ชฉ์ ์ง MAC ์ฃผ์, ์ก์ ์ง MAC ์ฃผ์, ์์๊ณ์ธต์ ๋ณด/๋ฐ์ดํฐ ๊ธธ์ด, ํ์ด๋ก๋, FCS(Frame Check Sequence)๊ฐ ํฌํจ๋์ด ์๋ค.ํ๋ฆฌ์ฐ๋ธ์ ์ก์ ์์ ์์ ์์ ํด๋ญ(ํ์ด๋จธ)๋ฅผ ๋ง์ถ๊ธฐ ์ํจ์ด๋ค. ์์ ์๋ ํ๋ฆฌ์ฐ๋ธ์ ํตํด ์ก์ ์์ ํด๋ญ์ ํ์ ํ๊ณ ๋๊ธฐํํ๋ค.์คํํธ ํ๋ ์ ๋๋ฆฌ๋ฏธํฐ(SFD, Start Fram..
์ด ๊ธ์ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ตํ๋ฉฐ ์ด๋ ๊ฒ ์ง๋ฉด ์ ์๋ ๊น?๋ฅผ ๊ณ ๋ฏผํ ๊ณผ์ ์ ์์ฑํ ๊ธ์ ๋๋ค. ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ ์์ฒด๊ฐ ์ฒ์์ด๋ผ๋ฉด ์๋ ๋งํฌ์์ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ฐ๋ ์ ์ตํ ํ ๊ธ์ ์ฝ์ผ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.https://blog.encrypted.gg/1035 [์ค์ ์๊ณ ๋ฆฌ์ฆ] 0x1C๊ฐ - ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์๋ ํ์ธ์, ์ด๋ฒ์๋ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ์ด์ ์ต๋จ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ธ ํ๋ก์ด๋, ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๋ง ๋ค๋ฃจ๊ณ ๋๋ฉด ๋๋ฆ ๊ธธ์๋ ๊ทธ๋ํ ํํธ๊ฐ ๋๋ฉ๋๋ค. ๋ชฉ์ฐจ๋ ๋์ผ๋ก ํ ๋ฒblog.encrypted.gg ์ต๋จ๊ฑฐ๋ฆฌํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ํธ์ด๋ค.NxNํฌ๊ธฐ์ ๋ฐฐ์ด์ ํฐ ๊ฐ(INF)์ผ๋ก ์ด๊ธฐํํ๋ค.๊ฐ ์ ์ ๊ฐ์ ..
๊ฐ์LCS(Longest Common Subsequence)๋ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด๋ก, ๋ ๋ฌธ์์ด ์ฌ์ด ๊ณตํต๋๋ ๋ถ๋ถ์ ๋งํ๋ค. ์ฆ ๋ฌธ์์ด์ ์๋์ ์ธ ์์๋ง ๊ฐ์ผ๋ฉด ๋๋ค.์๋ฅผ๋ค์ด ์๋์ ๊ฐ์ด 2๊ฐ์ ๋ฌธ์์ด์ด ์์ ๋LCS๋ ABCCE์ด๋ค. ์ด๋ฐ LCS๋ DP๋ฅผ ํ์ฉํด์ ๊ตฌํ๋ค.๊ณผ์ ๋จผ์ AABCCDE์ A์ ๊ณตํต๋ถ๋ถ์ ๊ตฌํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ์๋ ํ์ฌ๊น์ง ๊ฐ์ฅ ๊ธด ๊ณตํต๋ถ๋ถ์ ๊ธธ์ด๋ฅผ ์ ์ฅํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ ์๋์ ๊ฐ์ด ๋๋ค. (A๋ ๊ธธ์ด๊ฐ 1์ด๋ ์ต๋ ๊ณตํต๋ถ๋ถ์ ๊ธธ์ด๋ 1์ด๋ค.)์ด์ AABCCDE์ AB์ ์ต์ฅ๊ณตํต๋ถ๋ถ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํด๋ณด๋๋ก ํ์. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ๋ ๊ฒ์ด๋ค.์ฌ๊ธฐ์ ์ฃผ๋ชฉํด์ผ ํ๋ ๋ถ๋ถ์ ๊ณตํต๋๋ ๋ถ๋ถ์ธ B๊ฐ ๋์์ ๋์ด๋ค. ์ ๊ณณ์ AAB์ AB์ LCS์ ๊ธธ์ด๋ฅผ ๊ธฐ๋กํ ๋ถ๋ถ์ธ๋ฐ AB..
https://school.programmers.co.kr/learn/courses/30/lessons/150367 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.kr ๋ฌธ์ ๋ถ์๋ฌธ์ ์์ ์๊ตฌํ๋ ๊ฒ์ ์ฃผ์ด์ง ์ซ์๋ฅผ ์ด์ง์๋ก ๋ฐ๊พธ๊ณ ํฌํ ์ด์งํธ๋ฆฌ๋ก ๋ํ๋์ ๋ ํด๋น ํธ๋ฆฌ๊ฐ ์ด์งํธ๋ฆฌ๊ฐ ๋ง๋์ง๋ฅผ ํ๋ณํ๋ ๊ฒ์ด๋ค.์ด์ง์๋ฅผ ํฌํ ์ด์งํธ๋ฆฌ๋ก ๋ํ๋ด๋ ค๋ฉด ์์ 0์ ์ฑ์์ ๊ฐ์ ๊ฐ๊ณตํด์ค์ผ ํ๋ค. ์ด ๋ถ๋ถ์ ์ข ๋ ๋ถ์ํด๋ณด๋๋ก ํ์.์๋์ ๊ฐ์ด ์๊ธด ๊ฒ์ด ํฌํ ์ด์งํธ๋ฆฌ์ด๋ค. ๋ฆฌํ๋ ธ๋๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ 2๊ฐ์ ์์๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ํฌํ ์ด์งํธ๋ฆฌ๋ผ๊ณ ํ๋ค. 1์ธต์ง๋ฆฌ ํฌํ ์ด์งํธ๋ฆฌ๋ผ๋ฉด ๋ ธ๋์ ์๋ 1๊ฐ, 2์ธต์ด๋ฉด 3๊ฐ, 3..
dfs๋ฅผ ์์ฉํ์ฌ ๋ฌดํฅ๊ทธ๋ํ์์์ ์ฌ์ดํด์ ํ๋จํ ์ ์๋ ์ฝ๋์ด๋ค. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ์ ์ ํ๋์ฉ ์ํํ๋ฉฐ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง ํ๋ณํ๋ ์ฝ๋์ด๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ๊ทธ๋ํ๊ฐ ์๋ค๊ณ ํ์. ๋์ผ๋ก ๋ด์๋ 2 3 5 ์ฌ์ดํด์ด ์กด์ฌํจ์ ์ ์ ์๋ค. ์๋ ์ฝ๋์์๋ 1์์๋ถํฐ dfs๋ฅผ ํ๋ฉฐ ๋ฐ๋ก ์ฌ์ดํด์ ์ฐพ๊ฒ ๋๋ค.dfs ๊ฐ์ฅ ์๋ path.pop_back()์ 4์ ๊ฐ์ด ์ฌ์ดํด์ ํฌํจ๋์ง ์๋ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ ์ฝ๋์ด๋ค. ์ธ์ ํ ๋ ธ๋๊ฐ ์ ์ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฐ์ ์์ ๋์ ๊ฒฝ์ฐ์ด๋ค.#include #include #include using namespace std;vector> graph; // ๊ทธ๋ํ ์ธ์ ๋ฆฌ์คํธvector> edges; // ๊ฐ์ ์ ๋ณดvector visited;vector path;b..
https://www.acmicpc.net/problem/16724๋ฌธ์ ์ค๋ช UDLR(์ํ์ข์ฐ)๋ก ๊ฐ ์นธ์ ์๋ ์ฌ๋๋ค์ด ์ด๋ค ๋ฐฉํฅ์ ์๋์ง ์ฃผ์ด์ง๋ค. ์ฌ๋๋ค์ด ํ์ดํ๋ฅผ ๋ฐ๋ผ ์ญ ์ด๋ํ์ ๋ ๋ชจ๋ ์ฌ๋์ด ์์ ๊ตฌ์ญ์ผ๋ก ๋ค์ด๊ฐ ์ ์๋๋ก ํ๋ ค๋ฉด ๋ช ๊ฐ์ ์์ ๊ตฌ์ญ์ ๋ง๋ค์ด์ผ ํ๋์ง๋ฅผ ๋ฌป๋ ๋ฌธ์ ์ด๋ค. ์์ด๋์ด์ด ๋ฌธ์ ๋ ๊ทธ๋ํ์ ์ฌ์ดํด์ ๊ฐ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ฌ์ดํด 1๊ฐ๋น 1๊ฐ์ ์์ ๊ตฌ์ญ์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค. ๊ทธ๋์ dfs๋ฅผ ํตํด ๊ทธ๋ํ๋ฅผ ์ํํ๋ฉฐ ๋ถ๋ชจ(์ฌ์ดํด์ ์์์ )๋ฅผ ๊ธฐ๋กํด์ฃผ๊ณ , ๋ง์ง๋ง์ ๋ถ๋ชจ๊ฐ ์ด ์ข ๋ฅ๊ฐ ์๋์ง๋ฅผ ๋ฆฌํดํด์คฌ๋ค.์๋์ ๊ฒฝ์ฐ ๋ถ๋ชจ๊ฐ 2์ข ๋ฅ๊ฐ ๋์์ผ๋ 2๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค. ์ฝ๋์ ๋ต ์ฝ๋๋ ์๋์ ๊ฐ๋ค. dfs๋ฅผ ์ด์ฉํด ์ํํ๋ฉฐ ๋ค์ ๋ธ๋ญ์ด ํ์ฌ์ ๋ถ๋ชจ๊ฐ ๋ค๋ฅด๋ค๋ฉด Unionํจ์๋ฅผ ํตํด ๋ถ๋ชจ๋ฅผ ํฉ์ณ..
https://school.programmers.co.kr/learn/courses/30/lessons/258711 ํ๋ก๊ทธ๋๋จธ์คSW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํprogrammers.co.kr ๋ฌธ์ ๋ถ์์๋์ ๊ฐ์ด ๋๋๋ชจ์, ๋ง๋๋ชจ์, 8์๋ชจ์ ๊ทธ๋ํ๊ฐ ์๋ค.์ฌ๊ธฐ์ ๋ฌธ์ ์ ํต์ฌ์ “์ด ๊ทธ๋ํ๋ค๊ณผ ๋ฌด๊ดํ ์ ์ ์ ํ๋ ์์ฑํ ๋ค, ๊ฐ ๋๋ ๋ชจ์ ๊ทธ๋ํ, ๋ง๋ ๋ชจ์ ๊ทธ๋ํ, 8์ ๋ชจ์ ๊ทธ๋ํ์ ์์์ ์ ์ ํ๋๋ก ํฅํ๋ ๊ฐ์ ๋ค์ ์ฐ๊ฒฐ”ํ๋ค๋ ๋ถ๋ถ์ด๋ค.์ฆ ์๋์ ๊ฐ์ด ์ ์ ์ ์ฐพ์ผ๋ฉด ๊ฑฐ๊ธฐ์ ์ฐ๊ฒฐ๋ ๊ฒ์ ๋๋, ๋ง๋, 8์๊ทธ๋ํ ์ค ํ๋์ฌ์ผ ํ๋ค๋ ์๋ฆฌ์ด๋ค.๊ทธ๋ ๊ธฐ์ ์ ์ ์ ์๋์ ๊ฐ์ด ๋๋๊ทธ๋ํ 2๊ฐ๋ฅผ ํฉ์น ๊ฒ ๊ฐ์ ๋ชจ์์ด ๋ถ์ด์๊ฑฐ๋ ํ๋ ์ผ..
AWS ์๋น์ค ๊ฐ์๋ฐ์ดํฐ ๋ณํ ๋ฐ ๋ถ์Redshift: ๋ฐ์ดํฐ ๋ณํ ๋ฐ ๋ถ์์ ์ํ ๋๊ตฌIdentity ๋ฐ ์ ๊ทผ ์ ์ดaws:PrincipalOrgId: ์กฐ์ง ์์ฒด๋ฅผ ๊ฐ๋ฆฌํดaws:PrincipalOrgPaths: ์กฐ์ง ๋ด ํน์ ๋ถ์๋ฅผ ๋ช ์์ฝํ ์ธ ๋ฐ ๋ฐ์ดํฐ ์ ์กCloudFront: ์ฃ์ง ๋ก์ผ์ด์ ์ ์ ์ ์ฝํ ์ธ ๋ฅผ ๋ฐฐ์น, ์๋ณธ ์๋ฒ์์ ๊ฐ์ ๊ฐ์ ธ์ดAWS Global Accelerator: ์ ๋์บ์คํธ๋ฅผ ์ฌ์ฉํด ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ๋ก ๋ผ์ฐํ ํ์ฌ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ์กKinesis Data Firehose: A์๋น์ค์์ B์๋น์ค๋ก ๋ฐ์ดํฐ ์ ์กKinesis Data Stream: ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ํน์ ์๋น์ค(A)์ ์ ๋ฌ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฐ์ฌAWS Config: ๋ฆฌ์์ค ๊ตฌ์ฑ ๋ณ๊ฒฝ ๋ฐ ์ถ์ AWS CloudTrail: ๋ก๊ทธ ๊ธฐ๋ก ๋ฐ ๋ด์ญ ..
ํต์ ๋ ฌ์ ์ซ์ ํ๋(pivot)๋ฅผ ๊ณจ๋ผ์ ์ฌ๋ฐ๋ฅธ ์๋ฆฌ์ ๋ฃ์ด๊ฐ๋ฉฐ ์ ๋ ฌ์ ์งํํ๋ค. ์ด๋ ๋ฐฐ์ด์ ์ชผ๊ฐ๊ฐ๋ฉฐ ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ์ ํ๊ธฐ ๋๋ฌธ์ ์ต์ข ์ ์ธ ์๊ฐ ๋ณต์ก๋๋ O(nlogn)์ด๋ค. ๋์ ๊ณผ์ ์ด๋ก ์ ์ธ ๋ด์ฉ์ ๋ค์ด๊ฐ๊ธฐ ์์ ์ด๋ค์์ผ๋ก ๋์ํ๋์ง ํ์ธํด๋ณด๋๋ก ํ์. ์๋์ ๊ฐ์ด {5, 4, 1, 7, 6, 2} ๋ฐฐ์ด์ด ์๋ค๊ณ ํ์ ๋ ๋งจ ์ผ์ชฝ์ ํผ๋ด์ผ๋ก ์ก๊ณ left์ right๋ฅผ ์๋์ ๊ฐ์ด ๊ฐ๊ฐ ์ง์ ํ๋ค.์ฌ๊ธฐ์์ left๋ pivot๋ณด๋ค ์์์ผํ๊ณ , right๋ pivot๋ณด๋ค ์ปค์ผํ๋ค. ์ด์ left๋ฅผ ํ๋์ฉ ์ฎ๊ธฐ๋ฉฐ 5๋ณด๋ค ํฐ ์๊ฐ ์ฒ์์ผ๋ก ๋์ค๋ ์ง์ ์ ์ฐพ์ผ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.right๋ pivot๋ณด๋ค ์ปค์ผํ๋ค๊ณ ํ๋๋ฐ ์ด๋ฏธ pivot๋ณด๋ค ์๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ๋ฉ์ถฐ์ค๋ค.์ด์ left์ right๊ฐ..