안녕하세요 GG 임돠

이번에 쓰레드 임돠

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.javac.im;
 
class ThreadEx9 {
    public static void main(String args[]) {
        ThreadEx9_1 th1 = new ThreadEx9_1();
        ThreadEx9_2 th2 = new ThreadEx9_2();
 
        th2.setPriority(7);//thread 7번 실행
 
        System.out.println("Priority of th1(-) : " + th1.getPriority() );
        System.out.println("Priority of th2(|) : " + th2.getPriority() );
        th1.start();
        th2.start();
    }
}
 
class ThreadEx9_1 extends Thread {//Thread 상속받아 사용
    public void run() {
        for(int i=0; i < 20; i++) {
            System.out.print("-");
            for(int x=0; x < 10000000; x++);//waiting 
        }
    }
}
 
class ThreadEx9_2 extends Thread {
    public void run() {
        for(int i=0; i < 20; i++) {
            System.out.print("|");
            for(int x=0; x < 10000000; x++);//waiting
        }
    }
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.javac.im;
class ThreadEx26 {
    public static void main(String args[]) {
        MyThreadEx26 th1 = new MyThreadEx26("*");
        MyThreadEx26 th2 = new MyThreadEx26("**");
        MyThreadEx26 th3 = new MyThreadEx26("***");
        th1.start();
        th2.start();
        th3.start();
 
        try {
            Thread.sleep(2000);
            th1.suspend();
            Thread.sleep(2000);
            th2.suspend();
            Thread.sleep(3000);
            th1.resume();
            Thread.sleep(3000);
            th1.stop();
            th2.resume();
            th2.stop();
            Thread.sleep(2000);
            th3.stop();
        } catch (InterruptedException e) {}
    }
}
 
class MyThreadEx26 implements Runnable {
    static final int RUNNING = 0;
    static final int SUSPENDED = 1;
    static final int STOPPED = 2;
 
    private int state = RUNNING;
    Thread th;
 
    MyThreadEx26(String name) {
        th = new Thread(this, name); // Thread(Runnable r, String name)
    }
 
    public synchronized void setState(int state) {
        this.state = state;
 
        // state가 SUSPENDED였다가 RUNNING으로 변경되면, nofity()를 호출한다.
        if(state==RUNNING) {
            notify();
        } else {
            th.interrupt();
        }
    }
 
    public synchronized boolean checkState() {
        // state가 SUSPENDED면 wait()을 호출해서 쓰레드를 대기상태로 만들고,
        while(state==SUSPENDED) {
            try {
                wait();
            } catch(InterruptedException e) {}
        }
        // state가 STOPPED이면 true를, 그 외에는 false를 리턴한다.
        return state==STOPPED;
    }
 
    public void run() {
        String name = Thread.currentThread().getName();
 
        while(true) {
            System.out.println(name);
            try {
                Thread.sleep(1000);
            } catch(InterruptedException e) {}
 
            // state가 STOPPED이면 checkState()가 true를 반환해서 
            // while문을 벗어나게 된다.
            if(checkState()) {
                break;
            }
        } // while
        System.out.println(name + " - END");
    } // run()
 
    public void suspend() {
        setState(SUSPENDED);
    }
 
    public void resume() {
        setState(RUNNING);
    }
 
    public void stop() {
        setState(STOPPED);
    }
 
    public void start() {
        th.start();
    }
}
cs

 

감사합니다.

안녕하세요 엘체프 GG 임돠.

컬렉션프레임워크 마지막 List,Map 임돠

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.javac.im;
 
import java.util.Iterator;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.TreeMap;
 
public class CollectionFramework3 {
 
    public static void main(String[] args) {
 
//        Map<String, Integer> map = new HashMap<>();
        NavigableMap<String, Integer> map = new TreeMap<>();
    //key의 오름차순(ascending sorting) 정렬(기본지원)
 
        map.put("노르웨이"14);
        map.put("독일"14);
        map.put("미국"11);
        map.put("네덜란드"9);
        map.put("한국"6);
 
/*        Set<Map.Entry<String, Integer>> set = map.entrySet();
        //map key = set 공통의 성질(중복 불허)        
        Iterator<Entry<String, Integer>> it = set.iterator();
        //순서가 없다 -> 반복자(iterator) 패턴 -> 열거(나열)        
        while(it.hasNext()){
            Entry<String , Integer> entry = it.next();
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }*/
        
/*        Set<String> set=  map.keySet();        
        Iterator<String> it = set.iterator();        
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
/*        NavigableSet<String> set  = map.descendingKeySet();
        //key의 내림차순 정렬
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String key =it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
/*        NavigableSet<String> set  = map.navigableKeySet();
        //key의 내림차순 정렬
        Iterator<String> it = set.descendingIterator();        
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
        
    }// end main
}// end class
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.javac.im;
 
import java.util.NavigableMap;
import java.util.TreeMap;
 
public class CollectionFramework4 {
 
    public static void main(String[] args) {
 
//        Map<String, Integer> map = new HashMap<>();
        NavigableMap<String, Integer> map = new TreeMap<>();
        //key의 오름차순(ascending sorting) 정렬(기본지원)
 
        map.put("노르웨이"14);
        map.put("독일"14);
        map.put("미국"11);
        map.put("네덜란드"9);
        map.put("한국"6);
 
        /*//Java 1.8ver : 함수형(람다 표현식)
        map.forEach((k,v)-> System.out.println(k+", "++ "개"));*/
        
        /*map.entrySet().iterator().forEachRemaining(x->System.out.println(x));*/
        
        /*map.entrySet().forEach(x->System.out.println(x));*/
        
        /*map.keySet().forEach(x->System.out.println(x));//key값만 나열*/
        
        map.keySet().forEach(x->System.out.println(x + " : " + map.get(x)));            
        
    }// end main
}// end class
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.javac.im;
 
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
 
public class CollectionFramework5 {
 
    public static void main(String[] args) {
 
        List<String> list = new ArrayList<>();
        
        list.add("박준형");
        list.add("데니안");
        list.add("남근곤");
        list.add("윤계상");
        list.add("손호영");
        list.add("김태우");
        
/*        list.sort(new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {                
//                return o1.toString().compareTo(o2.toString());//오름차순
                return o2.toString().compareTo(o1.toString());//내림차순
            }
        });
        list.forEach(x->System.out.println(x));*/
        //체이닝프로그램
        list.stream().sorted(Comparator.naturalOrder()).forEach(x->System.out.println(x));
        
        
    }// end main
}// end class
 
cs

 

감사합니다.

안녕하세요 엘체프GG 입니다.

쉘이란 ? 리눅스에서 사용자의 언어를 커널에 전달해주는 중간언어, 사용자->쉘->커널->하드웨어 명령어 번역 기계어 인식동작

아직 구조도 정확한 개념도 모르지만 쉘을 사용한지 1년이 넘었네요. 그중에서 가장 편하게 사용한 알리아스를 셋팅하면 명령어를 편하게 썻던 프로 파일 끄적일겁니다.

프로파일은 개인계정, 공용계정 등 각 사용자 계쩡의 작업 환경을 해주는 곳 입니다.

로그인을 하면 .profile, .bash_profile 등이 보인다. 거기에 편하게 alias 설정을 해주면 편하게 명령어,파일경로 등을 사용할쑤 있다.


ex )


alias ll ='ls -al'

alias lt ='ls -altr'

alias damo = 'cd /user/lib/damo_scp

alias tplog = 'cd /tplog/log

alias stop01 = '/tp/domian/tp_domain/stopxpay1.sh'

alias start01 = '/tp/domian/tp_domain/startxpay1.sh'

alias wlog = 'tail -f /tp/domain/nohub/xpay1_09_12c_'date+%Y%m%d'+.log'

set -o vi

export HOST ='uname -n'

export PWD = 'pwd'

PS1 ='%HOST:$PWD]'

export LANG=ko_KR.EUC


내가 사용한거 임돠


감사합니다.







'스터디' 카테고리의 다른 글

정보처리기사 알고리즘 기초  (7) 2018.05.09
보험사 업무 프로세스  (4) 2018.03.07
윈도우 업그레이드 끄기  (6) 2018.03.06
소스 코드를 컬러풀하게 꾸미는 툴 color scriptor  (5) 2018.02.27
IT 용어 모음  (9) 2018.02.22

