일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준 파이썬
- 하둡
- http 완벽가이드
- domain driven develop
- golang
- 백준 12761
- flask
- 도메인 주도 개발 시작하기
- 정렬
- 도메인 주도 개발
- 자바 디자인패턴
- hadoop
- 백준 12761번
- golang struct
- 12761 돌다리
- 백준 사이트
- ddd
- String 함수
- 트리 순회
- http 개념
- 우분투
- 고 배열
- 자바 디자인 패턴
- 몽고디비 렘
- MongoDB Realm
- 백준
- go
- 파이썬
- 12761번 돌다리
- 자바
- Today
- Total
목록전체 글 (211)
개발바닥
cout.precision()은 사실 소수점 아래 부분의 출력 범위만 설정하는 게 아니고 실수의 정수부와 소수부를 합친, 전체의 출력 범위를 설정하는 함수 입니다. cout
세마포어와 뮤텍스를 알아보기 전에 어떤 상황에 필요한지에 대해서 알아보겠습니다. 동시성 프로그래밍의 가장 큰 숙제는 "공유자원 관리" 일 것입니다. 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것을 안전하게 관리하기 위해서는 상호배제를 달성하는 기법이 필요한데 세마포어와 뮤텍스가 이를 위해 고안된 기법으로 서로 다른 방식으로 상호배제를 달성합니다. 용어에 대해서 알아보겠습니다. 용어 설명 병행 프로세스 (Concurrent Process) 두 개 이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미한다. 여러 프로세스들이 독립적으로 실행되는 것을 독립적 병행 프로세서라 하고 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스라고 한다. 임계구역 (Critical ..
동시성 제어( Concurrency Control ) 란? 동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다. 동시성 제어의 정의 다중 사용자 환경을 지원하는 데이터 베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능 다중 사용자 환경을 지원하는 DB system의 경우 필수적으로 지원해야 하는 기능으로 병행제어라고도 한다. 트랜잭션의 직렬화 수행 보장 동시성 제어의 목적 트랜잭션의 직렬성 보장 공유도 최대, 응답 시간 최소, 시스템 활동의 최대 보장 데이터의 무결성 및 일관성 보장 동시성 제어 기법의 종류 제어 기법 설명 락킹(locking) - 트랜잭션이 데이터에 잠금(lock)을 설정하면 다른 트랜잭션은..
트랜잭션이란? 데이터베이스의 DML(Data Manipulation Language), 즉 삽입(INSERT), 갱신(UPDATE), 삭제(DELETE)와 관련된 논리적인 작업을 말하며, DML 실행과 동시성 제어를 위한 중요한 개념이다. 관계형 데이터베이스 시스템은 데이터를 처리할 때 트랜잭션을 통해 정상 종료나 사용자 프로세스 실패나 시스템 실패와 같은 비정상 종료에 대해 데이터의 신뢰성과 일관성을 보장한다. 즉, 데이터베이스의 데이터 무결성이 보장되는 상태에서 DML 작업을 완수하기 위한 기본 작업 단위이다. 일반적으로 DML 실행과 실행에 대한 커밋/롤백 단계까지를 트랜잭션이라고 부르지만, 실무에서는 데이터베이스에서 SELECT 문으로 데이터를 조회하고 DML을 실행하여 종료하는 과정까지를 트랜잭..
문제 https://www.acmicpc.net/problem/17608 문제 해결 방법 벡터 배열에 저장한 후 뒤에서 앞으로 탐색을 시작하면서 현재 들고 있는 막대기와 탐색하는 막대기를 비교해서 탐색하는 막대기가 더 크다면 들고 있는 막대기 값을 변경시켜준다. 바꿀 때 마다 카운트를 해서 결과값을 출력하면 된다. 실패한 방법 단순히 맨 끝에 막대기보다 큰 값인 막대기들 개수를 출력하는 줄 알고 코드를 구현했다가 틀렸다. 소스 코드 https://github.com/jokerKwu/BOJ_Algorithm/blob/master/Simulation/boj_17608.cpp
문제 https://www.acmicpc.net/problem/17609 문제 해결 방법 앞 뒤로 같은지 체크하면서 다르다면 1. 앞 쪽을 한개 지우고 진행해본다. 2. 뒤 쪽을 한개 지우고 진행해본다. 3. 둘다 유사한 회문이 될 수 없다면 2를 저장한다. 실패한 방법 앞 쪽을 제거하고 제거한 다음 부분이 같다면 뒤 쪽을 지우는 경우의 수를 체크안해서 실패했다. 반례로 baaba 앞이랑 뒤가 다르기 때문에 앞쪽을 제거하게 되면 aaba로 앞 뒤가 같아지게 된다. 하지만 다음 ab에서 다르기때문에 2를 저장한다. 뒤쪽을 제거하게 되면 baab 로 유사한 회문이 되지만, 이 부분을 놓쳐서 실패를 계속했다. 소스 코드 https://github.com/jokerKwu/BOJ_Algorithm/blob/mas..
문제 https://www.acmicpc.net/problem/17610 문제 해결 방법 모든 경우의 수 체크해서 문제를 해결하였습니다. 왼쪽 , 오른쪽 들고 있을 수 있는 경우의 수를 모두 구한 후 2중 포문을 통해서 모든 경우의 수를 확인 하였습니다. for ( 왼쪽이 추를 들고 있는 경우의 수 ) for ( 오른쪽이 추를 들고 있는 경우의 수 ) 인덱스 값 = 왼쪽 값 - 오른쪽 값 체크 변수에 인덱스 값을 true로 변경 한다. 주의할점 저는 최대 나올 수 있는 크기 20만 * 13 을 계산해서 260만 메모리 크기로 변수를 선언했지만, 계속 런타임 에러 ( 잘못된 메모리 주소를 참조해서 발생하는 에러 )가 발생해서 메모리 크기를 2600002로 변경해주었더니 통과 되었습니다. 소스 코드 http..
파이프라이닝이란? 명령어를 순차적으로 실행하는 프로세서에 적용되는 기술로, 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어를 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법이다. 이렇게 동시에 여러 개의 명령어를 처리하므로써 처리량을 올리는 것이 파이프라이닝의 핵심이다. 모든 단계는 원래의 동작 속도대로 일을 하면서 처리량을 늘리는 것이지 원래의 동작 속도를 단축시키는 것은 아니다. 아래 그림을 통해서 확인해보겠습니다. 세탁소에서 다음과 같은 순서로 일을 한다고 가정해 보겠습니다. 과정 1: 빨래를 세탁기에 넣는다. 과정 2: 세탁기를 동작시킨다. 과정 3: 건조기를 동작시킨다. 과정 4: 빨래를 갠다. 순차적 처리 세탁물 1,2,3에 대해서 동..