본문 바로가기

분류 전체보기

(139)
CS Study 7주차 : 트랜잭션(Transaction) 트랜잭션(Transaction) 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야 할 일련의 연산들을 의미한다. 여기서 작업이라 하면 명령문 자체가 아닌 게시글 예시로 들면 게시글을 INSERT문으로 넣고, 업데이트 된 내용을 SELECT로 가져오는 일련의 과정을 통틀어 작업이라고 한다. 트랜잭션은 작업의 완전성을 보장해 준다. 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 트랜잭션은 SELECT, UPDATE, INSERT, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화시키는 작업의 단위이다. 트랜잭션의 특징(..
CS Study 7주차 : 정규화(Normalization) 정규화(Normalization) 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 단계별로 구분하여 정규형이 높아질수록 이상현상을 줄어들게 된다. 장점 데이터베이스 변경 시 이상 현상을 제거할 수 있다. 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다. 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용 프로그램의 생명을 연장시킨다. 단점 릴레이션의 분해로 인해 릴레이션 간의 JOIN 연산이 많아진다. 질의에 대한 응답 시간이 느려질 수도 있다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 ..
iOS Study : 6주차 - Simple Value / Control Flow / Functions and Closures / Object and Classes Simple Value let은 상수값을 만드는데 사용되고 , var은 변수값을 만드는데 사용된다. 상수나 변수를 만들 때 값을 선언하면 컴파일러에서 해당 자료형을 추론하기 때문에 자료형은 생략해도 된다. 문자열에 값을 표현하기 위해서는 \()에서 괄호 안에 변수명을 넣어주면 된다. Control Flow if문이나 switch문을 사용하여 조건을 명시하고 for-in, while, repeat-while 구문을 사용하여 반복 실행한다. if문을 사용할 때는 실행 코드가 한줄이더라도 { } 를 사용해야 한다. 명령문에서 if 조건의 반환값은 Bool 타입이어야 한다. switch문에서는 case 끝에 break를 작성할 필요가 없다. for 문에서 범위를 표현할 때 ...을 사용한다. ex) 0 ... ..
iOS Study : 6주차 - 오류처리 / 고차함수 오류처리(error handling) 스위프트에서 오류(Error)는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현된다. Error 프로토콜은 사실상 요구사항이 없는 빈 프로토콜일 뿐이지만, 오류를 표현하기 위한 타입은 이 프로토콜을 채택한다. 오류표현 Error 프로토콜과 주로 열겨형을 통해서 오류를 표현한다. enum 오류종류이름: Error { case 종류1 case 종류2 case 종류3 //... } enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: Int) case outOfStock } 함수에서 발생한 오류 던지기 자판기 동작 도중 발생한 오류를 던지는 메서드를 구현해 보자..
iOS Study : 6주차 - 타입 확장(프로토콜, 익스텐션) 프로토콜 특정 역할을 수행하기 위한 메서드, 프로퍼티, 이니셜라이저 등의 요구사항을 정의한다. 구조체, 클래스, 열거형은 프로토콜을 채택해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다고 표현한다. 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 기능을 모두 구현해야 한다. 프로토콜은 기능을 정의하고 제시 할 뿐, 스스로 기능을 구현하지는 못한다. 정의 문법 protocol 프로토콜 이름 { /* 정의부 */ } 프로토콜 구현 protocol Talkable { // 프로퍼티 요구 // 프로퍼티 요구는 항상 var 키워드를 사용합니다 // get은 읽기만 가능해도 상관 없다는 뜻이며 // get과 se..
Java Study : 6주차 - 백준 문제풀이 https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x = in.nextInt(); int y = in.nextInt(); int xx = flip(x); int yy = flip(y); System.out.println(xx > yy..
Java Study : 6주차 정리 - 인터페이스 인터페이스 인터페이스는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다. 인터페이스는 추상 메서드와 상수로만 이루어져 있다. 구현하기 package interfaceex; public interface Calc { double PI = 3.14; int ERROR = -999999999; int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); int divide(int num1, int num2); } 인터페이스를 사용하기 위해서는 implements 예약어를 사용해야 하며, 클래스를 추상 클래스로 만들거나 추상 메서드를 전부 사용해야 한다. package interf..
CS Study 6주차 : B - tree /B + tree B - tree B - tree는 인덱스를 이루고 있는 자료구조의 일종이다. 트리 구조의 우위성 트리 구조는 데이터를 유지하기 위해 자주 사용하는 구조인데 참색시 단시간 내에 실행할 수 있기 때문이다. 특징 B - tree의 핵심은 테이터가 정렬된 상태로 유지되어 있다는 점이다. 그림에 있는 사각형으로 표시된 한개의 데이터를 노트(Node)라고 한다. 가장 상단의 노드를 루트 노드(Root Node), 중간 노드들을 브랜치 노드(Branch Node), 가장 아래의 노드들을 리프 노드(Leaf Node)라고 한다. 위 그림처럼 B - tree는 Binary seach tree와 유사하지만, 한 노드당 자식 노드가 2개 이상 가능하다. B - tree는 균일성을 가지고 있어 어떤 값에 대해서도 같은 시간대..