분류 전체보기 140

[Spring] 예외(Exception) 처리

토비의 스프링 4장: 예외 예외의 종류와 처리 기법 자바 개발을 하다보면 예외처리가 필요할 때가 있다. 여기서는 발생할 수 있는 예외 종류들과 처리 기법에 대해 알아보자. 예외 종류 (1) Error : 시스템의 비정상적인 에러가 발생한 경우로, 주보 VM에서 발생하기 대문에 애플리케이션 코드에서는 잡을 수 없다. (ex- OutOfMemoryError, ThreadDeath... ) (2) Exception : 애플리케이션 코드의 작업중에서 예외사항이 발생한 경우이다. -> 체크예외 일반적인 예외들이 여기에 포함된다. 자바에서 필수적으로 체크(try-catch)하도록 강요하는 예외들이다. -> 언체크예외 주로 개발자가 부주의하면 발생할 수 있는 예외들로, 체크가 필수적이진 않다. RuntimeExcep..

인터넷익스플로어와 크롬에서 멀티탭 기능 구현 차이

멀티태스킹, 멀티스레드를 공부하다가 인터넷익스플로어(Internet Explorer) 브라우저와 크롬(Chrome) 브라우저에서 멀티탭을 구현한 방식에 차이가 있다는 흥미로운 주제를 발견했다. 두 브라우저에서 멀티탭 구현방식의 차이와 각각의 특징에 대해서 알아보자. 인터넷익스플로어 (Internet Explorer) 크롬 (Chrome) 멀티스레드 멀티태스킹 (장점) 메모리에는 하나의 프로세스로 존재하기 때문에 작업이나 자원 활용의 효율성이 좋다. (장점) 각 프로세스는 독립적이기 때문에, 한 프로세스에서 문제가 발생해도 다른 프로세스에 전달되지 않는다. 즉, 한 화면에 문제가 생겨서 종료해도 다른 크롬 화면에 미치는 영향이 적다. (단점) 모든 스레드는 자원을 공유하기 때문에 한 스레드에 문제가 생기면..

CS/OS 2021.08.07

[OS] 멀티태스킹, 멀티프로세싱, 멀티스레드

멀티태스킹, 멀티프로세싱, 멀티스레드 각각의 특징과 차이에 대해 알아보자. 이를 이해하기 위해서는 먼저 프로세스, 스레드 그리고 병렬처리에 대한 개념을 알고 있어야한다. 프로세스(Process)란, 저장장치의 프로그램을 실행하어 메모리에 load 되어진 상태이다. 프로세스 = 프로그램 + 프로세스제어블록(PCB) 스레드(Thread)란, 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다. 즉, 작은 단위의 일(Operation)이 모여 하나의 작업(Task)이 될 때, 이 작은 단위의 일을 수행하는 것을 스레드라고 할 수 있다. JOB > TASK > OPERATION == 작업 > 프로세스 > 스레드 병렬처리(Parallel Processing) 동시에 여러 명령을 수행하여..

CS/OS 2021.08.07

[OS] 인터럽트(Interrupt)란?

초기 컴퓨터 시스템은 CPU 작업 중 입출력장치에 데이터를 통신할 일이 생기면 이를 직접 수행하는 폴링(Polling) 방식이었다. 이 때, CPU에서 입출력에 관여하는데 시간이 소요된다는 시간문제가 있었는데 이를 해결하기 위해 등장한 것이 바로 인터럽트(Interrupt)방식이다. 기존의 폴링 방식때에는 CPU만이 메모리나 주변장치에 대한 권한을 가지고 있었는데, 인터럽트 방식에서는 이 권한을 입출력 관리자에게 부여하고, CPU는 본래 역할(명령어 해석, 실행)에 충실하여 작업의 효율을 높혔다. 이 때, 입출력 관리자에게 부여한 권한을 직접 메모리 접근(DMA)라고 한다. 인터럽트 동작과정 (1) CPU에서 프로세스 실행중 I/O요청 발생시 해당 프로세스를 대기 상태로 변경. 다음 프로세스 수행 (2)..

CS/OS 2021.08.07

[Python][백준] 2468_안전 영역

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 더보기 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 ..

[Python][백준] 1912_연속합

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 더보기 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이..

[Python][백준] 2579_계단 오르기

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 더보기 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규..

[Spring] 템플릿/콜백 패턴 (Template/Callback Pattern)

토비의 스프링 3장: 템플릿 템플릿/콜백 패턴 (Template/Callback Pattern) 앞에서 살펴본 전략패턴(Strategy Pattern)의 기본 구조에서 익명의 내부 클래스를 활용한 방식을 스프링에서는 템플릿/콜백 패턴이라고 한다. 전략패턴과는 다르게 보통 단일 메소드 인터페이스를 사용한다. 먼저 각각의 용어들을 살펴보자. o 템플릿(Template) : 만들어져 있는 틀을 템플릿이라고 하는데, 프로그래밍에서는 고정된 틀 안에 변경되는 부분을 넣어 사용하는 것을 말한다. o 콜백(Callback) : 다른 오브젝트에서 메소드로 사용되기 위해 전달되는 오브젝트를 말한다. 자바에서는 메소드를 파라미터로 전달하는 방법이 없기 때문에 메소드를 담은 오브젝트를 전달하는 것이다. (= function..

[Spring] 전략패턴(Strategy Pattern)

토비의 스프링 3장: 템플릿 전략패턴(Strategy Pattern) 이란 분리와 재사용을 위한 디자인 패턴 간단한 예제로 숫자 5개를 입력받아 덧셈, 뺄셈 결과를 출력하는 코드이다. 빨간색 박스 부분을 제외하고는 메소드마다 동일한 코드가 반복되고 있다. 이런 메소드가 여럿 있을 때, 매번 이전 코드를 Copy&Paste하면서 변하는 부분의 코드만 수정하는 방식으로 구현한다면? 공통된 구조에 수정이 생길 경우에 메소드의 갯수만큼 코드를 수정해줘야 하는 비효율성이 발생한다. 이런 경우에 메소드에서 변하지 않는 부분(Context)과 변하는 부분(Strategy)을 분리하여 변하지 않는 부분은 재사용하고, 변하는 부분의 코드만 목적에 따라 주입시켜주는 것이 바로 전략패턴이라고 할 수 있다. 이는 일정한 구조..

[OS] 프로세스의 통신 (IPC: Inter-Process Communication)

프로세스는 실행되면서 다른 프로세스에 독립적(independent) OR 협력적(cooperating)이다. 여러 프로세스가 서로 협력적인 관계일 때는 프로세스간에 데이터를 공유하게 되는데, 이 때의 통신을 IPC (Inter-Process Communication) 이라고 한다. 즉, IPC란 프로세스간에 데이터를 주고(send) 받는(receive)것을 말한다. 특정 A프로세스에서 생산하면 (Producer) 이를 B프로세스에서 소비하는 (Consumer) 협동적인 프로세스간 구조에서의 데이터 통신 방법 2가지를 알아보자. IPC 통신방법 1) 공유메모리 사용 (Shared Memory) : memory 내부에 여러 프로세스에서 접근할 수 있는 공유메모리에 buffer를 만들어 생산자(Producer..

CS/OS 2021.07.29