Cookie, Session, JWT Cookie 쿠키 등장 배경 기본적으로 HTTP 프로토콜 환경은 Connectionless, Stateless한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야 하는데 이 특성을 보완하기 위해서 쿠키가 등장하게
숫자, 문자. 이미지, 동영상 같은 정적 정보, 컴퓨터와 주고받는, 내부 저장된 정보를 데이터라 통칭한다. 데이터는 0과 1로 숫자를 표현하는 방법, 0과 1로 문자를 표현하는 방법이 있다.컴퓨터는 결국 명령어를 처리하는 기계다. 컴퓨터를 실질적으로 움직이는 정보라고
메모리에는 특정 프로그램이 실행되는 동안 명령어와 데이터 등 여러 프로그램이 메모리에 올라갈 수 있다. cpu에서는 메모리의 명령어를 가져오는 작업(fetch)를 하고, 명령어를 처리하기 위한 과정이 일어난다.CPU는 컴퓨터의 가장 핵심적인 역할을 수행하는 부분으로 크
하드디스크-메인메모리/램-캐시메모리 순으로 접근속도가 빠르다.Temporal Locality - 시간적 지역성Spatial Locality - 공간적 지역성캐시메모리는 시간적, 공간적 지역성을 기반으로 가까운 미래에 접근될 확률이 높은 데이터를 작지만 빠른 캐시 메모리
자바는 OS에 독립적인 특징이 있다. OS가 달라져도 자바를 실행할 수 있는 이유다. 이러한 특징을 가능하게 해주는 것이 JVM이다. 개발자가 자바 소스코드(.java)를 작성한다. 자바 컴파일러가 자바 소스파일을 컴파일한다. 이때 나오는 파일은 자바 바이트코드(.cl
JVM은 자바 가상 머신의 약자로, 자바를 실행하기 위한 가상기계라고 할 수 있다.자바는 앞서 컴파일 과정에서 얘기했지만 OS에 종속적이지 않다는 특징이 있다. OS 위에서 자바를 실행시킬 무언가가 필요한데, 이것이 바로 JVM이다.자바 소스코드(원시코드, .java)
함수 호출시 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성된다. 이 방식은 함수 호출시 전달되는 변수의 값을 복사해서 함수 인자로 전달한다. 이때 복사된 인자는 함수 안에서 지역적으로 사용되므로 지역변수의 속성을 가진다. 이 방식은 함수 호출 시 인자로 전달
스레드는 하나의 프로세스 안에서 실행되는 작업단위를 말한다.자바로 스레드를 구현하려면 Runnable 인터페이스를 상속하거나 Thread 클래스를 상속해서 run 메서드를 오버라이딩하면 된다.두가지 구현방법은 인스턴스 생성방법에서 차이가 있다. 해당 클래스를 인스턴스화
자바에서 캐스팅은 타입을 변환하는 것이라고 한다. 이때 캐스팅은 상속관계에 있는 부모-자식 클래스 간에 서로 형변환이 가능하다. 캐스팅이 필요한 이유는 , 다형성과 상속 때문이다.다형성은 형변환으로 오버라이딩된 함수를 분리해서 사용할 수 있고, 상속은 범용적인 프로그래
자바에는 기본타입과 Wrapper클래스가 있다.기본타입에는 int, long, float, double, boolean, char, void이 있고, wrapper 클래스에는 Integer, Long, Float, Double, Boolean, Character, Vo
컴퓨터에서 실수를 표현하는 방식으로 고정소수점과 부동소수점 두가지가 있다.소수점이 찍힐 위치를 미리 정해놓고 소수를 표현하는 방식을 말하며, 부호(1비트)와 정수부(15비트), 소수부(16비트) 3가지 요소가 필요하다. 모든 비트에 저장되는 수들은 이진수로 저장된다.
📍패리티비트(Parity Bit)시리얼 통신에서 데이터 오류를 검출하기 위한 일종의 장치 중 하나로, 정보전달과정에서 오류가 생겼는지 검사하기 위해 추가하는 비트다. 전송하고자 하는 데이터의 각 문자에 1비트를 더해 전송한다.데이터의 모든 1의 갯수를 짝수로 맞춰야
프로세서란, 메모리에 저장된 명령어를 실행하는 유한상태의 오토마톤을 말한다. ARM : Advanced RISC Machine 즉, 진보된 RISC 기기의 약자로 ARM의 핵심은 RISC이다.\*RISC : Reduced Instruction Set Computing(
자바의 모든 객체는 락을 갖고 있다. 모든 객체가 가지고 있으니 고유락(intrinsic lock)이라고도 하고 모니터처럼 동작한다고 해서 모니터락 혹은 모니터라고도 한다. 자바의 synchronized블록은 동시성문제를 해결하는 가장 간편한 방법으로 고유락을 이용해
new 연산자를 통해 생성된 인스턴스의 메모리 공간은 변하지 않는다.(immutable) Garbage Collector로 제거되어야 하고 문자열 연산시 새로 객체를 만드는 오버헤드가 발생한다. 객체가 불변하므로 멀티스레드 환경에서 동기화를 신경쓸 필요가 없기 때문에
JVM의 힙영역에서 사용하지 않는 객체를 삭제하는 프로세스를 말한다.어떤 객체에 유효한 참조가 존재한다면 Reachable, 그렇지 않다면 Unreachable이라고 한다. GC Root에서부터 차근차근 참조를 따라가서 특정시점에 참조되는 객체가 있고 참조관계가 끊긴
자바에서 자료형이란 변수에 적재할 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지 명시적으로 알려주는 키워드를 말한다.기본형 : 계산을 위해 실제 값이 저장참조형 : 객체의 주소를 저장한다. null 또는 객체의 주소를 저장한다.기본형에는 논리형
Open System Interconnection의 약자로, ISO에서 정의한 국제통신 표준규약이다. 통신의 접속~완료까지의 과정을 7단계로 구분하고 정의했다.네트워크를 사용하게 되면서 서로 다른 컴퓨터 간에 정보를 주고받게 되었다. 이후 자연스럽게 여러 회사에서 각각
3way와 4way handshake 과정은 연결을 성립하고 해제하는 과정을 말한다.tcp는 정확한 전송을 보장해야한다. 따라서 통신하기에 앞서 논리적인 접속을 성립하기 위해 3way handshake 과정을 진행한다. 클라이언트가 서버에게 SYN(sequence:x)
네트워크 통신에서 신뢰적인 연결방식이다. 기본적으로 unreliable network에서 reliable network를 보장할 수 있도록 하는 프로토콜이다. TCP는 네트워크 혼잡회피 알고리즘을 사용한다.손실 : 패킷이 손실될 수 있다는 문제순서변경 : 패킷의 순서가
User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 비연결형, 신뢰성없는 전송 프로토콜이다. 데이터그램 단위로 쪼개면서 전송을 해야하므로 전송계층에서 사용하는 프로토콜 중 하나다.IP역할은 장치 to 장치만을 지원한다.
에러는 컴파일시 문법적인 오류와 런타임시 널포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료시키는 것을 말합니다. 메모리 부적이나 스택오버플로우같이 발생하면 복구할 수 없는 심각한 오류를 말합니다. 예외는 컴퓨터 시스템 동작도중 예기치 않은
모든 값을 메모리에 저장하는 자료구조입다. 따라서 Collection에 추가하기 전에 미리 계산이 완료되어야 합니다. 외부반복을 통해 사용자가 직접 반복작업을 거쳐 요소를 가져올 수 있다.(for~each구문)요청할때만 요소를 계산한다. 내부반복을 이용하므로 추출 요소
Java 14부터 프리뷰로 도입된 클래스 타입으로 순수하게 데이터를 보유하기 위한 클래스를 말한다. Java 16부터 정식 스펙에 포함된 Record는 class처럼 타입으로 사용이 가능하다 객체를 생성할때 보통 개발자들은 클래스를 만들고 필드 생성 후에 생성자, ge
대칭키의 장단점과 그 단점을 해결하기 위해 나온 것이 공개키이다. 그 등장배경과 특징을 알아보자대칭키 암호화방식은 암호화, 복호화에 사용하는 키가 동일한 암호화방식을 말한다. 공개키 암호화방식은 암호화, 복호화에 사용하는 키가 서로다른 암호화방식을 말한다.암호화, 복호
Hyper Test Transfer Protocol의 약자로 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜이다. HTTP는 인터넷에서 하이퍼넥스트를 교환하기 위한 통신규약으로 80번 포트를 사용한다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고
로드밸런싱은 처리해야할 업무나 요청을 중앙처리장치나 저장장치 같은 컴퓨터자원에 작업을 분산하는 것을 의미한다. 클라이언트 요청을 일관성있게 응답하기 이해 외부로부터 오는 요청을 서버에 적절히 배분해 요청을 처리하도록 한다. 이렇게 배분해주는 행위를 로드밸런싱이라고 볼
Synchronous는 요청한 작업에 대해 완료여부를 따져 순차적으로 처리하는 것을 말한다. Asynchronous는 요청한 작업에 대해 완료여부를 따지지 않고 자신의 다음 작업을 수행하게 된다. 비동기 특징을 이용해 성능과 연관지어 말한다. 이유는 요청한 작업에 대
I/O란 데이터 입출력을 말하는 것으로, 디바이스를 통해 입력과 출력이 이뤄지는 작업을 모두 I/O라고 한다. 네트워크를 통해 다른 서버로 데이터를 전송하거나 다른 서버로부터 데이터를 전송받는 것도 I/O에 포함된다. I/O에서 발생하는 시간은 CPU를 사용하는 시간과
일반적으로 빈이란 스프링 컨테이너가 시작할때 함께 생성되고 스프링 컨테이너가 종료될 때까지 유지되는 것을 말한다. 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. \*스코프란, 빈이 존재할 수 있는 범위1) 싱글톤 스코프디폴트 스코프로, 스프링 컨테이너의 시
스프링 MVC 란 Spring MVC는 스프링에서 제공하는 웹 모듈로, 모델, 뷰, 컨트롤러 세가지 구성요소로 구성된다. 사용자의 다양한 HTTP 요청을 처리하고 단순한 텍스트 형식의 응답부터 REST 형식의 응답은 물론 뷰를 표시하는 HTML을 리턴하는 응답까지 할
Cross Site Request Forgery : 사이트간 요청위조, 웹사이트 취약점 공격 중 하나에 속함사용자가 자신의 의지와는 무관하게, 공격자가 의도한 행위(삭제, 수정 등등)을 특정 웹사이트에 요청하는 공격을 말한다.공격자가 만든 악성 페이지를 통해, 사용자가
ACID 원칙은 데이터베이스 트랜잭션의 4가지 주요속성을 나타내며, 데이터의 무결성과 신뢰성을 보장한다.특징으로 원자성, 일관성, 독립성, 지속성이 있다. 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장한다. 트랜잭션 커밋시 문제가 되면 롤백했을때 모두
데이터 베이스 키란, 검색이나 정렬시 각 튜플을 구분할 수 있는 기준이 되는 속성을 말한다.키에는 5가지 종류가 있다.후보키는 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합을 말한다. 후보키가 되기 위해서는 두 가지 조건을 만족해야 한다. 유일성 : 키 값으
서버에서 정보를 조회할 때 사용하는 HTTP 메서드다.URL에 데이터를 포함해서 요청한다. 즉, ?와 이름과 값으로 요청 파라미터를 보내는 것을 쿼리 스트링이라고 한다. 만약 요청 파라미터가 여러개라면, &로 연결한다.데이터는 HTTP 헤더에 담겨서 전송된다.URL에