๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (38)

<Hello Hosung๐Ÿ˜Ž/>

[CS ์ง€์‹] JWT(Json Web Token) ์ด๋ž€

1. JWT๋ž€ ๋ฌด์—‡์ธ๊ฐ€?JWT๋Š” JSON Web Token์˜ ์•ฝ์ž๋กœ, ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ ํ† ํฐ์ž…๋‹ˆ๋‹ค. JWT๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:ํ—ค๋”(Header): ํ† ํฐ์˜ ํƒ€์ž…๊ณผ ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.ํŽ˜์ด๋กœ๋“œ(Payload): ์ธ์ฆ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๋ฐ์ดํ„ฐ๋Š” ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์„œ๋ช…(Signature): ํ† ํฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์•”ํ˜ธํ™”๋œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.JWT๋Š” ์„ธ ๋ถ€๋ถ„์ด .(์ )์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค: header.payload.signature.2. JWT์˜ ์ž‘๋™ ์›๋ฆฌJWT์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:๋กœ๊ทธ์ธ: ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์‹œ, ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ™•์ธํ•œ ํ›„ JWT๋ฅผ ์ƒ์„ฑํ•ฉ..

๐Ÿ“– CS Information 2024. 11. 16. 23:55
[DB] ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ณ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ˜„๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ์‚ฌ์šฉ์ž ์š”์ฒญ์ด ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก, ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์™€ ์•„ํ‚คํ…์ฒ˜๋Š” ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์‹œ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ , ๊ฐ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜๋‹ˆ ๋๊นŒ์ง€ ์ฝ์–ด๋ณด์„ธ์š”! ๐Ÿ˜Š1. ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜ (Single Database Architecture)๊ฐœ์š”๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์†Œ๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ ๋•๋ถ„์— ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํŠน์ง•์žฅ์ :๊ตฌํ˜„๊ณผ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ„๋‹จํ•˜์—ฌ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์— ์ ํ•ฉ.๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋™..

๐Ÿ“– CS Information 2024. 11. 15. 22:36
[Java] ๋””์ž์ธ ํŒจํ„ด

๋””์ž์ธ ํŒจํ„ด์ด๋ž€ ?๋””์ž์ธ ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์€ ํŠน์ •ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ๊ฒ€์ฆ๋œ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํšจ์œจ์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์˜ ๋ถ„๋ฅ˜๋””์ž์ธ ํŒจํ„ด์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆ ์ง‘๋‹ˆ๋‹ค: ์ƒ์„ฑ ํŒจํ„ด (Creational Patterns): ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด ๊ตฌ์กฐ์  ํŒจํ„ด (Structural Patterns): ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ๊ด€๊ณ„๋ฅผ ์กฐ์งํ•˜๋Š” ํŒจํ„ด ํ–‰๋™ ํŒจํ„ด (Behavioral Patterns): ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๊ณผ ์ฑ…์ž„์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ” ๋””์ž์ธ ํŒจํ„ด(1) ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด (Singleton Pattern) ๋ชฉ์ : ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด..

[Java] ๋””์ž์ธ ํŒจํ„ด - ์‹ฑ๊ธ€ํ†ค

