Java

비동기(Asynchronized)란? 안녕하세요~ ㅎㅎ 오늘은 서버 개발에 있어서 아주아주 중요한 항목인~ 비동기 처리에 대해 알아보려고 해요!! 일반적인 REST API로 서버를 만들 때 보통의 경우에는 단일 쓰레드로, Request / Response 형태를 가지고 있지만, 요청에 대한 요구사항이 크거나 동일한 속성이 여러개를 띄고 있거나 빠른 응답이 필요하다면 고려해야되는 것중의 하나가 바로 멀티쓰레드 처리 인데요.! 요번 시간에는 자바(Spring)에서 어떻게 멀티쓰레드로 처리할지 알아보도록 하겠습니다.! 먼저 동기, 비동기 처리가 어떤 것인지 알아보도록 할까요? 위 그림처럼 단일 쓰레드에서는 요청이 길어지면 길어질 수록 처리시간이 선형적으로 늘어날 수 밖에 없습니다 ㅠ 그러니까 놀고 있는 CPU..
Valid? 우리가 흔히 Server와 Client가 통신을 진행할 때 HTTP/S 방식으로 서로 데이터를 주고 받는 경우가 정말 많아요! ㅎㅎ 하지만 때로는 Client가 옳지 않은 정보를 전달할 수도 있고, Server에게 위험을 가하는 정보를 전달할 수도 있다는 것을 항상 염두해두어야 해요! 그래서 요번 시간에는 우리가 만든 Spring Boot Application Server에서 어떻게 Client Request Body를 검증할 수 있는지 알아보는 시간을 가지도록 해볼게요! 직접 구현하기~! 우선은 Request, Response에 대한 객체를 정의해볼까요? package com.huisam.springstudy.validation; import lombok.*; import javax.val..
Java8 Java에서는 java8 이전과 이후는 정말 많은 차이가 있을 정도로 바뀐점이 많은 업데이트였다 이러한 기법이 나오게 된 근본적인 배경은 사이드 Effect가 없는 병렬 처리에 대한 요구가 증가했기 때문이에요! 일반적으로 Collection 데이터를 바탕으로 데이터 연산이 진행되는데, 멀티 쓰레드 환경에서 데이터를 조작하게 된다면 java에서 비싼 연산 중 하나인 synchronized 를 사용할 수 밖에 없죠 ㅠㅠ 그래서 개발자들은 고민하게 됩니다 우리는 synchronized를 사용하지 않고, 병렬처리가 가능한 데이터 stream을 만들 수 없을까? 이러한 고민에 대한 해결책이 바로 Stream 이에요 Functional Programming을 기반으로 해서, 상태를 저장하지 않고 일련의 ..
MapStruct? 안녕하세요~! ㅎㅎ 오늘은 Spring을 쓰면서 자주 쓰게 되는 라이브러리를 하나 소개할까 합니다! 바로 그것이 MapStruct 인데요! 이 Mapstruct란? MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach. ------------------------------번역--------------------------------------- MapStruct는 구성 접근법에 대한 규약에 근거하여 Java Bean 종류 간의 매핑 구현을 크게 단순화한 c..
직렬화란? 문득 개발을 하면서 갑자기 그런 생각이 들었습니다 자바 직렬화가 도대체 뭐지? Spring을 공부하면서 ObjectMapper를 쓰는데 직렬화한다는 것을 알게되고, 갑자기 궁금해져서 글을 쓰게됬어요 ㅎㅎ 그래서 직렬화란 Java 시스템 내에서 사용되는 객체를 외부의 Java 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 통틀어서 이야기 합니다! 조금 더 상세하게 이야기하면..! JVM의 메모리에 상주되어 있는 데이터를 Byte형태로 변환하는 것을 의미합니다! 그럼 어떻게.? Java의 Interface중 하나인 Serializable을 상속받으면 사용이 가능합니다.! package com.huisam.spr..
Template Callback? 템플릿 콜백 패턴의 경우 전략패턴의 변형적인 패턴입니다 Strategy(전략) 패턴의 설명은 제 게시글에 나와 있으니 참고해주세요 ^-^ 그림으로 보는게 참 어렵죠? 단순히 설명하자면, 템플릿 콜백 패턴은 전략 패턴에 익명 클래스(또는 함수)를 더해서 사용하는 방식입니다 Java8에 나온 익명함수(lamba)를 사용해서 Interface만 구현한 채, 실제 로직을 구현하는 방식이죠! 그렇기 때문에, 이 패턴은 Spring에서 DI(Dependency Injection) 의존성 주입과 매우 유사합니다. Spring을 개발하시다 보면 이러한 의존성 주입이 매우매우 자주 일어나는 것을 확인할 수 있는데, 그래서 Spring 개발할 때 많이 쓰이는 패턴중에 하나입니다! 전략 패..
huisam
'Java' 태그의 글 목록 (2 Page)