안녕하세요 엘체프 GG 입니다.

제가 쓰는 소스를 컬러풀 하게 꾸미는 툴 하나 올리려합니다.

컬러 스크립터 : https://colorscripter.com/pcver

ColorScripter3.air

들어가서 다운받아서 쓰면 됩니다.

맞다 어도비도 받아져있어야해요.

https://get.adobe.com/kr/air/ 다운받기~

1
2
3
4
5
6
7
public class Hello {
 
    public static void main(String[] args) {
        System.out.println("Hello");
    }
 
}
cs


감사합니다.

'스터디' 카테고리의 다른 글

정보처리기사 알고리즘 기초  (7) 2018.05.09
보험사 업무 프로세스  (4) 2018.03.07
윈도우 업그레이드 끄기  (6) 2018.03.06
리눅스 프로파일(profile)  (7) 2018.02.27
IT 용어 모음  (9) 2018.02.22

안녕하세요 엘체프 GG 입니다.

컬렉션프레임워크 Set 임돠.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.javac.im;
 
import java.util.HashSet;
import java.util.Iterator;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.Set;
import java.util.TreeSet;
 
public class CollectionFramework2 {
    public static void main(String[] args) {
        
        
//        Set<String> set = new HashSet<String>();//hashset
//        Set<String> set = new TreeSet<String>();//Treeset 기본 오름 차순정령(ASC)
        NavigableSet<String> set = new TreeSet<String>();; 
        
        
        set.add("남근곤");
        set.add("강타");
        set.add("문희준");
        set.add("장우혁");
        set.add("남근곤");
        set.add("토니안");
        set.add("이재원");
        set.add("남근곤");
        
        System.out.println("set의 크기 : " + set.size()); //중복을 허용하지 않는다.
        System.out.println("^___^");
        
        /*Iterator<String> it = set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }*/
        
        /*set = set.descendingSet();//내림차순 정령(DESC)*/
        
        
        //낱개로 가져오는 방법은 배열로 치환해야한다.
        Object list[] = set.toArray();
        System.out.println(list[3]);
        
        
        System.out.println("^___^");        
        set.forEach(System.out::println);//람다식 함수형
    
        
    
    
    
    }//end main
}//end class
 
cs

 

감사합니다.

'스터디 > JAVA' 카테고리의 다른 글

스레드(Thread)  (316) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_3  (322) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_1  (302) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 for문 별찍기  (292) 2018.01.30

안녕하세요 엘체프 GG 입니다.

자바의 꽃 컬렉션 프레임워크 끄적여 볼 께요.

일딴 소스먼저 풀고 정리해야겠어요.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.javac.im;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
 
public class CollectionFramework1 {
 
    public static void main(String[] args) {
        
//        ArrayList list = new ArrayList();
        ArrayList<String> list = new ArrayList<String>();
        // <E> : elemert(요소)  -> 참조형Type(클래스,인터페이스...)
        //구성 요서 자료형 제한 -> 성능향상!
        list.add("윤성빈");
        list.add("김연아");
        list.add("남근곤");
        list.add("김영미");
        list.add("남근곤");
        list.remove(4);//5번째 지워~
        
/*        System.out.println("첫번째 애를불러~ " +list.get(0));        
        System.out.println("list의 크기능 : " + list.size());
        System.out.println("list : " + list);*/
        
/*        for(int i =0; i <list.size(); i++){
            System.out.println(list.get(i));
            
        }*/
        
/*        for(String s : list ){
            System.out.println(s);
        }*/
        
/*        //반복자(Iterator) 디자인 패턴 : GoF의 디자인 패턴 중 하나
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            System.out.println( iterator.next());            
            
        }*/
        
        
/*        list.sort(Comparator.naturalOrder());//오름차순(ASC:ascending) 정렬(sorting)
//        list.sort(Comparator.reverseOrder());//내림차순(DESC:descending) 정렬(sorting)
        for(String s : list ){
            System.out.println(s);            
        }*/
        
/*        //함수형 프로그래밍(람다식)
        list.stream().forEach(x->System.out.println(x));
        list.stream().forEach(System.out::println);//자바에 없던표현들 
        list.stream().forEachOrdered(str -> System.out.println(str));//소스가 간결해진다.         
*/    
        Object objlist[] =  list.toArray();//배열로 변환
        for(Object o : objlist){
            System.out.println(o);            
        }
        
        System.out.println("^---^");
        //배열 -> List 변환
        List<Object> otherList = Arrays.asList(objlist);
        for(Object o : otherList){
            System.out.println(o);            
        }
        
        System.out.println("^---^");
        otherList.forEach(System.out::println);
        
    
    }//end main
}//end class
 
