본문 바로가기

분류 전체보기180

2024/03/04(월) Part. 알고리즘 백준 - 1325번 효율적인 해킹 https://www.acmicpc.net/problem/1325 2024. 3. 5.
2024/03/03(일) Part. Spring Spring Boot Logging 로그 로그를 왜 쓰는가? (1) 서비스 동작 상태 파악 (2) 장애 파악 로그를 작성하는 법 (1) System.out.println("로그 내용~") : 기능이 제한 적이다. 로그를 파일에 저장하거나 오래된 로그를 알아서 지워주는 것과 같은 기능이 지원되지 않고, 레벨을 나눌 수 없다. (2) Logging library 사용 : 로깅은 주로 라이브러리를 사용한다. Logging library - log4j ➡️ log4j2 - logback 순서: log4j ➡️ logback ➡️ log4j2 상황에 따라서 선택해서 사용하면 된다. 로그 레벨 - 라이브러리들마다 조금씩 다를 수 있다. (1) Error - 예상치 못한 심각한 문제가 발생하는.. 2024. 3. 4.
2024/03/03(일) Part. Spring 트랜잭션(Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 - 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영이 되거나 모두 반영이 되지 않아야 한다. - 일관성(Consistency) : 트랜잭션에 작업처리 결과는 항상 일관적이여야 한다. - 독립성(Isolation) : 독립적으로 하나의 트랜잭션이 수행이되고, 그 다음 트랜잭션이 수행이 되어야 한다. - 지속성(Durability) : 트랜잭션이 성공적으로 완료가 되었다면, 변화된 상태가 쭉 지속이 되어야 한다. (영구적으로 반영이 되어야 한다.) 주로 DB에 문제가 생겼을 때 롤백 시키기 위해 사용햔다. 트랜잭션의 연산 - 커밋(Commit) : 트랜잭션 전체가 잘 실행되었을때, 마무.. 2024. 3. 3.
2024/03/01(금) Part. Spring 트랜잭션(Transaction) 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 - 원자성(Atomicity) : 트랜잭션이 DB에 모두 반영이 되거나 모두 반영이 되지 않아야 한다. - 일관성(Consistency) : 트랜잭션에 작업처리 결과는 항상 일관적이여야 한다. - 독립성(Isolation) : 독립적으로 하나의 트랜잭션이 수행이되고, 그 다음 트랜잭션이 수행이 되어야 한다. - 지속성(Durability) : 트랜잭션이 성공적으로 완료가 되었다면, 변화된 상태가 쭉 지속이 되어야 한다. (영구적으로 반영이 되어야 한다.) 주로 DB에 문제가 생겼을 때 롤백 시키기 위해 사용햔다. 트랜잭션의 연산 - 커밋(Commit) : 트랜잭션 전체가 잘 실행되었을때, 마무.. 2024. 3. 2.
2024/02/29(목) Part. 알고리즘 그리디 알고리즘 배열의 내림차순 정렬하는 방법 Integer[] coins = new Integer[N]; // 주의할 점 : Integer 배열일 경우에만 사용이 가능하다. // 방법 1. Arrays.sort(coins, Collections.reverseOrder()); // 방법 2. Arrays.sort(coins, new Comparator(){ @Override public int compare(Integer i1, Integer i2){ return i2 - i1; } }); 백준 - 11047 동전0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,0.. 2024. 3. 1.
자료구조 - 힙 알아야 할 사전 지식 우선순위 큐를 위하여 만들어진 자료구조 이다. 우선순위 큐란? 우선순위의 개념을 큐에 도입한 자료 구조 데이터들이 우선순위를 가지고 있고 우선순위가 높은 데이터가 먼저 나간다. 자료구조 삭제되는 요소 스택(Stack) 가장 최근에 들어온 데이터 큐(Queue) 가장 먼저 들어온 데이터 우선순위 큐(Priority Queue) 가장 우선순위가 높은 데이터 우선순위 큐는 어디에 사용하는가? 1. 시뮬레이션 시스템 2. 네트워크 트래픽 제어 3. 운영 체제에서의 작업 스케줄링 4. 수치 해석적인 계산 우선 순위 큐는 배열, 연결리스트, 힙으로 구현 가능하지만 힙으로 구현하는 것이 가장 효율적이다. 우선순위 큐를 표현하는 방법 삽입 삭제 순서 없는 배열 O(1) O(n) 순서 없는 연결 리.. 2024. 2. 26.
자료구조 - Linked List LinkedList ArrayList처럼 인덱스로 접근하여 조회/ 삽입이 가능하지만 내부 구조는 완전히 다르게 구성되어 있다. ArrayList는 배열을 이용하여 메서드로 조작을 하지만, Linked List는 노드(객체)끼리의 주소 포인터를 서로 가리키며 링크(참조)함으로써 이어지는 구조이다. class Node { Node next; // 다음 노드 주소를 저장하는 필드 int data; // 데이터 저장 필드 } LinkedList 종류 단방향 연결 리스트(singly linked list) 다음 노드를 가리키기 위한 포인터필드 next만 가지고 있는 링크드 리스트를 singly linked list라고 한다. 단일 연결 리스트는 현재 요소에서 이전 요소로 접근해야 할때 매우 부적합한 특징이 있다... 2024. 2. 24.
자료구조 - HashMap HashMap 이란? - Map 인터페이스를 구현한 대표적인 Map 컬렉션이다. - Map 인터페이스를 상속하고 있어서 Map의 성질을 그대로 가지고 있다. - Map은 키와 값으로 구성된 Entry 객체를 저장하는 구조를 갖는다. 키와 값은 모두 객체이다. - 값은 중복 저장될 수 있지만, 키는 중복 저장될 수 없다. - 기존에 저장된 키와 동일한 키로 값을 저장할시, 기존의 값은 없어지고 새로운 값으로 대체된다. - 해싱(Hashing)을 사용하므로 많은 양의 데이터 검색에 있어 뛰어난 성능을 보인다. - 해시 함수를 통해 키와 값이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어 있는 위치 또한 관계가 없다. 📌 HashMap 사용하기 HashMap map1 = .. 2024. 2. 24.
자료구조 - 배열 배열이란? 하나의 블록안에 여러 데이터들을 모아 저장함으로써 데이터를 구조적으로 다루는데 도와준다. 배열의 각 구성요소를 배열 요소(element)라고 하며, 배열에서 위치를 가리키는 숫자를 인덱스(index)라고 한다. int arr[] = new int[5]; // 0 0 0 0 0 int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 1 2 3 4 5 6 7 8 9 10 배열 선언 배열은 선언시 미리 공간의 갯수(길이)를 지정해야 한다. 공간의 갯수 제한이 생긴므로 데이터를 저장하는데 있어서 제한적인 상황이 생길 수 있다. // 일일히 하나씩 초기화 int[] arr = new int[5]; arr[0] = 1; // 인덱스로 값 초기화 arr[1] = 1; arr[.. 2024. 2. 23.