์ธ๋„ค์ผ [spring boot] @.์ž๋ฐ” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜ ๊ธฐ๋ณธ ์ง€์‹ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธโœฆ ์„œ๋ฒ„ ๋ž€? ์„œ๋ฒ„(Server)๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ request ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์ฒด์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  (Post ๋ฐฉ์‹) , ์„œ๋ฒ„ ๋‚ด์—์„œ ์ฒ˜๋ฆฌ๋งŒ ํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (Get๋ฐฉ์‹) โœฆ ํด๋ผ์ด์–ธํŠธ ๋ž€? ํด๋ผ์ด์–ธํŠธ(Client)๋Š” ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ผ์ปซ๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ํด๋ผ์ด์–ธํŠธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด URL์„ ์ž…๋ ฅํ•˜๊ณ  ํ™”๋ฉด์„ ์š”์ฒญํ•˜๋Š” ํ–‰๋™์„ ํ†ตํ•ด ํ•ด๋‹น ๋งํฌ๋กœ์˜ ์ด๋™์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ(Enter) ํ‚ค๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์„ "์„œ๋ฒ„์— ์š”์ฒญํ•œ๋‹ค" ์ฆ‰, Request ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ด ํ–‰๋™์„ ํ†ตํ•ด ์„œ๋ฒ„๋Š” Response ํ•˜๋Š”..
์ธ๋„ค์ผ [spring boot] Spring Security ๊ธฐ๋ณธ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์—†์• ๊ธฐ (6.1 ์ด์ƒ ๋ฒ„์ „) ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ spring security๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ DB์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž spring security ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ build.gradle์— ์ฃผ์ž…ํ•ด์ฃผ์—ˆ๋‹ค. implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'spring security๋ฅผ ์ฃผ์ž…ํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋™์œผ๋กœ login ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๊ณ  , ์›ํ•˜๋Š” url์„ ์•„๋ฌด๋ฆฌ ์ž…๋ ฅํ•ด๋„ ์ด๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.  ํ•ด๊ฒฐ๋ฐฉ๋ฒ•๋จผ์ €, application์—์„œ ์‹คํ–‰๋˜๋Š” Main.java ํด๋ž˜์Šค ํŒŒ์ผ์— @SpringBootApplication ์–ด..
์ธ๋„ค์ผ [ํ˜ผ๊ณต์ปด์šด] Chapter 08-2. ๋‹ค์–‘ํ•œ ์ž…์ถœ๋ ฅ ๋ฐฉ๋ฒ• ์ž…์ถœ๋ ฅ ์ž‘์—… : CPU์™€ ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ ⇒ ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ CPU๊ฐ€ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•ํ”„๋กœ๊ทธ๋žจ ์ž…์ถœ๋ ฅ์ธํ„ฐ๋ŸฝํŠธ ๊ธฐ๋ฐ˜ ์ž…์ถœ๋ ฅDMA ์ž…์ถœ๋ ฅํ”„๋กœ๊ทธ๋žจ ์ž…์ถœ๋ ฅ: ํ”„๋กœ๊ทธ๋žจ ์† ๋ช…๋ น์–ด๋กœ ์ž…์ถœ๋ ฅ์žฅ์น˜๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•๋”๋ณด๊ธฐโšก Q. ์–ด๋–ป๊ฒŒ CPU๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜๋“ค์˜ ์ฃผ์†Œ๋ฅผ ์•„๋Š” ๊ฑธ๊นŒ?- "ํ”„๋ฆฐํ„ฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฝ์–ด๋ผ" ์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋“ค์€ ์–ด๋–ป๊ฒŒ ๋ช…๋ น์–ด๋กœ ํ‘œํ˜„๋˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜์–ด ์žˆ์„๊นŒ?๋ฉ”๋ชจ๋ฆฌ ๋งต ์ž…์ถœ๋ ฅ: ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„๊ณผ ์ž…์ถœ๋ ฅ์žฅ์น˜์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ๊ณต๊ฐ„์„ ํ•˜๋‚˜์˜ ์ฃผ์†Œ๊ณต๊ฐ„์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๋ฐฉ๋ฒ•์ฆ‰, 1024๊ฐœ์˜ ์ฃผ์†Œ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ 1024๊ฐœ ์ „๋ถ€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์ด๋•Œ, 512๊ฐœ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ 512๊ฐœ๋Š” ์žฅ์น˜ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ ˆ์ง€..
์ธ๋„ค์ผ [Java] ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ "๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ" "๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ" ์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋ณ‘๋ ฌํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ์€ ์ŠคํŠธ๋ฆผ API์˜ ํ•œ ์ข…๋ฅ˜๋กœ,๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ฆ‰, ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋“ค์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ๋‹ค์ค‘์ฝ”์–ด(CPU ์ฝ”์–ด) ์‹œ์Šคํ…œ์—์„œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•˜๋ฉฐ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ์€ ๋‚ด๋ถ€์ ์œผ๋กœ Fork/Join ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•œ๋‹ค. Fork/Join ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ž‘์—…์„ ์ž‘์€ ์ž‘์—…๋“ค๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์ด๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ณ‘๋ ฌ ์ŠคํŠธ๋ฆผ์€ ์ž‘์—…์„ ๋” ์ž‘์€ ์ž‘์—… ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ์—์„œ..
์ธ๋„ค์ผ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ค‘์š”ํ•œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์˜๋„๋Œ€๋กœ ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ์—†๋Š๋‹ž ํ™•์ธํ•  ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค. ํ˜„์žฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์‹ค๋ฌด์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์‚ฌ์šฉ์€ ๋งค์šฐ ์ค‘์š”ํ•ด์กŒ๋‹ค. ์ฝ”๋“œ์˜ ๋™์ž‘์„ ๊ฒ€์ฆํ•˜๊ณ , ์œ ์ง€๋ณด์ˆ˜์—ํ•˜๊ธฐ์— ๋งค์šฐ ์ข‹๊ณ , ๊ฐœ๋ฐœ์ž ์ž์ฒด๊ฐ€ ๋ฌด์—‡์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉฐ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐœ๊ฒฌํ•ด ๋ถ€๋‹ด์„ ๋œ์–ด์ฃผ๋Š” ์žฅ์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜ ๋˜ํ•œ, ์‚ฌ์‹ค์ƒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋•Œ๋Š” ์–ด๋ ต๊ธฐ๋„ ํ•˜๊ณ , ์ด๊ฒŒ ๊ตณ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์ธ๊ฐ€? ์‹ถ์–ด ๋”ฑํžˆ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋งŽ์€ ๋„์›€์ด ๋จ์„ ๋Š๋ผ๊ณ  ๊ณต๋ถ€๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ฃผ๋กœ V๋ชจ๋ธ์„ ๋”ฐ๋ผ ์ƒ๊ฐ ํ•ด ๋ณผ ์ˆ˜ ์žˆ..
์ธ๋„ค์ผ [ํ˜ผ๊ณต์ปด์šด] Chapter 05-2 ๋ช…๋ น์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• ๋ช…๋ น์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• (ILP : Instruction - Level Parallelism) : ๋ช…๋ น์–ด๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์—ฌ CPU๋ฅผ ํ•œ์‹œ๋„ ์‰ฌ์ง€ ์•Š๊ณ  ์ž‘๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ILP ์˜ ์ข…๋ฅ˜ 1. ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹ 2. ์Šˆํผ์Šค์นผ๋ผ 3. ๋น„ ์ˆœ์ฐจ์  ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ธ [ ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ๊ณผ์ • ] 1. Instruction Fetch (๋ช…๋ น์–ด ์ธ์ถœ) 2. Instruction Decode (๋ช…๋ น์–ด ํ•ด์„) 3. Execute Instruction (๋ช…๋ น์–ด ์‹คํ–‰) 4. Write Back (๊ฒฐ๊ณผ ์ €์žฅ) [์ค‘์š”] : ๊ฐ™์€ ๋‹จ๊ณ„๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค๋ฉด CPU๋Š” ๊ฐ ๋‹จ๊ณ„๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, CPU๋Š” ํ•œ ๋ช…๋ น์–ด๋ฅผ '์ธ์ถœ' ํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ '์‹คํ–‰' ํ•  ์ˆ˜ ์žˆ๊ณ , '์‹คํ–‰' ํ•˜๋Š” ๋™์•ˆ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋ฅผ '์ €์žฅ' ํ• ..
์ธ๋„ค์ผ [Spring] ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์›๋ ฅ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ• Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณต์›๋ ฅ์„ ๋†’์—ฌ์•ผ ํ•˜๋Š” ์ด์œ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์›๋ ฅ์„ ๋†’์ด๋Š” ์ด์œ ๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์˜ ๊ฐœ์„ , ์‹œ์Šคํ…œ ์•ˆ์ „์„ฑ ๋ณด์žฅ, ๋น„์šฉ ์ ˆ๊ฐ, ๊ธฐ์—…์˜ ์‹ ๋ขฐ๋„ ์œ ์ง€ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค. 1. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์˜ ๊ฐœ์„  : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์›๋ ฅ์ด ๋†’์„์ˆ˜๋ก ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค ์ค‘๋‹จ์ด๋‚˜ ์žฅ์• ๋กœ ์ธํ•œ ๋ถˆํŽธ์„ ๊ฒฝํ—˜ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์ด ์•ˆ์ •์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ๋งŒ์กฑ๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์žฌ๋ฐฉ๋ฌธ๋ฅ ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. 2. ์‹œ์Šคํ…œ ์•ˆ์ „์„ฑ ๋ณด์žฅ : ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์‹œ ๋น ๋ฅด๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์€ ๋น„์ฆˆ๋‹ˆ์Šค ์—ฐ์†์„ฑ์„ ๋ณด์žฅํ•˜๋Š”๋ฐ ์ค‘์š”ํ•˜๋‹ค. ํŠนํžˆ ์˜จ๋ผ์ธ ๋น„์ฆˆ๋‹ˆ์Šค๋‚˜ ๊ธˆ์œต ์„œ๋น„์Šค์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ์˜ ๊ฐ€์šฉ์„ฑ์ด ์ค‘์š”ํ•œ ์—…์ข…์—์„œ๋Š” ์žฅ์• ์— ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์ด ๋น„์ฆˆ๋‹ˆ์Šค์˜ ์ƒ์กด๊ณผ ์ง๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค. 3. ๋น„์šฉ ์ ˆ๊ฐ : ์žฅ์• ๊ฐ€ ..
์ธ๋„ค์ผ [Java] hashCode()์™€ equals()๋ž€? Java๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ 'hashCode()' ์™€ 'equals()' ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ๋งŽ์ด ์ ‘ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋“ค์€ ๊ฐ์ฒด์˜ ๋™๋“ฑ์„ฑ ๋น„๊ต์™€ ํ•ด์‹œ ๋งต(HashMap) ๋“ฑ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ์—์„œ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๋ฉ”์†Œ๋“œ์ด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” hashCode()์™€ equals() ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. hashCode() Method hashCode() ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค. ๋จผ์ €, ํ•ด์‹œ์ฝ”๋“œ๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ž„์˜์˜ ๊ธธ์ด์˜ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๊ฐ’์ด๋‹ค. ์ด๋Š” hashCode() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ hashCode() ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด์˜ ํ•„๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ฃผ์š”..
์ธ๋„ค์ผ [Java] '๊นŠ์€ ๋ณต์‚ฌ'์™€ '์–•์€ ๋ณต์‚ฌ'๋ž€? ์˜ค๋Š˜ ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ ์ž๋ฐ”์—์„œ์˜ ๊นŠ์€ ๋ณต์‚ฌ ์™€ ์–•์€ ๋ณต์‚ฌ์ด๋‹ค. ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋•Œ JAVA์—์„œ ๊นŠ์€ ๋ณต์‚ฌ์™€ ์–•์€ ๋ณต์‚ฌ์— ๋Œ€ํ•ด ๋ฐฐ์› ์—ˆ๋‹ค. ์ด ์ฐจ์ด์ ์„ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ฆฌํ•ด๋‘๊ณ ์ž ํ•œ๋‹ค. Deep Copy vs Shallow Copy ๊นŠ์€๋ณต์‚ฌ (Deep Copy) : '์‹ค์ œ ๊ฐ’'์„ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ณต์‚ฌํ•œ๋‹ค. (ํž™ ์˜์—ญ) ์–•์€๋ณต์‚ฌ (Shallow Copy) : '์ฃผ์†Œ ๊ฐ’'์„ ๋ณต์‚ฌํ•œ๋‹ค. (์Šคํƒ์˜์—ญ) ์‚ฌ์‹ค์ƒ, ์ด๋ ‡๊ฒŒ๋งŒ ์„ค๋ช…ํ•˜๊ฒŒ ๋˜๋ฉด.. ์ดํ•ด๋ฅผ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด๋ณด์ž ์–•์€๋ณต์‚ฌ(Shallow Copy) class Person { private String name; private int age; public Person(S..
์ธ๋„ค์ผ [ํ˜ผ๊ณต์ปด์šด] Chapter 07-1 ๋‹ค์–‘ํ•œ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ ํ•˜๋“œ ๋””์Šคํฌ : ์ž๊ธฐ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜ (= ์ž๊ธฐ ๋””์Šคํฌ_magnetic disk) ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ ์žฅ์น˜๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—… ์„œ๋ฒ„์‹ค์— ์ž์ฃผ ์ถœ์ž…ํ•˜๋Š” ์ž‘์—… ํ•˜๋“œ ๋””์Šคํฌ ๊ตฌ์„ฑ ํ”Œ๋ž˜ํ„ฐ : ์‹ค์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ ์ž๊ธฐ ๋ฌผ์งˆ๋กœ ๋ฎ์—ฌ ์žˆ์–ด ์ˆ˜๋งŽ์€ N๊ทน๊ณผ S๊ทน์„ ์ €์žฅํ•œ๋‹ค. N๊ทน๊ณผ S๊ทน์€ 0๊ณผ 1์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ ์Šคํ•€๋“ค : ํ”Œ๋ž˜ํ„ฐ๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š” ๊ตฌ์„ฑ ์š”์†Œ RPM (Revolution Per Minute) : ์Šคํ•€๋“ค์ด ํ”Œ๋ž˜ํ„ฐ๋ฅผ ๋Œ๋ฆฌ๋Š” ์†๋„, ๋ถ„๋‹น ํšŒ์ „์ˆ˜ ex) RPM์ด 15,000์ธ ํ•˜๋“œ๋””์Šคํฌ๋Š” 1๋ถ„์— 15,000๋ฐ”ํ€ด๋ฅผ ํšŒ์ „ํ•˜๋Š” ํ•˜๋“œ ๋””์Šคํฌ ํ—ค๋“œ : ํ”Œ๋ž˜ํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ตฌ์„ฑ ์š”์†Œ ๋””์Šคํฌ ์•” : ํ—ค๋“œ๋ฅผ ์›ํ•˜๋Š” ์œ„์น˜๋กœ ์ด๋™์‹œํ‚ค๋Š” ๋ถ€ํ’ˆ ํ—ค๋“œ๋Š” ๋””์Šคํฌ ์•”์— ๋ถ€์ฐฉ๋˜์–ด ์žˆ๋‹ค ๐Ÿ’ก ํ•˜๋“œ ๋””์Šคํฌ๋Š”..
์ธ๋„ค์ผ SQL๊ณผ NoSQL์˜ ์ฐจ์ด๋Š”? SQL์˜ ์ข…๋ฅ˜๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ SQL , NoSQL ์„ ์ž์ฃผ ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ๋ณดํ†ต Spring์„ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” SQL์ธ MySQL์„, Node.js์—์„œ๋Š” NoSQL์ธ MongoDB ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด์ฒ˜๋Ÿผ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋”ฐ๋ผ ๋‹จ์ˆœํžˆ ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ •ํ•ด์ ธ์„œ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, SQL๊ณผ NoSQL์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์ž! SQL (๊ด€๊ณ„ํ˜• DB) ํ”ํžˆ, ์‹ ์ž…์ด๋ผ๋ฉด SQL์— ๋Œ€ํ•ด ๋จผ์ € ๊ณต๋ถ€ํ•ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ์ด์ฒ˜๋Ÿผ SQL์„ ์‚ฌ์šฉํ•˜๋ฉด RDBMS์—์„œ ๋ฐ์ดํ„ฐ์˜ CRUD๋ฅผ ํ• ์ˆ˜ ์žˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 1. ๋ฐ์ดํ„ฐ๋Š” ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ๋œ๋‹ค. 2. ๋ฐ์ดํ„ฐ๋Š” ์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ๋‹ค. ์™€ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. NoSQL(๋น„๊ด€๊ณ„ํ˜• DB) ์ด์— ๋น„ํ•ด NoSQL..
์ธ๋„ค์ผ JPA ์™€ Mybatis๋ž€ ๋ฌด์—‡์ธ๊ฐ€? / JPA์™€ Mybatis์˜ ์ฐจ์ด ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ธฐ์ˆ ์ด 'Mybatis' ์™€ 'JPA' ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์†์„ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด SQL Mapper ๊ธฐ์ˆ ๊ณผ, ORM(Object Relational Mapping) ๊ธฐ์ˆ ์„ ์ œ๊ณตํ•œ๋‹ค. SQL Mapper ๋Š” '๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฒด์— ๋งคํ•‘' ์‹œ์ผœ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ, ORM์€ ๊ฐ์ฒด์™€ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ '์ž๋™์œผ๋กœ ๋งคํ•‘' ์‹œ์ผœ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. SQL Mapper ๊ธฐ์ˆ ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด Mybatis ์ด๋ฉฐ, ORM ๊ธฐ์ˆ ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด JPA ์ด๋‹ค. ๐Ÿ“Œ JPA ๋ž€? (Java Persistence API) ์ž๋ฐ”์˜ ORM ๊ธฐ์ˆ ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” API์ด๋‹ค. ์ฆ‰, ์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ..