분류 전체보기
-
객체의 해시코드(hashCode())란JAVA/Java 2020. 5. 19. 23:05
객체 해시 코드란 객체를 식별할 하나의 정수 값을 말한다. Object는 클래스의 최상위 타입이고 Object의 hashCode() 메서드는 객체의 메모리 번지를 이용해서 해시 코드를 만들어 리턴하기 때문에 객체마다 다른 값을 가지게 된다. 논리적 동등 비교 시 이 hashCode()를 오버 라이딩할 필요가 있는데, HashSet, HashMap, Hashtable은 다음과 같은 방법으로 두 객체가 동등한 지 비교한다. ( 논리적으로 동등하다는 것은 같은 객체이건 다른 객체이건 상관없이 객체가 저장하고 있는 데이터가 동일함을 뜻한다. ) 위에 예제를 보면 Key 클래스는 equals() 메서드를 재정의해서 number 필드 값이 같으면 true를 리턴하도록 하였다. 이 경우 HashMap의 식별키로 Ke..
-
내장 서블릿 컨테이너 응용 해보기Spring/Spring Boot 2020. 5. 14. 00:20
스프링 부트가 기본 설정으로 제공해주는 톰캣 대신 제티, 언더토 등의 다른 서블릿 컨테이너를 사용해보자. 기본적으로 우리는 서블릿 기반의 웹 어플리케이션 App을 개발할 때 톰캣을 쓰게 된다. 앞에서 살펴보았던 자동 설정에 의해 톰캣용 자동 설정 파일이 만들어지고 쓰게 된다. build 툴로는 maven을 사용하였는데 다음과 같이 exclusions을 통해 톰캣을 빼주자. 그 후 다음과 같이 jetty 의존성을 추가해주자. 이제 의존성이 들어온 것을 확인을 하고 실행을 해보면 Jetty로 띄워지는 것을 확인할 수 있다. 그러면 웹 서버를 사용하지 않을 수도 있을까? 기본적으로 의존성에 웹과 관련된 기술이 들어와 있다면 스프링 부트는 웹 App으로 만들려고 시도를 한다. 웹과 관련된 의존성을 제거하거나 혹..
-
OAuth2 인증 방식 정리네트워크/네트워크 정리 2020. 5. 13. 02:18
OAuth2.0 -OAuth2.0이란 각종 웹, 모바일 어플리케이션에서 타사의 API를 사용하고 싶을 때 권한 획득을 위한 프로토콜(Protocol)입니다. 간단하게는 로그인에서부터 각종 API를 보다 안전하고 편하게 사용하게 해줍니다. OAuth2 승인 방식의 종류 Authorization Code Grant Type : 권한 부여 코드 승인 타입 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용됩니다. 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식입니다. Implicit Grant Type : 암시적 승인 권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아..
-
Spring Data JPA 1. 상속구조와 주요 인터페이스Spring/Spring Data JPA 2020. 5. 12. 00:39
JpaRepository - PagingAndSortingRepository - CrudRepository - Repository 이러한 상속 구조와 각 인터페이스의 역할을 이해해보자. 제일 밑단에 있는 영속화 기술에 특화된 JpaRepository를 빼면 나머진 다른 영속화 기술용 리파지토리에서도 재사용하는 공용 인터페이스들이다. 이 인터페이스들을 자세히 살펴보자. Spring Data Repository 사용하기 다양한 영속성 저장소를 위해 데이터 접근 레이어를 구성할 때 코드들의 양을 상당히 줄일 수 있도록 하는 게 Repository이다. 다양한 쿼리 키워드를 제공하는데 우리가 Repository를 만들고 메서드를 만든다. 이때 메서드에 특정한 키워드를 만든다면 쿼리를 만들어주게 된다. 예를들어 ..
-
하이버네이트 ORM User guide 1Spring/Spring Data JPA 2020. 5. 11. 03:00
하이버네이트는 자바에서 쓸 수 있는 ORM 설루션이다. ORM이라는 용어는 객체 모델을 관계형 모델로 매핑할 수 있는 기술이다. 혹은 관계형 모델을 객체 모델로 매핑한다거나. 즉 둘 간의 불일치한 패러다임을 일치시켜주는 기술이다. 하이버네이트는 매핑 뿐아니라 쿼리도 할 수 있고 데이터를 가져오는 기능도 제공을 한다. 이로써 SQL이나 JDBC를 직접 다루지 않고 하이버네이트로 감싸주다 보니 SQL에 종속적인 개발을 막아준다. 하이버네이트가 가장 유용한 경우는 비즈니스 로직이 자바 기반이고 객체 기반의 도메인 모델에서 가장 유용하다고 한다. JDBC위에 하이버네이트가 올라가고 하이버네이트를 한번더 감싼 게 JPA이다. Hibernate가 제공하는 natvie 한 API를 사 용해서 Hibernate를 쓰거..
-
kubernetes Tutorials 4. 서비스를 사용해서 App을 공개하기DevOps/Kubernetes 2020. 5. 6. 02:29
지금까지 App은 컨테이너 안에서 돌며 굉장히 private 한 IP를 쓰고 네트워크 역시 isolated 된 상태였다. 따라서 밖에서 쉽게 접근할 수가 없었고 콘솔에다가 kubectl 프락시를 붙이고 그 프락시가 준 IP와 포트 뒤에다가 어떤 특정 API를 통해 POD이름을 주고 이를 통해 접속할 수 있었다. 학습목표 1. 쿠버네티스에서 말하는 서비스란? 2. 레이블과 레이블셀렉터 오브젝트들이 서비스와 어떻게 연관이 있는지 이해하기 3. 서비스를 사용해서 쿠버네티스 클러스터 밖으로 App을 노출시키기 Pods는 언젠가는 죽는다. Pods는 라이프사이클을 가진다고 한다. 어떤 워커 노드가 죽으면 그 노드에서 돌고있는 Pods 역시 사라지게 된다. 그렇게 되면 ReplicationController는 동적..
-
백준(BOJ) 16943번 숫자 재배치알고리즘 풀이/백준(Boj) 2020. 5. 4. 14:43
문제 : https://www.acmicpc.net/problem/16943 16943번: 숫자 재배치 두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작거나 같으면서, 가장 큰 값을 구해보� www.acmicpc.net 풀이 : A의 크기는 10^9 미만 이므로 최대 8자리 밖에 가지지 않는다. 따라서 모든 경우를 하나하나 해봐도 시간 안에 가능하고 이는 next_permutation으로 처리하였다. ans는 b보다 작은 값이면 갱신하게 된다. 코드 ( C++ )