We will find a way, we always have.

-interstellar

전체 글 256

[DB] 트랜잭션

트랜잭션 이해 트랜잭션 - 개념 이해 트랜잭션은 데이터베이스의 작업 단위이다. ACID 트랜잭션이 안전하게 수행된다는 것을 보장하기 위해서는 ACID가 만족해야 한다. Atomicity(원자성): 설정된 트랜잭션 범위 안의 내용들이 마치 하나의 작업처럼 모두 성공하거나 모두 실패해야 한다. Consistency(일관성): 모든 트랜잭션은 일관성 있는 DB 상태를 유지해야 한다. 트랜잭션은 DB에서 정한 무결성 제약 조건을 항상 만족해야 한다. Isolation(독립성): 여러 트랜잭션이 있을 때, 각각의 트랜잭션은 다른 트랜잭션의 연산에 끼어들지 못하고 독립적이다. Durability(영구성): 트랜잭션이 성공했다면 그 결과가 항상 기록되어야 한다. 문제가 발생하여도 DB 로그 등을 사용해서 성공한 트랜..

[원클릭 슴리] 요구사항 파악

이전 글에서는 원클릭 슴리가 무엇이고 슴리 만드는 방법을 알아봤다. 이번 글에서는 주어진 요구사항을 파악하고 이를 어떻게 객체지향적으로 짜내려갔는지 설명해보려고 한다. 요구사항 4개의 음원 사이트 3개의 OS 환경 8개의 곡 각 음원 사이트마다 음원의 songid 가 다르다. 그리고 OS 마다 URL 형식이 다르고, 또 이는 음원 사이트 마다 다르다. 가장 먼저 들었던 고민거리는 8개의 songId 를 어떤 형태로 저장할지가 고민이였다. 이 한 음원에 대한 songid는 사이트마다 다르지만 그 음원의 타이틀은 동일하다. 예를들어 CAKE 라는 곡의 songId 는 멜론에서는 11223344 이지만, 지니에서는 56785678 인 것이다. 음원사이트 마다 타이틀은 중복되기에 이 타이틀를 enum으로 관리하..

Ploject 2023.09.03

[백준] 20560번: 맛집 탐방

🔈 문제 은수는 맛집을 탐방하러 도시로 여행을 떠날 것이다. 은수가 갈 도시에는 총 $N$개의 맛집이 있다. 도시에는 맛집에서 맛집으로 이동할 수 있는 일방통행 길이 $M$개 있고, 각 길의 중간에는 기념품 상점이 있다. 어떤 길은 출발하는 맛집과 도착하는 맛집이 같을 수도 있으며, 여러 길이 같은 맛집을 연결할 수도 있다. 은수는 도시의 맛집에서 여행을 시작해서, 길을 이용해 맛집을 탐방하다 도시의 맛집에서 여행을 끝낼 것이다. 여행을 시작한 곳과 여행을 끝낸 곳이 같을 필요는 없다. 도시는 은수가 사는 마을에서 멀리 떨어져 있기 때문에, 은수는 한 번의 여행에서 최대한 많은 맛집과 상점을 들르려고 한다. 특히, 여행 중에 모든 맛집을 방문하거나 모든 기념품 상점을 방문한다면 다음 여행에서 할인 혜택을..

[리뷰] 전문가를 위한 C++ (개정 5판)

한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 이번에 소개할 도서는 전문가를 위한 C++ 이다. 1600페이지가 넘는 방대한 책이며, 전문가의 냄새가 풀풀 풍기는 도서이다. 총 다섯가지의 파트로 나눠져 있다. 전문가를 향한 C++ 첫걸음 전문가다운 C++ 소프트웨어 설계 방법 전문가답게 C++ 코딩하기 C++ 고급 기능 마스터하기 C++ 소프트웨어 공학 그리고 부록으로 면접 예상 질문과 표준라이브러리 헤더 파일 그리고 UML 기초가 포함되어 있다. 파트 1에서는 C++의 기본적인 문법을 설명해준다. C++의 코딩 스타일을 파악할 수 있는 파트이다. 파트 2에서는 객체지향적이며 재사용에 최적화된 코드를 설계할 수 있는 방법에 대해 설명해준다. 파트 3은 본격적으로 C++의 핵심을 다루기 시작한..

Blah blah 2023.08.27

[자바] 자바에서 ConcurrentHashMap

개선된 ConcurrentHashMap ConcurrentHashMap 클래스는 동시성 친화적이며 최신 기술을 반영한 HashMap 버전이다. 내부 자료구조의 특정 부분만 잠궈 동시 추가, 갱신 작업을 허용한다. 떄문에 동기화된 Hashtable 버전에 비해 읽기 쓰기 연산 성능이 월등하다. 리듀스와 검색 ConcurrentHashMap은 스트림에서 봤던 녀석들과 비슷한 종류의 세 가지 새로운 연산을 제공한다. forEach: 각 (키, 값) 쌍에 주어진 액션을 실행 reduce: 모든 (키, 값) 쌍을 제공된 리듀스 함수를 이용해 결과로 합침 search: 널이 아닌 값을 반환할 때까지 각 (키, 값) 쌍에 함수를 적용 또 키, 값 그리고 Map.Entry 를 활용해서도 연산을 수행할 수 있는 메서드도..

