본문 바로가기
반응형

분류 전체보기127

[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.
빌더 메서드로 배열을 리스트로 만드는 법 Java 8 Arrays.asList("하나", "둘", "셋") Java 11 List.of("하나", "둘", "셋"); ex) HashSet set = new HashSet(Arrays.asList("하나", "둘", "셋");); 단일 행으로 Set을 생성하는 것이 가능하다. 활용도가 무궁무진해 보인다. 2020. 2. 25.
공부한 것에 대해서는 철저히 숙지하고 기록하자. 화이팅! 2020. 2. 25.
SOLID SOLID 로버트.C.마틴은 긴 세월 동안 수 많은 시행착오와 Best Practice 속에서 객체 지향 설계의 정수라 할 수 있는 5원칙이 집대성 되었는데 그것이 SOLID다. 객체지향 프로그램을 잘 개발하고 설계하기 위한 5원칙 SOLID에 대해서 알아보자. 단일 책임 원칙(SRP, Single Responsibillity Principle): 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. 너무 책임이 너무 많을 경우, 변화가 생겼을 때 다른 연관 클래스에 영향을 줌 EX) 남자 클래스가 여자친구, 부모, 상사, 친구 클래스와 상호작용할 수 있게 구현되어 있을 때, 여자친구와의 연관성을 끊을 경우 그 변화의 영향도가 관련된 모든 클래스에게 뻣친다. SOC(Seperate of Conce.. 2020. 2. 8.
응집도와 결합도 응집도, 결합도 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높이는 것이 바람직하다. 결합도 모듈(클래스) 간의 상호 의존 정도로서 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다. 두 개의 요소에 대해서 하나의 변경이 다른 것의 변경을 요구하는 정도. 변화가 전파되는 정도. 일종의 파급효과. 응집도: 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 노퓨은 모듈은 하나의 책임에 집중하고 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다. 응집이란 시스템에 변경이 필요할 때 하나의 요소에서 변화하는 부분의 정도. 쉽게 말하자면, 한가지 변경 요청에 대해서 변경이 일어날 때 전체가 다 같이 변하면 응집도가 높은 것이고,.. 2020. 2. 8.
반응형