아이템 1 : 생성자 대신 정적 팩터리 메서드를 고려하라 클래스의 인스턴스를 얻는 전통적인 수단은 public constructor. 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 그 클래스의 인스턴스를 반환하는 단순 정적 메서드. 다음 코드는 기본 타입인 boolean 값을 받아 Boolean 객체를 참조로 변환해준다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 생성자보다 정적 팩터리 메서드가 좋은 점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 정적 팩터리 메서드는 이름을..
스트레티지 패턴 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 계정 등록
OOP(Object Oriented Programming) 객체 지향 프로그래밍으로 각각의 객체들을 조립해서 하나의 프로그램으로 만들어내는 것이라고 할 수 있다. 각각의 객체는 하나의 부품으로 볼 수 있기 때문에 유연하고 변경이 용이하다. 캡슐화 : 필드와 메소드를 하나로 묶어 내부 구현을 숨길 수 있다. 접근제한자를 활용한다. 내부 구조에 대한 변경등을 숨길 수 있다. 다형성 : 같은 타입으로 다양한 형식의 결과를 얻을 수 있다. 동일한 추상 클래스, 혹은 인터페이스를 상송하여 다양한 형태의 클래스를 생성할 수 있으며 각각 다른 결과를 나타낼 수 있다. 상속 : 부모 클래스의 성질을 자식 클래스가 상속받아 사용할 수 있다. Overloading : 동일한 메서드 이름을 가지고 매개변수와 리턴 값을 변경..
java primitive type과 레퍼런스 타입의 차이점 - Primitive type 은 자바에서 제공하는 기본형 데이터 타입으로 타입별 데이터 사이즈가 정해져 있으며 stack 영역에 값이 바로 저장된다. primitive type 은 byte(1), short(2), int(4), long(8), float(4), double(8), char(2), boolean(1) 으로 총 8가지가 있다. Reference type 은 primitive type 을 제외한 모든 데이터이다. 대표적으로 String 타입이 있으며 데이터 사이즈가 정해져있지 않고 가변적이며 stack 에는 데이터의 주소값이 저장되며 실제 데이터는 heap 영역에 저장된다. 접근 제한자 - private : 현재 객체 내에서만 사..