๐Ÿ”  Language/JAVA

ยท๐Ÿ”  Language/JAVA
svn ์ ‘์†์ด ์•ˆ๋˜์–ด์„œ ๋จผ๊ฐ€ ํ•˜๊ณ  ๋ดค๋”๋‹ˆ jdk 1.8์ด์–ด๋„ ๋ฒ„์ „์— ๋”ฐ๋ผ tls๊ฐ€ ๊ธฐ๋ณธ ์˜ต์…˜์œผ๋กœ ๋‹ฌ๋ ค์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋‚˜์˜€์Œใ…Ž ์•„๋‹ˆ ์ดํด๋ฆฝ์Šค์—์„œ ์“ฐ๊ณ  ์žˆ๋Š” jdk์˜ ์„ค์ •์„ ๋ฐ”๊พธ๋ผ๋Š” ๊ธ€์ด ์ˆ˜๋‘๋ฃฉ ๋นฝ๋นฝ์ธ๋ฐ ๋„ˆ๋ฌด ์•ˆ๋‚˜์™€์„œ์ด๊ฑฐ์ €๊ฑฐ ๋ณด๋‹ค๊ฐ€์ดํด๋ฆฝ์Šค ์‹คํ–‰ ํŒŒ์ผ ์—ด์–ด๋ณด๋‹ˆ๊นŒ ์‹ค์ œ๋กœ ์“ฐ๋Š” ๊ฒฝ๋กœ์—์„œ ๋ฐ”๊ฟ”์•ผํ•˜๋Š”๊ฑฐ๋”๋ผ..์ด ํŒŒ์ผ ์•ˆ์— ๊ฒฝ๋กœ๊ฐ€ ์žˆ์—ˆ์Œ ์—ฌ๊ธฐ jre์˜ conf -> security์˜ java.security ํŒŒ์ผ์„ ๋…ธํŠธํŒจ๋“œ++ ๊ฐ™์€๊ฑฐ๋กœ ์—ด์–ด์„œ  jdk.tls.disabledAlgorithm์—์„œ  TLSv1, TLSv1.1 ์–˜๋„ค๋ฅผ ๋นผ์ฃผ๋ฉด ๋˜๋Š”๊ฑฐ์˜€๋‹ค.
ยท๐Ÿ”  Language/JAVA
๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ๐Ÿ“Œ ๊ฐ€๋ณ€ vs ๋ถˆ๋ณ€String์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ String์€ ์ž๋ฐ”์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.์ฆ‰, ํ•œ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด(Immutable)๋ผ๋Š” ๊ฒƒ์ด๋‹ค.public final class String implements java.io.Serializable, Comparable, CharSequence, Constable, ConstantDesc { private final byte[] value;}์‹ค์ œ ์ž๋ฐ”์—์„œ String ๋‚ด๋ถ€ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ๋ด๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฌธ์ž์—ด์€ value๋ผ๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ €์žฅ๋œ๋‹ค.valu..
ยท๐Ÿ”  Language/JAVA
๐Ÿ“Œ Arrays.sort & Collections.sort ๋‘˜๋‹ค ์ž๋ฐ”์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.1. Arrays.sort์ด ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.์ฆ‰, ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…๊ณผ ๊ฐ์ฒด ํƒ€์ž…์— ๋Œ€ํ•ด ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. 1๏ธโƒฃ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์˜ ์ •๋ ฌ (int[], double[] ๋“ฑ)ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ Dual-Pivot Quicksort ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.๋‘ ๊ฐœ์˜ ํ”ผ๋ฒ—์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ •๋ ฌํ•œ๋‹ค.์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด๊นŒ์ง€๋Š” ์ด ๊ธ€์ด ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ์šฐ๋ ค๊ฐ€ ์žˆ์–ด์„œ ๋‚˜์ค‘์— ์ •๋ฆฌ ๊ธ€์„ ์˜ฌ๋ฆฌ๊ธฐ๋กœ ํ•œ๋‹ค.์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ‰๊ท ์ ์œผ๋กœ O(n log n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ตœ์•…์˜ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๋งค์šฐ ๋‚ฎ๋‹ค. ..
ยท๐Ÿ”  Language/JAVA
1. ๋ณ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ1-1. ๋ณ€์ˆ˜ : ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ( ๋ณ€ํ•˜๋Š” ๊ฒƒ )-> ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.int age; //age๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์„ ์–ธ/*๋ณ€์ˆ˜ ํƒ€์ž… : int๋ณ€์ˆ˜ ์ด๋ฆ„ : age*/ 1-2. ์ƒ์ˆ˜ : ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ €์žฅ ๊ณต๊ฐ„- ๋ฐ˜๋“œ์‹œ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•˜๋ฉฐ ๊ทธ ํ›„์—” ์ƒ์ˆ˜๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.final int MAX_SPEED ; //์—๋Ÿฌ ์ƒ์ˆ˜๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•ด์•ผ๋งŒ ํ•จfinal int MAX_SPEED = 100; //OK, ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”MAX_SPEED = 200; //์—๋Ÿฌ ์ƒ์ˆ˜์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€  2. ๋ณ€์ˆ˜์˜ ํƒ€์ž…๊ธฐ๋ณธํ˜• vs ์ฐธ์กฐํ˜•๊ธฐ๋ณธํ˜• : ์‹ค์ œ ๊ฐ’(data)๋ฅผ ์ €์žฅ์ฐธ์กฐํ˜• : ์–ด๋–ค ๊ฐ’์ด ์ €์žฅ๋˜์–ด ..
ยท๐Ÿ”  Language/JAVA
์ตœ๊ทผ ํฌํด์šฉ์œผ๋กœ ์˜คํ”ˆ๋งˆ์ผ“ ํ”Œ๋žซํผ์„ ์ฃผ์ œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ํ–ˆ๋Š”๋ฐ, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์ด ๋น ์ ธ์žˆ์–ด์„œ ์ด๋ฒˆ์— ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜๋ ค๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ์„œ์น˜๋ฅผ ํ•ด๋ณธ ๊ฒฐ๊ณผ ELK์Šคํƒ์„ ๋ฐ”๋กœ ์ ์šฉํ• ๊นŒ?ํ•˜๋‹ค๊ฐ€ ์š”์ฆ˜ ์ž์†Œ์„œ๋‹ˆ ์ฝ”ํ…Œ๋‹ˆ ์Šคํ„ฐ๋””๋‹ˆ ํ• ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ๊ธฐ๋„ ํ•˜๊ณ , ์šฐ์„ ์ ์œผ๋กœ ์ƒํ’ˆ ๊ฒ€์ƒ‰ ๋”ฑ ํ•œ ๊ธฐ๋Šฅ์—๋งŒ ์“ธ๊ฑด๋ฐ ๋„ˆ๋ฌด ์˜ค๋ฒ„์ŠคํŽ™์ด์ง€ ์•Š๋‚˜ ์‹ถ์–ด์„œ apache lucence ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์จ๋ณผ ์˜ˆ์ •์ด๋‹ค.
ยท๐Ÿ”  Language/JAVA
* ์กฐ์ธ ํฌ์ธํŠธ(Join point) ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜, ๋ฉ”์†Œ๋“œ ์‹คํ–‰, ์ƒ์„ฑ์ž ํ˜ธ์ถœ, ํ•„๋“œ ๊ฐ’ ์ ‘๊ทผ, static ๋ฉ”์„œ๋“œ ์ ‘๊ทผ ๊ฐ™์€ ํ”„๋กœ ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์ง€์  ์กฐ์ธ ํฌ์ธํŠธ๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ด๋‹ค. AOP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ง€์ ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์Šคํ”„๋ง AOP๋Š” ํ”„๋ก์‹œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์กฐ์ธ ํฌ์ธํŠธ๋Š” ํ•ญ์ƒ ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ์ง€์ ์œผ๋กœ ์ œํ•œ๋œ๋‹ค. * ํฌ์ธํŠธ์ปท(Pointcut) ์กฐ์ธ ํฌ์ธํŠธ ์ค‘์—์„œ ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์ ์šฉ๋  ์œ„์น˜๋ฅผ ์„ ๋ณ„ํ•˜๋Š” ๊ธฐ๋Šฅ ์ฃผ๋กœ AspectJ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์„œ ์ง€์ • ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ”„๋ง AOP๋Š” ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ง€์ ๋งŒ ํฌ์ธํŠธ์ปท์œผ๋กœ ์„ ๋ณ„ ๊ฐ€๋Šฅ * ํƒ€์ผ“(Target) ์–ด๋“œ๋ฐ”์ด์Šค๋ฅผ ๋ฐ›๋Š” ๊ฐ์ฒด, ํฌ์ธํŠธ์ปท์œผ๋กœ ๊ฒฐ์ • * ์–ด๋“œ๋ฐ”์ด์Šค(Advice) ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ํŠน์ • ์กฐ์ธ ํฌ์ธํŠธ์—์„œ Aspect์— ์˜ํ•ด..
ยท๐Ÿ”  Language/JAVA
0. ์ปฌ๋ ‰์…˜ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ํŠน์ง•์„ ์‚ด๋ ค sql ์งˆ์˜์™€ ๊ฐ™์ด ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. → ์„ ์–ธํ˜• ์ด์™€ ๊ฐ™์ด ๋งŽ์€ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ปค๋‹ค๋ž€ ์ปฌ๋ ‰์…˜์€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ⇒ ์ŠคํŠธ๋ฆผ์ด ํ•ด๊ฒฐ์ฑ…! 1. ์ŠคํŠธ๋ฆผ ์†Œ๊ฐœ ์ž๋ฐ” 8์—์„œ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ ์„ ์–ธํ˜•์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฝ”๋“œ ๊ตฌํ˜„ ์—†์ด ๋ณ‘๋ ฌ๋กœ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๋ณ‘๋ ฌํ™”ํ•˜๋ฉด์„œ ์Šค๋ ˆ๋“œ์™€ ๋ฝ์„ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Œ ์ŠคํŠธ๋ฆผ ์ ์šฉ ์ „์˜ ์ž๋ฐ” 7์ฝ”๋“œ List lowCaloricDishes = new ArrayList(); for(Dish dish: menu) { // ๋ˆ„์ ์ž๋กœ ์š”์†Œ ํ•„ํ„ฐ๋ง if(dish.getCalories() < 400) { lowCaloricDishes.add(dish); } } // ์ต๋ช… ํด๋ž˜์Šค๋กœ..
ยท๐Ÿ”  Language/JAVA
์ด๊ฑด ๋‚ด๊ฐ€ ๊ฒฝํ—˜ํ•œ ํŠธ๋Ÿฌ๋ธ”์€ ์•„๋‹ˆ๊ณ  ์šฐ๋ฆฌ ์Šคํ„ฐ๋””์›์ด ๊ฒช์€ ์—๋Ÿฌ๋ฅผ ๊ฐ™์ด ํ•ด๊ฒฐํ•ด๋ดค๋‹ค. ์žฌ๋ฐŒ์—ˆ์–ด์„œ ํฌ์ŠคํŒ…. spring data jpa + spring boot 3.2.0 + h2 2.2.224 + querydsl 5.0.0 ํ™˜๊ฒฝ๊ตฌ์„ฑ์ด๋‹ค. ์ „์— h2DB๋ฅผ 1.4.๋ช‡์œผ๋กœ ๊น”์•„๋†จ์—ˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ผ๋‹จ DB๋Š” ๋‹ค ์‚ญ์ œ ํ–ˆ๊ณ  ๋‹ค์‹œ ๋ฒ„์ „์— ๋งž๋Š” ๊ฑธ ์„ค์น˜ํ–ˆ๋Š”๋ฐ๋„ Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "start_value" not found [42122-224] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' d..
ยท๐Ÿ”  Language/JAVA
๋žŒ๋‹ค ํ‘œํ˜„์‹ 3.1 ๋žŒ๋‹ค๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ๋‹จ์ˆœํ™”ํ•œ ๊ฒƒ [ํŠน์ง•] ์ต๋ช… ๋ณดํ†ต์˜ ๋ฉ”์„œ๋“œ์™€ ๋‹ฌ๋ฆฌ ์ด๋ฆ„์ด ์—†์œผ๋ฏ€๋กœ ์ต๋ช…์ด๋ผ ํ‘œํ˜„ํ•œ๋‹ค. ํ•จ์ˆ˜ ๋žŒ๋‹ค๋Š” ๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ํŠน์ • ํด๋ž˜์Šค์— ์ข…์†๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฆฌ์ŠคํŠธ, ๋ฐ”๋””, ๋ฐ˜ํ™˜ ํ˜•์‹, ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ๋‹ค. ์ „๋‹ฌ ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ๋ฉ”์„œ๋“œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ„๊ฒฐ์„ฑ ์ต๋ช… ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๋งŽ์€ ์ž์งˆ๊ตฌ๋ ˆํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋žŒ๋‹ค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ”๊พผ ์ฝ”๋“œ Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()..
ยท๐Ÿ”  Language/JAVA
๊น€์˜ํ•œ ์„ ์ƒ๋‹˜ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์Šคํ”„๋ง๋ถ€ํŠธ 3.1.5๋กœ ์—…๊ธ€ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ. gradle ๋ฒ„์ „ ์ถฉ๋Œ ๋ฌธ์ œ๋‹ค ํ”„๋กœ์ ํŠธ ์ด๋ฆ„/gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip ์ด๊ฑฐ๋ฅผ distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip 7.2 -> 7.6 ๋ณ€๊ฒฝ ํ›„ gradle ๋‹ค์‹œ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋ฉด ์ž˜๋œ๋‹ค.
ํ‚จ์ง€ (Kinzie)
'๐Ÿ”  Language/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก