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

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

[Java] Bouncy Castle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ ์•”ํ˜ธํ™”, ๋ณตํ˜ธํ™” ํ•˜๊ธฐ (feat.๋ธ”๋ก ์•”ํ˜ธ์˜ SEED ์•Œ๊ณ ๋ฆฌ์ฆ˜) ์ตœ๊ทผ BoB ๋ฉด์ ‘์„ ์ค€๋น„ํ•˜๋ฉด์„œ ์ง€๋‚œ ํ”„๋กœ์ ํŠธ๋“ค์„ ๋˜๋Œ์•„๋ณด๊ณ  ์žˆ์—ˆ๋‹ค. ๋‚ด ์ง€๋‚œ ํ”„๋กœ์ ํŠธ ์ค‘์— ํ•™๊ณผ ์—ฐ๊ตฌ์‹ค์—์„œ ํ•™์‚ฌ ์กธ์—… ๋…ผ๋ฌธ์— ์ฐธ์—ฌํ•ด์„œ ํŒŒ์ผ ์•”๋ณตํ˜ธํ™” ๋ชจ๋“ˆ์„ ๊ตฌํ˜„ํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค. ํ˜„์žฌ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋ณด์•ˆ์ƒ ๊ณต๊ฐœ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ๋‚˜๋„ 2๋…„ ์ „์˜ ํ”„๋กœ์ ํŠธ๋ผ์„œ ๊ธฐ์–ต์ด ์ž˜ ๋‚˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๋Œ€ํ•œ ๊ทธ ๊ธฐ์–ต์„ ๋”๋“ฌ์–ด ํŒŒ์ผ ์•”๋ณตํ˜ธํ™” ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋ ค ํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ํ•œ๊ธ€๋กœ ๋œ ์ž๋ฃŒ๊ฐ€ ๋งŽ์ง€ ์•Š์•„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณต์œ ํ•œ๋‹ค๋ฉด ๊ฝค ๋„์›€ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ๊ทธ ๊ณผ์ •์„ ํ•œ ๋ฒˆ ํฌ์ŠคํŒ…ํ•˜๋ ค ํ•œ๋‹ค. ๋ชฉ์ฐจ Bouncy Castle ๋ธ”๋ก ์•”ํ˜ธ, SEED ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์˜์กด์„ฑ ์ถ”๊ฐ€ FileUtil.class ๊ตฌํ˜„ BouncyModule.class ๊ตฌํ˜„ Encryption.class ๊ตฌํ˜„ ํ…Œ์Šค.. 2021. 6. 19.
[Java ์‹ฌํ™”] Generic(์ œ๋„ค๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. ์ด ์‹œ๋ฆฌ์ฆˆ๋Š” Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž.์™€ ์ด์–ด์ง€๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. Generic(์ œ๋„ˆ๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ๊ธ€์€ ์ด๋ก ์— ๊ด€๋ จํ•œ ๊ธ€์ด๊ณ  ์‹ค์ „์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด 2๋ฒˆ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ํ™•์ธํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ๋ฐ”๋กœ Generic(์ œ๋„ˆ๋ฆญ)์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ๊ฒ ๋Š”๋ฐ ์‹ค์ „์—์„œ ๋–ค ํด๋ž˜์Šค๋ฅผ ์ œ๋„ˆ๋ฆญ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ด๋ฒˆ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ํฐ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค. ์‹œ์ž‘ํ•ด๋ณด์ž. Generic ์ œ๋„ˆ๋ฆญ์€ Java 1.5 ๋ฒ„์ „๋ถ€ํ„ฐ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ๋ญ ์ด๋Ÿฐ ์ด์•ผ๊ธฐ๋Š” ์ž ์‹œ ์ ‘์–ด ๋‘๊ณ  ์ œ๋„ˆ๋ฆญ์ด ๋ฌด์—‡์ด๋ฉฐ ์™œ ์ œ๋„ˆ๋ฆญ์„.. 2020. 8. 27.
[Java ์‹ฌํ™”] List ์ปฌ๋ ‰์…˜์—์„œ ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ArrayList๋‚˜ LinkedList๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์ด๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด ํ•„์ž๋Š” ์ž๋ฐ”๋ผ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฅผ ๋ด์™”์—ˆ๋Š”๋ฐ, ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์ด๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ง  ๊ฒฝ์šฐ๋ฅผ ๋ณด์•˜๋‹ค. ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ๋ฐ ๋ฐ”๋กœ List ์ปฌ๋ ‰์…˜์—์„œ์˜ ์ฐธ์กฐ๋ณ€์ˆ˜ ํƒ€์ž…์ด๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‚ด ๊ธ€์„ ๋ณด์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๋‚ด์šฉ์ด๋‹ค. ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์–ด๋Š์ •๋„ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜ค๋Š˜์€ ๋‹คํ˜•์„ฑ๊ณผ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด๋Š” ํฌ์ŠคํŒ…์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ƒํ™œ์ฝ”๋”ฉ์˜ ๋‹คํ˜•์„ฑ ๊ฐ•์˜๊ณผ ์ƒํ™œ์ฝ”๋”ฉ์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ•์˜๋ฅผ ๋ด๋ณธ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.. 2020. 7. 29.
[Java ์‹ฌํ™”] Java ์—์„œ Comparable๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ. Java์—์„œ comparator๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ ์ž๋ฐ”๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฐ”์—์„œ๋Š” ์ •๋ ฌ์„ ์œ„ํ•ด์„œ Arrays.sort() ์˜ static ๋ฉ”์„œ๋“œ๋‚˜ ,Collections.sort()์˜ static ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋Š” ๊ธฐ๋ณธ ์ •๋ ฌ์ธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ(๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์ •๋ ฌ, ๊ฐ์ฒด ์ •๋ ฌ, ์กฐ๊ฑด ์ •๋ ฌ)์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ž€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•ด๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€์˜ ์กฐ๊ฑด ์ •๋ ฌ ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋Š”๋ฐ ๋ฐ”๋กœ Comparator, Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•œ ์ •๋ ฌ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜์ด๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„์˜ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ฅธ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฐจ์ด๋ถ€ํ„ฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž. Compara.. 2020. 2. 24.
[Java ์‹ฌํ™”] ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ์‹ฌ์˜คํ•œ ๊ณ ์ฐฐ. ์ด ๊ธ€์€ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ๊ณผ ์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›๋ฆฌ์™€ ์ดํ•ด - ๊น€์ข…๋ฏผ ์ €๋ฅผ ์ฝ๊ณ  ๋‚˜์„œ ๋Š๋‚€ ๊ฐ์ •์„ ์˜ˆ์ˆ ์ ? ๋ฌธํ•™์ ? ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ๋ณธ์ธ์˜ ์ƒ๊ฐ๊ณผ ๊น€์ข…๋ฏผ ๊ฐœ๋ฐœ์ž์˜ ์ƒ๊ฐ์„ ์ถ”ํ•ฉํ•˜์—ฌ ์ •๋ฆฌํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค. Abstraction VS Abstract Art ์ œ๋ชฉ์—์„œ ์“ฐ์ธ Abstraction์€ Computer Science์—์„œ ๋ง ํ•˜๋Š” ์ถ”์ƒํ™”์˜ ๊ฐœ๋…์ด๊ณ  Abstract Art๋Š” ํ”ผ์นด์†Œ๊ฐ€ ์ž˜ ํ•˜์˜€๋˜ ์ถ”์ƒ ๋ฏธ์ˆ ์˜ ์ถ”์ƒํ™” ์ด๋‹ค. ์ ์  ํ•™์Šต์„ ํ•˜๋‹ค ๋ณด๋‹ˆ, ์ด ๋‘˜์€ ์ „ํ˜€ ๋‹ค๋ฅธ ๋ถ„์•ผ์˜ ์šฉ์–ด์ง€๋งŒ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์“ฐ์ด๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฌผ๋ก  ๋œป์ด๋ผ๋Š”๊ฒŒ ๊ฐ™์€ ๋ฟŒ๋ฆฌ์—์„œ ๋‚˜์™€ ๋น„์Šทํ•œ ๋Š๋‚Œ์˜ ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•˜๊ธด ํ•˜์ง€๋งŒ, Computer Science์—์„œ ๊ฐ€์žฅ ์ž˜ ๋“ค์–ด๋งž๋Š”๊ฒƒ ์ค‘์— ํ•˜๋‚˜๊ฐ€ ์ถ”์ƒํ™”๊ฐ€ ์•„๋‹๊นŒ๋ผ.. 2019. 12. 23.
[Java ์‹ฌํ™”] ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ด๊ธฐ๋Š” ๊ณผ์ •๊ณผ ์Šคํƒ ํ”„๋ ˆ์ž„๊ณผ ๋งŒ๋‚จ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋ฐ”๋กœ ์ „์— ๋ง ํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ์™€ JRE, JVM์˜ ๊ด€๊ณ„ ์—์„œ ์กฐ๊ธˆ ๋” ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€์„œ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ธฐ๊ณ  ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์–ด๋–ค ๊ณผ์ •์œผ๋กœ ์‚ฌ๋ผ์ง€๋ฉฐ, static ์˜์—ญ์—๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธฐ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์•„๋ณด์ž. ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์ƒ์กด ๊ธฐ๊ฐ„ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์ƒ์กด ๊ธฐ๊ฐ„์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ์•Œ์•„๋ณด์ž. public class Post02 { public static void main(String[] args) { System.out.println("hello"); } } class Post03 { void greeting(){ } void sayHello(){ } } ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ทธ๋ ค๋ณด์ž๋ฉด static ์˜์—ญ์—๋Š” Post02, Post03๊ฐ€ ๋‹ด๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ๋  .. 2019. 12. 21.