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

๐Ÿ’Š Java & Kotlin & Spring57

[์กฐ๊ธˆ ๋” ๊นŠ์€ 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.
[Spring Cloud] Spring Cloud Bus์™€ RabbitMQ ๋ฅผ ์ด์šฉํ•œ Config ์ •๋ณด ๋ฐ˜์˜ํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ Spring Cloud Config ์—์„œ ๋ณ€๊ฒฝ๋œ ์ •๋ณด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์—์„œ Spring Boot Actuator ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์— ๋‚˜์˜จ ์‹ค์Šต์„ ๋”ฐ๋ผํ•˜์‹œ๊ธธ ๊ถŒ๊ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ์ง€๋‚œ ์‹œ๊ฐ„์˜ ์„ค์ • ์ •๋ณด ๋ฐ˜์˜ ๋ฐฉ๋ฒ• Spring Boot Actuator ๋ฅผ ์ด์šฉํ•œ ์„ค์ • ์ •๋ณด ๋ฐ˜์˜ Spring Cloud Bus๋ž€? RabbitMQ๋ž€? Spring Cloud Bus ์‹ค์Šตํ•˜๊ธฐ RabbitMQ ๋“ฑ๋ก Config, Gateway, User Cloud Bus ๋“ฑ๋ก ์ง€๋‚œ ์‹œ๊ฐ„์˜ ์„ค์ • ์ •๋ณด ๋ฐ˜์˜ ๋ฐฉ๋ฒ• ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” ์„ค์ • ์ •๋ณด๋ฅผ ์™ธ๋ถ€ Repository ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋“ค์ด ํ•ด๋‹น ์„ค์ • ์ •๋ณด๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ์‹ค์Šต์„ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ.. 2021. 5. 20.
Spring Cloud Config ์—์„œ ๋ณ€๊ฒฝ๋œ ์ •๋ณด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์—์„œ Spring Boot Actuator ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ Spring Cloud Config์˜ name, profiles ๊ทธ๋ฆฌ๊ณ  Github ๋ฅผ ์—ฐ๋™ํ•ด์„œ ์„ค์ • ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์— ๋‚˜์˜จ ์‹ค์Šต์„ ๋”ฐ๋ผํ•˜์‹œ๊ธธ ๊ถŒ๊ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ์„ค์ • ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์ด์œ  Spring Boot Actuator๋ž€? Spring Boot Actuator ์˜ ๊ธฐ๋Šฅ๊ณผ Endpoints Config Refresh Spring Boot Actuator ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€๊ฒฝ ์ •๋ณด ๊ฐฑ์‹ ํ•˜๊ธฐ User-Service์— Actuator ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ refresh Endpoints ํ™œ์„ฑํ™” ์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” yml ์„ค์ • ์ •๋ณด ๋ณ€๊ฒฝํ•˜๊ธฐ refresh ํ•˜๊ธฐ ์„ค์ • ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์ด์œ  ์ง€๊ธˆ๊นŒ์ง€ Spring Cloud Config ์˜ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์•Œ.. 2021. 4. 28.