본문 바로가기

Java/기술 스터디

(9)
스택(Stack) & 큐(Queue) 목차 자료구조 왼쪽처럼 어질러져 있는 물건보다 오른쪽처럼 종류별로 정돈되어 있는 물건이 더 찾기가 수월합니다. 이처럼 컴퓨터와 프로그램도 이러한 자료의 추상화가 필요한데요. 자료구조는 효율적인 접근 및 수정을 가능케 하는 데이터 값의 모임을 말합니다. 스택(Stack) 후입선출 스택 구조는 아래가 막힌 상자에 데이터를 넣는 것과 같습니다. 데이터를 삽입할 때는 하나씩 차곡차곡 넣고, 삭제할 때는 마지막에 넣은 데이터가 먼저 삭제됩니다. 후입선출(LIFO : Last in First Out) 데이터 삽입 데이터 삭제 TOP 데이터의 삽입과 삭제가 일어나는 부분을 top이라는 변수를 사용해서 가리킵니다. 데이터 삽입 데이터의 삽입 연산이 발생할 때는 삽입될 데이터가 top이 가리키는 곳의 바로 위쪽에 저장이..
REDIS란? 목차 REDIS란? REmote DIctionary Server의 약어입니다. 한줄로 설명하면 외부 Key-Value 형태의 서버를 말합니다. 인 메모리 데이터 구조 말 그대로 메모리(RAM)에 데이터를 저장합니다. 외부 저장 장치(SSD, HDD)에 데이터를 저장하지 않고 메모리에서 데이터를 읽고 쓰기 때문에 속도가 빠릅니다. 하지만 RAM은 용량이 작다는 단점이 있습니다. 제 컴퓨터에는 8GB의 RAM이 2개, 총 16GB가 꽂혀 있습니다. 이러한 용량으로는 메인 데이터베이스로 사용하기에 무리가 있습니다. REDIS의 장단점 REDIS는 속도가 빠르다는 장점이 있지만 용량이라는 단점이 있었습니다. 이러한 장단점으로 메인 DB로 사용하지 않고 보조적인 수단으로 사용되고 있기 때문에 캐시 데이터베이스 서..
OSI 7계층 목차 OSI 7계층이란? OSI 7계층이란, 모든 네트워크 통신에서 발생하는 여러가지 충돌 문제를 완화하기 위해 복잡한 네트워크 구조를 7개의 계층으로 분류하여 각 계층 별로 수행되는 역할과 책임에 대해 상세히 구분하여 분류한 것을 말합니다. 7계층은 첫번째 물리층, 두번째 데이터 링크층, 네트워크층, 전송, 세션, 표현, 응용층으로 분류되어 있습니다. 물리, 데이터 링크, 네트워크층을 네트워크지원계층으로, 세션 표현 응용층은 사용자 지원계층으로 나눌 수 있습니다. 이렇게 통신기능을 7개의 수직계층으로 분할하여 각 계층마다 다른 계층과는 독립적인 기능을 지원하도록 구성하였습니다. 독립적으로 구성한 이유 이렇게 독립적으로 구성한 이유는 한 모듈에 대한 변경이 전체 모듈에 미치는 영향을 최소화하기 위해서입니..
DTO & VO 목차 DTO DTO는 데이터 전송 객체의 약자로, 계층 간 데이터 교환을 위해 사용하는 객체를 말합니다. 그림으로 표현하면 이렇습니다. 각 계층 간 데이터 교환이 필요할 때 DTO를 사용합니다. getter/setter 메서드 순수하게 데이터를 담아 전달하고 받아서 꺼내는게 목적이기 때문에 Getter / Setter 외의 비즈니스 로직은 가지고 있지 않습니다. 메서드로는 Getter / Setter만을 갖는데, Get 메서드는 담겨진 값을 꺼낼 때 사용하고, Set 메서드는 값을 담아서 전달할 때 사용합니다. set 메서드 set 메서드는 값을 담을 때 사용하기 때문에 데이터를 전달하는 과정에서 값의 변조 가능성이 있습니다. 그렇기 때문에 왼쪽처럼 생성자로 값을 넣어주면 데이터 전달 과정에서 변조가 불..
ENUM 목차 Enum이란? enum은 열거형으로, 관련된 상수들을 같이 묶어 놓은 것을 말합니다. Enum을 사용하는 이유 '요일'은 월화수목금토일 7가지, '계절'은 봄여름가을겨울 4가지로 한정되어 있습니다. 이렇게 한정된 데이터들은 열거형으로 묶어주면 편합니다. 일일히 상수를 하나하나 정의하는 것보다 열거형을 사용하면 간단하게 정의 가능합니다. 값은 자동으로 0부터 순서대로 부여됩니다. Enum의 정의와 사용법 열거형을 정의하는 방법은, 키워드 enum을 적고 열거형이름과 괄호 안에 콤마 구분자로 상수명들을 적어주면 됩니다. 예를 들어 디렉션이라는 열거형을 정의해보았습니다. 이 열거형을 사용할 때는, 열거형 타입의 변수를 선언을 합니다. 이때, 이 변수에는 열거형 안에 있는 네 개의 값 중 하나만 들어올 수..
Cookie & Session 목차 쿠키와 세션 (이번 피피티 참 잘만들었답니다) 쿠키와 세션에 대한 설명을 해드리기 전, 간단하게 서버와 클라이언트에 대한 설명을 드리겠습니다. 서버 서버란 네트워크를 통해 서비스를 제공하는 컴퓨터 시스템을 말합니다. A 컴퓨터에 정보를 올리면 다른 컴퓨터들이 접속해서 그 정보를 확인할 수 있습니다. 이때 A 컴퓨터가 서버 컴퓨터가 됩니다. 즉, 정보를 제공하는 역할을 하는 제공자가 된다면 서버 컴퓨터로 불릴 수 있습니다. 클라이언트 쿠키 쿠키란? 자, 이제 쿠키란 무엇일까요? 쿠키 차단, 쿠키 삭제라는 말을 많이 들어보셨을 겁니다. 쿠키는 저희의 로컬 컴퓨터, 즉 클라이언트에 저장되는 기록 정보 파일을 말합니다. 쿠키의 구성 쿠키는 이름, 값, 만료일, 경로 정보로 구성되어 있습니다. 쿠키의 크기 ..
HTTP & HTTPS 목차 HTTP HTTP란 HTTP란 Hypertext Transfer Protocol의 줄임말로, 직역을 해보자면 Hypertext Hypertext는 텍스트를 뛰어넘다 라는 뜻을 가지고 있습니다. Hypertext보다 Hyperlink를 더 자주 들어보았을건데요. Hyperlink를 통해 사용자가 한 문서에서 다른 문서로 이동할 수 있는 텍스트를 Hypertext라고 합니다. Transfer Transfer은 전송하다라는 뜻을 가지고 있습니다. Protocol 컴퓨터나 통신 장비 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약을 Protocol이라고 합니다. 즉 HTTP란 인터넷에서 하이퍼텍스트 문서를 교환하기 위해 사용되는 통신 규약을 말합니다. HTTP는 가장 널리 사용되는 프로토콜 중..
Garbage Collection 목차 Garbage Collection 가비지 컬렉터에 대해 설명을 드리기 전에, 스택메모리와 힙 메모리에 대한 설명을 잠깐 드리겠습니다. 스택 메모리 (stack memory) 와 힙 메모리(heap memory) 스택메모리는 int와 같은 기본형 데이터의 값이 저장되는 영역입니다. 그리고 참조형 변수 st의 주소값이 저장됩니다. 위 참조형 변수 st의 값 데이터는 힙 메모리에 저장됩니다. 이렇게 스택 영역에 stack이라는 이름으로 생성된 변수는 힙 영역의 힙이라는 스트링을 레퍼런스하게 됩니다. 그리고 String 클래스는 문자열을 결합할 때 이미 있는 heap 문자에 memory 문자가 추가되는 것이 아니라 새로 힙 메모리라는 문자열을 만들어 힙 메모리에 값이 저장이 됩니다. Garbage stac..