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

๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (166)

Unfazedโ—๏ธ๐ŸŽฏ

HTTP ์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ถ”์ 

HTTP ์ฟ ํ‚ค(HTTP cookie) : ์›น ์„œ๋ฒ„์— ์˜ํ•ด ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜๋Š”, '์ด๋ฆ„์„ ๊ฐ€์ง„ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ'.์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋– ํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์— ์„ค์น˜๋˜๋Š” ์ž‘์€ ๊ธฐ๋ก ์ •๋ณด ํŒŒ์ผ๋กœ ์ฟ ํ‚ค, ์›น ์ฟ ํ‚ค, ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค๋ผ๊ณ ๋„ ํ•œ๋‹ค.  ์ฟ ํ‚ค์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐœ์ƒ : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„ ๊ด€๋ จ ์ •๋ณด๋ฅผ  ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ฑ…์ž„์ด ์žˆ๊ณ , ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ 'ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํƒœ' ๋˜๋Š” 'HTTP ์ƒํƒœ ๊ด€๋ฆฌ ์ฒด๊ณ„(HTTP State Management Mechanism)๋ผ ํ•œ๋‹ค. ๊ณตํ†ต์ ์ธ ์ฟ ํ‚ค ์ €์žฅ ๋ฐฉ์‹๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ณด๊ด€ํ•˜๋Š”๋ฐ ๊ฐ ์ฟ ํ‚ค๋Š” ์ด๋ฆ„,..

HTTP 2025. 2. 18. 15:02
[Java] null ์ฐธ์กฐ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

Java์—์„œ null์€ ์ฐธ์กฐ ํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ ์•„๋ฌด ๊ฐ์ฒด๋„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน์ˆ˜ํ•œ ๋ฆฌํ„ฐ๋Ÿด์ด๋‹ค. null์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…์— ํ• ๋‹น ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ฃผ์†Œ๊ฐ’์ด 0x0์œผ๋กœ ๊ณ ์ •๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์ฐจ๋‹จ๋œ๋‹ค.null์˜ ๋ณธ์งˆ์  ํŠน์„ฑ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…: null์€ ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹Œ ๋ฆฌํ„ฐ๋Ÿด๋กœ ๋ถ„๋ฅ˜๋˜๋ฉฐ, instanceof ์—ฐ์‚ฐ์ž๋กœ ํ™•์ธ ์‹œ ํ•ญ์ƒ false ๋ฐ˜ํ™˜(null์€ Object๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ)ํƒ€์ž… ์‹œ์Šคํ…œ: ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…(ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐฐ์—ด)์— ํ• ๋‹น ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ธฐ๋ณธํ˜•(int ๋“ฑ)์—๋Š” ์ง์ ‘ ํ• ๋‹น ๋ถˆ๊ฐ€ํŠน์„ฑ์„ค๋ช…์ฃผ์†Œ๊ฐ’0x0์œผ๋กœ ๊ณ ์ •๋˜์–ด ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ฐจ๋‹จ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ๊ฐ์ฒด ํ—ค๋” ์—†์ด ๋‹จ์ˆœ 0๊ฐ’ ์ €์žฅํƒ€์ž… ์บ์ŠคํŒ…์–ด๋–ค ์ฐธ์กฐ ํƒ€์ž…์œผ๋กœ๋„ ์บ์ŠคํŒ… ๊ฐ€๋Šฅ์ดˆ๊ธฐํ™” ๊ธฐ๋ณธ๊ฐ’ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ null ์ดˆ๊ธฐํ™”null..

Java 2025. 2. 14. 11:12
[Java] ํŠธ๋ฆฌ, ์žฌ๊ท€ | LeetCode 226 Invert Binary Tree (๊ท€๋‚ฉ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ)

๋ฌธ์ œ ๋งํฌhttps://leetcode.com/problems/invert-binary-tree/description/?envType=study-plan-v2&envId=top-interview-150 ๋ฌธ์ œ ์ž…์ถœ๋ ฅ์ž…๋ ฅ: ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ(root) ๋…ธ๋“œ์ถœ๋ ฅ: ๊ฐ ๋…ธ๋“œ์˜ ์ž์‹ ์ขŒ์šฐ๋ฅผ ๋’ค๋ฐ”๊พผ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ชจ๋“  ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ์„œ๋กœ ๊ตํ™˜ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž์‹๋“ค์„ swapํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ณผ์ •์—์„œ ์žฌ๊ท€์ ์œผ๋กœ ๊ณ„์† swapํ•ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•˜์ง€๋งŒ ์žฌ๊ท€ ํ˜ธ์ถœ ์ˆœ์„œ๋ฅผ ๊นŠ๊ฒŒ ์ƒ์ƒํ•˜๋ฉด์„œ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฝ์งˆ์„ ํ•ด์„œ ๋А๋‚€ ๋ฐ”๋ฅผ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ์‹œ     4   /   \  2     7 / \     / \1   3 6   9 ์žฌ๊ท€ ํ˜ธ..

