Programming 33

F005 - Stack & Heap Memory

โœ๏ธ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๊ณต๋ถ€ํ•˜๊ณ  ๋‚˜๋‹ˆ Stack๊ณผ Heap ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋„ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ์ฒซ ๋ฉ˜ํ† ๋ง ์‹œ๊ฐ„์— ์ด ๋‘˜์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ œ๋Œ€๋กœ ํ•˜์ง€ ๋ชปํ•ด ๋ณต์Šต์„ ํ•˜๊ธด ํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ๋˜, ์‹ค๋ฌด์—์„œ ์ด์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์ œ๋Œ€๋กœ ์žกํžˆ์ง€ ์•Š์•„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹ค์ˆ˜๋ฅผ ๊ฒฝํ—˜ํ•œ ์ ์ด ์žˆ๋‹ค. ์•ž์œผ๋กœ ์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ๋‹ค์‹œ ๋˜ํ’€์ดํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๋Œ€๋žต์ ์œผ๋กœ๋งŒ ํŒŒ์•…ํ•˜๊ณ  ์žˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋ณด์ž! Stack Memory ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๊ฐ’๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋œ๋‹ค. ์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ ํ• ๋‹น๋œ Heap Memory์˜ ์ฐธ์กฐ๊ฐ’๊ณผ ํ• ๋‹น๋œ๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๊ฐ์ž์˜ Stack Memory ์˜์—ญ์„ ๊ฐ€์ง„๋‹ค. ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ณณ์˜ ์Šค์ฝ”ํ”„๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์‚ฌ๋ผ์ง„๋‹ค. public class StackMemoryTest ..

Programming/Java 2021.05.08

F004 - Reference Type

โœ๏ธ ๋“œ๋””์–ด ์ฒซ ๋ฉ˜ํ† ๋ง์„ ์‹œ์ž‘ํ–ˆ๋‹ค! ์—ฌ๋Ÿฌ ๋Œ€ํ™”๊ฐ€ ์˜ค๊ฐ”์ง€๋งŒ, ๊ฐ€์žฅ ์ž์‹  ์—†์—ˆ๋˜ ์ฐธ์กฐ ํƒ€์ž…๊ณผ ํ•ด๋‹น ํƒ€์ž…์ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์–ด๋–ป๊ฒŒ ์šด์šฉ๋˜๋Š”์ง€ ๊ธฐ๋กํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์™œ๋ƒ๋ฉด ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ํ•ด๋‹น ์งˆ๋ฌธ์„ ์ฃผ์…จ๋Š”๋ฐ ๋Œ€๋‹ต์„ ์ž˜๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ๋˜์งš์–ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ ค๊ณ  ํ•œ๋‹ค. ์ฐธ์กฐ ์ž๋ฃŒํ˜• ์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ ์•ž์„œ ๊ณต๋ถ€ํ•œ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ž๋ฃŒํ˜•์„ ๋œปํ•œ๋‹ค. ๋‹ค๋งŒ String ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Literal ํ˜•ํƒœ๋กœ ๋ณ€์ˆ˜๊ฐ’์„ ์„ ์–ธ ํ•  ์ˆ˜ ์žˆ๊ณ , + ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์ด๋‹ค. ๋ชจ๋“  ์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ java.lang.Object ๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์—๋Š” Annotation(@์ฃผ์„) Arrays(๋ฐฐ์—ด) Class Enum Interface ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ฐธ์กฐ ์ž๋ฃŒํ˜•๊ณผ ๊ธฐ..

Programming/Java 2021.05.08

F003 - Access Modifier

