[PostgreSQL] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์†(Inheritance)์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ• ๋ฐ ์„ฑ๋Šฅ๋น„๊ต (Inherits, Only)

[PostgreSQL] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์†(Inheritance)์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ• ๋ฐ ์„ฑ๋Šฅ๋น„๊ต (Inherits, Only)

1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์†(Inheritance)์ด๋ž€? ์ƒ์†์€ ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. PostgreSQL์€ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ์˜ ์ƒ์† ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์— ์ƒˆ๋กœ์šด ๊ฐ€๋Šฅ์„ฑ๋“ค์„ ์—ด์–ด์ค€๋‹ค. ๋ฐ์ดํ„ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์†์„ฑ ๋ฐ ์ธ๋ฑ์Šค ๋“ฑ์˜ ํŠน์ง•๋“ค๋„ ์ž์‹ ํ…Œ์ด๋ธ”๋กœ ์ƒ์†๋˜๊ธฐ์— ์ƒํ™ฉ์— ๋”ฐ๋ผ ํšจ์œจ์ ์ธ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 2.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์†(Inherits) ๋ฐฉ๋ฒ• ๋‹ค์Œ ์˜ˆ์ œ๋Š” PostgreSQL ๊ณต์‹ ๋ฌธ์„œ์˜ ์˜ˆ์ œ์ด๋‹ค. Capitals - ์ด๋ฆ„, ์ธ๊ตฌ, ๊ณ ๋„, ์š”์•ฝ์–ด๋ฅผ ํฌํ•จํ•œ ์ˆ˜๋„์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ” Cities - ์ด๋ฆ„, ์ธ๊ตฌ, ๊ณ ๋„๋ฅผ ํฌํ•จํ•œ ๋„์‹œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ” ...

[PostgreSQL] ๋‚ ์งœ ํ˜•ํƒœ ๊ฒ€์ฆํ•˜๊ธฐ (ERROR: date/time field value out of range)

[PostgreSQL] ๋‚ ์งœ ํ˜•ํƒœ ๊ฒ€์ฆํ•˜๊ธฐ (ERROR: date/time field value out of range)

