2025/04 4

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

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

JAVA 2025.04.18

[OS] 프로세스? 프로그램?

프로그램과 프로세스일상생활에서 프로그램이라는 말은 많이 사용한다. 그렇다면 프로세스는 무엇을 뜻하는 것일까?어떠한 일의 흐름.과정. 일반적인 뜻으로는 그렇게 쓰이지만 프로그래밍 세계에서 프로세스의 의미는 약간 다르다.그렇다면, 프로그램과 프로세스는 각각 어떤 의미를 가지고 있으며, 프로그램과 프로세스의 차이점은 무엇일까?프로그램은 실행 시킬 수 있는 코드들이 들어있는 정적 상태의 파일이다.컴퓨터에서 프로그램은 사용자가 원하는 일을 처리할 수 있도록 프로그래밍 언어를 사용하여 수행절차를 표현해놓은 명령어들의 집합으로,그에 필요한 데이터들을 모아놓은 파일들이 보조 기억장치에 저장 되어있다. 프로세스는 이런 프로그램이 실행 되고 있는 상태 를 말한다. 프로그램을 실행하면, 운영체제로부터 실행에 필요한 자원을 ..

CS/OS 2025.04.15

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

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

JAVA 2025.04.08

[Partnerd] API 요청 시 초기연결이 1분이상 지연되는 현상 해결

성능 개선을 한 후 API 를 요청했을 때, 서버 응답은 확연히 빨라졌으나 ( prometheus 와 grafana 를 통해 해당 요청 응답시간을 봐도 빨라진 걸 알 수 있었다.) 초기 연결에서 평균 1.3분이 걸리는 이상한 현상이 발생했다.  서버측의 연결풀 부족으로 인한 것인가 해서, HikariCP 대시보드를 확인해보았지만  Pending: 0→ 커넥션을 기다리는 요청도 없음 (병목 없음)Connection Timeout Count: 0→ 커넥션 획득에 실패한 적도 없음Connection Acquire Time: 7~13ms 수준→ 커넥션 획득 속도도 매우 양호함Usage Time: 1.2초 이하→ 사용 시간도 짧은 편위 이유로 DB 커넥션 풀은 병목 원인이 아닌 것을 알 수 있었다. 그럼 CPU ..

Project/Partnerd 2025.04.07