ํ‰์†Œ์— ์“ฐ๋˜ ๊ฒƒ๋งŒ ์“ฐ๋˜ ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์—ด์‹ฌํžˆ ์ผ๋‹ค ์ง€์› ๋‹ค ํ•˜๋ฉฐ ๊ฐœ๋ฐœ ํ–ˆ์ง€๋งŒ, ์ •์ž‘ ๊ฐ๊ฐ์˜ ์˜๋ฏธ๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๊ฐœ๋ฐœํ–ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ทธ๋Ÿฐ ๊ณผ๊ฑฐ์˜ ๋‚˜๋ฅผ ๋ฐ˜์„ฑํ•˜๊ณ , ์ ‘๊ทผ ์ œ์–ด์ž์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด์„œ ์ด๋ฅผ ์ ์žฌ์ ์†Œ์— ํ™œ์šฉํ•˜์—ฌ ๋” ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ ์ž ๊ธฐ๋กํ•œ๋‹ค. ์ ‘๊ทผ ์ œ์–ด์ž ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค์— ์ ์šฉํ•˜์—ฌ ํ•ด๋‹น ์š”์†Œ๋“ค์— ์–ผ๋งˆ๋งŒํผ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ์ง€์ •ํ•œ๋‹ค. ์ฒ˜์Œ์—” public์œผ๋กœ ์ง€์ •ํ•ด๋†“์œผ๋ฉด ์–ด๋””์„œ๋“  ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ๋ชจ๋“  ์š”์†Œ๋ฅผ public์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฑฐ ์•„๋ƒ? ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋˜ ์‹œ์ ˆ์ด ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์กฐ๊ธˆ์”ฉ ๋ฐฐ์›Œ๊ฐ€๋ฉด์„œ ์ด๋Ÿฌํ•œ ์ƒ๊ฐ์€ ์ •๋ง ์ดˆ๋ณด๋ผ์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ๊ฐํ•œ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋Š๊ผˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋” ์–ด๋ ต๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด..

Programming/Java 2021.05.06

F002 - Primitive Type

๊ธฐ์ดˆ๋ถ€ํ„ฐ ๋‹ค์ง€๊ธฐ ์˜ค๋Š˜์€ ์˜ˆ์Šต 2์ผ์ฐจ. ์ฑ…์„ ์ฐฌ์ฐฌํžˆ ์ฝ์–ด๋ณด๋ฉฐ ๋“œ๋””์–ด ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ฒŒ ๋๋‹ค. ํ˜ผ๊ณต์ž๋กœ ๊ณต๋ถ€ํ•  ๋•Œ๋Š” ์ฒ˜์Œ์ด๋‹ˆ๊นŒ ๋Œ€์ถฉ ํ›‘๊ณ  ๊ฐ€์•ผ์ง€! ๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ, ๋ฐฑ์„ ์žฅ๋‹˜ ์Šคํ„ฐ๋””์—์„œ๋Š” ๋‚˜๋„ ๋‚จ๋“ค์ฒ˜๋Ÿผ ๊ณ ๊ธ‰์ง€๊ณ  ๋ฉ‹์ง€๊ฒŒ ์ •๋ฆฌํ•ด๋ด์•ผ์ง€ ํ•˜๋Š” ์ƒ๊ฐ์œผ๋กœ ์ž„ํ–ˆ๋‹ค. ๊ฒฐ๊ตญ์— ๋‚ด๊ฒŒ ๋Œ์•„์˜ค๋Š” ๊ฒƒ์€ ํ•˜๋‚˜๋„ ์—†์—ˆ๋‹ค. byte ๋Š” ์™œ ์ตœ๋Œ€๊ฐ’์ด 255๊ฐ€ ์•„๋‹ˆ๋ผ 127์ธ์ง€ ์ด์ œ์„œ์•ผ ์•Œ๊ฒŒ๋œ ์…ˆ์ด๋‹ค. ๋Šฆ๊ฒŒ๋ผ๋„ ์•Œ๊ฒŒ๋˜์—ˆ์œผ๋‹ˆ ๋‹คํ–‰์ด์ง€๋งŒ ์žŠ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ์Šค์Šค๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์—๋Š” ์ด 8 ๊ฐ€์ง€์˜ ์ž๋ฃŒํ˜•์ด ์กด์žฌํ•œ๋‹ค. ๋…ผ๋ฆฌํ˜• boolean ์ •์ˆ˜ํ˜• byte char short int long ์†Œ์ˆ˜ํ˜• float double ๊ฐ ํƒ€์ž…์€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ, ๋…ผ๋ฆฌํ˜•์ธ boolean ํƒ€์ž…์€ ..

Programming/Java 2021.05.06

