본문 바로가기

JAVA 정리노트17

Spring, 중첩 트랜잭션(Nested Transaction) 트랜잭션(Transaction)데이터베이스의 상태를 변화시키기 위한 일련의 작업을 하나로 묶은 논리적 단위입니다.이 논리적 작업 단위는 모두 성공적으로 완료되거나,하나라도 실패하면 전체 작업이 취소되도록 보장하는 것이 핵심입니다. ACID 원칙Atomicity (원자성) 트랜잭션은 하나의 단위로 실행되며, 모든 작업이 성공적으로 완료되거나 모두 실패하여 데이터베이스에 전혀 반영되지 않아야 합니다. 예를 들어, 은행에서 A 계좌에서 B 계좌로 돈을 이체할 때, A 계좌에서 돈이 빠져나가고 B 계좌에 돈이 입금되는 작업이 하나의 트랜잭션으로 묶여야 합니다. 만약 중간에 오류가 발생하면, 모든 작업이 취소되어야 합니다.Consistency (일관성) 트랜잭션이 성공적으로 완료된 후 데이터베이스는 항상 일관된 .. 2024. 10. 8.
JAVA 메모리에 관하여 우리는 JAVA언어를 이용해 코드를 작성하고 실행하면서 어떻게 실행되는지 들여다본적이나 생각해본적이 있을까?이런 궁금증으로 자세하게 찾아보게 되었다. 우선 JAVA 메모리 구조에 대해 알아보기 전 필요한 사전 지식에 대해 알아보자 JVMJVM은 Java Virtual Machine의 약자이며, 자바 가상 머신이라고 부른다.하는 일은 JAVA의 Byte코드를 해석하고 실행하는 역할이다.특징으로는 os에 상관없이 JVM이 깔려있다면 어디서든 .java 파일을 실행할 수 있다. JVM의 실행 순서우선 .java 파일을 Compiler를 통해 .class파일로 변환한다.변환된 .class파일을 JVM의 classLoader에게 전달한다.ClassLoader는 JVM의 런타임 데이터 영역으로 class파일을 로딩.. 2024. 7. 21.
Java Thread에 대하여 Thread란? 필자는 컴퓨터 조립을 좋아해서 CPU에 관심이 많아 많이 들어봤던 단어였다. 물리적으로 가볍게 생각해보면 CPU코어는 내가 부릴 노예의 수 이고 그 CPU코어의 쓰레드는 내가 부릴 노예의 손 개수라고 생각하면 된다. 그럼 정확하게 자바에서 말하는 Thread는 무엇일까? 프로그램 내에서 실행의 흐름을 가지고 있는 최소 단위. 라고 말한다. 우리가 처음에 항상 프로그래밍하던 main문도 main 쓰레드가 실행된다는 것이다. 그리고 쓰레드는 싱글쓰레드와 멀티쓰레드로 나뉘는데 둘의 차이는 쓰레드의 개수이다. 또 CPU의 일처리 방식은 멀티쓰레드라고 해서 (손이 많다고해서) 여러가지 일을 동시에 진행시키는게 아니라 엄청나게 빠른속도로 프로그램을 왔다갔다 하면서 우리에게는 마치 동시에 실행하는 것.. 2024. 2. 13.
Big-O Notation, (시간,공간 복잡도) 코딩을 하다보면 자꾸 보이고 들리는 용어가 있다. 바로 시간 복잡도다. 대충 컴퓨터가 계산하는데 얼마나 걸리냐 정도로만 인식했지 제대로 알아본적이 없기 때문에 이번 기회에 제대로 알아보도록 하겠다 !! Big-O 표기법이란? 알고리즘이 얼마나 효율적인지 따지는 지표이다. 내가 짠 코드의 반복문, 조건문이 몇개인가 또는 산술, 비교, 대입연산자에 따라 얼마나 걸리는지에 대해 "시간" 개념으로 얼마나 걸리는지에 대해 나타내는 표기법이다. 시간 복잡도란? 그럼 위에 표기법인 Big-o 표기법으로 계산을 하는데 몇 가지 규칙이 있다. 그럼 모든 코드의 반복문이나 연산자를 모두 봐야할까? 아니다, 코드의 핵심적인 부분의 입력 값 (N)과 그 N으로 부터 어떤 관계가 있는지를 파악하는게 제일 중요하다. 또 실제로 .. 2024. 2. 11.
Java 객체 비교해보기(ArrayList, Collections, Random를 사용한 정렬) 오늘은 Generic입문 전에 간단한 코드로 몇 가지 기능을 사용하여 감을 잡아보겠다! Integer 형 list에 랜덤한 값 10개를 넣어 출력하고, 그 다음 출력문은 내림차순으로 정렬하여 출력하는 코드이다. package test11; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class ListTest { public static void main(String[] args) { List list = new ArrayList(); //Integer형 List 선언 Decending d = new Decending(); //Decending 클래.. 2024. 2. 4.
JAVA [GC, Garbage Collection] 정리본 가비지 컬렉션이란? 유효하지 않은 메모리들을 처리해주는 프로세스라고 보면 된다. 그럼 유효하지 않은 메모리는 무엇일까? 밑에 코드를 보면 public class ad { public static void main(String[] args) { num number = new num(); number.setNum(10); System.out.println(number.getNum()); number=null; } } 숫자 하나를 저장하는 클래스를 참조해서 만든 객체 number에 10의 값을 줬지만 마지막 줄 number에 null을 대입해서 객체를 가리키는 참조변수의 값을 없애버려서 number객체의 10 값은 아무도 찾아주지않는 외딴섬이 됐다. 바로 이때가 유효하지 않은 메모리로써 가비지 컬렉터의 먹이가.. 2024. 2. 3.
JAVA I/O, stream에 대하여 I/O와 Stream이란? I/O 는 Input / Output의 줄임말이다. 말 그대로 넣고 꺼내고,(쓰고 읽고) 라고 생각하면 편하다 Stream이란 데이터가 오고가는 통로다. Stream의 특징 1. 단방향 : 무전기를 생각하면 된다. 무전기는 단방향통신, 즉 한 명은 말하기만되고 한 명은 듣기만 된다. 자바의 stream도 마찬가지다. 입력으로 통로를 만들면 입력만 가능하고 출력으로 통로를 만들면 통로만 가능하다. 만약 두 개 다 사용하고 싶다면 입력통로, 출력통로 두 개를 만들어줘야한다.! 2. 선입선출(FIFO) : 말 그대로 먼저 넣은게 먼저 나온다. 단순하게 생각하면 된다. 3. 시간지연이 발생할 수 있다. 빛도 속도가 있어서 시간지연이 발생하는데 이 세상에 시간지연이 발생하지 않는 건 없.. 2024. 2. 2.
JAVA의 기본 API 기본 API란? Application Programming Interface의 약자로 자주 사용되는 클래스 및 인터페이스의 모음집 느낌이다. 간단하게 자주 사용하는 것만 정리해보면 1. math 기능 math의 특징 : 모든 필드와 메소드가 static이다. 필드의 변수들은 모두 final(상수)이다. 생성자가 private이다. (값을 못바꾸게 일부러) 한번만 메모리에 올려놓고 재사용하는 개념 -> 싱글톤 패턴 public class A_math { public void mathod01() { //java.lang.math //상수필드 System.out.println("파이 : " + Math.PI); //절대값을 알고자 할 때 int num1 = -10; System.out.println("절대값 .. 2024. 1. 31.
JAVA RuntimeException(예외처리) RuntimeException이란? 프로그램 실행시 발생되는 예외들, 대표적인 RuntimeException의 후손들 IndexoutOfBoundsException : 적절하지 않은 인덱스를 가지고 접근시 발생되는 예외 NullPointerException : 참조변수가 null로 초기화 된 상태에서 변수나 메소드에 접근할 시 생기는 예외 ClassCastException : 허용할 수 없는 형변환이 일어날 때 생기는 예외 ArthmeticException : 0으로 무언가를 나누려할 때 생기는 예외 NegativeArraySizeException : 배열의 크기를 음수로 넣으면 생기는 예외 예외 처리하는 방법! 1. try - cat 문을 사용 mathod01을 따로 만들어서 주석처럼 사용하면 된다. .. 2024. 1. 31.