목록전체 글 (213)
포도가게의 개발일지
제네릭 - 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. why? - 제네릭 타입을 사용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있기 때문입니다. 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 합니다. 실행 시 타입 에러가 나는것보다는 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋습니다. ArrayList list = new ArrayList(); //제네릭을 사용하지 않을경우 list.add(10); Integer temp = (Integer) list.get(0); //타입변환이 필요함 ArrayList list2 = ..
Transaction - 컴퓨터 과학분야에 트랜잭션은 "쪼개질 수 없는 업무처리의 단위"를 의미합니다. why? 보다 복잡한 프로그램을 개발하다 보면 쿼리 한 줄로 해결할 수 없는 로직을 처리해야하는 경우가 많습니다. 여러 개의 쿼리가 처리되는 상황에서 문제가 생겨버린다면 시스템에 큰 결함을 남기게 됩니다. * 모든 과정이 완료될 때까지 db에 업데이트를 안해준다!. 예를 들어) ATM으로 계좌이체를 한다고 생각해보면, 1. A 은행에서 출금하여 B은행으로 송금하려고 합니다. 2. 송금 중, 알 수 없는 오류가 발생하여 A은행 계좌에서 돈은 빠져 나갔지만 B은행의 계좌에 입금되지 않았습니다. 3. 이와 같은 상황을 막기위해 거래가 성공적으로 모두 끝나야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류..
Annotation(주석)? - 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터 설명을 위한 데이터) 용도 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공 실행시(런타임시)특정 기능을 실행하도록 정보를 제공 어노테이션을 사용하는 순서는 다음과 같다. 1. 어노테이션의 정의 2. 클래스에 어노테이션을 배치 3. 코드가 실행되는 중에 Reflection을 이용하여 추가정보를 획득하여 기능실시 1. 어노테이션의 정의 @Target({ElementType.[적용대상]}) @Retention(RetentionPolicy.[정보유지되는 대상]) public @interface annotationNa..
- RESTful API라는 말은 REST 아키텍처 원칙을 모두 만족하는 API라는 뜻입니다. - 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. why? ‘다양한 클라이언트의 등장’으로 (멀티 플랫폼) 웹서버의 자원을 클라이언트에 구애받지 않고 사용할수있게하는 설계방식 응답은 특정 기기의 종속되지 않도록 모든기기에서 통용될수있도록 화면이 아닌 오직 데이터로 반환한다 how? HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다. URI로 주어나 목..
JAVA - 자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분이다. why? - JVM을 통해 어떠한 운영체제와 cpu상관없이 jvm이 설치된 환경이라면 바이트코드(.class)언어는 os와 상관없이 항상 동일한 코드로 해석됨 빌드과정 - 실행가능한 파일로 만드는것 ( 즉, 고급언어인(c, java, c++등..) 소스코드를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 과정) (컴파일 언어) - 처음에 소스코드를 전부 기계어로 번역함 - 플랫폼에 의존적이라는 말은 가장 쉽게 이해하자면 윈도우 실행파일을 맥OS 에서 실행하지 못하는 상황을 생각하면 됩니다.(아키텍쳐가 다르다) (인터프리터 언어) - 소스코드의 한 명령 세트마다 기계어(Machin..
Lombok? - Lombok(롬복)은 Java 라이브러리로 반복되는 getter, setter, toString 등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리입니다. - Lombok은 여러가지 어노테이션을 제공하고 이를 기반으로 코드를 컴파일과정에서 생성해 주는 방식으로 동작하는 라이브러리입니다. 어노테이션의 크게 세 가지 용도로 사용된다. 1. 코드 문법 에러 체크 2. 코드 자동 생성 정보 제공 3. 런타임시 특정 기능을 실행하는 정보 제공 why? - 반복되는 코드를 다이어트 해주고 가독성을 높여줌 how? public class BoardCategory { private String category_id; private String category_name; private Date ..
Queue 자료구조? - 큐(queue)는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식을 말한다. class Node: def __init__(self, data): self.data = data self.next = None class Queue: def __init__(self): self.head = None self.tail = None def enqueue(self, data): new_node = Node(data) if self.isEmpty(): self.tail = new_node self.head = new_node else: self.tail.next = new_node self.tail..
자료구조 Stack - 스택이란 한쪽 끝에서만 자료를 넣고 뺄 수 있는 선형구조(LIFO 특징)로 된 자료구조입니다. - 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다 S.top(): 스택의 가장 윗 데이터를 반환한다. 만약 스택이 비었다면 이 연산은 정의불가 상태이다. S.pop(): 스택의 가장 윗 데이터를 삭제한다. 스택이 비었다면 연산 정의불가 상태. S.push(): 스택의 가장 윗 데이터로 top이 가리키는 자리 위에(top = top + 1) 메모리를 생성, 데이터 x를 넣는다. S.empty(): 스택이 비었다면 1을 반환하고,그렇지 않다면 0을 반환한다. class Node: def __init__(self, data): s..