F001 - psvm

์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐฌ์ฐฌํžˆ F-Lab ๋ฉ˜ํ† ๋ง ์‹œ์ž‘ ์ „, ์ž๋ฐ”์˜ ์‹  ์˜ˆ์Šต ์‹œ๊ฐ„์„ ๊ฐ€์ง€๊ธฐ๋กœ ํ–ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ๋Œ€๋ง์˜ ์ฒซ ๋‚ ์ด๋‹ค. ์ฒ˜์Œ ํ˜ผ๊ณต์ž๋กœ Java ๋…ํ•™ ํ–ˆ์„ ๋•Œ์˜ ๋งˆ์Œ๊ฐ€์ง์œผ๋กœ ์‚ฐ๋œปํ•˜๊ฒŒ ์‹œ์ž‘ํ•ด๋ณด์ž! Java Version : Java 11 OpenJDK OS : Mac OS Big Sur 11.1 Utils : iTerm, oh-my-zsh, vi, Sublime Text ๋“ฑ public static void main(String[] args) {} ๋‚˜๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ MSG ๊ฐ™์€ IDE์˜ ๋ง›์— ํ‘น ๋น ์ ธ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ Java๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์›๋ฆฌ, ์‹ฌ์ง€์–ด ์ฝ˜์†”์—์„œ ์–ด๋–ป๊ฒŒ Java ํŒŒ์ผ์„ ์ปดํŒŒ์ผ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์žŠ๊ณ  ์‚ด์•˜๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด IDE๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Java ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ๋ช…๋ น์–ด๋กœ ์ง์ ‘ ํ•ด๋‹น ํŒŒ์ผ..

Programming/Java 2021.05.06

TIL_W02 | Variable, Primitive / Reference Type, Literal, Array

Variable ๋ณ€์ˆ˜๋ž€ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ๋ฒˆ์ง€์— ๋ถ™์ด๋Š” ์ด๋ฆ„์ด๋‹ค. Java์˜ ๋ณ€์ˆ˜๋Š” ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ๋งŒ์•ฝ int ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์— boolean ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ •์ˆ˜ ํƒ€์ž…(int, long)์—๋Š” ์ •์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ, ์‹ค์ˆ˜ ํƒ€์ž…(float, double)์—๋Š” ์‹ค์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. Declaring Variables / Initializing Variables ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ์ดํ„ฐ ํƒ€์ž…(๊ธฐ๋ณธํ˜• / ์ฐธ์กฐํ˜•) ์„ ์–ธ ๋ณ€์ˆ˜๋ช… ์„ ์–ธ // ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋งŒ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ int num1; boolean check1; // ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ int num2, num3, num4; boolean check2, ch..

Programming/Java 2020.12.15

