728x90

CS 188

24.09.23 C++, CS

CSTCP/UDPTCP연결 지향형 서비스(reliable service)와 신뢰적 데이터 전송 서비스(data integrity)를 포함한다.Reliable ServiceTCP는 메시지 전송 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 한다. 즉, 패킷이 전송될것을 미리 알려준다.Data integrityTCP는 데이터를 오류 없이 올바른 순서로 전달하는 것을 보장한다.Congestion control(혼잡제어)TCP의 congestion control은 네트워크가 혼잡상태에 이르면 프로세스의 속도를 낮춘다.즉, 프로세스가 우선이 아니라 네트워크의 안정성 향상을 우선한다.Flow control(흐름제어)TCP는 receiver의 buffer가 꽉 차서 데이터가 손실되지 않도록 sender의..

24.09.20 C++, CS

C++템플릿C++ 템플릿(template)은 코드를 일반화하여 여러 데이터 타입에 대해 동작하는 함수를 작성할 수 있게 해주는 강력한 기능이다. 이를 통해 코드 재사용성을 높이고, 동일한 로직을 여러 타입에 대해 사용할 수 있다.템플릿은 주로 함수 템플릿과 클래스 템플릿으로 나뉘며, 이 두 가지를 사용해 다양한 데이터 타입에 대해 유연하게 프로그래밍할 수 있다.1. 템플릿의 기본 개념템플릿은 코드를 작성할 때 구체적인 데이터 타입을 지정하지 않고, 타입을 매개변수화하여 나중에 구체적인 데이터 타입이 주어졌을 때 그에 맞는 코드를 생성하는 방식이다.2. 함수 템플릿함수 템플릿은 함수에 대해 데이터 타입을 일반화할 수 있게 한다. 예를 들어, 두 개의 값을 비교하여 더 큰 값을 반환하는 함수를 생각해보자. ..

24.09.19 C#, CS

C#using System;usingC#의 키워드 중 하나다.SystemC# 코드에 기본적을 필요한 클래스를 담고 있는 네임스페이스다.;(세미콜론)컴파일러에게 문장의 끝을 알려준다.using static어떤 데이터 형식의 정적 멤버를 데이터 형식의 이름을 명시하지 않고 참조하겠다.전역 using(global using)소스파일 한 곳에서만 네임스페이스를 참조하면 프로젝트 내 모든 파일에서 별도의 using문 없이 해당 네임스페이스를 참조할 수 있도록 한다.파일 범위 네임스페이스namespace 선언 뒤에 {} 대신 ;(세미콜론)을 붙이면 그 파일의 모든 코드는 해당 네임스페이스 소속으로 들어간다.Static void Main(string[] args){}이 메소드는 프로그램의 진입점(Entry Point..

24.09.10 CSAPP

24.09.10 CSAPPCSAPP9. 가상메모리한 시스템의 프로세스들은 CPU와 메인메모리를 다른 프로세스들과 공유한다.메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해서 현대의 시스템은 가상메모리 VM이라고 알려진 메인메모리의 추상화를 제공한다. 가상메모리는 각 프로세스에 하나의 크고 통합된 사적 주소공간을 제공한다. 이것은 하드웨어 예외, 하드웨어 주소번역, 메인메모리, 디스크파일, 커널 소프트웨어들 사이의 상호작용이다. 가상메모리는 한 개의 깔끔한 매커니즘을 사용해 세 주요 기능을 제공한다.메인메모리를 디스크에 저장 된 주소공간에 대한 캐시로 취급해서 메인메모리내 활성화 영역만 유지하고, 데이터를 디스크와 메모리간에 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용한다.각 ..

카테고리 없음 2024.09.10

24.09.06 CSAPP, CS

