728x90

Study 383

24.11.29 C++

C++복사 생성자복사 생성자는 호출되는 시점이 다른 일반 생서어자와 차이가 있기 때문에 이름이 붙었다.멤버 대 멤버의 복사에 사용되는 원본을 변경시키는 것은 복사의 개념을 무너뜨리는 행위가 되니, 키워드 const를 삽입해서 이러한 실수를 막아 놓는 것이 좋다.복사 생성자를 정의하지 않으면, 멤버 대 멤버의 복사를 진행하는 디폴트 복사 생성자가 자동으로 삽입된다.디폴트 복사 생성자를 막기 위해서는 복사 생성자의 묵시적 호출을 허용하지 않으면 된다. 이러한 목적으로 explicit이 사용된다. explicit을 사용하면 묵시적 변환이 발생하지 않아서 대입 연산자를 이용한 객체의 생성 및 초기화가 불가능해진다.전달인자가 하나인 생성자가 있다면, 이 역시 묵시적 변환이 발생한다.복사 생성자의 매개변수는 참조형..

24.11.28 면접 후기

아아아아아 진짜 머하냐 나기술 면접 너무 개같이 봤다. 오래돠어 잘 가억나지 않는 질문도 있었지만 최근에 공부하고 기초적인 질문도 답하지못해서 그래서 더 뼈아프다. 하 아아아아아아아ㅏ 진짜 개 바보 멍청이 이걸 어떻하지 아니 아는건데ㅔㅔㅔㅔ경험을 쌓았다고 생각하자.. 아 근데 진짜 알았는데 아아아아아아아 ㅋㅋ.. ㅋ.. 나같아도 나처럼 답하면 얘는 뭐지 싶겠다. 하.. 면접Struct그래 최근에 했던 구조체.하.. 장단점을 여쭤보셨는데 잘대답하지 못했다. 이게 프로그래머...?이 부분에서 아마 많은 실망을 하셨을것같다.지금은 너무 쓰라리지만 그래도 내 지식 어디에 구멍이 났고 어느부분을 다시 채워여하는지 알게됐으니 그런 부분은 좋다. 물론 지금은 많이 아프다.작고 단순한 데이터에 적합하다는것은 알았지만..

24.11.27 서버, AWS

서버서버리스 아키텍처서버리스(Serverless) 아키텍처는 애플리케이션 개발자가 서버를 직접 관리하지 않고, 클라우드 제공자가 백엔드 인프라를 동적으로 관리하는 아키텍처를 말한다. 개발자는 애플리케이션의 로직과 기능에만 집중하고, 서버 프로비저닝, 유지보수, 확장 등은 클라우드 제공자가 처리한다.특징No Server Management(서버 관리 불필요)개발자는 물리적 서버, 가상 서버, 운영체제 관리에 신경 쓰지 않는다.클라우드 제공자가 서버를 자동으로 관리한다.이벤트 기반 실행서버리스 함수(예: AWS Lambda)는 특정 이벤트가 발생할 때만 실행된다.사용자가 요청을 보내거나 특정 조건이 충족될 때만 리소스를 사용한다.자동 확장트래픽에 따라 클라우드 제공자가 애플리케이션을 자동으로 확장하거나 축소..

24.11.26 C++, 책

C++클래스(Class)키워드 struct를 대신해서 class를 사용하면, 구조체가 아닌 클래스가 된다.클래스는 기본적으로(별도의 선언을 하지 않으면) 클래스 내에 선언된 변수는 클래스 내에 선언된 함수에서만 접근이 가능하다.클래스는 정의를 하는 과정에서 각각의 변수 및 함수의 접근 허용범위를 별도로 선언해야 한다. 이것이 struct를 이용해서 정의하는 구조체와 class를 이용해서 정의하는 클래스의 차이점이다.접근제어 지시자(접근제어 레이블)C++의 접근제어 지시자는 다음과 같이 총 세가지가 존재한다.public : 어디서든 접근허용protected : 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용private : 클래스 내(클래스 내에 정의된 함수)에서만 접근허용접근제어 지시자가 선언되면,..

24.11.25 CS, C++

책이것이 컴퓨터 과학이다.Chapter 2. 운영체제운영체제의 핵심 기능을 담당하는 부분을 커널(kernel)이라고 한다.운영체제에는 크게 2가지의 핵심 기능이 있다.자원 할당 및 관리프로세스 및 스레드 관리운영체제의 역할자원(resource)이란 프로그램 실행에 마땅히 필요한 요소를 의미한다. 실행에 필요한 데이터를 자원이라고 하기도 하고, 실행에 필요한 부품을 자원이라고 하기도 한다.운영체제는 사용자가 실행하는 응용 프로그램을 대신하여 CPU, 메모리, 보조기억장치 등의 컴퓨터 부품에 접근하고, 각각의 부품들이 효율적으로 사용되도록 관리한다.응용 프로그램이 컴퓨터 부품들을 효율적으로 할당받아 문제 없이 실행할 수 있도록 응용 프로그램에게 자원을 할당한다.프로세스와 스레드프로세스의 유형으로는 사용자가 ..

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..

24.11.22 JavaScript, C++

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

24.11.21 Node.js, Unity

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

24.11.20 CS

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

728x90