์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์€ ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ํ•„์š”ํ•˜๊ฑฐ๋‚˜, ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด๋‚˜ ๋กœ๊ทธ ์ฒ˜๋ฆฌ๊ธฐ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. 1. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ํ•ต์‹ฌ ํŠน์ง•์˜ค์ง ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑ๋˜๋ฉฐ, ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.๊ธ€๋กœ๋ฒŒ ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์–ด๋””์„œ๋“  ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ธ์Šคํ„ด์Šค๋ฅผ ์ „์—ญ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 2. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„ ์˜ˆ์ œ (Java)๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ Java๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ: ๊ธฐ๋ณธ ์‹ฑ๊ธ€ํ†ค ๊ตฌํ˜„public class Singleton { // ์ •์  ๋ณ€์ˆ˜๋กœ ์‹ฑ..

๐Ÿ’ป Java 2024. 11. 13. 22:34
[Java] ์ง๋ ฌํ™”(Serialization)๋ž€?

Java์—์„œ **์ง๋ ฌํ™”(Serialization)**๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ **์—ญ์ง๋ ฌํ™”(Deserialization)**๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง๋ ฌํ™”๋Š” ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†ํ™”ํ•˜๊ฑฐ๋‚˜ ์›๊ฒฉ ํ†ต์‹ ์—์„œ ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์ง๋ ฌํ™”๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Java์—์„œ ์ง๋ ฌํ™”๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์ง๋ ฌํ™”์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ง๋ ฌํ™”๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ง๋ ฌํ™”๋œ ๊ฐ..

[Java] ์ƒ์†์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์•Œ์•„๋ณด์ž๐Ÿง

์ž๋ฐ”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋Š” "์ƒ์†"์ž…๋‹ˆ๋‹ค. ์ƒ์†์„ ํ™œ์šฉํ•˜๋ฉด ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ์ž๋ฐ” ์ƒ์†์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๋ช… ๋“œ๋ฆด๊ฒŒ์š”๐Ÿ˜€ 1. ์ƒ์†์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? **์ƒ์†(Inheritance)**์€ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค(์ƒ์œ„ ํด๋ž˜์Šค)์˜ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค(ํ•˜์œ„ ํด๋ž˜์Šค)์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ํšจ์œจ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์†์˜ ๊ธฐ๋ณธ ๊ตฌ๋ฌธclass ๋ถ€๋ชจํด๋ž˜์Šค { // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†์„ฑ..

[Java] ์ธํ„ฐํŽ˜์ด์Šค๋ž€?

์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋Š” ์ถ”์ƒ์ ์ธ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋งŒ ํฌํ•จํ•˜๊ณ , ๋ฉ”์„œ๋“œ ๋ณธ์ฒด(๊ตฌํ˜„)๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„(implement)ํ•˜๋ฉด, ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ๋œ ๋ชฉ์ ์€ ๋‹คํ˜•์„ฑ์„ ์ œ๊ณตํ•˜๊ณ , ๋А์Šจํ•œ ๊ฒฐํ•ฉ์„ ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค์ด ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ธํ„ฐํŽ˜์ด์Šค๋Š” interface ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Animal์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , sound()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.interface Animal { void..

[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ (IO) ์ดํ•ดํ•˜๊ธฐ

Java์—์„œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด๋“ค์ด๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํŒŒ์ผ ์ž…์ถœ๋ ฅ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ž์ฃผ ์“ฐ์ด๋Š” ํด๋ž˜์Šค๋“ค, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๊ธฐ๋ณธ ๊ฐœ๋…Java์˜ ์ž…์ถœ๋ ฅ์€ ์ŠคํŠธ๋ฆผ(Stream) ๊ฐœ๋…์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ „์†กํ•˜๋Š” ํ๋ฆ„์œผ๋กœ, Java๋Š” ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ž…์ถœ๋ ฅ์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ: InputStream, OutputStream์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ(byte) ๋‹จ์œ„๋กœ ์ฝ๊ณ  ์”๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ด๋ฏธ์ง€, ..

[SpringBoot] ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ๊ฐœ๋…๊ณผ ํ™œ์šฉ

Spring Boot๋Š” ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๊ณ„ ์„ค์ •์„ Spring ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ๊ฐ์ฒด๋“ค์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Spring Boot์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…์˜ ๊ฐœ๋…๊ณผ ์‹ค์ œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)๋ž€? **์˜์กด์„ฑ ์ฃผ์ž…(DI)**์€ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ์™ธ๋ถ€์—์„œ ์˜์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›๋„๋ก ํ•˜๋Š” ์„ค๊ณ„ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ์˜์กด์„ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹ , Spring๊ณผ ๊ฐ™์€ IoC(Inversion ..

[Java] ์†Œ์ผ“ํ†ต์‹ ์˜ ๊ธฐ์ดˆ(+์ฑ„ํŒ…๐Ÿง)

์†Œ์ผ“(Socket)์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์–‘๋ฐฉํ–ฅ ํ†ต์‹  ์ฑ„๋„์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” java.net ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์†Œ์ผ“ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹ ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์ฑ„ํŒ… ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.1. ์†Œ์ผ“ ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ์ดํ•ด์†Œ์ผ“ ํ†ต์‹ ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:์„œ๋ฒ„(Server): ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ํด๋ผ์ด์–ธํŠธ(Client): ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์—ญํ• ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋Œ€๊ธฐํ•˜๋ฉฐ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” InputStream๊ณผ OutputStream์„ ํ†ตํ•ด ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.2. ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ตฌํ˜„์ฑ„ํŒ… ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ๋ฐ›๊ณ , ๋ฉ”์‹œ์ง€๋ฅผ ํด๋ผ์ด..

[Node.js] bcrypt ๋กœ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„ํ•˜๊ธฐ

ํšŒ์›๊ฐ€์ž… ์‹œ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ˆ˜์ง‘ํ•œ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š๊ณ  ํ‰๋ฌธ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•  ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์œ ์ถœ๋˜๋ฉด, ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ํ‰๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋กœ๊ทธ์ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์–‘ํ•œ ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์•”ํ˜ธํ™”(ํ•ด์‹ฑ) ๊ณผ์ •์„ ๊ฑฐ์ณ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹ฑ์„ ํ†ตํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ์ถœ ์‹œ์—๋„ ๋น„๋ฐ€๋ฒˆํ˜ธ ์›๋ฌธ์ด ์•„๋‹Œ ํ•ด์‹œ๊ฐ’์ด ๋…ธ์ถœ๋˜๋ฏ€๋กœ ๋ณด์•ˆ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ์˜ค๋Š˜ ํฌ์ŠคํŒ…์€ bcrypt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฅผ ํ™œ์šฉํ•œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.   1) Node.js ํ”„๋กœ์ ํŠธ์— bcrypt๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ..

[Node.js] Express ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž

์˜ค๋Š˜์€ Express ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค ๐Ÿ˜Š๋งŒ๋“ค๊ธฐ์— ์•ž์„œ Express๊ฐ€ ๋ฌด์—‡์ธ๊ณ  ์•Œ์•„๋ณด๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™€ ์žˆ์–ด์š”   ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์—์š”, ์‰ฝ๊ฒŒ ๋งํ•ด Java ๊ณ„์—ด์—๋Š” Spring, SpringBoot ๋“ฑ์ด ์กด์žฌํ•˜๋“ฏ Node.js๋ฅผ ํ†ตํ•ด ์›น ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฐ”๋กœ Express ์ž…๋‹ˆ๋‹ค.    ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ Express ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค. 1. ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™”๋จผ์ € Express ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์—์„œ Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.mkdir express-servercd express-servernpm init -y # package.json ํŒŒ์ผ ์ž๋™ ์ƒ์„ฑ 2. E..

[Node.js] Node.js(Express) ↔๏ธŽ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๐Ÿ“ฆ ์—ฐ๋™ํ•˜๊ธฐ

์ด๋ฒˆ์—” Node.js ์™€ MySQL ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™๊ณผ ๋˜ํ•œ mybatis-mapper ๋ฅผ ํ™œ์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋˜ํ•œ ์•Œ์•„ ๋ณด๋„๋ก ํ•ด์š”๐Ÿ˜€ ๋จผ์ € ์•„๋ž˜์™€ ๊ฐ™์ด ๋„์ปค ํ™˜๊ฒฝ์— MySQL ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ฌ๋ผ ๊ฐ”๋‹ค๊ณ  ๊ฐ€์ • ํ•ด๋ด…์‹œ๋‹ค! (๋„์ปค๋ฅผ ํ†ตํ•ด MySQL DB ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ด์š”) ↓ ↓ ↓ 2024.08.18 - [๐Ÿณ Docker] - [Docker] ๋„์ปค๋กœ MySQL DB๐Ÿ“ฆ ์„œ๋ฒ„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด Node.js๋กœ ์ž‘์„ฑํ•œ Express ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”. Express๋Š” Node.js๋ฅผ ์œ„ํ•œ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์š”. ๐Ÿง ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ํŠนํžˆ REST API๋‚˜ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ..

[์  ํ‚จ์Šค] ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ž๋™๋ฐฐํฌ

Docker ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ํ•˜๊ณ , ์ด๋Ÿฐ๋ถ€๋ถ„์„ ๊ณ„์†ํ•ด์„œ ํ•˜๋Š”๊ฒƒ์€ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ด์—์š”๐Ÿฅฒ ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์ข€๋” ํŽธํ•˜๊ฒŒ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ ์ƒ๊ฐํ–ˆ์–ด์š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ค‘๊ฐ„์— Jenkins๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ๋ฉด ์–ด๋–จ๊ฐ€ ํ•˜๊ณ ์š”! ๊ทธ๋ฆผ์„ ์ข€ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์•„์š”.1. ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ ์†Œ์Šค๋ฅผ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— GitHub์— ์ปค๋ฐ‹ & push ํ•œ๋‹ค. 2. Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ตฌ๋™์ค‘์ธ Jenkins ์—์„œ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•˜์—ฌ GitHub์— ์žˆ๋Š” ์†Œ์Šค๋ฅผ ์ฒดํฌ์•„์›ƒ ํ•œ๋‹ค 3. Jenkins ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. 1. ๋„์ปค๋กœ Jenkins Server ๋งŒ๋“ค๊ธฐ ใ†DockerHub๋ฅผ ํ†ตํ•ด ์  ํ‚จ์Šค ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์ค„๊ฒŒ์š”.docke..

๐ŸฑCI, CD 2024. 9. 13. 13:49