[백준] 1185: 유럽 여행

🔈 문제 민식이는 여름에 유럽여행을 떠날 계획이다. 방문할 나라는 총 N개의 나라이고 편리하게 1번부터 N번까지 번호를 붙였다. 또한 이 나라들 사이에 이동 가능한 길은 M개가 있는데 민식이는 귀찮기 때문에 N개의 나라가 서로 연결된 것을 유지시키면서 최대한 많은 길을 지도에서 제거하고자 한다. 즉, N-1개의 길만을 남겨야할 것이다. 각 길을 통과하기 위한 비용이 각기 다르고 한 나라를 도착하면 내야할 비용 역시 나라마다 다르게 정해져있다. 민식이는 모든 도시를 최소 한번 이상 방문하면서 최소 비용이 드는 방법을 찾고 있다. 물론 길과 나라는 여러 번 방문할 수 있고, 첫 시작 나라는 민식이가 정할 수 있고, 마지막 나라는 시작 나라이어야 한다. 이러한 민식이의 유럽 계획을 도와주자. 📝입력 첫 줄에는..

[자바] static 메서드와 static 클래스

static class와 static method 자바에서 static 키워드는 JVM이 시작될 때 static 영역에 한번 저장되어 프로그램이 종료될 때 해제되는 것을 의미한다. static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 가지지만 Garbage Collection이 관리하지 않으므로 자주 사용한다면 메모리 효율이 떨어질 수 있다. static 메서드 static 메서드는 객체 생성 없이 사용할 수 있는 메서드이다. 사용 예시 class Counter { static int count = 0; Counter() { count++; System.out.println(count); } public static int getCount() { return count; } } pu..

[구름톤 챌린지] 완벽한 햄버거 만들기 - 학습 일기 (1-4)

🔈 문제 문제의 요구사항은 N개의 정수 데이터가 주어졌을 때, 조건대로 정렬되어 있는지 확인하는 문제입니다. 여기서 주어진 조건은 배열의 최대값을 기준으로 왼쪽이나 오른쪽으로 갈수록 정수의 값이 같거나 감소해야 한다. 📚 문제 풀이 문제의 조건을 만족하려면 오름차순, 내림차순 혹은 올라갔다 내려가도록 정렬되어있는지 파악하면 된다. 조건을 만족하려면 배열안에 nums[i] > nums[i+1] < nums[i+2] 이 True 인 곳이 없어야 한다. 감소하다가 증가하는 값이 존재하면 안되기 때문이다. 반복문을 사용해 해당 값을 포함하고 있는지 아닌지 bool 값을 반환하여 문제를 해결할 수 있다. 모든 조건문이 참이면 참을 반환하는 all() 을 사용하여 문제를 해결하였다. 💻 코드 HTML 삽입 미리보기..

Problem Solving 2023.08.18

[OS] IPC (Inter Process Communication)

IPC (Inter Process Communication) IPC는 Inter Process Communication의 약자로 프로세스 간의 통신을 의미한다. 프로세스는 각각 독립적으로 실행되기 때문에 이들간의 통신은 커널 영역에서 IPC 설비를 이용해야 한다. 반대로 스레드는 다른 스레드들과 메모리공간과 자원을 공유하기에 프로세스 통신보다 구현이 쉽다. IPC 종류 파이프 Pipe 초기 UNIX 시스템의 IPC 기법으로 메시지 전달 방식의 일종 파일 I/O를 통해 프로세스 간 데이터를 주고 받는다. FIFO 구조를 갖는다. 파이프 생성 시 두 개의 파일 디스크립터(read, write) 가 return 된다. 파이프는 두 개의 프로세스에 대해 단방향 통신을 지원한다. 통신을 위한 메모리공간(버퍼)를 ..

[백준] 28457번: Every? Only One's Marble - 파이썬

🔈 문제 유틸은 오늘도 혼자 집에 있다. 심심해서 같이 부루마불 게임을 할 사람을 찾아봤지만 아무도 없었다. 그렇게 한 시간, 두 시간... 도저히 참을 수 없었던 유틸은 부루마불 게임을 혼자 할 방법을 생각해 냈다. 혼자 하는 부루마불 게임에 적용되는 규칙은 다음과 같다. 일반 칸은 두 종류다. 도시 칸: 돈을 내고 땅을 사야 하는 칸 황금 열쇠 칸: 특정한 효과가 있는 카드가 발동되는 칸 특수 칸은 네 종류다. 시작 칸: 이 칸에 정확히 멈추거나 지나가게 되면, 월급을 받게 된다. 무인도 칸: 이 칸에 정확히 멈추게 되면, 다음 세 턴 동안 갇히게 된다. 갇혀 있는 동안, 두 주사위를 던졌을 때 눈이 같은 수로 나오면 무인도를 탈출하게 되며 두 주사위를 한 번 더 던져서 나온 수만큼 이동한다. 사회복..