๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

ยท๐Ÿ”  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 ๋‹ค์‹œ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋ฉด ์ž˜๋œ๋‹ค.
flyweight pattern 1. Flyweight Fly(๊ฐ€๋ฒผ์šด) + Weight(๋ฌด๊ฒŒ)๋ฅผ ๋œปํ•˜๋ฉฐ, ๋ณต์‹ฑ์˜ ์ฒด๊ธ‰์—์„œ ์œ ๋ž˜๋˜์—ˆ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์ผ์ผํžˆ ์ธ์Šคํ„ด์Šคํ™” ํ•˜์ง€์•Š๊ณ  ์žฌ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋Š” ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ์˜๋ฏธ๋กœ์„œ ์“ฐ์ธ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ⇒ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ ๋‹ค! ๊ณต์œ ๋œ ์ž์›๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ž์›์˜ ์‚ฌ์šฉ๋Ÿ‰ ์ฐจ์ด 2. Flyweight ํŒจํ„ด ๊ตฌ์กฐ Flyweight : ๊ฒฝ๋Ÿ‰ ๊ฐ์ฒด๋ฅผ ๋ฌถ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ConcreteFlyweight : ๊ณต์œ  ๊ฐ€๋Šฅํ•˜์—ฌ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด(intrinsic state) UnsahredConcreteFlyweight: ๊ณต์œ  ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด (extrinsic state) FlyweightFactory : ๊ฒฝ๋Ÿ‰ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ณต์žฅ ์—ญํ• ๊ณผ ์บ์‹œ ์—ญํ• ์„ ๊ฒธ๋น„ํ•˜๋Š” Flywei..
1. ํ (Queue)ํ๋Š” ์ด๋ ‡๊ฒŒ ์„ ์ž…์„ ์ถœ(FIFO) ๊ตฌ์กฐ์ด๋‹ค.์—ฐ์‚ฐ ๊ณผ์ •์—๋Š”- enqueue : ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์ž‘์—…- dequeue : ํ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—…- front : ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๋ถ€๋ถ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜- rear : ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๋ถ€๋ถ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜์ด๋Ÿฐ ๊ฐœ๋…๋“ค์ด ๋“ฑ์žฅ ํ•œ๋‹ค. 1. ์‰ฝ๊ฒŒ ์ดํ•ด๋ฅผ ์œ„ํ•ด ์˜ˆ์ œ๋ฅผ ์‚ดํŽด ๋ณด๊ฒ ๋‹ค.์šฐ๋ฆฌ๊ฐ€ ์ค„ ์„œ์žˆ๋Š” ๋Œ€๊ธฐ์—ด์„ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.ํ‹ฐ์ผ“ ๋งคํ‘œ์†Œ์— ์ด๋ ‡๊ฒŒ ์ค„์„ ์„œ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.์ค„์„ ์ œ์ผ ๋จผ์ € ์„  A๊ฐ€ ๋จผ์ € ํ‘œ๋ฅผ ์‚ฌ๊ณ , ์ œ์ผ ๋‚˜์ค‘์— ์„  E๊นŒ์ง€ ๋ชจ๋‘ ์ˆœ์„œ๋Œ€๋กœ ํ‘œ๋ฅผ ์‚ด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.์ด๋ ‡๊ฒŒ ๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ F๊ฐ€ ๋“ฑ์žฅํ•ด์„œ ์ค„์„ ์„ ๋‹ค.๊ทธ๋Ÿผ ์ด๋•Œ rear๋Š” ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋งจ ๋’ค์˜ F๋กœ ๋œ๋‹ค.์ด F๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ enqueue ๋ผ๊ณ  ํ•˜๊ณ , F ์ถ”๊ฐ€ํ•  ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”..
Singleton Singleton ํŒจํ„ด? ⇒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•˜๋Š” ํŒจํ„ด ์žฅ์  ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ ์ „์—ญ ์ธ์Šคํ„ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์‰ฌ์›€, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ณด์žฅ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ธํŒ…๊ฐ’( ๋ฐฐ๊ฒฝ์ƒ‰ ), DBCP, ๋กœ๊ทธ ๊ธฐ๋ก ๊ฐ์ฒด DBCP! ํ† ๋ง‰์ƒ์‹! db์™€ ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐํ•˜๋Š” connection ์ž‘์—…์€ ๋น„์šฉ์ด ํผ ⇒ ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ์‚ฌ์šฉ์‹œ ์„œ๋ฒ„ ๋‹ค์šด์—ฌ๋Ÿฌ ์ปค๋„ฅ์…˜๋“ค์„ ๋ฏธ๋ฆฌ ๋‹ด์•„๋‘๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๋นŒ๋ ค์คŒ ์ปค๋„ฅ์…˜์ด ๋‹ค ๋–จ์–ด์ง€๋ฉด ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ์ƒํƒœ๋กœ ์ „ํ™˜ ๋‹ค์ด์–ด๊ทธ๋žจ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ : Eager Initialization (์ด๋ฅธ ์ดˆ๊ธฐํ™”) public class Singl..
--[Quiz]์ตœ๊ทผ 12๊ฐœ์›”๋™์•ˆ์˜ ๋‚ ์งœ(yyyymm)์ถœ๋ ฅํ•˜๊ธฐ SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201501','YYYYMM'), LEVEL-1),'YYYYMM') months FROM DUAL CONNECT BY LEVEL
๋ฌธ์ œ ์„ค๋ช… ๋‹ค์Œ์€ ์–ด๋Š ์˜๋ฅ˜ ์‡ผํ•‘๋ชฐ์˜ ์˜จ๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ์ •๋ณด๋ฅผ ๋‹ด์€ ONLINE_SALE ํ…Œ์ด๋ธ”๊ณผ ์˜คํ”„๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ์ •๋ณด๋ฅผ ๋‹ด์€ OFFLINE_SALE ํ…Œ์ด๋ธ” ์ž…๋‹ˆ๋‹ค. ONLINE_SALE ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE๋Š” ๊ฐ๊ฐ ์˜จ๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ID, ํšŒ์› ID, ์ƒํ’ˆ ID, ํŒ๋งค๋Ÿ‰, ํŒ๋งค์ผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Column name Type Nullable ONLINE_SALE_ID INTEGER FALSE USER_ID INTEGER FALSE PRODUCT_ID INTEGER FALSE SALES_AMOUNT INTEGER FALSE SALES_DATE DATE FALSE ๋™์ผํ•œ ๋‚ ์งœ,..
ํ‚จ์ง€ (Kinzie)
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (5 Page)