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

๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ63

[ch.15] ํ‘œ์ค€์ž…์ถœ๋ ฅ, ์ง๋ ฌํ™” ํ‘œ์ค€์ž…์ถœ๋ ฅ ๊ธฐ๋ณธ์ž…์ถœ๋ ฅ(BIOS), ํ•ญ์ƒ READY ์ฝ˜์†”์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ+ ์ฝ˜์†”๋กœ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ I/O๋ฅผ ์œ„ํ•œ ์ž…์ถœ๋ ฅ์ŠคํŠธ๋ฆผ in / out / err Systemํด๋ž˜์Šค์— ์„ ์–ธ๋œ ํด๋ž˜์Šค๋ณ€์ˆ˜(static๋ณ€์ˆ˜). ์„ ์–ธ๋ถ€๋ถ„์—๋Š” InputStream, PrintStream์ด ์ ํ˜€์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” BufferedInputStream, BufferedOutputStream ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•จ. ์ฝ˜์†” ์ž…๋ ฅ์€ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. ๊ทธ๋ž˜์„œ Backspace ํ‚ค๋ฅผ ์ด์šฉํ•œ ํŽธ์ง‘์ด ๊ฐ€๋Šฅ. ํ‘œ์ค€์ž…์ถœ๋ ฅ์˜ ๋Œ€์ƒ๋ณ€๊ฒฝ setOut( ), setErr( ), setIn( ) ๋‹ค๋ฅธ ์ž…์ถœ๋ ฅ ๋Œ€์ƒ์œผ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•จ. RandomAccessFile ํด๋ž˜์Šค ์ด๋ฆ„์˜ ์˜๋ฏธ: ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ํŒŒ์ผ์„ ๋ฌด์ž‘์œ„(Rando.. 2023. 11. 21.
[ch.15] ์ž…์ถœ๋ ฅ I/O - ๋ฌธ์ž๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ ๋ฌธ์ž๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ ๋ฌธ์ž๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์˜ ์กฐ์ƒ ๋ฐ”์ดํŠธ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์˜ ์กฐ์ƒ์ด InputStream/ OutputStream์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฌธ์ž๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์—๋Š” Reader/Writer๊ฐ€ ์กฐ์ƒ ์—ญํ• ์„ ํ•จ. byte๋ฐฐ์—ด ๋Œ€์‹  char๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•จ. ๋ฐ”์ดํŠธ๊ธฐ๋ฐ˜ : 1byte ๋ฌธ์ž๊ธฐ๋ฐ˜ : 2byte(char) +์ธ์ฝ”๋”ฉ ์—ฌ๋Ÿฌ์ข…๋ฅ˜์˜ ์ธ์ฝ”๋”ฉ/์ž๋ฐ”์˜ UTF-16๋ณ€ํ™˜ ์ž๋™์ฒ˜๋ฆฌ File R/W ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ํŒŒ์ผ์— ์“ฐ๋Š”๋ฐ ์‚ฌ์šฉํ•จ Piped R/W ์“ธ์ผ ๋ณ„๋กœ ์—†์Œ ์“ฐ๋ ˆ๋“œ๊ฐ•์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•จ. ์ž…๋ ฅ์ŠคํŠธ๋ฆผ&์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์„ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ โ‘ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ โ‘ก์–ด๋Š ํ•œ์ชฝ ์“ฐ๋ ˆ๋“œ์—์„œ connect( )๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ž…์ถœ๋ ฅ ์—ฐ๊ฒฐ โ‘ข์ž…์ถœ๋ ฅ ํ›„ ํ•œ์ชฝ ์ŠคํŠธ๋ฆผ๋งŒ ๋‹ซ์•„๋„ ๋‚˜๋จธ์ง€ ์ž๋™๋‹ซํž˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— .. 2023. 11. 21.
[ch.15] ์ž…์ถœ๋ ฅ I/O - ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ ByteArray I/O ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ. ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ณณ์— ์ž…์ถœ๋ ฅ ํ•˜๊ธฐ ์ „์— ์ž„์‹œ๋กœ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์— ์‚ฌ์šฉํ•จ. ์‚ฌ์šฉํ•˜๋Š” ์ž์›์€ ์˜ค์ง ๋ฉ”๋ชจ๋ฆฌ์ž„. GC์— ์˜ํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์ž์›์ด ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ close()์‚ฌ์šฉ X. ํ•œ๋ฒˆ์— 1byte ์ฝ๊ณ ์“ฐ๊ธฐ๋งŒ ํ•ด์„œ ์ž‘์—…ํšจ์œจ์ด ๋–จ์–ด์ง. “๋ฐฐ์—ด”์ด์šฉ์‹œ ์ž…์ถœ๋ ฅ ์ž‘์—…ํšจ์œจ์ด ๋†’์•„์ง. read( )๋‚˜ write( )๊ฐ€ IOException์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— try-catch๋ฌธ์œผ๋กœ ๊ฐ์‹ธ์คŒ. available( ): ํ•ด๋‹น ์Šคํฌ๋ฆผ์—์„œ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ์˜ ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ์ •ํ™•ํ•œ๊ฐ’์€ X. File I/O ํŒŒ์ผ์— ์ž…์ถœ๋ ฅ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ. ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋งŽ์ด ์‚ฌ์šฉํ•จ. ํ…์ŠคํŠธํŒŒ์ผ์€ ๋ฌธ์ž๊ธฐ๋ฐ˜ ์Šค.. 2023. 11. 21.
[์Šคํ”„๋ง๋ถ€ํŠธ ํ€ต์Šคํƒ€ํŠธ] ch.1 ์Šคํ”„๋ง๋ถ€ํŠธ ๋“ฑ์žฅ ๋ฐ ํ€ต์Šคํƒ€ํŠธ ์Šคํ”„๋ง๋ถ€ํŠธ ๊ฐ•์˜ ๋“ฃ๊ธฐ ์ „ ์ „์ฒด ํ๋ฆ„์„ ์žก๊ณ ์ž ์ฑ… ํ•œ ๋ฒˆ ํ›‘๊ณ  ๊ฐ•์˜ ๋“ฃ๊ธฐ๋กœ ํ•จ โ€‹ โ–ถ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ๋“ฑ์žฅ ์Šคํ”„๋ง๋ถ€ํŠธ : ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ์ •๋„๋กœ ์ดํ•ดํ•˜๊ธฐ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ web Framwork โ‘ RoR (๊ฒฝ๋Ÿ‰) Ruby๋กœ ๋งŒ๋“ฆ โ‘กFlask&Djang (๊ฒฝ๋Ÿ‰) โ‘ขNode.js&Nest.js (๊ฒฝ๋Ÿ‰) โ‘ฃSpring : Enterprise, ๋ฌด๊ฑฐ์›€ ⇒ (๊ฒฝ๋Ÿ‰ํ™”, ์œ„์˜ ๊ฒƒ๋“ค๊ณผ ๊ฒฝ์Ÿํ•˜๋ ค๊ณ ) ⇒ SpringBoot ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ์žฅ์ (์Šคํ”„๋ง๊ณผ์˜ ์ฐจ์ด์ ) ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํ”„๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ์˜ ์ž๋™ํ™” : ์Šคํƒ€ํ„ฐ๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ํŠน์ • ๊ธฐ๋Šฅ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์„ ๋”์šฑ ๊ฐ„๋‹จํžˆ ์ฒ˜๋ฆฌํ•จ(์‰ฝ๊ฒŒ ๋งํ•ด ๊ธฐ๋Šฅ๋ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจํ‚ค์ง€) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ์ž๋™ ๊ด€๋ฆฌ : ์Šคํ”„๋ง๋ถ€ํŠธ ๋ฒ„์ „์— ํ•ด๋‹นํ•˜๋Š” ๊ด€๋ จ ๋ผ.. 2023. 11. 20.
[ch.15] ์ž…์ถœ๋ ฅ I/O I/O Input, Output ์ž…์ถœ๋ ฅ, ์žฅ์น˜์™€ ํ”„๋กœ๊ทธ๋žจ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ NIO๋ผ๋Š” ๊ฒƒ๋„ ์žˆ์Œ(non-blocking I/O) ์ŠคํŠธ๋ฆผ ์ž…์ถœ๋ ฅ์—์„œ์˜์ŠคํŠธ๋ฆผ์€ 14์žฅ์˜์ŠคํŠธ๋ฆผ๊ณผ๋Š” ๋‹ค๋ฅธ๊ฐœ๋…. 15์žฅ์˜ ์ŠคํŠธ๋ฆผ์€ I/O๋ฅผ ์‰ฝ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ๊ฒฐํ†ต๋กœ. ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•จ. ์ž…/์ถœ๋ ฅ ๋™์‹œ์— ์ˆ˜ํ–‰ ์‹œ 2๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ํ•„์š”ํ•จ. ๋จผ์ €๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋ฐ›์Œ. ์ค‘๊ฐ„์— ๊ฑด๋„ˆ๋œ€ ์—†์ด ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ. ์–ด๋–ค๋Œ€์ƒ์„ ์ž‘์—…ํ•˜๋Š”์ง€?์ž…๋ ฅ/์ถœ๋ ฅ์ธ์ง€? ๊ณ ๋ คํ•ด์„œ ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•จ. ์ŠคํŠธ๋ฆผ์˜ ์ตœ๊ณ ์กฐ์ƒ InputStream Read. ์ฝ๊ธฐ๋ฅผ ๋„์™€์คŒ(๋ฐ”์ดํŠธ๊ธฐ๋ฐ˜) OutputStream Write. ์“ฐ๊ธฐ๋ฅผ ๋„์™€์คŒ(๋ฐ”์ดํŠธ๊ธฐ๋ฐ˜) ๋ณด์กฐ์ŠคํŠธ๋ฆผ ์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•จ. ์ŠคํŠธ๋ฆผ ๊ธฐ์„ ํ–ฅ์ƒ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ• .. 2023. 11. 20.
[ch.14] Optional<T>์™€ OptionalInt Optional ์ง€๋„ค๋ฆญ ํด๋ž˜์Šค. Tํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ๋ž˜ํผํด๋ž˜์Šค. Optionalํƒ€์ž…์˜ ๊ฐ์ฒด์—๋Š” ๋ชจ๋“  ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ. Optional ๊ฐ์ฒด์ƒ์„ฑ Optionalํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ Optional.empty(): T ํƒ€์ž…์˜ ๋นˆ Optional ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” public static ๋ฉ”์„œ๋“œ. Optional ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ Optional ๊ฐ์ฒด์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ŠคํŠธ๋ฆผ ๋ฉ”์„œ๋“œ filter( ), map( ), flatMap( ) Optional๊ฐ’์ด null์ด๋ฉด ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ์•„๋ฌด์ผ๋„ ํ•˜์ง€ ์•Š์Œ. boolean์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ Stream์˜๋ฉ”์„œ๋“œ์ค‘ Optional๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ ๊ณตํ†ต์  : null์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ํฐ ๊ฒƒ๋“ค, ์ŠคํŠธ๋ฆผ์ด ๋น„์–ด์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ. Op.. 2023. 11. 20.
[ch.14] ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ข…์—ฐ์‚ฐ ์šฐ์™€ ์ด๊ฑฐ ์–ธ์ œ ๋ณต๋ถ™ํ•˜์ง€ ใ…‹ใ…‹.. ์ผ๋‹จ ์ด๋ฏธ์ง€๋กœ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค 2023. 11. 15.