๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’Š Java & Kotlin & Spring/- Java & kotlin14

๋‹คํ˜•์„ฑ์„ ์œ„ํ•œ instanceof ๋ฅผ Generic ์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ชฉ์ฐจ ์„œ๋ก  instanceof ๋ž€? ์ฝ”๋“œ์—์„œ instanceof ๋ฅผ ๋Š๊ปด๋ณด์ž Generic ์„ ์ด์šฉํ•˜์—ฌ ์šฐ์•„ํ•˜๊ฒŒ ์ œ๊ฑฐํ•˜๊ธฐ ๊ทธ๋Ÿผ์—๋„ ์กด์žฌํ•˜๋Š” ๋ฌธ์ œ์  ํ•˜์ง€๋งŒ? ์„œ๋ก  ์ž๋ฐ”์—์„œ ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค๋ณด๋ฉด ์ข…์ข… ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์ง€์ •๋œ ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ ํƒ์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์˜ค๋Š˜์€ instanceof ์— ๋Œ€ํ•ด ์ง‘์ค‘ํ•˜๊ณ  ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡๊ฐ€์ง€ ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ๋ฐ”๋กœ instanceof ์—ฐ์‚ฐ์ž์ด๋‹ค. instanceof ๋ž€? ์•ž์„œ ๋งํ–ˆ๋“ฏ Java ์—์„œ๋Š” ์–ด๋–ค ๊ฐ์ฒด์˜ ํŠน์ • type ์— ๋Œ€ํ•ด์„œ ๋™์ผํ•œ type ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์„ instanceof ์—ฐ์‚ฐ์ž.. 2022. 4. 3.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] JVM์˜ Runtime Data Area, Execution Engine, Garbage Collection ์— ๋Œ€ํ•ด์„œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค๋ฉด ์ตํžˆ ๋“ค์—ˆ์„ JVM, Java Virtual Machine ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๋ง‰์—ฐํ•˜๊ฒŒ JVM ์ด ๋™์ž‘ํ•˜๊ณ  JVM์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋ฉฐ Garbage Collection ์œผ๋กœ ์žฅ์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์„ ๊ฒƒ์ด๋‹ค. ์˜ค๋Š˜์€ JRE์˜ ๊ตฌ์„ฑ์š”์†Œ์ธ JVM์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  Garbage Collection ์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. JVM ์ด๋ž€? ์ง€๋‚œ 2๋ฒˆ์˜ ์‹œ๊ฐ„์— ๊ฑฐ์ณ ์šฐ๋ฆฌ๋Š” Java Bytecode์™€ Java ClassLoader ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” ์–ด๋–ป๊ฒŒ ์ž๋ฐ” ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋˜์–ด ํด๋ž˜์Šค ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์ด ๋˜๊ณ , ์–ด๋–ป๊ฒŒ ํด๋ž˜์Šค๋กœ๋”์— ์˜ํ•ด์„œ ๋™์  ์ ์žฌ๋˜๋ฉฐ verification ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ดํ›„.. 2021. 12. 5.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] JRE์˜ Classloader ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž ์˜ค๋Š˜์€ JRE์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ์ธ Classloader์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” Java Bytecode ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. [์กฐ๊ธˆ ๋” ๊นŠ์€ Java] Java Bytecode ๋ฅผ ์•Œ์•„๋ณด์ž (์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?) ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹œ๊ฐ„ Java๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์†Œ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. Java๋Š” JVM ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ ๊ฒฝ wonit.tistory.com ์šฐ๋ฆฌ๊ฐ€ .java ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ๋‹ค๋ฉด .class ๋ผ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์ด๋˜๊ณ  JVM์ด ํ•ด๋‹น class ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ClassLoader ์ด๋‹ค. Java ClassLoader Java.. 2021. 12. 2.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] Java Bytecode ๋ฅผ ์•Œ์•„๋ณด์ž (์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?) ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹œ๊ฐ„ Java๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์†Œ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. Java๋Š” JVM ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š”๊ฐ€? ์˜ค๋Š˜์€ ์œ„์˜ JVM๊ณผ ์ด์‹์„ฑ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” Java Bytecode ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. Java Bytecode, ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ ์šฐ๋ฆฌ๋Š” Java ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ JDK๋ฅผ ์„ค์น˜ํ•˜๊ณ  Java ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ JRE ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ Compile ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ์ปดํŒŒ์ผ์€ ๋ฐ”๋กœ JDK๋‚˜ JRE ์— ํ•จ๊ป˜ ํฌํ•จ๋˜๋Š” javac.exe ์‹คํ–‰ํŒŒ์ผ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ .java ํŒŒ์ผ์„ .. 2021. 11. 25.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] String ๊ณผ String Constant Pool ์šฐ๋ฆฌ๋Š” Java ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์•„์ฃผ ๋งŽ์€ String ์˜ Literal ์„ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ String์ด ์–ด๋–ค ํŠน์„ฑ์„ ๊ฐ€์กŒ๋Š”์ง€ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฐ๋„์—์„œ ๋ด๋ณด๋ ค ํ•œ๋‹ค. String ์€? String ์€ Java ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ž๋ฃŒํ˜•์ด๋‹ค. ์šฐ๋ฆฌ๋Š” String ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค. "..." Literal ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• new ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด String ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž๋กœ value ์ฃผ์ž… ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด์„œ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ์ด ๋œ๋‹ค. ์ž๋ฐ”์—์„œ ๋ชจ๋“  String ์€ constant ํ˜•ํƒœ๋กœ ํ•œ ๋ฒˆ ์ƒ์„ฑ์ด ๋œ๋‹ค๋ฉด update ๋ผ๋Š” ๊ฐœ๋…์ด ์‚ฌ๋ผ์ง„๋‹ค. ์ฆ‰, Java ์˜ String ์€.. 2021. 11. 23.
[Java] Arrays.copyOfRange ๋กœ ๋ฒ”์œ„ ๋งŒํผ ๋ฐฐ์—ด ๋ณต์‚ฌํ•˜๊ธฐ ์š”์ฆ˜ ํ•™๊ต ํ”„๋กœ์ ํŠธ๋ž‘ BoB ๋•Œ๋ฌธ์— ๋ฐ”๋น ์„œ ํ•œ ๋™์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฑฐ์˜ ๋†“๋‹ค์‹ถ์ด ํ•ด๋ฒ„๋ ธ๋‹ค.. ๊ทธ๋ž˜์„œ ๊ฐ์„ ์ข€ ์ฐพ์œผ๋ ค๊ณ  ์˜ค๋žœ๋งŒ์— ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ ค๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์— ๋“ค์–ด๊ฐ€์„œ Level 1 ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์žˆ์—ˆ๋‹ค. ๋ฌธ์ œ๋Š” k ๋ฒˆ์งธ ์ˆ˜ ๋ผ๋Š” ๋ฌธ์ œ์˜€์—ˆ๊ณ , ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์€ ๋ฌธ์ œ์˜€๋‹ค. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - K๋ฒˆ์งธ์ˆ˜ [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr ๋Œ€์ถฉ ๋ฐฐ์—ด ํ•˜๋‚˜๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” i, j ๊ฐ’์ด ์žˆ์œผ๋ฉด ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ i ~ j ๊นŒ์ง€ ํ•ด๋‹น๋˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด์—ˆ๋‹ค. ๋‚˜๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ Arrays ํด๋ž˜์Šค์˜ copyOfRange ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉ.. 2021. 7. 5.