cs

감사합니다.

'스터디 > JAVA' 카테고리의 다른 글

자바 컬렉션프레임워크(CollectionFramework)_3  (322) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_2  (296) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 for문 별찍기  (292) 2018.01.30
자바 2차원배열 성적구하기  (6) 2018.01.30

안녕하세요 엘체프 GG임돠

클래스안에 클래스 내부 클래스에 대해 끄적여 봅니다.

GUI어플리케이션(AWT,Swing)등의 이벤트 처리에 주로 사용되고 코드의 복잡성을 줄 수 있다.


-창뛰우기 1

자바에서 지원하는 WindowListener 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.javac.im;
 
 
import java.awt.*// JAVA 기본 GUI Component/Container ToolKit 
// ex) Button, Frame, Panel 등등
import java.awt.event.*// event = I/O device 현상  
// ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다.
// GUI Component(버튼, 메뉴 등등)를 처리하는 방식
// 1. 장치(device -> Component) 이벤트(Event) 발생
// 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지.
// 3. 핸들러(Event handler)가 이 이벤트를 처리한다.
 
class InnerEx8
{
 public static void main(String[] args) 
 {
  Frame f = new Frame();   // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다.
  f.setSize(300200);        // 컨테이너의 크기를 설정한다.
  f.setLayout(new GridLayout(1,1));  // 레이아웃 매니저의 설정을 해제한다.
  
  Button b = new Button("Start");  
  b.setSize(200100);        // Button의 크기를 설정한다.
  f.add(b);                      // 생성된 Button을 Frame에 포함시킨다.
  f.setVisible(true);          // 화면에 보여지도록 설정한다. 
 
 // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면
 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다.
 // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서
 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다.
 
  f.addWindowListener(new WindowListener() {//모두다 꺼네 써야한다.
      
        public void windowClosing(WindowEvent e) {
             e.getWindow().setVisible(false);
             e.getWindow().dispose();
             System.exit(0);
        }
    
        public void windowOpened(WindowEvent e) { }
        public void windowClosed(WindowEvent e) { }    
        public void windowIconified(WindowEvent e) { }
        public void windowDeiconified(WindowEvent e) { }
        public void windowActivated(WindowEvent e) { }
        public void windowDeactivated(WindowEvent e) { }
    
     }
   );
  
 
  // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다.
  // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자"
  // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스)
  // -> 코드가 간결해짐 -> 성능 향상!
  // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다.
  // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서
  // 코드를 간결하게 줄이는 방식.
 
  b.addActionListener(new ActionListener() {
   
       // 이벤트 핸들러(Event Handler) : 이벤트 처리자
       // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 
       // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성.
   
    public void actionPerformed(ActionEvent e) {
     
     // 이 부분이 프로그래머가 작성한(재정의:override) 부분
     System.out.println("ActionEvent occurred!!!");
    }
   } // 익명 클래스의 끝
  ); // 리스너의 끝
  
 } // main메서드의 끝
// InnerEx8클래스의 끝
cs

-창뛰우기 2

자바에서 지원하는 WindowAdapter 사용 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.javac.im;
 
 
import java.awt.*// JAVA 기본 GUI Component/Container ToolKit 
// ex) Button, Frame, Panel 등등
import java.awt.event.*// event = I/O device 현상  
// ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다.
// GUI Component(버튼, 메뉴 등등)를 처리하는 방식
// 1. 장치(device -> Component) 이벤트(Event) 발생
// 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지.
// 3. 핸들러(Event handler)가 이 이벤트를 처리한다.
 
class InnerEx9
{
 public static void main(String[] args) 
 {
  Frame f = new Frame();   // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다.
  f.setSize(300200);        // 컨테이너의 크기를 설정한다.
  f.setLayout(new GridLayout(1,1));  // 레이아웃 매니저의 설정을 해제한다.
  
  Button b = new Button("Start");  
  b.setSize(200100);        // Button의 크기를 설정한다.
  f.add(b);                      // 생성된 Button을 Frame에 포함시킨다.
  f.setVisible(true);          // 화면에 보여지도록 설정한다. 
 
 // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면
 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다.
 // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서
 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다.
 
  f.addWindowListener(new WindowAdapter() { //사용하고 픈거만 꺼네쓸쑤 있다.
 
    @Override
    public void windowClosing(WindowEvent e) {
         e.getWindow().setVisible(false);
         e.getWindow().dispose();
         System.exit(0);
    }
      
      
  } );
  
 
  // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다.
  // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자"
  // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스)
  // -> 코드가 간결해짐 -> 성능 향상!
  // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다.
  // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서
  // 코드를 간결하게 줄이는 방식.
 
  b.addActionListener(new ActionListener() {
   
       // 이벤트 핸들러(Event Handler) : 이벤트 처리자
       // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 
       // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성.
   
    public void actionPerformed(ActionEvent e) {
     
     // 이 부분이 프로그래머가 작성한(재정의:override) 부분
     System.out.println("ActionEvent occurred!!!");
    }
   } // 익명 클래스의 끝
  ); // 리스너의 끝
  
 } // main메서드의 끝
// InnerEx8클래스의 끝
cs


감사합니다.

안녕하세요 GG 입니다.

자주 쓰고 나오는 단어를 정리 하려합니다. 


O.통신

-프로토콜 : 사전적의미 ->  컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계

-TCP : 사전적의미 -> 전송 제어 프로토콜(Transmission Control Protocol, TCP 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.



O.언어




O.비지니스 

-ASIS , TOBE  실무와서 제일 처음 듣었던 단어 asis-tobe 인듯 싶네요 asis는 현제와과거 소스(시스템) 이고 tobe는 미래 개선후의 소스(시스템)을 말하는 거였어요.

-전자구조개선프로젝트 프로세스 : 

1. Servlet Filter : Request에 대한 Servlet 처리 이전에 공통기능 처리 수행 

2. DispatcherServlet : Spring F/W 에서 제공하는 공통 Servlet으로 MappingHandler를 통해 Request를 처리할 Controller를 Mapping 해준다

3. Handler Mapping : Request에 해당하는 Controller를 검색하여 Servlet으로 전달

4.Interceptor : Controller에 대한 처리 이전에 선/후행에 대한 공통 기능 처리 수행

5.Controller : Client로 부터의 Request를 Parsing,Validation,BizLogic 수행및 처리 결과를 Client로 반환하는 역활 수행

6. Servide : Business Logic을 포함하고 있으며, DAO를 호출하여 DBMS에 대한 CRUD(create,read,update,delete)를 수행함

7. CommonDAO : SQL를 호출하여 그 결과를 반환하는 역할을 수행하며, 본 Famework에서는 CommonDAO를 통해 수행함

8. SQL: DBMS에 대한 CRUD 등을 담은 SQL을 Mybatis기반으로 XML 파일을 생성, 반복적인 DAO 작업을 자동화한 컴포넌트 코드로 부터 SQL을 분히라고 쿼리 실행의 In/Out 객체 바인딩/매핑 지원

9. View : 모델이 가진 정보를 다양한 방식으로 화면에 출력

10. View Resolver : View name에 해당하는 View를 찾아 Dispatcher Servlet으로 전달

11. Inbound Gateway : 대내 시스템등으로 부터 TCP 기반 연계 요청을 처리하기 위한 진입점

12. Service Activator : TCP기반 연계 요청 시, 요청 전문을 Parsing하여 VO로 변환하고, 이를 이용하여 Service를 호출하기위한 역활 수행




안녕하세요 엘체프 GG 입니다.

배열 관련된 문제입니다.


문) 아래와 같은 결과가 나올 수 있도록 반복문(for)을 이용하여 프로그램을 완성하십시오. 

        
문자 배열 :  char arr_c[8] = "abcdefg";


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
 char arr_c[8] = "abcdefg";
 
