본문 바로가기

공부/응용 SW

6월17일 - SW활용 운영체제 + 네트워크(thread)

NCI 학습모듈 02_응용SW기초기술활용 참조 

 

1. 운영체제

-dos 명령 프롬포트 생각하며 공부하기

 

windows 

linux 무료개방

 

운영체제 기본명령어 활용

1. 윈도우 운영체제의 기본 명령어

 1) 기본명령어 CLI

   - CUI (Charactor User Interface)

   - CLI 명령어를 입력하기 위해서는 Command 창이 필요하다 (cmd 창)

 2) GUI (Graphic User Interface)

 

2. 리눅스/유닉스 계열 운영체제의 기본 명령어

- 리눅스와 유닉스 명령어는 Shell에서 입력할 수 있다. Shell이란 컴퓨터 내부를 관리하는
   Kernel과 사용자 간을 연결하는 Command 창이다.

 1) CLI 기본명령어

  - prompt의 >

    shell의 $

  - 최상위 디렉터리는 /이며 root는 최상위 디렉터리 아래의 root 계정의 홈

    디렉터리임을 의미한다. root 아무것도 안들어가 있는 형태

 

\를 붙이면 최상위 디텍터리로 이동

 

주 시험 내용- 평가방법 참조

 

Thread 클래스

:  하나의 프로그램이나 하나의 메소드가 CPU 자원을 전부 점유하는 것을 막을 수 있다.

:  채팅프로그램에 필수임,

자체교제 chap 22

교학사 9장

 

1) Thread를 사용하지 않는 경우

package oop0617;

class MyThread1{
	private int num;
	private String name;
	
	public MyThread1() {} //source로 들어가서 생성사함수 설정하기
	public MyThread1(int num, String name) {
		this.num = num;
		this.name = name;
	}
	
	public void run(){
		for(int a=0; a<num; a++){
			System.out.println(name+":"+a);
		}
	}//run() end
	
	public void start(){
		run();
	}//start() end
	
}//class end

public class Test01_Thread {

	public static void main(String[] args) {
		
		//1) thread를 사용하지 않는 경우
		MyThread1 t1=new MyThread1(100, "♥");
		MyThread1 t2=new MyThread1(100, "♥♥");
		MyThread1 t3=new MyThread1(100, "♥♥♥");
		
		t1.start();
		t2.start();
		t3.start();
		
	}//main() end
}//class end

 

 

출력결과,

 

2) Thread를 사용하는 경우

implements 를 받는 Runable함수 주로 사용됨

package oop0617;

class MyThread2 extends Thread{ 
	//클래스가 클래스를 상속받는 경우 단일상속만 가능하다.
	private int num;
	private String name;
	
	public MyThread2() {} //source로 들어가서 생성사함수 설정하기
	public MyThread2(int num, String name) {
		this.num = num;
		this.name = name;
	}
	
	//thread함수에 기본으로 run은 포함되어 있기 때문에 override해서 불러오면됨
	@Override
		public void run() {
			for(int a=0; a<num; a++){
				System.out.println(name+":"+a);
			}		
		}//run() end
	
}//class end

public class Test02_Thread {

	public static void main(String[] args) {
		// 2) 쓰레드를 사용하는 경우
		
		MyThread2 t1=new MyThread2(1000, "●");
		MyThread2 t2=new MyThread2(1000, "●●");
		MyThread2 t3=new MyThread2(1000, "●●●");
		
		t1.start();
		t2.start();
		t3.start();
		
	}//main() end
}//class end

 

 

3) Runnable 인터페이스를 이용한 경우

package oop0617;

import java.io.IOException;
import java.nio.CharBuffer;

class MyThread3 implements Runnable { //구현
	private int num;
	private String name;
	
	public MyThread3() {} //source로 들어가서 생성사함수 설정하기
	public MyThread3(int num, String name) {
		this.num = num;
		this.name = name;
	}
	@Override
		public void run() {
			for(int a=0; a<num; a++){
				System.out.println(name+":"+a);
			}		
		}//run() end
	
}//class end

public class Test03_Thread_runnable {

	public static void main(String[] args) {
		
		//다형성
		//Runnable target=new Thread()
		Thread t1=new Thread(new MyThread3(1000,"▲"));
		Thread t2=new Thread(new MyThread3(1000,"▲▲"));
		Thread t3=new Thread(new MyThread3(1000,"▲▲▲"));
		
		t1.start();
		t2.start();
		t3.start();
		
	}//main() end
}//class end

 

 

출력결과

 

문제 ) 티켓 예매 프로그램

public synchronized -동기화작업 

