Backend๐ฑ/Java9 ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ค์ํ ๋ฐฉ๋ฒ (feat. ์๋ฐ, DB Lock, Redis์ ๋ถ์ฐ๋ฝ) ๋์์ฑ ๋ฌธ์ ๋? ์ด๋ฒ ๋ฑ ํน์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋์์ฑ ๋ฌธ์ ๋ฅผ ๋ง์ฃผํ์๋ค. ์๋ฒ ๊ฐ๋ฐ์์๊ฒ๋ ๋์์ฑ ๋ฌธ์ ๋ ๋งค์ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ณ ์ ์ ๋ฆฌ๋ฅผ ํ๊ฒ ๋์๋ค. ๋์์ฑ ๋ฌธ์ ๋ ๊ณต์ ์์์ ๋ํด ๋์์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ์ฌ ์๊ธฐ๋ ๊ฒฝ์ ์ํฉ(race condition)์ ๋งํ๋ค. ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด ๋์ผํ ํ๋์ ๋ฐ์ดํฐ์ ๋ ๊ฐ ์ด์์ ์ค๋ ๋, ํน์ ์ธ์ ์์ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ ์ดํ ๋ ๋ํ๋๋ ๋ฌธ์ ๋ก, ํ๋์ ์ธ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ์ค์ผ ๋, ๋ค๋ฅธ ์ธ์ ์์ ์์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด ๋ก์ง์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ด ๊นจ์ง๋ ๋ฌธ์ ๋ฅผ ๋งํ๋ค. ๊ฐ๋จํ ์ฌ๊ณ ์์คํ ๋ก์ง์ ์ดํด๋ณด๊ฒ ๋ค. Entitiy, Service, Repository๋ ๋ค์๊ณผ ๊ฐ๋ค. @E.. 2023. 2. 14. [์๋ฐ/Java] ์คํธ๋ฆผ(stream) ์คํธ๋ฆผ(stream) ์คํธ๋ฆผ(๋ฐ์ดํฐ์ ์ฐ์์ ์ธ ํ๋ฆ)์ ๋ค์ํ ๋ฐ์ดํฐ ์์ค(์ปฌ๋ ์ , ๋ฐฐ์ด)๋ฅผ ํ์คํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๊ฒ์ด๋ค. ์ปฌ๋ ์ ์ด๋ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด for๋ฌธ๊ณผ Iterator๋ฅผ ์ด์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํด์๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฐฉ์์ ์ฝ๋์ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ๊ณ ์์๋ณด๊ธฐ ์ด๋ ค์ฐ๋ฉฐ ์ฌ์ฌ์ฉ์ฑ๋ ๋จ์ด์ง๋ค. ๋ํ ์ปฌ๋ ์ ์ด๋ Iterator์ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด์ ์ปฌ๋ ์ ์ ๋ค๋ฃจ๋ ๋ฐฉ์์ ํ์คํํ๊ธฐ๋ ํ์ง๋ง, ์ปฌ๋ ์ ์ ํด๋นํ๋ List,Set๊ณผ ๊ทธ๋ ์ง ์์ Map์ ์ฌ์ฉ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค. ์ด ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ง๋ ๊ฒ์ด ์คํธ๋ฆผ(Stream)์ด๋ค. ์ฆ, JDK 1.8์ ์คํธ๋ฆผ์ด ๋์ค๊ฒ ๋์ด ๋ค์ํ ๋ฐ์ดํฐ ์์ค๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ด ํต์ผ ๋์๋ค!!!! ์คํธ๋ฆผ์ผ๋ก ์์ .. 2023. 1. 8. [์๋ฐ/Java] ์ฐ๋ ๋(thread) ์ฐ๋ ๋(thread) ํ๋ก์ธ์ค : ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ, ์์(resources)๊ณผ ์ฐ๋ ๋๋ก ๊ตฌ์ฑ = ๊ณต์ฅ ์ฐ๋ ๋ : ํ๋ก์ธ์ค ๋ด์์ ์ค์ ์์ ์ ์ํํ๋ ๊ฒ. ๋ชจ๋ ํ๋ก์ธ์ค๋ ์ต์ํ ํ๋์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. = ์ผ๊พผ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ๋๋ถ๋ถ ํ๋ก๊ทธ๋จ์ ์๋์ ๊ฐ์ด ๋ฉํฐ ์ฐ๋ ๋ ํ๋ก์ธ์ค์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋์ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ํ๋์ ์๋ก์ด ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ ์ ์ ๋น์ฉ์ด ๋ ๋ค!!! ๊ทธ๋ ๋ค๊ณ ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ด ์ฅ์ ๋ง ์๋ ๊ฒ์ ์๋๋ค. ์ฅ์ ์์คํ ์์์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. CPU์ ์ฌ์ฉ๋ฅ ์ ํฅ์์ํจ๋ค. ์ฌ์ฉ์์ ๋ํ ์๋ต์ฑ์ด ํฅ์๋๋ค. ์์ ์ด ๋ถ๋ฆฌ๋์ด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค. ๋จ์ (์์์ ๊ณต์ ํ๋ ๋ฐ ์์ด ๋ฌธ์ ๋ฐ์) ๋๊ธฐํ์ ์ฃผ์ํด์ผ ํ๋ค. .. 2023. 1. 5. [์๋ฐ/Java] ์ง๋ค๋ฆญ์ค(Generics) ๋๋ฆ ์๋ฐ๋ฅผ ๊ฝค ์ฌ์ฉํ๋๋ฐ ์๋ฐ์ ์ ์ ์ฑ ์ ๋ณด๋ฉด์ ์ง๋ค๋ฆญ์ค ๋จ์ด๋ฅผ ๋ณด๊ณ ์์ํ๋ค๊ณ ๋๊ผ๋ค. ์๋ฌด๋๋ ๊ธฐ๋ณธ๊ธฐ๊ฐ ๋ง์ด ๋ถ์กฑํ์๋๋ณด๋ค. ์ด์ ์ง๋ค๋ฆญ์ค์ ๋ํด ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. ์ง๋ค๋ฆญ์ค(Generics) ์ง๋ค๋ฆญ์ค๋ JDK1.5๋ถํฐ ๋์ ๋ ๊ฒ์ผ๋ก ๋ค์ํ ํ์ ์ ๊ฐ์ฒด๋ค์ ๋ค๋ฃจ๋ ๋ฉ์๋๋ ์ปฌ๋ ์ ํด๋์ค์ ์ปดํ์ผ ์์ ํ์ ์ฒดํฌ(compile-time type check)๋ฅผ ๊ฐํํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋งํ๋ค. ์ฆ, ํ ์ข ๋ฅ์ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋๋๋ก ํ๋ ๊ธฐ๋ฅ์ด๋ค. ๊ฐ์ฒด์ ํ์ ์ ์ปดํ์ผ ์์ ์ฒดํฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ํ์ ์์ ์ฑ์ ๋์ด๊ณ ํ๋ณํ์ ๋ฒ๊ฑฐ๋ก์์ด ์ค์ด๋๋ ์ฅ์ ์ด ์๋ค. ์๋ก, ArrayList์ ๊ฐ์ ์ปฌ๋ ์ ํด๋์ค๋ ๋ค์ํ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ด์ ์ ์๊ธด ํ์ง๋ง ๋ณดํต ํ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค์๋ค. ๊ทธ๋ฐ๋ฐ๋ ๊บผ๋ผ ๋.. 2023. 1. 4. [์๋ฐ/Java] Stringํด๋์ค String ํด๋์ค ๊ธฐ์กด์ ๋ค๋ฅธ ์ธ์ด์์๋ ๋ฌธ์์ด์ charํ์ ๋ฐฐ์ด๋ก ๋ค๋ฃจ์์ผ๋ ์๋ฐ์์๋ ๋ฌธ์์ด์ ์ํ ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. ๊ทธ๊ฒ์ด Stringํด๋์ค์ด๋ค. Stringํด๋์ค = ๋ฐ์ดํฐ(char []) + ๋ฉ์๋(๋ฌธ์์ด ๊ด๋ จ)๋ฅผ ํจ๊ป ์ ๊ณตํ๋ค. ์ด๋ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ ๋ถ๋ณ(immutable)ํด๋์ค๋ผ๋ ์ ์์ ๋ง์ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ๋ฌธ์์ด ๊ฒฐํฉ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋๋ค. ๋ฐ๋ผ์, ๋ฌธ์์ด์ ๊ฒฐํฉ์ด๋ ๋ณ๊ฒฝ์ด ์ฆ๋ค๋ฉด, ๋ด์ฉ์ ๋ณ๊ฒฝ๊ฐ๋ฅํ StringBuffer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌธ๋, ์๋ฐ์์ String์ด ์ ๋ถ๋ณ์ด๋ผ๊ณ ํ๋ ๊ฒ์ผ๊น์ ๋ํ ์๋ฌธ์ด ๋ค์๋ค. ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. String str = "first"; str = "second"; ์ด์ฒ๋ผ Java์์ ๋ณ์๋ ์ธ์ ๋ ๊ฐ.. 2023. 1. 3. ์ด์ 1 2 ๋ค์