 int i,j;
 
 for (i=0; i<4; i++) {
  
  for (j=0; j<5-i; j++) {
   printf("%c"' ');
  }
 
  // 시작 

  // 끝

  printf("\n");
 }
 system("PAUSE");
 return 0;
}



답:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
 
int main() {
 
    char arr_c[8] = "abcdefg";
 
    int i, j;
 
    for (i = 0; i<4; i++) {
 
        for (j = 0; j<5 - i; j++) {
            printf("%c", ' ');
        }
 
        // 시작
        for (j = i; j<2 * i + 1; j++) {
            printf("%c", arr_c[j]);
        }
        // 끝
        printf("\n");
    }
    system("PAUSE");
    return 0;
}

이상 감사합니다.

'스터디 > C,C++' 카테고리의 다른 글

C 문자열(string) 바꾸기  (6) 2018.02.28
마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28
C++ 클래스 실습과제  (7) 2018.02.19
C++ 클래스 응용 소스  (6) 2018.02.19
C 문자열 거꾸로 출력하기  (8) 2018.02.12

안녕하세요 엘체프 입니다.

오늘 공부한 클래스 실습과제 임돠


Q.사각형 영역을 저장하고 처리하는 클래스 만드세요. 파워포인트나 포토샵 같은 프로그램에서 마우스를 드래그해서 사각형 영역을 선택하고, 선택된 영역을 다시 마우스로 드래그해서 이동하거나 크기를 조절하는 등의 조작을 해 보았을 겁니다. 이런 프로그램을 만들 때 활용할 수 있을 법한 클래스를 만들고자 하는 것입니다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#pragma once
class Region
{
public:
    Region(void);            // 생성자
    Region(int l, int t, int r, int b);    // 생성자
 
private:
    /////////////////////////////////////////////////////////////
    // 사각형 영역을 저장하기 위한 멤버변수들
    int left;                // 시작점의 x좌표
    int top;                // 시작점의 y좌표
    int right;                // 끝점의 x좌표
    int bottom;                // 끝점의 y좌표
 
