728x90

전체 글 715

24.11.24 C++

C++인라인(inline) 함수함수 호출의 오버헤드를 줄이기 위해, 컴파일러가 함수 호출을 실제 함수 코드로 대체하도록 제안하는 함수이다. C++에서 inline 키워드를 사용하여 선언한다.인라인 함수는 컴파일 시점에 처리되며, 함수 호출 대신 함수의 본문을 호출 지점에 복사하여 성능을 최적화하려는 목적으로 사용된다. 따라서 컴파일러는 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우, 이 키워드를 무시해버리기도 한다. 또한 컴파일러는 필요한 경우 일부 함수를 임의로 인라인 처리하기도 한다.특징함수 호출 오버헤드 제거일반적으로 함수 호출 시, 프로그램은 스택에 매개변수와 반환 주소를 저장하고 복귀하는 오버헤드가 발생한다.인라인 함수는 이러한 과정 없이, 함수의 코드를 호출 지점에 직접 삽입한다.컴..

24.11.23 C++

C++Call by Value함수 호출 시 인자의 값 자체를 복사하여 함수에 전달하는 방식이다.함수는 원본 데이터의 복사본을 사용하므로, 함수 내부에서 데이터가 변경되더라도 원본 데이터에는 영향을 미치지 않는다.Call by Reference함수 호출 시 인자의 참조를 전달하는 방식이다.함수는 원본 데이터의 주소를 참조하므로, 함수 내부에서 변경된 내용이 원본 데이터에 반영된다.언제 Call by Value 와 Call by Reference를 사용해야 할까?Call by Value원본 데이터 보호가 중요한 경우 사용한다. 함수 내부에서 인자를 수정하더라도 원본 데이터에 영향을 주기 않아야 할 때 적합하다.데이터의 읽기 전용 연산이나 원본 데이터 변경을 원하지 않는 경우 사용된다.Call by Refer..

추상 클래스/인터페이스

추상 클래스/인터페이스추상 클래스(Abstract Class)추상 클래스는 공통적인 속성과 행동을 정의하는 클래스로, 하위 클래스에서 구현을 강제하고자 하는 추상 메서드를 포함할 수 있다. 추상 클래스는 인스턴스화할 수 없으며, 주로 기반 클래스(base class)로 사용된다.특징추상 클래스는 일반적인 멤버 변수와 구현된 메서드를 포함할 수 있으며, 동시에 순수 가상 함수(C++) 또는 추상 메서드(c#)도 가질 수 있다.상속을 통해 다른 클래스에서 공통 기능을 재사용하면서 특정 메서드의 구현을 강제할 수 있다.추상 클래스 자체로는 인스턴스화 할 수 없고, 반드시 상속받아 구현해야 한다.인터페이스(Interface)클래스가 구현해야 할 메서드의 계약(Contract)을 정의하는 일종의 청사진이다. 인터..

언어/C++ 2024.11.22

async/await

async/await비동기 코드를 더 읽기 쉽게 작성할 수 있도록 도와주는 기능이다. Promise 기반의 비동기 작업을 동기적인 코드 흐름처럼 보이게 하여, 코드의 가독성과 유지보수성을 크게 향상 시킨다.비동기 작업을 처리할 때 콜백 함수나 Promise 체이닝을 사용하던 방식을 async/await를 사용해 더욱 직관적으로 작성할 수 있다.기본 개념async함수 앞에 async 키워드를 붙이면 그 함수는 Promise를 반환하는 비동기 함수가 된다. async 함수는 내부에 await 키워드를 사용할 수 있다.await비동기 작업이 완료될 때까지 기다리는 역할을 한다. await는 Promise가 해결될 때까지 함수의 실행을 일시적으로 멈추고, 결과값을 반환한다. await 키워드는 오직 async ..

언어/Javascript 2024.11.22

24.11.22 JavaScript, C++

JavaScriptasync/await비동기 코드를 더 읽기 쉽게 작성할 수 있도록 도와주는 기능이다. Promise 기반의 비동기 작업을 동기적인 코드 흐름처럼 보이게 하여, 코드의 가독성과 유지보수성을 크게 향상 시킨다.비동기 작업을 처리할 때 콜백 함수나 Promise 체이닝을 사용하던 방식을 async/await를 사용해 더욱 직관적으로 작성할 수 있다.기본 개념async함수 앞에 async 키워드를 붙이면 그 함수는 Promise를 반환하는 비동기 함수가 된다. async 함수는 내부에 await 키워드를 사용할 수 있다.await비동기 작업이 완료될 때까지 기다리는 역할을 한다. await는 Promise가 해결될 때까지 함수의 실행을 일시적으로 멈추고, 결과값을 반환한다. await 키워드는..

코루틴(Coroutine)

코루틴(Coroutine)특정 작업을 여러 프레임에 걸쳐 실행할 수 있도록 지원하는 기능이다.Unity에서 시간 지연이나 비동기적 작업을 쉽게 처리할 수 있게 해주며, 주로 애니메이션, 타이머, 지연 실행 같은 작업에서 많이 사용된다.일반적인 함수와 달리, 호출 시 즉시 종료되지 않고 중간에 실행을 멈추고 나중에 다시 재개될 수 있는 함수이다. Unity에서는 주로 특정 지연 작업이나 프레임 기반의 반복 작업을 처리할 때 코루틴을 사용한다.C#에서는 IEnumerator를 반환하는 함수로 코루틴을 구현하며, 이 함수는 특정 시점에서 실행을 멈추고 다음 프레임 또는 지정된 시간이 지나면 다시 실행된다.특징비동기적 실행 : 다른 작업을 블로킹 하지 않고 비동기적으로 실행되므로, 프레임 드롭없이 지연이나 반복..

Unity 2024.11.21

Promise

Node.jsPromise비동기 작업을 처리하기 위해 사용되는 객체이다. 비동기 코드를 더 이해하기 쉽게 작성하고, 콜백 지옥을 피하기 위해 도입되었다.Promise란?자바스크립트에서 비동기 작업의 결과를 나타내는 객체로, 결과값을 아직 사용 불가능한 시점과 결과가 사용 가능한 시점을 쉽게 관리할 수 있게 한다. Promise는 아래와 같은 세 가지 상태를 가질 수 있다.Pending : 초기 상태로, 비동기 작업이 아직 완료되지 않은 상태이다.Fulfilled : 작업이 성공적으로 완료된 상태이며, 결과 값(value)가 존재한다.Rejected : 작업이 실패한 상태이며, 오류(reason)가 존재한다.Promise는 상태가 변경되면 해당 상태로 연결된 처리기(handler)가 호출된다.Promise..

언어/Javascript 2024.11.21

24.11.21 Node.js, Unity

Node.jsPromise비동기 작업을 처리하기 위해 사용되는 객체이다. 비동기 코드를 더 이해하기 쉽게 작성하고, 콜백 지옥을 피하기 위해 도입되었다.Promise란?자바스크립트에서 비동기 작업의 결과를 나타내는 객체로, 결과값을 아직 사용 불가능한 시점과 결과가 사용 가능한 시점을 쉽게 관리할 수 있게 한다. Promise는 아래와 같은 세 가지 상태를 가질 수 있다.Pending : 초기 상태로, 비동기 작업이 아직 완료되지 않은 상태이다.Fulfilled : 작업이 성공적으로 완료된 상태이며, 결과 값(value)가 존재한다.Rejected : 작업이 실패한 상태이며, 오류(reason)가 존재한다.Promise는 상태가 변경되면 해당 상태로 연결된 처리기(handler)가 호출된다.Promise..

24.11.20 CS

객체의 결합도 & 응집도소프트웨어의 모듈 독립성프로그래밍이란 문제를 정의하고 하나씩 해결해나가는 과정을 말한다. 문제가 복잡하고 큰 문제라면, 일반적으로 문제를 작은 부분으로 쪼개어서 하나씩 풀어나가게 될 것인데, 이 떄 문제를 작은 부분으로 쪼개나가는 것을 모듈화라고 한다.모듈은 소프트웨어를 각 기능별로 나누어진 소스 단위를 말한다. 독립적으로 컴파일 가능한 프로그램 혹은 하나의 함수나 클래스도 모듈이 된다.보통 좋은 소프트웨어 일수록 모듈의 독립성이 높다고 한다. 좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누게 되는데, 각각의 모듈은 주어진 기능만을 독립적으로 수행하기 때문에 재사용성이 높고 코드의 이해/수정이 용이하기 때문이다. 예를 들어 해당 모듈을 수정하더라도 다른 모듈에 끼치는 영향이 적게..

24.11.19 CS

CSRB Tree특징이진 탐색 트리의 한 종류로, 노드에 색상을 추가하여 균형을 유지하는 자기 균형 이진 탐색 트리이다.레드-블랙 트리는 다음 5가지 성질을 만족해야 한다.노드는 빨간색 또는 검은색이다.루트는 항상 검은색이다.모든 리프(Leaf, NIL노드)는 검은색이다.리프 노드는 데이터를 가지지 않는 NIL 노드로 표현한다.빨간색 노드의 자식 노드는 모두 검은색이다.빨간색 노드는 연속해서 나타날 수 없다.루트에서 각 리프 노드까지 가는 경로에는 항상 같은 개수의 검은색 노드가 있다.이 값을 Black Height라고 한다.장점삽입/삭제/탐색이 항상 O(log n)으로 효율적이다.이진 탐색 트리의 단점인 편향된 트리를 방지한다.구현이 표준화되어 있고, 많은 라이브러리에서 사용된다.단점구현이 복잡하다.특..

728x90