soogoori

Spring Framework/Spring & Spring Boot

[Spring] ํ•„ํ„ฐ(Filter)์™€ ์ธํ„ฐ์…‰ํ„ฐ(Interceptor)

Spring Security๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ค๋ณด๋ฉด filter์™€ interceptor๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด Spring Security ๊ณผ์ •์„ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ด๊ธฐ์— ๊ธฐ๋กํ•œ๋‹ค! โœจ ์šฉ๋„ - ๊ณตํ†ต๊ด€์‹ฌ์‚ฌํ•ญ (Cross-cutting concern) ๐Ÿ‘‰ ์›น ์„œ๋น„์Šค์—์„œ ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋‹ค๋ฅด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ ๋กœ์ง์— ๋กœ๊ทธ์ธ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ• ํ…๋ฐ... ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋  ๊ฒƒ์ด๊ณ  ๋ณต์žกํ•ด์งˆ ๊ฒƒ์ด๋‹ค. ๋งŽ์€ ๋กœ์ง์—์„œ ๊ณตํ†ต์œผ๋กœ ๊ด€์‹ฌ ์žˆ๋Š” ๋ถ€๋ถ„์„ ๊ณตํ†ต ๊ด€์‹ฌ ์‚ฌํ•ญ์ด๋ผ๊ณ  ํ•˜๋ฉฐ ์ด๋ฅผ ์Šคํ”„๋ง์˜ AOP๋กœ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์›น์—์„œ๋Š” ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ์™€ ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ..

Spring Framework/JPA

[Spring/JPA] JPA Entity๊ฐ€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ ธ์•ผํ•˜๋Š” ์ด์œ  - Reflection

