* 204 상태코드1. 200와의 차이- 204는 No Content, HttpResponsebody가 아예 존재하지 않음- 200은 HttpResponsebody에 null, false 등으로 응답 2. 왜 굳이 204를 사용할까?- 삭제 요청으로 자원을 삭제하여 더 이상 존재하지 않고 그 자원을 참조하는 모든 자원도 삭제되어 더 이상 http body를 응답하는 것이 무의미해졌을 때 사용.- 본문 없는 응답을 위한 상태코드로 서버에서 잘못되게 본문을 포함한 응답을 전달한 경우 존재할 수 있다. https://velog.io/@server30sopt/204-NOCONTENT%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94 204 NO_..
[src/ 폴더구조]app/: 어플케이션을 구성하는 컴포넌트들 보관assets/: 이미지 등 어플리케이션 제작에 필요한 부수기재 저장 창고favicon.ico: 파비콘 이미지index.html: 메인 htmlmain.ts: 작성된 html 파일을 변환하는 entry point.style.css: 공통 스타일package.json: 의존 모듈 관리를 위한 패키지 매니저가 참조하는 파일node_modules: package.json에 등록된 의존 모듈이 패키지 매니저에 의해 설치되는 저장소 [app/ 폴더구조]app.component.ts: 로직 담당app.component.html: html 템플릿app.component.css: 스타일app.module.ts: 컴포넌트, 서비스 등을 사용하기 위해 등록하..
1. 정의개발한 Rest API를 편리하게 문서화, 제3의 사용자가 편리하게 API를 호출하고 테스트 할 수 있는 프로젝트개발자가 API 문서를 작성하지 않아도 되므로 개발 시간을 단축할 수 있고 Swagger UI로 API를 쉽게 테스트 할 수 있다. 2. 어노테이션@Api: 클래스를 스웨거의 리소스로 표시@ApiOperation: 특정 경로의 오퍼레이션 http 메소드 설명@ApiParam: 오퍼레이션 파라미터에 메타 데이터 설명@ApiResponse: 오퍼레이션의 응답 지정 3. angular3-1. 정의규모가 크거나 다양한 기능이 요구되는 프로젝트라면 Angular나 Vue를 사용하는 것이 좋다. Angular는 양방향 바인딩 개념을 사용하여 데이터 값이 한쪽에서 변화하면 다른쪽에서도 바로 업데이..
1. 정의Vercel에서 개발한 React Framework, SSR, CSR, API 라우팅 등의 다양한 최적화 기능 제공.React의 기본 기능을 확장해 보다 빠르고 안정적으로 웹 애플리케이션을 개발. 2. 설치npx create-next-app@latest [프로젝트 이름]- 타입스크립트 사용 여부- ESLint 사용 여부- Tailwind CSS 사용 여부- src/ 디렉토리 사용 여부- App Router 사용 여부 => 13 이상부터 사용할 수 있게 된 방식으로 추천!- 별칭 사용 여부 3. 컴포넌트Server와 Client를 구분해서 사용서버 컴포넌트는 보안/캐싱/성능/SEO 등의 이점클라이언트 컴포넌트에서는 click/load/이벤트/브라우저 api 활용 등의 이점 4. 라우팅파일 규칙la..
스레드 생성 전에는 프로세스가 작동하기 위한 최소한의 스레드 하나가 있어야 한다. 그래서 자바는 실행 시점에 main 이라는 이름의 스레드를 만들고 프로그램 시작점인 main 메서드를 실행한다. 스레드 생성 후를 보면 스레드 객체를 생성하고 start 메서드를 호출했을 때 자바는 스레드를 위한 별도의 스택 공간을 할당하게 된다. 새로운 스레드가 사용할 전용 스택 공간에 run 메서드의 스택 프레임을 스택에 올리면서 run 메서드를 시작한다. 메서드를 실행하면 스택 위해 스택 프레임이 쌓이게 되는 것이다. 스레드 간 실행 순서는 보장하지 않는다. 스레드는 동시에 실행되기 때문이다. * start() 메서드- 스택 공간을 할당하면서 스레드를 시작하는 아주 특별한 메서드로 run 메서드를 실행한다.- ma..
* 멀티태스킹- 단일 CPU가 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것- 소프트웨어 기반으로 cpu 시간을 분할하여 각 작업에 할당- ex) 여러 애플리케이션이 동시에 실행되는 환경 * 스케줄링- cpu에 어떤 프로그램이 얼마만큼 실행될지 운영체제가 결정하는 것- 이때 단순 시간이 아닌 우선순위와 최적화 기법을 사용한다. * 멀티프로세싱- 여러 CPU코어(프로세서)를 사용하여 동시에 여러 작업을 수행- 하드웨어 기반으로 성능 향상- ex) 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템 * 프로세스- 운영체제 안에서 실행중인 프로그램의 인스턴스- 각 프로세스는 독립적인 메모리 공간을 갖고 운영체제에서 별도의 작업 단위로 분리해서 관리된다.- 프로세스가 서로의 메모리에 직접 접근할 수 없다. ..
* 요구사항1Client는 Server에 등록 할 수 있어야 한다. (식별가능 ID)2Client사이에는 1:1 또는 1:N으로 Chatting이 가능해야 한다.3Client는 귓속말이 가능해야 한다.4Client는 대화창으로 대화를 해야 한다.5Server는 Client를 등록하고 관리 할 수 있어야 한다. Server가 접속한 Client 상태를 전송할 수 있어야 한다. * Client-Server 채팅 프로그램 흐름Client의 연결 요청 => 미리 실행되어서 ServerSocket을 생성하고 accept()로 클라이언트의 요청을 기다리고 있던 Server는 연결 요청을 승인한다. => 연결 되는 순간 Socket 객체가 생성되어 Client-Server간 데이터를 주고받을 수 있는 상태가 되었고,..