TIL(2022.03.14)

조지성·2022년 3월 14일
0

TIL

목록 보기
41/78
post-thumbnail

방통대 정리 (컴퓨터의이해)

데이터의 처리 방식과 입출력
1.일괄처리 방식

  • 데이터를 수집하였다가 일정 시점 단위로 일괄해서 처리
  • 입출력은 사람이 개입하지 않는 형식으로 이루어짐

2.대화식처리벙식

  • 사용자가 직접 데이터를 편리하게 입력하기 위한 입력장치와 즉시 컴퓨터의 반응을
    확인할 수 있는 출력장치가 필요함

단말기

  • 컴퓨터에 데이터를 입력하고 컴퓨터가 내보내는 데이터를 출력하는 장치
  • 단순 터미널 : 극히 제한된 제어 코드만 허용
  • 지능적 터미널 : 일부 입력 데이터 처리를 자체적으로 수행

현대의 단말기

  • 그래픽 단말기 : 문자외에도 그림을 출력
  • 씬 클라이언트 : 그래픽 사용자 인터페이스만 제공하는 필수 요소만으로 구성된 저사양 컴퓨터
  • 팻 클라이언트 : 각종 응용프로그램을 내장

입력데이터 편집
1. 입력 데이터 편집의 필요성

  • garbage in, garbage out
  • 입력된 데이터가 정확하지 않으면 처리 결과도 쓸모가 없으므로, 정확한 데이터가 입력되도록 검증하는것이필요
    - 문자종류 확인
    - 타당성 테스트
    - 범위 테스트
    - 일관성 테스트
    - 체크 디지트 : 데이터 입력 과정에서 발생되는 오류를 검사하기 위해 추가된 숫자

메서드 호출과 메모리: 메서드 스택 프레임2

package ex02;

public class Start4 {
	
	//main() 메서드가 가진 변수 k와 square() 메서드가 가진 변수 k가 이름만 같지 실제로는 서로 별도의 변수 공간 => Call By Value(값에 의한 호출)
	
	//메서드는 서로를 블랙박스화한다. 입력 값과 반환 값에 의해서만 메서드 사이에서 값이 전달될 뿐 서로 내부의 지역 변수를 볼 수 없다.
	//메서드를 호출할 때마다 해당 메서드의 스택 프레임이 생긴다.
	public static void main(String[] args) {
		int k = 5;
		int m;
		
		m = square(k); // 호출되는 메서드의 스택 프레임이 T메모리 스택 영역에 새로 생성
		
		/*
		 * 해당 줄을 실행할 때는 main 메서드와 square메서드의 지역변수를 서로 접근 할 수 있지 않을까? => 불가능하다
		 * 1. 이치에 맞지 않음
		 * 2. 포인터 문제
		 * => 따라서 메서드 사이에 값을 전달하거나 반환하는 방법은 메서드의 인자와 반환값으로만 가능!
		 */
		
	}
	
	private static int square(int k) {
		int result;
		k = 25;
		
		result = k;
		
		return result;
	}
}

전역 변수와 메모리: 전역 변수 쓰지마

두 메서드 사이에 값을 전달하는 방법
1. 인자이용
2. 반환값 이용
3. 전역 변수

package ex02;

public class Start5 {
	
	static int share; //static 영역에 할당됨 , 메서드 밖에서 선언된 변수 share는 메서드들 사이에서 공유해서 사용할 수 있는 전역변수가 된다.
	/*
	 * 지역변수 : 스택프레임이 종송적
	 * 전역변수 : 스택프레임에 독립적
	 */
	
	// 전역변수는 안스는게 좋다  => why) 프로그램이 복잡해지는 경우 전역변수를 추적하는게 힘들어짐 
	
	public static void main(String[] args) {
		share = 55;
		
		int k = fun(5,7);
		
		System.out.println(share);
	}
	
	private static int fun(int m,int p) {
		share = m + p;
		return m - p;
	}
}

멀티 스레드/멀티 프로세스의 이해

멀티 스레드

  • 스택 영역을 스레드 개수만큼 분할해서 쓰는것
  • 하나의 T메모리만 사용하는데 스택 영역만 분할해서 사용
  • 하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만 스태틱 영역과 힙 영역은 공유해서 사용하는 구조

멀티 프로세스

  • 다수의 데이터 저장 영역 , 다수의 T메모리를 갖는 구조
  • 하나의 프로세스가 다른 프로세스의 T메모리 영역을 절대 침범할 수 없는 메모리 구조
  • 메모리 사용량은 크다.
package ex02;

public class Start6 extends Thread{
	static int share;
	
	public static void main(String[] args) {
		Start6 t1 = new Start6();
		Start6 t2 = new Start6();
		
		t1.start();
		t2.start();
	}

	@Override
	public void run() {
		for(int count=0;count<10; count++){
			System.out.println(share++);
			
			try {
				sleep(10000);
			} catch (Exception e) {
				
			}
		}
	}
	
	
}
profile
초보 개발자의 성장기💻

0개의 댓글