    /////////////////////////////////////////////////////////////
    // 출력방식을 지정하기 위한 멤버변수
    static int notation;            // POINT_POINT 또는 POINT_SIZE
public:
    enum { POINT_POINT, POINT_SIZE };    // 시작점과 끝점, 시작점과 길이
 
public:
    /////////////////////////////////////////////////////////////
    // 사각형 영역에 대한 정보를 얻는 함수들
    int GetWidth() const;                    // 가로길이 얻기
    int GetHeight() const;                    // 세로길이 얻기
    void GetStartPoint(int &x, int &y) const;        // 시작점 얻기
    void GetEndPoint(int &x, int &y) const;        // 끝점 얻기
    void GetCenterPoint(int &x, int &y) const;        // 중심점 얻기
    bool IsPointInRegion(int x, int y) const;        // 점이 영역 안에 있는지
 
    /////////////////////////////////////////////////////////////
    // 사각형 영역을 설정하고 처리하는 함수들
    void SetRect(int l, int t, int r, int b);                // 영역 설정
    void Move(int x, int y);                        // 위치 이동
    void Resize(int width, int height);                    // 크기 변경
    void UnionRegion(const Region &r1, const Region &r2);        // 교집합
    void IntersectRegion(const Region &r1, const Region &r2);    // 합집합
 
