본문 바로가기
반응형

전체 글1305

[디자인패턴] 체인 패턴 (Chain of Responsibility, 책임 연쇄) 🎈 체인 패턴 (Chain of Responsibility)• 책임 전가(고리, 연쇄)라고 불리는 패턴• 처리할 수 있는 다른 객체 연결 → 요청을 처리하거나 못해도 다음 객체로 전달한다.• 요청 자체와 각 처리 객체 사이의 결합을 피한다. → 객체 메시지 송신과 수신 분리• 하나의 객체에서 모든 처리를 구현하지 않을 수 있다.    → 객체의 의존성 주입을 통한 위임• 디자인 패턴에서 행위 패턴에 속한다. 💻 디자인 패턴(Design Pattern)이란?👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방zoosso.tistory.com .. 2024. 7. 31.
[임베디드/펌웨어] TCM과 TIM 영역 TCM (Tightly Coupled Memory)CPU와 직접 연결되어 있는 영역으로높은 성능과 낮은 지연 시간 제공  CPU와 직접 연결되어 있어중간에 다른 메모리 관리 단계를 거치지 않는다.그렇기에 메모리 접근이 항상 일정한 시간 소요주로, ARM Cortex-M 프로세서와 같은 임베디드 시스템에서 사용  TCM에는 크게 ITCM(Instruction)과 DTCM(Data) 영역으로 나뉘어져 있다.ITCM = 빠른 명령어 실행DTCM = 빠른 데이터 접근  TIM (Tightly Integrated Memory)TCM과 유사하게 접근 속도를 높이는 역할인데TIM은 일반적으로 캐시를 통해 접근한다.TCM과 마찬가지로 ITIM (Instruction), DTIM (Data) 영역 존재.  Q) 캐시 접.. 2024. 7. 27.
[C/C++] Header Guard 활용 여러 파일에서 특정 헤더 파일을 #include 할 수 있다.이 경우 헤더파일이 중복 컴파일되어 에러 발생하게 된다. 그렇기에 모든 header 파일은 여러 번 포함되는 것을 방지하기 위해header guard를 가지고 있어야 한다.  #pragma onceC++ 표준은 아니지만컴파일러 대부분이 지원하며 컴파일 속도가 빠른 편이다.또한 이름 충돌 위험도 적은 편이라서 활용도가 좋다.* 모든 컴파일러에 지원되지 않는다.#pragma onceclass MyClass{public: MyClass(); ~MyClass(); void doSomething();};  • 헤더파일 포함횟수와 관계없이 단 한번만 컴파일 처리• header 파일 1번째 줄 [#pragma once] 작성 2번째 줄은 공.. 2024. 7. 24.
[C/C++] [전처리기] #if #ifif - else문과 비슷한 구조를 가진다.다만 끝에 #endif 닫아주는 지시어가 존재한다.또한 조건문에 사용되는 소괄호와 동작 내용 부분의 중괄호가 존재하지 않는다. #include #define MODE 1#if MODE == 1char FILE_NAME[20] = "input.txt";#elif MODE == 2char FILE_NAME[20] = "sample.txt";#elsechar FILE_NAME[20] = "sample_input.txt";#endifint main() { freopen(FILE_NAME, "r", stdin);} Q) if문과 같이 조건에 따른 분기처리를 하는데 굳이 #if가 존재하는 이유는?A) 조건에 부합하지 않는 경우(false)인 경우 컴파일 자체가.. 2024. 7. 23.
[Git] 깃 버전 관리 버전 관리버전을 효과적으로 관리하는 방법에는 태그(tag)가 있다.  📌 [깃] git tag 명령어 옵션 [깃] git tag 명령어 옵션태그 생성태그를 붙여 놓으면 Commit Hash나 브랜치명 대신태그명으로 해당 Commit을 활용할 수 있다.* 특정 Commit에 태그 생성도 가능$ git tag {태그 이름}$ git tag v1.0# 특정 Commit에 Tag 생성$ git tag {태그zoosso.tistory.com  버전 표기 방법으로는 x.x.x 로 일반적으로 표기하는데 순서대로 [MAJOR , MINOR, PATCH] 구성  버전에 따라 변경 범위를 짐작할 수 있다. * 각 버전을 어떤 수준에서 변경할지는 내부 정책마다 다르다. 버전 구성MAJOR • 특정 시점을 기준으로 배포하고.. 2024. 7. 20.
[깃] git tag 명령어 옵션 태그 생성태그를 붙여 놓으면 Commit Hash나 브랜치명 대신태그명으로 해당 Commit을 활용할 수 있다.* 특정 Commit에 태그 생성도 가능$ git tag {태그 이름}$ git tag v1.0# 특정 Commit에 Tag 생성$ git tag {태그 이름} {Commit Hash}모든 태그 조회 git tag 특정 태그 이름 조건 검색 -l 또는 --list 옵션 및 와일드카드(*) 패턴 활용 $ git tag -l {태그 이름}$ git tag -l v1.1.* 상세 내용 확인 show 명령어로 특정 태그 정보 조회$ git show {태그 이름}원격 저장소에 태그 올리기(push) Branch에서 git push 명령어로 자동으로 원격 저장소에 태그 까지 전송하지 않는다. 만든 태그는 .. 2024. 6. 15.
[C++] enum class와 enum enum은 순차적으로 나열된 정수형 상수를 만들 때 사용사용할 때는 enum 키워드 없이 이름을 가져와 사용하면 된다.enum SU { ONE = 1, TWO, THREE, FIVE = 5, SIX,};SU num = ONE;enum 변수 크기는 int형 크기이지만 int 형과는 엄연히 다른 자료형이다.#include using namespace std;enum week { SUN, MON, TUE, WED, THU, FRI, SAT };int main(void){ week w; w = 5; // error w = MON; int n = SUN; // error 자체는 없지만 권장하지 않음} 📌 [C] 열거형 타입 enum 이란? [C/C++] 열거형.. 2024. 6. 7.
[C/C++] 열거형 타입 enum 이란? enum 타입이란?#include enum Day { Sunday, Monday = 10, Tuesday, Wednesday, Thursday = 20, Friday, Saturday};int main(){ printf("Sunday : %d \n", Sunday); printf("Monday : %d \n", Monday); printf("Tuesday : %d \n", Tuesday); printf("Thursday : %d \n", Thursday); printf("Friday : %d \n", Friday);}- 초기값을 지정하지 않으면 첫번째 원소의 값 = 0- 중간에 초기값을 별도로 설정할 수 있다.  (나머지 원소도 그에 맞춰 .. 2024. 6. 6.
[C++] 생성자 함수 생성자 함수 (constructor)• 클래스 이름과 동일한 이름의 멤버함수• 반환(return) 타입을 명시할 수 없다.• 객체 생성시 단 한번 호출된다. (초기화 역할)• 오버로딩(overloading) 가능• 디폴트 값 설정 가능  [예제] 오버로딩 형태class A { …public: A(); A(int n) : A(int n, char c);};  Q) 생성자 함수를 만들지 않는다면?컴파일러에 의해  생성자 함수가 자동으로 만들어진다.→ 기본 생성자 함수 (default constructor)  Q) 컴파일러가 자동으로 생성하지 않는 경우다른 매개변수 생성자가 존재하면 기본 생성자를 만들지 않는다.#include using namespace std;class A { .. 2024. 6. 3.
좋은 Git Commit 메세지 작성 해당 게시글은 Commit Message에 대해 작성하였습니다.팀 혹은 회사마다 Rule이 존재하기에 참고 자료로 활용 권장좋은 Git Commit란?Git 버전 관리에 있어서 Clean Code도 중요하지만Commit Message 어떻게 작성할지도 중요하다.  취업/채용에 있어서도대부분 IT 기업이 Git 주소를 요구하며기술 면접관은 Commit 단위를 분석하기도 한다.개발자가 어떤 "단위"로 개발을 하였는지, 다른 사람에게 어떤 내용을 전달하고 리뷰 받고 싶은지 담는 것  예를들어, git commit 제목은 동사부터 시작하며주로 사용하는 동사: add, fix, modify, remove/delete내용에는 주어 + 동사로 주로 시작* 팀 혹은 회사마다 Rule이 존재하기에 참고 자료로 권장  본.. 2024. 5. 31.
반응형