CSAPP9.9.8 가용블록의 분할할당기가 크기가 맞는 가용 블록을 찾은 후에 가용 블록의 어느정도를 할당할지에 대해 정책적 결정을 내려야 한다. 한 가지 옵션은 이 가용 블록 전체를 사용하는 것이다. 비록 간단하고 빠르지만, 큰 단점은 내부 단편화가 생긴다는 것이다. 만일 배치 정책으로 인해 크기가 잘 맞는다면, 일부 추가적인 내부 단편화는 수용할 수도 있다.그렇지만 크기가 잘 안맞는다면, 할당기는 대개 가용 블록을 두 부분으로 나누게 된다. 첫 번째 부분은 할당한 블록이 되고, 새로운 가용 블록이 된다.9.9.9 추가적인 힙 메모리 획득하기할당기가 요청한 블록을 찾을 수 없다면, 메모리에서 물리적으로 인접한 가용 블록들을 합쳐서(연결해서) 더 큰 가용 블록을 만들어 본다. 이렇게 해도 충분히 큰 블록..

24.09.03 CS, C++

24.09.03 CS, C++CS추상 팩토리(Abstract Factory)추상 팩토리 패턴은 연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴이다. 클라이언트에서 특정 객체를 사용할 때 팩토리 클래스만을 참조하여 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다.즉, 추상 팩토리의 핵심은 제품군 집합을 타입 별로 찍어낼 수 있다는 점이 포인트이다. 복잡하게 묶이는 제품군들을 관리와 확장하기 용이하게 패턴화 한 것이 추상 팩토리이다.추상 팩토리 패턴 구조AbstractFactory최상위 공장 클래스. 여러개의 제품들을 생성하는 여러 메소드들을 추상화 한다.ConcreteFact..

24.09.02 CS, 언리얼

CS팩토리 메서드(Factory Method)팩토리 메소드 패턴은 객체 생성을 공장 클래스로 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴이다.즉, 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 도맡아 생성하는 공장 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임지는 것이다.또한 객체 생성에 필요한 과정을 템플릿처럼 미리 구성해놓고, 객체 생성에 관한 전처리나 후처리를 통해 생성 과정을 다양하게 처리하여 객체를 유연하게 정할 수 있는 특징도 있다.팩토리 메서드 패턴 구조Creator최상위 공장 클래스로서, 팩토리 메서드를 추상화하여 서브 클래스로 하여금 구현하도록 한다.객체 생성 처리 메서드(someOp..

24.08.30 CS, C++

CS상태(State) 패턴상태 패턴은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 상태를 조건문으로 검사해서 행위를 달리하는 것이 아닌, 상태를 객체화하여 행동을 할 수 있도록 위임하는 패턴을 말한다.객체 지향 프로그래밍에서의 클래스는 꼭 사물/생물 만을 표현하는 고체 형태의 데이터만 표현 할 수 있는게 아니다. 경우에 따라 무형태의 행위/동작도 클래스로 묶어 표현할 수 있다.그래서 상태를 클래스로 표현하면 클래스를 교체해서 상태의 변화를 표현할 수 있고, 객체 내부 상태 변경에 따라 객체의 행동을 상태에 특화된 행동들로 분리해 낼 수 있으며, 새로운 행동을 추가하더라도 다른 행동에 영향을 주지 않는다.여기서 상태란 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다.이처럼 객체가 특정 상태에 따..

24.08.29 CS, C++

CS템플릿 메소드(Template Method)템플릿 메서드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화 하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작을 다르게 구현하는 패턴이다.즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들어두고 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 상위의 메소드 실행 동작 순서는 고정하면서 세부 실행 내용은 다양화 될 수 있는 경우에 사용된다.템플릿 메소드 패턴은 상속이라는 기술을 극대화하여, 알고리즘의 뼈대를 맞추는 것에 초점을 둔다. 이미 수많은 프레임워크에서 많은 부분에 템플릿 메소드 패턴 코드가 우리도 모르게 적용되어 있다.템플릿 메서드 패턴 구조AbstractClass(추상 클래스)템플릿 메소드를 구현하고, 템플릿 메소..

728x90