프로세스(Process)와 스레드(Thread)
·
OS/Common
프로세스(Process)와 스레드(Thread)가장 기초가 되는 기본 OS 개념 프로세스와 스레드 프로세스란?프로세스란 메모리 상에서 실행중인 프로그램을 말한다.프로세스 내부에는 최소 하나의 스레드(Thread)를 가지고 있다.프로그램을 실행하면 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라고 불린다. 프로세스의 상태(State)프로세스는 상태(state)가 변경되며 수행된다.Running: CPU를 잡고 *instruction 을 수행중인 상태Ready: CPU를 기다리는 상태Blocked (waiting, sleep): 프로세스 자신이 요청한 event가 즉시 만족되지 않아, 이를 기다리는 상태 PCB (Process Contr..
인덱스(Index)
·
Database/Common
DB 인덱스효율적인 DB 설계 및 튜닝을 위해 필수적인 인덱스 DB 인덱스란?인덱스는 데이터 저장, 수정, 삭제에 대한 성능을 희생시켜 탐색에 대한 성능을 대폭 상승하는 방식이라고 볼 수 있다.인덱스는 B-tree 자료구조를 이용하여 테이블의 요소를 빠르게 탐색하도록 설계되어있다. DB 인덱스의 단점인덱스는 조회(SELECT)를 제외한 모든 동작. 즉, INSERT/UPDATE/DELETE 성능에 영향을 미친다.인덱스 테이블(복사된 테이블)의 수정도 같이 필요하기 때문에 삽입/수정/삭제 작업이 두 번 일어나게 된다.인덱스는 별도의 공간에 해당 컬럼을 저장해야 하기 때문에 추가 저장 공간이 필요하다.인덱스를 사용하는 시스템을 설계할 때, 인덱스 영역을 전체 테이블 영역의 30 ~ 50% 까지 잡아 놓을 만..
인터페이스와 추상클래스
·
Language/Java
인터페이스와 추상클래스객체지향 프로그래밍의 알파이자 오메가이지만 실제로 설명하려 하면 항상 헷갈리는 개념 집고가자 인터페이스란?인터페이스는 기본 설계도 라고 할 수 있다. 상속받는 클래스에서는 이 인터페이스에 선언된 기능들을 반드시 정의해야 한다.인터페이스는 다중 상속이 가능하다. 자바에서는 기본적으로 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 클래스를 통한 다중 상속을 금지한다. 하지만 인터페이스는 상속받는 클래스에서 직접 구현하는 형태이므로 다중 상속 시 발생할 수 있는 문제를 최소화한다.모든 메소드는 public abstract 이며, 모든 필드는 public static final 이다. 하지만 필드 및 메소드 들이 이와 같은 형태를 취해야 하므로, 자바에서는 이 키워드들을 생략할..
서블릿(Servlet)
·
Language/Java
서블릿(Servlet)웹 서버의 동작방식을 이해하기 위해 꼭 필요한 서블릿 정리 서블릿(Servlet)이란?Spring을 사용해봤다면 이미 서블릿을 사용한 적이 있을 것이다.http 통신 기반의 클래스를 살펴보면 어노테이션 기반이든, 매개변수로든 서블릿 클래스가 활용된다는 것을 알 수 있다.서블릿은 웹 프로그래밍에서 클라이언트 요청을 처리하고 처리결과를 클라이언트에 전송하는 기술이다.서블릿이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다.서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송한다.예를들어, 로그인 시도를 할 때 서버가 클라이언트에서 입력되는 아이디와 비밀번호를 확인하고 결과를 응답하는데 이러한 역할..
예외(Exception) 처리
·
Language/Java
예외처리(Exception)쉽게 생각할 수 있지만 실수하기 쉽고 서비스의 운영, 개선에 있어 필수적인 예외처리 예외란?사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류를 말한다.예외가 발생하면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하나, 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수도 있고, 예외 상황을 명확하게 파악하기 위해 부가 정보를 남길 수도 있다. 예외의 종류큰 틀에서 분류하자면 두 가지로 나눌 수 있다.Checked Exception: 개발자가 반드시 예외처리를 명시하도록 강제된다는 특징 (미처리 시 컴파일 불가)Unchecked Exception: 예외처리를 하도록 강제받지 않음 (미처리 시 컴파일 가능) 인터넷에 있는 자료의..
스트링(string)
·
Language/Java
스트링(String)가장 많이 사용하면서도 가장 헷갈리기 쉬운 자료형 String  String 객체의 값은 불변이다.String 타입의 변수를 선언하고, 내부의 값을 바꾸면 값이 잘 바뀌는 것처럼 보인다.하지만 이는 실제로 값이 변경되는 것이 아니라, 스트링 풀이라는 저장소에 미리 사용될 문자들이 전부 저장되어 있는데, 문자열 변수의 내용 자체가 바뀌는게 아니라 문자열 변수가 가리키는 주소만 바뀌는 것이다.실제로 string을 리터럴로 선언하고 System.identityHashCode() 메서드를 통해 고유 주소값을 반환하면 확인 가능하다. 스트링 풀이란?내가 한번 썼던 문자열들을 저장해놓는 창고라고 생각하면 된다. 예를들어 "abc"라는 문자열을 한번 사용했다면,이제 JVM은 해당 문자열을 Heap..
가비지 컬렉션(GC)
·
Language/Java
가비지 컬렉션(Garbage Collection)당연하게 생각하고 써왔지만 컴팩트한 개발에 꼭 필요한 가비지 컬렉션 이해가비지 컬렉션이란?가비지 컬렉션은 영어로 Garbage Collection, 줄여서 GC라고도 부른다.가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말한다.c나 c++에서는 가비지 컬렉션이 없어 개발자가 수동으로 메모리 할당과 해제를 일일이 해줘야 하는 반면 Java는 JVM에 탑재되어 있는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에 대해 완벽하게 관리하지 않아도 되어 오롯이 개발에만 ..
CentOs(7 이상) 서비스 등록하기
·
OS/Linux
목차 1. 개요2. 등록하기3. 정리 및 소감  1. 개요 - CentOs에서 간단히 서비스 등록하는 법을 알아본다.   2. 등록하기 서버에 실행할 앱은 이미 업로드 했다고 가정,먼저 서비스 파일(.service)을 만들어야 한다. - DotNet5SocketServer.service (가명)[Unit]Description=just for run DotNet5SocketServer [Service]ExecStart=/home/admin/new/DotNet5SocketServerWorkingDirectory=/home/admin/new [Install]WantedBy=multi-user.target많은 옵션들이 있는데 정말 간단히 축약해서 만들었다. 간단히만 설명하면 [Unit]Description : ..
potatoCompletion
'분류 전체보기' 카테고리의 글 목록 (2 Page)