목록전체 글 (82)
호비시의 끄적끄적
Process 실행중인 프로그램을 프로세스라고 한다. 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행중인 것을 말한다. 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. Thread 프로세스 내에서 실제로 작업을 수행하는 주체를 말한다. 모든 프로세서에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한 두 개 이상의 스레드를 가지는 프로세서를 멀티스레드 프로세스라고 한다. 스레드의 생성과 실행 자바에서 스레드를 실행하는 방법은 두 가지 이다. Runnable 인터페이스를 구현 Thread 클래스를 상속 두 방법 모두 작업하고 싶은 내용을 run()메소드에 작성하면 된다. // 인터페이스를 구현 class ThreadWithRunnable i..
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의 특징은 객체지향 프로그램이다. 객체지향 프로그래밍은 특정 기술에 종속, 의존하지 않아야 한다. 의존하게 된다면 확장성이 떨어지게 되고, 유지보수가..