우리FISA

πŸ“ 우리 FISA ν΄λΌμš°λ“œμ—”μ§€λ‹ˆμ–΄λ§ 2μ£Όμ°¨ 기둝

ν΄λ‘œμ΄πŸ“ 2023. 12. 3. 12:35

 

μž…κ³Ό μ„ λ¬Ό

μ΄λ²ˆμ£Όμ—λŠ” 에코백에 μ—¬λŸ¬ 선물을 λ°›μ•˜λ‹€.

제일 λ§ˆμŒμ— λ“œλŠ”κ±° λ©€ν‹° ν—ˆλΈŒ,,,, κ°œλ°œμžμ—κ²Œ ν•„μš”ν•œ λ¬Όν’ˆλ“€λ‘œ λ°›μ•„μ„œ λ­”κ°€ 물건 κ³ λ₯΄λŠ” μ„ΌμŠ€κ°€ μžˆλ‹€κ³  λŠκΌˆλ‹Ήγ…Ž

μ„ λ¬Ό λ°›μœΌλ‹ˆκΉŒ λ­”κ°€ μ†Œμ†κ°λ„ λ“€κ³  μ’‹μ•˜λ‹Ή πŸ˜€

 

 

πŸ“‹ μˆ˜μ—… 기둝

πŸ” Singleton Design Pattern (싱글톀 λ””μžμΈ νŒ¨ν„΄)

βœ”οΈ What?
ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ§Œ μƒμ„±ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” λ””μžμΈ νŒ¨ν„΄, μΈμŠ€ν„΄μŠ€κ°€ ν•„μš”ν•˜λ©΄ λ˜‘κ°™μ€ μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ§€ μ•Šκ³  기쑴의 μΈμŠ€ν„΄μŠ€ ν™œμš©
μƒμ„±μžκ°€ μ—¬λŸ¬λ²ˆ 호좜되고 μ‹€μ œ μƒμ„±λ˜λŠ” κ°μ²΄λŠ” ν•˜λ‚˜, 졜초둜 μƒμ„±λœ 이후에 호좜된 μƒμ„±μžλŠ” 이미 μƒμ„±ν•œ 객체λ₯Ό λ°˜ν™˜

 

βœ”οΈ Why?
1️⃣ λ©”λͺ¨λ¦¬ 이점
κ°μ²΄λŠ” 생성할 λ•Œλ§ˆλ‹€ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›μ•„μ•Ό ν•œλ‹€. ν•œλ²ˆμ˜ newλ₯Ό 톡해 객체λ₯Ό μƒμ„±ν•˜λ©΄ λ©”λͺ¨λ¦¬ λ‚­λΉ„λ₯Ό λ°©μ§€

2️⃣ 속도 이점
이미 μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό ν™œμš©ν•΄ μ†λ„μ—μ„œ 이점을 가짐

3️⃣ 데이터 곡유 이점
μ‹±κΈ€ν†€μœΌλ‘œ κ΅¬ν˜„ν•œ μΈμŠ€ν„΄μŠ€λŠ” μ „μ—­μ΄λ―€λ‘œ λ‹€λ₯Έ ν΄λž˜μŠ€λ“€μ˜ μΈμŠ€ν„΄μŠ€λ“€μ΄ 데이터λ₯Ό κ³΅μœ ν•˜λŠ” 것이 κ°€λŠ₯함, ν•˜μ§€λ§Œ λ™μ‹œμ„± λ¬Έμ œμ— 주의

 

βœ”οΈ When?
주둜 κ³΅ν†΅λœ 객체λ₯Ό μ—¬λŸ¬κ°œ μƒμ„±ν•΄μ„œ μ‚¬μš©ν•΄μ•Όν•˜λŠ” 상황

βœ”οΈ Where?
데이터 λ² μ΄μŠ€μ—μ„œ 컀λ„₯μ…˜ν’€, μŠ€λ ˆμŠ€ν’€, μΊμ‹œ, 둜그 기둝 객체 λ“±..

 

βœ”οΈ Any Cons?
객체 μ§€ν–₯ 섀계 원칙 쀑, κ°œλ°©-폐쇄 μ›μΉ™
싱글톀 μΈμŠ€ν„΄μŠ€κ°€ 혼자 λ„ˆλ¬΄ λ§Žμ€ 일을 ν•˜κ±°λ‚˜, λ§Žμ€ 데이터λ₯Ό κ³΅μœ μ‹œν‚€λ©΄ λ‹€λ₯Έ ν΄λž˜μŠ€λ“€κ°„μ˜ 결합도 μƒμŠΉ
-> 개방 폐쇄 μ›μΉ™μ˜ μœ„λ°°, 결합도가 λ†’μœΌλ©΄ μœ μ§€λ³΄μˆ˜κ°€ νž˜λ“€κ³  ν…ŒμŠ€νŠΈλ₯Ό μ›ν™œν•˜κ²Œ μ§„ν–‰ν•˜κΈ° 어렀움

