전체 글 76

한정적 와일드카드 (Bounded Wildcard Type)

한정적 와일드카드를 사용해 API 유연성을 높이라 매개변수화 타입은 불공변(invariant)이다. 즉, 서로 다른 타입 type1과 type2가 있을 때 List은 List의 하위 타입도 상위 타입도 아니다. List은 List의 하위 타입이 아니라는 뜻인데, List에는 어떤 객체든 넣을 수 있지만, List에는 문자열만 넣을 수 있다. 즉, List은 List가 하는 일을 제대로 수행하지 못하니 하위 타입이 될수 없다.(리스코프 치환 원칙 위배) 불공변 방식보다 유연한 무언가 필요 할때가 있다. public class Stack { public Stack(); public void push(E e); public E pop(); public boolean isEmpty(); } 여기에 일련의 원소를..

Java 2020.07.16

제네릭 메서드

제네릭 메서드의 작성법은 제네릭 타입 작성법과 비슷하다. 아래는 두 집합(Set)의 합 집합을 반환하는 문제가 있는 메서드다. public static Set union(Set s1, Set s2) { Set result = new HashSet(s1); // Type safety : unchecked call... 경고 result.addAll(s2); // Type Safety.. return result; } 컴파일은 되지만 경고가 발생한다. 메서드를 타입 안전하게 만들어야 경고가 사라진다. 메서드 선언에서의 세 집합(입력 2개, 반환 1개)의 원소 타입을 타입 매개변수로 명시하고, 메서드 안에서도 이 타입 매개변수만 사용하게 수정하면 된다.타입 매개변수의 목록은 메서드의 제한자와 반환 타입에서 온..

Java 2020.07.14

@NotNull @NotEmpty @NotBlank 차이

Bean Validation API의 NotNull, NotEmpty, NotBlank의 차이에 대해 설명한다. @NotNull The annotated element must not be null. Accepts any type. 모든 타입에 대해 null을 허용하지 않는다. @NotEmpty The annotated element must not be null nor empty. Supported types are: CharSequence (length of character sequence is evaluated) Collection (collection size is evaluated) Map (map size is evaluated) Array (array length is evaluated) ..

Java 2020.03.04

Http Response Code에 대한 간단한 정리

400과 404의 차이에 대해 구글링하던 결과에 대해 정리해 보고자 한다. 자세한 사항은 표준문서 RFC 2616(https://tools.ietf.org/html/rfc2616#section-10.4)을 참고하자. RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 [Docs] [txt|pdf] [draft-ietf-http...] [Tracker] [Diff1] [Diff2] [Errata] Obsoleted by: 7230, 7231, 7232, 7233, 7234, 7235 DRAFT STANDARD Updated by: 2817, 5785, 6266, 6585 Errata Exist Network Working Group R. Fielding Request..

프로그래밍 2020.02.21 (3)

Spring Security + Rest

Spring Security는 기본적으로 인증 과정에서의 결과를 redirect로 처리합니다. 인증 성공 시 success page 인증 실패 시 failure page 비인가 접근 시 authentication page 크게 세가지의 행동에 대한 처리를 page redirect가 아닌 response를 반환하게 만들면 됩니다. 이러한 컨셉을 잡고 구현해 나가봅시다. 모든 소스는 https://github.com/lteawoo/RestSpringSecurity에서 확인 하실 수 있습니다. Spring Security 기본 인증의 경우 UsernamePasswordAuthenticationFilter에서 formlogin 요청을 필터링하여 처리합니다. 이 클래스는 AbstractAuthenticationP..

Spring 2020.02.19

람다 (Lambda)

람다 람다 표현식이란 클로져(Closures)나 익명 함수, 익명 메서드(anonymous methods, anonymous functions)로 알려져있다. 다시 말해 자바에서는 익명 메서드를 나타내기 위한 표현식(expression)이라 생각하면 된다. (int x, int y) -> x + y () -> 42 (String s) -> { System.out.println(s); } 첫번째 식은 매개변수로 x, y를 받고 x, y의 합을 반환한다 두번째는 integer 42를 반환한다. 마지막은 매개변수로 String s를 받고 그것을 콘솔에 출력, 아무것도 반환하지 않는다. 일반적인 문법은 매개변수들, ->(화살표) 그리고 body로 이루어진다. body는 단독으로 표현 하거나 { } 중괄호 블럭으..

Java 2020.02.18

Netgear 공유기 DHCP 임대시간 변경하기(R7800)

KT인터넷에 Netgear 공유기 사용 중인데 1시간마다 인터넷이 끊기는 현상 발생 DHCP 임대 요청하면서 끊기는거 같아 임대시간 변경하여 이상 없음 확인했습니다. ※Telnet 활성화가 되어있어야 진행 가능합니다. Netgear 공유기 Telnet 활성화 하기(R7800) Netgear 공유기 Telnet 활성화 하기(R7800) Netgear R7800를 사용중인데 아마 같은 라인이면 비슷할거라 봅니다. 텔넷 활성화 제어판 -> 프로그램 및 기능 -> Windows 기능 켜기/끄기 -> Telnet Client 활성화 Netgear 공유기의 텔넷 활성화 1.Debug 모드.. lteawoo.tistory.com Telnet 접속 후 설정 확인 config show | grep -i lease 명령어..

IT Tip 2020.01.05 (1)

Netgear 공유기 Telnet 활성화 하기(R7800)

Netgear R7800를 사용중인데 아마 같은 라인이면 비슷할거라 봅니다. 텔넷 활성화 제어판 -> 프로그램 및 기능 -> Windows 기능 켜기/끄기 -> Telnet Client 활성화 Netgear 공유기의 텔넷 활성화 1.Debug 모드 이용 http://192.168.1.1/debug.html에 접속한다. 공유기 관리자 id/pw로 로그인 Enable Telnet 옵션 활성화 해당 옵션은 라우터 재부팅 시 비활성화 됩니다. 2.Telnetenable 프로그램 이용 https://github.com/insanid/NetgearTelnetEnable에서 다운로드 혹은 첨부된 파일 다운로드 명령 프롬프트에서 다음 명령어로 Telnetenable 실행(mac주소는 관리자 페이지 혹은 제품 아래 라벨..

IT Tip 2020.01.05 (2)

STS4 + Spring Boot + Gradle 기본 세팅하기

환경 구성 개발 툴 : STS 4 -> Spring boot 개발을 위한 최적화 툴이라고 생각함. Intellij CE(무료버전)으로 개발하다 Web과 Spring 그리고 JSP에 대한 기능 미비로 대체함 빌드도구 : Gradle -> Maven Repository도 지원하면서 빠름, Maven에 비해 간결한 설정 프레임워크 : Spring Boot -> Spring 레거시보다 빠른 프로젝트 시작 가능이 최대의 장점이라고 생각한다. 그리고 확장성 부분도 부트가 나온지 꽤 됐기 때문에.. 레거시보단 못하겠지만 그래도 훌륭하지 않을까. 귀찮음을 해결한 대가라고 생각하자. Spring Boot makes it easy to create stand-alone, production-grade Spring base..

Spring 2019.12.23