๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก2025/06 (6)

Unfazedโ—๏ธ๐ŸŽฏ

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection)์˜ ๊ธฐ๋ณธ ์›๋ฆฌ์™€ ๋ฉ”์ปค๋‹ˆ์ฆ˜

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ์—ญ์‚ฌ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ž๋ฐ”์—์„œ ์ฒ˜์Œ ์†Œ๊ฐœ๋œ ๊ธฐ์ˆ ๋กœ ์˜คํ•ดํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” 1960๋…„ MIT์—์„œ ๊ฐœ๋ฐœ๋œ ์–ธ์–ด ๋ฆฌ์Šคํ”„(LISP)๊ฐ€ ์ตœ์ดˆ๋กœ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์กด ๋งฅ์นด์‹œ๊ฐ€ ์ œ์‹œํ•œ 3๊ฐ€์ง€ ํ•ต์‹ฌ ๋ฌธ์ œ๋ฆฌ์Šคํ”„์˜ ์ฐฝ์‹œ์ž ์กด ๋งฅ์นด์‹œ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ 3๊ฐ€์ง€๋ฅผ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•ด์•ผ ํ•˜๋‚˜? (What to collect?)์–ธ์ œ ํšŒ์ˆ˜ํ•ด์•ผ ํ• ๊นŒ? (When to collect?)์–ด๋–ป๊ฒŒ ํšŒ์ˆ˜ํ•ด์•ผ ํ• ๊นŒ? (How to collect?)์™œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ดํ•ดํ•ด์•ผ ํ• ๊นŒ?ํ˜„๋Œ€์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ๋งค์šฐ ๋ฐœ๋‹ฌํ•ด์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ๋Š” ์ง์ ‘ ๊ฐœ์ž…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์™€ ๋ˆ„์ˆ˜ ..

Java 2025. 6. 23. 00:13
[๋‹จ์–ด ์ •๋ฆฌ] Proxy

