아이템 1 : 생성자 대신 정적 팩터리 메서드를 고려하라 클래스의 인스턴스를 얻는 전통적인 수단은 public constructor. 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 그 클래스의 인스턴스를 반환하는 단순 정적 메서드. 다음 코드는 기본 타입인 boolean 값을 받아 Boolean 객체를 참조로 변환해준다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 생성자보다 정적 팩터리 메서드가 좋은 점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 정적 팩터리 메서드는 이름을..

Docker 설치 일단 homebrew 가 없어서 homebrew 설치 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Docker 설치 brew install Docker docker version 확인해서 정상 설치 확인하기 docker version Mac 에서 Docker 사용하기 위해서는 Docker for mac 을 추가로 설치해야함 Docker for mac 설치 전엔 위 캡쳐와 같이 docker daemon 과 연결이 안된다는 메세지가 표시되고 설치 후 정상 실행되면 아래와 같이 버전에서 서버 내역도 표시됨 설치 후 tutorial 해봄
스트레티지 패턴 http 와 socket 차이http 는 Application layer 에서 동작하는 프로토콜로 socket 위에서 동작한다. http만으로 데이터를 보내거나 받거나 할 수 없다.socket 은 OS에서 네트워크에서 제공하는 API이다. Transport layer에서 동작하며 시스템 간 데이터를 전송하기 위해 사용된다. socket을 활용하여 자체적인 네트워크 프로토콜을 설계할 수도 있다. 로우 레벨로 컨트롤이 가능하다.netty 설명async Event-Driven Network Framework. 프로토콜 서버 및 클라이언트 같은 네트워크 어플리케이션의 개발을 빠르고 간편하게 할 수 있도록 도와주는 NIO 클라이언트 서버 프레임워크이다. TCP , UDP 소켓 서버와 같은 네트워크..
자바는 기본적으로 한 번 개발된 코드를 활용하여 OS와 상관없이 실행할 수 있다. Platform independent 하다고 하며 이는 JVM(Java Virtual Machine) 위에서 동작하도록 만들어졌기 때문에 가능하다. 그래서 Java의 기본적이 동작원리에 대해서 간단하게 확인해보고자 한다. 위에 이야기 했듯이 자바 언어는 JVM 위에서 동작하도록 되어 있는데, JVM 은 모든 OS 에서 동작할 수 있다. 따라서 개발된 코드는 JVM 에서 실행할 수 있는 코드로 변환되면 된다. 개발자는 .java 파일을 만들어서 실행하고자 하는 기능을 작성한다. 이렇게 작성된 프로그래밍 코드는 자바 컴파일러를 통해 바이트코드화 되어 .class 파일을 생성한다. 이 .class 파일이 바로 JVM에서 인식할 ..
Java 는 기본적으로 완전한 객체 지향 프로그래밍 언어이다. 프로그래밍의 대상이 되는 사물과 현상을 모두 객체에 담아서 표현하는 프로그래밍 방식이다. 사람, 책상, 강아지, 화면, 노트북 등 모든 것을 하나의 객체로 보며 객체는 각각의 구성요소와 하는 일에 대해서 가지고 있다. 이런 요소 및 하는 일을 통해 유기적으로 다른 객체들과 연동하여 하나의 프로그램을 만들 수 있는 것이 바로 객체 지향 프로그래밍인 것이다. 객체를 표현할 때 java 에서는 class 를 사용한다. class 를 정의하고 그 class 를 사용하여 객체를 생성한 다음 프로그래밍을 한다. OOP는 아래와 같은 특성들을 지닌다. 1. 추상화(Abstraction) 다양한 객체의 유사한 속성들을 묶어 일반화 시킨다고 이해하면 된다. ..
자바의 기본적인 데이터는 두가지 형식으로 구분될 수 있다. 자바에서 기본적으로 제공하는 Primitive type 과 객체(Object)로 정의하는 Reference type이다. 이 둘의 가장 큰 차이점은 데이터의 크기가 결정되어 있는지, 그리고 메모리에 주소값을 이용하는지 여부이다. Primitive Type 기본형 데이터 타입으로 각 타입은 사용하는 데이터의 크기가 정해져있다. 해당 타입으로 데이터를 저장하게 되면 메모리의 stack 영역에 해당 데이터가 직접 저장된다.ex)int a = 5; 1 byte 2 byte 4 byte 8 byte 정수형 byte short int long 실수형 float double 문자형 char 논리형 boolean Reference Type 레퍼런스 타입은 참조..
부족함을 많이 느낀 한달이어서, 동기들과 이것저것 사용하고 싶은 것들을 마음껏 사용하면서 테스트할 수 있는 서버 및 프로젝트를 하나 구축하기로 하였다. 이를 AWS EC2 서버를 하나 구축하기로 하였다. 마침 몇 주 전에 aws 용 신규계정을 만들어 놓았기에 해당 계정을 활용하기로 함 당연히 시작을 프리티어로 시작하기로 함. 서울 리전으로 선택하였고. Ubuntu Server 16.04 LTS (HVM), SSD Volumne Type스토리지 20G 패스워드 접속 가능하도록 허용 같이 사용할 사용자의 계정 등록 및 root 권한 등록 AWS 콘솔 접속을 위한 IAM 계정 등록