목차 JDBC 먼저 JDBC는 영속성을 보장하기 위해 자바에서 자체적으로 제공하는 기능이자, DB 커넥터이며 특징으로는 다양한 DB Driver들의 작성방식을 통일시켜 표준화했다는 점이 있다. 자바의 모든 데이터 액세스는 내부적으로 이 JDBC를 사용하고 있으며, 앞으로 알아볼 기술도 마찬가지다. Spring JDBC 이 JDBC에는 특유의 단점이 있었는데 바로 DB 연결과 SQL 사용, Data Mapping 등의 모든 과정을 개발자가 직접 입력해주어야 한다는 점이었다. 이는 개발 생산성 저하로 이어지는 치명적인 문제였으며, Spirng JDBC는 이 반복적인 작업에서 개발자를 해방시켜주었다. DB 커넥션을 가져오는 DataSource를 빈으로 등록하기만 하면, 실행할 SQL과 파라미터 등을 넘겨주는 ..
DTO란 이름 그대로 프로세스 사이에서 데이터를 전송하는 객체이다. 클라이언트 - 서버 간의 반복된 요청/응답에 따른 지연시간을 줄이기 위해 여러 요청에 대한 데이터를 한 번에 담는 객체로서 도입되었다. 조금 더 구체적으로는 클라이언트 - 서버 간의 요청/응답에 따르는 반복되는 직렬화를 맡아하는 객체라 할 수 있으며, DTO를 구성하는 원칙은 다음과 같다. DTO는 가능하면 POJO(Plain Old Java Objects)로 생성한다. 순수하게 데이터를 저장하는 역할과, 데이터에 대한 getter(), setter() 메서드만을 가진다. 저장, 검색, 직렬화, 역직렬화 로직을 제외한 어떠한 비즈니스 로직도 갖지 않는다. 직렬화 - 서버가 DTO 같은 Java 객체를 JSON 형식으로 변환하는 것 역직렬..
REST(ful) API API란 쉽게 말해 클라이언트를 위해 서버와의 소통법을 적어둔 매뉴얼이다. 이 매뉴얼의 디자인에는 BEST Choice가 존재하며, 이를 REST API라 부른다. 중간 내용을 건너뛰고 간단하게 정리하면 REST API란 규칙을 통한 리소스 중심의 올바르고 유일한 엔드포인트 작성 적절한 HTTP 응답 코드와 리소스에 대한 정보 기재 CRUD에 적합한 HTTP 메서드(POST, GET,...) 사용 응답에 리소스에 대한 링크 삽입 을 모두 만족하는 API를 말한다. Spring MVC의 REST API 엔드포인트(애너테이션) @RestController = @Controller + @ResponseBody, 컨트롤러 클래스에 달아준다. @Request/ResponseBody - H..
DI(의존관계 주입)는 특정 객체가 의존할 객체나 메서드를(즉, 의존관계를) 해당 객체 외부에서, 정확하게는 스프링 컨테이너에서 주입받는 디자인 패턴이다. 여기서 A가 B에게 의존한다는 말은 B의 구성이나 로직이 변하면 A에게 영향을 끼칠 가능성이 있는 관계라는 뜻이다. 이어서 주입이란 의존성을 사용하려는 객체에게 전달하는 것이라 받아들이면 되며, 디자인 패턴이란 공통적인 문제에 대한 재활용 가능한 솔루션이라 생각하면 된다. 또한 스프링 컨테이너란 객체의 생명주기를 관리하는 모듈이며, 스프링 컨테이너가 관리하는 객체를 빈(Bean)이라 부른다. 이는 스프링의 핵심 원칙인 IoC를 구현하는 수단이기도 하며, 객체의 설계와 사용이라는 관심사를 분리해 느슨한 결합으로 의존도를 낮추는 것이 그 목적이다. 구체적..
면접 답변용으로 간결하게 정리. Java를 사용하는 이유 객체지향 진영의 대표적인 언어이다. 캡슐화(데이터를 클래스로 묶어 사용, 제한자를 통한 정보 은닉), 상속(재사용성 증가, 단일 상속만 가능- 죽음의 다이아몬드) 추상화(쉽게 말해 상속의 반대, 공통사항을 추출 - 중복 코드 제거), 다형성(오버라이딩@Override, 오버로딩) JVM을 이용해 운영체제에 독립적으로 구현 및 실행할 수 있다. 역시 운영체제에 독립적인, 자바API를 사용한 멀티스레드 구현 GC를 통한 자동 메모리 관리 -> 개발속도의 증가 -> 비용 감소 자바, 리눅스, MySQL등이 기본적으로 무료이기 때문에 비용이 적게 든다. 수많은 레퍼런스에서 보장받는 안전성 및 JVM의 직접적인 메모리 관리에 따른 높은 보안 Spring을 ..
목차 두 버전의 비교보단 11에서 추가된 기능 위주로 정리한다. String 클래스에 새로운 메서드 추가 strip(): 문자열 앞/뒤 공백 제거 stripLeading(): 문자열 앞 공백 제거 stripTrailing(): 문자열 뒤 공백 제거 isBlank(): 문자열이 비어있거나 공백만 포함된 경우 true 반환 repeat(n): 문자열을 n번 붙여서 반환 java.nio.file.Files 클래스(파일 처리 클래스)에 새로운 메서드 추가 Path writeString(Path, String, Charset, OpenOption): 파일에 문자열을 작성하고 Path로 반환. OpenOption에 따라 다르게 작동하며 Charset의 기본값은 UTF-8이다. String readString(Pat..
목차 Authentication 인증이란 사용자가 식별정보(Cridential)를 이용해 본인이 맞음을 증명하는 절차이다. 스프링 시큐리티 내부에서는 이를 위해 제법 길고 촘촘한 과정이 이어지는데, 요약에 도전해보자. 당연하게도 사용자가 크리덴셜을 담아 보낸 요청이 필터에 도달하면서 과정이 시작된다. UsernamePasswordAuthenticationFilter 제출된 크리덴셜을 통한 인증을 처리하는 필터이다. 가장 앞에서 크리덴셜만 담은, 인증이 완료되지 않은 토큰을 생성(UsernamePasswordAuthenticationToken) 후 AuthenticationManager 호출. AuthenticationManager 인증을 총괄하는 관리자 인터페이스. 실질적인 인증관리는 해당 클래스를 구현..
목차 Spring Security Spring Security는 인증, 권한 부여 및 보안 기능을 제공하는 스프링 프레임워크이다. 먼저 사용되는 용어를 간단히 정리하자. User, Principal 인증을 시도하는 주체를 User, 주체의 구체적인 정보(Username ID)를 Principal이라고 한다. 실제로는 혼용돼서 사용되는 듯하며, 보통 Entity 클래스에 그 정보가 담긴다. Authentication 인증은 User, 혹은 Principal이 본인이 맞음을 증명하는 절차를 말한다. 정상적인 인증을 위해 제출하는 식별 정보를 Credential(신원 증명 정보)이라고 한다. Authorization 권한 부여, 혹은 인가는 인증을 통과한 사용자에게 역할(Role)에 따라 특정 리소스에 대한 ..
목차 어제오늘 JVM의 메모리 구조를 공부하다가 속도와 용량, 일처리 속도의 최적화에 대해 조금 더 알고 싶어서 찾아보게 되었다. 당연하게도 관련 자료가 매우 많고 논문까지 쌓여있는(...) 수준이라 맛보기의 맛보기 정도만 정리하고 가려고 한다. Memory? 메모리는 크게 나누면 Primary Memory와 Secondary Memory로 구분되며, 각 특징은 아래와 같다. Primary MemorySecondary MemoryCPU에 직접 접근이 가능함CPU에 직접 접근이 불가능함Secondary Memory에 비해 상대적으로 속도가 빠름Primary Memory에 비해 상대적으로 속도가 느림임시적(temporary) 메모리이며 일반적으로 휘발성영구적 메모리이며 비휘발성용량 대비 가격이 상대적으로 비..
목차 지난 글에선 JVM의 대략적인 구조와 Workflow에 대해 알아보았다. 2022.10.30 - [Development/Technical Interview] - [Java]JVM 구조(1), JVM Workflow [Java]JVM 구조(1), JVM Workflow JVM(Java Virtual Machine) JVM(Java Virtual Machine)이란 이름 그대로 자바 바이트코드를 실행할 수 있는 가상 머신이다. 여기서 자바 바이트코드란 JVM이 실행할 수 있는 언어로 이루어진 명령어의 집합을 가 gnidinger.tistory.com 이번 글에선 내용을 나누어 다루기로 했던, 런타임 데이터 영역에 대해 알아보겠다. 먼저 지난 글에서 살펴본, JVM의 구조에 대해 그림으로 복습하고 가자...
- Total
- Today
- Yesterday
- 파이썬
- Algorithm
- Backjoon
- 백준
- 기술면접
- 자바
- 리스트
- 동적계획법
- 스트림
- 세계일주
- 야경
- 맛집
- java
- BOJ
- spring
- 유럽여행
- RX100M5
- 중남미
- 세모
- 남미
- a6000
- Python
- 유럽
- 스프링
- 여행
- 칼이사
- 세계여행
- 알고리즘
- 면접 준비
- 지지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |