본문 바로가기
반응형

분류 전체보기100

git 커밋 메시지를 작성하는 방법 (How to Write a Git Commit Message) 아주 유명한 블로거의 글을 참고하였습니다. chris.beams.io/posts/git-commit/ How to Write a Git Commit Message Commit messages matter. Here's how to write them well. chris.beams.io 왜 좋은 git 커밋 메시지를 작성해야 할까? 😒 git 저장소를 하나 골라서 커밋 로그를 한 번 비교해 보면 이해하기 쉽습니다. 먼저 예-전에 작성된 커밋 로그를 한 번 봅시다. $ git log --oneline -5 --author cbeams --before "Fri Mar 26 2009" e5f4b49 Re-adding ConfigurationPostProcessorTests after its brief remo.. 2021. 2. 26.
기본 정렬 (Elementary Sort) 기본 정렬 (Elementary Sort) 1. Comparable Interface 어떤 자료를 정렬하기 위해서는 대소관계를 판단할 수 있어야 합니다. Java에서는 대소관계를 판단할 수 있는 함수를 가지고 있다는 것을 보증하기 위해 Comparable Interface를 사용합니다. 이 인터페이스는 compareTo( )라는 메서드를 가지는데, 두 객체의 대소관계를 판단하여 작음(-1), 같음 (0), 큼(1)을 반환합니다. 1.1 Total order 객체의 크기가 비교 가능하려면 다음 규칙을 만족해야 합니다 v ≤ w 이고 w ≤ v 이면 v = w이다 v ≤ w 이고 w < x 이면 v ≤ x이다 v ≤ w 거나 w ≤ v 이다 1.2 Sort algorithm (c++) c++은 quick s.. 2021. 2. 26.
최대 합 부분 배열 (Maximum sub-array problem) 최대 합 부분 배열을 찾는 세 가지 방법에 대해 알아보자, 먼저 최대 합 부분 배열이란, 배열의 부분 배열들 중 원소의 합이 최대가 되는 부분 배열을 의미한다. 아래 예시에서는 arr[2 .. 6]이 최대 합 부분 배열이다. Largest Sum Contiguous Subarray - GeeksforGeeks (1) 전체 탐색: O(n^2) 가장 기본적인 방법으로 부분 배열의 시작을 i, 배열의 끝을 j라고 하고 이중 반복문을 이용하여 전체 탐색한다. int getMaxSumOfSubarrayWithBruteForce(const vector& arr) { int maxSum = -1; int tmpSum = 0; for(int i = 0; i < arr.size(); i++) { tmpSum = 0; f.. 2021. 2. 26.
[TCP/IP] 멀티캐스팅 프로그래밍, 라우팅 테이블 업데이트 멀티캐스트란? 멀티캐스트(multicast)란 여러 호스트에게 데이터를 동시에 전송하는 것을 말합니다. 멀티캐스트가 수행되는 절차는 다음과 같습니다. 먼저, 클라이언트는 멀티캐스트 그룹에 참여 (join)해야 합니다. 멀티캐스트 그룹에 참여함으로써 해당 멀티캐스트 주소로 들어오는 데이터를 수신하고 싶다고 알릴 수 있습니다. 그룹에 참여하고 나면 서버가 멀티캐스트 주소로 데이터를 송신했을 때 멀티캐스트 그룹에 참여한 모든 클라이언트에게 데이터가 전달됩니다. 아래는 멀티캐스트 데이터 전송을 그림으로 표현한 것입니다. (ko.wikipedia.org/wiki/멀티캐스트) 멀티캐스트 주소 멀티캐스트 그룹에 참여하기 위해서는 멀티캐스트 주소를 이용해야 합니다. 그런데 모든 주소를 멀티캐스트 주소로 사용할 수 있는.. 2021. 1. 13.
[TCP/IP] 2. TCP 서버 - 클라이언트 (IPv4) www.geeksforgeeks.org/socket-programming-cc/ Socket Programming in C/C++ - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org 소켓 API를 사용하여 서버와 클라이언트의 통신을 수행하기 위해서는 클라이언트와 서버의 구분이 필요합니다. 서버와 클라이언트가 사용하는.. 2020. 12. 18.
[TCP/IP] 1. 네트워크, 패킷 그리고 프로토콜 네트워크, 패킷 그리고 프로토콜 컴퓨터 네트워크는 수많은 호스트 (host)와 라우터 (router) 장비들로 구성되어 있습니다. 호스트는 웹 브라우저나 파일 공유 프로그램들을 구동하는 컴퓨터를 의미합니다. 호스트에서 동작하는 응용 프로그램이야 말로 네트워크의 '실 사용자'라고 할 수 있습니다. 라우터 (=게이트웨이)는 하나의 통신 채널 (communication channel)로부터 온 정보들을 다른 통신 채널로 전달하는 장비입니다. 프로토콜은 통신 프로그램 사이에서 교환되는 패킷에 대한 약속이자 정의입니다. 그 중에서 TCP/IP는 이러한 문제를 해결하기 위한 프로토콜의 모음 (protocol suite)중 하나입니다. TCP/IP 프로토콜 집합체의 중요 프로토콜에는 IP, TCP, UDP가 있습니다.. 2020. 12. 18.
[c++] condition variable (조건 변수) condition variable (조건 변수)를 사용하면 c++에서 멀티스레드 간 동기화를 구현할 수 있다 그렇지만 condition variable을 사용하는 것보다는, packaged task나 async와 같이 c++에서 제공하는 task를 이용하는 것이 멀티스레드 간 동기화를 안정적으로 구현하는 방법이라는 점을 명심하자 2021.08.04 - [c++/library] - [c++] thread vs task (thread 와 async) 2020/12/15 - [c++ language/library] - [c++] future 2020/12/15 - [c++ language/library] - [c++] packaged task 2020/12/15 - [c++ language/library] -.. 2020. 12. 17.
[c++] Mediator Pattern 중재자 패턴을 사용하면 객체 간 통신은 중재자 객체 안에 함축됩니다. 객체들은 더 이상 다른 객체와 서로 직접 통신하지 않으며 대신 중재자를 통해 통신합니다. 이를 통해 통신 객체 간 의존성을 줄일 수 있으므로 결합도를 감소시킬 수 있습니다. Class Diagram Colleage는 Mediator를 참조하고, Mediator는 Colleage를 참조하고 있습니다. Pros. and Cons. 장점: 전체적인 연결관계를 이해하기 쉽다 (communication의 흐름을 이해하기 쉽다) 단점: 특정 application 로직에 맞춰져있기 때문에 다른 application에 재사용하기 힘들다 (Observer Pattern과 반대) 무엇보다도 하나의 클래스가 여러 객체를 관리하는 형태를 가지므로 신 (Go.. 2020. 12. 16.
[c++] Visitor Pattern 객체 지향 프로그래밍과 소프트웨어 공학에서 비지터 패턴(visitor pattern; 방문자 패턴)은 알고리즘을 객체 구조에서 분리시키는 디자인 패턴입니다. 이렇게 분리를 하면 구조를 수정하지 않고도 실질적으로 새로운 동작을 기존의 객체 구조에 추가할 수 있게 됩니다. 개방-폐쇄 원칙을 적용하는 방법의 하나에 해당합니다. ko.wikipedia.org/wiki/%EB%B9%84%EC%A7%80%ED%84%B0_%ED%8C%A8%ED%84%B4 비지터 패턴 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 ko.wikipedia.org 앞서 말한 것처럼 비지터 패턴은 알고리즘과 객체 구조를 분리시키는 디자인 패턴입니다. 알고리즘을 변경하거나 추가하더라도 기.. 2020. 12. 16.
반응형