전체 글

CPU 스케줄러 및 스케줄링 알고리즘 CPU는 코어 1개마다 하나의 프로세스만 실행할 수 있고 동시에 여러개의 프로세스를 실행할 수 없다. 우리는 평소 여러개의 프로그램을 동시에 실행하며 컴퓨터를 하기에, 하나의 코어에 여러개의 프로세스를 동시에 실행하는 것 처럼 보이지만 이는 CPU가 Context Switching을 통해 여러개의 프로세스를 아주 짧은 시간 동안 번갈아가며 동시에 실행되는 것 처럼 보이게 하는 것이다. (코어가 2개 이상이고 프로세스가 서로 다른 코어에서 실행된다면 실제로 동시 실행된다 할 수 있다.) 즉, 동일 코어 내에서 특정 시점에는 하나의 프로세스만 CPU를 할당받는다. 이렇게 CPU는 여러 작업을 조금씩 나눠서 실행해야 하기 때문에 Ready Queue라는 대기열을 만들고 프..
· Study/Java
CGI 란? CGI란 웹 서버와 외부프로그램 간의 통신을 위한 인터페이스로, 클라이언트의 동적 자원 요청을 처리하기 위해 사용됩니다. 여기서 외부 프로그램(CGI 프로그램) 은 Python, C, PHP 등 여러 언어에서 CGI 인터페이스를 기반으로 구현하고, 웹 서버는 동적인 자원에 대해 요청이 발생하면 해당 CGI 프로그램을 호출한 뒤 결과를 클라이언트에게 반환합니다. 이 CGI는 클라이언트의 요청이 발생할 때 마다 매번 프로세스를 생성해서 시스템 자원을 비효율적으로 사용한다는 단점이 있는데, Java에서는 이런 단점을 보완하기 위해 CGI 대신 Servlet 기술을 사용합니다. Servlet 이란? Servlet은 자바 언어에서 CGI의 단점을 보완하며 동적으로 클라이언트의 요청을 처리하기 위해 제..
개요 URI, URL, URN는 모두 인터넷 상에서 자원을 식별하기 위해 사용하는 용어이다. 주로 URL이라고 혼용해서 사용되곤 하지만 각각 다른 목적과 형식을 가지고 있다. 이번 글에서는 세가지 용어에 대한 개념과 차이점에 대해 알아본다 URI, URL, URN 의 개념 URI Uniform Resource Identifier 의 약자로, 하나의 자원을 고유하게 식별하는 문자열이다. URI는 자원의 위치(URL)이 될수도 있고 자원의 이름(URN)이 될 수도 있는 가장 상위의 개념이다. URL Uniform Resource Locator 의 약자로, 자원의 위치를 식별하는 문자열이다. URL은 다음과 같은 구성요소로 이루어져 있다. 1. Scheme - 자원에 접근하기 위한 통신 프로토콜 - http,..
JWT란 JWT란 Json Web Token 의 약자로, 클라이언트와 서버 간의 정보를 안전하게 주고 받기 위한 토큰 기반의 인증 방식 중 하나이다. JWT의 구조는 header.payload.signature로 구성되어 있고, 각각 Base64로 인코딩 되어 있다. 1. header header는 아래의 json과 같이 토큰의 타입(ex) jwt)과 해싱 알고리즘(ex) HS256) 을 지정한다. 해싱 알고리즘으로는 시크릿 키를 사용하는 HS256과 공개키/개인키를 사용하는 RSA 가 있는데, 주로 HS256 방식을 사용한다. { "alg": "HS256", "typ": "JWT" } 2. Payload payload은 클레임(정보)을 담는 부분으로, 아래와 같이 세가지 종류의 클레임이 있다. Regi..
개요 로컬에서 개발할 때 h2 In-Memory DB를 사용하던 중, h2.console.enabled 설정을 true로 하고 애플리케이션을 기동시켰는데 애플리케이션 기동이 안되고 오류가 발생했다. 📍 오류 내용 This is because there is more than one mappable servlet in your servlet context: {org.h2.server.web.JakartaWebServlet=[/h2-console/*], org.springframework.web.servlet.DispatcherServlet=[/]}. This method cannot decide whether these patterns are Spring MVC patterns or not. If this..
· Study/Test
TDD(Test Driven Development)란 ? TDD란 “테스트 주도 개발” 이라는 뜻으로, 프로덕션 코드보다 테스트 코드를 먼저 작성해서 테스트가 구현 과정을 주도하는 개발 방법론이다. TDD 과정 (RED-GREEN-REFACTOR) TDD는 아래와 같은 RED - GREEN - REFACTOR 과정을 거치며 프로덕션 코드를 완성해간다. 1단계 : RED 기능을 구현하기 전 테스트 코드를 먼저 작성하고, 테스트를 실행시켜 실패하는 과정을 겪는다. 📌 예시 아래의 코드는 TDD의 RED 과정의 예시로, 음료의 총 금액을 구하는 calculateTotalPrice 메소드의 단위 테스트 코드이다. 현재 calculateTotalPrice 메소드는 구현되지 않았고, 테스트 코드만 작성해놓은 상태이..
jonghne
Jong's blog