Java) 2์ฐจ์› ๋ฐฐ์—ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ(Arrays.sort ๋žŒ๋‹ค์‹)
ยท
Languages | Frameworks/Java
Java Array Sort ์ž๋ฐ”์—์„œ 1์ฐจ์› ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” Arrays.sort() ๋ฉ”์„œ๋“œ์— ์ธ์ž๋กœ ๋ฐฐ์—ด์„ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€๋งŒ, 2์ฐจ์› ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ ํ•˜๋ ค๋ฉด Arrays.sort์—์„œ ๋žŒ๋‹ค์‹์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 1์ฐจ์› ๋ฐฐ์—ด(int) ์ •๋ ฌ - ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์—ฌ๊ธฐ์„œ ์ž ๊น 1์ฐจ์› ๋ฐฐ์—ด(์ •์ˆ˜ํ˜•) ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ฝ”๋“œ๋กœ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. # ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ int[] arr = {1, 26, 17, 25, 99, 44, 303}; Arrays.sort(arr); >>>>>๊ฒฐ๊ณผ: [1, 17, 25, 26, 44, 99, 303] 1์ฐจ์› intํ˜• ๋ฐฐ์—ด์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์€ ๋น„๊ต์  ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์€ ์ƒ๋‹นํžˆ ๊นŒ๋‹ค๋กญ๋‹ค. intํ˜• ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด..
Java) HashMap์˜ computeIfAbsent์— ๋Œ€ํ•ด(feat. getOrDefault)
ยท
Languages | Frameworks/Java
getOrDefault ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” map์˜ ๋ฉ”์„œ๋“œ์ค‘ getOrDefault ๋ฉ”์„œ๋“œ๋Š” ํ‚ค๊ฐ’์ด ์—†์œผ๋ฉด ๋‘๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ ์žˆ๋‹ค. ํ‰์†Œ์— ์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ, Map ๊ฐ™์€ map์— key, value๋ฅผ ๋„ฃ์–ด์ค„ ๋•Œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด, key๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น key์˜ value๋ฅผ ๊ฐ€์ ธ์™€์„œ +ํ•ด์ฃผ๊ณ , key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด default๊ฐ’์— + ํ•ด์„œ ๊ฐ’์„ ๋„ฃ์–ด์คฌ๋‹ค. ์˜ˆ์‹œ map.put("key", map.getOrDefault("key", "default๊ฐ’") + "๋”ํ•ด์ค„ ๊ฐ’"); ํ•˜์ง€๋งŒ value๊ฐ€ ๋ฌธ์ž์—ด ๋˜๋Š” ์ •์ˆ˜ํ˜•์ด ์•„๋‹Œ ๋ฆฌ์ŠคํŠธ์ผ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ• ๊นŒ? Map strListMap = new HashMap(); // ๊ธฐ๋ณธ๊ฐ’ ๋„ฃ๊ธฐ List list = strListM..
Java) List์™€ ArrayList์˜ ์ฐจ์ด?
ยท
Languages | Frameworks/Java
List list = new ArrayList (); ์•„๋ฌด ์ƒ๊ฐ์—†์ด ์œ„ ๊ตฌ์กฐ์˜ ํ˜•์‹์œผ๋กœ ํ•ญ์ƒ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์˜€์—ˆ๋Š”๋ฐ, ๋ฌธ๋“ List์™€ ArrayList์˜ ์ฐจ์ด๊ฐ€ ๋ญ์ง€? ํ•˜๊ณ  ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋”๋‹ˆ, ArrayList๋Š” class๊ณ , List๋Š” interface๋‹ค. interface๋Š” ๊ณตํ†ต๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ถœํ•ด ๋†“์€ ํด๋ž˜์Šค๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋ผ๋Š” ๊ธ€์„ ๋ณด์•˜๋Š”๋ฐ ๊ถ๊ธˆ์ฆ์ด ํ•ด์†Œ๋˜์ง€ ์•Š์•˜๊ณ  ๋” ๊ฒ€์ƒ‰์„ ํ•ด๋ณด์•˜๋‹ค. ArrayList list = new ArrayList (); List list = new ArrayList (); ์œ„์˜ ๋‘ ์ฝ”๋“œ๋Š” ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜์ง€๋งŒ, List๋ฅผ ์‚ฌ์šฉํ•ด ArrayList๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์œ ์—ฐ์„ฑ์—์„œ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ค ์œ ์—ฐ์„ฑ์—์„œ ํšจ๊ณผ๋ฅผ ๋ณธ๋‹ค๋Š” ๋ง..
JPA, JPQL
ยท
Languages | Frameworks/Java
1. JPA์™€ JPQL JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ, ๋‹จ๊ฑด์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ์—๋Š” ๋งค์šฐ ํŽธํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ์ชฝ์ธ๋ฐ, ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ๋„ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ, ๋ชจ๋“  DB ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ DB์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ๊ฒฐ๊ตญ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ด ํฌํ•จ๋œ SQL์ด ํ•„์š”ํ•˜๋‹ค. JPA๋Š” SQL์„ ์ถ”์ƒํ™”ํ•œ JPQL์ด๋ผ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, SQL๊ณผ ๋น„์Šทํ•œ ๋ฌธ๋ฒ•, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN์„ ์ง€์›ํ•œ๋‹ค. JPQL์€ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•˜๊ณ , SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌํ•œ๋‹ค. SQL์„ ์ถ”์ƒํ™”ํ•ด์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค SQL์— ์˜..
์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜์™€ ์ถ”์ฒœ(SHA, PBKDF2, Bcrypt) + Java ์ ์šฉ ์ƒ˜ํ”Œ
ยท
Languages | Frameworks/Java
์•”ํ˜ธํ™”์˜ ์ข…๋ฅ˜ SHA-2(Secure Hash Algorithm 2) ๋ฏธ๊ตญ NSA์—์„œ ์„ค๊ณ„ํ•œ ์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜. digest size๋Š” 224, 256, 384or512 bit๋กœ 6๊ฐœ์˜ ํ•ด์‹œํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด์กŒ์Œ. GPU๋ฅผ ์ด์šฉํ•œ ์—ฐ์‚ฐ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— password ์•”ํ˜ธํ™”์— ๊ถŒ์žฅ๋˜์ง€ ์•Š์Œ GPU ์—ฐ์‚ฐ์†๋„๊ฐ€ ๋น ๋ฅผ์ˆ˜๋ก ๊ณต๊ฒฉ์ž์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ํ†ตํ•œ ์˜คํ”„๋ผ์ธ brute force์— ๋” ์ทจ์•ฝํ•˜๋‹ค. ๋น ๋ฅธ ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰์‹œ ๊ณต๊ฒฉ์ž๋Š” ์˜คํ”„๋ผ์ธ ๊ณต๊ฒฉ์œผ๋กœ ์ดˆ๋‹น ์ˆ˜์‹ญ์–ต๊ฐœ์˜ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค. PBKDF2(Password-Based Key Derivation Function) pbkdf2_hmac(ํ•ด์‹œํ•จ์ˆ˜(sha256..), password, salt, iteration, DLen) ํ•ด์‹œํ•จ์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ..