์ „์ฒด ๊ธ€

๐Ÿ“‚์–ธ์–ด:Language

java

java๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๊ธฐ๋กํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.JAVA์˜ ๋™์ž‘๊ณผ์ • ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์˜ ์žฅ์ 1. ์ƒ์† ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.2. ์ผ์ƒ์ƒํ™œ ๋ชจ์Šต์˜ ๊ตฌ์กฐ๊ฐ€ ๊ฐ์ฒด์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋…น์•„๋“ค์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.3. ์ž˜ ์„ค๊ณ„๋œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋…๋ฆฝ๋œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์˜ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ. ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์˜ ๋‹จ์ 1. ๊ฐ์ฒด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๊ธฐ์— ์„ค๊ณ„๋‹จ๊ณ„๋ถ€ํ„ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ๋ชจ๋œ๋‹ค.2. ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋Š” ๋Œ€์ฒด์ ์œผ๋กœ ์‹คํ–‰์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.3. ๋‹ค์ค‘์ƒ์†์ด ์ง€์›๋˜๋Š” c++์˜ ๊ฒฝ์šฐ์—๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ ธ ์ฝ”๋”ฉ์˜ ๋‚œ์ด๋„๊ฐ€ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ณผ์ •1. ์ž๋ฐ”์ปดํŒŒ์ผ๋Ÿฌ(javac)์— ์˜ํ•ด์„œ .java ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.clas..

๐Ÿ“‚์ปดํ“จํ„ฐ๊ณผํ•™:CS

[์šด์˜์ฒด์ œ]5์žฅ - ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ

ํ”„๋กœ์„ธ์Šค : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌธ๋งฅ(context) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์–ด๋–ค ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ๊ทœ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด. CPU์˜ ์ˆ˜ํ–‰ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋“œ์›จ์–ด ๋ฌธ๋งฅ Program Counter ๊ฐ์ข… register ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ code, data, stack ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ์ปค๋„ ์ž๋ฃŒ ๊ตฌ์กฐ PCB Kernel stack ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ์‹คํ–‰(running) CPU๋ฅผ ์žก๊ณ  instruction์„ ์ˆ˜ํ–‰์ค‘์ธ ์ƒํƒœ ์ค€๋น„(ready) CPU๋งŒ ๋ณด์œ ํ•˜๋ฉด ๋‹น์žฅ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ(๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ๋‹ค๋ฅธ ์กฐ๊ทผ์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Œ) ๋ด‰์‡„(blocked, wait, sleep) CPU๋ฅผ ์ฃผ์–ด๋„ ๋‹น์žฅ instruction์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์š”์ฒญํ•œ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์ง„ํ–‰์ค‘..

๐Ÿ“‚๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

[MySQL] not a GROUP BY expression

group by์— ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด select ์ ˆ์—์„œ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š” ์ปฌ๋Ÿผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ปฌ๋Ÿผ์€ group by ์˜ ์ธ์ž๋กœ ์จ์ค˜์•ผ ํ•จ! SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(AVG(R.REVIEW_SCORE),2) SCORE FROM REST_INFO AS I JOIN REST_REVIEW AS R ON I.REST_ID=R.REST_ID WHERE I.ADDRESS LIKE '์„œ์šธ%' GROUP BY I.REST_ID , I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS ORDER BY SCORE desc, I.FAVORITES DESC; ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์„œ์šธ์— ์œ„์น˜ ์‹..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ (Union Find) (๋ฐฑ์ค€ 1043๋ฒˆ)

