블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%EA%B4%80%EA%B3%84%EB%8C%80%EC%88%98/ [DB] 관계대수, 관계해석이란? - 코드 연구소관계대수는 관계형 데이터베이스에서 원하는 정보를 검색하기 위해 어떻게 유도하는가(how)를 기술하는 절차적인 언어이다. 즉, 관계 대수는 릴레이션을 처리하기 위해 연산자와 연산 규칙을code-lab1.com 관계 대수란?관계 대수는 관계형 데이터베이스에서 원하는 정보를 검색하기 위해 어떻게 유도하는가(how)를 기술하는 절차적인 언어이다. 즉, 관계 대수는 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로, 피연산자가 릴레이션이고 결과 또한 릴레이션이다. 질의에 대한 해를 구하기 위해 수행해야 할..
객체 지향 설계 5원칙 객체 지향 설계에는 다음과 같은 5가지 원칙이 있다. 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 2. OCP (Open-Closed Principle) : 개방 폐쇄 원칙 3. LSP (Liskov Substitution Principle) : 리스 코프 치환 원칙 4. ISP (Interface Segragation Principle) : 인터페이스 분리 원칙 5. DIP (Dependency Inversion Principle) : 의존 관계 역전 원칙 앞 글자들을 모아 SOLID라고 부르기도 한다. 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%EB%B7%B0/ [DB] 뷰(View)란 무엇인가? - 코드 연구소뷰는 사용자에게 접근이 허용되는 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블이다. 뷰는 저장장치 내에 물리적으로 존재하지 않지code-lab1.com 뷰(View)란?뷰는 사용자에게 접근이 허용되는 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블이다. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 간주된다. 뷰는 데이터 보정, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 뷰는 조인 문의 사용 최소화로 사용상의 편의..
데이터베이스 언어란? 데이터베이스 언어는 데이터베이스를 구축하고 이용하기 위한 데이터베이스 시스템과의 통신 수단이다. DBMS를 통해 사용되며, 기능과 사용 목적에 따라 DDL, DML, DCL로 구분된다. DDL(Data Definition Language) - 데이터 저장 언어 DDL은 데이터베이스를 정의하는 언어이며 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체 골격을 결정하는 역할을 한다. 스키마, 도메인, 테이블, 뷰, 인덱스 등을 정의하거나 변경, 삭제할 때 사용된다. 예를 들어 아래와 같은 것들이 있다. 종류 역할 CREATE 데이터베이스, 테이블 생성 ALTER 테이블 수정 DROP 데이터베이스, 테이블 삭제 TRUNCATE 테이블 초기화 DML(Data Manipulation Lan..
블로그 이사합니다아래에서 확인 가능합니다. https://code-lab1.com/%EC%8A%A4%ED%82%A4%EB%A7%88/ [DB] 스키마(Schema)란? 외부스키마, 개념스키마, 내부스키마 - 코드 연구소스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것이다. 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 개체의 특성을 나타내는 속성(Attribute), 개체 사이에code-lab1.com 스키마(Schema)란?스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것이다. 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 개체의 특성을 나타내는 속성(Attribute), 개체 사이에 존재하는 관계(Relationship) 및 ..
컴파일러(Compiler)란? 컴파일러는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. (출처:https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC) 컴파일러는 high-level 프로그래밍 언어(ex: C언어)를 low-level 언어(ex: 어셈블리어)로 바꾸어 실행 프로그램을 만들기 위해 사용된다. 원래의 문서를 소스코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 부른다. 원시 코드에서 목적 코드로 옮기는 과정을 컴파일이라고 한다. 인터프리터(Interpreter)란? 인터프리터는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. (..
객체 지향 프로그래밍(OOP)과 객체(Object) 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임 중 하나이다 객체 지향 프로그래밍에서 객체(Object)란 실제 사물을 프로그래밍으로 옮겨와 모델링하는 것으로 자신의 속성(PROPERTY)과 행위(Method)를 가지고 있다. 객체의 속성은 객체의 상태, 성질, 데이터 등을 의미하고, 행위란 객체의 기능이나 데이터를 조작하는 연산 등을 의미한다. 객체의 데이터를 사용하기 위해서는 메시지 전송(message Sending)을 통해 간접적으로 데이터를 얻어와야 한다. 객체지향 프로그래밍은 아래와 같이 크게 4가지의 특징을 가지고 있..
파라미터 전달 방식 프로그래밍을 공부한 사람은 다들 Call by value 혹은 Call by reference 등에 대해 들어본 적이 있을 것이다. 이는 함수 호출 방식을 값에 의한 호출, 참조에 의한 호출로 구분한 것이다. 함수 호출 방식에 따라 파라미터 전달 방식이 달라지는데, 이에 대해 알아보자. Pass by value (= Call by value) 1. Pass by value는 함수의 파라미터로 변수의 값을 복사해서 전달하는 방식이다. 2. 즉, 원래의 값에 영향을 주지 않고 함수 내로 복사된 값을 전달한다. 3. 값을 복사하기 때문에 변수의 크기가 클수록 비용이 증가하게 된다. 4. 따라서 크기가 큰 변수를 파라미터로 전달할 때 적절한 방법이 아니다. 5. 원래의 값이 변경되면 안 되는..
단축 평가 계산 (Short-circuit Evaluation) 단축 평가 계산이란 첫 번째 인수가 값을 결정하기에 충분하지 않은 경우에만 두 번째 인수가 평가되는 일부 프로그래밍 언어(C, C++, JAVA 등)의 일부 논리 연산(AND, OR)의 계산이다. 예를 들어 C언어의 경우를 들어보자. int i=1; int j=2; if( ij가 거짓이므로 논리 연산 AND(&&)의 결과 값이 무조건 거짓이 되기 때문에 뒤의 연산을 진행하지 않는다. 따라서 i=3은 실행되지 않는다. 단축 평가 계산을 염두에 두고 프로그래밍한다면 시간 복잡도를 줄일 수 있다. 예를 들어 아래와 같은 경우를 살펴보자. // func1() - 1초 소요 // func2() - 100초 소요 /* 첫번째 방법 */ if( func..
댕글링 포인터(Dangling Pointer)란? 댕글링 포인터는 적절한 타입의 유효한 객체를 가리키고 있지 않은 포인터를 말한다. 예를 들어 이미 할당 해제된 메모리를 포인터가 계속 가리키고 있다면 해당 포인터는 댕글링 포인터이다. 예를 들어 메모리에 할당된 하나의 객체를 가리키는 두 개의 포인터 ptr1, ptr2가 있다고 하자. 이때 ptr1만을 free 하여 메모리를 해제해주면 ptr2는 Dangling Pointer가 돼버린다. 댕글링 포인터 해결법 1. Tombstone Approach 첫번째 방법은 tombstone(비석)이라고 불리는 특별한 cell을 설정해 포인터가 할당된 객체를 직접 가리키지 않고 비석을 통해 가리키도록 하는 방법이다. 예를 들어 [그림 3]처럼 ptr1을 free 한다..