๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

BackEnd๐ŸŒฑ/Java27

[Java] CompletableFuture๋กœ ๋น„๋™๊ธฐ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ Future vs CompletableFuture Future์™€ CompletableFuture๋Š” ๋ชจ๋‘ Java์—์„œ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Java 5์—์„œ ๋„์ž…๋œ Future๋Š” ๋น„๋™๊ธฐ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, Java 8์—์„œ ๋„์ž…๋œ CompletableFuture๋Š” Future๋ฅผ ํ™•์žฅํ•˜์—ฌ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CompletableFuture์™€ Future์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? Future์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฒˆ ํฌ์ŠคํŒ…์˜ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚  ๊ฒƒ ๊ฐ™์•„ ๊ฐ„๋‹จํ•˜๊ฒŒ CompletableFuture์™€์˜ ์ฐจ์ด์ ๋งŒ ๋น„๊ตํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. Blocking vs Non-Blocking Future๋Š” get() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฉ”์„œ๋“œ๋Š” ์—ฐ์‚ฐ์ด ์™„๋ฃŒ.. 2023. 12. 12.
[JVM ๋งค๊ฐœ๋ณ€์ˆ˜] InitialRAMPercentage, MinRAMPercentage, MaxRAMPercentage ๊ฐœ์š” Java 8๋ถ€ํ„ฐ, InitialRAMPercentage, MinRAMPercentage, ๊ทธ๋ฆฌ๊ณ  MaxRAMPercentage ์„ธ ๊ฐ€์ง€ JVM ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋„์ž…๋˜์–ด ์‚ฌ์šฉ์ž์ž๊ฐ€ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํž™ ํฌ๊ธฐ๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ JVM์€ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ JVM๋„ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. InitialRAMPercentage -XX:InitialRAMPercentage ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ดˆ๊ธฐ ํž™ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ์„œ๋ฒ„๋‚˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๋ฐฑ๋ถ„์œจ๋กœ ์„ค์ •๋˜๋ฉฐ, double ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 1GB ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ์„œ๋ฒ„์—์„œ -.. 2023. 10. 1.
Java์—์„œ assert์™€ exception ์„œ๋ก  Java์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋ฒ„๊ทธ ๋˜๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์„ ๊ฒ€์ถœํ•˜๊ณ  ์ ์ ˆํžˆ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ assert์™€ exception์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ, ์‚ฌ์šฉ ๋ชฉ์ , ์ ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค, ๊ทธ๋ฆฌ๊ณ  ํŠน์„ฑ์—์„œ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Exception exception์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ฐ˜์ ์ธ ์‹คํ–‰ ํ๋ฆ„์—์„œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ด๋ฅผ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Java์˜ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. Java์˜ ์˜ˆ์™ธ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. 1. Uncheked Exception(๋˜๋Š” RuntimeException) int x = 0; int y = 5 / x; // ArithmeticException ๋ฐœ์ƒ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋ฐœ๊ฒฌ๋˜๋Š” ์˜ˆ์™ธ๋กœ, Ru.. 2023. 8. 11.
์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(First-Class Collection)์ด๋ž€? ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(First-Class Collection)์ด๋ž€? Java์—์„œ ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(First-Class Collection)์€ ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ๋™๋“ฑํ•œ ์ง€์œ„๋ฅผ ๊ฐ–๋Š” ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋Š” ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ๋™๋“ฑํ•œ ์ง€์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋Š” ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ์—์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋งํ•˜๋ฉด Collection์„ Wrapping ํ•˜๋ฉด์„œ, ๊ทธ ์™ธ ๋‹ค๋ฅธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํƒœ๋ฅผ ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ ์ฝ”๋“œ๋กœ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. public class Student { pri.. 2023. 4. 12.
Java์˜ ๊ธฐ๋ณธ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค ์„œ๋ก  ์‚ฌ๋‚ด ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋‹ค๊ฐ€ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค, ๊ทธ์ค‘์—์„œ๋„ BiFunction์„ ์‚ฌ์šฉํ•œ ๋กœ์ง์„ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๋ณด๋‹ˆ ์ƒ์†Œํ•˜๊ธฐ๋„ ํ•˜๊ณ , ์ €๋„ ๋กœ์ง์— ํ•œ๋ฒˆ ๋…น์—ฌ๋ณด๊ณ  ์‹ถ์–ด์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค ์ข…๋ฅ˜ Java์˜ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋Š” JAVA 8๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ธฐ๋Šฅ์œผ๋กœ, ํ•˜๋‚˜์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋งŒ ๊ฐ€์ง€๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋“ค์€ ๋žŒ๋‹ค ํ‘œํ˜„์‹์ด๋‚˜ ๋ฉ”์„œ๋“œ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Java์—์„œ๋Š” java.util.function ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Java์—์„œ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋‘” ์ฃผ์š” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Function: ์ž…๋ ฅ ์ธ์ˆ˜ T๋ฅผ ๋ฐ›์•„ ๊ฒฐ๊ณผ R์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฃผ.. 2023. 3. 20.
Java์˜ ์˜ˆ์™ธ ์ƒ์„ฑ ๋น„์šฉ์€ ๋น„์‹ธ๋‹ค ์„œ๋ก  ๋ณดํ†ต ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์  ๋•Œ๋ฌธ์— ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ˆ์™ธ ํด๋ž˜์Šค ์™ธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ Custom Exception ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ ์ฒ˜๋ฆฌ์˜ ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€๋…์„ฑ ์œ ์ง€: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์˜ˆ์˜ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋ฏ€๋กœ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ๊น… ๋ฐ ๋””๋ฒ„๊น…์— ์šฉ์ด: ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์™ธ ํด๋ž˜์Šค์— ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋””๋ฒ„๊น…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ์œ ์—ฐ์„ฑ: ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์žฅ์  ์™ธ์—๋„, ์ž๋ฐ”์—์„œ๋Š” Exception์˜ ์ฒ˜๋ฆฌ ๋น„์šฉ์ด ๋งค์šฐ ๋น„์‹ธ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” JVM์—์„œ E.. 2023. 3. 10.
๋””๋ฏธํ„ฐ ๋ฒ•์น™ (Law of Demeter)์ด๋ž€? ์ตœ๊ทผ ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ฝ๋˜ ์ค‘ ๋””๋ฏธํ„ฐ ๋ฒ•์น™์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฉ์–ด ์ž์ฒด๋Š” ์ƒ์†Œํ•˜๊ธด ํ•œ๋ฐ ๋ฒ•์น™์˜ ๋‚ด์šฉ ์ž์ฒด๋Š” ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ณ , ํ‰์ƒ์‹œ ๊ฐœ๋ฐœ์—์„œ ํ”ํžˆ ๋งˆ์ฃผ์น  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃฌ ๋ฒ•์น™์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฏธํ„ฐ ๋ฒ•์น™์ด๋ž€? ๋””๋ฏธํ„ฐ ๋ฒ•์น™(Law of Demeter)์€ ๋ฐ๋ฉ”ํ…Œ๋ฅด ๋ฒ•์น™์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ์ค„์—ฌ์„œ LoD๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฒ•์น™์€ "์ตœ์†Œํ•œ์˜ ์ง€์‹ ์›์น™(The Principle of Least Knowledge)์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“ˆ์€ ์ž์‹ ์ด ์กฐ์ž‘ํ•˜๋Š” ๊ฐ์ฒด์˜ ์†์‚ฌ์ •์„ ๋ชฐ๋ผ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Demeter๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋˜ ๊ฐœ๋ฐœ์ž๋“ค์€ ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์ •๋ณด๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค ๋ณด๋‹ˆ, ์„œ๋กœ์— ๋Œ€ํ•œ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ์ด๋กœ ์ธํ•ด ์ข‹์ง€ ๋ชปํ•œ ์„ค๊ณ„๋ฅผ.. 2023. 2. 1.
์ž๋ฐ”์—์„œ ๋™์‹œ์„ฑ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๊ณผ Redis์˜ ๋ถ„์‚ฐ๋ฝ ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์‚ฌ์ „์ง€์‹์œผ๋กœ ์šด์˜์ฒด์ œ์˜ ๋™๊ธฐํ™” ์ด๋ก ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ์†์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํ—ท๊ฐˆ๋ฆฌ์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ๋จผ์ € ์ฝ๊ณ  ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. [OS] ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”(Process Synchronization) ์„œ๋ก  ํ˜‘๋ ฅ์  ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์— ์˜ํ–ฅ์„ ์ฃผ๊ฑฐ๋‚˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ํ˜‘๋ ฅ์  ํ”„๋กœ์„ธ์Šค๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„(์ฆ‰, ์ฝ”๋“œ ๋ฐ ๋ฐ์ดํ„ฐ)์„ ์ง์ ‘ ๊ณต์œ ํ•˜๊ฑฐ dkswnkk.tistory.com ๊ณต์œ ์ž์›์— ๋Œ€ํ•ด ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์—ฌ ์ƒ๊ธฐ๋Š” ๊ฒฝ์Ÿ ์ƒํ™ฉ(race condition)์„ ์šฐ๋ฆฌ๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๋” ์ž์„ธํžˆ๋Š” ๋™์ผํ•œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ, ํ˜น์€ ์„ธ์…˜์—์„œ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ œ์–ดํ•  .. 2023. 1. 8.
ํ•ด์‹œ ์ž๋ฃŒ๊ตฌ์กฐ์™€, ํ•ด์‹œ ์ถฉ๋Œ ๊ทธ๋ฆฌ๊ณ  Java์˜ HashMap ๋™์ž‘ ๋ฐฉ๋ฒ• ๋ชฉ์ฐจ ํ•ด์‹œ๋ž€? ํ•ด์‹œํ•จ์ˆ˜๋ž€? ํ•ด์‹œ ์ถฉ๋Œ ์™„ํ™” ๋ฐฉ๋ฒ• Java์—์„œ HashMap ๋™์ž‘ ๋ฐฉ๋ฒ• ํ•ด์‹œ(Hash)๋ž€? ํ•ด์‹œ(Hash) ๊ตฌ์กฐ๋ž€, key-value์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ์จ, ํ•ด์‹œ ๊ตฌ์กฐ์—์„œ๋Š” key๋ฅผ ์ด์šฉํ•˜์—ฌ value๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์˜ Dicitionary, ๋ฃจ๋น„์˜ Hash, Java์˜ HashMap, C++์˜ unordered_map์ด ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜(Hash Function)์ด๋ž€? ํ•ด์‹œ ํ•จ์ˆ˜๋ž€, ์ž„์˜ ๊ธธ์ด์˜ ์ž…๋ ฅ ๊ฐ’์„ ๊ณ ์ • ๊ธธ์ด์˜ ์•”ํ˜ธํ™”๋œ ์ถœ๋ ฅ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. key๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜์— ๋„ฃ์–ด์„œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ๊ฐ€ hash์ด๋ฉฐ, ๊ฒฐ๊ตญ ํ•ด์‹œ ํ•จ์ˆ˜๋ž€ key๋ฅผ hash๋กœ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€์˜ ํŠน์ง•.. 2022. 12. 30.