본문 바로가기

추가필요

(3)
정렬에 관한 정리 - 1 개인적으로 정렬은 코테에서 혹은 개발을 할때 자주 쓰인다고 생각되어서 정렬에 대해 공부를 해두고 싶었다. 그래서 이 기회에 리트코드에 있는 정렬에 대한 글을 보고 정리를 해봤다. 1.정렬의 핵심원리는 무엇일까 정렬의 문제는 어떻게 집합에 있는 아이템들을 순서대로 놓을지이다. 어떤 순서대로 놓을지는 전적으로 비교방법에 따라 달라진다. 정렬의 기초는 각각의 아이템중 공통된 특성들끼리 묶어 재배열하는 것이다. 컴퓨터 공학에서는 순서에 관한 형식이 있다. 그 형식은 다음과 같다. 전제: 만약 아이템이 a 와 b 가 주어졌다면(Law of trichotomy(=삼분법칙)) 1. 아래의 연산 중 하나는 참이어야 한다. a > b | a = b | a < b 2. 그리고 다음과 같은 식이 성립되어야 한다. (tran..
Serializable (직렬화) 란? //transient 는 직렬화의 예외 class TransientTest implements Serializable{ int a = 1; String b = "2"; private transient String tt ="이건 제외가 된다."; } 1. serialize 란? 직렬화는 기술이다. 이 기술은 데이터를 변환하는 기술이다. JVM의 시스템 내부에서 사용되는 Object 혹은 Data는 자바 외에서는 쓸 수 없다. 이 때 자바 외부에서 이러한 데이터를 사용할 수 있게끔 byte 형태로 데이터를 변환하는 기술이 직렬화(serialize) 이다. 즉, jvm 메모리에 있는 개게 데이터를 byte 형태로 변환하는 기술이다. 2. Deserialize 역직렬화이다. Object to Byte 인 기술이..
프로세스와 스레드란? 운영체제와 연관이 있다. 1.프로세스란? 프로그램은 어떤 작업을 실행할 수 있는 파일이다. 프로세스는 컴퓨터 메모리에서 실행되고 있는 프로그램이다. 운영체제로부터 시스템 자원을 할당 받으며 자원의 종류의 예로 CPU 시간이나, 주소 공간, 메모리 영역이 있다. 할당되는 메모리영역은 Code, Data ,Stack, Heap 구역으로 나뉘어져 있다. 프로세스에는 최소 하나의 스레드를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다. 만약 각 프로세스의 자원끼리 통신을 하려면 파이프, 소켓, 파일 등의 통신 방법이 필요하다. 2.스레드란? 프로세스 내에서 실행되는 흐름의 단위이다. 프로세스가 할당받은 자원의 실행 단위이기도 하다. 프로..