    /////////////////////////////////////////////////////////////
    // 사각형 영역을 표시하기 위한 함수들
    void Show(void);                        // 영역 출력
    static void SetNotation(int notation);        // 출력 방식 지정
};
-----------------------------------------------------------------------------------
 
#include <stdio.h>
#include <iostream>
//c언어의 stude.h와 같은 역활의 header
#include "Region.h"
 
int Region::notation = Region::POINT_POINT;
 
Region::Region(void)
{
    SetRect(0000);    // 영역을 0으로 초기화
}
Region::Region(int l, int t, int r, int b)
{
    SetRect(l, t, r, b);    // 영역을 주어진 값으로 초기화
}
 
void Region::SetRect(int l, int t, int r, int b)
{
    left = l;            // 시작점의 x좌표 설정
    top = t;            // 시작점의 y좌표 설정
    right = r;            // 끝점의 x좌표 설정
    bottom = b;            // 끝점의 y좌표 설정
}
int Region::GetWidth() const
{
    return right - left;
}
int Region::GetHeight() const
{
    return bottom - top;
}
void Region::GetStartPoint(int &x, int &y) const
{
    x = left;        // 시작점의 x 좌표 얻기
    y = top;        // 시작점의 y좌표 얻기
}
void Region::GetEndPoint(int &x, int &y) const
{
    x = right;        // 끝점의 x 좌표 얻기
    y = bottom;        // 끝점의 y좌표 얻기
}
void Region::GetCenterPoint(int &x, int &y) const
{
    x = (left + right) / 2;    // 중심점의 x 좌표 얻기
    y = (top + bottom) / 2;    // 중심점의 y좌표 얻기
}
 
bool Region::IsPointInRegion(int x, int y) const
{
    return (x >= left && x <= right && y >= top && y <= bottom);
}
void Region::Move(int x, int y)
{
    left += x;            // 시작점의 x좌표 이동
    right += x;            // 끝점의 x좌표 이동
    top += y;            // 시작점의 y좌표 이동
    bottom += y;        // 끝점의 y좌표 이동
}
 
void Region::Resize(int width, int height)
{
    int x, y;
    GetCenterPoint(x, y);    // 중심점 좌표 얻기
    left = x - width / 2;    // 중심으로부터 가로길이의 절반만큼 이동
    top = y - height / 2;    // 중심으로부터 세로길이의 절반만큼 이동
    right = left + width;    // 가로길이가 width가 되도록 조절
    bottom = top + height;    // 세로길이가 height가 되도록 조절
}
void Region::UnionRegion(const Region &r1, const Region &r2)
{
    left = r1.left > r2.left ? r1.left : r2.left;
    right = r1.right < r2.right ? r1.right : r2.right;
    top = r1.top > r2.top ? r1.top : r2.top;
    bottom = r1.bottom < r2.bottom ? r1.bottom : r2.bottom;
    if (left >= right || top >= bottom)      // 교집합이 존재하지 않는 경우
    {
        left = top = right = bottom = 0;
    }
}
 
void Region::IntersectRegion(const Region &r1, const Region &r2)
{
    left = r1.left < r2.left ? r1.left : r2.left;
    right = r1.right > r2.right ? r1.right : r2.right;
    top = r1.top < r2.top ? r1.top : r2.top;
    bottom = r1.bottom > r2.bottom ? r1.bottom : r2.bottom;
}
void Region::SetNotation(int n)
{
    notation = n;
}
 
void Region::Show(void)
{
    if (notation == POINT_POINT)    // 시작점/끝점 형식
    {
        printf("(%d, %d), (%d, %d)\n", left, top, right, bottom);
    }
    else                    // 시작점/가로, 세로/길이 형식
    {
        printf("(%d, %d), [%d x %d]\n", left, top, GetWidth(), GetHeight());
    }
}
 
------------------------------------------------------------------------------------------
 
#include <iostream>
#include "Region.h"
 
using namespace std;
 
int main(void)
{
    Region::SetNotation(Region::POINT_POINT);    // 출력 형식 지정
    Region r1(1010100100);        // 영역 r1 선언
    Region r2(5050120120);        // 영역 r2 선언
    Region r3;
 
    r3.IntersectRegion(r1, r2);        // r1과 r2의 교집합을 r3에 저장
    r3.Show();
    r3.UnionRegion(r1, r2);            // r1과 r2의 합집합을 r3에 저장
    r3.Show();
    r3.Move(100100);            // r3의 위치 이동
    r3.Show();
    r3.Resize(200200);            // r3의 크기 변경
    r3.Show();
 
    Region::SetNotation(Region::POINT_SIZE);    // 출력 형식 변경
    r1.Show();
    r2.Show();
    r3.Show();
 
    system("PAUSE");
    return 0;
}
cs



이상 감사합니다.


'스터디 > C,C++' 카테고리의 다른 글

마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28
C++ 문자열 경사면 인쇄하기  (9) 2018.02.19
C++ 클래스 응용 소스  (6) 2018.02.19
C 문자열 거꾸로 출력하기  (8) 2018.02.12
C 문자열 자르기 문제  (7) 2018.02.12

+ Recent posts