[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 4ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ

2023. 4. 11. 23:26ยท์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

 

 

 

1. ํ˜„์žฌ IPv4์˜ ํ™•์žฅํ˜•์œผ๋กœ IPv4๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฃผ์†Œ ๊ณ ๊ฐˆ, ๋ณด์•ˆ์„ฑ, ์ด๋™์„ฑ ์ง€์› ๋“ฑ์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ๋œ 128๋น„ํŠธ ์ฃผ์†Œ์ฒด๊ณ„๋ฅผ ๊ฐ–๋Š” ์ฐจ์„ธ๋Œ€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์€ ๋ฌด์—‡์ธ๊ฐ€?

๋”๋ณด๊ธฐ

IPv6

 

ํ˜„์žฌ IPv4์˜ ํ™•์žฅํ˜•์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์ฐจ์„ธ๋Œ€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์€ IPv6์ž…๋‹ˆ๋‹ค.

IPv6๋Š” IPv4์˜ 32๋น„ํŠธ ์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ 128๋น„ํŠธ ์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ,

์ด๋ฅผ ํ†ตํ•ด ์ฃผ์†Œ ๊ณ ๊ฐˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ๋” ๋งŽ์€ ์žฅ์น˜๋“ค์ด ์ธํ„ฐ๋„ท์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, IPv6๋Š” IPv4์™€ ๋น„๊ตํ•˜์—ฌ ๋” ๋†’์€ ๋ณด์•ˆ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ์˜ ์ด๋™์„ฑ ์ง€์›์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

 

2. ๋ชฉ์ ์— ๋”ฐ๋ฅธ ๋””์ž์ธ ํŒจํ„ด์˜ ์œ ํ˜•์—๋Š” ์ƒ์„ฑ, ๊ตฌ์กฐ, (  ) ์ด/๊ฐ€ ์žˆ๋‹ค. ๊ด„ํ˜ธ (   ) ์•ˆ์— ์•Œ๋งž๋Š” ์œ ํ˜•์„ ์“ฐ์‹œ์˜ค.

๋”๋ณด๊ธฐ

ํ–‰์œ„

 

๋ชฉ์ ์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋ถ„๋ฅ˜

  1. ์ƒ์„ฑ(Creational) ํŒจํ„ด : ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด์œผ๋กœ, ๊ฐ์ฒด ์ƒ์„ฑ์„ ์บก์Аํ™”ํ•˜๊ณ , ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” Singleton, Factory, Builder ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ตฌ์กฐ(Structural) ํŒจํ„ด : ๊ฐ์ฒด๋“ค์˜ ๊ตฌ์„ฑ์„ ๋‹ค๋ฃจ๋Š” ํŒจํ„ด์œผ๋กœ, ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , ์ƒ์†, ๊ตฌ์„ฑ ๋“ฑ์„ ํ†ตํ•ด ๋” ํฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” Adapter, Facade, Decorator ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ํ–‰์œ„(Behavioral) ํŒจํ„ด : ๊ฐ์ฒด๋“ค์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์—ญํ• ์„ ๋‹ค๋ฃจ๋Š” ํŒจํ„ด์œผ๋กœ, ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๊ณผ ์—ญํ• ์„ ์ •์˜ํ•˜์—ฌ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„ค๊ณ„๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” Observer, Command ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. ๋‹ค์Œ์€ ํŒ๋งค์™€ ๊ด€๋ จ๋œ ๋‹ค์ด์–ด๊ทธ๋žจ์ด๋‹ค. ํ•ด๋‹น ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ๋ช…์นญ์„ ์“ฐ์‹œ์˜ค. 

๋”๋ณด๊ธฐ

ํŒจํ‚ค์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ

 

ํŒจํ‚ค์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ(Package Diagram)์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” UML ๋‹ค์ด์–ด๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋‚˜ ํด๋ž˜์Šค๋“ค์„ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด์„œ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

 

ํŒจํ‚ค์ง€๋Š” ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋‚˜ ํ•˜์œ„ ํŒจํ‚ค์ง€๋ฅผ ๋ฌถ์–ด์„œ ๊ตฌ์„ฑํ•˜๋ฉฐ, ํŒจํ‚ค์ง€ ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„,

์ฆ‰ ํŒจํ‚ค์ง€๊ฐ€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ™”์‚ดํ‘œ๋กœ ํ‘œ์‹œํ•˜์—ฌ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํšŒ๋ณต(Recovery) ๊ธฐ๋ฒ• ์ค‘ Rollback ์‹œ Redo, Undo๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋˜๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฒ•์œผ๋กœ

ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ค‘ ๊ฐฑ์‹  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ DB์— ๋ฐ˜์˜ํ•˜๋Š” ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?

๋”๋ณด๊ธฐ

์ฆ‰๊ฐ ๊ฐฑ์‹  ํšŒ๋ณต ๊ธฐ๋ฒ•

 

์ฆ‰๊ฐ ๊ฐฑ์‹  ํšŒ๋ณต ๊ธฐ๋ฒ•(Immediate Update Recovery Technique)์€

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณต๊ตฌ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ๋ฒ•์€ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๋Š” ์ฆ‰์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๋ถ€๋ถ„์ด๋‚˜ ์ „์ฒด๋ฅผ ๋””์Šคํฌ์— ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 

์ง€์—ฐ ๊ฐฑ์‹  ํšŒ๋ณต ๊ธฐ๋ฒ• :

ํŠธ๋žœ์žญ์…˜์˜ ๋ถ€๋ถ„ ์™„๋ฃŒ ์ƒํƒœ์—์„  ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋กœ๊ทธ ํŒŒ์ผ์—๋งŒ ์ €์žฅ

 

 

5. ๋‹ค์Œ์€ n์ด 10์ผ ๋•Œ, 10์„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. 1,2์— ์•Œ๋งž๋Š” ๊ฐ’์„ ์ ์œผ์‹œ์˜ค.

[์ถœ๋ ฅ๊ฒฐ๊ณผ] : 1010

class good {
	public static void main (String[] args) {
    	int[]a = new int[8];
        int i=0; int n=10;
        while (  1.  ) {
        	a[i++] = (  2.  );
            n /= 2;
        }
        for(i=7; i>=0; i--){
         System.out.print(a[i]);
        }
     }
  }
๋”๋ณด๊ธฐ

1. n>0

2. n%2

 

ํ•ด๋‹น ์ฝ”๋“œ๋Š” 10์ง„์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

๋จผ์ €, ๊ธธ์ด๊ฐ€ 8์ธ int ๋ฐฐ์—ด a๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜ i์™€ n์„ 0๊ณผ 10์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

while ๋ฃจํ”„์—์„œ๋Š” n์ด 0๋ณด๋‹ค ํด ๋•Œ๊นŒ์ง€

a[i++]์— n์„ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ , n์„ 2๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด a ๋ฐฐ์—ด์—๋Š” n์„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์—ญ์ˆœ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

for ๋ฃจํ”„์—์„œ๋Š” a ๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜์—ฌ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, ํ•ด๋‹น ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” 10์ง„์ˆ˜ 10์„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ์ธ 1010์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

6. ๋‹ค์Œ์€ ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  , 1,2์— ์•Œ๋งž๋Š” ๊ฐ’์„ ์ ์œผ์‹œ์˜ค.

[์ถœ๋ ฅ ๊ฒฐ๊ณผ] 

1 4 7 10 13

2 5 8 11 14

3 6 9 12 15 

public class good {
	public static void main(String[] args) {
    	int[][]a = new int[(1.)][(2.)];
        for(int i = 0; i <3; i++){
        for(int j=0; j < 5; j++){
        a[i][j] = j*3+(i+1);
        	System.out.print(a[i][j]+"");
         }
         System.out.println();
       }
     }
   }
๋”๋ณด๊ธฐ
new int[3][5]

1. ๋ฐฐ์—ด์˜ ํ–‰์˜ ๊ฐœ์ˆ˜

2. ๋ฐฐ์—ด์˜ ์—ด์˜ ๊ฐœ์ˆ˜

 

7. ์Šค๋‹ˆํ•‘(Sniffing)์— ๋Œ€ํ•˜์—ฌ ์„œ์ˆ ํ•˜์‹œ์˜ค.

๋”๋ณด๊ธฐ

์Šค๋‹ˆํ•‘(Sniffing)์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑ„์„œ ๊ทธ ๋‚ด์šฉ์„ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๊ณผ์ •์—์„œ ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑ„์„œ ๊ทธ ๋‚ด์šฉ์„ ํ•ด๋…ํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•จ์œผ๋กœ์จ

๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ํ†ต์‹  ๋‚ด์šฉ์„ ๋ชฐ๋ž˜ ์—ฟ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

8. IP ํŒจํ‚ท์—์„œ ์™ธ๋ถ€์˜ ๊ณต์ธ IP์ฃผ์†Œ์™€ ํฌํŠธ ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด๋ถ€ IP์ฃผ์†Œ๋ฅผ ์žฌ๊ธฐ๋กํ•˜์—ฌ

๋ผ์šฐํ„ฐ๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€?

๋”๋ณด๊ธฐ

NAT(Network Address Translation)

 

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ํ†ต์‹ ์„ ํ•  ๋•Œ,

ํŒจํ‚ท์˜ ์†ก์‹ ์ง€ ์ฃผ์†Œ๋Š” ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ํ• ๋‹น๋œ ์‚ฌ์„ค IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ์ด๊ธฐ ๋•Œ๋ฌธ์—

์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†ก๋˜๋Š” IP ํŒจํ‚ท์˜ ์†ก์‹ ์ง€ ์ฃผ์†Œ๋ฅผ ์™ธ๋ถ€์—์„œ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์ธ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์€ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ณ€ํ™˜(Network Address Translation, NAT)์ž…๋‹ˆ๋‹ค.

NAT๋Š” ๋ผ์šฐํ„ฐ๋‚˜ ๋ฐฉํ™”๋ฒฝ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์žฅ๋น„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ๋กœ ํ†ต์‹ ํ•  ๋•Œ ๋‚ด๋ถ€ ์ฃผ์†Œ๋ฅผ ๊ณต์ธ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

 

9. ๋‹ค์Œ์€ ํŒŒ์ด์ฌ ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค.

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
	for sub in lol;
    	for item in sub;
        	print(item, end = '')
        print()
๋”๋ณด๊ธฐ

์ถœ๋ ฅ ๊ฒฐ๊ณผ

[1, 2, 3]
7
123
45
6789

 

lol[0]์€ lol ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์ธ [1, 2, 3]์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

lol[2][1]์€ lol ๋ฆฌ์ŠคํŠธ์˜ ์„ธ ๋ฒˆ์งธ ์š”์†Œ์ธ [6, 7, 8, 9] ์ค‘์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์ธ 7์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ lol์˜ ๊ฐ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

for sub in lol์€ lol ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ sub์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

for item in sub์€ sub ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ item์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

print(item, end='')์€ item์„ ์ถœ๋ ฅํ•˜๋˜ ์ค„๋ฐ”๊ฟˆ ์—†์ด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

print()๋Š” ์ค„๋ฐ”๊ฟˆ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

10. ๋ถ„์‚ฐ ์ปดํ“จํŒ… ๊ธฐ์ˆ  ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์œ„๋ณ€์กฐ ๋ฐฉ์ง€ ๊ธฐ์ˆ ๋กœ P2P๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ

์†Œ๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ํ˜•์„ฑ๋œ '๋ธ”๋ก'์ด๋ผ๋Š” ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ ํ™˜๊ฒฝ์— ๊ด€๋ฆฌ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•จ์œผ๋กœ์จ

๋ˆ„๊ตฌ๋„ ์ž„์˜๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ณ  ๋ˆ„๊ตฌ๋‚˜ ๋ณ€๊ฒฝ์˜ ๊ฒฐ๊ณผ๋ฅผ ์—ด๋žŒํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€?

๋”๋ณด๊ธฐ

๋ธ”๋ก์ฒด์ธ(Blockchain)

 

11. ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ถ„์‚ฐ ์ปดํ“จํŒ… ํ”Œ๋žซํผ์œผ๋กœ, ์ผ๋ฐ˜ PC๊ธ‰ ์ปดํ“จํ„ฐ๋“ค๋กœ ๊ฐ€์ƒํ™”๋œ ๋Œ€ํ˜• ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์— ๋ณด๊ด€๋œ ๊ฑฐ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœ๋œ ์ž๋ฐ” ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๊ตฌ๊ธ€, ์•ผํ›„ ๋“ฑ์— ์ ์šฉํ•œ ๊ธฐ์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€? 

๋”๋ณด๊ธฐ

ํ•˜๋‘ก(Apache Hadoop)

 

Apache Hadoop์€ ๋Œ€์šฉ๋Ÿ‰ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋กœ,

๊ตฌ๊ธ€์˜ ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ(Google File System)๊ณผ ๋งต๋ฆฌ๋“€์Šค(MapReduce) ๊ฐœ๋…์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ๋‹ค.

Hadoop์€ ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์–ด์„œ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ,

๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋ถ„์‚ฐ ์ €์žฅ, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ์ž๋™ํ™”๋œ ์žฅ์•  ์กฐ์น˜ ๋ฐ ๋ณต๊ตฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

12. ์ด์ƒ ํ˜„์ƒ์˜ ์ข…๋ฅ˜ 3๊ฐ€์ง€๋ฅผ ์“ฐ์‹œ์˜ค.

๋”๋ณด๊ธฐ

์‚ฝ์ž… ์ด์ƒ, ์‚ญ์ œ ์ด์ƒ,  ๊ฐฑ์‹  ์ด์ƒ

 

์ด์ƒ ํ˜„์ƒ(Anomaly)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๋‚˜ ๋ชจ์ˆœ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒ ํ˜„์ƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋˜๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ ๋“ฑ์—์„œ ์‹ค์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ฑ, ์ผ๊ด€์„ฑ, ๋ฌด๊ฒฐ์„ฑ ๋“ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

์ด์ƒ ํ˜„์ƒ์—๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์‚ฝ์ž… ์ด์ƒ(Insertion Anomaly): ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•จ๊ป˜ ์‚ฝ์ž…๋˜๊ฑฐ๋‚˜, ํ•„์ˆ˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.
  2. ์‚ญ์ œ ์ด์ƒ(Deletion Anomaly): ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์‚ญ์ œ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๊นจ์ง€๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.
  3. ๊ฐฑ์‹  ์ด์ƒ(Update Anomaly): ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐฑ์‹ ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ๊ฐฑ์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

 

13. ๋‹ค์Œ์€ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ „์ด๋„์ด๋‹ค. 1,2,3์— ์•Œ๋งž์€ ์ƒํƒœ๋ฅผ ์“ฐ์‹œ์˜ค.

๋”๋ณด๊ธฐ

1. ์ค€๋น„

2. ์‹คํ–‰

3. ๋Œ€๊ธฐ

 

ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ „์ด๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

 

  1. ์ƒ์„ฑ (New) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋‹จ๊ณ„
  2. ์ค€๋น„ (Ready) : CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋‹จ๊ณ„
  3. ์‹คํ–‰ (Running) : CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„
  4. ๋Œ€๊ธฐ (Waiting) : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ ๋“ฑ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋‹จ๊ณ„
  5. ์ข…๋ฃŒ (Terminated) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์„ ๋งˆ์น˜๊ณ  ์ข…๋ฃŒ๋˜๋Š” ๋‹จ๊ณ„

 

์ด์ƒ์ ์ธ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ์ „์ด ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

New → Ready → Running → Waiting → Running → … → Terminated

 

ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ ๋‹จ๊ณ„์—์„œ ์ผ์ • ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ „ํ™˜๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹คํ–‰ ์ƒํƒœ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž…์ถœ๋ ฅ ๋“ฑ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

14. ํ…Œ์ŠคํŠธ ์˜ค๋ผํด ์ค‘ ํŠน์ •ํ•œ ๋ช‡ ๊ฐœ์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์˜ค๋ผํด์€ ๋ฌด์—‡์ธ๊ฐ€?

๋”๋ณด๊ธฐ

์ƒ˜ํ”Œ๋ง ์˜ค๋ผํด

 

ํ…Œ์ŠคํŠธ ์˜ค๋ผํด(Test Oracle)์€ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ์—์„œ ์˜ˆ์ƒ๋˜๋Š” ์ถœ๋ ฅ ๊ฐ’๊ณผ ์‹ค์ œ ์ถœ๋ ฅ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ

์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์ž…๋ ฅ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ๊ธฐ๋Œ€๋˜๋Š” ์ถœ๋ ฅ ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ์‹ค์ œ ์ถœ๋ ฅ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ์˜ค๋ฅ˜ ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

 

์ƒ˜ํ”Œ๋ง ์˜ค๋ผํด(Sampling Oracle)์€ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์˜ค๋ผํด ์ค‘ ํ•˜๋‚˜๋กœ,

์‹œ์Šคํ…œ ์ „์ฒด์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

์ผ๋ถ€๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ƒ˜ํ”Œ๋งํ•˜์—ฌ ๊ทธ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

15. ์ ์ˆ˜์— ๋”ฐ๋ฅธ ์„ฑ์  ๋ถ€์—ฌ๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ณ ์ž ํ•œ๋‹ค. ์•„๋ž˜์— ์•Œ๋งž๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?

์ ์ˆ˜ ์„ฑ์ 
0 ~ 59 ๊ฐ€
60 ~ 69 ์–‘
70 ~ 79 ๋ฏธ
80 ~ 89 ์šฐ
90 ~ 100 ์ˆ˜

[ํ…Œ์ŠคํŠธ ๊ฐ’] : -10์  / 30์  / 65์  / 75์  / 85์  / 95์  / 110์ 

๋”๋ณด๊ธฐ

๋™์น˜ ๋ถ„ํ•  ๊ฒ€์‚ฌ

 

์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์˜์—ญ์„ ์œ ์‚ฌํ•œ ๋„๋ฉ”์ธ๋ณ„๋กœ ์œ ํšจ ๊ฐ’ / ๋ฌดํšจ ๊ฐ’์„ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ

๋Œ€ํ‘ฏ๊ฐ’ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋„์ถœํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ• (๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ)

 

๋ฐ์ดํ„ฐ ์˜์—ญ์— ๊ฐ€๊นŒ์šด ๊ฐ’์ด ์•„๋‹Œ ์˜์—ญ ๋‚ด์— ์žˆ๋Š” ์ผ๋ฐ˜ ๊ฐ’๋“ค๋กœ ํ…Œ์ŠคํŠธํ•œ๋‹ค.

 

๋™์น˜ ๋ถ„ํ•  ๊ฒ€์‚ฌ(Equivalence Partitioning Test)

์ž…๋ ฅ ์ž๋ฃŒ์— ์ดˆ์ ์„ ๋งž์ถฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ,

ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง์˜ ์กฐ๊ฑด์— ํƒ€๋‹นํ•œ ์ž…๋ ฅ์ž๋ฃŒ์™€ ํƒ€๋‹นํ•˜์ง€ ์•Š์€ ์ž…๋ ฅ์ž๋ฃŒ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ฐฐ๋ถ„ํ•˜์—ฌ ๊ฒ€์‚ฌํ•œ๋‹ค. 

 

 - ๊ฒฝ๊ฒŒ๊ฐ’ ๋ถ„์„(Boundary Value Analysis)

์ž…๋ ฅ ์กฐ๊ฑด์˜ ์ค‘๊ฐ„๊ฐ’ ๋ณด๋‹ค ๊ฒฝ๊ณ„๊ฐ’์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค๋Š” ์ ์„ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅ ์กฐ๊ฑด์„ ๊ฒฝ๊ณ„๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด 5์ฒœ๋งŒ์› ์ด์ƒ 1์–ต์› ๋ฏธ๋งŒ์ผ๋•Œ ๋ฐœํ˜„๋˜์–ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์ด ์žˆ๋‹ค๋ฉด 7000๋งŒ์›๊ณผ ๊ฐ™์€

์• ๋งคํ•œ ์ค‘๊ฐ„๊ฐ’ ๋ณด๋‹ค๋Š” ๋”ฑ 5์ฒœ๋งŒ์›์ผ๋•Œ ๋ฐœํ˜„์ด ๋˜๋Š”์ง€, ๋”ฑ 1์–ต์›์ผ ๋•Œ ๋ฐœํ˜„์ด ์•ˆ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

16. ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ํ•™๊ณผ๋ณ„๋กœ ํŠœํ”Œ ์ˆ˜๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ๊ตฌํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

- ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

- WHERE ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

- GROUP BY ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ์„ธ๋ฏธ์ฝœ๋ก (;)์€ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.

- ๋ณ„์นญ(AS)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. (๋ณ„์นญ ์‚ฌ์šฉ ์‹œ ๋ณ„์นญ์€ ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์จ์•ผ ํ•จ)

- ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

[ํ•™์ƒ]

ํ•™๊ณผ ํ•™์ƒ
์ „๊ธฐ ์ด์ˆœ์‹ 
์ปดํ“จํ„ฐ ์•ˆ์ค‘๊ทผ
์ปดํ“จํ„ฐ ์œค๋ด‰๊ธธ
์ „์ž ์ด๋ด‰์ฐฝ
์ „์ž ๊ฐ•์šฐ๊ทœ

[๊ฒฐ๊ณผ]

ํ•™๊ณผ ํ•™๊ณผ๋ณ„ํŠœํ”Œ์ˆ˜
์ „๊ธฐ 1
์ปดํ“จํ„ฐ 2
์ „์ž 2
๋”๋ณด๊ธฐ
SELECT ํ•™๊ณผ, COUNT(ํ•™๊ณผ) AS 'ํ•™๊ณผ๋ณ„ํŠœํ”Œ์ˆ˜'
FROM ํ•™์ƒ
GROUP BY ํ•™๊ณผ;

 

GROUP BY๋Š” SQL์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ,

์ง€์ •ํ•œ ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด ์ง‘๊ณ„ ํ•จ์ˆ˜(aggregation function)๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

์œ„์˜ SQL ์ฟผ๋ฆฌ์—์„œ๋Š” ํ•™๊ณผ ์ปฌ๋Ÿผ์„ GROUP BY์˜ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•„ ๊ฐ ํ•™๊ณผ๋ณ„๋กœ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ ,

COUNT ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ํ•™๊ณผ์˜ ํŠœํ”Œ ์ˆ˜๋ฅผ ๊ตฌํ•ด ํ•™๊ณผ์™€ ํ•™๊ณผ๋ณ„ ํŠœํ”Œ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ GROUP BY๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์š”์•ฝํ•˜์—ฌ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

17. ๋ฐ๋‹ˆ์Šค ๋ฆฌ์น˜์™€ ์ผ„ํ†ฐ์Šจ ๋“ฑ์ด ํ•จ๊ป˜ ๋ฒจ ์—ฐ๊ตฌ์†Œ๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ์šด์˜์ฒด์ œ์ด๋ฉฐ,

90% ์ด์ƒ C์–ธ์–ด๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ์ด ๋ชจ๋“ˆํ™”๋˜์–ด ์žˆ์–ด์„œ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด ๊ธฐ์ข…์œผ๋กœ ์‰ฝ๊ฒŒ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋ฉฐ

๊ณ„์ธต์  ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง์œผ๋กœ์จ ํ†ตํ•ฉ์ ์ธ ํŒŒ์ผ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•œ ์šด์˜์ฒด์ œ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

๋”๋ณด๊ธฐ

์œ ๋‹‰์Šค(Unix)

 

18. ๋‹ค์Œ์€ C์–ธ์–ด ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. ์ถœ๋ ฅ๊ฐ’์„ ์“ฐ์‹œ์˜ค.

#include <stdio.h>

void main(){
	char *p = "KOREA"
    printf("%s\n" , p);
    printf("%s\n" , p+3);
    printf("%c\n" , *p);
    printf("%c\n" , *(p+3));
    printf("%c\n" , (*p)+2);
๋”๋ณด๊ธฐ

์ถœ๋ ฅ๊ฒฐ๊ณผ

KOREA
EA
K
E
M

 

*p๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ p๋Š” ๋ฌธ์ž์—ด ์ƒ์ˆ˜ "KOREA"์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์ธ 'K'์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ *p๋Š” 'K'๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

  • "%s"๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ์„œ์‹ ์ง€์ •์ž์ž…๋‹ˆ๋‹ค.
  • "%c"๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์„œ์‹ ์ง€์ •์ž์ž…๋‹ˆ๋‹ค.

 

์ฒซ๋ฒˆ์งธ printf ํ•จ์ˆ˜์—์„œ๋Š” p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ,

๋‘๋ฒˆ์งธ printf ํ•จ์ˆ˜์—์„œ๋Š” p+3์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž๋ถ€ํ„ฐ ๋๊นŒ์ง€์˜ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ฒˆ์งธ printf ํ•จ์ˆ˜์—์„œ๋Š” ํฌ์ธํ„ฐ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ,

๋„ค๋ฒˆ์งธ printf ํ•จ์ˆ˜์—์„œ๋Š” p+3์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์„ฏ ๋ฒˆ์งธ printf ๋ฌธ์žฅ์€ *p์˜ ASCII ์ฝ”๋“œ ๊ฐ’์— 2๋ฅผ ๋”ํ•œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

* C์–ธ์–ด์˜ ๋ฌธ์ž ์—ฐ์‚ฐ

: C์–ธ์–ด์—์„œ ๋ฌธ์ž๋Š” ASCII ์ฝ”๋“œ ๊ทœ์น™์— ์˜ํ•ด

์ •์ˆ˜๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ๋ง์…ˆ, ๋บ„์…ˆ ๋“ฑ์˜ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

(ex. A = 65, K = 75, M = 77)

 

19. ๋‹ค์Œ์€ ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค.

class parent{
	public int compute(int num){
    	if(num <=1) return num;
        return compute(num-1) + compute(num-2);
    }
 }
 
 class Child extends parent {
 	public int compute(int num){
    	if(num<=1) return num;
        	return compute(num-1) + compute(num-3);
        }
   }
   
  class good{
  	public static void main (String[] args){
    parent obj = new Child();
    System.out.print(obj.compute(4));
   }
 }
๋”๋ณด๊ธฐ

์ถœ๋ ฅ : 1

 

Child ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

obj.compute(4)๋Š” Child ํด๋ž˜์Šค์˜ compute ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

 

compute(4)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด num์ด 4์ด๋ฏ€๋กœ,

 num์ด 1๋ณด๋‹ค ํฌ๋ฏ€๋กœ compute(num-1) + compute(num-3)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ obj.compute(4)์˜ ๊ฒฐ๊ณผ๋Š” Child ํด๋ž˜์Šค์˜ compute ๋ฉ”์„œ๋“œ๋ฅผ ๋”ฐ๋ผ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ์ธ 1์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

20. ์ •๋ณด๋ณด์•ˆ์—์„œ ๊ฐ€์šฉ์„ฑ(Availablility) ์— ๋Œ€ํ•˜์—ฌ ์„œ์ˆ ํ•˜์‹œ์˜ค.

๋”๋ณด๊ธฐ

์‹œ์Šคํ…œ, ์„œ๋น„์Šค ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์‹œ๊ฐ„์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ •๋ณด์‹œ์Šคํ…œ์ด๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , ์„œ๋น„์Šค๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ธฐ๋Šฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ •๋ณด๋ณด์•ˆ์˜ ๊ธฐ๋ณธ์ ์ธ ์„ธ ๊ฐ€์ง€ ๋ณด์•ˆ ์š”์†Œ

 

๊ธฐ๋ฐ€์„ฑ(Confidentiality): ๊ธฐ๋ฐ€์„ฑ์€ ์ •๋ณด๊ฐ€ ์˜ค์ง ์ธ๊ฐ€๋œ ์‚ฌ๋žŒ๋งŒ์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณดํ˜ธ๋˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ •๋ณด๊ฐ€ ์ธ๊ฐ€๋œ ์‚ฌ์šฉ์ž ๋˜๋Š” ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ทธ ์™ธ์˜ ๋ถˆ๋ฒ•์ ์ธ ์ ‘๊ทผ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌด๊ฒฐ์„ฑ(Integrity): ๋ฌด๊ฒฐ์„ฑ์€ ์ •๋ณด๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์™„์ „ํ•˜๋ฉฐ ๋ฌด๊ฒฐํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ •๋ณด๊ฐ€ ๋ถˆ๋ฒ•์ ์œผ๋กœ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ๋ณ€์กฐ๋˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ€์šฉ์„ฑ(Availability): ๊ฐ€์šฉ์„ฑ์€ ์ •๋ณด ์‹œ์Šคํ…œ, ์„œ๋น„์Šค ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์‹œ๊ฐ„์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ •๋ณด์‹œ์Šคํ…œ์ด๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , ์„œ๋น„์Šค๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ธฐ๋Šฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์ž๊ฒฉ์ฆ > ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2021๋…„ 2ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ  (0) 2023.04.15
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2021๋…„ 1ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ  (0) 2023.04.14
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 3ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ  (0) 2023.04.08
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 2ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ  (0) 2023.04.02
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 1ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ  (0) 2023.03.28
'์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2021๋…„ 2ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ
  • [์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2021๋…„ 1ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ
  • [์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 3ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ
  • [์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 2ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 2020๋…„ 4ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”