user-img
ALL 587
thumbnail
๐Ÿ’œ ๋ฐฑ์ค€ 3109 ๋ฑ€ JAVA
1. ๋ฌธ์ œ ๋ถ„์„ [3190 ๋ฑ€ ๋ฌธ์ œ ๋งํฌ](https://www.acmicpc.net/problem/3190) ์ง€๋ ์ด ๊ฒŒ์ž„์˜ ์›๋ฆฌ๋Œ€๋กœ ์›€์ง์ด๋Š” ๋ฌธ์ œ ๋นˆ ๊ณต๊ฐ„์€ 0, ์‚ฌ๊ณผ๋Š” 1, ๋ฑ€์ด ์กด์žฌํ•˜๋Š” ์ž๋ฆฌ๋Š” 2๋กœ ํ‘œ์‹œํ•œ๋‹ค. ๋ฑ€์ด 2์ฐจ์› ๋ฐฐ์—ด ๋‚ด๋ฅผ ์›€์ง์ž„ -> ์›€์ง์ด๋‹ˆ๊นŒ, ์ง€๋‚˜๊ฐ„ ์žฅ์†Œ๋Š” 2๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค์‹œ 0์œผ๋กœ ์™€์•ผํ•จ. ์‚ฌ๊ณผ๋ฅผ ๋จน์œผ๋ฉด ๋ฑ€์˜ ๋ชธ์ง‘์ด 1 ์ปค์ง ๋ฑ€์ด ๋ฒฝ์— ๋ถ€๋”ชํžˆ๋ฉด ๊ฒŒ์ž„์˜ค๋ฒ„ ๋ฑ€์ด ์ž์‹ ์˜ ๋ชธ์— ๋ถ€๋”ชํžˆ๋ฉด ๊ฒŒ์ž„์˜ค๋ฒ„ ๋ฑ€์€ ๋ฐฉํ–ฅ ์ „ํ™˜์ด ๊ฐ€๋Šฅ -> ๋ช‡ ์ดˆ์— ๋ฐ˜์‹œ๊ณ„, ์‹œ๊ณ„ ๋ฐฉํ–ฅ ์ค‘ ์–ด๋””๋กœ ์›€์ง์ผ์ง€๋Š” ์ฃผ์–ด์ง„๋‹ค. ๊ฒŒ์ž„์ด ๋ช‡ ์ดˆ๊ฐ„ ๊ฑธ๋ฆฌ๋Š”์ง€ ๊ตฌํ•˜๊ธฐ (๋ฑ€์€ ํ•œ ๋ฒˆ ์›€์ง์ผ ๋–„, 2์ฐจ์› ๋ฐฐ์—ด์—์„œ ํ•œ ์นธ ์›€์ง์ด๊ณ , ์ด๋–„ ์‹œ๊ฐ„์ด 1 ๋“ ๋‹ค.) 2. ํ‘ธ๋Š” ์›๋ฆฌ ์ €๊ธฐ ๋‚˜์˜ค๋Š” 1~5๋ฅผ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑํ•ด์„œ, ํ•จ์ˆ˜๊ฐ€ ๋Œ์•„๊ฐ€๋„๋ก ํ•˜๋ฉด ๋œ๋‹ค. ์ฒ˜์Œ์—๋Š”..
2024.04.15
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
๐Ÿ’œ ๋ฐฑ์ค€ 2085 ์‚ฌํƒ•๊ฒŒ์ž„ JAVA
1. ๋ฌธ์ œ ์„ค๋ช… (์‚ฌํƒ•๊ฒŒ์ž„ ๋งํฌ)[https://www.acmicpc.net/problem/3085] ์บ”๋”” ํฌ๋Ÿฌ์‰ฌ ์ฒ˜๋Ÿผ, ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์บ”๋””๊ฐ€ ๋ณด์ด๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค. ๊ทธ ํ›„, ํ•œ ํ–‰, ํ˜น์€ ํ•œ ์—ด์—์„œ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์บ”๋””๋ผ๋ฆฌ ๋‚˜์—ด๋˜์–ด ์žˆ์œผ๋ฉด ๊ทธ๊ฑด ํ„ฐ์ ธ์„œ ์‚ฌ๋ผ์ง. ์ฃผ์–ด์ง„ 2์ฐจ์› ๋ฐฐ์—ด์—์„œ ํ•œ ๋ฒˆ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟจ์„ ๋•Œ ํ„ฐ์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ํ•œ์˜ ์บ”๋””์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜์‹œ์˜ค 2. ํ‘ธ๋Š” ์›๋ฆฌ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์บ”๋””๋ฅผ ๋งŒ๋‚˜๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค. ๋ชจ๋“  ํ–‰์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ, ์ผ๋ จ์˜ ์—ฐ์†์„ฑ์„ ๊ฐ€์ง„ ์บ”๋””์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค. -> ์ตœ๊ณ  ๊ธธ์ด ๊ฐฑ์‹  ๋ชจ๋“  ์—ด์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ, ์ผ๋ จ์˜ ์—ฐ์†์„ฑ์„ ๊ฐ€์ง„ ์บ”๋””์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค. -> ์ตœ๊ณ  ๊ธธ์ด ๊ฐฑ์‹  ์ตœ๊ณ  ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 3. ์ฝ”๋“œ ๋ถ„์„ import java.io.BufferedReader; import java.i..
2024.04.11
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
๐Ÿ’œ ๋ฐฑ์ค€ 1038 ๊ฐ์†Œํ•˜๋Š” ์ˆ˜
1. ๋ฌธ์ œ ๋ถ„์„ ๊ฐ์†Œํ•˜๋Š” ์ˆ˜ ๋ฌธ์ œ ๋งํฌ 321, 952 ๋“ฑ ์ œ์ผ ํฐ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ ์ž‘์€ ์ž๋ฆฟ์ˆ˜๋กœ ์˜ฌ์ˆ˜๋ก, ์ž๋ฆฟ์ˆ˜์˜ ๊ฐ’์ด ์ž‘์•„์ง€๋Š” ๊ฒฝ์šฐ, ๊ฐ์†Œํ•˜๋Š” ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋ฉด 322, 235 ๋“ฑ์€ ์œ„์˜ ์ •์˜์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ์— ๊ฐ์†Œํ•˜๋Š” ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. 0์„ 0๋ฒˆ์งธ ๊ฐ์†Œํ•˜๋Š” ์ˆ˜, 1์„ 1๋ฒˆ์งธ ๊ฐ์†Œํ•˜๋Š” ์ˆ˜, 9๋ฅผ 9๋ฒˆ์งธ ๊ฐ์†Œํ•˜๋Š” ์ˆ˜ ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, ์ฃผ์–ด์ง„ N์— ๊ด€ํ•˜์—ฌ, N๋ฒˆ์งธ ๊ฐ์†Œํ•˜๋Š” ์ˆ˜์˜ ๊ฐ’์„ ๊ตฌํ•˜์—ฌ๋ผ 2. ํ‘ธ๋Š” ์›๋ฆฌ ์กฐํ•ฉ์ด๋‹ค. ํ•˜์ง€๋งŒ ์›๋ž˜์˜ ์กฐํ•ฉ์ฒ˜๋Ÿผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ๋Š” ํ’€ ์ˆ˜ ์—†๋‹ค. (1) ์ฒซ๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ณ ์ •ํ•˜๊ณ , ๊ทธ ์ž๋ฆฟ์ˆ˜๋ฅผ limit์œผ๋กœ ์ •ํ•œ๋‹ค. (2) ์กฐํ•ฉ์„ ๋Œ๋ฉฐ, ๋‘ ๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜๋Š” limit๋ณด๋‹ค ์ž‘์€ ์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ํƒํ•œ๋‹ค. (3) ์žฌ๊ท€๋ฅผ ๋ˆ๋‹ค. (4) ์„ธ ๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ณ ๋ฅผ ๋•Œ๋Š” ๋‘ ๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋„˜์–ด์„ค ์ˆ˜ ์—†๋Š” li..
2024.04.09
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
๐Ÿ’” ๋ฐฑ์ค€ 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ
1. ๋ฌธ์ œ ๋ถ„์„ ๋ฐฑ์ค€ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ ๋งํฌ 2์ฐจ์› ๋ฐฐ์—ด์—์„œ ๋ฉด ๋Œ€ ๋ฉด์œผ๋กœ ๋ถ™๋Š” ์›์†Œ๋ผ๋ฆฌ ์ด 4๊ฐœ๋ฅผ ์ด์—ˆ์„ ๋•Œ, ์›์†Œ๊ฐ„์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ’์ด ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ. 2. ํ‘ธ๋Š” ์›๋ฆฌ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ’๋“ค์ด ๋ฏธ๋ฆฌ ๋‚˜์™€ ์žˆ๋‹ค. ์™ผ์ชฝ ์ƒ๋‹จ๋ถ€ํ„ฐ 1๋ฒˆ์ด๋ผ๊ณ  ํ•˜์ž. ๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ -> ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๊ฒ ๋‹ค. 1๋ฒˆ๋ถ€ํ„ฐ 4๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ๋ธ”๋Ÿญ์€ DFS๋กœ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ 5๋ฒˆ์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœ dfs๋กœ ์•ˆ ํ’€๋ฆฐ๋‹ค ์™œ๋ƒํ•˜๋ฉด ๋‘๋ฒˆ์งธ depth ๋ถ€ํ„ฐ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด 2 ๊ฐˆ๋ž˜๋กœ ๊ฐˆ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ DFS๋กœ๋Š” ํ’€์ง€ ๋ชปํ•˜๊ณ , ์ค‘์•™์—์„œ ์‹œ์ž‘ํ•˜์—ฌ 4๋ฐฉ ํƒ์ƒ‰ ์ค‘ 3๋ฐฉ์„ ๊ณ ๋ฅด๋Š” ์กฐํ•ฉ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. 3. ์ฝ”๋“œ ๋ถ„์„ import java.io.BufferedReader; import java..
2024.04.09
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
๐Ÿ–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก  - ์ˆœ์—ด๊ณผ ์กฐํ•ฉ [JAVA]
0. ์„ค๋ช… ํ•˜๋ ค๋Š” ๊ฒƒ (1) ์ˆœ์—ด, ์กฐํ•ฉ, ์ค‘๋ณต ์ˆœ์—ด, ์ค‘๋ณต ์กฐํ•ฉ์˜ ์ •์˜ (2) JAVA ์–ธ์–ด๋ฅผ ์ผ์„ ๋•Œ, ๊ตฌํ˜„ ๋ฐฉ๋ฒ• 1. ์ˆœ์—ด (1) ์ˆœ์—ด์˜ ๋œป nPr = n ๊ฐœ ์ค‘์—์„œ r๊ฐœ๋ฅผ ์ค‘๋ณต ์—†์ด ๋ฝ‘์•„์„œ ์ˆœ์„œ ์žˆ๊ฒŒ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋”ฐ๋ผ์„œ {1, 2, 3, 4, 5} ์ค‘ 5P3 ์—์„œ {1, 2, 3} ๊ณผ {1, 3, 2}๋Š” ๋‹ค๋ฅธ ์ˆซ์ž์ด๋‹ค. (2) ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์ˆœ์—ด์€ ์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•œ๋‹ค. ์ˆœ์—ด์„ ์žฌ๊ท€๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋“ค์ด ํ•„์š”ํ•˜๋‹ค. ์ „์ฒด ์›์†Œ๋“ค์— ๋Œ€ํ•œ ๋ฐฉ๋ฌธ ๋ฐฐ์—ด isVisited [] : ์ˆœ์—ด๋กœ ๊ฐ’์„ ๋ฝ‘์„ ๋•Œ, ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๋ฐฉ๋ฌธ ๋ฐฐ์—ด์„ ํ†ตํ•ด, ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ์ง€์ ์€ ๊ทธ๋ƒฅ ์ง€๋‚˜์น˜๋„๋ก ๊ตฌํ˜„ ํ•ด์•ผ ํ•œ๋‹ค. ๋ฝ‘ํžŒ r๊ฐœ์˜ ์›์†Œ๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด output [] : ์ „์ฒด ์›์†Œ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด์„ arr ..
2024.04.07
์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก 
thumbnail
๐Ÿ’” ๋ฐฑ์ค€ 2503 ์ˆซ์ž์•ผ๊ตฌ JAVA
1. ๋ฌธ์ œ ์„ค๋ช… 2503๋ฒˆ ์ˆซ์ž์•ผ๊ตฌ ์ฃผ์†Œ ์˜์ˆ˜๊ฐ€ ์ˆซ์ž 3๊ฐœ๋ฅผ ๋จธ๋ฆฟ์†์œผ๋กœ ์ƒ๊ฐ, ๋ฏผํ˜์ด๋Š” ๊ทธ ์ˆซ์ž๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด 3๊ฐœ์˜ ์ˆ˜๋ฅผ ๋งํ•˜์—ฌ N๋ฒˆ ์ถ”์ธก์„ ํ•œ๋‹ค. ๋ฏผํ˜์ด๊ฐ€ ๋งํ•œ ์ˆซ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•œ ์ˆซ์ž์™€ ์œ„์น˜๋„ ๊ฐ™๊ณ , ์ˆซ์ž๋„ ๊ฐ™์œผ๋ฉด 1 Strike, ๋ฏผํ˜์ด๊ฐ€ ๋งํ•œ ์ˆซ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•œ ์ˆซ์ž์™€ ์œ„์น˜๋Š” ๋‹ค๋ฅด์ง€๋งŒ, ์ˆซ์ž๋Š” ๊ฐ™์œผ๋ฉด 1ball, ์ด ํ–‰์œ„๋ฅผ N๋ฒˆ ๋ฐ˜๋ณตํ•  ๋•Œ, ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•œ ์ˆซ์ž 3๊ฐœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ 2. ๋ฌธ์ œ ํ‘ธ๋Š” ์›๋ฆฌ ๋ฏผํ˜์ด๊ฐ€ ์ถ”์ธกํ•œ ์ˆซ์ž๊ฐ€ ์˜์ˆ˜์˜ ๋จธ๋ฆฟ์† ์ˆซ์ž์™€ ์–ผ๋งˆ๋‚˜ ๊ฐ™์€์ง€๋Š”, ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ๋ฐ›์€ ball_count๋ฅผ ๋ณด๋ฉด ๋œ๋‹ค. ์˜ˆ์‹œ์—์„œ, ์˜์ˆ˜๊ฐ€ ์ƒ๊ฐํ•œ ์ˆซ์ž๊ฐ€ 324์ด๊ณ , ๋ฏผํ˜์ด๊ฐ€ ์ถ”์ธกํ•œ ์ˆ˜๊ฐ€ 429์ด๋ฉด 1S 1B์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฏผํ˜์ด๊ฐ€ ๋งํ•œ ์ˆซ์ž N ๊ฐœ์˜ Ball..
2024.04.07
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
Spring ๊ณต์‹๋ฌธ์„œ Concept of AOP ๋ฒˆ์—ญ
์›๋ณธ ๋ฌธ์„œAOP๊ฐ€ ๋‹ด๊ณ ์žˆ๋Š” ๋ฐœ์ƒAOP๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ช‡๋ช‡ ์ค‘์‹ฌ์ ์ธ ์ƒ๊ฐ๋“ค๊ณผ ์šฉ์–ด๋“ค์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ด๋ณด์ž! ์—ฌ๊ธฐ์„œ ์“ฐ์ด๋Š” ์šฉ์–ด๋“ค์€ ์Šคํ”„๋ง ๋งž์ถค์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ AOP์˜ ์šฉ์–ด๋“ค์€ ํŠน๋ณ„ํžˆ ์ง๊ด€์ ์ด์ง„ ๋ชปํ•˜๋‹ค. ํ•˜์ง€๋งŒ, ๋งŒ์•ฝ ์Šคํ”„๋ง์ด AOP ๊ฐœ๋… ๋„์ž…์„ ์œ„ํ•œ ๊ทธ๊ฒƒ๋งŒ์˜ ์šฉ์–ด๋ฅผ ์ผ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์ด ๋” ์šฐ๋ฆฌ๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค!1. ์šฉ์–ด์„ค๋ช…Aspect(๊ด€์ ): ๋ณต์ˆ˜์˜ Class๋“ค์„ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ๊ด€์‹ฌ์‚ฌ์— ๋Œ€ํ•œ ๋ชจ๋“ˆํ™”๋ฅผ ์˜๋ฏธํ•œ๋‹ค.(๊ธฐ์กด์˜ ์šฐ๋ฆฌ๊ฐ€ ์„œ๋ฒ„ ๋กœ์ง์„ ๊ณต๋ถ€ํ•  ๋•Œ, ๊ธฐ๋Šฅ์„ ๋ฌด์—‡์ด๋ผ ์ƒ๊ฐํ–ˆ๋Š”๊ฐ€? Service Class ํ•˜๋‚˜๊ฐ€ ๊ณง ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ AOP์—์„œ๋Š” ๊ด€์ ์„ ๋‹ฌ๋ฆฌํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”๊ตฌ๊ฐ€ ๋“ค์–ด์™€์„œ Controller -> ๋ณต์ˆ˜์˜ ์„œ๋น„์Šค ๋กœ์ง -> ๋‹ค์‹œ ์‘๋‹ต ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ํ•˜..
2024.03.12
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringAOP
thumbnail
Weaving๊ณผ Proxy์— ๋Œ€ํ•˜์—ฌ
๊นƒํ—ˆ๋ธŒ์—๋„ ์ •๋ฆฌ ์˜ฌ๋ ค๋†“์•˜์Šต๋‹ˆ๋‹ค.์ „์ˆ˜๋ฏผ_๊นƒํ—ˆ๋ธŒ ์ฃผ์†ŒWeaving๊ณผ Proxy ๊ฐ์ฒด์— ๋Œ€ํ•˜์—ฌ์ด๋ฒˆ ์žฅ์—์„œ ์•Œ์•„๋ณผ ๊ฒƒ:AOP์—์„œ Weaving์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Proxy์™€์˜ ๊ด€๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?Proxy ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ด๊ณ ? AOP์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์›๋ฆฌ๋Š” ๋ฌด์—‡์ธ๊ฐ€?1. AOP์—์„œ Weaving์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?AOP์—์„œ weaving์ด๋ž€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ(advice)์„ ๊ทธ๊ฒƒ์ด ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ณธ ๊ธฐ๋Šฅ์— ์žฅ์ฐฉํ•˜๋Š” ์ž‘์—…์„ ๋งํ•œ๋‹ค. ๋”ฐ๋ผ์„œ weaving์€ ๋ณธ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” AOP์˜ ํ•ต์‹ฌ ์ž‘์—…์ด๋‹ค.weaving์€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ๋”ฐ๋ผ 3๊ฐ€์ง€๋กœ ์ข…๋ฅ˜๊ฐ€ ๋‚˜๋‰œ๋‹ค.(1) Compile Time Weaving(CTW)Spring์—์„œ AOP๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” AspectJ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋Š” ๊ฒƒ๊ณผ, Spring A..
2024.03.12
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringAOP
thumbnail
Spring AOP ๊ณต์‹ ๋ฌธ์„œ ์ฝ๊ณ  ์ •๋ฆฌ - Concept-of-AOP
Spring AOP ๊ณต์‹ ๋ฌธ์„œ ์ฝ๊ณ  ์Šค์Šค๋กœ ์ •๋ฆฌํ•จ.๊นƒํ—ˆ๋ธŒ์—๋„ ์˜ฌ๋ ค๋†“์Œhttps://github.com/dalcheonroadhead/Spring-framework-theory/blob/main/AOP/relatedStudy/conceptOfAOP.mdConcept-of-AOP ์Šค์Šค๋กœ ์ •๋ฆฌ๋ชฉ์ฐจAOP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์•Œ์•„๋ณด๋Š” ์šฉ์–ด ์ •๋ฆฌAdviceJoin PointpointcutAspectIntroductionTarget ObjectAOP proxyWeavingCross-cutting concerns1. AOP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?Aop๋Š” ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Aspect Oriented Programming)์„ ๋งํ•œ๋‹ค. Java๋ผ๋Š” ์–ธ์–ด๋ฅผ ๋ฐฐ์šธ ๋•Œ ์šฐ๋ฆฌ๋Š” ์ž๋ฐ”๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object Oriented ..
2024.03.12
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringAOP
thumbnail
๐Ÿ’š 5430 AC JAVA
๋ชฉ์ฐจ 1. ๋ฌธ์ œ ์„ค๋ช… 2. ์›๋ฆฌ ์„ค๋ช… 3. ์ฝ”๋“œ ๋ถ„์„ 1. ๋ฌธ์ œ ์„ค๋ช… https://www.acmicpc.net/problem/5430 5430๋ฒˆ: AC ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฐฐ์—ด์— ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” error๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net 2. ์›๋ฆฌ ์„ค๋ช… ํ•ด๋‹น ๋ฌธ์ œ๋Š” deque๋ผ๋Š” ์–‘๋ฐฉํ–ฅ์—์„œ add, poll์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ์•„์ง deque๊ฐ€ ๋‚ฏ์„  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ๋กœ ๊ฐ€์„œ ๋ด์ฃผ์„ธ์š” https://velog.io/@sdk1926/deque%EB%8A%94-%EC%99%9C-%EC%93%B8%EA%B9%8C toggle(boolean) ๊ฐ’์„ ๋‘์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ R์ด๋ผ๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด true, fal..
2024.03.09
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
๐Ÿ’” 14889. ์Šคํƒ€ํŠธ์™€ ๋งํฌ
๋ชฉ์ฐจ 1. ๋ฌธ์ œ ์„ค๋ช… 2. ํ‘ผ ์›๋ฆฌ ์„ค๋ช… 3. ์ฝ”๋“œ 1. ๋ฌธ์ œ ์„ค๋ช… https://www.acmicpc.net/problem/14889 14889๋ฒˆ: ์Šคํƒ€ํŠธ์™€ ๋งํฌ ์˜ˆ์ œ 2์˜ ๊ฒฝ์šฐ์— (1, 3, 6), (2, 4, 5)๋กœ ํŒ€์„ ๋‚˜๋ˆ„๋ฉด ๋˜๊ณ , ์˜ˆ์ œ 3์˜ ๊ฒฝ์šฐ์—๋Š” (1, 2, 4, 5), (3, 6, 7, 8)๋กœ ํŒ€์„ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค. www.acmicpc.net 2. ํ‘ผ ์›๋ฆฌ ์„ค๋ช… ์ผ๋‹จ ๋‚˜๋Š” ์ด๊ฑฐ ๋‹ต์ง€ ๋ดค๋‹ค. (1) ํŒ€์„ ์กฐํ•ฉ์œผ๋กœ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. -> (2) ๊ฐ ํŒ€ ๋ฉค๋ฒ„๊ฐ„์˜ ์‹œ๋„ˆ์ง€ ๊ณ„์‚ฐ -> (3) ์ฐจ ๊ตฌํ•ด์„œ ๊ทธ ์ฐจ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€์˜ ๊ฐ’ ์ค‘ ์ตœ์†Œ์ผ ๊ฒฝ์šฐ ๊ฐฑ์‹  ์š”๊ฑฐ๊นŒ์ง€๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ, (2)๋„ ์กฐํ•ฉ์œผ๋กœ ์Šคํƒ€ํŠธํŒ€ ๋‚ด์—์„œ 2๋ช…์”ฉ ์ง์„ ์žก์•„์„œ ๊ฐ’์„ ๊ณ„์‚ฐ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค...
2024.03.08
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
๐Ÿ’œ 2589 ๋ณด๋ฌผ์„ฌ
๋ชฉ์ฐจ 1. ๋ฌธ์ œ ์„ค๋ช… 2. ๋‚ด๊ฐ€ ํ‘ผ ๋ฐฉ๋ฒ• 3. ์ฝ”๋“œ ๋ถ„์„ 1. ๋ฌธ์ œ ์„ค๋ช… https://www.acmicpc.net/problem/2589 2589๋ฒˆ: ๋ณด๋ฌผ์„ฌ ๋ณด๋ฌผ์„ฌ ์ง€๋„๋ฅผ ๋ฐœ๊ฒฌํ•œ ํ›„ํฌ ์„ ์žฅ์€ ๋ณด๋ฌผ์„ ์ฐพ์•„๋‚˜์„ฐ๋‹ค. ๋ณด๋ฌผ์„ฌ ์ง€๋„๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋ฉฐ ์—ฌ๋Ÿฌ ์นธ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ์นธ์€ ์œก์ง€(L)๋‚˜ ๋ฐ”๋‹ค(W)๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค. ์ด ์ง€๋„์—์„œ www.acmicpc.net ์œก์ง€ํ•˜๊ณ  ๋ฐ”๋‹ค๊ฐ€ ์žˆ๋Š”๋ฐ, ํ•ด์ ์€ ์œก์ง€๋กœ๋งŒ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์œก์ง€๋Š” ์ธ์ ‘ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•ด์ ์€ ๋Œ€๊ฐ์„ ์„ ์ œ์™ธํ•œ ์‚ฌ๋ฐฉ์œผ๋กœ๋งŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ณด๋ฌผ์€ ํ•ด์ ์ด ๊ฑธ์–ด์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์œก์ง€ ์•ˆ์— ๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธด ์œก์ง€๋…ธ๋“œ์— ๊ฐ๊ฐ ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋•Œ, ๋ณด๋ฌผ 2๊ฐœ๋ฅผ ์ฐพ๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜์‹œ์˜ค. 2. ๋ฌธ์ œ ํ‘ผ ์›๋ฆฌ ์„ค๋ช… 2์ฐจ์› ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ ์œก์ง€๋ฅผ ๋งŒ๋‚˜๋ฉด..
2024.03.06
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
[01]-OAuth2 ์ด๋ก 
๋ชฉ์ฐจ1. OAuth2์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ (OAuth2๋ž€ ์™œ ํ•„์š”ํ•œ๊ฐ€?)2. ๊ทธ๋ž˜์„œ OAuth2๋ž€?3. OAuth2 ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ 4. OAuth2์˜ ๋™์ž‘ ๊ณผ์ • 1. OAuth์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ  (OAuth2๋ž€ ์™œ ํ•„์š”ํ•œ๊ฐ€?)ํ˜„ IT ์„œ๋น„์Šค ์‹œ์žฅ์—๋Š” ๊ตฌ๊ธ€์ด๋‚˜ ์•„๋งˆ์กด, ํŠธ์œ„ํ„ฐ์™€ ๊ฐ™์€ ๋ฉ”๊ฐ€๊ธ‰ ๊ธฐ์—…๋“ค์ด ๋‹ค์ˆ˜ ์กด์žฌํ•œ๋‹ค. ์ด ๊ธฐ์—…์˜ ์‚ฌ์šฉ์ž๋“ค์€ ์ˆ˜์ฒœ๋งŒ ๋งŽ๊ฒŒ๋Š” ์–ต๋Œ€ ๋‹จ์œ„๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ ๋งŒํผ ํ•ด๋‹น ๊ธฐ์—…๋“ค์ด ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋„ ๋‹ค์ˆ˜ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, ๋‹จ์ฒด์ƒํ™œ์„ ํ•ด๋ดค๋‹ค๋ฉด ์•Œ ์ˆ˜์žˆ๋“ฏ์ด ํ•˜๋‚˜์˜ ์ผ์„ ์ž‘์—…์ž ์ „์›์ด ๋งŒ์กฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ์— ๊ฐ€๊น๋‹ค. A๋Š” ์„œ๋ฅ˜ ์ž‘์—…์„ ๋” ์™„๋ฒฝํžˆ ํ•˜๊ณ  ๋‹ค์Œ ์ผ๋กœ ๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๊ณ , B๋Š” ๊ทธ์ € ๋ณธ ์ž‘์—…์„ ๋นจ๋ฆฌ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ..
2024.03.03
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/Spring-Security
๐Ÿ’œ 2667๋ฒˆ ๋‹จ์ง€ ๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ JAVA
1. ๋ฌธ์ œ https://www.acmicpc.net/problem/2667 2667๋ฒˆ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ ๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„๊ฐ€ ์žˆ๋‹ค. 1์€ ์ง‘์ด ์žˆ๋Š” ๊ณณ์„, 0์€ ์ง‘์ด ์—†๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฒ ์ˆ˜๋Š” ์ด ์ง€๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฐ๊ฒฐ๋œ ์ง‘์˜ ๋ชจ์ž„์ธ ๋‹จ์ง€๋ฅผ ์ •์˜ํ•˜๊ณ , ๋‹จ์ง€์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ ค ํ•œ๋‹ค. ์—ฌ www.acmicpc.net 2. ํ’€์ด์— ๋Œ€ํ•œ ์„ค๋ช… 2์ฐจ์› ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ, (1) 1์„ ๋งŒ๋‚œ๋‹ค๋ฉด! ๊ฑฐ๊ธฐ์„œ ๋ถ€ํ„ฐ ํ•ด๋‹น 1์˜ ์ƒํ•˜์ขŒ์šฐ ์ค‘ ๋ถ™์–ด์žˆ๋Š” 1์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. (์•„ํŒŒํŠธ ๋‹จ์ง€ ๋‚ด์˜ ์•„ํŒŒํŠธ ์ˆ˜ ์ฒดํฌ) (2) ๋‚ด๊ฐ€ ๊ธˆ๋ฐฉ ๋ฐฉ๋ฌธํ•ด์„œ ํ™•์ธํ•œ 1์€ -1๋กœ ๊ฐ’์„ ๋ฐ”๊พธ์–ด์„œ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌํ•œ๋‹ค. (3) 1 search๊ฐ€ ๋๋‚˜๋ฉด ํ•ด๋‹น ์•„ํŒŒํŠธ ๋‹จ์ง€์˜ ์•„ํŒŒํŠธ ์ˆ˜๋ฅผ ๋‹ค ์„ผ ๊ฒƒ์ด๋‹ค. (4) ์ด๋•Œ ์•„ํŒŒํŠธ ์ˆ˜๋ฅผ aptList๋ผ๋Š” ์•„ํŒŒํŠธ ๋‹จ์ง€..
2024.03.02
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
๐Ÿ’œ 2606 ๋ฐ”์ด๋Ÿฌ์Šค JAVA
1. ๊ฐœ์š” ์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ BFS๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ด๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ์ž˜ ์•ˆ ํ’€๋ฆฌ๋Š” ์‚ฌ๋žŒ์€ BaaaaaaaaarkingDog๋‹˜์˜ ๊ทธ๋ž˜ํ”„ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์˜ค๊ธธ ๋ฐ”๋ž€๋‹ค. ์‹ค๋ฒ„ 3๋„ ์‹์€ ๋•€ ํ˜๋ฆฌ๋ฉฐ ํ’€์—ˆ๋‹ค... ์žฌํ™œ์šด๋™ ์‹œ์ž‘! ๋‚ด๊ฐ€ ํ•œ๋ฒˆ ํ‹€๋ ธ์—ˆ๋Š”๋ฐ, ์ด์œ ๋Š” ์–‘๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ž„์„ ์ƒ๊ฐํ•ด์ฃผ์ง€ ์•Š๊ณ  ํ’€์–ด์„œ ์ด๋‹ค. ์ด๋ก  ์ •๋ฆฌ ๋‹ค์‹œ ํ•ด์•ผ๊ฒ ๋‹ค. 2. ์†Œ์Šค์ฝ”๋“œ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { pu..
2024.02.29
์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œ ํ’€์ด
thumbnail
SpringBoot3 WebSocket ChattingServer๋งŒ๋“ค๊ธฐ 5๋‹จ๊ณ„ - ์ฑ„ํŒ…๋ฐฉ ์ธ์› ์ˆ˜ ์ฒดํฌ, Server Side Event ์ฒ˜๋ฆฌ
0. ๋ชฉ์ฐจ 1. ๊ฐœ์š” - ์ด์ „๊ณผ ๋‹ฌ๋ผ์ง„ ์  2. ์ „๊ฐœ๋„ 3. ์ฝ”๋“œ ๋ถ„์„ 4. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์˜ค๋ฅ˜๋“ค https://www.daddyprogrammer.org/post/5290/spring-websocket-chatting-server-enter-qut-event-view-user-count/ ๋ฅผ ๋ณด๊ณ  ์ง„ํ–‰ ํ–ˆ์Šต๋‹ˆ๋‹ค. 1. ๊ฐœ์š” โ“ ์ž…์žฅ ํ‡ด์žฅ ์‹œ ์ธ์› ์ˆ˜ ์ฒดํฌํ•ด์„œ ์ธ์› ์ˆ˜๋ฅผ ์ฑ„ํŒ…๋ฐฉ์— ํ‘œ์‹œ โ“‘ ์ €๋ฒˆ ํฌ์ŠคํŒ…๊นŒ์ง€๋Š” ์ฑ„ํŒ…๋ฐฉ ์ž…์žฅ๊ณผ ๊ตฌ๋…์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ์ง€ํ•˜๊ณ  ๋ฐฑ์—”๋“œ๋กœ ๋ณด๋‚ด์ฃผ๊ณ , ๊ทธ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ์Œ. ์ด๋ฒˆ์—๋Š” Sever Side์—์„œ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ์ง์ ‘ ์ธ์ง€ ํ•˜๊ณ , ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ฐ”๊ฟจ์Œ. 2. ์ „๊ฐœ๋„ ์›๋ž˜ ๋ฐฐ์šธ ๋•Œ Controller -> service -> Repository๋กœ ์ผ์ด ์ •ํ•ด์ ธ ์žˆ์—ˆ์ง€..
2024.01.23
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/WebSocket
(JWT binding ์˜ค๋ฅ˜) NoClassDefFoundError: javax/xml/bind/DatatypeConverter
implementation 'io.jsonwebtoken:jjwt:0.9.1' ์ด๊ฒƒ๋งŒ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค. ์ด๊ฑฐ ์ด์™ธ์— // com.sun.xml.bind implementation 'com.sun.xml.bind:jaxb-impl:4.0.1' implementation 'com.sun.xml.bind:jaxb-core:4.0.1' // javax.xml.bind implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359' ์ถ”๊ฐ€ ํ•ด์•ผํ•จ.
2024.01.22
๊ฒช์€ ์˜ค๋ฅ˜์™€ ํ•ด๊ฒฐ์ฑ…
thumbnail
SpringBoot WebSocket Chatting Server๋งŒ๋“ค๊ธฐ 4๋‹จ๊ณ„ - SpringBoot Security ์žฅ์ฐฉ
0.๋ชฉ์ฐจ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜: ddadyProgrammer๋‹˜์˜ ๋ธ”๋กœ๊ทธ Spring websocket chatting server(4) - SpringSecurity + Jwt๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ณด์•ˆ๊ฐ•ํ™”ํ•˜๊ธฐ ์ด๋ฒˆ ์žฅ์—์„œ๋Š” SpringSecurity์™€ Jwt๋ฅผ ์ด์šฉํ•˜์—ฌ Web ๋ฐ Websocket์˜ ๋ณด์•ˆ์„ ์ข€ ๋” ๊ฐ•ํ™”ํ•˜๊ณ . ๊ธฐ์กด์˜ ๋ณต์žกํ•œ ๋กœ์ง์„ ๊ฐ„์†Œํ™”ํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํฌ๊ฒŒ ์•„๋ž˜์˜ 3๊ฐ€์ง€ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Spri www.daddyprogrammer.org 1. ๊ฐœ์š” (์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•œ ๊ฒƒ๋“ค) 2. ์ „๊ฐœ๋„ 3. ์ฝ”๋“œ ๋ถ„์„ 4. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉฐ ๋งŒ๋‚ฌ๋˜ ์˜ค๋ฅ˜ ๋ชจ์Œ 1. ๊ฐœ์š” ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ์ƒˆ๋กญ๊ฒŒ Spring Security๋ฅผ ์ ์šฉํ–ˆ๋‹ค. ์›๋ž˜ ํ”„๋กœ์ ํŠธ๋Š” ์ ‘๊ทผํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€ํ™”๋ช…๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ชจ๋‘ ์‚ฌ์šฉ..
2024.01.22
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/WebSocket
@Configuration์— ๋Œ€ํ•˜์—ฌ
@Configuration์€ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์„ค์ •์— ๊ด€ํ•œ ํด๋ž˜์Šค์ž„์„ Spring Container์—๊ฒŒ ์•Œ๋ฆฌ๊ณ , ๊ทธ๊ฒƒ์„ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๋„๋ก ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ์–ด? ๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์„ค์ • ํŒŒ์ผ์ž„์„ ๊ฐ€์‹œ์ ์œผ๋กœ ์•Œ๋ฆฌ๋Š” ์ผ ์™ธ์—๋Š” @Bean๊ณผ ๋˜‘๊ฐ™์€ ๊ฒƒ์ธ๊ฐ€? ๋ฌผ๋ก  ์•„๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ์„ค์ •์˜ ํ†ต์ผ์„ฑ์„ ์œ„ํ•ด์„œ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•˜๊ณ , ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๊ณ„์† ๊ทธ ๋‚ด์šฉ์„ ์žฌํ™œ์šฉํ•˜๋ฉฐ ์จ์•ผํ•œ๋‹ค. ์ด์— ์ƒ์‘ํ•˜์—ฌ @Configuration์ด๋ž€ ์–ด๋…ธํ…Œ์ด์…˜์€ ํด๋ž˜์Šค๋ฅผ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  ํ•ด๋‹น Bean ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ†ค์ด ๋˜๋„๋ก ์„ค์ •ํ•ด์ค€๋‹ค.
2024.01.20
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringMVC
SpringBoot3 Embedded Redis ์„ค์ • ์˜ค๋ฅ˜
๋‚˜๋Š” ์ฑ„ํŒ… ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ๋ฅผ ์—ฐ์Šตํ•˜๋ฉฐ ๋Œ€๋””ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ฑ„ํŒ…์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ(3) Spring websocket chatting server(3) - ์—ฌ๋Ÿฌ๋Œ€์˜ ์ฑ„ํŒ…์„œ๋ฒ„๊ฐ„์— ๋ฉ”์‹œ์ง€ ๊ณต์œ ํ•˜๊ธฐ by Redis pub/sub ์•ž ์žฅ์—์„œ ์‹ค์Šต์„ ํ†ตํ•ด ์ฑ„ํŒ…์„ ๊ตฌํ˜„ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. websocket๊ณผ Stomp๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„๋งŒ์œผ๋กœ๋„ ์ฑ„ํŒ…์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•˜๋ ค๋ฉด www.daddyprogrammer.org ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋Š”๋ฐ, ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์•ˆ๋˜๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ฒผ๋‹ค. ๋ฐ”๋กœ Embedded Redis๋ฅผ ์„ค์ •ํ•˜๋Š” Config Class ๋ถ€๋ถ„์ด์—ˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์—์„œ๋Š” public void redisServer() { redisServer = new RedisServer(r..
2024.01.20
๊ฒช์€ ์˜ค๋ฅ˜์™€ ํ•ด๊ฒฐ์ฑ…
thumbnail
SpringBoot WebSocket Chatting Server ๋งŒ๋“ค๊ธฐ 3๋‹จ๊ณ„ - ์—ฌ๋Ÿฌ ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ฐ„์˜ ๋ฉ”์„ธ์ง€ ๊ณต์œ  (by Redis Pub/sub)
2
https://www.daddyprogrammer.org/post/4731/spring-websocket-chatting-server-redis-pub-sub/ 0.๋ชฉ์ฐจ 1. ๊ฐœ์š” 2. ์ „๊ฐœ๋„, ์ „์ฒด์ ์ธ ํ๋ฆ„ ํŒŒ์•… 3. ์ฝ”๋“œ ๋ถ„์„ 4. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์žˆ์—ˆ๋˜ ์—๋Ÿฌ ํ•ด๊ฒฐ 1. ๊ฐœ์š” ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Redis๋ผ๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌํ˜• DB๋ฅผ ํ™œ์šฉํ•˜์—ฌ 2๋ฒˆ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋˜ STOMP์™€ WebSocket๋งŒ์œผ๋กœ ๊ตฌํ˜„ํ•œ Chatting Server ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๊ณ ๋„ํ™” ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์–ด? ์ด๋ฏธ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ์„œ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ๋˜๋Š”๋ฐ ์™œ Redis๋ฅผ ์žฅ์ฐฉํ•ด์•ผ ํ• ๊นŒ์š”? ๊ทธ๋ ‡๋‹ค๋ฉด, ๋จผ์ € Redis๋ฅผ ์™œ ์žฅ์ฐฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค. โ“ STOMP์™€ WebSocket๋งŒ์„ ์“ฐ๋Š” Chatting Serv..
2024.01.20
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/WebSocket