본문 바로가기

Web/Java

(8)
[RESTFUL] REST API란 REST API가 무엇인가? REST API에 REST는 Representational State Transfer의 약자로 소프트웨어 프로그램 아키텍처의 한 형식입니다. REST api의 등장은 2000년도에 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표 하였습니다. REST 구성 REST API는 다음의 구성으로 이루어져있습니다. 자원 (Resource) - URL 행위 (Verb) - Http method 표현 (Representations) - ex) 학생 - > Students REST 특징 REST 아키택처를 이용하여 API를 설계하였을 때..
[Java] Timeleaf 타임리프 [1] 타임리프란? Thymeleaf is a Java template engine for processing and creating HTML, XML, JavaScript, CSS, and text. In this article, we will discuss how to use Thymeleaf with Spring along with some basic use cases in the view layer of a Spring MVC application. 즉, html, javascript를 생성하고 처리하기 위한 템플릿 엔진이다.
[JAVA] hasNext() 와 next() 의 차이 hasNext() 와 next() 의 역할 - Iterator 인터페이스에서 추가적인 요소를 가져오는 역할을 한다. hasNext() - boolean 자료형 타입으로 반환된다. next() - 입력된 값에 따라 원하는 반환값을 가지고온다. 즉, hasNext() 다음에 가져올 값이 있으면 True or False로 존재여부를 판단하고 next()는 가져올 값이 있으면 해당 값을 가져온다.
[Java] JDK14 기능정리 Pattern Matching for instanceof (Preview) 런타임에 객체의 타입을 확인하는 instanceof 연산자는 보통 아래와같은 관용구(idiom)로 많이 사용된다. if(obj instanceof String) { String s = (String) obj; } 이 instanceof 연산자를 확장하여 아래와같은 문법을 지원한다. if(obj instanceof String s) { // String 타입의 s 변수 사용 } 코틀린에 대한 경험이 있는 사람이라면 바로 느꼈겠지만 코틀린의 스마트 캐스팅과 유사한 문법으로 보인다. 다만 한가지 좀 이해하기 어려운 스펙이 있는데 if (obj instanceof String s){ System.out.println(s.startsWit..
[정의] CI / DI CI(Connection information) 서로 다른 인터넷 서비스간에 서비스를 연계하여 사용자를 구분하기 위한 88Byte로 구성되어있는 정보. ex) 주민등록번호 DI(Duplication information) 중복가입 체크를 통해 한 사람의 정보를 통해 여러개의 계정을 만들어 악용하는것을 방지 할 수 있는 64Byte로 구성된 정보. DI는 특정 서비스에서 나에게 식별 번호를 준다고 생각 할 수 있다. ex) 각 계정 id가 달라도 나를 구분할수 있는 번호가 존재하면 각계정들이 나라는것을 인증해줄수 있다. CI 와 DI의 차이점 A와 B사이트에 각 회원가입을 했을경우 CI는 같다고 할 수있다. 반대로 A라는 사이트에 회원가입을 여러번 하여 계정이 여러개일경우 ID는 서로다르지만 DI는 같다고..
[Java] 비동기처리 방법 [1] ExcutorService jdk(1.5부터)에서 비동기 작업을 위해서 지원하는 interface이다. 일반적으로 ExcutorService는 작업 할당을 위한 스레드 풀과 API를 제공한다. [2] future와 callBack 1) future jdk(1.5부터)에서 제공하는 비동기 계산의 결과를 나타내는 Interface이다. 비동기 작업이란 현재 진행하고 있는 스레드가 아닌 별도의 스레드에서 작업을 수행하는 것을 말하는데 같은 스레드에서 메서드를 호출할 때는 결과를 리턴 받을수 있지만, 비동기적으로 수행되는 스레드에서는 결과를 전달받을 수 있는 대상이 필요한데 Future가 그 역할을 한다. Future 를 통해서 비동기 수행되고 있는 결과값을 가져올 때는 get 메서드를 사용하는데 해당 ..
Collections emptyMap()을 사용하는 경우 결과를 반환할 시에 반환할 데이터가 없거나 내부조직에 의해 빈 데이터가 반환되어야 하는 경우 NullPointException을 방지하기 위하여 반환 형태에 따라 List나 Map의 인스턴스를 생성하여 변환하여 처리해야 하는 경우가 있다. 이후 로직 부분에서 size 메소드 등으로 체크하고 추가적인 값을 변경하지 않는 경우 Collections.emptyMap() 메소드를 사용하면 매번 동일한 정적 인스턴스가 반환되므로 각 호출에 대해 불필요한 인스턴스를 생성하지 않게되어 메모리 사용량을 줄일 수 있다. 단, Collections.emptyMap() 메소드로 반환된 객체의 add 혹은 put과 같은 데이터를 수정하려할시에 UnsupportedOperationException이 발생된다. 즉, 데이터를 수..
[Java] 직렬화 자바에서 직렬화란? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사양할 수 있도록 바이트 형태로 데이터를 변환하는 직렬화와, 바이트를 다시 객체로 변환하는 역직렬화가 존재한다. - 자바 상에서 serializable 인터페이스를 사용하는 이유는 해당 객체가 변활될때 서로 동일한 serialVersionUID를 가지고 있음으로써 역직렬화시에 해당 직렬화 및 역직렬화 대상 객체가 동일한 객체임을 판명할수 있습니다. -자바 직렬화 형태의 데이터 교환은 자바 시스템 간의 데이터 교환을 위해 존재합니다. 자바 직렬화의 장점 -복잡한 데이터 구조의 객체라도 직렬화 기본구조만 지키면 큰작업없이 직렬화가 가능하고, 데이터 타입이 자동으로 맞춰지기 때문에 관련 부분을 신경쓰지않아도 역직렬화..