반응형

전체 글 271

프로세스와 스레드

프로세스프로세스는 실행 중인 프로그램을 의미한다. 하나의 프로세스는 프로그램의 인스턴스이며, 독립된 메모리 공간(가상 메모리)을 가지고 있다. 각 프로세스는 자체 메모리 공간에서 실행되며, 다른 프로세스와 메모리 공간을 공유하지 않는다. 따라서 프로세스 간에는 서로의 메모리에 직접 접근할 수 없고, 서로 데이터를 주고받기 위해서는 특정 통신 방법(예:파이프, 파일, 소켓)을 사용해야 한다.   프로세스의 메모리 구성 코드 섹션: 실행할 프로그램의 코드가 저장되는 부분데이터 섹션: 전역 변수 및 정적 변수가 저장되는 부분(그림에서 기타에 포함) 힙 (Heap): 동적으로 할당되는 메모리 영역스택 (Stack): 메서드(함수) 호출 시 생성되는 지역 변수와 반환 주소가 저장되는 영역(스레드에 포함)  스레드..

카테고리 없음 2024.08.03

멀티태스킹과 멀티프로세싱

멀티태스킹과 멀티프로세싱멀티스레드에 대해서 제대로 이해하려면 먼저 멀티태스킹과 프로레스 같은 운영체제의 기념 개념들에 대해서 알아야한다. 멀티스레드를 이해하기 위한 목적으로 최대한 단순한 핵심만 알아보자.  단일 프로그램 실행만약 프로그램을 2개 이상 동시에 실행한다고 가정했을때. 예를 들어서 음악 프로그램을 통해 음악을 들으면서, 동시에 워드 프로그램을 통해 문서를 작성하는 것이다. 여기서 연산을 처리할 수 있는 CPU 코어가 1개만 있다고 가정 해보자 위의 그림 처럼 프로그램의 실행이란 프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)하는 일이다. CPU코어는 하나로 가정하므로, 한 번에 하나의 프로그램 코드만 실행할 수 있다. 이때, 하나의 프로그램 안에 있는 코드를 모두 후에야 다른 프로..

카테고리 없음 2024.08.03

스택/ 큐 - 같은 숫자는 싫어

이번 문제는 배열에 숫자를 넣고 연속적인 숫자를 제거하고 남은 수의 배열의 길이가 어떻게 되는지 확인하는 문제이다. 앞의 원소와 비교하기 위한 num을 선언하고 원소가 0 ~ 9 까지 라고 하였을때 영향을 받지 않도록 초기값은 -1로 서언 해준다. import java.util.ArrayList;public class Solution { public int[] solution(int []arr) { int[] answer = {}; ArrayList arrList = new ArrayList(); int num = -1; for(int i = 0; i  코드 분석  for(int i = 0; i for문에서 처음에는 nu..

카테고리 없음 2024.07.30

실전 자바 - 고급

이 강의에서는 멀티스레드와 동시성 기본부터 실무에서 사용하는거 까지 완전 정복하는것이 목표이다. 1. CS이론 : 프레스와 스레드 / 멀티태스킹 / 스케줄링 -> 기본 이론 다지기 2. 스레드의 기본기 : - 스레드 제어와 생명주기 / 메모리 가시성과 메모리 장벽이 어떤 원리로 해결하는지  - 여러스레드가 같은 자원을 사용하여 발생하는 동시성 문제가 무엇이고 이 문제를 자바의 동기화 기법으로 어떻게 해결        하는지 - 동시성 문제를 해결하는 더 나은 방안들과 고급 동기화 기법  - 복잡한 스레드를 최대한 쉽게 이해할수 있도록 다양한 그림과 예제 코드를 제공 3. 스레드의 고급 기술 - 스레드를 활용할때 반드시 이해해야하는 생산자 소비자 문제 알아보기  - CAS 가 무엇이고 어떻게 활용하는지 알..

카테고리 없음 2024.07.27

깊이 우선 탐색 (DFS) / 너비 우선 탐색 (BFS)

깊이 우선 탐색 (DFS) 와 너비 우선 탐색(BFS) 는 언제 사용하는지 알아보았다. DFS 와 BFS는 그래프 검색할때 자주 사용한다. 그렇다면 그래프는 무엇일까?  그래프란? 그래프는 노드와 그 노드를 연결하는 간성르 하나로 모아 놓은 것이다. 방향성이 있을수도 있고 없을수도 있다.  무방향 그래프방향성이 없는 그래프를 무방향 그래프라 한다. 방향 그래프무방향 그래프에서 간선에 방향 정포가 포함된 그래프를 방향 그래프라 한다 완전 그래프각각의 장점에서 다른 모든 장점을 연결한 그래프를 완전 그래프라 한다  그래프를 표현하는 방법1. 인접행렬     - 2차원 배열에 표현하는 방법    - 그래프를 표에다 표현하는 방법    - 서로 연결된 노드들은 1로 표현하고 연결이 업으면 0으로 2차원 배열방을..

카테고리 없음 2024.07.27

Quere 자료구조에서 add 와 offer의차이

Queue 인터페이스를 사용하는 도중 add와 offer는 같은 동작을 하는 것 같은데, 왜 분리되어 있을까? 어떤 차이가 있을까? 라는 생각이 들어 이번에 알아 보았다. public interface Queue extends Collection { boolean add(E var1); @Contract(mutates = "this") boolean offer(E var1);} 소스를 보면 둘다 boolean 으로 반환한다. 보통 Queue는 LinkedList 자료구조를 활용하기 때문에 LinkedList에서는 어떻게 구현하고 있는지 확인 해보자. public boolean add(E e) { this.linkLast(e); return true;}public boolean..

카테고리 없음 2024.07.26

정렬 - 가장 큰 수

이 문제는 숫자를 이어 붙였을 때의 크기를 비교하여 정렬하는 문제이다. 각 숫자를 문자열로 변환한 후, 두 문자열을 이어 붙였을 때의 크기를 비교하여 정렬할 수 있다. public class Solution { public String solution(int[] numbers) { // 숫자를 문자열로 변환 String[] numStrs = new String[numbers.length]; for (int i = 0; i () { @Override public int compare(String a, String b) { // 두 문자열을 이어 붙여 비교 return (b..

카테고리 없음 2024.07.24

스택/큐 다리를 지나는 트럭

import java.util.LinkedList;import java.util.Queue;class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { Queue bridge = new LinkedList(); int time = 0; int total = 0; int index = 0; for (int i = 0; i  이 문제는 트럭들이 다리를 건너는 문제로 해당 조건에 맞춰야한다. 1.  다리의 길이(bridge_length) 만큼 트럭들이 다리를 건너야 한다.2. 다리가 견딜 수 있는 최대 무게(weight)를 초과하지 않도록 트..

카테고리 없음 2024.07.19
반응형