본문 바로가기

전체 글135

[Database] Transaction (트랜잭션) Transaction 이란? 트랜잭션은 데이터 베이스 시스템에서 "더이상 쪼갤 수 없는 업무 처리의 최소 단위"이다. 예를 들어, A가 B에게 1,000원을 송금한 경우, 이 거래는 더 이상 쪼갤 수 없는 하나의 트랜잭션이 된다. 'A가 돈을 보낸 행위'와 'B가 돈을 받는 행위'는 별개로 분리될 수 없으며, 둘 중 하나라도 온전히 수행되지 않는다면 해당 거래는 성사되지 않는다. 트랜잭션 처리가 정상적으로 완료된 경우 Commit을 하고, 오류가 발생할 경우 원래 상태로 Rolback한다. 트랜잭션은 거래의 안전성을 확보하는 방법이다. Transaction의 조건(ACID) Atomicity(원자성) 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 전혀 반영되지 않든지 해야한다. Consistenct(일.. 2023. 3. 13.
[Stream] int[] ↔ Integer[] 변환 int[] → Integer[] public static void main(String[] args) { int[] intArray = {1, 2, 3, 4}; Integer[] IntArray = Arrays.stream(intArray) .boxed() .toArray(Integer[]::new); } Integer[] → int[] public static void main(String[] args) { Integer[] IntArray = {1, 2, 3, 4}; int[] intArray = Arrays.stream(IntArray) .mapToInt(i -> i) .toArray(); } 2023. 3. 8.
[Spring] Spring과 SpringBoot 1. Framework란? 소프트웨어 개발에 있어서 하나의 뼈대 역할을 하는 것으로서, 자주 쓰일 만한 기능들을 모아 놓은 클래스와 라이브러리들의 집합이다. 2. Spring Framework 스프링은 Java 기반의 엔터프라이즈급 개발을 편리하게 만들어주는 오픈소스 경량급 애플리케이션 프레임워크 다음은 스프링 프레임워크의 특성들이다. 2. 1. 제어의 역전 (IoC; Inversion of Control) 객체를 사용할 때, 기존의 자바 개발의 경우 개발자가 직접 사용하려는 객체를 선언하여 해당 객체의 의존성을 생성한 후 객체를 사용하였다. 하지만 IoC를 특징으로 하는 스프링에서는 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부(Spring Container 혹은 IoC Containe.. 2023. 3. 8.
[Java의 정석] 상속과 오버라이딩 1-1. 상속(inheritance) 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것. 상속을 통해서 클래스를 작성하면 보다 적응 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 1-2. 상속의 특성 상속의 대상은 멤버(변수와 메서드)이다. 생성자와 초기화 블럭은 상속되지 않는다. 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. 1-3. Object 클래스 - 모든 클래스의 조상 Object 클래스는 모든 클래스 상속계층도의 최상위에 있는 조상 클래스이다. 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object 클래스로부터 상속을 받는다. 만일 다른 클래스로부터 상속을 받는다고 .. 2023. 2. 14.
[Java의 정석] 생성자 (Constructor) 1. 생성자란? 정의 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' * 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. 역할 인스턴스 변수의 초기화 작업에 주로 사용됨 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용됨 조건 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. 2. 기본 생성자 (default contrcutor) 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 한다. 단, 클래스에 정의된 생성자가 하나도 없을 때는 컴파일러에 의해서 기본 생성자가 자동으로 추가된다. 3. 매개변수가 있는 생성자 생성자도 메서드처럼 매개변수를 선언하여 호출 시 값을 넘겨받아서 인스턴스의 초기화 작업에 사용할 수.. 2023. 2. 13.
[Linux] VIM Editor 명령어 정리 1. VIM의 네 가지 모드 명령(일반) 모드(Command Mode) : 처음 vim을 실행했을 때 설정되어 있는 기본 모드. 입력 모드 / 마지막 행 모드에서 esc 입력 시 이 모드로 돌아온다. 입력 모드(Insert Mode) : 파일에 내용을 입력할 수 있는 모드. 명령 모드에서 'i'나 'a'를 입력하여 진입. 마지막 행 모드(Last Line Mode) : 파일의 저장 / 종료. 명령 모드에서 ':'을 입력하여 진입. Visual Mode : 블럭 단위로 복사 / 붙이기. 명령 모드에서 'v'를 입력하여 진입. 2. 기능별 명령어 내용 입력 i : 현재 커서 위치에서 편집모드 시작 a : 현재 커서의 바로 다음 위치에서 편집모드 시작 내용 삭제 x : 커서 위치의 한 문자를 삭제(일반 모드).. 2023. 2. 6.
[Linux] 프로세스 제어 명령어 정리 1. 프로세스 상태 확인 - ps 사용법 $ ps [option] 옵션 flags descrpition -a 데몬 프로세스처럼 터미널에 종속되지 않은 모든 프로세스를 출력 -u 프로세스 소유자에 대한 상세 정보 출력 -x 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력 본래 ps 명령은 현재 쉘에서 실행한 프로세스들만 출력하기 때문에 이 옵션을 사용하기도 함 -e 커널 프로세스를 제외한 모든 프로세스 출력 -f full format으로 출력. UID, PID, PPID 등이 함께 출력된다. -e 옵션과 연계하여 주로 사용 (Ex. ps -ef | grep '프로세스명') 2. 프로세스 죽이기 - kill 사용법 $ kill % '작업번호' $ kill 'PID' 옵션 프로세스 강제 종료 옵션: .. 2023. 2. 6.
[자료구조] 연결 리스트(Linked List) 연결 리스트란? 배열과의 비교 연결리스트는 배열과 마찬가지로 선형적인 자료 구조이다. 하지만 연속된 메모리 공간에 구성 요소들이 할당되어 있는 배열과 달리, 연결리스트는 각 요소가 임의의 공간에 분리되어 존재한다. 연결리스트의 각 노드(node)는 다음 노드를 가리키는 포인터(pointer)를 가지고 있다. 따라서, 각 노드에 대한 직접적인 접근은 불가능하다. 연결 리스트의 효용 동적인 자료구조 - 요소의 삽입 및 삭제에 따라 자료의 크기를 동적으로 관리할 수 있다. 효율적인 삽입/삭제 - 요소의 삽입 및 삭제 시, 배열에서와 같이 따라 다른 요소들의 위치를 이동시킬 필요 없이 요소들 간의 연결 정보를 업데이트 해주는 것만으로 해당 작업을 수행할 수 있다. 효율적인 메모리 사용 - 자료구조의 크기가 동적.. 2023. 2. 3.
[Java / 자료구조] 데크(Deque) Deque의 개념 Deque(double-ended queue)는 양방향에서 데이터를 처리할 수 있는 선형 자료구조이다. Deque의 조상은 Queue이며, 구현체로는 ArrayDeque와 LinkedList 등이 있다. Deque = Stack + Queue 덱은 스택과 큐를 하나로 합쳐놓은 것과 같으므로 스택으로 사용할 수도 있고, 큐로 사용할 수도 있다. Deque Stack Queue offerLast() push() offer() pollLast() pop() - pollFirst() - poll() peekFirst() - peek() peekLast() peek() - 관련 Java 메서드 삽입 / 제거 기타 removeFirstOccurence(Obect O) - 덱의 앞쪽에서부터 탐색하여.. 2023. 2. 1.
[OS] 운영체제의 구조 운영체제는 Kernel과 Interface로 이루어져 있다 Kernel 컴퓨터 운영체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 통제한다. 운영체제의 다른 부분 및 응용프로그램 수행에 필요한 여러 가지 서비스를 제공한다. Interface 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 반환한다. * Interface의 사전적 의미: 서로 다른 두 개의 시스템이나 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면 Kernel은 System Call 과 Driver로 이루어져 있다 System Call 사용자나 응용프로그램이 컴퓨터 리소스에 직접 접근할 경우 시스템 관리에 문제가 발생할 수 있다. 따라서 커널의 System Call이 제공하는 함수들을 이용하여 간접적.. 2023. 2. 1.
[Java / Stream] 배열 ↔︎ 리스트 간 변환 (정수) 예제 코드 int[] arr = {1, 2, 3, 4}; // 배열 -> 리스트 List list = new ArrayList( Arrays.stream(arr) .boxed() .collect(Collectors.toList()) ); // 리스트 -> 배열 int[] arrB = list.stream() .mapToInt(i -> i) .toArray(); 2023. 2. 1.
[Java / Stream] int 배열 내림차순 정렬 class Solution { public void solution(int[] arr) { arr = Arrays.stream(arr) .boxed() // Stream .sorted(Comparator.reverseOrder()) .mapToInt(i->i) // IntStream .toArray(); } } 2023. 1. 30.