λ©€ν‹° 슀레슀 ν™˜κ²½μ—μ„œμ˜ 동기화 처리λ₯Ό ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ, μΈμŠ€ν„΄μŠ€κ°€ 2개 μƒμ„±λ˜λŠ” 문제 λ°œμƒ κ°€λŠ₯

 

 

싱글톀 νŒ¨ν„΄ κ΅¬ν˜„ μ˜ˆμ‹œ

public class Singleton{

    // 단 1개만 μ‘΄μž¬ν•΄μ•Ό ν•˜λŠ” 객체의 μΈμŠ€ν„΄μŠ€λ‘œ static μ„ μ–Έ
    private static Singleeton instance;

    // private μƒμ„±μžλ‘œ μ™ΈλΆ€μ—μ„œ 객체 생성 λΆˆκ°€
    private Singleton(){}

    // μ™ΈλΆ€μ—μ„œλŠ” getInstance()둜 instance λ°˜ν™˜
    // getInstance() λ©”μ„œλ“œκ°€ 처음 싀행될 λ•Œλ§Œ ν•˜λ‚˜μ˜ instance 생성, μ΄ν›„μ—λŠ” 이미 μƒμ„±λœ instance return
    public static Singleton getInstance(){

        // instanceκ°€ null일 λ•Œλ§Œ 생성
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
// 같은 instance인지 Test ν•˜κΈ°

public class Application {
    public static void main(String[] args) {

        // 객체 2개 생성
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();

        System.out.println(singleton1);
        System.out.println(singleton2);
    }
}
        /** Output
         * vendingmachine.Singleton@15db9742
         * vendingmachine.Singleton@15db9742
         **/

 

좜처
https://velog.io/@seongwon97/싱글톀Singleton-νŒ¨ν„΄μ΄λž€
https://gyoogle.dev/blog/design-pattern/Singleton%20Pattern.html

 


πŸ” λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš© μˆœμ„œ

  1. Database 생성
  2. table 생성 -> create
  3. 데이터 μ €μž₯ 및 쑰회(검색) -> insert, select
  4. 데이터 μˆ˜μ •, μ‚­μ œ -> update, delete
  5. κΆŒν•œ λΆ€μ—¬ -> grant
  6. λ°μ΄ν„°μ˜ μ •ν•©μ„± κ³ λ €ν•˜μ—¬ 무결성 보μž₯ -> νƒ€μž… μ œν•œ, κΈ€μžμˆ˜ μ œν•œ, 쀑볡 λΆˆκ°€, κΈ°μ€€κ°’(고유+nullκ°’ λΆˆκ°€)
  7. νŒŒν‹°μ…˜ 적용(mysql) -> λŒ€μš©λŸ‰ 데이터 μΉ΄ν…Œκ³ λ¦¬ν™”

πŸ” SQL μˆœμ„œ

βœ”οΈ 문법 μˆœμ„œ
SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY

 

βœ”οΈ μ‹€ν–‰ μˆœμ„œ
FROM - > ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY

 


πŸ” SQL 검색 쑰건

  • `*` : λͺ¨λ“  검색, all
  • `%` : 문자 κ°œμˆ˜μ™€ 무관
  • `_` : 문자 ν•˜λ‚˜ 의미
// λ¬Έμžμ—΄ λ‘λ²ˆμ§Έμ— M이 였고 κ·Έ λ’€λ‘œλŠ” μƒκ΄€μ—†μŒ
where ename like '_M%';

// μ•žλ’€ μƒκ΄€μ—†μŒ, λ¬Έμžμ—΄μ— M만 λ“€μ–΄κ°€λ©΄ 됨
where ename like '%M%';

 


πŸ” SQL λ‚ μ§œ ν•¨μˆ˜

  • ν˜„μž¬ μ‹œμŠ€ν…œ λ‚ μ§œμ— λŒ€ν•œ 정보 제곡
    • sysdate(), now() : λ…„ μ›” 일 μ‹œ λΆ„ 초
    • curdate() : λ…„ μ›” 일

 

  • 일자 계산 ν•¨μˆ˜
    • datediff(a, b) : a-b
    • interval : 간격
// ν˜„μž¬ μ‹œκ°„μ—μ„œ 1일 ν›„μ˜ μ‹œκ°μ„ ꡬ함
select now() + interval 1 day;

 

  • λ‚ μ§œ λ”ν•˜λŠ” ν•¨μˆ˜
    • ADDDATE()
    • adddate(sysdate(), 10) -> 10일 ν›„

 

  • 두 λ‚ μ§œ μ‚¬μ΄μ˜ κ°œμ›” 수 검색
    • dayofyear() : ν˜„μž¬ μ†ν•œ λ…„μ˜ 1μ›” 1μΌλΆ€ν„°μ˜ ν˜„μž¬κΉŒμ§€ 일자 μ„ΈλŠ” ν•¨μˆ˜
    • dayofmonth() : ν•΄λ‹Ή λ‹¬μ˜ μ§€λ‚œ 일수

πŸ” SQL JOIN

쑰인은 λ‚΄κ°€ μ˜ˆμ „μ— μ“΄ git으둜 λŒ€μ²΄ ~

https://github.com/chloe1129/code_notes/blob/master/SQL/09_join.md

 

 

🧠 회고

반 μ‚¬λžŒλ“€ν•œν…Œ 생일 μΆ•ν•˜ λ°›μŒ~

 

생일도 있고 면접도 μžˆμ–΄μ„œ λ­”κ°€ μ •μ‹  μ—†μ—ˆλ˜ ν•œ μ£Όμ˜€λ‹€.
생일도 ν–‰λ³΅ν•˜κ²Œ λ³΄λƒˆκ³  면접도 잘(?) 본것같기도...

λ°μ΄ν„°λ² μ΄μŠ€ λ°°μ› λŠ”λ° μ•„λŠ” λ‚΄μš©μ΄μ–΄λ„ ν—·κ°ˆλ¦¬λŠ” 것도 많고 κ·Έλž˜μ„œ λ‹€μ‹œ ν•œλ²ˆ ν™•μΈν•˜λŠ” μ‹œκ°„μ„ κ°€μ Έμ„œ μ’‹μ•˜λ‹€.
슬슬 μ™”λ‹€κ°”λ‹€ ν•˜λŠ”κ±° μ μ‘λ˜λŠ”κ²ƒκ°™μ•„μ„œ 닀행이닀.
κ·Έλž˜λ„ 좜근길 λ²„μŠ€λŠ” μ§€μ˜₯ κ·Έμž‘μ±„γ… 

μ΄λ²ˆμ£ΌλŠ” νŠΉμ΄ν•˜κ²Œ 금육 BIZ νŠΉκ°•μ΄ μžˆμ—ˆλ‹€.
우리FIS ν˜„μ§μžλΆ„λ“€μ΄ μ˜€μ…”μ„œ μ—¬λŸ¬ 금육 도메인 지식을 μ„€λͺ…ν•΄ μ£Όμ…¨λŠ”λ° κΈˆμœ΅κΆŒμ—μ„œ μ–΄λ–€ 업무λ₯Ό ν•˜λŠ”μ§€ μžμ„Ένžˆ μ•Œ 수 μžˆλŠ” μ‹œκ°„μ΄μ—ˆλ‹€.
μ–΄λ €μ› μ§€λ§Œ 이번 νŠΉκ°•μ„ 톡해 κΈˆμœ΅κΆŒμ—μ„œ μ΄λ£¨μ–΄μ§€λŠ” 업무 μ€‘μ—μ„œ λ‚˜μ˜ 관심사λ₯Ό 더 잘 μ•Œ 수 μžˆμ—ˆκ³  μœ μ΅ν•œ μ‹œκ°„μ΄μ—ˆλ‹Ή~

 

 

 

πŸ‘ŠπŸ» 3μ£Όμ°¨ κ³„νš

  1. λ©΄μ ‘ 잘 보기
  2. μ•Œκ³ λ¦¬μ¦˜ 문제 맀일맀일 ν’€κΈ°
  3. μˆ˜μ—… λλ‚˜κ³  κ³΅λΆ€ν•˜λ‹€ μ§‘ κ°€κΈ°
  4. μ•„μΉ¨ 챙겨먹고 간식 μ•ˆλ¨ΉκΈ° (제발)
  5. μ‘Έμ—… μ„œλ₯˜ μ€€λΉ„ν•˜κΈ°