JPA ์—”ํ‹ฐํ‹ฐ์—์„œ ์ƒ์„ฑ์ž๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ๊ธฐ๋ณธ์ƒ์„ฑ์ž(@NoArgsConstructor๋ฅผ ์ •์˜ํ•ด์•ผํ•œ๋‹ค๋Š” ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. + public, protected๋กœ ์„ ์–ธํ•ด์•ผํ•จ ! ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•ด์•ผํ•˜๋Š” ์ด์œ ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์—†์–ด์„œ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ฒ ๋‹ค. ๐Ÿ‘‰ ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด Java Reflection API์—์„œ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. JPA๋Š” DB ๊ฐ’์„ ๊ฐ์ฒด ํ•„๋“œ์— ์ฃผ์ž…ํ•  ๋•Œ, ๋™์ ์œผ๋กœ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Reflection์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” Reflection์ด๋ผ๋Š” API๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿผ Reflection์€ ๋ญ˜๊นŒ.... Java Reflection ์ž๋ฐ”์—์„œ๋Š” Reflection์ด๋ผ๋Š” API๋ฅผ ์ œ๊ณตํ•œ๋‹ค. R..

์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[BOJ] 17485 ์ง„์šฐ์˜ ๋‹ฌ ์—ฌํ–‰ (Large) - Java

โœจ DP https://www.acmicpc.net/problem/17485 17485๋ฒˆ: ์ง„์šฐ์˜ ๋‹ฌ ์—ฌํ–‰ (Large) ์ฒซ์ค„์— ์ง€๊ตฌ์™€ ๋‹ฌ ์‚ฌ์ด ๊ณต๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” N, M (2 ≤ N, M ≤ 1000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N์ค„ ๋™์•ˆ ๊ฐ ํ–‰๋ ฌ์˜ ์›์†Œ ๊ฐ’์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ–‰๋ ฌ์˜ ์›์†Œ๊ฐ’์€ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค. www.acmicpc.net ๐Ÿ“ ๊ณ ๋ คํ•ด์•ผํ•  ์  ์™ผ์ชฝ ๋Œ€๊ฐ์„ , ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„  3๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. โœจโœจ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋‘ ๋ฒˆ ์—ฐ์†์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์—†๋‹ค. โœจโœจ ๐Ÿ•น๏ธ ๋ฌธ์ œ ํ’€์ด ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ ์ „ ๋‹จ๊ณ„์— ์‚ฌ์šฉํ–ˆ๋˜ ์—ฐ๋ฃŒ์˜ ์–‘์„ ๊ณ„์† ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ ์ „ ๋‹จ๊ณ„์— ์‚ฌ์šฉํ–ˆ๋˜ ์—ฐ๋ฃŒ์˜ ์–‘๊ณผ ํ˜„์žฌ ์œ„์น˜์— ์žˆ๋Š” ์—ฐ๋ฃŒ์˜ ์–‘์˜ ํ•ฉ์„ ๊ตฌํ•ด์„œ ์ตœ์†Œ์˜ ์—ฐ๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ..

์•Œ๊ณ ๋ฆฌ์ฆ˜/๐Ÿ—‚๏ธ ์ •๋ฆฌ

LCS (์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด)

์ฝ”ํ…Œ ๋ณด๋‹ค๊ฐ€ ๋‚˜์˜จ ๊ฒƒ์ด๊ธฐ์— ์ •๋ฆฌํ•œ๋‹ค... LCS (Longest Common Subsequence)๋Š” ์ฃผ์–ด์ง„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆ˜์—ด ์ค‘์—์„œ ๋ชจ๋‘์˜ ๋ถ€๋ถ„์ˆ˜์—ด์ด ๋˜๋Š” ์ˆ˜์—ด๋“ค ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž๋ฉด, ACAYKP์˜ ๋ถ€๋ถ„์ˆ˜์—ด์€ {A}, {C}, {A}, {Y}, {K}, {P}, {A, C}, {A, A}, {A, Y}, ... {A, C, A, Y, K, P} ์ด๊ณ , CAPCAK์˜ ๋ถ€๋ถ„์ˆ˜์—ด์€ {C}, {A}, {P}, {C}, {A}, {K}, {C, A}, {C, P}, {C, C}, ... {C, A, P, C, A, K}์ด ์žˆ๋Š”๋ฐ ๊ฐ๊ฐ์˜ ๋ถ€๋ถ„์ˆ˜์—ด ์ค‘์—์„œ ์„œ๋กœ ๊ฐ™์€ ๋ถ€๋ถ„์ˆ˜์—ด์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ์ฐพ์œผ๋ฉด ๋˜๋Š”๋ฐ ์œ„์˜ ์˜ˆ์‹œ์˜ ๋‹ต์€ ๊ธธ์ด๊ฐ€ 4์ธ {A, C, A, K} ์ด๋‹ค. ๋Œ€ํ‘œ์ ..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  (IPC: Inter-Process Communication)

์ปค๋„์˜ ์ง€์› ํ•„์š” โœจ IPC์˜ ๋ชฉ์  = ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” data transfer sharing data event notification resource sharing and synchronization process control Message Passing ์ปค๋„์„ ํ†ตํ•ด ์ฃผ๊ณ  ๋ฐ›์Œ user ๊ณ„์ธต์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค๋ผ๋ฆฌ ์ง์ ‘ ํ†ต์‹  X ๐Ÿ‘‰ OS์—์„œ ์ œ๊ณตํ•˜๋Š” message passing์— ๊ด€ํ•œ system call์„ ์ด์šฉํ•ด ์ปค๋„์„ ๊ฑฐ์ณ๊ฐ Messsage queue Pipes Mailboxes Sockets communication link๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Œ ๐Ÿ”น Direct Communication ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง์ ‘ ์ง€๋ช… send(P, message) receive(Q, message) ์ƒ๋Œ€๋ฐฉ์˜ I..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™”

ํ”„๋กœ์„ธ์Šค ๋™๊ธฐํ™” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด race condition(๊ฒฝํ•ฉ์กฐ๊ฑด)์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ mechanism์ด ์žˆ๋‹ค. ๐Ÿ”น Locking Mechanism ์–ด๋–ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค ๐Ÿ‘‰ before entering critical section ๐Ÿ‘‰ before accessing shared data critical section(์ž„๊ณ„์˜์—ญ)์€ ์ตœ๋Œ€ํ•œ ์งง๊ฒŒ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค multi-processors์—์„œ interrupt-based locks์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์›€ ๐Ÿ‘‰ read-write instructions ์œผ๋กœ ํ•ด๊ฒฐ ๐Ÿ”น Semaphore Synchronization tool Counting semaphore Binary semaphore โž” 0 ๋˜๋Š” 1 ๊ฐ’๋งŒ..

์•Œ๊ณ ๋ฆฌ์ฆ˜/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹จ์–ด ๋ณ€ํ™˜

โœจ BFS/DFS https://school.programmers.co.kr/learn/courses/30/lessons/43163# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๐Ÿ“ ๊ณ ๋ คํ•ด์•ผํ•  ์  ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ begin์—์„œ target์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๋ณ€ํ™˜ ๊ณผ์ • ์ฐพ๊ธฐ ๊ตณ์ด ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋Œ€๋กœ ์ฐพ์„ ํ•„์š” ์—†์Œ ๐Ÿ•น๏ธ ํ’€์ด๊ณผ์ • ๐Ÿ‘‰ ์ด ๋ฌธ์ œ ๊ฐ™์€ ๊ฒฝ์šฐ DFS์™€ BFS ๋ชจ๋‘ ํ’€์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ DFS๋กœ ๊ตฌํ˜„ํ•  ์‹œ์—๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ๋‹ค. ๐Ÿ”น DFS words ๋ฐฐ์—ด์—์„œ ํ˜„์žฌ ๋‹จ์–ด์™€ ํ•œ ๊ธ€์ž๋งŒ ๋‹ค๋ฅธ ๋‹จ์–ด๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ๐Ÿ‘‰ ์ค‘๋ณต ํƒ์ƒ‰์„ ๋ฐฉ..

CS/โš™๏ธ ์šด์˜์ฒด์ œ

[โš™๏ธ OS] CPU ์Šค์ผ€์ค„๋ง

CPU ์Šค์ผ€์ค„๋ง ๐Ÿ‘‰ ์–ด๋Š ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ • ๐Ÿ”น CPU ์Šค์ผ€์ค„๋Ÿฌ Ready ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์ด๋ฒˆ์— CPU์— ์ค„ ํ”„๋กœ์„ธ์Šค ์„ ์ • ๐Ÿ”น Dispatcher CPU ์ œ์–ด๊ถŒ์„ CPU ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊น€ = context switching ๐Ÿ”น ๊ณ ๋ ค์‚ฌํ•ญ ๋ˆ„๊ตฌํ•œํ…Œ CPU๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€ ์ค‘๊ฐ„์— CPU๋ฅผ ๋บ์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๋˜๋Š” ๊ณ„์† ์“ฐ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๐Ÿ”น scheduling criteria CPU utilization โž” ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉ Throughput Turnaround Time (์ด ์†Œ์š”์‹œ๊ฐ„) Waiting Time Response time (CPU๋ฅผ ์ตœ์ดˆ ์–ป์„ ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ”น nonpreemptive (๋น„์„ ์ ํ˜•) ๐Ÿ”น preemptive (์„ ์ ํ˜•) ๐Ÿ”ธ ..

soogoori
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)