목록분류 전체보기 (199)
포도가게의 개발일지
JVM - Java의 가장 큰 장점은 OS에 종속적이지 않고 Java 파일 하나만 만들면 어느 디바이스든 JVM 위에서 실행 할 수 있다는 것이다. JVM이란 Java Virtual Machine, 자바 가상머신의 약자이다. JVM은 Java Byte Code를 OS에 맞게 해석 해주기 때문에 자바는 운영체제와 독립적으로 동작이 가능하다. - JVM은 크게 Garbage collector, Execution Engine, Class Loader, Runtime Data Area 4가지 영역으로 나누어집니다. 1. Garbage collector(GC) Runtime Data Area 중 Heap영역에 더 이상 사용하지 않고 자리만 차지하고 있는 객체들을 제거하는 역할을 합니다. 자동으로 실행되기 때문에 ..
@SpringBootTest ApplicationContext에 모든 Bean들을 등록한다. SpringBoot 어플리케이션을 실행했을 때와 동일하게 컨테이너에 Bean들을 등록한다. @DataJpaTest ApplicationContext에 JPA에 필요한 설정들만 등록한다. 기본적으로 in-memory embedded DB(ex. H2)를 사용한다. Component Scan을 하지 않아 컨테이너에 @Component 빈들이 등록되지 않는다. Jpa관련 테스트를 할때 @DataJpaTest를 이용해서 진행하면 필요한 Configuration만 주입받아서 빠르게 테스트를 진행할 수 있고 롤백도 되어서 간단하게 결과를 확인할 수 있는 장점이 있다. 하지만 메모리 DB인 H2 데이터베이스를 이용하지 않고 ..
제네릭 - 제네릭(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 ..