목록분류 전체보기 (82)
호비시의 끄적끄적
Java Collection Java Collection의 주요 인터페이스는 List, Set, Map이다. 이 인터페이스들을 구분하는 가장 중요한 개념은 순서와 중복이다. List : 순서 있다. 중복 가능 Set : 순서 없다. 중복 불가능 Map : Key-Value 저장, Key 중복 불가능, Value 중복가능 List List는 데이터 순서에 맞게 배열처럼 구성한다. 인덱스가 부여되기 때문에 인덱스로 검색이 가능하다. 중복을 허용한다. List 인터페이스를 구현한 클래스는 ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector 가 있다. 이 중 자주 사용하는 Arr..
Docker란? 도커는 2014년 6월 Docker 1.0 발표한 기술로 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 백엔드 프로그램,데이터베이스, 메시지큐 등을 컨테이너로 추상화가 가능하다. Docker 가 없었을 때를 생각해보자 우리가 열심히 만든 서비스를 배포한다고 가정하자. 그럼 서비스를 제공하기 위한 서버가 필요하다.서버에서 작성한 코드를 실행하기 위해서는 다양한 작업을 해줘야 한다. os 설치, 실행환경 세팅(java, python 등), 어플리케이션 코드(or 빌드) 다운로드, 필요한 라이브러리 다운로드 등등 서버에 다양한 사전작업이 필요하다. 이런 우여곡절 끝에 서버에 환경설정을 끝내고 배포했다고 가정하자. 하지만 서비스를 운영하다 보면 다양한 요청이 들어올 수 있다. 예를 들어 ubunt..
TCP와 UDP TCP와 UDP는 OSI 7계층의 4계층인 전송계층에서 사용되는 프로토콜이다. 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어 등을 담당하는 계층이다. 간단히 설명하자면 데이터의 전달을 담당하는 계층이다. TCP Transmission Control Protocol의 약자로 문자 그대로는 전송을 제어하는 프로토콜이라는 뜻 TCP의 정의는 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 특징 연결형 서비스로 가상 회선 방식을 선택 3-way handshaking 과정을 통해 연결을 설정 4-way handshaking 을 통해 해제 흐름, 혼잡을 제어 높은 신뢰성 UDP 보단 느..
POJO 란? Plain Old Java Object 의 약자로 말 그대로 해석하자면, 오래된 방식의 자바 객체라는 뜻이다. POJO는 Java 가 무거운 프레임 워크를 사용하게 됨에 따라 해당 프레임 워크에 종속된 무거운 객체를 만들게 된 것에 반발하여 만든 개념이다. ORM이 나왔을 때, ORM 기술을 사용하고 싶다면 Hibernate와 같은 ORM 프레임워크를 사용해야한다. 자바 객체가 ORM 기술을 사용하기 위해 Hibernate에 의존하는 순간 POJO라고 할 수 없다. 특정 기술에 종속, 의존하기 때문이다. 왜 POJO를 지향해야 하는가? Java의 특징은 객체지향 프로그램이다. 객체지향 프로그래밍은 특정 기술에 종속, 의존하지 않아야 한다. 의존하게 된다면 확장성이 떨어지게 되고, 유지보수가..
Spring WebFlux란? Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈이다. WebFlux는 클라이언트, 서버에서 Reactive 한 스타일의 어플리케이션 개발을 도와주는 모듈이며, reactive-stack web framework이며, non-blocking reactive stream을 지원한다. Reactive Programming 이란? 리엑티브 프로그래밍은 데이터 흐름과 변화 전파에 중점을 둔 프로그래밍 패러다임이다. 프로그래밍 언어로 정적이거나 동적인 데이터 흐름을 쉽게 표현할 수 있어야 하며, 데이터 흐름을 통해 하부 실행 모델이 자동으로 변화를 전파할 수 있는 것을 의미한다. Rx 프로그래밍의 핵심은 3가지 Observable, Observer, Schedule..
JVM ? Java Virtural Machine의 줄임말. 자바를 실행하기 위한 가상기계 Java의 특징으로는 OS에 종속되지 않는다는 점이 있는데, 이를 가능하게 하는 것이 JVM이다. JVM 구성요소 클래스 로더(Class Loader) 실행 엔진(Execution Engine) 인터프리터(Interpreter) JIT 컴파일러(Just In Time) 가비지 콜렉터(Garbage Collector) 런타임 데이터 영역(Runtime Data Area) 클래스 로더 JVM 내로 클래스파일을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 런타임 시 동적으로 클래스를 로드, jar 파일 내에 저장된 클래스들을 JVM 위에 탑재한다. 실행 엔진 클래스를 실행시키는 역할 클래스 로더가 JVM내의 런..
객체지향 프로그램이란 OOP(Object Oriented Programing)란 컴퓨터 프로그래밍 페러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 절차지향 프로그래밍의 한계를 극복하고자 나온 페러다임 장점 코드 재사용성 유지보수 쉬움 대형프로젝트에 적합 단점 처리속도가 느림 객체가 많으면 용량이 커질 수 있음 설계시 많은 시간과 노력이 필요 키워드 클래스 + 인스턴스 추상화 캡슐화 상속 다형성 클래스와 인스턴스란? 클래스 : 속성과 행위를 변수와 메서드로 정의한것, 객체를 만들기 위한 메타정보 인스턴스(객체) : 클래스에서 정의한 것을 토대로 실제 메모리에 할당 된 것 추상화..
REST API를 알아보기 전에 우선 API에 대해 알아보자 API란? API란 Application Programming Interface 의 약자로 컴퓨터의 기능을 실행시키는 방법을 의미한다. 회원가입, 로그인, 게시글 작성, 조회, 수정, 삭제 등등 특정 기능을 담당하고 있는 하나 하나가 모두 API 이다. 클라이언트가 요청(Request)을 하면 서버에서 API에 맞는 기능들을 실행하고, 적절한 응답(Response)을 보내줄 것이다. REST API란? REST API 란 한 줄로 말하면 다른 사람의 컴퓨터의 기능을 실행히시는 형식을 의미한다. 좀더 자세히 설명하면, HTTP를 이용해서 통신을 할 때 특정 Resource 를 특정 method 를 통해 전달하는 방식을 의미한다. REST의 특징 ..