TIL_W01 | JVM, Bytecode, JDK, JRE, JIT Compiler

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ Java๋ฅผ ๊ตญ๋น„๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ•ด๋‹น ์–ธ์–ด์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋” ํƒ„ํƒ„ํžˆ ํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ๋ชฉํ‘œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ•˜๋Š˜๋„ ์•Œ์•˜๋Š”์ง€ 2020๋…„์ด ๋๋‚˜๊ธฐ ์ „์— ๋ฐฑ๊ธฐ์„ ๋‹˜๊ป˜์„œ ์šด์˜ํ•˜๋Š” Online Java Study์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ์˜ค๋žœ ๊ธฐ๊ฐ„ ๊นŒ๋จน๊ณ  ์ง€๋‚ด๋˜ Java ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋” ํƒ„ํƒ„ํžˆ ํ•˜๊ณ , ์•Œ์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„์„ ์ฑ„์šฐ๋Š” ์‹œ๊ฐ„์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๊พธ์ค€ํžˆ ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค. Java Compile Structure Java๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ์„œ, ์–ด๋– ํ•œ ์šด์˜์ฒด์ œ์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. Java File Build .java → Java Compiler(javac) → .class Java Compiler(javac)๊ฐ€ .java ํ™•์žฅ์ž ํŒŒ์ผ์„ JVM(Java Virtu..

Programming/Java 2020.12.14

Javascript ์ดํ•ดํ•˜๊ธฐ - Prototype / Class

์•Œ์•„๋‘๋ฉด ์ข‹์€ Javascript ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์€ ๋Œ€๋ถ€๋ถ„ Ajax ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž์—ฐ์Šค๋ ˆ Javascript๋ฅผ ์ ‘ํ•  ๊ธฐํšŒ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ, ์ด๋ฒˆ์— Node.js ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋Š๊ผˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ๋งŒ๋‚œ Javascript๋Š” ์šฐ์ฃผ ๋จผ์ง€๋ณด๋‹ค ์ž‘์€ ์กด์žฌ๋ผ๋Š” ๊ฒƒ์„.. Prototype ํ†บ์•„๋ณด๊ธฐ Prototype ์€ Class ์— ๋Œ€ํ•œ ๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋‚˜๋Š” ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” Java ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•ด์„œ Javascript์˜ Class ๋ฌธ๋ฒ•๋„ ๊ธˆ๋ฐฉ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ „ํ˜€ ์•„๋‹ˆ์—ˆ๋‹ค. Javascript๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด๋กœ์จ, Class ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๋ณด๊ธฐ..

Programming/Node.js 2020.10.05

Node.js ์ดํ•ดํ•˜๊ธฐ - ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ Javascript ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ด๋‹ค. Node.js ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•œ ์ง€ 3์ผ ์ฐจ์ด๋‹ค. ์•ž์„œ ๊ณต๋ถ€ํ•œ ๋น„๋™๊ธฐ ๋…ผ ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธ๊ณผ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด Node.js ๊ฐ€ ์–ด๋–ค ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, ์œ„์˜ ๋‘ ๋ถ€๋ถ„์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ Javascript ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ผ๋Š” ๋ง์ด ๊ต‰์žฅํžˆ ๋งŽ์ด ๋‚˜์™”๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋Š” ๋ญ๊ณ , ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€์„œ ์Šค๋ ˆ๋“œ์˜ ์ •์˜๋Š” ๋ฌด์—‡์ผ๊นŒ? ์˜ค๋Š˜์€ ๊ทธ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ ค๊ณ  ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ? ์š”์ฆ˜ ์ธํ„ฐ๋„ท ๋ฐˆ์œผ๋กœ ๋– ๋„๋Š” ์‚ฌ์ง„ ํ•œ ์žฅ์ด ์žˆ๋‹ค. ์œ„์˜ ์‚ฌ์ง„์—์„œ ๋…ธ์˜ˆ๋ผ๋Š” ์˜ˆ๊ฐ€ ์ข€ ๋งž์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์Šค๋ ˆ๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค? ํ”„๋กœ์„ธ์Šค๋ผ๋Š” ๊ฒƒ์€..

Programming/Node.js 2020.09.27

Node.js ์ดํ•ดํ•˜๊ธฐ - ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋งŽ์€ ๋น„๋™๊ธฐ๋“ค์„ ์–ด๋– ํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋Š”๋ฐ, ์™œ ๋น„๋™๊ธฐ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ• ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ๊ณผ์ •์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„๊นŒ? ์–ด์ œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด, Node.js ๋Š” V8 ์—”์ง„๊ณผ libuv๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , libuv๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ, ๋น„๋™๊ธฐ ๋…ผ ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ใ„ดใ„ดใ…ˆํ•œ๋‹ค. ์ด๋ฒคํŠธ? ์ด๋ฒคํŠธ๋Š” ์‹œ์Šคํ…œ ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์ƒํƒœ์˜ ๋ณ€ํ™”๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด๋ฒคํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ, ๋งˆ์šฐ์Šค์˜ ์›€์ง์ž„, ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด๋‚˜ ์›น ํŽ˜์ด์ง€์˜ ํŠน์ • ์˜์—ญ์œผ๋กœ์˜ ์ด๋™ ๋“ฑ ์™ธ๋ถ€์˜ ํ™˜๊ฒฝ์— ์˜ํ•ด ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ์‹œ์Šคํ…œ์— ์˜ํ•ด ๋ฐœ..

Programming/Node.js 2020.09.26