목록IT/Computer Science (33)
충분히 쌓여가는
Transport Layer(전송 계층) 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해주면서 종단 간(End Point)의 사용자들에게 신뢰성 있는 데이터를 전달하는 계층 순차 번호 기반의 오류 제어 방식을 사용 종단 간 통신을 다루는 최하위 계층으로 종단 간 신뢰성 있고 효율적인 데이터 전송 전송 계층 프로토콜: TCP, UDP 종단 간 신뢰성 있는 데이터 전송을 담당하는 계층 더보기 신뢰성: 데이터를 순차적, 안정적인 전달 전송: 포트 번호에 해당하는 프로세스에 데이터 전달 Transport Layer가 없을 경우 데이터의 순차 전송이 원활하지 않음 송신자(1 2 3) -> 수신자(2 3 1) Flow(흐름 문제) 수신자가 처리할 수 있는 데이터량 초과 원인: 송수신자 간의 데이..
객체지향 설계 개념 클래스(class): 공통되는 것들을 묶어서 대표적인 이름을 붙인 것(추상화 결과) 인스턴스(instance): 클래스가 메모리 공간에 할당된 실체 객체(object): 명확한 의미를 담고 있는 대상(설계자 관점), 클래스에서 생성된 변수(개발자 관점), 유일한 식별자, 상태 존재, 연산가능한 메서드 클래스 class 객체 object 핸드폰 설계도 핸드폰 자동차 설계도 자동차 붕어빵 틀 붕어빵 SOLID 객체 지향 프로그래밍(OOP: Object Oriented Programming) 대표적 원칙 단일 책임 원칙(SRP: Single Responsibility Principle) 하나의 클래스는 하나의 책임만 가져야 함 클래스가 제공하는 모든 서비스(methods)는 그 책임을 수행..
Design Pattern(디자인 패턴) 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴 디자인 패턴을 참고하여 개발할 경우 효율성과 유지보수성, 운용성이 높아지며, 프로그램의 최적화에 도움이 됨 유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반호하여 체계적으로 정리해 놓은 것 프로그램 개발 과정에서 자주 발생하는 문제를 해결하기 위한 방법 중 하나로, 소프트웨어 개발 과정에서 발견된 설계의 경험을 축ㅈ덕하여 이름을 붙여놓고 차후에 재사용하기 좋은 형태로 정리한 것 소트트웨어 아키텍쳐나 프레임워크와 달리 기능보다 구조, 가독성 및 확장성에 비중을 둠 ex. 소프트웨어 개발자들이 유용하다고 생각되는 객체나 객체..
Compiler 컴파일러 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램 프로그래밍 언어의 소스 코드 를 기계 코드, 바이트 코드 또는 다른 프로그래밍 언어로 변환하는 특수 프로그램 컴파일러는 소스 코드를 기계 코드나 바이트코드가 아닌 다른 고급 프로그래밍 언어로 변환할 수 있음 일부 컴파일러는 소스 코드를 기계 코드나 바이트코드가 아닌 다른 고급 프로그래밍 언어로 변환 Compiler의 역사 초기 컴퓨터 프로그램들은 어셈블리어로 작성됨 서로 다른 CPU 아키텍처가 등장할 때마다 매번 똑같은 프로그램을 서로 다른 어셈블리어로 작성하는 비용이 커짐 -> 고급 프로그래밍 언어의 필요성이 대두됨(초기 컴퓨터 하드웨어의 메모리 크기가 너무 작아, 컴파일러의 등장에 기술..