SMALL

๋ชฉ๋ก์ „์ฒด ๊ธ€ (58)

You are a developer, not a coder.

Singleton ํŒจํ„ด์— ๋Œ€ํ•ด์„œ

JAVA/Design Pattern [์ƒ์„ฑ ํŒจํ„ด] ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋Š” 6๊ฐ€์ง€ ๋ฐฉ ์ฒซ ๋ฒˆ์งธ๋กœ ์†Œ๊ฐœํ•  ๋””์ž์ธ ํŒจํ„ด์€ ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ข…์ข… ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ '๋‹จ์ผ์ฒด' ํŒจํ„ด์œผ๋กœ ๋ฒˆ์—ญํ•˜๊ณ  ์žˆ๋Š” ์ฑ…๋„ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ๊ฐ์ฒด์ง€ํ–ฅ ๋””์ž์ธ ํŒจํ„ด์—์„œ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ๋””์ž์ธ ํŒจํ„ด์„ ๋”ฐ๋กœ ๊ณต๋ถ€ํ•˜์ง€ ์•Š์œผ์‹  ๋ถ„๋“ค๋„ ์ตํžˆ ์•Œ๊ณ  ์žˆ๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ ๋ช…ํ•œ ๋งŒํผ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ์–ด์„œ์ธ์ง€ ํ”„๋กœ์ ํŠธ์— ์‹ฑ๊ธ€ํ†ค์„ ์–ด์„คํ”„๊ฒŒ ์ ์šฉ์€ ํ•˜์ง€๋งŒ ์ •์ž‘ ์™œ ์จ์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์จ์•ผ ๋‚ด ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ž˜ ์“ฐ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋””์ž์ธ ํŒจํ„ด ๊ด€์ ์—์„œ ์‹ฑ๊ธ€ํ†ค์˜ ๊ฐœ๋…๊ณผ ์—ญํ• ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ณ , Jav..

Development Basic 2023. 5. 18. 11:14
[๋Œ€ํ•œ๋ฏผ๊ตญ]์—์„œ 8๋…„์ฐจ ๊ฐœ๋ฐœ์ž๋กœ์จ ๋‚˜์˜ ์‚ถ์„ ๋˜๋Œ์•„ ๋ณด๋‹ค

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

Consolation Diary 2022. 2. 7. 14:10
Redis, Cache์— ๋Œ€ํ•ด์„œ

Redis์— ๋Œ€ํ•ด ๋ ˆ๋””์Šค(Redis)๋Š” Remote Dictionary Server์˜ ์•ฝ์ž๋กœ์„œ "ํ‚ค-๊ฐ’" ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์ด๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ DBMS์ด๋‹ค. Redis์˜ ํŠน์ง• 1. Redis๋Š” List, Set, Sorted Set, Hash ๋“ฑ๊ณผ ๊ฐ™์€ Collection์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 2. Redis๋Š” Single Thread (๋”ฐ๋ผ์„œ, Race Condition์— ๋น ์ง€๋Š”๊ฑธ ๋ฐฉ์ง€ํ•จ) 3. persistence๋ฅผ ์ง€์›ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ๊บผ์ง€๋”๋ผ๋„ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ๋“ค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Redis์˜ ํ™œ์šฉ 1. Remote Data Store - ์—ฌ๋Ÿฌ ์„œ๋ฒ„์˜ Data ๊ณต์œ ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ ๋ ..

Development Basic 2021. 3. 5. 11:57
subList ์•Œ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

๋Œ€๊ทœ๋ชจํ”„๋กœ์„ธ์Šค ๊ฐœ๋ฐœ์‹œ, ์„œ๋ฒ„๊ฐœ๋ฐœ์ž๋“ค์ด ์•„๋งˆ ๋งŽ์ด ๋งŒ์ง€๋Š” ์ฝ”๋“œ์ค‘์— ํ•œ๊ฐœ๋Š” ๋ฆฌ์ŠคํŠธํ˜•์‹์„ ํฌ๊ธฐ๋Œ€๋กœ ์ž๋ฅด๊ธฐ์œ„ํ•ด subList๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ subList๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋˜ํ•œ, ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์‹ถ์–ด์„œ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. // 0~2๊นŒ์ง€์˜ ์ธ๋ฑ์Šค๋งŒ ๋ฝ‘์•„์˜ค๊ธฐ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์“ธ๊ฒƒ์ด๋‹ค. cateContTuple.setCateContBbsTupleList(items.subList(0, 3)); ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ ์œ„์™€๊ฐ™์ด subList๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐ ๋ถ€๋ชจ๋ฆฌ์ŠคํŠธ์ธ items์— ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์žˆ์„๋•Œ ์ต์…‰์…˜์ด ์ผ์–ด๋‚  ์ˆ˜์žˆ๋Š” ์œ„ํ—˜ํ•œ ์ฝ”๋“œ์ด๋‹ค. ์™œ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋‚˜๋Š”์ง€, ์–ด๋– ํ•œ ์ต์…‰์…˜์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. /* *..

Backend-Languages/Java 2021. 2. 24. 15:10
COLLECTIONS.EMPTY_LIST

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ €์ง€๋ฅด๋Š” ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ํ–‰์œ„์ค‘ ์ฒซ๋ฒˆ์งธ๋Š” null์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์Šต๊ด€์ด๋‹ค. ํ•œ์ค„ ๊ฑด๋„ˆ ํ•˜๋‚˜์”ฉ null์„ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ๋กœ ๊ฐ€๋“ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€๊ธˆ๊นŒ์ง€ ์ˆ˜๋„ ์—†์ด ๋ดค๋‹ค. ๋ˆ„๊ตฌ ํ•˜๋‚˜๋ผ๋„ null ํ™•์ธ์„ ๋นผ๋จน๋Š”๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ†ต์ œ ๋ถˆ๋Šฅ์— ๋น ์งˆ์ง€๋„ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ์ด ํ–‰์œ„๋Š” ๋‚˜์œ์ฝ”๋“œ์— ์†ํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด Collections.emptyList() ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋นˆ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•ด ์ค„ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. public List findAllUsers(){ List userList = userService.findAll(); if(userList == null){ return Collections.emptyList(); } return userList; } List์— ๊ฐ’์ด ๋น„์–ด์žˆ์œผ๋ฉด, ๋นˆ๊ฐ’์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•ด..

Backend-Languages/Java 2020. 12. 15. 11:37
LIST