๋”๋ณด๊ธฐ [Gold IV] ๊ฑฐ์ง“๋ง - 1043 ๋ฌธ์ œ ๋งํฌ ์„ฑ๋Šฅ ์š”์•ฝ ๋ฉ”๋ชจ๋ฆฌ: 14352 KB, ์‹œ๊ฐ„: 128 ms ๋ถ„๋ฅ˜ ์ž๋ฃŒ ๊ตฌ์กฐ, ๋ถ„๋ฆฌ ์ง‘ํ•ฉ, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์ œ์ถœ ์ผ์ž 2024๋…„ 1์›” 3์ผ 16:32:22 ๋ฌธ์ œ ์„ค๋ช… ์ง€๋ฏผ์ด๋Š” ํŒŒํ‹ฐ์— ๊ฐ€์„œ ์ด์•ผ๊ธฐ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ํŒŒํ‹ฐ์— ๊ฐˆ ๋•Œ๋งˆ๋‹ค, ์ง€๋ฏผ์ด๋Š” ์ง€๋ฏผ์ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ•œ๋‹ค. ์ง€๋ฏผ์ด๋Š” ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ๋งํ•  ๋•Œ, ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ง„์‹ค๋กœ ๋งํ•˜๊ฑฐ๋‚˜ ์—„์ฒญ๋‚˜๊ฒŒ ๊ณผ์žฅํ•ด์„œ ๋งํ•œ๋‹ค. ๋‹น์—ฐํžˆ ๊ณผ์žฅํ•ด์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์žฌ๋ฏธ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋˜๋„๋ก์ด๋ฉด ๊ณผ์žฅํ•ด์„œ ์ด์•ผ๊ธฐํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์ง€๋ฏผ์ด๋Š” ๊ฑฐ์ง“๋ง์Ÿ์ด๋กœ ์•Œ๋ ค์ง€๊ธฐ๋Š” ์‹ซ์–ดํ•œ๋‹ค. ๋ฌธ์ œ๋Š” ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ ์ด์•ผ๊ธฐ์˜ ์ง„์‹ค์„ ์•ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฐ ์‚ฌ๋žŒ๋“ค์ด ํŒŒํ‹ฐ์— ์™”์„ ๋•Œ๋Š”, ์ง€๋ฏผ์ด๋Š” ์ง„์‹ค์„ ์ด์•ผ๊ธฐํ•  ์ˆ˜ ..

๐Ÿ“‚๋ฐฑ์—”๋“œ : BackEnd

Spring Web MVC

