전체 글
프로젝트에 사용할 서버를 구축하기 위해서 네이버 클라우드를 사용해보기로 했다. 기존에 AWS만 사용해보고 네이버 클라우드는 사용해 보지 않았기 때문에 만드는 방법을 정리해 보려고 한다. Micro Server를 사용하면 1년간 무료로 사용할 수 있기 때문에 일단 micro로 생성 후 추후 필요하다면 서버를 바꿔줄 예정이다. 무료 기간 종료 후 반납하지 않은 MIcro Server는 자동 과금이다. 더 이상 필요 없다면 무료 사용기간에 맞춰서 반납해야 된다는 점을 명심하자. 서비스 -> Compute -> Server -> 이용신청하기 제일 먼저 로그인을 한 후 메뉴에서 서비스 -> Compute -> Server -> 이용신청하기 를 누른다. 하단의 서버 생성 버튼을 눌러 이제 서버를 생성해주자 서버 생..
지난번에 쿠키(Cookie)에 대해서 알아보았다. 이번에는 쿠키와 함께 자주 등장하는 세션에 대해서 알아보자 1. 세션(Session)이란? 일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다. 여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다. 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다. 앞서 살펴본 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장한다. 하지만 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둔다. 브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장..
쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어이다. 그렇지만 두 개의 개념에 대해서 헷갈리기 쉽기 때문에 정리를 해보려고 한다. 이 글에서는 우선 쿠키에 대해서 정리해 보려고 한다. 근데 쿠키와 세션은 왜 사용하는 것일까? 바로 HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다. 비연결 지향(Connectionless) 클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊는다. 상태정보 유지 안 함(Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다. 그렇다면 쿠키란 무엇일까? 1. 쿠키(Cookie)란? HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사..
1. GC(Garbage Collection)란? JAVA에서 객체가 생성되면 해당 객체는 JVM의 Heap영역의 메모리를 점유한다. 해당 객체는 현재 참조 되지 않더라도 메모리 공간을 점유한다. 물론 메모리 공간은 한정적이다. 한정적인 메모리에 현재 사용되지 않는 객체가 점유한 공간을 제때 정리해 주지 않으면 메모리 공간이 부족해 지고, 결국은 Out Of Memory Error 가 발생 할 수 밖에 없다. JAVA는 JVM을 통하여 구동된다. JAVA의 특징 중 하나로 메모리 관리를 개발자가 직접 명시적으로 수행하지 않고, JVM에서 자동으로 수행해 주는데, 이 작업을 Garbage Collection이라 하며 GarbageCollector가 작업을 수행한다. JAVA의 GC는 다음과 같은 가설을 전..
1. 해시맵(HashMap)이란? HashMap은 Java Collection Framework에 속한 구현체 클래스로 Map 인터페이스를 구현하고 있다. 그렇기 때문에 Map의 구조인 key-value쌍으로 구성되어 있다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { } HashMap 클래스의 내부는 위와 같은 상속, 구현 관계를 가지고 있다. 하나의 HashMap에서 key는 중복을 허용하지 않고, value는 중복을 허용한다. HashMap은 key, value에 모두 null 값을 할당 할 수 있다. HashMap은 데이터 저장에 있어 순서를 보장하지 않는다. key, value 모두에 prim..
1. 클래스 변수(Class variable) vs 인스턴스 변수(Instance variable) 멤버 변수 중 static이 붙은 것은 클래스 변수, 붙지 않은 것은인스턴스 변수이다. 클래스 변수(Static 멤버) 클래스 내에 Static 키워드로 선언된 변수 처음 JVM이 실행되어 클래스가 메모리에 올라갈 때 ~ 프로그램이 종료될 때까지 유지 클래스가 여러 번 생성되어도 Static 변수는 처음 딱 한 번만 생성됨 동일한 클래스의 모든 객체들에 의해서 공유됨 인스턴스 변수(Non-static 멤버) 클래스 내에 선언된 변수 객체 생성 시마다 매번 새로운 변수가 생성됨 클래스 변수와 달리 공유되지 않음 지역변수 메소드 블럭 안에 선언된 변수로 메소드 호출 시점 ~ 메소드 종료 시점 동안 유지된다. ..
1. Java는 포인터(Pointer)가 없는 언어다? Java의 특징을 이야기 할 때 포인터(Pointer)가 없는 언어라고 이야기한다. 근데 여기서 포인터란 무엇일까? 포인터란 c언어에서 주로 사용되는 개념으로 메모리의 주소값을 저장하는 변수이다. 포인터 : 메모리의 주소값을 저장하는 변수, 어떤 이름(label)이 메모리의 어떤 주소를 가리키고 있는지에 대한 정보 // c/c++ int a = 3; int *p = &a; //a 변수의 메모리 주소 번지 그렇다면 Java에는 왜 포인터가 없다고 하는 것일까? Java에서는 포인터라는 개념대신 참조(Reference)라는 개념을 사용한다. 참조나 포인터나 둘 다 객체의 주소를 가리키고 접근할 수 있다는 점은 똑같다. 하지만 둘의 핵심적인 차이는, "포..
1. 0.1 + 0.2 는 0.3이 아닌 0.30000000000000004다? 0.1 + 0.2 는 얼마일까? 이 질문을 본다면 당연히 0.3이라고 대답할 것이다. 그렇다면 컴퓨터에서도 0.1 + 0.2 = 0.3이라는 결과가 나올까? public class App{ public static void main(String[] args){ System.out.println(0.1 + 0.2); } } 위의 코드를 실행하면 어떤 결과 값이 나올까? 당연히 0.3이라는 결과값을 기대하고 실행시킬것이다. 하지만 결과는 0.3이 아닌 0.30000000000000004가 나오게된다. Java가 아닌 JavaScript, python 등으로 실행해도 0.3이 아닌 다른 값이 나오게 된다. 왜 이런 결과값이 나오게..
Computer Architecture (aka 폰 노이만 구조, 컴퓨터 구조) Processor(CPU) 메모리로부터 데이터와 명령을 받음 컴퓨터 명령어(기계어, instruction)을 해석하고 연산함. 인간의 두뇌 역할 CU(Control Unit)은 프로그램 명령에 따라 데이터 패스, 메모리 입출력 동작 결정 ALU(Arithmetic Logic Unit): 산술 논리 연산장치 사칙연산, 논리곱, 논리합, 부정합 등 논리연산 수행 필요한 데이터를 레지스터에서 가져오고, 다시 결과를 레지스터에 저장 Memory 명령어 및 데이터 적재(Load) 정보를 저장해 뒀다가 필요할 때 읽어들이는 장소 레지스터의 용량이 작아 출시 비휘발성 (ROM) 휘발성(RAM) 최근 사용 데이터 (Cache) Input(..