๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Cookie(์ฟ ํ‚ค)์™€ ๋„๋ฉ”์ธ์˜ ๊ด€๊ณ„ ์ •๋ฆฌ Cookie๋ž€? ์ฟ ํ‚ค๋Š” ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š”๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ณ , ์ดํ›„์— ํ•ด๋‹น ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ €์žฅ๋œ ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์›น ์‚ฌ์ดํŠธ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜์ด์ „ ํ™œ๋™ ๋‚ด์—ญ ๋“ฑ์„ ํŒŒ์•…ํ•˜์—ฌ ๋งž์ถคํ˜• ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‡ผํ•‘๋ชฐ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ํ•œ ํ›„์— ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ์ดํ›„์— ๋‹ค์‹œ ํ•ด๋‹น ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ ๋กœ๊ทธ์ธํ•  ํ•„์š” ์—†์ด ์‚ฌ์šฉ์ž๋ฅผ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜์—ฌ ์ด์ „ ๊ตฌ๋งค ๋‚ด์—ญ ๋“ฑ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.. 2023. 3. 11.
[Redis] ‘RDB’ ํฌ๋งท์˜ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• RDB ํŒŒ์ผ ํฌ๋งท์ด๋ž€? RDB ํฌ๋งท์˜ ํŒŒ์ผ์€ Redis DataBase์˜ ์•ฝ์ž๋กœ Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ ํ˜•์‹์ž…๋‹ˆ๋‹ค. Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” RDB(Redis DataBase) ํ˜•์‹์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. RDB ํŒŒ์ผ์€ Redis ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ I/O์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. RDB ํŒŒ์ผ์€ Redis ๋ฐ์ดํ„ฐ์˜ ๋‚ด๋ถ€ ํ‘œํ˜„์„ ์ง๋ ฌํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์ด์ง„ ํ˜•์‹์˜ binary ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. Redis๋Š” RDB ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šค๋ƒ…์ƒท์„ ์ €์žฅํ•˜๊ณ , ๋‚˜์ค‘์— RDB ํŒŒ์ผ์„ ๋กœ๋“œํ•˜์—ฌ Redis ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ ์ด์ง„ํŒŒ์ผ = ๋ฐ”์ด๋„ˆ๋ฆฌ(binary) ํŒŒ์ผ ์ด์ง„ ํŒŒ์ผ์€ ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ํŒŒ์ผ ํ˜•์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด์ง„ ํŒŒ์ผ์€ ๋ณดํ†ต ํ…์ŠคํŠธ ํŒŒ์ผ๊ณผ .. 2023. 3. 7.
JAVA ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผํ•  String ํด๋ž˜์Šค - 2ํŽธ ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ง€๋‚œ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ JAVA ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผํ•˜๋Š” String ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ฃผ์š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. String, StringBuilder, StringBuffer์˜ ํŠน์ง•๊ณผ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ฃผ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ชฉ์ฐจ String, StringBuilder, StringBuffer - immutable(๋ถˆ๋ณ€) VS mutable(๊ฐ€๋ณ€) StringBuilder VS StringBuffer String, StringBuilder, StringBuffer - immutable(๋ถˆ๋ณ€) VS mutable(๊ฐ€๋ณ€) String, StringBuilder, StringBuffer๋Š” ๋ชจ๋‘ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ฐ ํด๋ž˜์Šค๋Š” ๊ณ ์œ ํ•œ ํŠน์„ฑ์ด ์žˆ์–ด ์ด๋ฅผ ์•Œ๊ณ  ์ ํ•ฉํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. S.. 2023. 2. 18.
JAVA ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผํ•  String ํด๋ž˜์Šค - 1ํŽธ ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” JAVA ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผํ•˜๋Š” String ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ฃผ์š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ๋ฌธ์ž์—ด ๋ถ™์ด๊ธฐ - concat() VS '+' ์—ฐ์‚ฐ์ž ๋ถˆ๋ณ€(immutable) ๋ฌธ์ž์—ด ๋น„๊ต - == VS equals() String ๊ฐ์ฒด ์ƒ์„ฑ - ๋ฆฌํ„ฐ๋Ÿด VS new ์—ฐ์‚ฐ์ž ๋ฌธ์ž์—ด ๋ถ™์ด๊ธฐ - concat() VS '+' ์—ฐ์‚ฐ์ž concat() ๋ฉ”์†Œ๋“œ์™€ + ์—ฐ์‚ฐ์ž๋Š” ๋‘˜ ๋‹ค ๋‘ ๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์—๋Š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. concat() ๋ฉ”์†Œ๋“œ๋Š” ํ˜ธ์ถœํ•˜๋Š” ๋ฌธ์ž์—ด ๋’ค์— ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ž…๋‹ˆ๋‹ค. + ์—ฐ์‚ฐ์ž๋Š” ์™ผ์ชฝ ๋ฌธ์ž์—ด๊ณผ ์˜ค๋ฅธ์ชฝ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. String str1 = "Hello"; String str2 .. 2023. 2. 17.
[JAVA] Class ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด ๋ฉ”์†Œ๋“œ์™€ ์ƒ์„ฑ์ž ์–ป๊ธฐ JAVA์˜ Class ํด๋ž˜์Šค Object์˜ getClass() ๋ฉ”์†Œ๋“œ๋Š” Class ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Class ํด๋ž˜์Šค๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋ฉ”์†Œ๋“œ์™€ ์ƒ์„ฑ์ž๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. getDeclaredConstructors(), getMethods()๊ฐ€ ๊ทธ๋Ÿฌํ•œ ๋ฉ”์†Œ๋“œ๋“ค์ž…๋‹ˆ๋‹ค. Class#getName() Object obj = new Object(); Class clazz = obj.getClass(); System.out.println(clazz.getName()); ๐Ÿ–ฅ ์‹คํ–‰๊ฒฐ๊ณผ java.lang.Object getName()์€ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. Class#getDeclaredConstructors() ... Constructor[] constructors = clazz.getDe.. 2023. 2. 12.
[JAVA] Arrays.asList()์™€ List.of()์˜ ์ฐจ์ด JAVA๋Š” List ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ array๋ฅผ List๋กœ ๋ณ€ํ™˜(array -> list)ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ œ๋ชฉ๊ณผ ๊ฐ™์€ Arrays.asList()์™€ List.of() ๋‘ ๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋‘ ๋ฉ”์†Œ๋“œ์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Arrays.asList() ์ด ๋ฉ”์†Œ๋“œ๋Š” List, ์ฆ‰ Java Collections Framework์— ์†ํ•˜๋Š” List ๊ฐ์ฒด๋ฅผ ๊ฐ„๋‹จํžˆ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. Array(๋ฐฐ์—ด)์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ List ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ JAVA 1.2์—์„œ ๋„์ž…๋œ ์˜ค๋ž˜๋œ ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๐Ÿ“„ [Excample Code] @DisplayName("Arrays.asList() ์‚ฌ์šฉ๋ฐฉ๋ฒ•") @Test void usa.. 2023. 2. 10.
DBMS์™€ ๊ธฐ์–ต์žฅ์น˜์˜ ๊ด€๊ณ„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ ๊ธฐ์–ต์žฅ์น˜๋Š” ๊ธฐ์–ต ๋น„์šฉ์— ๋”ฐ๋ผ 1์ฐจ~3์ฐจ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์–ต ๋น„์šฉ์ด๋ž€ '๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์†Œ๋ชจ๋˜๋Š” ๋น„์šฉ'์ด๋‹ค. ๊ทธ๋ฆผ - ๊ธฐ์–ต์žฅ์น˜์˜ ๊ณ„์ธต ๊ทธ๋ฆผ์˜ ํ”ผ๋ผ๋ฏธ๋“œ์—์„œ ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ๋ฉด์ ์ด ์ปค์ง€๋Š” ๊ฒƒ์€ ๊ฐ™์€ ๋น„์šฉ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰์ด ํฌ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์–ต ๋น„์šฉ์ด ๋‚ฎ์„์ˆ˜๋ก ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค. ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค ํ•˜๋ฉด ์†๋„๋ฅผ ์žƒ๊ณ , ์†๋„๋ฅผ ์–ป๊ณ ์ž ํ•˜๋ฉด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ํž˜๋“ค๋‹ค๋Š” ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. DBMS๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด์ด๋ฏ€๋กœ ๊ธฐ์–ต์žฅ์น˜์™€ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค. DBMS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์–ต์žฅ์น˜๋Š” HDD(ํ•˜๋“œ๋””์Šคํฌ), ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. ์šฉ๋Ÿ‰, ๋น„์šฉ, ์„ฑ๋Šฅ์ƒ์˜ ์ด์ ๋•Œ๋ฌธ์— DBMS์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋งค์ฒด๋กœ HDD๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” HD.. 2021. 9. 28.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ, ๊ฐœ๋… ๋ฐ ์šฉ์–ด ์ •๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค VS DBMS Oracle, MySQL๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค'๋ผ๊ณ  ํ”ํžˆ ๋ถ€๋ฅด๋Š”๋ฐ ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์ž๋ฉด DBMS(DataBase Management System)๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” DBMS๋กœ ์ƒ์„ฑ๋˜๊ณ  ์กฐ์ž‘๋˜๋Š” ์ €์žฅ๊ณต๊ฐ„์„ ๋งํ•œ๋‹ค. RDB(Relational Database)๋Š” DBMS์˜ ์ผ์ข…์ด๋‹ค. Oracle, Microsoft SQL Server, DB2, PostgreSQL, MySQL ๋“ฑ์ด ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์ด RDB๋Š” ๊ฐ๊ฐ์˜ ํŠน์ง•์ด ์žˆ๊ณ  ๋‚ด๋ถ€ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด์ง€๋งŒ ๊ฒฐ๊ตญ RDB๋กœ์จ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๋ชฉ์ ์€ ๋ชจ๋‘ ๋™์ผํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋Š” ์œ ์‚ฌํ•˜๋‹ค. DBMS ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์šฉ์ž(์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž, ๊ฐœ๋ฐœ์ž)์—๊ฒŒ์„œ ์ž…๋ ฅ๋œ SQL ๊ตฌ๋ฌธ์€ ์ค‘๊ฐ„์— ์žˆ๋Š”.. 2021. 9. 18.
JUnit5 - JUnit ํ™˜๊ฒฝ ์„ธํŒ…๊ณผ ์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ๐Ÿ’ฌ ์ฑ…์„ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€๋‹ค. ์ฒซ ๋ฒˆ์งธ JUnit ํ…Œ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ (p26 ~ p39) ๐Ÿ’ฌ ์ฑ…์— ๋‚˜์™€์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด IntelliJ์—์„œ java 11 ๋ฒ„์ „์˜ gradle ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์ฑ…์˜ ์˜ˆ์ œ์—์„œ๋Š” java 8์˜ stream์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์—ฐ์Šต์šฉ ํ”„๋กœ์ ํŠธ์˜ jdk๋„ 8 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์ฝ”๋“œ ๋‹ค์Œ์€ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์ฝ”๋“œ์ด๋‹ค. ๐Ÿ“„ Scoreable.java @FunctionalInterface public interface Scoreable { int getScore(); } โœ๏ธ ์ฐธ๊ณ  - @FunctionalInterface @FunctionalInterface๋Š” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์ž„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์• ๋…ธํ…Œ์ด์…˜์ด๋‹ค. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์˜ค๋กœ์ง€ ํ•˜๋‚˜์˜.. 2021. 9. 13.
Spring Security Web์„ ์‚ฌ์šฉํ•˜์—ฌ IP ์ ‘๊ทผ ์ œ์–ด ๊ตฌํ˜„ํ•˜๊ธฐ Spring security web์˜ IpAddressMatcher์™€ spring interceptor๋ฅผ ์ด์šฉํ•ด ํด๋ผ์ด์–ธํŠธ IP๊ฐ€ ํŠน์ • IP ๋Œ€์—ญ์— ๋งž๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ์ ‘๊ทผ ์ œ์–ด ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด๋ณด์ž. Dependency implementation 'org.springframework.security:spring-security-web' spring-security-web ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. Interceptor ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก @Slf4j @RequiredArgsConstructor @Component public class IpAddressAccessControlInterceptor implements HandlerInterceptor { @Override public boolean preHandle(Http.. 2021. 9. 1.
์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐ๋„ˆ ์ ์šฉํ•˜๊ธฐ(+ ๋ณ€ํ™˜ ์‚ฌ์ดํŠธ ์ถ”์ฒœ ๋ฐ color ๋ณ€๊ฒฝ) ์‹ค๋ฌด์—์„œ ๋ชจ ์„œ๋น„์Šค๋ฅผ ์šด์˜ ๊ฐœ๋ฐœ ํ•˜๋˜ ์ค‘.. ํ•œ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ์—์„œ ๊ธฐ๋™ํ• ๋•Œ๋งˆ๋‹ค ๋ฌด์–ธ๊ฐ€ ๋ฐ‹๋ฐ‹ํ•จ์„ ๋Š๋ผ๊ณค ํ–ˆ๋Š”๋ฐ ๊ทธ ๋Š๋‚Œ์˜ ์ด์œ ๋Š” ๋ฐ”๋กœ ๋ฐฐ๋„ˆ์˜€๋‹ค. ๊ธฐ๋™ํ•  ๋•Œ ๋งˆ๋‹ค ์ฝ˜์†”์— ์ด๋Ÿฐ ๋ฉ‹๋“œ๋Ÿฌ์ง€์ง€ ์•Š์€ ๊ธฐ๋ณธ ๋ฐฐ๋„ˆ๊ฐ€ ์ฐํ˜”๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ตœ๊ทผ์— ์Šคํ”„๋ง ๋ถ€ํŠธ๋กœ ์ „ํ™˜๋๊ณ , ์ „ํ™˜ ๋‹น์‹œ ๋ฐฐ๋„ˆ ๋ถ€๋ถ„์€ ๋”ฑํžˆ ์†๋ณด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ง˜์— ๋“ค์ง€ ์•Š์•„.. ๊ทธ๋Ÿผ, ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ์˜ ๋ฐฐ๋„ˆ๋ฅผ ๋ฐ”๊ฟ”๋ณด์ž. ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐ๋„ˆ ๋ณ€๊ฒฝ - banner.txt ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ resources/banner.txt๊ฐ€ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๋™ ์‹œ ๋ฐฐ๋„ˆ๋กœ ๋ฟŒ๋ ค์ค€๋‹ค. ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ๋‹ค. ๐Ÿ“„ banner.txt ==================== My Banner ==================== ์ด์ œ ๋‹ค์‹œ .. 2021. 8. 31.
Feign ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„๊ณผ Eureka, Hystrix ์ ์šฉ 1. Dependency ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์— spring-cloud-starter-openfeign๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' 2. Feign client ํ™œ์„ฑํ™” @EnableFeignClients ์• ๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ feign client๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค. @SpringBootApplication ๋˜๋Š” @Configuration ํด๋ž˜์Šค์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. @EnableFeignClients @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(A.. 2021. 8. 18.