전공공부 72

[데이터베이스] 트랜잭션 (Transaction)

트랜잭션이란? 트랜잭션이란 데이터베이스의 상태를 변환시키기 위해 수행하는 작업의 논리적 단위를 뜻합니다. 다시 말해 데이터베이스에서 어떤 목적을 수행하기 위한 하나의 작업 단위라고 할 수 있습니다. 은행 업무 중 A가 B에게 돈을 보내는 상황을 예시로 들어보겠습니다. 그렇다면 크게 다음과 같은 과정들이 차례로 수행되어야 합니다. 1. A의 잔고를 확인한다. 2. A의 계좌에서 돈을 뺀다. 3. B의 계좌에 돈을 넣는다. 위와 같은 과정 중 한 과정에서라도 오류가 난다면 A가 B에게 돈을 보내는 업무는 실패했다고 할 수 있고, A의 계좌에서 돈이 빠져서도, B의 계좌에 돈이 들어가서도 안됩니다. 이와 같이, 여러 명령들을 묶어 하나의 작업을 만들 수 있는데, 이를 트랜잭션이라고 부르고, 트랜잭션은 모든 명..

[JAVA] POJO

POJO란? Pojo란 Plain Old Java Object의 약자이며, 위키백과의 정의를 빌려오자면 오래된 방식의 간단한 자바 오브젝트라는 뜻입니다. 오래된 방식의 자바 오브젝트...라고 하면 무슨 말인지 잘 감이 안옵니다. 그래서 풀어서 설명하자면, 특정 환경이나 기술에 종속되지 않는 순수한 자바 객체라고 할 수 있습니다. POJO의 등장 배경 POJO는 각종 프레임워크들을 사용하게 되면서 객체가 점점 무거워지기 시작하자 이에 반발하여 나온 개념입니다. 자바 객체들이 특정 환경과 특정 기술에 종속되어 의존성이 커지게 되자 객체지향 언어 고유의 장점인 가독성, 유지 보수 등에 오히려 어려움을 겪게 되었기 때문입니다. 자바 객체를 왜 사용하는지를 다시 처음으로 돌아가서 잘 생각해보자라는 뜻이 있을 수 ..

[자바스크립트] CSV, XML, JSON의 장단점

데이터를 보내기 위한 파일 형식의 대표적인 예시가 CSV, XML, JSON입니다. 오늘은 이 각각의 차이와 장단점에 대해 간단히 알아보겠습니다. CSV csv의 기본 구조는 아래와 같습니다. 각 항목은 쉼표를 이용해 구분됩니다. 1 2 3 4 no, name, age, sex, height 1234, 이준하, 27, 남, 177 1515, 김준준, 41, 남, 188 7419, 홍하하, 11, 여, 144 cs 장점 - 용량이 작음: 데이터 외에는 다른 정보가 거의 들어가 있지 않음. 따라서 빅데이터와 같은 분야에서 주로 사용. 단점 - 가시화가 어려움: 데이터가 많아지면 각각의 데이터가 어떤 항목에 포함되는지를 직관적으로 알기 어려움. XML xml의 기본구조는 아래와 같습니다. 마크업 언어로 태그를..

[자바스크립트] alert, confirm, prompt

