분류 전체보기 118

트랜젝션(Transaction)

트랜잭션 트랜젝션은 데이터베이스 내에서 수행되는 더 이상 쪼갤 수 없는 최소 작업의 단위로, 데이터베이스의 무결성을 유지하며 상태를 변화시키는 기능을 수행합니다. 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 영구성(Durability) 를 보장합니다. 이 성질의 앞 글자를 따서 ACID 라고 부릅니다. *데이터베이스는 COMMIT 과 ROLLBACK 명령어를 통해 데이터의 무결성을 보장합니다. Commit : 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것 Rollback : 작업 중 하나라도 실패해서 변경 사항을 취소하고, 이전의 상태로 되돌리는 것 트랜잭션의 목적 은행 시스템에서 A 가 B에게 출금을해서 입금하는 상황이 있습니다. 송금하려는..

CS 2022.05.03

모던 자바 인 액션 - 3장 람다 표현식

람다표현식 이번에는 람다 표현식을 어떻게 만드는지, 어떻게 사용하는지, 어떻게 코드를 간결하게 만들 수 있는지 설명하는 장입니다. 또한 자바 8 API에 추가된 중요한 인터페이스와 형식 추론 등의 기능도 확인하며, 마지막으로 람다 표현식과 함께 위력을 발휘하는 새로운 기능인 메서드 참조를 설명하겠습니다. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있습니다. *람다의 특징 익명 보통의 메서드와 달리 이름이 없어 익명이라 표현합니다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수..

가상메모리(virtual memory)

가상메모리(virtual memory) => 램과 하드디스크를 하나의 추상화된 메모리 영역으로 제공한다. 가상메모리는 왜 태어났는가? 예전 도스시절 하나의 프로그램만 실행시키던 그 때 프로그램이 메모리를 사용하다가 프로그램이 죽는경우 이 메모리를 회수시킬 방법이 없어 결국 OS를 재시작하게 되는 문제로부터 시작되었다고 한다.. 즉, 프로세스가 운영체제(시스템) 전체에 문제가 나는것을 막기 위해 프로세스의가 사용하는 공간을 가상세계로 범위를 제한시켜 애플리케이션이 죽어도 OS는 살아남는다. (시스템 안정성을 위해) 가상메모리 사용하면 가장 좋은점 OS가 프로그램에게 가상메모리 영역을 할당하기 때문에 프로그램이 뻗어도 OS가 해당 프로그램의 주소위치를 알기 때문에 자원을 회수할 수 있어 메모리의 낭비가 없고..

CS 2022.04.30

[백준 2343] 기타레슨 - JAVA

문제 https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 문제풀이 *접근방법 문제의 제한 조건이 강의의 수는 100,000 과 각 강의의 길이는 10,000분이 넘지 않는다고 주어졌다. 여기서 가능한 블루레이의 크기 중 최소를 구하는 프로그램을 만들어야 하는데 최대치를 두고 생각을 했을 때는 너무 터무니 없이 큰 제한이라 블루레이의 크기를 기준으로 이분탐색을 하면 찾을 수 있겠다 라고 생각이 들었다. 그런데 보통 이분탐색은 정렬된 곳에서 찾는게 보통인데 ..

백준 문제풀이 2022.04.29

[백준 - 2615] 오목 - JAVA

문제 https://www.acmicpc.net/problem/2615 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 문제풀이 문제의 제한조건이 생각보다 까따로웠다. 연속적 5알이 되는 색이 이기는 구조인데, 검은색과 흰색이 동시에 이기는 경우도 없고, 두 곳 이상에서 이기는 경우도 없다. 제일 중요한 제한조건인 여섯알이 연속적으로 놓은 경우 이긴 것이 아니다. 라는 말이 있습니다. 여섯알이 될 경우 승부가 결정이 안나 0을 출력해야한다는 것으로 착각했지만 다른 곳에 오목이 되면 그 색이 이기는 문제였습니다..

백준 문제풀이 2022.04.26

모던 자바 인 액션 - 2장 동작 파라미터화 코드 전달하기

*책 예제를 그대로 따라치는게 아닌 예제를 직접한번 만들어 보면서 학습을 해봤습니다. 동작 파라미터화 코드 전달하기 변화하는 요구사항은 소프트웨어 엔지니어링에서 피할 수 없는 문제! 시시각각 변하는 사용자의 요구 —> 동작 파라미터화 효과적인 대응 이 가능하다. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미, 이 코드 블록의 실행은 나중으로 미뤄진다. 어떻게 실행되는지 예제를 통해서 알아봅시다. 설명을 돕기 위한 기본셋팅입니다. enum Color { WHITE, BLACK, RED, BLUE } enum Model { GV70, GV80, G70, G80, G90 } class Car{ private int price; private Color color; private..

교착상태(DeadLock)

교착상태(DeadLock) 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있는 상태, 결국 아무것도 완료되지 못하는 상태를 말합니다. 같은 말로 둘 이상의 스레드가 각기 다른 스레드가 점유하고 있는 자원을 서로 기다릴 때, 무한 대기에 빠지는 상태라고도 합니다. 교착상태가 발생하는 조건은 상호 배제, 점유 대기, 비선점, 순환 대기 4가지 조건이 동시에 성립할 때 발생할 수 있습니다. 이런 교착상태 문제를 해결하는 방법으로는 무시, 예방, 회피, 탐지 회복 4가지 방법이 있습니다. 발생조건 상호 배제 한 자원은 동시에 쓸 수 없는 상황, 하나의 스레드만이 자원을 점유 할 수 있다. 점유 대기 한 스레드가 자원을 붙잡은 상태에서 다른 스레드가 보유한 자원을 기다리고 있는 상태 비선점 다른 ..

CS 2022.04.22

[프로그래머스 Level2] 거리두기 확인하기(JAVA) - 2021 카카오 인턴

문제 https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 해당 문제의 내용이 길어 생략했습니다. 문제풀이 해당 그림이 제일 큰 힌트를 주었습니..

프로그래머스 2022.04.19

스레드와 멀티스레드 (Thread & Multi Thread)

Thread 스레드는 한 프로그램 or 프로세스 내에서 실행되는 동작(기능, 흐름)의 단위 입니다. 한 프로세스 내의 스레드는 Stack Memory를 제외한 나머지 Memory 영역을 공유할 수 있습니다. Multi Thread 멀티 스레드란 하나의 프로세스내에서 두 개의 이상의 스레드를 가지게 됩니다. 한 프로세스가 동시에 여러작업(병렬로 처리)을 하기 위해 멀티 스레드를 사용하며, 각각의 스레드는 독립적으로 기능을 수행하기 위해 독립적인 Stack Memory와 PC Register 가지며 나머지 Code, Data, Heap 영역을 공유하여 사용합니다. Stack Memory 스레드가 함수를 호출하기 위해서는 매개변수, 리턴값, 지역변수 저장 등을 위한 독립적인 Stack 영역이 필요합니다. 결과..

CS 2022.04.18

[백준 2304] - 창고 다각형(JAVA)

[문제] https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net [문제풀이 전] 기둥들의 위치와 높이가 주어질 때, 가장 작은 창고 다각형의 면적을 구하면 되는 문제입니다. 힌트에서는 문제 분류가 브루트포스로 되어있지만 x축 (기둥의 왼쪽 면의 위치) 기준으로 정렬을 하여 구하여 항상 작은 면적이 나오게 구현을 했기 때문에 그리디 방법이 아닌가 생각이 들기도 합니다. 브루트포스는 가능한 모든 경우의 수를 탐색하는데 그런 경우를 따져 풀..

백준 문제풀이 2022.04.16