๊ฐ์์ฑํ
๋ฐฉ ๋ฉ์ธ์ง ์ฝ์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ๋ง์ง๋ง์ผ๋ก ์ฝ์ ๋ฉ์ธ์ง๋ฅผ ์ถ์ ํ์ฌ, ์ฝ์ง ์์ ๋ฉ์ธ์ง์ ๊ฐ์๋ฅผ ํ์ธํ๊ณ ๊ฐ ๋ฉ์ธ์ง์ ๋ํด '์ฝ์ง ์์ ๊ฐ์ (Unread Count)'๋ฅผ ํ์ํฉ๋๋ค. ๊ธฐ์กด์ ๋ฉ์ธ์ง ์ฝ์ ์ฒ๋ฆฌ ๊ตฌ์กฐ๋ ๊ฐ ๋ฉ์ธ์ง๋ง๋ค ํด๋น ๋ฉ์ธ์ง๋ฅผ ์ฝ์ ์ ์ ์ ID ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋กํ๊ณ , ์ฝ์ ์ ์ ID ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํตํด '์ฝ์ง ์์ ๊ฐ์ (Unread Count)'๋ฅผ ๊ณ์ฐํ์ต๋๋ค. ํ์ง๋ง ์ฌ์ฉ์๊ฐ ๋ง์ ์ฑํ
๋ฐฉ์ ์ฌ์ฉ์๊ฐ ์ ์ ์ฑํ
๋ฐฉ์ ๋นํด ๋ ๋ง์ ๋ฉ์ธ์ง๊ฐ ์ค๊ฐ๋ฏ๋ก, ์์ ํด์ผํ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฉ์ธ์ง ์ฝ์ ์ฒ๋ฆฌ ๋ก์ง์ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ์กด์ ๋ฉ์ธ์ง ์ฝ์ ์ฒ๋ฆฌ ๋ก์ง๋จผ์ , ๊ธฐ์กด์ ์ฑํ
์์คํ
์ ๋ฉ์ธ์ง ์ฝ์ ์ฒ๋ฆฌ ๋ก์ง์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์ ์ค..
๋ค์ด๊ฐ๋ฉฐ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ผ๊ด์ฑ๊ณผ ํจ์จ์ฑ์ ๋ํด ๊ณ ๋ฏผ์ด ์์์ต๋๋ค. ํ ํ๋ก์ ํธ๊ฐ ์งํ๋จ์ ๋ฐ๋ผ, ์ฌ๋ฌ ๋ช
์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์์
์ ์์ํ๊ฒ ๋์๊ณ , ํ๋ก์ ํธ๋ฅผ GitHub์์ ํด๋ก ํ ๋ค, ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ์ ์์ํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค. ์ด๊ธฐ์๋ ๊ฐ ๊ฐ๋ฐ์๊ฐ Redis, MySQL, MongoDB์ ๊ฐ์ ์ธ๋ถ ๋ฐ๋ชฌ์ ๋ณ๋๋ก ์ค์นํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๊ณ , ๊ทธ๋ก ์ธํด ์ค์ ์๋ง ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฑฐ๋, ํ๊ฒฝ ์ธํ
์ ํ์ง ๋ชปํ ์ฑ๋ก ์งํ๋๋ ๊ฒฝ์ฐ๋ ์์์ต๋๋ค. ๋ฐ๋ผ์, ํ๋ก์ ํธ๋ฅผ ํด๋ก ํ ํ ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ ํ๊ฒฝ์ ๊ตฌ์ฑํด์ผ ํ๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ์ด๋ฅผ ์ํด ๋ก์ปฌ์์ ๋
๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์๋ ๊ธฐ์ ์ด ํ์ํ๋ค๊ณ ํ๋จํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ..
๋ค์ด๊ฐ๊ธฐ ์์ํ๋ก์ ํธ ์งํ ์ค ๋์ ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ํฌ๋กค๋งํ์ฌ HashMap์ ์ ์ฅํ๋ ๋ก์ง์ ๊ตฌํํ์ต๋๋ค. ๋ชฉํ๋ 100๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ฒ์ด์์ผ๋, HashMap์ ์ฌ์ฉํ๋ฉด์ ๋ฐ์ดํฐ ๊ฐ์๊ฐ ์ผ์นํ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.๋ฌธ์ ์์ธ์ ๋ถ์ํ ๊ฒฐ๊ณผ, ๋น๋๊ธฐ ์์
์์ ๋ฐ์ํ๋ ๋์์ฑ ๋ฌธ์ ๋ก ์ธํด HashMap๋ง์ผ๋ก๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์ด๋ ค์์ด ์๋ค๋ ์ ์ ์๊ฒ ๋์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HashMap, HashTable, ConcurrentHashMap์ ์ฐจ์ด์ ์ ์ดํด๋ณด๊ณ , ๊ฐ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํ๋์ง ๋น๊ตํด๋ณด๋ ค ํฉ๋๋ค. HashMapkey์ value์ null ํ์ฉ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ์ง ์์HashMap์ ์ค๋ ๋ ์์ (thread-safe)์ ๋ณด์ฅํ์ง ์๊ธฐ ๋๋ฌธ์, ์ฃผ๋ก ์ฑ๊ธ ์ค๋ ..