Pointer guide; string and array

문자열과 배열 그리고 포인터의 관계 포인터 변수 포인터를 사용하기 위해서 포인터 변수를 먼저 선언 후 주소를 할당한다. &a[0]가 a와 동치인 이유는 배열의 첫번째 요소의 시작주소와 배열의 주소가 같기 때문이다. 포인터 변수와 함수 매개변수의 원본 조작이 필요할때는 포인터 변수로 선언한다. 문자열과 포인터 흔히 아래 예시에서도 문자열이 인자로 들어간다. 이것을 문자열로 표현하면 다음과 같다 둘은 똑같이 문자열을... » read more

Singleton pattern

Singleton 싱글톤 패턴은 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. Connection pool, thread pool, device configuration 객체 등과 같은 경우 인스턴스를 여러개 만들게 되면 불필요한 자원을 사용하게 되고, connection pool의 예를 들면 계속 커넥션을 맺고 끊는 작업이 반복되거나 요청이 많아지면 DBMS에 부담이 많이 가게 되는 문제가 발생한다. (마치 php같아진다) 싱글톤 패턴으로 객체를 생성하면 두개의 인스턴스가 존재할... » read more

Strategy pattern

스트래티지 패턴 전략패턴이라고도 불리는 스트래티지 패턴은 가튼 문제를 해결하는 여러 코드가 클래스별로 캡슐화 되어있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 코드로 해결할 수 이쎅 하는 디자인 패턴이다. 기존 코드 우선 다음 구조의 클래스가 있다고 보자 아래는 Guitar를 상속(extends) 받는 두 클래스다. 아래는 간단한 기타 플레이어에 대한 테스트다. 아래는 실행결과다 별로 중요한... » read more

REST의 의미와 연결된 지식들

REST REpresentational State Transfer, Roy Fielding REpresentational State Transfer → 표현 상태 전송 월드 와이드 웹(World Wide Web a.k.a WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 패턴이다. REST가 디자인 패턴이다, 아키텍처다 많은 이야기가 존재하는데, 하나의 아키텍처로 볼 수 있다. 좀 더 정확한 표현으로... » read more

RESTful API 가이드

REST란? REpresentational State Transfer, Roy Fielding REST는 하나의 아키텍처로 볼 수 있다. 좀 더 정확한 표현으로 말하자면, REST 는 Resource Oriented Architecture 이다. API 설계의 중심에 자원(Resource)이 있고 HTTP Method 를 통해 자원을 처리하도록 설계하는 것이다. REST API 디자인 가이드 1) URI는 정보의 자원을 표현해야 한다. → 리소스명은 동사보다는 명사를 사용2) 자원에 대한 행위는 HTTP... » read more

DFS/BFS 실제

1) DFS 그래프 탐색 python 코드 구현 스택이 아닌 재귀호출을 이용한 DFS 구현 2) BFS 그래프 탐색 python 코드 구현 데크를 이용한 BFS 구현

Bit shifting (지수계산)

계산기 2^2 와 같은 바이너리 계산이 필요할 때 256같은 적은 수는 빨리 계산이 되지면 2^23 같은 바이너리는 빠르게 떠오르는 편은 아니다. 부끄럽지만 기존에는 2를 23번 곱하거나 10년도 더 된 공학용 계산기를 쓰거나 구글에서 지수 계산기를 찾아서 해왔다. 그런데 컴퓨터 구조나 디지털 논리회로를 수강하면 알겠지만 비트 쉬프팅으로 지수계산을 쉽게 할 수 있다는걸 알 수 있다. 이걸 계산기에서도... » read more

Database transaction

Transaction 트랜잭션의 개념 데이터베이스는 다수의 사용자가 동시에 사용하더라도 항상 모순이 없는 정확한 데이터를 유지해야 한다. 장애 상황에서 마찬가지다. DBMS는 데이터가 정확하고 일관된 상태를 유지할 수 있도록 다양한 기능을 제공하는데 그 중에 하나가 트랜잭션이다. 트랜잭션은 한 작업을 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것으로 데이터베이스에서 논리적인 작업의 단위가 된다. 장애 발생시 복구하는 작업의 단위도 된다. 트랜젝션의... » read more

Database normalization

Normalization 정규화는 데이터베이스를 설계한 후 설계 결과물을 검증하기 위해 사용하기도 한다. 잘못 설계된 데이터베이스는 이상현상이 발생할 수 있다. 이상 현상 Insertion anomaly 삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 위 릴레이션에서 새로운 tuple을 삽입하려면 이벤트번호과 당첨여부까지 삽입해야 하는 이상현상. 갱신 이상 중복 tuple 중 일부만 변경하여 데이터가 불일치하게 되는 모순의... » read more

ERD and relation model conversion

데이터베이스 설계는 사용자들의 요구사항을 고려하여 데이터베이스를 생성하는 과정이다. 데이터베이스에 실제로 데이터가 저장되기 시작하면 구조를 변경하기 매우 어렵다. 저장된 데이터와 설계된 구조를 모두 지우고 데이터베이스 scheme을 재작성 해야하는 것은 물론, 어플리케이션에서 데이터베이스에 접근하는 코드 역시 수정이 필요하기 때문이다. 많은 라이브에서 데이터베이스에서 계속 사용중이기 때문에 일관성과 무결성을 지키며 무중단으로 migration 하는 것은 어렵다. RDB모델을 기반으로 두고 데이터베이스를... » read more