일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- multi module
- Item04
- FCM
- springboot
- @Valid
- 데이터베이스
- NotBlank
- Connection Pool
- 트랜잭션
- restTemplate
- @SpyBean
- Firebase
- Spring Boot
- db
- Web
- @MockBean
- Proxy Patter
- 이펙티브 자바
- @ControllerAdvice
- Service Locator 패턴
- java
- NotEmpty
- Service Locator
- Effetive Java
- 디자인 패턴
- SQL 삽입 공격
- deleteById
- Effective Java
- 플라이웨이트
- JPA
- Today
- Total
목록전체 글 (64)
NoTimeForDawdling
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b862FB/btraZLR9EoI/dlfKBkw8ePSIIxTBGyQiW1/img.png)
Spring Data Jpa를 사용해서 토이 프로젝트를 구성하던 중에 delete와 deleteById 중 뭘 사용하면 좋을지 고민해 보다가 둘의 차이점을 알아보기로 했다. 우선 delete와 deleteById는 CrudRepository 인터페이스 안에 다음과 같이 정의되어 있다. CrudRepository 인터페이스의 실제 구현체는 SimpleJpaRepository이다. SimpleJpaRepository에 구현되어있는 delete는 다음과 같다. delete는 입력받은 entity에 대해 null체크를 한 후 entity에 대한 삭제를 진행하고 있다. 자 이제 deleteById를 봐보자. 구현부를 보면 delete() 메서드를 호출하고 있는 모습을 볼 수 있다. findById()로 해당 en..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4OhtW/btq9Rb6DPru/BttFR6xtT7ZWklJxcPXzVk/img.png)
Bean이란? Bean이란 Spring IoC 컨테이너가 관리하는 자바 객체이다. 이때 Bean의 Scope를 지정할 수 있고, Singleton과 Prototype으로 지정할 수 있다. proptotype은 객체 호출 시 매번 새롭게 생성하게 된다. 그렇다면 Bean을 어떻게 만들고 Spring IoC컨테이너에 등록할 수 있을까? 지금부터 한번 알아보도록 하자. Bean 만드는 방법 개발자가 Bean을 만드는 방법은 크게 두 가지가 있다. @Component어노테이션을 이용하는 방법과 @Bean어노테이션을 이용하는 방법이다. @Component @Component어노테이션은 클래스에 명시해 주면 된다. @Component public class ComponentClazz { private final S..
HTTPS란? 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)프로토콜을 이용하여 웹브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 규약이다. 즉, HTTP메시지를 암호화 하는 것으로, 여기서 S는 Secure Socket, 보안 통신방을 의미한다. HTTPS의 공개키 암호화 방식 HTTPS의 암호화 원리의 핵심은 공개키 암호화 방식을 사용하는 것이다. 공개키 알고리즘이란? 암호화, 복호화시킬 수 있는 서로 다른 키 2개가 존재하는데 이 두 개의 키는 서로 1번 키로 암호화하면 반드시 2번키로만 복화할 수 있고, 2번 키로 암호화하면 반드시 1번키로만 복화할 수 있는 룰이 있는 것 공개키 암호화 과정 하나의 키는 모두에게 공개하는 공개키(1번 키)로 만들어서 공개키 저장..
프로세스(Process)란? 프로세스란 운영체제로부터 시스템 자원을 할당받는 작업의 단위로 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미합니다. 각각의 프로세스는 독립된 메모리 영역을 할당받습니다.(독립적인 개체) 할당받는 시스템 자원 프로세스는 운영체제로부터 다음과 같은 시스템 자원을 할당받습니다. CPU 시간 운영되기 위해 필요한 주소 공간 Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역 프로세스 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받습니다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 갖고 있습니다. 각 프로세스는 각각의 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bNveaM/btq8OiSvv70/dZ9xJFG2jZDfi9D0UVXwxK/img.png)
JWT(Json Web Token)이란? JWT는 JSON 객체를 사용하여 자가 수용적인 방식으로 정보를 안정성 있게 전달해 주기 위한 토큰입니다. JWT 구조 Header: 정보를 암호화할 방식(alg), 토큰의 타입(type)이 들어갑니다. (agl:HS256, type:jwt) Payload : 서버에 보내질 데이터. 유저 아이디, 유효기간 등이 들어갑니다. Signature : Base64로 인코딩한 Header와 Payload를 의미합니다. SECRET KEY를 포함하여 암호화되어 있습니다. 예제 { // headerJSON "alg": "HS256", // algorithm used for signature "typ": "JWT" // type of token } { // payloadJSON..
쿠키와 세션을 사용하는 이유 쿠키와 세션은 HTTP 프로토콜 특징의 단점을 보완하기 위해 사용합니다. HTTP 프로토콜의 특징(connectionless, stateless) 비연결지향(Connectionless) 비연결지향은 클라이언트가 요청(req)을 한 후 응답(resp)을 받으면 그 연결을 끊어 버리는 특징입니다. HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있습니다. 헤더에 keep-alive라는 값을 줘서 커넥션을 재활용하는데 HTTP1.1에서는 디폴트 값입니다. HTTP가 TCP(연결 지향) 위에서 구현되었기 때문에 네트워크 관점에서 keep-alive 옵션으로 connectionless의 연결비용..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cUnnRp/btq72iGpDKX/k2u7CSAqMkE30r5cZEQSXk/img.png)
어댑터 패턴이란? 어댑터 패턴은 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있도록 도와주는 패턴이다. 즉, 어댑터를 이용해 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환시켜 호환성 문제를 해결한다. 예를 들어, 갤럭시 핸드폰을 충전해야 하는데 현재 아이폰 충전기밖에 없다면 어댑터를 사용해서 아이폰 충전기로도 갤럭시 핸드폰을 충전할 수 있다. 여기서의 어댑터는 핸드폰을 충전할 때 필요한 인터페이스를 각각의 타입이 필요로 하는 인터페이스로 바꿔준다고 할 수 있다. 코드 예제 현재 GalaxyPhone을 사용하고 있다고 가정해보자. 핸드폰을 충전하기 위해 charging()메서드를 호출하는데, 이 처리는 PhoneCharger인터페이스를 구현한 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/SJqrq/btq7YolUTL0/98SJJYYvTqWc9WzHjNxfM0/img.png)
서버는 동시에 사용할 수 있는 사람의 수라는 개념이 존재합니다. 만약에 동시 접속자 수를 초과하게 될 경우 어떻게 될까요? 동시 접속자 수를 초과하게 된다면 에러(예외)가 발생할 겁니다. 예외가 발생하면 그 접속자는 더 이상 처리를 하지 못하므로, 사이트 이용자는 다시 접속을 해야 하는 불편함이 있습니다. 이를 해결하기 위해 탄생한 것이 Connection Pool입니다. Connection Pool이란? Connection Pool이란 동시 접속자가 가질 수 있는 Connection을 하나로 모아놓고 관리한다는 개념입니다. 누군가 접속하면 자신이 관리하는 Pool에 남아있는 Connection을 제공합니다. 하지만 남아있는 Connection이 없는 경우라면 해당 클라이언트는 대기 상태로 전환시킵니다...