자바스크립트에서 window 객체의 함수를 호출하면 브라우저에서 제공하는 창을 열 수 있습니다. alert, confirm, prompt의 사용에 대해 차례로 알아볼 텐데 이 함수들은 앞에 "window."을 생략한 형태로 사용합니다. 1. alert alert("알림창에 사용할 문자열"); 과 같은 형태로 사용할 수 있습니다. alert 함수를 실행하면 사용자가 확인 버튼을 누를 때까지 메시지를 보여주는 창이 계속 떠있습니다. 또한 이 창이 떠있는 동안 사용자는 브라우저 내에서 창 바깥에 있는 다른 기능을 사용할 수 없습니다. (alert, confirm, prompt 모두 해당) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Document alert("A..

[자바스크립트] 호이스팅 (Hoisting)

호이스팅? 호이스팅이란 함수 내부에 있는 모든 선언들을 함수 유효 범위의 최상단에 선언하는 것을 말합니다. 다시 말해, 함수 실행 전 Parser가 해당 함수를 훑으면서 변수, 함수 선언들에 대한 정보를 저장하고 있다가 최상단으로 끌어올려서 먼저 처리하는 것을 뜻합니다. 자바와 한번 비교해보겠습니다. 1 2 3 4 5 6 7 public static void main(String[] args) { a = 0; int a; System.out.println(a); } Colored by Color Scripter cs 자바에서 위와 같은 코드를 작성하면 당연하게도 컴파일 에러가 발생하며 프로그램을 실행조차 할 수 없게 됩니다. 하지만 자바 스크립트에서는 다릅니다. 호이스팅으로 인해 아래와 같은 코드도 정상..

[소프트웨어 설계] TDD

TDD는 Test Driven Development의 약자로, 직역하면 테스트 주도 개발입니다. 소프트웨어 개발 방법론 중 하나로, 테스트 케이스를 작성하고, 이 테스트 케이스를 통과하는 코드를 개발하는 방식입니다. 일반적인 개발 프로세스는 설계 -> 개발 -> 테스트의 형태로 이루어집니다. 이 경우 테스트 중에 오류가 발생했을 때, 전체 프로그램을 확인해야 하며, 설계 변경 등의 이유로 작은 기능을 수정하더라도 전체 코드가 잘 작동하는지 확인해야 합니다. 당연히 유지보수에도 어려움이 있겠죠. 이를 개선하고자 작은 기능부터 테스트를 거치면서 개발을 진행하자는 방식이 바로 TDD입니다. 이 TDD의 개발순서, 장장점, 단점에 대해 하나씩 알아보겠습니다. TDD 개발 순서 1. 설계 단계에서 개발 목적을 정..

[알고리즘] 완전탐색

1. 완전 탐색이란? 완전 탐색은 컴퓨터의 계산 능력을 이용하여 가능한 모든 경우의 수를 테스트해봄으로써 답을 찾는 방법을 의미합니다. 예를 들어 친구의 생일을 맞추는 프로그램을 짠다면, 친구의 생일에 대해 아무런 정보가 없다는 가정하에 1월 1일부터 12월 31일까지 모든 날짜가 같은 확률로 생일일 수 있습니다. 이런 문제는 결국 1월 1일부터 12월 31일까지 모든 경우의 수를 테스트해보는 것이 가장 좋다는 것이죠. 무식하게 처음부터 끝까지 모두 테스트해보기 때문에 알고리즘도 이해하기 쉽고, 결괏값을 정확하게 얻어내기도 쉽습니다. 하지만 모든 경우의 수를 탐색하는 완전 탐색의 특성상, 답이 될 수 있는 경우의 수가 너무 많은 경우에는 사용하기 힘듭니다. 특히 코딩 테스트나 백준 문제에서 무턱대고 완전..

[데이터베이스] View

View란? View는 데이터베이스에서 접근이 허용된 데이터만 제한적으로 보여주기 위해 하나 이상의 데이터로부터 유도된 가상 테이블입니다. 가상 테이블이라는 말은 저장 장치에 물리적으로 저장되지는 않지만 사용자 입장에서 데이터를 조회하고 수정할 수 있는 논리적인 테이블이라는 뜻입니다. 즉 자신에게 접근이 허용된 데이터에 대해서 삽입, 수정, 삭제, 검색이 가능하기 때문에 일반적인 데이터베이스와 유사하게 이용할 수 있다는 뜻입니다. View를 왜 사용하죠? Student라는 학생 정보를 저장하고 있는 테이블이 있다고 가정하겠습니다. 이 Student 테이블에는 이름, 주민등록번호, 학번, 성적, 성별 등의 정보를 담고있습니다. 어떤 교수님 한 분이 이 학생에 대한 정보를 알고 싶어서 검색을 한다면, 이름,..

[JAVA] Overloading과 Overriding의 차이

자바에서 자주 나오는 개념으로 Overloading과 Overriding이 있습니다. 이름이 비슷해서 혼동하기 쉽지만 전혀 다른 뜻을 가지고 있기 때문에 한 번 정리를 하고 넘어가고자 합니다. Overloading Overloading은 한 클래스 내에서 둘 이상의 메서드가 같은 이름을 가지면서 인자의 수나 자료형이 다른 경우를 말합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public int add(int a, int b) { return a + b; } // 1번 public int add(int a, int b, int c) { return a + b + c; } // 2번 public int add(char a, char b) { return a + b; } // 3번..

[JAVA] Scanner vs BufferedReader & System.out vs BufferedWriter

Java에는 입출력을 실행하는 여러 방법이 있습니다. 입력의 경우, 가장 유명한 두 방법은 다음과 같습니다. 1 2 3 4 5 6 7 // 1. Scanner Scanner sc = new Scanner(System.in); sc.next(); // 2. BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine(); Colored by Color Scripter cs 출력의 경우에는 다음과 같습니다. 1 2 3 4 5 6 7 // 1. System.out System.out.println("hi"); // 2. BufferedWriter BufferedWriter bw = new B..