여러쓰레드에서 공유데이터를 접근하여 사용하고 있을 대 한개의 쓰레드에서 공유데이터를 사용하는 중에 쓰레드의 교체가 일어나서 공유데이터가 온전하게 관리되지 못하는 문제가 발생할수 있다. 이경우 OS가 개입해서 문제가 발생하지 않도록 조정하는 기법을 동기화 처리하고 한다. 

package oop0617;

class Data{
	private int movieTicket=0; //좌석번호
	public Data(){}
	
	//동기화 synchronized
	public synchronized String ticket(){
		//좌석번호 생성(티켓구매)
		String str=""; //결과값
		if(movieTicket<1000){
			movieTicket=movieTicket+1;
			str="영화 좌석번호:"+movieTicket;
		}//if end
		return str;
	}//ticket() end
	public synchronized int getMovieTicket(){ //private를 막아놓은 무비티켓을 가져온것
		//좌석번호 리턴
		return this.movieTicket;
	}//getMovieTicket()
		
}//class end

public class Test04_Ticket extends Thread {

	String where; //현장구매, 모바일, 인터넷
	Data data;
	public Test04_Ticket(){}
	private Test04_Ticket(String where, Data data) {
		this.where = where;
		this.data = data;
	}
	
	@Override
	public void run() {
		while(true){
			if(data.getMovieTicket()>=1000){
				break;
			}//if end
			System.out.println(where+"-"+data.ticket());
		}//while() end
	}//run() end

	public static void main(String[] args) {
		//티켓 예매 프로그램
		//-> 예매종류 : 현장구매, 모바일, 인터넷
		
		Data data=new Data();
		
		Test04_Ticket ticket1=new Test04_Ticket("현장구매", data);
		ticket1.start();
		Test04_Ticket ticket2=new Test04_Ticket("모바일", data);
		ticket2.start();
		Test04_Ticket ticket3=new Test04_Ticket("인터넷", data);
		ticket3.start();
		
	}//main() end
}//class end

 

출력결과↓

. . . 

모바일-영화 좌석번호:2
인터넷-영화 좌석번호:5
현장구매-영화 좌석번호:4
인터넷-영화 좌석번호:7
모바일-영화 좌석번호:6
인터넷-영화 좌석번호:9
인터넷-영화 좌석번호:11
현장구매-영화 좌석번호:8

. . .

쓰레드의 개념은 빈공간이 있으면 바로 들어가는 개념으로, string순서대로 번호대로 들어가지않고 

빈공간이 존재하면 들어간다.

 

 

2. 네트워크

교학사 13장

자체교재 chap23

1. Network(네트워크)


1. 주요 네트워크 관련 명령어

  1) ipconfig

     내컴퓨터의 IP 주소를 확인하는 명령어
     서브넷 마스크 : 같은 네크워크를 사용하는지 식별할수 있음
     게이트웨이 : 외부에 나가는 통로. 허브 IP

     >ipconfig

     좀더 자세한 정보
     >ipconfig/all

     물리적주소(Mac Address) : 앞의 3자리는 제조사
                                        뒤의 3자리는 시리얼 넘버


  2) ping

     서버의 IP정보도 확인하고 통신이 원할한지 파악하기 위해 사용.

     >ping 172.16.83.254      허브와 통신을 하고 있는지 확인
     >ping mbc.com            외부와 통신
     >ping goole.com          외국사이트
     >ping daum.net           악용하는 사례가 많이 있어서 대부분 막아놓음
                              ping에 답변하는라 속도가 느려지기 때문에 대부분 포털사이트 막아놓음


  3) nslookup

     네임서버(도메인주소로 매핑)를 조회하는 명령어

     >nslookup
     >google.com   대형사이트는 서버를 여러대 준비해 놓고 쓰는 경우가 많음
                   한대가 장애가 생기더라도 서비스를 원할히 하기 위해서 속도를 분산하기 위함도 있음.
     >daum.net
     >naver.com


  4) netstat

     NETwork STATus, 네트워크 상태 정보
     TCP 프로토콜 : 인터넷에서 컴퓨터와 컴퓨터가 연결된 상태에서 서로 데이터를 주고 받은 통신 방법
     UDP 프로토콜 : 연결이 끊어진 상태에서도 일방적으로 데이터를 주속 받는 방식
     172.16.83.100:55050 port번호 0~65535중에서 서비스당 1개의 포트를 제공함
     내컴퓨터와 연결된 컴퓨터들을 알수 있다

     >netstat
     >netstat -n   좀더 자세한 정보


  5) tracert

     서비스 경로 추적
     서버까지 가기 위한 중간 경로를 보여줌

     >tracert google.com   구글까지 가는 중간 경로롤 보여줌
                   

  6) arp

     IP address와 Mac Address 같이 조회

     >ipconfig/all    물리적주소(Mac Address) : 랜카드의 고유번호
                      DHCP 사용 : 자동IP. 가정용 인터넷

     >arp -a

 

