๐Ÿ’ป CS

ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! RAID(Reduntant Array of Independent Disks)๋ž€? RAID๋Š” ์ˆ˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋“ค์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ•˜๋“œ ๋””์Šคํฌ(HDD)๋‚˜ SSD๋ฅผ ๋งˆ์น˜ ํ•˜๋‚˜์˜ ์žฅ์น˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ž„ => ์ €๋ ดํ•˜๊ฑฐ๋‚˜ ๋…๋ฆฝ์ ์ธ ์—ฌ๋Ÿฌ ๋””์Šคํฌ๋ฅผ ์กฐํ•ฉํ•ด ๋‹จ์ผ ๋””์Šคํฌ ์ด์ƒ์˜ ํšจ์œจ์„ ๋‚ด๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Œ RAID ๊ตฌ์„ฑ ๋ฐฉ์‹ RAID 0 - ์ŠคํŠธ๋ผ์ดํ•‘ (Striping) ์›๋ฆฌ: ์—ฌ๋Ÿฌ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•˜๋Š” ๊ตฌ์„ฑ ๋ฐฉ์‹=> ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ํ•˜๋“œ ๋””์Šคํฌ๋Š” ๊ฐ ์žฅ์น˜์— ๋ฒˆ๊ฐˆ์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์žฅ์ : ์ฝ๊ธฐ/์“ฐ๊ธฐ ์„ฑ๋Šฅ ๊ทน๋Œ€ํ™”=> ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ..
ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜(Layered Architecture)๋ž€? ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜(Layered Architecture)๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ด€์‹ฌ์‚ฌ๋ณ„๋กœ ์—ฌ๋Ÿฌ ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ˆ˜์ง์ ์œผ๋กœ ๋ฐฐ์—ดํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•จ => ์—ฌ๊ธฐ์„œ ๊ด€์‹ฌ์‚ฌ๋Š” ์œ ์‚ฌํ•œ ์ฑ…์ž„๋“ค์„ ์˜๋ฏธ(ex. DB ์ ‘๊ทผ๊ณผ ๊ด€๋ จ๋œ ์ฑ…์ž„๋“ค์„ ํ•˜๋‚˜์˜ ๊ด€์‹ฌ์‚ฌ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ) ์ฆ‰, ๊ฐ ๊ณ„์ธต์— ์œ ์‚ฌํ•œ ์ฑ…์ž„(๊ด€์‹ฌ์‚ฌ)์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์ƒ์œ„ ๋ ˆ์ด์–ด์—์„œ ํ•˜์œ„ ๋ ˆ์ด์–ด๋กœ๋งŒ ์˜์กด์„ฑ(๋ฐฉํ–ฅ์„ฑ)์„ ๊ฐ€์ง ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜(Layered Architecture)์˜ ๊ตฌ์„ฑ ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์˜ ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์„ฑ์—๋Š” 3๊ฐ€์ง€ ๋ ˆ์ด์–ด๊ฐ€ ์กด์žฌํ•จ ํ‘œํ˜„ ๊ณ„์ธต(Present..
ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton Pattern)์ด๋ž€? ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton Pattern)์€ ์ƒ์„ฑ์ž๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ => ๊ฐ์ฒด๊ฐ€ ์ตœ์ดˆ๋กœ ์ƒ์„ฑ๋œ ์ดํ›„์— ์ƒ์„ฑ์ž๋‚˜ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ์กด์— ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•จ public class Singleton { private static final Singleton INSTANCE = new Singleton(); // ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์ œํ•œ private Singleton() { ... } public static Singleton getInstance() { ..
ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! ๋™์‹œ์„ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ๋Œ€ํ‘œ์ ์ธ ๋‘ ๊ฐ€์ง€๋Š” ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹๊ณผ ์ฝ”๋ฃจํ‹ด ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ž„=> ํŠนํžˆ Kotlin ํ™˜๊ฒฝ์—์„œ๋Š” ์ฝ”๋ฃจํ‹ด์ด ์ ์  ๋” ๋งŽ์ด ์ฑ„ํƒ๋˜๊ณ  ์žˆ์Œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์Šค๋ ˆ๋“œ ์Šค๋ ˆ๋“œ๋Š” ์ƒ์„ฑ๋  ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ๊ณ ์ • ํฌ๊ธฐ์˜ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•จ(JVM์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 1MB ์ •๋„์˜ ์Šคํƒ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง) ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๊ฐ€ 1MB๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, 1000๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์•ฝ 1GB์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•˜๊ฒŒ๋จ ์ฝ”๋ฃจํ‹ด ์ฝ”๋ฃจํ‹ด์€ ๋ณ„๋„์˜ ์Šคํƒ์„ ๊ฐ–์ง€ ์•Š์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํ›จ์”ฌ ์ž‘์Œ๋‹จ์ง€ ๋ช‡ KB ์ˆ˜์ค€์˜ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—..
ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! ์‹œ์ž‘ํ•˜๊ธฐ์ „์— ์›น์€ ๊ธฐ๋ณธ์ ์œผ๋กœ stateless(๊ธฐ์–ต์„ ๋ชปํ•˜๋Š”) ๊ตฌ์กฐ์ด๊ธฐ์— ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ๋‹ค๊ณ  ํ•ด๋„, ๋‹ค์Œ ์š”์ฒญ์—์„œ๋Š” "๋ˆ„๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ๋Š”์ง€" ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•จ => ๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ๊ฒŒ ์ฟ ํ‚ค์™€ ์„ธ์…˜ (์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ) ์ฟ ํ‚ค(Cookie)๋ž€? ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์œผ๋กœ ์›น ์„œ๋ฒ„๊ฐ€ "์ด ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•ด์ค˜" ๋ผ๊ณ  ํ•˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ทธ๊ฑธ ์ €์žฅํ•ด ๋’€๋‹ค๊ฐ€ ๋‹ค์Œ์š”์ฒญ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์„œ๋ฒ„์— ๋ณด๋ƒ„ ์ฟ ํ‚ค์˜ ํŠน์ง• ์ €์žฅ ์œ„์น˜ : ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ๋จ๋ณด์•ˆ์„ฑ : ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜์ • ๊ฐ€๋Šฅํ•ด์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด ์ €์žฅ์€ ์œ„ํ—˜ => ํด..
ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! ์‹œ์ž‘ํ•˜๊ธฐ์ „์— "์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์™œ CPU์—์„œ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋Š” ๊ฑธ๊นŒ?" ์— ๋Œ€ํ•œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹์ด๋ผ๋Š” CPU์˜ ๋™์ž‘ ์›๋ฆฌ ๋•๋ถ„์ž„ => ๋ฐฑ์—”๋“œ๊ด€๋ จ ์—…๋ฌด๋ฅผ ํ•œ๋‹ค๋ฉด ๋†’์€ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ ์œ„ํ•ด ๋กœ์šฐ๋ ˆ๋ฒจ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํŠนํžˆ ์ค‘์š”!! ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹์ด๋ž€? ๋ช…๋ น์–ด ํŒŒ์ดํ”„๋ผ์ด๋‹(instruction pipelining) ์€ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๋ฅผ ๋™์‹œ์— ๊ฒน์ณ์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ž„ => ์ฆ‰, ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ, ๋‹ค์Œ ๋ช…๋ น์–ด์˜ ์ผ๋ถ€๋„ ๋ฏธ๋ฆฌ ์ˆ˜ํ–‰ํ•ด ์ „์ฒด ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ ์ „..
ยท๐Ÿ’ป CS
๋งค์ผ๋ฉ”์ผ ๋ฐฑ์—”๋“œ ์งˆ๋ฌธ์„ ์ฐธ๊ณ ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค..! ์ฐธ์กฐ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋ž€? ์ฐธ์กฐ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ(Locality of reference)๋Š” CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค๋Š” ์›๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์ฃผ๋กœ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ์ค‘๋ฅ ์„ ๋†’์—ฌ CPU์˜ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ์ด์šฉ๋จ => ํฌ๊ฒŒ ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ๊ณผ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ์ด ์กด์žฌํ•จ ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ (Temporal locality) ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ(Temporal locality) ์ด๋ž€ CPU๋Š” ์ตœ๊ทผ์— ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊นŒ์šด ์‹œ์ ์— ๋‹ค์‹œ ์ ‘๊ทผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ์„ฑ์งˆ์ž„ int sum = 0;for (int i = 0; i ์—ฌ๊ธฐ์„œ array[10]์€ ..
ยท๐Ÿ’ป CS
Go vs Golang Go? Golang? ์ด 2๊ฐœ๋Š” ๋‹ค๋ฅธ๊ฑด๊ฐ€?Go๋Š” 2009๋…„ ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ณต์‹ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๊ณต์‹ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋ฉด golang.org์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” go.org ๊ฐ€์ด๋ฏธ ๋‹ค๋ฅธ ๋ฐ์—์„œ ์“ฐ์ด๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, golang.org ๋ผ๋Š” ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๊ณ  ๊ทธ๋ž˜์„œ golang์ด๋ผ๋Š” ์ด๋ฆ„์ด ๋„๋ฆฌ ํผ์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.๋˜, 'go'๋Š” ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ๋„ˆ๋ฌด ํ”ํ•œ ๋‹จ์–ด๋ผ ๊ฒ€์ƒ‰์ด ์–ด๋ ค์› ๊ณ  ๊ฒ€์ƒ‰ ์‹œ 'golang'์„ ์ž…๋ ฅํ•˜๋ฉด ํ›จ์”ฌ ์ •ํ™•ํ•˜๊ฒŒ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.๊ทธ๋ž˜์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ƒํƒœ๊ณ„์—์„œ๋„ Golang์ด๋ผ๋Š” ์ด๋ฆ„์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ตณ์–ด์ง€๋ฉฐ Go์™€ Golang 2๊ฐœ์˜ ์ด๋ฆ„์ด ๋ณ‘์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Go ์–ธ์–ด(Golang)์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ Go ์–ธ์–ด๋Š” 2007๋…„ G..
ยท๐Ÿ’ป CS
1. Java ์ž…์ถœ๋ ฅ์ด๋ž€? Java์˜ ์ž…์ถœ๋ ฅ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ด€์ ์œผ๋กœ ๋‚˜๋‰จ ์ž…๋ ฅ(Input) : ์™ธ๋ถ€(ํ‚ค๋ณด๋“œ, ํŒŒ์ผ ๋“ฑ) -> ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์ถœ๋ ฅ(Output) : ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€ -> ์™ธ๋ถ€ (์ฝ˜์†”, ํŒŒ์ผ ๋“ฑ) ๊ตฌ๋ถ„๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ๋ฌธ์ž ์ŠคํŠธ๋ฆผ๋Œ€ํ‘œ ํด๋ž˜์ŠคInputStream, OutputStreamReader, Writer์ฒ˜๋ฆฌ ๋‹จ์œ„1 byte (์ด๋ฏธ์ง€, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋“ฑ)2 byte ๋ฌธ์ž (ํ…์ŠคํŠธ ์œ„์ฃผ)์˜ˆ์‹œBufferedInputStream ๋“ฑBufferedReader ๋“ฑ ์œ„์™€ ๊ฐ™์ด ์ž…์ถœ๋ ฅ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ๋‹จ์œ„์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋จ 2. ํ‘œ์ค€ ์ž…์ถœ๋ ฅ (System.in, System.out) ํ‘œ์ค€ ์ž…๋ ฅ System.in // InputStream (๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ) ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ์˜๋ฏธInputStrea..
ยท๐Ÿ’ป CS
Java Collections Framework๋ž€? Java Collections Framework (JCF)๋Š” Java์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ๊ฒ€์ƒ‰, ์ •๋ ฌ, ์‚ญ์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ํ™”๋œ ์ž๋ฃŒ๊ตฌ์กฐ(๋ฐ์ดํ„ฐ ๊ตฌ์กฐ)์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ง‘ํ•ฉ์ž„ ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ์„ค๊ณ„ JCF๋Š” ๊ณตํ†ต๋œ ๋™์ž‘์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค(Collection, Map)์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋Š”๋ฐ ๊ฐ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค (ArrayList, Hashset, HashMap ๋“ฑ) ์œผ๋กœ ๊ตฌ์„ฑ๋จ List list = new ArrayList();list = new LinkedList(); // ๊ตฌํ˜„์ฒด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ => ๋‹คํ˜•์„ฑ(polymorphism)์ด ์ง€์›๋˜๋ฏ€๋กœ ๊ตฌํ˜„์ฒด ๊ต์ฒด๊ฐ€ ์‰ฌ์›€ 2๊ฐœ์˜ ์ฃผ์š” ๋ฃจํŠธ ์ธํ„ฐํŽ˜์ด์Šค ์œ„ ๊ทธ๋ฆผ์—์„œ์ฒ˜๋Ÿผ ํฌ๊ฒŒ Collection ..
ยท๐Ÿ’ป CS
Kotlin์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ ๋ฐ ํŠน์ง•Kotlin์€ JetBrains์—์„œ ๊ฐœ๋ฐœํ•œ ์ •์  ํƒ€์ž…์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, 2011๋…„์— ์ฒซ ๊ณต๊ฐœ๋˜์—ˆ๊ณ  2016๋…„ 1.0 ๋ฒ„์ „์ด ์ •์‹ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ •์  ํƒ€์ž…(Static Typing)์ด๋ž€?ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํƒ€์ž…์ด๋ž€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ๊ฐ’์ด ์–ด๋–ค ์ข…๋ฅ˜์ธ์ง€(ex. Int, String, Boolean ๋“ฑ)๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ์ •์  ํƒ€์ž… ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ ์‹œ์ ์— ๋ณ€์ˆ˜๋‚˜ ํ‘œํ˜„์‹์˜ ํƒ€์ž…์ด ์ •ํ•ด์ง€๊ณ  ๊ฒ€์‚ฌ๋˜๋Š” ์–ธ์–ด์ด๋ฉฐ ๋™์  ํƒ€์ž… ์–ธ์–ด๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ํƒ€์ž…์ด ๊ฒฐ์ •๋˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. JetBrains๋Š” IntelliJ IDEA์™€ ๊ฐ™์€ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ํšŒ์‚ฌ๋กœ, ๋‚ด๋ถ€์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ Java๋กœ ์ž‘์„ฑํ•ด์™”์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Java๋Š” ์ˆ˜์‹ญ ๋…„์˜ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ง„ ๋งŒํผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์„ ์•ˆ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค..
ยท๐Ÿ’ป CS
์ด ๊ธ€์€ ๊ตญ๋ฏผ๋Œ€ํ•™๊ต ๊ฐ•์Šน์‹ ๊ต์ˆ˜๋‹˜์˜ 'ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๋ก ' ์ˆ˜์—…์„ ํ† ๋Œ€๋กœ๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 4.1 ์–ธ์–ด ๊ตฌ๋ฌธ ๊ณ ๊ธ‰์–ธ์–ด๋ฅผ ์ •์˜ํ•  ๋•Œ๋Š” ๋‘ ๊ฐ€์ง€ ์ธก๋ฉด์—์„œ ์„ค๋ช…์ด ํ•„์š”ํ•จ๊ตฌ๋ฌธ : ๋ฌธ๋ฒ•์ ์ธ ํ˜•์‹ (Syntax)์˜๋ฏธ : ๋™์ž‘์˜ ์˜๋ฏธ (Semantics)์‚ฌ๋žŒ์ด ์ฝ๋Š” ์ž์—ฐ์–ด๋กœ ์„ค๋ช…ํ•˜๋Š” ์ž์—ฐ์–ด ์ •์˜์™€ ์ˆ˜ํ•™์  ๊ธฐํ˜ธ๋‚˜ ํ˜•์‹ ์–ธ์–ด(BNF ๋“ฑ) ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๋Š” ํ˜•์‹ ์ •์˜๊ฐ€ ์žˆ์Œ=> ๊ตฌ๋ฌธ ํ˜•์‹ ์ •์˜์˜ ์ข…๋ฅ˜์—๋Š” BNF, EBNF, ๊ตฌ๋ฌธ ๋„ํ‘œ ๋“ฑ์ด ์žˆ์Œ ๊ณ ๊ธ‰ ์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ€์ƒ์˜ ๊ณ ๊ธ‰ ์–ธ์–ด ์ปดํ“จํ„ฐ๋กœ ๊ฐ„์ฃผํ•จ=> ์ฆ‰, ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ณด๋Š” ๊ด€์ ์ด ๋‹ค๋ฆ„ 4.1.1 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์–ดํœ˜๊ตฌ์กฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๋ฌธ์ž ์ง‘ํ•ฉ์€ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž 26๊ฐœ(A - Z) + ์•„๋ผ๋น„์•„ ์ˆซ์ž 10๊ฐœ (0 - 9) ..