Java & 배경지식/기본상식
-
JVM의 메모리 구조Java & 배경지식/기본상식 2020. 4. 26. 23:33
JVM(Java Virtual Machine)이란? 자바를 싱행하기 위한 가상 기계이다. 즉 자바를 실행하기 위한 가상 컴퓨터이다. 자바로 작성된 어플리케이션은 모두 이 가상 JVM에서만 실행되기 때문에 자바 어플리케이션이 실행되기 위해서는 JVM이 필요 자바 바이트 코드를 실행할 수 잇는 주체 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실생시켜주는 역할을 한다. 가상기계란? 소프트웨어로 구현된 하드웨어 JVM의 구성 Class Loader, Execution Engine, Garbage Collector, Runtime Data Area 로 구성되어있다. Class Loader 자바에서 소스를 작성하면 Person.jav..
-
자바의 자료구조Java & 배경지식/기본상식 2020. 3. 19. 08:56
인터페이스 구현클래스 특징 List Stack Vector ArratyList LinkedList 1. 순서가 있는 데이터의 집합, 데이터의 중복을 허용 Set HashSet TreeSet 1. 순서를 유지하지않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. Map HashMap TreeMAp HashTable Properies 1. 키와 값의 쌍으로 이루어진 데이터의 집합 2. 순서를 유지되지 않고, 키는 중복을 허용하지 않으면 값의 중복을 허용 List Interface LinkedList 1. 양방향 포인터 구조로 데이터 삽입, 삭제가 빈번할 경우 빠른 성능을 보장 2. 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 사용 Vector 1. ArrayList의 구형버전이며, 모든 메소드가 동기..
-
String, StringBuffer, StringBuilder 차이Java & 배경지식/기본상식 2020. 3. 19. 08:54
String new 연산을 통해 생성되는 그 인스턴스의 메모리 공간은 절대 변하지 않는다. 문자열에 변화를 줘도 메모리 공간이 변하는게 아니라 새로운 String 객체를 만들어서 새로운 메모리 공간을 만드는 것 String 단점 새로운 문자열이 만들어지면 가비지 콜렉터에 의해 제거 문자열 연산이 많아지면 계속해서 객체를 만드는 오버헤드 발생 연산에 내부적으로 Char배열을 사용 String 장점 String 클래스의 객체는 불변하기 때문에 단순하게 읽어가는 조회연산에서는 타 클래스보다 빠르게 읽을 수 있다 불변하기 때문에 멀티쓰레드 환경에서 동기화를 신경쓸 필요가 없다. 결론 String클래스는 문자열 연산이 적고 조회가 많을 때 멀트쓰레드 환경에서 사용하면 좋음 StringBuffer, StringBu..
-
객체 지향적 5대원칙(SOLID)Java & 배경지식/기본상식 2020. 3. 19. 08:50
객체지향 5대원칙이란? 단일 책임원칙(SRP, Single Responsibility Principle) 객체는 단 하나의 책임만 가져야 한다. 개방-폐쇄의 원칙(OCP, Open Closed Principle) 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. 전략패턴과 같이갈 수 있음 리스코프 치환 원칙(LSP, Liskov Subsitution Principle) 일반화 관계에 대한 이야기며, 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다. 부모 클래스와 자식 클래스 사이의 행위가 일관성이 있어야 한다. 인터페이스 분리 원칙(ISP, Interface Segregation Principle) 인터페이스를 클라이언트에 특화되도록 분리시키..
-
REST API 공부하기!Java & 배경지식/기본상식 2020. 2. 24. 20:35
이번에 회사에서 새로운 프로젝트인 Open API서버 개발 및 기존에 맡았던 프로젝트 개발을 맡게 되어 한동안 바빴었다. 일을 하면서 사용법만 알았지 REST API가 왜 사용하는지 만드는데 어떤 규칙이 있는지 알아보자. 1. REST API의 탄생 REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼졌다. 엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한..