반응형

CS 21

병렬성(Parallelism)과 동시성(Concurrent)

1. 병렬성(Parallelism)한 개의 코어(CPU)에는 한 개의 Thread가 실행된다.동시성의 하위 개념으로 운영체제에서 여러 CPU에 Thread를 적절히 분배하여 동시적으로 실행한다.   2. 동시성(Concurrent) CPU가 한번에 많은 작업을 처리한다. 즉, 하나의 CPU가 여러 Thread를 교체하며 조금씩 작업을 처리한다.동시성은 작업을 빠르게 처리하는 게 목적이 아닌 CPU를 효율적으로 사용하는 것에 중점을 둔다.CPU의 코어 개수보다 Thread의 개수 많을 경우만 해당된다.  3. ThreadPoolExecutor병렬성으로 처리 성능을 극대화하고, 동시성으로 CPU 자원을 효율적으로 운용한다. @Testpublic void test() { // CPU 코어 개수 in..

CS 2024.09.13

Thread 구조 및 특징(Process와의 차이)

선행 학습2023.01.13 - [CS] - 프로세스 메모리(스택, 힙, 데이터 영역, 코드 영역) 구조 개념 및 특징  Thread란? 프로세스가 운영체제로부터 할당받은 자원을 이용하는 실행 단위 또는 흐름의 단위로 하나의 프로세스에는 반드시 하나 이상의 스레드를 갖는다. 각각의 스레드는 독립적인 Stack 영역은 할당받지만, 프로세스가 가지고 있는 Heap, Data, Code 영역은 공유한다.  Process vs Thread  Process 여러 개의 프로세스 중에 하나가 문제가 발생해도 다른 프로세스에 영향을 미치지 않는다. (안전성)프로세스 간 전환(Context Switch) 시 레지스터, 캐시 메모리 초기화 등 무거운 작업으로 시간과 비용이 발생한다.프로세스 간 통신 하기 위한 방법이 복잔..

CS 2024.09.10

프로그램과 통신에서의 동기 비동기 차이 및 개념

1. 프로그램 1-1) 동기(Synchronous) - 순차 작업 작업이 순차적으로 진행되는 방식으로 한 작업이 다른 작업을 호출하면, 호출된 작업이 완료될 때까지 대기하고 기린다. 이 때문에 작업의 순서와 진행 상태를 예측하기 쉽다. 예를 들어, 함수 A가 함수 B를 호출하고, 함수 B의 결과를 반환할 때까지 함수 A는 대기합니다. 이는 호출된 함수가 실행을 완료할 때까지 제어를 넘기지 않는 것을 의미합니다. 1-2) 비동기(Asynchronous) - 병렬 작업 작업이 순차적으로 진행되지 않고, 작업이 백그라운드에서 병렬로 실행된다. 한 작업이 다른 작업을 호출하면, 호출된 작업이 완료될 때까지 대기하지 않고 즉시 다음 작업을 실행합니다. 예를 들어, 함수 A가 함수 B를 호출하고, 함수 B의 결과를..

CS 2024.02.10

[네트워크] 공인 IP와 사설 IP 개념

1. 공인 IP 공인 IP 주소는 인터넷을 통해 직접 통신할 수 있는 고유한 주소로 인터넷 제공업체로부터 부여받게 된다. 1. 고유한 식별자로, 인터넷 상에서 전 세계적으로 유일 2. 인터넷 서비스 제공업체(ISP)가 부여하며, 각 기기가 직접 인터넷에 접속 가능 3. 공개되어 다른 네트워크나 장치에서 접근 가능 1-1) 공인 IP? 공유 IP? 공인 IP와 공유 IP는 개념은 다르지만, 결국 둘 다 인터넷상에서 직접 접근 가능한 주소로, 기본적으로는 공인 IP 주소를 가리키는 개념이다. 공인 IP 주소: 인터넷 상에서 고유하게 식별되며, 직접 인터넷에 접근할 수 있는 IP 주소 공유 IP 주소: 여러 기기가 공용으로 사용하는 IP 주소로, 일반적으로 공유기를 통해 여러 기기의 사설 IP 주소를 변환하여..

CS 2023.12.19

Monolith vs Microservice와 MSA 개념 및 특징

