728x90

개발 288

[Spring] 동기, 비동기 차이

동기와 비동기 차이에 대해서 알아보자 !    1. 개념동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있다.  함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때까지 기다려야 한다.  따라서 작업이 순차적으로 진행된다.  반면, 함수 A가 비동기로 함수 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작한다.  따라서 작업이 순차적으로 진행되지 않는다.    2. 블록킹과 동기의 차이동기 호출에서는 호출된 함수가 작업을 완료할 때까지 호출한 함수가 기다린다.즉, 작업이 순차적으로 진행되는 것을 의미한다.  반면, 블로킹은 함수가 호출된 후, 호출한 함수의 결과를 기다리기 위해 실행을 멈추는 상태를 의미한다.즉, 제어권이 반환되지 않고 대기하는 상황이다. ..

TCP 3-way handshake 알아보기

TCP 3-way Handshake에 대해서 알아보자 !!! TCP 3-way handshake는 TCP/IP 네트워크에서 안정적이고 연결 지향적인 통신을 설정하기 위해 사용되는 절차다.이 절차는 클라이언트와 서버 간에 신뢰할 수 있는 연결을 설정하기 위해 세 개의 메시지(세그먼트)를 교환하는 과정을 포함한다. 1.우선 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트를 보낸다.이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있다.      2.이후 서버는 클라이언트의 요청을 수락하고, SYN과 ACK 플래그가 설정된 세그먼트를 클라이언트에 보낸다. 이 세그먼트는 서버의 초기 순서 번호와 클라이언트의 초기 순서 번호에 대한 응답(ACK..

개발/ETC 2024.12.29

[Spring] Annotation 알아보기

스프링에서 제공하는 어노테이션에 대해서 알아보자 !!!  1. 개념@Component, @Service, @Controller, @Repository는 각각의 클래스를 특정 역할을 수행하는 Spring Bean으로 등록할 때 사용된다.각 애너테이션은 클래스가 어떤 역할을 하는지를 명시적으로 나타내며, Spring의 @ComponentScan 기능을 통해 자동으로 Bean으로 등록된다.@Service, @Controller, @Repository 어노테이션은 내부적으로 @Component 어노테이션을 사용하고 있다.    2. 광고   3. 종류@Component 가장 일반적인 형태의 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 Spring Bean을 나타낸다. 공통 기능을 제공하는 유틸리티 클래스..

공유 락, 배타 락 차이

공유 락 배타 락을 알아보자!!  1. 개념유 락과 배타 락은 비관적 락(Pessimistic Lock)의 데이터 일관성과 무결성을 위해 사용하는 락 유형이다. - 공유 락공유 락은 읽기 락(Read Lock)이라고 부르며, 공유 락이 걸린 데이터는 읽기(SELECT)연산만 가능하며, 쓰기(UPDATE, DELETE)는 불가능하다.공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유 락을 획득할 수 있지만, 배타 락은 획득할 수 없다.즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터가 변경되지 않는다는 것을 보장한다. SELECT * FROM table_name WHERE id = 1 FOR SHARE;  - 배타 락배타 락은 쓰기 락(Write Lock)이라고 부르며, 배타 락을 획득한 트랜잭..

개발/ETC 2024.12.24

[Java] 동일성과 동등성 알아보기

동일성과 동등성을 알아보자 !    1. 개념동일성과 동등성은 객체를 비교할 때 중요한 개념이다. 자바에서는 이 두 개념을 equals() 메서드와 == 연산자를 통해 구분할 수 있다.    2. equals()와 ==의 차이equals()는 객체의 내용을 비교하는 반면, ==는 객체의 참조(레퍼런스)를 비교한다. 따라서 두 객체의 내용이 같더라도 서로 다른 객체라면 equals()는 true를 반환할 수 있지만, ==는 false를 반환한다.    3. 광고  4. 동등성이란?동등성은 논리적으로 객체의 내용이 같은지를 비교하는 개념. 자바에서는 equals() 메서드를 사용하여 객체의 동등성을 비교한다. Apple 클래스를 예시로 보면, Object.equals 메서드를 오버라이딩하여 객체의 실제 데이..

[Java] equals와 hashCode 알아보기

equals와 hashCode에 대해서 알아보자    1. equalsequals() 메서드는 두 객체의 값이 같은지 비교하기 위해 사용하는 Java의 객체 메서드.기본적으로, Object 클래스에 정의되어 있으며, 모든 Java 클래스는 Object 클래스를 상속받기 때문에 모든 객체에서 사용 가능.   - 기본 구현public boolean equals(Object obj) { return (this == obj);}   - equals() vs == 비교비교 방식참조(주소) 비교값 비교 (보통 오버라이드 필요)기본 구현변경 불가능오버라이드 가능기본 용도객체의 주소(메모리 위치) 비교객체의 값 비교사용 예시str1 == str2str1.equals(str2)   - equals() 오버라이드 (..

[JPA] ID 생성 전략 알아보기

JPA의 ID 생성 전략을 알아보자 !!!  1. 개념JPA에서 ID를 생성하기 위해서는 직접 할당과 자동 할당을 사용할 수 있다.  직접 할당은 @Id어노테이션만을 사용하여 Id값을 직접 할당하는 방식.자동 할당은 @Id와 @GeneratedValue를 함께 사용해서 원하는 키 생성 전략을 선택하는 방식. @GeneratedValue의 stretagy 옵션을 통해 생성 전략을 설정할 수 있는데, 여기에 올 수 있는 값인 GenerationType는 다음과 같다.@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface GeneratedValue { Generation..

로그와 메트릭 알아보기

로그와 메트릭을 알아보자 !!   1. 로그와 메트릭이란? 로그는 서버가 동작할 때 서버의 상태와 동작 정보를 시간 경과에 따라 기록된 결과.로그는 시스템의 오류와 문제들을 쉽게 찾아낼 수 있도록 도와준다. 메트릭은 시스템의 성능과 상태에 대한 통계적인 정보를 의미.메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽게 파악할 수 있고, 사업 현황에 관한 유용한 정보를 얻을 수 있다.메트릭은 DAU, Retension, CPU 사용량, 메모리 사용량 등이 있다.     2. 로그, 메트릭 수집 예시스프링 부트 액추에이터를 사용해 메트릭을 생성하고 프로메테우스에 저장한 다음 그라파나로 시각화수집한 지표 예시CPU, 메모리, JVM 힙 사용량톰캣 스레드 풀과 데이터베이스 커넥션 풀 상태error 레벨 로그 증가량..

개발/ETC 2024.12.14

[Java] 얕은 복사, 깊은 복사 알아보기

얕은복사, 깊은복사를 비교해보자   1. 정의자바에서 객체를 복사할 때 얕은 복사와 깊은 복사라는 두 가지 방식이 있다. 먼저 Book과 Author라는 두 클래스를 사용해서 예제를 살펴보면, Book은 책의 이름(name)과 저자(author) 정보를 가지고 있고, Author는 저자의 이름을 가지고 있다.    2. 광고    3. 예제class Book { private String name; // 책 이름 private Author author; // 저자 public Book(String name, Author author) { this.name = name; this.author = author; } public Book shallowCopy..

트랜잭션 격리수준 알아보기

트랜잭션 격리수준을 알아보자!!   1. 트랜잭션 걱리 수준이란?트랜잭션의 격리 수준은 동시에 여러 트랜잭션이 실행될 때 한 트랜잭션이 다른 트랜잭션의 연산에 영향을 받지 않도록 하는 정도를 말한다.낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있다.반면, 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있다.즉, 데이터 정합성과 성능은 반비례한다.트랜잭션 격리 수준은 개발자가 트랜잭션 격리 수준을 설정할 수 있는 기능을 제공하는 기능이다.     2. 트랜잭션 격리 수준 종류트랜잭션 격리 수준은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ가 존재한다. READ UNCOMMITTED는 커밋이 되지..

개발/ETC 2024.12.09
728x90