๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€426

Redis String vs Set vs Bitmap ๋ฉ”๋ชจ๋ฆฌ ๋น„๊ต ์ตœ๊ทผ Redis๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์œ ์ €๋ณ„ ์•Œ๋ฆผ ๋ฐœ์†ก ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋™์ผํ•œ ์œ ์ €์—๊ฒŒ ๊ฐ™์€ ๊ฒŒ์‹œ๊ธ€์ด ์ค‘๋ณต ๋ฐœ์†ก๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค. ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์š”์ฒญ ์ˆ˜๋Š” ์•ฝ 300๋งŒ ๊ฑด,, ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Redis์˜ String, Set, Bitmap ์ค‘ ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ• ๊นŒ?๊ฐ ํƒ€์ž…์˜ ํŠน์ง•๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์ž.(๊ฒŒ์‹œ๊ธ€ ID๋Š” 15๊ฐœ, ์œ ์ € ID๋Š” 1~300๋งŒ, ํ•˜๋‚˜์˜ ๊ฒŒ์‹œ๊ธ€์ด ์—ฌ๋Ÿฌ ์œ ์ €์—๊ฒŒ ๋ฐœ์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.) ์•„๋ž˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” INFO memory ๋ช…๋ น์–ด์˜ Redis ๋ฉ”๋ชจ๋ฆฌ ํ•„๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.๋ฉ”๋ชจ๋ฆฌ ํ•„๋“œ์„ค๋ช…used_memoryํ˜„์žฌ Redis์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ”์ดํŠธ ์ˆ˜used_memory_humanused_memory.. 2025. 11. 1.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 6์žฅ ํด๋ž˜์Šค ์„ค๊ณ„ ์•„์ดํ…œ 36. ์ƒ์†๋ณด๋‹ค๋Š” ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋ผ์ƒ์†์€ ‘is-a’ ๊ด€๊ณ„์˜ ๊ฐ์ฒด ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๊ณ , ๋‹จ์ˆœ ์ฝ”๋“œ ์ถ”์ถœ/์žฌ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ์ƒ์†๋ณด๋‹ค ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ฐ„๋‹จํ•œ ํ–‰์œ„ ์žฌ์‚ฌ์šฉ ์œ„์™€ ๊ฐ™์€ ์Šˆํผํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ณตํ†ต๋˜๋Š” ํ–‰์œ„๋ฅผ ์ถ”์ถœํ–ˆ์„๋•Œ์˜ ๋‹จ์ ?์ƒ์†์€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋งŒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ƒ์†์„ ์‚ฌ์šฉํ•ด์„œ ํ–‰์œ„๋ฅผ ์ถ”์ถœํ•˜๋‹ค ๋ณด๋ฉด ๋งŽ์€ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฑฐ๋Œ€ํ•œ ํด๋ž˜์Šค (BaseXXX)๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๊ณ , ๊นŠ๊ณ  ๋ณต์žกํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์•„์ง„๋‹ค.์ƒ์†์€ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถˆํ•„์š”ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ฐ–๋Š” ํด๋ž˜์Šค๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ์ฒด๋ฅผ ํ”„๋กœํผํ‹ฐ๋กœ ๊ฐ€์ง€๊ณ , ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ˜•ํƒœ๋กœ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.๊ฒฐ๊ตญ ์ปดํฌ์ง€์…˜์€, ์ฝ”๋“œ.. 2025. 10. 25.
์ฝ”๋“œ ๋„ˆ๋จธ, ํšŒ์‚ฌ๋ณด๋‹ค ์˜ค๋ž˜ ๋‚จ์„ ๊ฐœ๋ฐœ์ž ํ•œ๋น›๋ฏธ๋””์–ด์˜ ๋‚˜๋Š”๋ฆฌ๋ทฐ์–ด๋‹ค 2024๋ฅผ ํ†ตํ•ด ์˜ฌํ•ด ๋งˆ์ง€๋ง‰์˜ 12์›”, "์ฝ”๋“œ ๋„ˆ๋จธ, ํšŒ์‚ฌ๋ณด๋‹ค ์˜ค๋ž˜ ๋‚จ์„ ๊ฐœ๋ฐœ์ž" ๋„์„œ๋ฅผ ์ œ๊ณต ๋ฐ›์•„ ์ฝ์–ด๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ๋ก€๋“ค์ด ๋งŽ์•„์„œ ๊ต‰์žฅํžˆ ์œ ์šฉํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์ฝ์—ˆ๋„ค์š”.Part 01, ์ƒ์œ„ 1% ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์‹ค์ „ ์†Œํ”„ํŠธ ์Šคํ‚ฌ์ž๊ธฐ ํšจ๋Šฅ๊ฐ์„ ํ‚ค์šฐ๋Š” ๋ฐฉ๋ฒ•์ž‘์€ ์„ฑ๊ณต ๊ฒฝํ—˜์„ ์Œ“๊ธฐํ˜„์‹ค์ ์ด๊ณ  ๊ตฌ์ฒด์ ์ธ ๋ชฉํ‘œ๋ฅผ ์ •ํ•˜๊ณ  ์ž‘์€ ์„ฑ์ทจ๋ผ๋„ ๊ฒฝํ—˜ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ‘์ด๋ฒˆ ์ฃผ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์—์„œ ๋ฐ›์€ ํ”ผ๋Œ€๋ธ ์ค‘ ํ•œ ๊ฐ€์ง€๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ’ ์ฒ˜๋Ÿผ์š”.๋กค๋ชจ๋ธ์„ ๊ด€์ฐฐํ•˜๊ณ  ๋”ฐ๋ผ ํ•˜๊ธฐ๋‚ด๊ฐ€ ๋‹ฎ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์˜ ๊ฒฝํ—˜์„ ๋ถ„์„ํ•ด๋ณด์„ธ์š”. ์กด๊ฒฝํ•˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๊ฐ•์—ฐ์„ ๋“ฃ๊ณ , ์ข‹์€ ์—…๋ฌด ์Šต๊ด€์„ ๋”ฐ๋ผ ํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์€ ์ถœ๋ฐœ์ด ๋ฉ๋‹ˆ๋‹ค.๊ธ์ •์ ์ธ ํ”ผ๋“œ๋ฐฑ ์ฃผ๊ธฐ์˜ค๋Š˜ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ๋‚˜ ํŒ€์—์„œ ๊ธฐ์—ฌํ•œ ๋ถ€๋ถ„์„ .. 2025. 8. 31.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 5์žฅ ๊ฐ์ฒด ์ƒ์„ฑ ์•„์ดํ…œ 33. ์ƒ์„ฑ์ž ๋Œ€์‹  ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ผํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜์˜ ์žฅ์ ํ•จ์ˆ˜์— ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.ArrayList(3) vs ArrayList.withSize(3)์›ํ•˜๋Š” ํƒ€์ž…์˜ ๋ฆฌํ„ด์ด ๊ฐ€๋Šฅํ•˜๋‹ค.ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค.๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ null ๋ฆฌํ„ด์„ ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.ex) createOrNull(), findByIdOrNull()inline, reified๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.์ธ๋ผ์ธ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๋ฉด ์ปดํŒŒ์ผ ํ›„ ์ƒ์„ฑ๋˜๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ์— ํ•จ์ˆ˜ ๋ณธ๋ฌธ์ด ๋“ค์–ด๊ฐ€์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์–ด์ง„๋‹ค.reified๋กœ ๋งŒ๋“ค๋ฉด ์ œ๋„ค๋ฆญ ํƒ€์ž…์˜ ์ •๋ณด๋ฅผ(Class Type) ๋Ÿฐํƒ€์ž„์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜class MyList( val head: T, val tail:.. 2025. 8. 15.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 4์žฅ ์ถ”์ƒํ™” ์„ค๊ณ„ ์•„์ดํ…œ 26. ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ถ”์ƒํ™” ๋ ˆ๋ฒจ์„ ํ†ต์ผํ•˜๋ผ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์ถ”์ƒํ™”๋Š” ๋ณต์žกํ•œ ์ž๋ฃŒ, ๋ชจ๋“ˆ, ์‹œ์Šคํ…œ ๋“ฑ์œผ๋กœ๋ถ€ํ„ฐ ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋… ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ„์ถ”๋ ค๋‚ด๋Š” ๊ฒƒ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด, ์ถ”์ƒํ™”๋Š” ๋ณต์žก์„ฑ์„ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ์‹ ์ฝ”๋“œ์—์„œ๋Š” ์ถ”์ƒํ™”๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ ํ•จ์ˆ˜์ด๋‹ค.์ถ”์ƒํ™” ๋ ˆ๋ฒจ ํ†ต์ผ(Single Level of Abstraction, SLA) ์›์น™: ํ•จ์ˆ˜๋„ ๋†’์€ ๋ ˆ๋ฒจ๊ณผ ๋‚ฎ์€ ๋ ˆ๋ฒจ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉclass CoffeeMachine { fun makeCoffee() { boilWater() // ๋ฌผ์„ ๋“์ด๊ณ , brewCoffee() // ์ปคํ”ผ๋ฅผ ๋‚ด๋ฆฌ๊ณ , pourCoffee() // ์ปคํ”ผ๋ฅผ ๋ถ“๊ณ , pourMilk() // ์šฐ์œ ๋ฅผ ๋„ฃ๋Š”๋‹ค... 2025. 7. 12.
Kafka Consumer ์„ค์ • ๊ฐ€์ด๋“œ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ Kafka Producer ์„ค์ •์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ์š”, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Consumer ๊ด€๋ จํ•˜์—ฌ ์„ค์ •๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. https://kafka.apache.org/documentation/#consumerconfigs Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.orgkey.deserializerDeserializer class for key that implements the org.apache.kafka.common.serialization.Deserializer interface.key ๋ฐ์ดํ„ฐ์˜ ์—ญ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•œ Deserializer ํด๋ž˜์ŠคType: classDefault: Name: KE.. 2025. 7. 9.
Kafka Producer ์„ค์ • ๊ฐ€์ด๋“œ Kafka๋ฅผ ์ฒ˜์Œ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ(MSK) ๋‹จ์ˆœํžˆ Produce/Consume ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ”„๋กœ๋“€์„œ, ์ปจ์Šˆ๋จธ, ๋ธŒ๋กœ์ปค, ํ† ํ”ฝ ๋“ฑ ์„ค์ • ๊ฐ’๋“ค์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์ ์ ˆํžˆ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฝค๋‚˜ ์–ด๋ ค์› ๋Š”๋ฐ์š”,์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐ๊ฐ ์–ด๋–ค ์„ค์ •๋“ค์ด ์กด์žฌํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ , ์ƒํ™ฉ์— ๋งž๋Š” ๊ฐ’๋“ค์„ ์ž˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •๋ฆฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์นดํ”„์นด ํ”„๋กœ๋“€์„œ(Producer) ๊ด€๋ จ ์„ค์ •๋ถ€ํ„ฐ! https://kafka.apache.org/documentation/#producerconfigs Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.orgkey.serializerSerializer class for key that implements the o.. 2025. 7. 6.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 3์žฅ ์žฌ์‚ฌ์šฉ์„ฑ ์•„์ดํ…œ 19. knowledge(์˜๋„์ ์ธ ์ •๋ณด)๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผํ•„์ž๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ€์žฅ ํฐ ๊ทœ์น™์€?ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฏธ ์žˆ๋˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ณ  ์žˆ๋‹ค๋ฉด, ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค.ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ค‘์š”ํ•œ knowledge ๋‘ ๊ฐ€์ง€?๋กœ์ง: ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€์™€ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€๊ณตํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๊ณ„์† ๋ณ€ํ•˜์ง€๋งŒ, ๊ณตํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•œ ๋ฒˆ ์ •์˜๋œ ํ›„ ํฌ๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.class Student { fun isPassing(): Boolean = ... fun qualifiesForScholarship(): Boolean = ... private fun calculatePointsFromPassedC.. 2025. 6. 25.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ 2์žฅ - ๊ฐ€๋…์„ฑ ์•„์ดํ…œ 11. ๊ฐ€๋…์„ฑ์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„ํ•˜๋ผ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์˜ ํด๋ฆฐ ์ฝ”๋“œ ... "๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ๋Š” 1๋ถ„ ๊ฑธ๋ฆฌ์ง€๋งŒ, ์ฝ๋Š” ๋ฐ๋Š” 10๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค."๊ฐ€๋…์„ฑ์ด๋ž€, ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.// Aif (persion != null && person.isAdult) { view.showPerson(person)} else { view.showError()}// Bperson?.takeIf { it.isAdult } ?.let(view::showPerson) ?: view.showError()A๊ฐ€ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฌ์šด๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ '์ธ์ง€ ๋ถ€ํ•˜'๋ฅผ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ๊ณ  ํ•œ๋‹ค.100% ๊ณต๊ฐ์ด ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž˜ ์ตํžˆ๊ณ , ์ž˜ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถฉ๋ถ„ํžˆ ์ฝ๊ณ .. 2025. 6. 14.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 1์žฅ ์•ˆ์ •์„ฑ ์•„์ดํ…œ 1. ๊ฐ€๋ณ€์„ฑ์„ ์ œํ•œํ•˜๋ผ(๊ฐ€๋Šฅํ•˜๋ฉด) var ๋ณด๋‹ค๋Š” val ์‚ฌ์šฉ(๊ฐ€๋Šฅํ•˜๋ฉด) mutable ํ”„๋กœํผํ‹ฐ๋ณด๋‹ค๋Š” immutable ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉmutable ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜์ง€ ๋ง์ž.class Test { fun calculate(): Int { println("Cal...") return 42 } val fizz = calculate() val buzz get() = calculate()}fun main() { println(Test().buzz)}//Cal...//Cal...//42์ฝ๊ธฐ ์ „์šฉ ์ปฌ๋ ‰์…˜์„ Mutable ์ปฌ๋ ‰์…˜์œผ๋กœ ๋‹ค์šด์บ์ŠคํŒ… ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.์ฝ๊ธฐ ์ „์šฉ์—์„œ mutable๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ๋ณต์ œ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด mutable ์ปฌ๋ ‰์…˜์„ .. 2025. 6. 3.
๋ฐ˜์‘ํ˜•