[Java] ํด๋ž˜์Šค ๋กœ๋”ฉ ๊ณผ์ •(Java Class Loading Process)์ด๋ž€?

[Java] ํด๋ž˜์Šค ๋กœ๋”ฉ ๊ณผ์ •(Java Class Loading Process)์ด๋ž€?

1. ํด๋ž˜์Šค ๋กœ๋”ฉ ๊ณผ์ • (Java Class Loading Process) ์ด๋ž€? ์ž๋ฐ” ํด๋ž˜์Šค ๋กœ๋”ฉ ๊ณผ์ • (Java Class Loading Process)์€ ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฐพ์•„ ๋™์ ์œผ๋กœ JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ธ Runtime Data Areas์— ์˜ฌ๋ ค๋†“๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค. ์ž๋ฐ”์—์„œ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜•์„ฑ/๊ด€๋ฆฌ ๋˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด. java ํŒŒ์ผ์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ JVM ์œ„์— ๋กœ๋”ฉ๋˜๋Š”์ง€ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ณ ,ย ํด๋ž˜์Šค ๋กœ๋”ฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ (โ€˜java.lang.ClassNotFoundException'๊ณผ ๊ฐ™์€ ์—๋Ÿฌ)๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•˜๊ณ , ์ฝ”๋“œ์ƒ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค ๋กœ๋”ฉํ•˜๋Š” ๊ตฌ๋ฌธ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•˜๋‹ค. 2. ํด๋ž˜์Šค ๋กœ๋” 3๋‹จ๊ณ„ ๊ณผ์ • ํด๋ž˜์Šค ๋กœ๋”๋Š” ๋‹ค์Œ 3๋‹จ๊ณ„ ๊ณผ์ •์„ ๊ฑฐ์ณ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋กœ๋”ฉํ•œ๋‹ค. ...

[Linux] ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ(Swap Memory)์˜ ๊ฐœ๋…๊ณผ ์ ์šฉ๋ฐฉ๋ฒ•

[Linux] ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ(Swap Memory)์˜ ๊ฐœ๋…๊ณผ ์ ์šฉ๋ฐฉ๋ฒ•

1. ๋ฆฌ๋ˆ…์Šค Swap ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • (์˜ˆ์ œ๋Š” EC2 ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰) 1-1. Swap ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ swapon -s free -h shared = ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์— ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ buff/cache = ๋ฒ„ํผ์™€ ์บ์‹œ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ, ์ปค๋„์ด ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์œ„ํ•ด ์บ์‹œ ์˜์—ญ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ buff = ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์•„๋‹Œ ์‹œ์Šคํ…œ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์œ„ํ•ด ์ปค๋„์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ cache = ์บ์‹œ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ, I/O ์ž‘์—…์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„์—์„œ ์‚ฌ์šฉ ...

[Spring] ์Šคํ”„๋ง๋ถ€ํŠธ + Mybatis ๋ฐ์ดํ„ฐ์†Œ์Šค ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐ (์Šคํ”„๋ง ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ)

[Spring] ์Šคํ”„๋ง๋ถ€ํŠธ + Mybatis ๋ฐ์ดํ„ฐ์†Œ์Šค ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐ (์Šคํ”„๋ง ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ)

๋‹ค์Œ์€ ์Šคํ”„๋ง๋ถ€ํŠธ + ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ํ”„๋กœ์ ํŠธ์— 2๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.ย ๊ธฐ์กด ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™์ด ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ • ํ›„ ์ง„ํ–‰๋˜๋ฉฐ, ์‹ ๊ทœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ตฌ๋ณ„์ด ์‰ฝ๋„๋ก new ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ช…์นญ ํ•œ๋‹ค. 1. ์‹ ๊ทœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์†์ •๋ณด ์ถ”๊ฐ€ ์ถ”๊ฐ€๋  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ย ์†์„ฑ์„ application.properties์— ์ถ”๊ฐ€ #๊ธฐ์กด DB Setting spring.datasource.url={url} spring.datasource.driverClassName={driverClassName} spring.datasource.username={username} spring.datasource.password={password} spring.datasource.schema={schema} #์ถ”๊ฐ€๋  DB Setting new.datasource.url={url} new.datasource.driverClassName={driverClassName} new.datasource.username={username} new.datasource.password={password} new.datasource.schema={schema} 2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋นˆ ์†์„ฑ ์ถ”๊ฐ€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •์„ ํ•˜๋Š” DatabaseConfig.java ์™ธ์— NewDatabaseConfig.java์‹ ๊ทœ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ธฐ์กด DatabaseConfig.java ...

[Spring] ์Šคํ”„๋ง ๋ฐฐ์น˜ ItemReader์˜ ๊ฐœ๋…, (MybatisCursorItemReader, MybatisPagingItemReader ๊ตฌํ˜„)

[Spring] ์Šคํ”„๋ง ๋ฐฐ์น˜ ItemReader์˜ ๊ฐœ๋…, (MybatisCursorItemReader, MybatisPagingItemReader ๊ตฌํ˜„)

1. ItemReader๋ž€? ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ItemReader๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋Š” ์ด๋ฏธ ItemReader๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ธฐ์— ItemReader, ItemStream ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋ฅผ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ItemReader๋Š” Chunk ๊ธฐ๋ฐ˜ ํŠธ๋žœ์žญ์…˜์„ ๋‹ค๋ฃจ๋ฉฐ Cursor, Paging ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ 2๊ฐ€์ง€ ๋ฐฉ์‹์ด๋‹ค. 2. Cursor, Paging ํ˜•์‹ 2-1. Cursor๊ธฐ๋ฐ˜ ItemReader JDBC ResultSet์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด๋‹ค. ResultSet์ด Open ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ ๋งบ์€ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ Streaming ๋ฐฉ์‹์œผ๋กœ I/O์ด๋‹ค. ํ˜„์žฌ ํ–‰์—์„œCursor๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Cursor๋ฅผ ํ•œ ์นธ์”ฉ ์˜ฎ๊ธฐ๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ํ•˜๋‚˜์˜ Connection์œผ๋กœ ๋ฐฐ์น˜๊ฐ€ ๋๋‚ ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ๋˜๊ธฐ์— Batch๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฐ๊ฒฐ์ด ๋จผ์ € ๋Š์–ด์งˆ ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SocketTimeout์„ ์ถฉ๋ถ„ํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์ง„๋‹ค. Chunk ์‚ฌ์ด์ฆˆ ๋งŒํผ์˜ ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. Cursor ๊ธฐ๋ฐ˜ ItemReader ๊ตฌํ˜„์ฒด ...

[๋„คํŠธ์›Œํฌ] TCP/IP์˜ ๊ฐœ๋…

[๋„คํŠธ์›Œํฌ] TCP/IP์˜ ๊ฐœ๋…

1. TCP/IP ๋ž€? ํŒจํ‚ท ์ „์†ก๋ฐฉ์‹์˜ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ธ IP์™€ ์ „์†ก ์กฐ์ ˆ ํ”„๋กœํ† ์ฝœ์ธ TCP๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. IP๋Š” ํŒจํ‚ท ์ „๋‹ฌ ์—ฌ๋ถ€๋ฅผ ๋ณด์ฆํ•˜์ง€ ์•Š๊ณ , ํŒจํ‚ท์„ ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ›๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์ง€๋งŒ, TCP๋Š” IP ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ „๋‹ฌ์„ ๋ณด์ฆํ•˜๊ณ  ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ›๊ฒŒ ํ•ด ์ค€๋‹ค. IP๊ฐ€ ํŒจํ‚ท ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ชฉ์ ์ง€๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๋ฐ๋งŒ ์ง‘์ค‘ํ•œ๋‹ค๋ฉด TCP๋Š” Endpoint ๊ฐ„ ํ†ต์‹ ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๋Š”์ง€, ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€์งˆ๋˜์ง€ ์•Š์€์ง€, ๋ฐ์ดํ„ฐ ์œ ์‹ค์€ ์—†๋Š”์ง€ ๋“ฑ์„ ์ ๊ฒ€ํ•œ๋‹ค. ์ฆ‰ IP์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ๋”ฐ๋ฅด๊ณ  IP Routing์„ ํ†ตํ•ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜์—ฌย TCP์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž์˜ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ์ƒ์„ฑ, ์‹ ๋ขฐ์„ฑ ์œ ์ง€ํ•œ๋‹ค. ...