본문 바로가기
반응형

2020/038

토비의 봄을 담은 제네릭 2편 람다와 인터섹션 시작하는 글 1편에서 설명했던 제네릭의 개념을 바탕으로 하여 람다와 인터섹션에 대해 학습해보자. 람다란? 람다 표현식은 익명 클래스와 익명 메소드, 함수형 인터페이스를 단순화하여 표현한 것이다. public class LambdaAndIntersection { public static void main(String[] args) { hello(o -> o); hello(o -> { return o; }); hello( new Function(){ @Override public Object apply(Object o) { return o; } }); } private static void hello(Function o) { } } 위 예제를 보면 hello 란 정적 메소드에 할당된 파라미터 들은 람다에 익.. 2020. 3. 26.
토비의 봄을 담은 제네릭 1편 작성 계기 자바 공부 5년차 자알못이 분수를 깨닫고 부족한 개념을 쌓기 위한 첫 걸음으로, Java 5에 처음 등장해 활약 중인 제네릭에 대하여 토비 님의 강의를 듣고 정리해보았다. 이펙티브 자바나 구글링을 통해서도 이해하기 힘들었던 제네릭이 완전히 이해되었다. 이 글을 쓰며 내 머릿 속을 다시 한 번 정리하고, 기록하고자 한다. 제네릭 제네릭이란? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 아래 예제를 보자. public class GenericEx1 { public static void main(String[] args) { Jordy stringJordy = new Jordy (); stringJordy.setT("죠르디"); System.out.println(stringJo.. 2020. 3. 26.
ModelAttribute, SessionAttribute(s)의 모든 것 자주 사용하지 않아 익숙하지 않은 세 어노테이션에 대하여 심층적으로 분석해보는 시간을 가졌습니다. 읽어보시고 첨언 부탁드립니다. Common Test Code POJO, Niniz public class Niniz { private String name; private long popularity; public String getName() { return name; } public void setName(String name) { this.name = name; } public long getPopularity() { return popularity; } public void setPopularity(long popularity) { this.popularity = popularity; } @Overr.. 2020. 3. 11.
[MVC Servlet의 모든 것] 자바 EE, Servlet, ServletContext 등 개념 Java EE Java EE는 자바를 이용한 서버측 개발을 위한 플랫폼으로, Java EE 스펙에 따라 제품 구현한 것을 WAS 라고 함. Java Servlet 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 자바 EE 사양의 일부분이다. 생명주기 서블릿 컨테이너가 서블릿 인스턴스의 init() 메소드를 호출하여 초기화 한다. 최초 요청을 받았을 때 한번 초기화 하고 나면 그 다음 요청부터는 이 과정을 생략한다.(싱글톤 패턴 사용) 서블릿이 초기화 된 다음부터 클라이언트의 요청을 처리할 수 있다. 각 요청은 별도의 쓰레.. 2020. 3. 11.
쓰레드와 프로세스, 그리고 자바 비동기 API Thread And Process in OS Level 프로세스란? 독립된 실행의 단위 CPU 자원은 OS의 스케줄러에 의해 Time Slice 만큼 실행. Memory는 OS로 부터 할당 받은 메모리 공간 사용.(CODE, DATA, HEAP, STACK) 쓰레드(s) + 메모리공간 프로그램 코드: 개발자가 작성한 코드 데이터: 컴파일 타임에 정해 지는 전역 변수 및 상수 데이터 영역 확보 런타임에 힙과 스택 영역 생성 CPU - Memory 통신 방법 CPU와 메모리에 직접 접근 할 수 없어서 가상 메모리를 두는데, 가상 메모리는 페이지 테이블이라고도 불리며 프로세스의 페이지 정보를 저장한다. 개별 프로세스의 페이지는 다른 프로세스가 접근할 수 없다. 가상 메모리 또는 가상 기억 장치는 RAM을 관리.. 2020. 3. 10.
Nginx 와 HAProxy nginx 부하분산 https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html Module ngx_stream_upstream_module Module ngx_stream_upstream_module The ngx_stream_upstream_module module (1.9.0) is used to define groups of servers that can be referenced by the proxy_pass directive. Example Configuration upstream backend { hash $remote_addr consistent; server backend1.e nginx.org https://seokjun.kim/h.. 2020. 3. 9.
자바 링크 성능 https://blog.jooq.org/2015/02/05/top-10-easy-performance-optimisations-in-java/ 자료구조 https://velog.io/@dudrkdl777/Set%EA%B3%BC-Map-e7k1omvrsl 스프링 https://ohjongsung.io/2017/06/02/%ED%95%84%EB%93%9C-%EC%A3%BC%EC%9E%85-field-injection-%EC%9D%84-%ED%94%BC%ED%95%98%EC%9E%90 https://coding-start.tistory.com/250 https://madplay.github.io/post/why-constructor-injection-is-better-than-field-injection.. 2020. 3. 6.
Item 35. int 상수 대신 열거 타입을 사용하라 열거 타입의 정의와 필요성 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 사계절, 태양계의 행성 등이 좋은 예다. 열거 타입은 정적 변수를 나열해 놓은 정수 열거 패턴과 많이 비교 되곤 한다. // 정수 열거 패턴 예시 public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD.. 2020. 3. 4.
반응형