์šฐ๋ฆฌ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. ์กธ์—… ์„œ๋ฅ˜ ์ค€๋น„ํ•˜๊ธฐ