๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€60

[DBMS] ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ(isolation level) ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ์ด๋ž€?ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ(isolation level)์ด๋ž€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ์ฒ˜๋ฆฌ๋  ๋•Œ, ํŠธ๋žœ์žญ์…˜๋ผ๋ฆฌ ์–ผ๋งˆ๋‚˜ ์„œ๋กœ ๊ณ ๋ฆฝ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.์ฆ‰ ๋‹ค๋ฅด๊ฒŒ ๋งํ•˜๋ฉด โญ๏ธ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ฒ˜๋ฆฌ๋  ๋•Œ, ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์—๋Š” ์•„๋ž˜ 4๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ๊ณ ๋ฆฝ ์ •๋„๊ฐ€ ๋†’์•„์ง€๊ณ  ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ READ COMMITED๋‚˜ REPEATABLE READ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.(๋Œ€ํ‘œ์ ์œผ๋กœ mysql, mariadb๋Š” REPEATABLE.. 2024. 5. 18.
[Spring / Redis] @RedisHash ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์ธ ๊ฐ์ฒด๋ฅผ ๋ ˆ๋””์Šค์— ์ €์žฅํ–ˆ์„๋•Œ, ๊ทธ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• redis-cli์—์„œ ๋‚ด๊ฐ€ ๋„ฃ์€ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•key๋Š” @RedisHash ์— ์„ค์ •ํ•ด๋†“์€ value์™€ ๊ทธ ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค ์ค‘ @Id ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํ•„๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ value:Id๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.์ฆ‰, ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ณ , ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋•Œ Id์ธ accessToken ํ•„๋“œ ๊ฐ’์„ "hello"๋กœ ์„ค์ •ํ•ด๋†จ๋‹ค๋ฉดpackage com.mewsinsa.auth.jwt.redis.dto;import com.mewsinsa.member.domain.Member;import org.springframework.data.annotation.Id;import org.springframework.data.redis.core.RedisHash;@RedisHash(value = "accessToken", time.. 2024. 5. 18.
[Spring MVC] Spring MVC ๊ตฌ์กฐ์™€ DispatcherServlet Spring MVC์˜ ๊ตฌ์กฐ์™€ ๊ทธ ํ•ต์‹ฌ์ธ DispatcherServlet์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.MVC๋ž€MVC๋ž€ Model, View, Controller์˜ ์•ฝ์ž๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์˜์—ญ์„ ๊ฐ๊ฐ Model, View, Controller๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.MVC ํŒจํ„ด ๋„์ž… ์ „์—๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ทฐ๋ฅผ ๋ Œ๋”๋ง ํ•˜๋Š” ๋ถ€๋ถ„ ๋“ฑ์˜ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ํ•œ jsp ํŒŒ์ผ์— ์žˆ์—ˆ๋Š”๋ฐ, MVC ํŒจํ„ด์„ ๋„์ž…ํ•œ ์ดํ›„์—๋Š” UI ์˜์—ญ๊ณผ ๋„๋ฉ”์ธ(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง) ์˜์—ญ์ด ๋ถ„๋ฆฌ ๋˜์–ด ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฅ ์•Š์œผ๋ฉด์„œ ๊ฐœ๋ฐœ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.Model(๋ชจ๋ธ)Spring MVC ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ „๋‹ฌ ๋ฐ›์œผ๋ฉด ์š”์ฒญ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.์ฒ˜๋ฆฌํ•œ ์ž‘์—…์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์œผ๋กœ.. 2024. 5. 18.
[Java / Web] ์„œ๋ธ”๋ฆฟ๊ณผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ, ํ†ฐ์บฃ์˜ ๋™์ž‘ ์„œ๋ธ”๋ฆฟ์„œ๋ธ”๋ฆฟ์ด๋ž€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” Servlet ํด๋ž˜์Šค์˜ ๊ตฌํ˜„ ๊ทœ์น™์„ ์ง€ํ‚จ ์ž๋ฐ” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.์ฆ‰ ์„œ๋ธ”๋ฆฟ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋– ํ•œ ์š”์ฒญ์„ ํ•˜๋ฉด ๊ทธ ์š”์ฒญ์„ ๋ฐ›๊ณ  ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ „์†กํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.์„œ๋ธ”๋ฆฟ์˜ ํŠน์ง•ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ๋™์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.html์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.MVC ํŒจํ„ด์—์„œ Controller๋กœ ์ด์šฉ๋ฉ๋‹ˆ๋‹ค.Servlet์€ javax.servlet.Servlet์„ ์ตœ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.HTTP ํ”„๋กœํ† ์ฝœ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๋Š” java.servlet.http.HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค.html์„ ๋ณ€๊ฒฝํ•˜๋ฉด Servlet์„ ์žฌ์ปดํŒŒ์ผํ•ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์„œ๋ธ”๋ฆฟ์˜ ๋™์ž‘ ๋ฐฉ์‹.. 2024. 5. 16.
[Beyond SW / 1, 2์ผ์ฐจ ๋‚ด์šฉ ๋ณต์Šต] Linux์˜ ๊ถŒํ•œ ๊ด€๋ฆฌ์™€ ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์ •๋ฆฌ ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน, ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ํŠน์ • ์‚ฌ์šฉ์ž๋‚˜ ๊ทธ๋ฃน์ด ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.root ์‚ฌ์šฉ์ž์™€ sudo ๋ช…๋ น์–ด์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ์ค‘, ๋ชจ๋“  ๊ถŒํ•œ์ด ์žˆ๋Š” ์ตœ์ƒ๋‹จ์— ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ root๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.root ์‚ฌ์šฉ์ž๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด. (su๋Š” switch user๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.)root ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅด๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œsu -์‹œ์Šคํ…œ ์ „์ฒด ๋ณด์•ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋Š” root๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.ex) root๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ๋‹ค๋ฅธ user๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ root ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅด๋ฉด root ๊ณ„์ •์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. :(๋”ฐ๋ผ์„œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” sudo.. 2024. 5. 14.
[Spring / Project] ์‘๋‹ต ๊ฐ์ฒด์—์„œ ์ƒ์† ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž ์ด๋ฒˆ ๊ธ€์€ ์–ด๋–ค ์ง€์‹์„ ์ „ํ•˜๋Š” ๊ธ€์ด๋ผ๊ธฐ ๋ณด๋‹จ, ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ œ๊ฐ€ ๋†“์น˜๊ณ  ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ํšŒ๊ณ ๋ก์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค,,ใ…Žใ…Ž๋ฉ˜ํ† ๋‹˜์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ๋Š๋ผ๊ฒŒ ๋œ ๊ฒƒ์€ '๋‚ด๊ฐ€ ์ •๋ง ์ž๋ฐ”์˜ ์ƒ์†์„ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๊ตฌ๋‚˜'์ž…๋‹ˆ๋‹ค.์ œ๊ฐ€ ์ž๋ฐ”๋ฅผ ์ข‹์•„ํ•˜๋Š” ์ด์œ ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ž˜ ์ง€์›ํ•ด์ฃผ๋Š” ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ •์ž‘ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ƒ์†์„ ๊ฑฐ์˜ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ€๋„๋Ÿฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹  ๊ฒƒ์ด, ์ผ๋‹จ ์‘๋‹ต ๊ฐ์ฒด์ธ FailureResult, SuccessResult๊ฐ€ ์ƒ์† ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ์ด ๋‘˜์„ ์ƒ์† ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟ”๋ณด๋ผ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.์˜ค๋Š˜ ํฌ์ŠคํŠธ๋Š” ์ด ๋‘ ๊ฐ์ฒด๋ฅผ ์ƒ์† ๊ตฌ์กฐ๋กœ ๋ฐ”๊พธ๋Š” ์ผ์ข…์˜ ๋ฆฌํŒฉํ† ๋ง(?) ๊ณผ์ •์— ๋Œ€ํ•ด ๊ธฐ๋กํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.์›๋ž˜๋Š” ์–ด๋–ป๊ฒŒ ๋˜์–ด ์žˆ์—ˆ๋Š”๋ฐ?์›๋ž˜ ์ฝ”๋“œ๋Š”.. 2024. 5. 13.