전체 글

전체 글

    [Effective Java] Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라

    생성자 대신 정적 팩터리 메서드를 고려하라 이펙티브 자바 챕터 2 아이템 1에서는 생성자 대신 정적 팩터리 메서드를 고려하라고 조언한다. 이는 클래스의 인스턴스를 얻는데 생성자를 사용하는 것이 아닌 정적 메서드를 통해 제공하는 것이다. 자신이 개발할 때 뿐만 아니라 다른 사람의 코드를 사용할 때에도 자주 볼 수 있기 때문에 알아두는 것이 좋다. 아래는 책에서 소개한 5가지 장점과 2가지 단점을 알아본다. 장점 1. 이름을 가질 수 있다. 우선 생성자의 단점은 클래스의 이름을 따라야한다는 조건이 있다. 하지만 메서드는 그러한 제약 조건이 없어 이름을 자유롭게 정함으로 어떻게 작용하지 유추하기가 쉬워진다. 장점 2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. new 예약어로 객체를 생성하지 않기 ..

    [Jenkins] 젠킨스 시작하기 - Ubuntu 18.04

    [Jenkins] 젠킨스 시작하기 - Ubuntu 18.04

    설치 환경 ubuntu 18.04 8080포트가 열려 있어야 한다. Java 11 jenkins는 자바 런타임 환경에서 실행되기 때문에 jdk가 필수적으로 설치되어있어야 한다. 또한 Java 8과 11버전만 가능하기 때문에 이 두버전 중 하나를 다운받아야만 한다. 자세한 내용은 공식문서를 확인 Java 11 설치하기 만약 Java 8또는 11이 이미 설치되었을 경우 생략해도 된다. 저장소 업데이트 sudo apt update openjdk 검색 sudo apt search openjdk openjdk-11-jdk 설치 sudo apt install openjdk-11-jdk 자바 설치 확인 java -version 설치 결과 openjdk version "11.0.11" 2021-04-20 OpenJDK..

    HTTP Cookie와 Session이란 무엇인가

    HTTP Cookie와 Session이란 무엇인가

    HTTP(Hyper Text Transper Protocol)란 HTTP는 현재 다양한 분야에서 널리 사용되는 가장 성공한 통신 규약이다. 초기에는 HTML문서를 인터넷에서 주고 받는데 그 목적이 있었다. 그래서 문서를 전달하였으면 컴퓨터 리소스를 사용하면서 통신 연결을 유지할 이유가 없었기 때문에 응답 후 연결을 끊는다 이를 비연결성(Connectionless)이라 한다. 또한 문서를 전달하는데 목적이 있기에 누가 요청하는가는 중요하지않고 단지 문서를 보내주기만 하면 된다. 웹서버는 모든 요청이 개별 요청으로 보이는 것이다. 이를 무상태(Stateless)라 한다. HTTP 통신은 자판기가 사용자가 누구든 그저 요청한 음료를 돌려주는 것과 같다. HTTP는 이처럼 요청에 대한 사용자를 식별할 수 없어 ..

    분산 서버에 부하를 고르게 분산하는 방법

    분산 서버에 부하를 고르게 분산하는 방법

    1. 부하 분산이란? Load balancing(부하 분산)이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답시간을 최적화 시킬 수 있다. 출처 : 위키백과 분산 서버임에도 서버마다 가지고 있는 IP주소에 접근하는 도메인 이름이 다 다르면 분산 서버라고 할 수 없다. 같은 도메인 이름으로 접속하여도 사용자는 어떠한 서버에 접속하는지 몰라야 한다. 또한 일부 서버에 장애가 생기더라도 남은 서버에서 트래픽을 처리하여야 하며 트래픽은 모든 서버에 균등하게 분배되어야 한다. 이 글은 이러한 목표를 달성하기 위한 학습을 정리한 것이다. 2. Round Robin DNS란 Round Robin은 최초 서명..

    대용량 트래픽에도 끄떡없는 서버 확장 방법

    대용량 트래픽에도 끄떡없는 서버 확장 방법

    1. 대용량 트래픽을 처리하는 서버 아키텍쳐에 대한 학습 이 글은 내가 온라인 거래 중개 서비스의 API서버를 개발하면서 대용량 트래픽에 대한 학습과 고민의 결과를 정리한 것이다. 학습 목표는 백엔드 개발자로써 대용량 트래픽을 처리하며 신뢰할 수 있고 유지보수성이 좋은 API 서버를 개발하기 위한 기본적인 역량을 갖추는 것이다. 2. 대용량 트래픽을 처리하는 것이 왜 중요한가? IT 서비스는 트래픽으로 수익을 발생시키기 때문이다. 대단히 좋은 제품을 개발하였지만 단 1만명만 사용가능한 경우 1만명에 근접 할수록 속도가 느려지고 그 이상이 될 경우 서버가 다운될 것이다. 이 제품은 처리 가능한 트래픽까지 사용자를 받을 수 있다. 그렇다고 무작정 서버를 과하게 증설하면 컴퓨터 자원을 낭비하는 것이기 때문에 ..

    [JAVA 기초] Method Overriding이란 무엇인가

    [JAVA 기초] Method Overriding이란 무엇인가

    1.메서드 오버라이딩(Method Overriding)이란 메서드 오버라이딩이란 자바와 같은 객체 지향 프로그래밍에서 하위 클래스가 자신의 상위 클래스들, 또는 그 중 하나에 의해 이미 제공된 메서드를 특정한 형태로 재정의하는 것을 의미한다. 이는 동일한 시그니쳐(메서드 이름, 매개 변수의 개수와 데이터타입)와 리턴 타입이 같아야만 가능하다. 상위 클래스의 객체로 메서드를 호출한다면 상위 클래스 버전의 메서드가 실행되고, 하위 클래스의 객체로 메서드를 호출한다면 하위 클래스 버전의 메서드가 실행될 것이다. //탈 것을 정의한 클래스 public class Vehicle { //탈 것의 run 메서드를 정의 public void run(){ System.out.println("Run with Vehicle..

    [JAVA 기초] Wrapper Class란 무엇인가

    [JAVA 기초] Wrapper Class란 무엇인가

    1. Wrapper Class란 Wrapper Class는 대응하는 primitive type을 필드로 가지고 있는 Class이다. 개발자는 Wrapper Class로 Primitive Type의 데이터를 Object로 만들 수 있으며 Object의 기능을 사용할 수 있다. java.lang 패키지에 포함되어있어 개발자가 import할 필요가 없다. 종류는 아래와 같다. Primitive Type Wrapper Class byte Byte short Short int Integer long Long double Double float Float char Character boolean Boolean 이중 Byte, Short, Integer, Long, Double, Float은 Number Class를..

    [JAVA 참고] JCP, JSR, TCK란 무엇인가

    [JAVA 참고] JCP, JSR, TCK란 무엇인가

    JCP, JSR, TCK란 무엇인가 Java를 개발한 Sun Microsystems(현 Oracle에 인수됨)는 Java 기술 사양의 개발 및 개정을 위해 JCP(Java Community Process) 프로그램을 도입하였다. 이는 Java기술에 의존하는 전 세계 개발자와 조직을 위해 만들어졌으며 누구든 참여할 수 있다. JSR(Java Specification Request)은 JCP를 통해 Java플랫폼에 대한 기술 제안 및 최종 사양이다. JSR은 정해진 프로세스에 따라 진행되며 승인이 되면 표준이 되어 OpenJDK로 구현되며 Oracle을 포함한 여러 벤더사에서 OpenJDK를 기반으로 JDK를 구현을 한다. TCK(Technology Compatibility Kit)를 통해 해당 JDK가 J..