[Java] ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ JVM์˜ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์ดํ•ดํ•˜๋Š” ์Šค๋ ˆ๋“œ start(), run() ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด

Java์—์„œ start() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์™€ run() ๋ฉ”์„œ๋“œ ์ง์ ‘ ํ˜ธ์ถœ์˜ ๋ฌธ์ œ์ ์„ ์•Œ์•„๋ณด์ž. 1. ์Šค๋ ˆ๋“œ ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ•ต์‹ฌ ์ฐจ์ดstart() ๋ฉ”์„œ๋“œ์˜ ์—ญํ• ์ƒˆ๋กœ์šด ํ˜ธ์ถœ ์Šคํƒ(Call Stack)์„ ์ƒ์„ฑํ•˜์—ฌ JVM์ด ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ start0()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉฐ, ์ด๋Š” OS ์ˆ˜์ค€์—์„œ ์‹ค์ œ ์Šค๋ ˆ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. run() ์ง์ ‘ ํ˜ธ์ถœ์˜ ๋ฌธ์ œ์ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ์˜ ํ˜ธ์ถœ ์Šคํƒ์—์„œ ๋™๊ธฐ์ ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ์ด๋Š” ๋‹จ์ˆœ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ํ•ต์‹ฌ์ธ ๋ณ‘๋ ฌ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.// ์ž˜๋ชป๋œ ์‚ฌ์šฉ ์˜ˆ์‹œThread myThread = new MyCustomThread();myThrea..

Java 2025. 2. 7. 15:29
[Java] ์Šค๋ ˆ๋“œ ์ข…๋ฃŒ & Daemon ์Šค๋ ˆ๋“œ

์Šค๋ ˆ๋“œ ์ค‘๋‹จ์˜ ํ•„์š”์„ฑ๊ณผ ์ƒํ™ฉ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์Šค๋ ˆ๋“œ๋Š” ์ž์›์„ ์†Œ๋น„ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ด์ง€ ์•Š๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ปค๋„ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ CPU ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ์ž์› ์†Œ๋น„๋Š” ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์‹คํ–‰๋˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋” ์ด์ƒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์Šค๋ ˆ๋“œ ์ค‘๋‹จ์ด ์š”๊ตฌ๋œ๋‹ค.๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ํšŒ์ˆ˜: ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„์—๋„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ„์† ์†Œ๋น„ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์ข…๋ฃŒํ•จ์œผ๋กœ์จ ์ž์› ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.๋น„์ •์ƒ ๋™์ž‘ ๋Œ€์‘: ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘, ์˜ˆ์ƒ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ์‘๋‹ต์ด ์—†๋Š” ๊ฒฝ์šฐ ์Šค๋ ˆ๋“œ๋ฅผ ์ค‘๋‹จํ•ด ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ ์ฒ˜๋ฆฌ: ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…..

Java 2025. 2. 6. 21:26
[Java] ์Šค๋ ˆ๋“œ ์ƒ์„ฑ (Runnable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„, Thread ํด๋ž˜์Šค ์ƒ์†)

Java์—์„œ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค.Runnable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ๋ฐฉ์‹๋ณ„๋„์˜ Runnable ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์ด๋ฅผ Thread ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.์ด์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค๋ฃฌ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ์™€ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ์ฝ”๋“œ์™€ ์Šค๋ ˆ๋”ฉ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰ํ•  ์ž‘์—…์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๋™์ผํ•œ Runnable์„ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์šฉ์ดํ•˜๋‹ค. ๋˜ํ•œ, ์ƒ์†์˜ ์ œ์•ฝ ์—†์ด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๋„ ํฐ ์ด์ ์ด๋‹ค. Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ฐฉ์‹Thread ํด๋ž˜์Šค ์ž์ฒด๊ฐ€ Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์ƒ์†ํ•˜์—ฌ run()..