๐Ÿ’กํ•„ํ„ฐ, ์ธํ„ฐ์…‰ํ„ฐ, AOP์˜ ์ฐจ์ด? ํ•„ํ„ฐ - ์Šคํ”„๋ง ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€์— ์กด์žฌํ•˜์—ฌ ์Šคํ”„๋ง๊ณผ ๋ฌด๊ด€ํ•œ ์ž์›์— ๋Œ€ํ•ด ๋™์ž‘ํ•จ. - ๋ณดํ†ต web.xml์— ๋“ฑ๋กํ•˜๊ณ , ์ธ์ฝ”๋”ฉ ๋ณ€ํ™˜ ์ฒ˜๋ฆฌ, XSS ๋ฐฉ์–ด ๋“ฑ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋กœ ์‚ฌ์šฉ๋จ. ์ธํ„ฐ์…‰ํ„ฐ - ์Šคํ”„๋ง ์ปจํ…์ŠคํŠธ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋ฉฐ Dispatcher Servlet์ด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „, ํ›„๋กœ ๋ผ์–ด๋“ฌ. - ์Šคํ”„๋ง์˜ ๋ชจ๋“  ๋นˆ ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ. ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ(์ˆœ์„œ ์ฃผ์˜). - ๋กœ๊ทธ์ธ ์ฒดํฌ, ๊ถŒํ•œ์ฒดํฌ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ๊ฐ„ ๊ณ„์‚ฐ์ž‘์—… ๋กœ๊ทธํ™•์ธ ๋“ฑ์˜ ์—…๋ฌด์ฒ˜๋ฆฌ. AOP - ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ (ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ๋Š” Servlet ๋‹จ์œ„์—์„œ ์‹คํ–‰) ์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฉ”์†Œ๋“œ ์•ž์—์„œ Proxy ํŒจํ„ด์˜ ํ˜•ํƒœ๋กœ ์‹คํ–‰๋จ. - OOP๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฐœ๋…. (OOP์—์„œ ๊ณตํ†ต ์‚ฌํ•ญ์„ ๋ชจ๋“ˆํ™” ํ•œ..

๐Ÿ“‚๋ฐฑ์—”๋“œ : BackEnd

Spring AOP

๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (AOP) ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ(core concern)๊ณผ ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ(cross-cuttin concern) ๊ธฐ์กด OOP (๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์—์„œ๋Š” ๊ณตํ†ต๊ด€์‹ฌ์‚ฌํ•ญ์„ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—์„œ ์ ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์–‘์ƒํ•˜๋Š” ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•จ. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด AOP๊ฐ€ ๋“ฑ์žฅ AOP๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ด€์‹ฌ ์‚ฌํ•ญ๊ณผ ์ „์ฒด์— ์ ์šฉ๋˜๋Š” ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์„ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•จ์œผ๋กœ์จ ๊ณตํ†ต ๋ชจ๋“ˆ์„ ์†์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ AOP๋Š” application์—์„œ์˜ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(๊ธฐ๋Šฅ์˜ ๋ถ„๋ฆฌ) ์ฆ‰, ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ์—์„œ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•จ. ๋ถ„๋ฆฌํ•œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์–ด์ŠคํŒฉํŠธ(Aspect) (=๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ) ๋ผ๋Š” ๋…ํŠนํ•œ ๋ชจ๋“ˆ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์„œ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•. OOP๋ฅผ ์ ์šฉํ•˜์—ฌ๋„ ํ•ต์‹ฌ๊ธฐ๋Šฅ์—์„œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

๋‹ค์ต์ŠคํŠธ๋ผ (boj 12851 ์ˆจ๋ฐ”๊ผญ์งˆ2)

๋ฌธ์ œ : https://www.acmicpc.net/problem/12851 12851๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ 2 ์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ ๋•Œ www.acmicpc.net ๊ธฐ์กด์˜ ์ˆจ๋ฐ”๊ผญ์งˆ ๋ฌธ์ œ์—์„œ ์ตœ๋‹จ๊ฒฝ๋กœ์˜ ๊ฐฏ์ˆ˜๊นŒ์ง€ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค. 1. ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ณ„์† ํƒ์ƒ‰์„ ์ด์–ด๋‚˜๊ฐ€๋„๋ก ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ–ˆ๋‹ค. while(!pq.isEmpty()){ Node cur = pq.poll(); if(cur.idx==K && cur.w==dist[K]){ // ๋ชฉํ‘œ์ง€์ ์— ๋„๋‹ฌํ•œ ๊ฒฝ์šฐ count+=1; } ... } ..

๐Ÿ“‚๋ฐฑ์—”๋“œ : BackEnd

SpringFramework - DI

SpringFramework๋ž€? Spring Framework ๋Š” ์ž๋ฐ”๋กœ Enterprise Application ์„ ๋งŒ๋“ค ๋•Œ ํฌ๊ด„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Programming ๋ฐ Configuration Model ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š” Framework ๋กœ Application ์ˆ˜์ค€์˜ ์ธํ”„๋ผ ์ŠคํŠธ๋Ÿญ์ณ๋ฅผ ์ œ๊ณต. ์ฆ‰ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด Low Level ( ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด setting )์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  Business Logic๊ฐœ๋ฐœ์— ์ „๋…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค Spring Container ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์Šคํ”„๋ง์—์„œ ์ž๋ฐ” ๊ฐ์ฒด๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„์„ ๋งํ•จ. ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง์—์„  ๋นˆ(Bean)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ์ด ๋นˆ(Bean)์˜ ์ƒ์„ฑ๋ถ€ํ„ฐ ์†Œ๋ฉธ๊นŒ์ง€๋ฅผ ๊ฐœ๋ฐœ์ž ๋Œ€์‹  ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ณณ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ..

mc.thd
song