1. ๋‚ ์งœ ํ˜•ํƒœ๋กœ ํ˜• ๋ณ€ํ™˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ ๋‚ ์งœํ˜•ํƒœ๋กœ ํ˜• ๋ณ€ํ™˜์„ ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค. -- Unixํƒ€์ž„(int)ํ˜• ๋ณ€ํ™˜ SELECT to_timestamp(1658792421) -- varchar ํƒ€์ž… ๋ณ€ํ™˜ SELECT to_timestamp('20231026','yyyymmdd') -- ๋‚ ์งœํ˜•์„ char๋กœ ๋ณ€ํ™˜ SELECT to_char(to_timestamp(1658792421), 'DD-MM-YYYY') 2. ์œ ํšจํ•œ ๋‚ ์งœํ˜•ํƒœ ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ ์ •์ œ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•„ ์กฐํšŒํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์— ๋‚ ์งœ์œ ํ˜•์—์„œ ๋ฒ—์–ด๋‚œ ๋ฐ์ดํ„ฐย ('20231301',202301', '20231232' ๋“ฑ)๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ๊ฒฝ์šฐ ์กฐํšŒ ์ž์ฒด๊ฐ€ ์•ˆ๋œ๋‹ค. ๊ทธ๋Ÿด ๊ฒฝ์šฐ ๋‚ ์งœ ๊ทœ๊ฒฉ์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์ • ํ›„ ์—ฐ์‚ฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐย ๋‹จ์ˆœ ์›”๋ณ„ ์ผ€์ด์Šค๋ฌธ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‚ ์งœ ์œ ํ˜•์— ์–ด๊ธ‹๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ row๋งˆ๋‹ค ๋‚ ์งœ ์œ ํ˜•์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ์œค๋‹ฌ์„ ์ฒดํฌํ•  ์ˆ˜ ์—†๋‹ค. ...

[Java] ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ (Virtual Threads)๋ž€? ์ž๋ฐ” 21์˜ ๊ฐ€์ƒ์Šค๋ ˆ๋“œ (Virtual Thread) ๋„์ž…

[Java] ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ (Virtual Threads)๋ž€? ์ž๋ฐ” 21์˜ ๊ฐ€์ƒ์Šค๋ ˆ๋“œ (Virtual Thread) ๋„์ž…

1. ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ (Virtual Threads)๋ž€? 2023.09.20 ๋ฆด๋ฆฌ์ฆˆ ๋œ ์ž๋ฐ” 21์— ์ถ”๊ฐ€๋œ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ(Virtual Threads)๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด์ž. ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๋Š” ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ๋กœ, ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์˜ ๋™์‹œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑ, ์œ ์ง€ ๋ฐ ๊ด€์ฐฐํ•˜๋Š” ์ž‘์—… ๊ณต์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ธ๋‹ค.ย OS์Šค๋ ˆ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  JVM ์ž์ฒด์ ์œผ๋กœ ์Šค์ผ€์ฅด๋ง์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ์ด๋ฉฐ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜์‹ญ - ์ˆ˜๋ฐฑ๋งŒ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ• ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. 2. ์ž๋ฐ”์˜ ์ „ํ†ต์ ์ธ ์Šค๋ ˆ๋“œ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ทผ 30๋…„๋™์•ˆ ๋™์‹œ์„ฑ ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์Šค๋ ˆ๋“œ์— ์˜์กดํ•ด์™”๋‹ค. ๋ชจ๋“  ๋ฉ”์„œ๋“œ์˜ ๊ตฌ๋ฌธ๋“ค์€ ์Šค๋ ˆ๋“œ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋ฉฐ, 1๊ฐœ์˜ ์š”์ฒญ์„ 1๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์Šคํ”„๋ง์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ตฌ์กฐ์ด๊ธฐ์—, ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋ฉฐ ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ์Šค๋ ˆ๋“œ์˜ ์ˆ˜ ์—ญ์‹œ ์ฆ๊ฐ€ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ํ•˜๋Š” ์Šคํƒ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ์˜ Context๋„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์˜ˆ๋ฅผ๋“ค์–ด Exception์€ ๋™์ผ ์Šค๋ ˆ๋“œ ๋‚ด์—์„œ์˜ ๋ฉ”์†Œ๋“œ์— ์˜ํ•ด throw/catch ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ์Šค๋ ˆ๋“œ์˜ Stack trace๋กœ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ๊ทธ ์™ธ Debugger (์Šค๋ ˆ๋“œ์˜ ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ๊ตฌ๋ฌธ์„ ์ฐจ๋ก€๋กœ ํ›‘์–ด๋ณธ๋‹ค), Profiler(JFR) (์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์˜ ํ–‰๋™์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์Šค๋ ˆ๋“œ์˜ ์„ฑ๋Šฅ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.)๋„ ๋ชจ๋‘ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋˜์–ด์žˆ๋‹ค. ...

[Java] Switch์™€ else-if์˜ ํšจ์œจ์„ฑ ๋น„๊ต (Switch์™€ else-if ์ค‘์— ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?)

[Java] Switch์™€ else-if์˜ ํšจ์œจ์„ฑ ๋น„๊ต (Switch์™€ else-if ์ค‘์— ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?)

1. Switch์™€ if-else ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‹คํ–‰์„ ๋ถ„๊ธฐํ•ด์•ผ ํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค. Java์—์„œ๋Š” switch / if-else ๋‘ ์กฐ๊ฑด๋ฌธ์„ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณดํ†ต ๊ฐ€๋…์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์„ ํƒ์„ ๋งŽ์ด ํ•˜๋‚˜, ํšจ์œจ์„ฑ ๊ธฐ์ค€์—์„œ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„์ง€ ๋น„๊ตํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์ผ๋‹จ switch ๊ตฌ๋ถ„์—์„œ Strings๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด, Theย switch statement compares theย Stringย object in its expression with the expressions associated with eachย caseย label as if it were using theย String.equalsย method; consequently, the comparison ofย Stringย objects inย switchย statements is case sensitive. The Java compiler generates generally more efficient bytecode fromย switchย statements that useย Stringย objects than from chainedย if-then-elseย statements. ...

[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๋‹จ๊ณ„ ๊ณผ์ •์„ ๊ฑฐ์ณ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋กœ๋”ฉํ•œ๋‹ค. ...