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

๐Ÿ’Š Java & Kotlin & Spring53

[์กฐ๊ธˆ ๋” ๊นŠ์€ 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.
[Spring Boot] CORS ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• (Filter, @CrossOrigin, WebMvcConfigurer) Server Side Template ๋ฐฉ์‹์ด ์•„๋‹Œ Front์™€ Back ์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” Cors๊ฐ€ ๋งค์šฐ ์นœ์ˆ™ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ ๊ฐœ๋ฐœ ํ๋ฆ„์—์„œ ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ Cors ๋ฅผ ๋งŒ๋‚  ํ™•๋ฅ ์€ ๊ฐ€ํžˆ 100% ๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ CORS ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋ฉฐ ๋˜, Spring Boot Application ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๋‹น ์ •์ฑ…์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž. CORS ํ•ด๊ฒฐํ•˜๊ธฐ ์šฐ์„  ๊ฐ€์žฅ ๋จผ์ € ๋ง ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ CORS ๋Š” ์—๋Ÿฌ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. Cross-Origin Resource Sharing Policy ์ด๋‹ค. ์ฒ˜์Œ ๋‚ด๊ฐ€ Front ์™€ Back ์„ ๋‚˜๋ˆ ์„œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ์—๋Š” ๋‹จ์ˆœํžˆ Front ์—์„œ fetch ์š”์ฒญ์œผ๋กœ Back ์„ ๋ฐ”๋ผ๋ณด๊ณ  ๋‚ ๋ฆฌ๋ฉด ๋ .. 2021. 8. 14.
[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.
[Java] Bouncy Castle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™” ํ•˜๊ธฐ (feat.๋ธ”๋ก ์•”ํ˜ธ์˜ SEED ์•Œ๊ณ ๋ฆฌ์ฆ˜) ์ตœ๊ทผ BoB ๋ฉด์ ‘์„ ์ค€๋น„ํ•˜๋ฉด์„œ ์ง€๋‚œ ํ”„๋กœ์ ํŠธ๋“ค์„ ๋˜๋Œ์•„๋ณด๊ณ  ์žˆ์—ˆ๋‹ค. ๋‚ด ์ง€๋‚œ ํ”„๋กœ์ ํŠธ ์ค‘์— ํ•™๊ณผ ์—ฐ๊ตฌ์‹ค์—์„œ ํ•™์‚ฌ ์กธ์—… ๋…ผ๋ฌธ์— ์ฐธ์—ฌํ•ด์„œ ํŒŒ์ผ ์•”๋ณตํ˜ธํ™” ๋ชจ๋“ˆ์„ ๊ตฌํ˜„ํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค. ํ˜„์žฌ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋ณด์•ˆ์ƒ ๊ณต๊ฐœ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ๋‚˜๋„ 2๋…„ ์ „์˜ ํ”„๋กœ์ ํŠธ๋ผ์„œ ๊ธฐ์–ต์ด ์ž˜ ๋‚˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ ๊ทธ ๊ธฐ์–ต์„ ๋”๋“ฌ์–ด ํŒŒ์ผ ์•”๋ณตํ˜ธํ™” ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋ ค ํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ํ•œ๊ธ€๋กœ ๋œ ์ž๋ฃŒ๊ฐ€ ๋งŽ์ง€ ์•Š์•„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณต์œ ํ•œ๋‹ค๋ฉด ๊ฝค ๋„์›€ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ๊ทธ ๊ณผ์ •์„ ํ•œ ๋ฒˆ ํฌ์ŠคํŒ…ํ•˜๋ ค ํ•œ๋‹ค. ๋ชฉ์ฐจ Bouncy Castle ๋ธ”๋ก ์•”ํ˜ธ, SEED ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์˜์กด์„ฑ ์ถ”๊ฐ€ FileUtil.class ๊ตฌํ˜„ BouncyModule.class ๊ตฌํ˜„ Encryption.class ๊ตฌํ˜„ ํ…Œ์Šค.. 2021. 6. 19.