2023.04.27.THU

ronglong·2023년 4월 27일
0

[ TDD 특강 ]

  • SW 개발 방법론 : 워터폴, 애자일, XP(익스트림 프로그래밍), TDD, BDD 등
  • TDD : 테스트 코드 작성(실패 테스트 먼저 만들기) -> 코드 개발 -> 리팩토링
  • @ParameterizedTest
    https://velog.io/@ohzzi/junit5-parameterizedtest

[ 혼공컴운 ]

Chapter 04. CPU의 작동 원리

  • ALU
    • 받아들이는 값 : 레지스터-피연산자, 제어장치-제어신호
    • 내보내는 값 : 레지스터-연산결과값, 플래그 레지스터-플래그(연산 결과에 대한 추가적인 상태 정보)
  • 제어장치 : 제어 신호를 내보내고 명령어를 해석하는 부품
    • 받아들이는 값 : 클럭, 명령어 레지스터-명령어, 플래그 레지스터-플래그, 제어 버스-제어 신호
    • 내보내는 값 : CPU 내부-제어 신호, 제어 버스(메모리, 입출력장치)-제어 신호
  • 레지스터 : CPU 내 임시 저장 장치
    • 프로그램 카운터(명령어 포인터) : 명령어 주소 저장. 지속적으로 증가하며 다음 명령어 읽을 준비. 변위 주소 지정 방식 중 상대 주소 지정 방식에 사용.
    • 메모리 주소 레지스터
    • 메모리 버퍼 레지스터(메모리 데이터 레지스터) : 메모리 속 값(데이터, 명령어)을 데이터 버스로 주고 받음
    • 명령어 레지스터 : 명령어 저장
    • 범용 레지스터 : 데이터와 주소 모두 저장 가능
    • 플래그 레지스터
    • 스택 포인터 : 메모리의 스택 영역의 꼭대기 주소를 저장. 스택 주소 지정 방식에 사용.
    • 베이스 레지스터 : 변위 주소 지정 방식 중 베이스 레지스터 주소 지정 방식에 사용.
  • 명령어 사이클 : 명령어 처리하는 정형화된 흐름. 인출,실행,간접,인터럽트
  • 인터럽트 : CPU의 정상적인 작업을 방해하는 신호
    • 동기 인터럽트(예외) : 폴트(예외 발생한 명령어부터 재실행), 트랩(예외 발생한 명령어 다음 명령어부터 재실행, 디버깅), 중단, 소프트웨어 인터럽트
    • 비동기 인터럽트(하드웨어 인터럽트)
      • 알림 역할. 인터럽트 플래그로 막을 수 있는 것과 없는 것이 있음.
      • 인터럽트 요청 신호(입출력장치->CPU)+인터럽트 벡터(인터럽트 서비스 루틴 시작 주소), 인터럽트 플래그 확인, 인터럽트 서비스 루틴(인터럽트 핸들러, 프로그램)
      • 기존 작업은 스택 영역에 백업 해두고 멈췄다가 인터럽트 처리 후 재개.

[ 유어클래스 다시 읽기 ]

  • section1. 자바 심화(Effective)
    • 스트림(Stream) : 배열, 컬렉션을 하나씩 참조해서 람다식으로 처리하는 반복자
      • 기존의 명령형이 아닌, 선언형 프로그래밍 가능
      • read-only, onetime-only, 내부 반복자
      • 자바8 이후에 도입
      • 무한 스트림(infinite stream) : limit(), rangeClosed(), 매개변수 등으로 제한 가능
      • flatMap() : 다차원 배열일 때, 중첩 구조를 제거하고 단일 컬렉션(Stream< String >)으로 만들어줌.
      • reduce() : 요소 소모 및 누적. count(), sum() 등도 내부적으로 reduce() 사용.
    • 파일 입출력(I/O)
      • InputStream, OutputStream : 스트림은 단방향으로만 데이터 전송 가능
      • BufferedInputStream : 보조 스트림. 버퍼==바이트 배열. 한 번에 많은 양의 데이터를 입출력 가능
      • FileReader(인코딩->유니코드) / FileWriter(유니코드->인코딩) : 문자 기반 스트림
      • File 클래스로 파일과 디렉토리에 접근 가능
    • 스레드(Thread) : 실행되는 소스 코드의 흐름
      • 프로세스 : 실행중인 어플리케이션
      • 싱글 스레드 프로세스, 멀티 스레드 프로세스(동시 작업(멀티 스레딩) 가능)
      • 스레드 생성 : Runnable 인터페이스 구현 객체에서 run(), Thread 클래스를 상속받은 하위 클래스에서 run().
        Thread thread = new Thread(Runnable);
      • start() : run() 내부 실행 위해 필요. 스레드를 실행 대기 상태로 만듦.
      • 스레드 동기화
        • 임계 영역(Critical section, 하나의 스레드만 실행 가능한 코드 영역),
        • (Lock, 임계 영역 객체에 대한 접근 권한)
        • synchronized : 임계 영역 설정
      • 스레드 실행 제어 메서드 : Thread.sleep(long milliSecond)-일시 중지, interrupt()-예외 발생시켜서 실행 대기로 복귀, yield()-양보 등

[ 느낀 점 ]

내일은 낮에 TDD 강의 듣는 시간 빼고는 알고리즘, 자료구조에 몰빵 공부해야겠다.

0개의 댓글