JAVA 3

[JAVA] 자바의 Object 클래스와 메서드 정리

자바의 Object 클래스Object 클래스는 자바의 모든 클래스가 기본적으로 상속 받는 최상위 클래스이다.이 클래스는 equals, hashCode, toString과 같은 메서드를 제공한다. equals 메서드현재 객체와 매개 변수로 넘겨받은 객체가 같은지 확인하여, 같으면 true, 다르면 false를 반환한다.기본 타입의 int형, char형등은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용하기 때문에 equals 메서드 사용 시 값을 전제로 비교한다. 하지만 객체의 동등성 비교에서는 이 메서드를 재정의 해주지 않으면, 같은 값을 가진 두 객체를 비교할 때 equlas()는 객체타입의 주소 값을 비교하기 때문에 서로 다른 메모리에 할당된 두 객체는 다르다고 인..

JAVA 2025.04.18

선착순 쿠폰 발급 시 동시성 문제 해결 과정 Chap.1 (SQL 락과 Redis 락)

쿠폰 발급 시 일정 기간에 쿠폰을 발급 할 수 있고 발급 수량이 정해져 있다고 가정해보자.선착순으로 이벤트 쿠폰을 발급해준다고 했을 때, 한 번에 많은 사용자들이 동시에 쿠폰 발급 버튼을 누르면 어떻게 될까? 발급 가능한 수량보다 더 많은 쿠폰이 발급 될 것이다. ⚠️  왜 이런 상황이 발생할까? 바로 데이터 정합성이 깨지기 때문이다. 데이터 정합성이란 무엇인가 하면, 데이터가 논리적으로 모순없이 올바르게 유지되는 상태를 말한다. 즉, 시스템 내의 데이터가 항상 정확하고 신뢰할 수 있도록 보장하는 개념이다.모든 트랜잭션 이후에도 데이터가 규칙(rule), 제약조건(constraint), 비즈니스 로직에 맞게 유지되는 성질을 의미한다. 쿠폰 총 수량이 100개 인데, 150명이 동시에 발급 요청을 보내서 ..

JAVA 2025.04.08

[Java] Static

Static이란?Java에서 Static이란 키워드는 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다.프로그램이 실행되기 위해서는 프로그램이 메모리에 load 되어야한다. 또한 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.Static에 대해서 알아보기전에 컴퓨터 운영체제가 프로그램의 실행을 위해 제공하는 다양한 메모리 공간 구조에 대해서 먼저 살펴볼 것 이다. Java의 메모리 영역자바 프로그램을 실행 하게되면 JVM(Java Virtual Machine)은 OS 로 부터 메모리를 할당 받는다, 할당 받은 메모리를 자바 프로그램에 맞게 여러개의 영역으로 나누어 사용하게 된다. 각 영역은 목적에 맞게 사용되고, 어플리케이션의 성능에 영향을 미친다. 같은 기능을 하는 어플리케이..

JAVA 2024.09.06