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간 데이터를 주고받을 수 있는 상태가 되었고,..
7. SQL 응용 1) 데이터베이스 기본 * 트랜잭션 특성 - 원자성 (Atomicity): 트랜잭션 연산 전체가 성공 또는 실패되어야 하는 성질(All or Nothing) - 일관성 (Consistency): 트랜잭션 수행 전과 완료 후 상태가 같아야 하는 성질 - 격리성(Isolcation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 하는 성질 - 영속성(Durability): 성공 완료인 트랜잭션은 영속적으로 DB에 저장되어야 하는 성질 * 트랜잭션 상태 - 활동: 초기, 트랜잭션 실행 중 - 부분 완료: 마지막 명령문 실행 후 - 완료: 트랜잭션 완료 - 실패: 정상 실행이 될 수 없는 - 철회: 트랜잭션 취소 및 시작 전 상태로 환원 * 병행 제어 미보장 시 문제점 - 갱신 손실..

1. 현재 자바 버전 확인 java -version 2. 다운받은 자바 버전 목록 확인 /usr/libexec/java_home -V 3. 환경변수 for zshrc vi ~/.zshrc //i: insert export JAVA_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home" export PATH=${PATH}:$JAVA_HOME/bin //esc, :wq //bash_profile export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_292) source ~/.bash_profile 4. 변경된 자바 버전 확인 //변경내용 적용 source ~/.zshrc //자바 버전 확인 ja..

Docker 개념 Docker는 Linux Container에 Linux Application을 프로세스 격리기술을 사용해 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트이다. Docker Engine은 컨테이너를 생성하고 관리하는 주체로서 이 자체로 컨테이너를 제어할 수 있고 다양한 기능을 제공한다. Virtual Machine과 Docker Container의 차이 기존에도 가상화 기술이 있었지만 도커가 이와 어떤 차이가 있는지 알아보자. Virtual Machine 기존의 가상화 기술인 가상머신은 하이퍼바이저를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식으로 여러 개의 운영체제는 Guest OS라고 하며 각 Guest OS는 완전히 독립된 공간과 시스템 ..

1. 메서드 오버라이딩 package poly.overriding; public class Parent { public String value = "parent"; public void method() { System.out.println("Parent.method"); } } package poly.overriding; public class Child extends Parent { public String value = "child"; @Override public void method() { System.out.println("Child.method"); } } => Child에서 Parent의 메서드를 오버라이딩 하였다. package poly.overriding; public class Over..