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..
๐ Arrays.sort & Collections.sort ๋๋ค ์๋ฐ์์ ๋ฐฐ์ด์ ์ ๋ ฌ ํ ๋ ์ฌ์ฉ๋๋ค.1. Arrays.sort์ด ๋ฉ์๋๋ ๋ฐฐ์ด์ ํ์
์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.์ฆ, ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์
๊ณผ ๊ฐ์ฒด ํ์
์ ๋ํด ๋ค๋ฅด๊ฒ ๋์ํ๋ค. 1๏ธโฃ ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์
์ ์ ๋ ฌ (int[], double[] ๋ฑ)ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์
์ ๋ฐฐ์ด์ ์ ๋ ฌํ ๋ Dual-Pivot Quicksort ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.๋ ๊ฐ์ ํผ๋ฒ์ ์ฌ์ฉํด์ ๋ฐฐ์ด์ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋๊ณ ์ ๋ ฌํ๋ค.์๊ณ ๋ฆฌ์ฆ ์ ๋ณด๊น์ง๋ ์ด ๊ธ์ด ๋๋ฌด ๊ธธ์ด์ง ์ฐ๋ ค๊ฐ ์์ด์ ๋์ค์ ์ ๋ฆฌ ๊ธ์ ์ฌ๋ฆฌ๊ธฐ๋ก ํ๋ค.์ด ์๊ณ ๋ฆฌ์ฆ์ ํ๊ท ์ ์ผ๋ก O(n log n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฉฐ, ์ต์
์ ๊ฒฝ์ฐ O(n^2)๊น์ง ๊ฐ ์ ์์ง๋ง, ์ต์
์ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ๋งค์ฐ ๋ฎ๋ค. ..
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)๋ฅผ ์ ์ฅ์ฐธ์กฐํ : ์ด๋ค ๊ฐ์ด ์ ์ฅ๋์ด ..
์ต๊ทผ ํฌํด์ฉ์ผ๋ก ์คํ๋ง์ผ ํ๋ซํผ์ ์ฃผ์ ๋ก ํ๋ก์ ํธ๋ฅผ ํ๋ ํ๋๋ฐ, ๊ฒ์ ๊ธฐ๋ฅ์ด ๋น ์ ธ์์ด์ ์ด๋ฒ์ ๊ตฌํํ๋ ค๊ณ ํ๋ค ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ์ ํ๋ ค๊ณ ์ฌ๊ธฐ์ ๊ธฐ ์์น๋ฅผ ํด๋ณธ ๊ฒฐ๊ณผ ELK์คํ์ ๋ฐ๋ก ์ ์ฉํ ๊น?ํ๋ค๊ฐ ์์ฆ ์์์๋ ์ฝํ
๋ ์คํฐ๋๋ ํ ๊ฒ ๋๋ฌด ๋ง๊ธฐ๋ ํ๊ณ , ์ฐ์ ์ ์ผ๋ก ์ํ ๊ฒ์ ๋ฑ ํ ๊ธฐ๋ฅ์๋ง ์ธ๊ฑด๋ฐ ๋๋ฌด ์ค๋ฒ์คํ์ด์ง ์๋ ์ถ์ด์ apache lucence ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์จ๋ณผ ์์ ์ด๋ค.
* ์กฐ์ธ ํฌ์ธํธ(Join point) ์ด๋๋ฐ์ด์ค๊ฐ ์ ์ฉ๋ ์ ์๋ ์์น, ๋ฉ์๋ ์คํ, ์์ฑ์ ํธ์ถ, ํ๋ ๊ฐ ์ ๊ทผ, static ๋ฉ์๋ ์ ๊ทผ ๊ฐ์ ํ๋ก ๊ทธ๋จ ์คํ ์ค ์ง์ ์กฐ์ธ ํฌ์ธํธ๋ ์ถ์์ ์ธ ๊ฐ๋
์ด๋ค. AOP๋ฅผ ์ ์ฉํ ์ ์๋ ๋ชจ๋ ์ง์ ์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค. ์คํ๋ง AOP๋ ํ๋ก์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฏ๋ก ์กฐ์ธ ํฌ์ธํธ๋ ํญ์ ๋ฉ์๋ ์คํ ์ง์ ์ผ๋ก ์ ํ๋๋ค. * ํฌ์ธํธ์ปท(Pointcut) ์กฐ์ธ ํฌ์ธํธ ์ค์์ ์ด๋๋ฐ์ด์ค๊ฐ ์ ์ฉ๋ ์์น๋ฅผ ์ ๋ณํ๋ ๊ธฐ๋ฅ ์ฃผ๋ก AspectJ ํํ์์ ์ฌ์ฉํด์ ์ง์ ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ ์คํ๋ง AOP๋ ๋ฉ์๋ ์คํ ์ง์ ๋ง ํฌ์ธํธ์ปท์ผ๋ก ์ ๋ณ ๊ฐ๋ฅ * ํ์ผ(Target) ์ด๋๋ฐ์ด์ค๋ฅผ ๋ฐ๋ ๊ฐ์ฒด, ํฌ์ธํธ์ปท์ผ๋ก ๊ฒฐ์ * ์ด๋๋ฐ์ด์ค(Advice) ๋ถ๊ฐ ๊ธฐ๋ฅ ํน์ ์กฐ์ธ ํฌ์ธํธ์์ Aspect์ ์ํด..
0. ์ปฌ๋ ์
์ปฌ๋ ์
์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ฒ๋ฆฌํ๋ ํน์ง์ ์ด๋ ค sql ์ง์์ ๊ฐ์ด ๋น์ทํ๊ฒ ๋ง๋ค ์ ์๋ค. → ์ ์ธํ ์ด์ ๊ฐ์ด ๋ง์ ์์๋ฅผ ํฌํจํ๋ ์ปค๋ค๋ ์ปฌ๋ ์
์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ํ์ํ๋ค. ⇒ ์คํธ๋ฆผ์ด ํด๊ฒฐ์ฑ
! 1. ์คํธ๋ฆผ ์๊ฐ ์๋ฐ 8์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ ์ ์ธํ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ ๋ฉํฐ์ค๋ ๋ ์ฝ๋ ๊ตฌํ ์์ด ๋ณ๋ ฌ๋ก ํฌ๋ช
ํ๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ณ๋ ฌํํ๋ฉด์ ์ค๋ ๋์ ๋ฝ์ ๊ฑฑ์ ํ ํ์๊ฐ ์์ ์คํธ๋ฆผ ์ ์ฉ ์ ์ ์๋ฐ 7์ฝ๋ List lowCaloricDishes = new ArrayList(); for(Dish dish: menu) { // ๋์ ์๋ก ์์ ํํฐ๋ง if(dish.getCalories() < 400) { lowCaloricDishes.add(dish); } } // ์ต๋ช
ํด๋์ค๋ก..
์ด๊ฑด ๋ด๊ฐ ๊ฒฝํํ ํธ๋ฌ๋ธ์ ์๋๊ณ ์ฐ๋ฆฌ ์คํฐ๋์์ด ๊ฒช์ ์๋ฌ๋ฅผ ๊ฐ์ด ํด๊ฒฐํด๋ดค๋ค. ์ฌ๋ฐ์์ด์ ํฌ์คํ
. 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..
๋๋ค ํํ์ 3.1 ๋๋ค๋ ๋ฌด์์ธ๊ฐ? ๋ฉ์๋๋ก ์ ๋ฌํ ์ ์๋ ์ต๋ช
ํจ์๋ฅผ ๋จ์ํํ ๊ฒ [ํน์ง] ์ต๋ช
๋ณดํต์ ๋ฉ์๋์ ๋ฌ๋ฆฌ ์ด๋ฆ์ด ์์ผ๋ฏ๋ก ์ต๋ช
์ด๋ผ ํํํ๋ค. ํจ์ ๋๋ค๋ ๋ฉ์๋์ฒ๋ผ ํน์ ํด๋์ค์ ์ข
์๋์ง ์์ผ๋ฏ๋ก ํจ์๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ์ง๋ง ๋ฉ์๋์ฒ๋ผ ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ, ๋ฐ๋, ๋ฐํ ํ์, ๊ฐ๋ฅํ ์์ธ ๋ฆฌ์คํธ๋ฅผ ํฌํจํ๋ค. ์ ๋ฌ ๋๋ค ํํ์์ ๋ฉ์๋ ์ธ์๋ก ์ ๋ฌํ๊ฑฐ๋ ๋ณ์๋ก ์ ์ฅํ ์ ์๋ค. ๊ฐ๊ฒฐ์ฑ ์ต๋ช
ํด๋์ค์ฒ๋ผ ๋ง์ ์์ง๊ตฌ๋ ํ ์ฝ๋๋ฅผ ๊ตฌํํ ํ์๊ฐ ์๋ค. ๋๋ค๋ฅผ ํ์ฉํ์ฌ ๋ฐ๊พผ ์ฝ๋ Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()..
๊น์ํ ์ ์๋ ์๋ฐ ์ฝ๋๋ฅผ ์คํ๋ง๋ถํธ 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 ๋ค์ ์๋ก ๊ณ ์นจํ๋ฉด ์๋๋ค.