2개 이상의 PC간 서로 접속하는 것 

LAN : Local Area Network

IPV4 버전이 4개로 이루어져있는 것 

IPV6 버전이 6개로 이루어져있는 것 

네트워크 전부 다 숫자형태로이루어져있다.

cmd

>ipconfig : ip주소 확인

기본 게이트웨이 - 허브

 

>^c

 

웹브라우저의 정의

프로토콜 정의

 

 

데이터베이스용량은 비쌈 ,

2. 프로토콜(Protocol)

  1) 프로토콜

    - 서로 다른 컴퓨터 간의 의사소통을 위한 통신 규약
    - 운영체제도 다를수 있고, 모바일 장비와 PC, 다양한 하드웨어와 다양한 운영체제간에 서로 데이터를 주고받으려면
      미리 약속을 해야 함
    - 컴퓨터끼리 정보를 주고받을 때의 통신방법에 대한 약속
 

  2) 프로토콜의 종류

     TELNET : 텍스트 기반의 원격접속 서비스
     IP (Internet Protocol)
     TCP(Transmission Protocol)
     UDP(User Datagram Protocol)         - 방송국
     FTP(File Transfer Protocol)         - 파일 전송
     SMTP(Simple Mail Transfer Protocol) - 이메일
     POP3(Post Office Protocol)          - 이메일
     DHCP(Dynamic Host Control Protocol) - 유동IP
     ARP(Address Resolution Protocol)    - IP 주소를 물리적 주소로 변환

     HTTP(Hyper Text Transfer Protocol)
     - 웹서비스. 웹브라우저에서 hyper text 문서를 교환하기 위한 프로토콜
     - 인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다.
       하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써,
       서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다.

노란색 동그라미 - 하이퍼텍스트 예시


       Server에 저장되어 있는 데이터를 사용자가 요청하면 그때마다 데이터를 보여주기 위해 사용 되는 Protocol이다

     HTTPS(HyperText Transfer Protocol over Secure Socket Layer)
     - 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다.


  3) TCP와 UDP

     TCP : 연결된 상태에서 데이터를 전송함. 데이터가 정확히 전달되지 않으면 재전송해야 함
     UDP : 연결되지 않은 상태에서 일방적으로 데이터 전달


  4) IP(Internet Protocol) Address와 Mac Address

     IP Address   : 172.16.83.100
     MAC Address  : 90-2B-34-66-F7-41
                    16진수 12자리로 구성, 앞의 3세트는 제조사 고유코드
                    나머지 3세트는 장치 일련 번호로 구성됨

Server 

- Web Server

- Database Server

- Mail Server ; 메일 서버에 기관명이 들어간 경우(ex, webmaster@kbs.co.kr), 고유도메인을 쓰기 위해 메일 서버호스팅을 받아야한다. 

 

Tomcat 호스팅

 

원격접속(TELNET)

- putty.exe

 

파일전송(FTP)

- 알드라이브 

- FileZilla

 

 

CAFE24 -LINUX 환경

 

네트워크 관련 클래스

1) HTTP Protocal 관련

 - ip 확인

try{
			//static 클래스명으로 받을수 잇다. 
	InetAddress ip=InetAddress.getByName("www.soldesk.com"); 
	System.out.println(ip.getHostName());  //ip 이름
	System.out.println(ip.getHostAddress()); //ip확인
			
}catch(Exception e){
	System.out.println("error : "+e);
}//try end

출력결과
www.soldesk.com
211.40.118.45

 

  - 해당 주소의 html 문서 가져오기

try{
	//HTML 문서 가져오기
	String address="http://www.soldesk.com";
	URL url=new URL(address); //url 변수에 html문서 넣기
	BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));
	while(true){
		String line=br.readLine();
		if(line==null){
			break;
		}//if end
			System.out.println(line);
	}//while end
}catch(Exception e){
	System.out.println("error : "+e);
}//try end

 

'공부 > 응용 SW' 카테고리의 다른 글

6월20일 - SW활용 Oracle  (0) 2019.06.20
6월19일 - SW활용 : DB  (0) 2019.06.19
6월18일 - SW활용 네트워크  (0) 2019.06.18
6월13일 - DOS명령어 만들기  (0) 2019.06.13
6월12일 - properties + singleton  (0) 2019.06.12