Monolith Architecture란? 모든 요소를 하나의 커다란 소프트웨어에 포함하여 개발하는 방법으로, 데이터베이스 로직, 비즈니스 로직, 그리고 프런트엔드 처리까지 모두 단일한 애플리케이션으로 구성되어 작동하고, 이를 패키징하여 서버에 배포하는 방식을 의미합니다. Microservice Architecture란? 애플리케이션을 작은, 독립적인 서비스로 분리하여 개발하고 운용하는 방법으로, 전체 애플리케이션을 여러 개의 작은 마이크로서비스로 분리하고 각 마이크로서비스는 자체적인 비즈니스 로직을 갖고 있으며, 독립적으로 개발, 배포, 확장이 가능하다. 이러한 마이크로서비스는 서로 네트워크를 통해 통신하며, 작은 서비스들이 모여 전체 애플리케이션을 구성하게 된다. 1. Monolith Architec..

CS 2023.07.20

JAR WAR 배포 차이점과 장단점

JAR(Java ARchive)와 WAR(Web ARchive)은 Java 애플리케이션을 패키징하는 방식이다. 1. JAR(Java ARchive) 파일 1-1) 장점 독립적인 Java 애플리케이션을 패키징할 수 있고, 실행 가능한 JAR 파일로 만들어서 개발자가 쉽게 애플리케이션을 실행할 수 있다. 압축된 형식으로 클래스, 리소스, 라이브러리 등을 포함하므로 배포와 전달이 용이하다. Java 애플리케이션의 진입점인 main 메서드를 포함하고 있어 JVM에서 직접 실행하기 때문에 별도의 웹 컨테이너나 서버가 필요하지 않다. 1-2) 단점 웹 애플리케이션을 개발할 때는 WAR 파일에 비해 제약사항이 있다. 예를 들어, JSP나 서블릿 컨테이너에 대한 표준 기능을 활용하기 어렵다. 웹 애플리케이션에서 동적인..

CS 2023.06.24

[Git] Git에 폴더 업로드 방법

1. Git 레포지터리 생성 생성 후 Git 주소 복사 2. Git Bash 명령 프롬프트 열기 업로드하고 싶은 최상위 폴더에서 마우스 우측 클릭 후 Git Bash 창을 연다. 3. 폴더 업로드 순서 : 초기화 => 파일 스테이징 => 커밋 => 저장소 연결 => 푸시 3-1) Git 저장소 초기화 Git 저장소를 초기화하고, 해당 폴더를 Git 저장소로 변환한다. $ git init 3-2) 파일 스테이징 업로드할 파일을 스테이징 영역에 추가하게 된다. 폴더의 모든 파일을 추가할 경우 A 옵션을 추가한다. $ git add -A 3-3) 커밋 스테이징 영역에 추가한 파일을 커밋하여 Git 저장소에 저장한다. $ git commit -m "커밋 메시지" 3-4) 원격 저장소 연결 업로드할 폴더를 원격 ..

CS 2023.06.07

[Java] 데이터 전달 Map과 DTO 장단점

데이터를 전달, 저장하기 위해서 Map나 DTO를 사용하게 된다. 1. Map의 장단점 1-1) 장점 유연성: Map은 동적으로 필드를 추가하거나 제거할 수 있기 때문에 데이터 구조가 유연합니다. 필요한 데이터만을 담을 수 있어서 데이터 모델이 유동적인 경우에 유용합니다. 간결성: 데이터를 키-값 쌍으로 저장하기 때문에 구조가 간단하고 직관적입니다. 작은 규모의 데이터를 다룰 때 간편하게 사용할 수 있습니다. 빠른 프로토타이핑: Map을 사용하면 데이터를 빠르게 구성할 수 있어 프로토타이핑 과정에서 효과적입니다. 1-2) 단점 타입 안정성 부족: Map은 동적으로 필드를 추가하거나 제거할 수 있어서 컴파일 시점에 타입 검사가 이루어지지 않습니다. 따라서, 잘못된 키나 타입을 사용할 수 있어 런타임 오류의..

CS 2023.06.01

오버로딩(Overloading)과 오버라이딩(Overriding)이란?

오버로딩(Overloading) 오버로딩(overloading)이란? 같은 이름을 가진 메서드를 여러 개 두는 것을 말한다. 메서드의 타입, 매개변수의 유형, 개수 등으로 여러개를 둘 수 있으며 컴파일 중에 발생하는 정적 다향성이다. 1. Java 오버로딩 예 class Person { public void eat(String a) { System.out.println(" I eat "+ a); } public void eat(String a, String b ) { System.out.println(" I eat "+ a + " and " + b); } } public class CalculateArea { public static void main(String[] args) { Person a = n..

CS 2023.02.01
반응형