본문 바로가기

Web Sever 개발과 CS 기초/자바

(11)
Java Chatiing Server 만들기 관련 내용 JSON 개념과 특징 이해 Enum의 개념과 활용 방법 이해 개요 목적 Runnable Thread와 Java ServerSocket 클래스를 사용해서, 여러명이 접속할 수 있는 채팅 서버를 만들어보자. Thread, ThreadLocal, ReentrantLock을 사용해서 하나의 Server 프로세스에 여러 Client 동작이 동시에 진행되어도 동시성 문제 없이 잘 돌아가는 채팅 서비스를 만드는 것이 목적이다. Server에서 구현할 동작들을 소개한다. 여러 Client가 접속할 수 있는 채팅 서버 생성 Client 입장 시 이름을 먼저 등록해야 채팅 메세지 작성 가능하도록 설정 프로토콜([Header : [길이][패킷종류]] - [Body])을 사용하여 Client 데이터 구분하기 (이름..
Java Runnable Thread 구현과 sysnchronized - 동시성 문제 해결 개요 목적 하나의 프로세스에서 여러가지 일을 처리해주는 Thread를 자바 Runnable 인터페이스로 구현하는 방법에 대해서 알아본다. Thread에 대한 자세한 이해는 아래 블로그 글에서 확인할 수 있다. Thread와 Process Fork 차이 그리고 하나의 공유 자원을 여러 쓰레드에서 동시에 접근하여 생기는 동기화 문제를 방지하는 Synchronized 메소드에 대해서도 알아본다. Runnable으로 Thread 구현하기 Runnable 인터페이스를 구현하여 Thread 동작을 하는 class를 만들 수 있다. //Runnable 인터페이스를 상속받아서 //Thread 구현 동작을 run() 메소드 안에 작성한다. public class RunnableThread implements Runnab..
JavaBean 요구 조건과 Property JavaBean이란, JavaBean 규격서 조건을 충족한 자바 클래스이다. JavaBean이 충족되려면, 먼저 파라미터가 없는 생성자가 반드시 있어야 한다. 그리고 클래스 외부에서 필드에 접근할 때는 반드시 메소드를 통해서 접근해야 하며, get, set 메소드를 사용한다. 이런 메소드를 통해서 관리되는 데이터를 Property라고 한다. get, set메소드에서 get, set 다음에 오는 이름을 Property이름으로 취급한다. → Java외에 다른 언어에서는 언어와 VM레벨에서 Property를 제공한다. Java는 Property 언어 레벨에서 제공하지 않고, get, set 메소드를 사용하는 필드를 Property로 사용한다는 JavaBean 규격만 제공했다. → 스프링에서는 완화된 JavaB..
ThreadLocal, Atomic 이해와 CAS 원리 개요 목적 스레드를 사용하면 공유된 자원에 접근하여 예기치 못한 문제가 발생할 수 있다. 이번 시간에는 스레드 별로, 개별 공간을 제공하는 ThreadLocal과 Atomic에 대해서 알아본다. 마지막에는 Atomic을 가능하게 하는 CAS 동작 원리에 대해서도 알아본다. ThreadLocal ThreadLocal은 스레드 별로, 자신만의 변수를 만들어준다. ThreadLocal 변수 없이 일반 변수를 사용하면 모든 스레드가 공유된 자원을 사용하게 된다. 예시) 일반 변수 String a; thread1이 a에 값을 “t1”을 set한다(저장한다). thread2가 a의 값을 get(꺼내온다)하면 thread2가 설정하지 않은 “t1”의 값이 나온다. 공유된 자원을 사용하기 때문에 thread2가 설정하..
Concurrent List, Concurrent HashMap 쉽게 이해하기 개요 목적 멀티 thread를 사용 시 동시성 문제를 주의해야 한다. 동시성 문제를 해결하기 위한 다양한 방법들이 있다. (동기화, ThreadLocal, Atomic 등) 이번에는 많은 자료를 저장하는 list와 hash가 공통 자원일 때, 동시성 문제를 해결해주는 CucurrentLIst와 ConcurrentHash에 대해 알아보자. Concurrent List import java.util.ArrayList; public class ConcurrentLIst { public static void main(String[] args) throws InterruptedException { TestList testList = new TestList(); Thread t1 = new Thread(testLi..
동시성 문제에 대한 이해와 Java의 Lock 객체 종류 개요 목적 자바 스레드 기능을 사용하면, 여러 처리를 동시에 진행할 수 있는 장점이 있다. 하지만, 공유된 자원을 동시에 접근했을 때, 동시성 문제가 발생 할 수 있다. 이 문제를 해결하는 방법이 동기화이다. 자바 제공하는 동기화 방법은 lock 객체를 사용하는 것이다. 이번 글에서는 lock 객체에 대한 이해와 종류에 대해서 알아본다. lock 객체를 잘 이해하기 위해, 관련 용어에 대한 설명을 먼저 한다. 동시성 문제, 동기화, Synchronized블럭, lock객체 이해 쓰레드는 하나의 프로세스의 공통된 자원을 사용해, 쓰레드간 빠른 전환이 가능하다. 하지만 공통된 자원을 쓰는데 주의점이 있다. 예를 들어 int num = 0; 이라는 공통된 자원에 +1을 기능하는 4개의 쓰레드가 동시에 실행된다..
Thread와 Process Fork 차이 개요 목적 Thread와 Process Fork 모두 프로세스의 흐름을 나눠 효율이 증가한다. 역할은 비슷하지만, 이 둘의 차이는 존재한다. 먼저 두 역할을 이해하기 위한 기본 용어를 이해 한 후에 Thread와 Process Fork 역할과 차이에 대해서 알아보자. 사전 지식 먼저 이해하기 프로그램, 프로세스, 스레드 프로세스란 컴퓨터 자원을 할당 받아 실행되고 있는 프로그램이다. 프로그램은 실행 되기 전 코드 자체를 의미한다. 예를 들어, 바탕 화면에 있는 크롬 브라우저 아이콘은 프로그램이고, 아이콘을 클릭하여, 크롬을 사용하는 것은 크롬 프로세스이다. CPU 동시성과 병렬처리. 콘텍스트스위칭 컴퓨터를 사용할 때, 다양한 프로세스를 동시에 사용한다. 크롬으로 검색을하고, 멜론 플레이어로 음악을 듣고,..
REST 특징과 REST API 설계 규칙 REST, API 그리고 REST API의 개념에 대한 이해는 아래 글에서 확인할 수 있다. https://coding-business.tistory.com/13 REST API, RESTFUL이란 Overview 이번 글의 목표는 REST API에 대한 이해이다. REST API를 이해하기 위해서는 먼저 REST와 API에 대한 이해가 필요하다. 이 두 개념에 먼저 알아본 후에, 두 개념을 합치는 방식으로 REST API에 대해 coding-business.tistory.com REST의 특징 1. Server - Client (서버 클라이언트 구조) 데이터를 가지고 REST API 제공하는 것이 Server, REST API를 이용하여 데이터를 요청하는 것이 Client이다. 역할을 구분 시켜서, 서..

반응형