Java 2025. 2. 6. 13:32
[Java] ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋Šฅ๊ณผ ๋””๋ฒ„๊น…

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ๊ฐœ๋…๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. Java์—์„œ๋Š” Thread ํด๋ž˜์Šค์™€ Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด CPU ์ž์›์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ฐ ์‘๋‹ต์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.2. ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ ์ƒ์„ฑํ•˜๊ธฐJava์—์„œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋จผ์ € Thread ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ƒ์„ฑ์ž์— Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ , Runnable ์ธํ„ฐํŽ˜์ด์Šค์˜ run() ๋ฉ”์„œ๋“œ์— ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•  ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.Thread thread = new Thread(new Runnable() { @Override public void run() { ..

Java 2025. 2. 6. 11:45
๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜, ์Šค์ผ€์ค„๋ง, ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ

1. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์ด ํ•„์š”ํ•œ ์ฃผ์š” ์ด์œ ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ์‘๋‹ต์„ฑ(Responsiveness)๊ณผ ์„ฑ๋Šฅ(Performance)์ด๋‹ค.1.1. ์‘๋‹ต์„ฑ(Responsiveness)์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด์—์„œ ์‘๋‹ต์„ฑ์€ ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค.์‚ฌ๋ก€ 1: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์—์„œ ๋Œ€๋Ÿ‰ ๊ตฌ๋งค ์š”์ฒญ์ด DB ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ฌ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์ฐจ๋‹จ๋จ → ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์œผ๋กœ ๊ฐ ์š”์ฒญ์„ ๋ณ„๋„ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋™์‹œ ์‘๋‹ต ๊ฐ€๋Šฅ์‚ฌ๋ก€ 2: ๋™์˜์ƒ ์žฌ์ƒ ์•ฑ๋ฉ”์ธ ์Šค๋ ˆ๋“œ: UI ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์›Œ์ปค ์Šค๋ ˆ๋“œ: ๋ฏธ๋””์–ด ๋””์ฝ”๋”ฉ ๋ฐ ์ถœ๋ ฅ → ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜ ์ง€์—ฐ ์—†๋Š” ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜ ์ œ๊ณต์ด๋Ÿฌํ•œ ๋™์‹œ์„ฑ(Concurrency)์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ๋‹จ์ผ ์ฝ”์–ด์—์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.1.2. ์„ฑ๋Šฅ(Performa..

[์ด์ง„ ํƒ์ƒ‰] int mid = left + (right - left) / 2;

์ด์ง„ ํƒ์ƒ‰์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ด๋Š” ๊ณผ์ •์—์„œ ์ค‘๊ฐ„ ์ธ๋ฑ์Šค(mid)๋ฅผ ๊ณ„์‚ฐ์„ ๋‹จ์ˆœํ•˜๊ฒŒ (left + right) / 2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค.๊ฒฐ๋ก ๋งŒ ๋จผ์ € ๋งํ•˜๋ฉด, int mid = left + (right - left) / 2; ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•œ๋‹ค.1. ๊ธฐ๋ณธ์ ์ธ ์ค‘๊ฐ„ ์ธ๋ฑ์Šค mid ๊ณ„์‚ฐ ๋ฐฉ์‹์ด์ง„ ํƒ์ƒ‰์—์„œ๋Š” ๊ฒ€์ƒ‰ ๋ฒ”์œ„์˜ ์–‘ ๋ ์ธ๋ฑ์Šค์ธ left์™€ right๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ค‘๊ฐ„ ์ธ๋ฑ์Šค๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.int mid = (left + right) / 2; ์ด ๋ฐฉ์‹์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, left์™€ right๊ฐ€ ๋งค์šฐ ํฐ ๊ฐ’์ผ ๊ฒฝ์šฐ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.2. ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ..

HashSet/HashMap์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜

HashSet์€ Java Collections Framework์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ, ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ง‘ํ•ฉ(Set) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. 1. HashSet์˜ ์ฃผ์š” ํŠน์ง•์ค‘๋ณต ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ : ๋ฐ์ดํ„ฐ ๋™๋“ฑ์„ฑ ํ™•์ธ์„ ์œ„ํ•œ equals(), hashCode() ๋ฉ”์„œ๋“œ ํ•„์š”์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ : ์ธ๋ฑ์Šค๊ฐ€ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฉ”์„œ๋“œ(get(int index), indexOf(Object o) ๋“ฑ)์ด ์—†์Œnull ์š”์†Œ ํ—ˆ์šฉ ๋น„๋™๊ธฐ(non-synchronized) ๊ตฌํ˜„O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ2. ๋‚ด๋ถ€ ๊ตฌ์กฐ 2-1) ์ฃผ์š” ํ•„๋“œ์œ„์˜ ์ฝ”๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด HashSet์€ ๋‚ด๋ถ€์ ์œผ๋กœ HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.HashSet์€ ์š”์†Œ๋“ค์„ HashMap์˜ key๋กœ ์ €์žฅํ•œ๋‹ค.๋ชจ๋“  ๊ฐ’์— ๋Œ€..

Java 2025. 1. 22. 11:59