์–ด์› ๋ถ„์„Proxy๋Š” ๋ผํ‹ด์–ด์—์„œ ์ถœ๋ฐœํ•œ ๋‹จ์–ด์ž…๋‹ˆ๋‹ค.๋ผํ‹ด์–ด ์–ด๊ทผ: "pro-" (๋Œ€์‹ ์—, ์•ž์—) + "curare" (๋Œ๋ณด๋‹ค, ๊ด€๋ฆฌํ•˜๋‹ค)์ค‘์„ธ ๋ผํ‹ด์–ด: "procurator" (๋Œ€๋ฆฌ์ธ, ๊ด€๋ฆฌ์ธ)์•ต๊ธ€๋กœ-ํ”„๋ž‘์Šค์–ด: "procuracie"์ค‘์„ธ ์˜์–ด: "procuracy" → ํ˜„๋Œ€ ์˜์–ด "proxy"ํ•ต์‹ฌ์€ "๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋Œ€์‹ ํ•ด์„œ ๋Œ๋ณธ๋‹ค"๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.์˜๋ฏธ์˜ ํ•ต์‹ฌ"Proxy"์˜ ๊ธฐ๋ณธ ์˜๋ฏธ๋Š” "๋Œ€๋ฆฌ, ๋Œ€์‹ "์ž…๋‹ˆ๋‹ค. ์›๋ž˜ ์žˆ์–ด์•ผ ํ•  ๊ฒƒ์˜ ์ž๋ฆฌ์—์„œ ๊ทธ ์—ญํ• ์„ ๋Œ€์‹  ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.๊ด€๋ จ ๋‹จ์–ด๋กœ ์ดํ•ดํ•˜๊ธฐ๊ฐ™์€ ์–ด๊ทผ์„ ๊ฐ€์ง„ ๋‹จ์–ด๋“ค:Procure (์กฐ๋‹ฌํ•˜๋‹ค) - ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์œ„ํ•ด ๊ตฌํ•ด์˜ค๋‹คProcurator (๊ด€๋ฆฌ์ธ) - ๋Œ€์‹  ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒProcedure (์ ˆ์ฐจ) - ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋น„์Šทํ•œ ๊ฐœ๋…์˜ ๋‹จ์–ด๋“ค:Substitute (๋Œ€..

JVM ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ

๊ฐ์ฒด ์ƒ์„ฑ์˜ ์ „์ฒด ๊ณผ์ •1. ํด๋ž˜์Šค ๋กœ๋”ฉ ๋ฐ ๊ฒ€์ฆ ๋‹จ๊ณ„Person person = new Person("Alice", 25); ์œ„ ํ•œ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ JVM์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.์‹ฌ๋ณผ ์ฐธ์กฐ ํ™•์ธ: new ๋ฐ”์ดํŠธ์ฝ”๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ƒ์ˆ˜ ํ’€์˜ ์˜ฌ๋ฐ”๋ฅธ ํด๋ž˜์Šค ์ฐธ์กฐ์ธ์ง€ ํ™•์ธํด๋ž˜์Šค ์ƒํƒœ ๊ฒ€์ฆ: Person ํด๋ž˜์Šค๊ฐ€ ์ด๋ฏธ ๋กœ๋”ฉ(Loading), ํ•ด์„(Resolving), ์ดˆ๊ธฐํ™”(Initialization)๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•„์š”์‹œ ํด๋ž˜์Šค ๋กœ๋”ฉ: ์ค€๋น„๋˜์ง€ ์•Š์€ ํด๋ž˜์Šค๋ผ๋ฉด ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ํ†ตํ•ด ๋กœ๋”ฉ ์ˆ˜ํ–‰2. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋‹จ๊ณ„ํด๋ž˜์Šค ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ์ฒด ํฌ๊ธฐ๋ฅผ ์ •ํ™•ํžˆ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋‹ค์Œ์œผ๋กœ ํž™์—์„œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹(ํฌ์ธํ„ฐ ๋ฐ€์น˜๊ธฐ, ์—ฌ์œ  ๋ชฉ๋ก)์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.2.1. ํฌ..

Java 2025. 6. 17. 19:40
JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ

JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐJVM์˜ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ์€ ํฌ๊ฒŒ ์Šค๋ ˆ๋“œ ๊ณต์œ  ์˜์—ญ๊ณผ ์Šค๋ ˆ๋“œ ๊ฐœ๋ณ„ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ๋ฉ”์„œ๋“œ ์˜์—ญ (Method Area)ํž™ (Heap)์Šค๋ ˆ๋“œ๋ณ„ ๊ฐœ๋ณ„ ์˜์—ญํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ (PC Register)๊ฐ€์ƒ ๋จธ์‹  ์Šคํƒ (JVM Stack)๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ (Native Method Stack)๊ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ƒ์„ธ ๋ถ„์„1. ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ (PC Register)์—ญํ• : ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฐ”์ดํŠธ์ฝ”๋“œ์˜ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญํŠน์ง•:๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ์ž๋ฐ” ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์‹œ: ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น์–ด ์ฃผ์†Œ ์ €์žฅ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์‹œ: Undefined ์ƒํƒœ์œ ์ผํ•˜๊ฒŒ OutOfMemoryError ์กฐ๊ฑด์ด ๋ช…์‹œ๋˜์ง€ ์•Š์€ ์˜์—ญ2. ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ์Šคํƒ (..

Java 2025. 6. 17. 17:42
HTTP vs HTTPS

์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ฃผ์†Œ์ฐฝ์—์„œ http://์™€ https://์˜ URL ์Šคํ‚ด์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” HTTP์™€ HTTPS์˜ ์ฐจ์ด์ ๊ณผ HTTPS๊ฐ€ ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. HTTP (HyperText Transfer Protocol)๋ž€?HTTP๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ๊ทœ์•ฝ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›น์‚ฌ์ดํŠธ๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์ด ์š”์ฒญ์ด ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๊ณ , ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.HTTP์˜ ํŠน์ง•๊ธฐ๋ณธ ํฌํŠธ: 80๋ฒˆ๋ฐ์ดํ„ฐ๊ฐ€ ํ‰๋ฌธ(์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ)์œผ๋กœ ์ „์†ก๋น ๋ฅด๊ณ  ๋‹จ์ˆœํ•œ ํ†ต์‹ ๋ณด์•ˆ์„ฑ ๋ถ€์กฑ2. HTTPS (HTTP Secure)๋ž€?HTTPS๋Š” HTTP์— ๋ณด์•ˆ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—์„œ ์ฒ˜์Œ ๊ฐœ๋ฐœ..

HTTP 2025. 6. 12. 19:29
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MVCC ๋ชจ๋ธ: Oracle, MySQL, PostgreSQL์˜ ๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด

DBMS์—์„œ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋Œ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€(๋™์‹œ์„ฑ ์ œ์–ด)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค.๋™์‹œ์„ฑ ์ œ์–ด์˜ ์ ‘๊ทผ ๋ฐฉ์‹๋™์‹œ์„ฑ ์ œ์–ด๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.๋น„๊ด€์  ์ž ๊ธˆ(Pessimistic Locking)์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ๊ฒƒ์„ ์ „์ œํ•˜๊ณ  ์ž ๊ธˆ์„ ๊ฑธ์–ด ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ์‹ex) Read/Write locks, 2PL(Two-Phase Locking)๋‚™๊ด€์  ์ž ๊ธˆ(Optimistic Locking)์ถฉ๋Œ์„ ํ—ˆ์šฉํ•˜๋˜ ํƒ์ง€ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ex) Logical clock, MVCC(Multi-Version Concurrency Control)2PL์˜ ํ•œ๊ณ„์ „ํ†ต์ ์ธ 2PL(Two-Phase Locking) ๋ฐฉ์‹์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž ..