전체 글

전체 글

    [C++ STL] vector(벡터) 공부

    [C++ STL] vector(벡터) 공부

    STL : 표준 템플릿 라이브러리; Standard Template Library 사용하려면 #include 가 필요하다. C++에서는 동적 배열 구조를 vector로 구현할 수 있다. vector vec, vector vec처럼 선언해주면 자동으로 배열의 크기 조절과 객체의 추가, 삭제가 가능하다. 단, 한번에 한 타입만 저장이 가능하다. 요소에 접근하거나, 앞 or 뒤에 요소를 추가/삭제하거나, 크기를 알 수 있는 멤버 함수 등을 제공한다. 다음은 vector를 이용해 문자열을 추가, 삭제해 각각 출력하는 코드다. #include #include #include // vector 헤더파일 추가 using namespace std; int main() { vector vec; // 비어있는 벡터 생성 ..

    [C++] 클래스(class) 기본

    클래스(Class) C++의 클래스는 C의 구조체에서 확장된 C++의 구조체와 기본(default) 접근제한자만 다른 것이라고 볼 수 있다. 접근제한자 접근 제한자는 3가지로 나뉘며, 멤버들의 접근 권한을 정한다. private: 같은 클래스(또는 friend) 안에서 접근 가능 클래스 내(클래스 내에 정의된 함수)에서만 접근 허용 protected: 같은 클래스 또는 상속된 자식 클래스(또는 friend) 안에서 접근 가능 - 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용 public: 어디서든 접근 가능 C++에서 클래스의 기본 접근 제한자는 private이다. C에서 구조체나 C++에서 구조체의 기본 접근 제한자가 public인 것과 다르다. 클래스는 쉽게 말하면 변수와 함수 등을 포함하는 ..

    OOP(객체지향 프로그래밍)의 주요특징

    객체지향 프로그래밍(Object-Oriented Programming; OOP)의 주요 특징으로는 캡슐화, 추상화, 상속, 다형성이 있다. 정보은닉을 추가하여 5가지라고 보는 경우도 있으니, 캡슐화와 정보은닉의 차이점에 유의하며 주요 특징들을 알아보자. 1. 캡슐화(Encapsulation) 변수와 함수를 캡슐처럼 하나의 단위로 묶는 것을 의미한다. 즉 데이터의 번들링(Bundling)이다. 이처럼 객체의 속성(data fields)과 행위(메서드)를 하나로 묶기도 하고, 실제 구현 내용 일부를 외부로부터 감춰 은닉한다는 특징이 있어 캡슐화라고 한다. 대개 프로그래밍 언어에서 이 번들링은 클래스를 통해 구현되고, 해당 클래스의 인스턴스(객체) 생성을 통해 클래스 안에 포함된 멤버 변수와 메소드에 쉽게 접..

    [C++] 데이터 타입(자료형)

    C++의 데이터 타입은 크게 아래와 같이 구분짓고 있다. bool형 문자형 정수형 부동소수(실수)형 다음은 C++ 32비트 및 64비트를 기준으로 한 자료형의 크기 및 범위다. 구분 데이터 타입 크기 (byte) 범위 bool형 bool 1 true or false 문자형 (signed) char 1 -128 ~ 127 unsigned char 1 0 ~ 255 wchar_t 2 0 ~ 65,535 정수형 (signed) short (int) 2 -32,768 ~ 32,767 unsigned short (int) 2 0 ~ 65,535 (signed) int 4 –2,147,483,648 ~ 2,147,483,647 unsigned int 4 0 ~ 4,294,967,295 (signed) long (i..

    [C++] 메모리 영역 (메모리 구조), 정적할당과 동적할당

    [C++] 메모리 영역 (메모리 구조), 정적할당과 동적할당

    프로그램의 동작 원리 사용자가 운영체제(OS)를 통해 프로그램 실행을 요청. 하드디스크(HDD)에 저장되어있던 프로그램을 작동시키기 위해 메모리의 코드 영역에 올림. CPU가 프로그램 코드를 읽어 메모리를 관리하고 명령문들을 실행. 프로그램 실행을 위해 동적메모리가 할당되면 Heap을 아래로 넓히며 FreeStore영역을 사용 시스템이 작동하기 위해 CPU가 임시적인 정보를 Stack에 저장해 위로 넓히며 FreeStore영역을 사용 ※ Heap 메모리와 Stack 메모리를 많이 사용하면 남은 FreeStore영역이 없어져 메모리가 부족한 상태가 됨. 이해를 위해 편의상 위와 아래로 넓힌다고 했지만, stack은 높은 주소→낮은 주소 순으로 공간을 채우고 heap은 낮은 주소→높은 주소 순으로 채우기 때..

    [React] 리액트에서 라우터 다루기

    [React] 리액트에서 라우터 다루기

    Node.js를 이용해서 중고거래 사이트를 만들었는데, 이번에는 리액트를 사용하여 팀프로젝트를 하게 됐다. 그래서 리액트를 사용하면 어떻게 라우팅을 해야하는지 정리하며 익혀보려 한다. 우선 npm으로 yarn을 설치하고, ' yarn create react-app 프로젝트명 ' 으로 프로젝트 폴더를 생성했다. 리액트에서 라우팅을 하기 위해 터미널의 기본 프로필을 cmd로 설정한 후 yarn add react-router-dom yarn으로 웹용 패키지인 react-router-dom을 설치했다. React-snippets 확장을 설치하면 rafce 단축키를 써서 리액트 기본코드를 만들 수 있다. 기본 컴포넌트 준비 src/App.js import {Route, Link, NavLink} from 'rea..

    블로킹/논블로킹, 스레드 - 싱글/멀티 스레드 정리

    동기나 비동기에 대해서는 많이 접해봤는데 이번에 블로킹과 논블로킹 개념을 조사하라는 과제를 통해 해당 개념을 처음 접하게 되었다. 그래서 이해한 내용을 토대로 블로그에도 다시한번 정리해보려고 한다. 1. 블로킹, 논블로킹 블로킹 : 자신의 작업을 하다가 다른 작업 주체가 하는 작업이 시작되면 끝까지 기다렸다가 다시 자신의 작업을 시작한다. 즉, 결과가 올때까지 작업을 중단하고 대기한다. => 설계가 간단하지만 경우에 따라 효율이 떨어짐 논블로킹 : 다른 주체의 작업과 상관없이 자신의 작업을 계속한다. => 설계가 복잡하지만 경우에 따라 효율이나 반응속도가 더 뛰어남 언뜻 보면 다른 작업을 기다렸다가 작업을 하는지 여부에 따라 개념이 나뉘는 동기/비동기와 비슷해보인다. 내가 이해한 두 개념의 차이는 다음과..

    팀플 게시판+댓글 db연동 후기(의식의 흐름)

    팀플 게시판+댓글 db연동 후기(의식의 흐름)

    21년 1월 27일~ 2월 9일까지 진행했던 팀프로젝트에서 내가 담당했던 부분을 기록해보려고 한다. 나는 사이트의 게시판과 댓글부분을 담당했다. 조장님이 메인을 엄청 깔꼼하게 뽑아줘서 다행이었다ㅜㅠ 회원가입과 로그인도 잘해줘서 게시판의 허접함이 좀 가려졌다^.^ 완전 백지인 상태로 DB연동을 하려고 부딪혀야 했다는 것과... 사람 때문에 순탄치 않았지만... 어떻게 하냐 왜 안되냐 욕하면서 하나하나 구글링하고 생활코딩 영상을 보면서 익혀나갔다. 멘탈 나간게 복구되고나서 보니 참 허전하다. 게시판의 이미지 크기랑 간격을 좀 더 늘렸으면 좋았을 것 같은데 동물 버프로 히히 귀여워 하고 넘어갔음ㅠㅠ 우선 내가 담당한 부분은 게시판 + 댓글이었고, 그 때는 뭐가뭔지 몰라서 여기에 db가 이렇게 많이 들어갈지 몰..