개발일지

멀티스레드 환경에서의 싱글톤 패턴 적용 경험

서버 애플리케이션을 개발하면서 특정 클래스의 인스턴스를 한 번만 생성하고 여러 클래스에서 사용할 필요가 있었습니다. 처음에는 의존성 주입을 통해 이를 해결했지만, 여러 클래스에 걸쳐 인스턴스를 넘겨주다 보니 코드가 복잡해졌습니다. 그래서 싱글톤 패턴을 적용해 보기로 했습니다. 그러나, 멀티스레드 환경에서 예상치 못한 문제가 발생하여 결국 다시 의존성 ...

싱글톤 패턴(Singleton Pattern)

싱글톤 패턴이란? 싱글톤 패턴은 특정 클래스의 인스턴스를 하나만 생성하여 전역적으로 접근할 수 있도록 보장하는 디자인 패턴입니다. 예를 들어, 애플리케이션 설정을 하나의 중앙 객체로 관리하거나, 데이터베이스 연결을 단일 인스턴스로 유지하거나, 로그를 하나의 객체에서 처리해야 할 때 사용할 수 있습니다. 싱글톤 패턴을 통해 시스템 내에서 하나의 객체만 ...

소켓 게임 서버 개발- 멀티스레드 활용

소켓 게임 개발 자바를 사용한 멀티유저 소켓 게임 서버 개발 프로젝트에서 스레드를 활용한 경험에 대한 내용입니다. 프로젝트 개요 프로젝트 설명 이 프로젝트는 자바로 개발한 멀티플레이어 소켓 게임으로, 여러 클라이언트가 동시에 접속하고 상호작용할 수 있는 퀴즈 게임입니다. 주요 기능은 클라이언트 간의 실시간 소통과 퀴즈 진행입니다. 기술 스택 ...

프로세스와 스레드 - 개념과 차이점

프로세스와 스레드 프로세스와 스레드는 우리가 사용하는 컴퓨터 시스템의 핵심 구성 요소입니다. 프로세스 (Processes) 프로세스는 실행 중인 프로그램의 독립적인 인스턴스입니다. 하나의 프로그램이 여러 번 실행되면, 각 실행마다 별도의 프로세스가 생성됩니다. 각 프로세스는 최소 1개의 스레드를 가지고 있습니다. 특징 독립적인 메모리 공간...

의존성 주입과 테스트(2) - Mockito

테스트 코드: 실제 데이터베이스 연결 없이 테스트하기 이전 포스트에서는 생성자 주입 방식으로 의존성 주입을 변경했습니다. 이번에는 Mockito를 사용하여 테스트 코드를 작성해보았습니다. @Mock으로 변경 실제 데이터베이스와 연결하여 테스트를 진행할 수도 있었지만, 데이터베이스에 많은 데이터가 쌓여 있다 보니 테스트 속도가 느려질 수 있을 것 같...

MongoDB에서 MySQL로의 전환 - 관계형 데이터베이스에서 리스트 저장 문제

MongoDB에서의 데이터 관리 경험 MongoDB를 통해 데이터를 관리하면서 얻은 경험과 기술적인 고민을 다음과 같이 정리했습니다. 데이터 모델링과 문서형 데이터베이스의 활용 MongoDB는 문서형 데이터베이스로서 스키마 없는 구조를 제공하여 초기 데이터 모델링과 저장이 매우 유연했습니다. 예를 들어, 다음과 같은 방식으로 데이터를 저장할 ...

JUnit을 이용한 단위 테스트

테스트코드 테스트 코드는 소프트웨어가 제대로 동작하는지 확인하기 위해 작성하는 코드입니다. 이 코드는 예상한 결과가 맞게 나오는지를 자동으로 검증해줍니다. 테스트 코드를 작성해야하는 이유 버그 방지: 코드를 변경할 때 예상치 못한 버그를 사전에 발견하여 수정할 수 있습니다. 리팩토링 지원: 코드를 개선할 때 기존 기능...

어노테이션(Annotation), @

어노테이션 Spring 프레임워크는 다양한 어노테이션을 통해 개발자가 코드를 간결하고 명확하게 작성할 수 있도록 도와줍니다. 여기서 어노테이션은 무엇일까요? 어노테이션(Annotation)은 코드에 추가적인 정보를 제공하는 특별한 표식입니다. 주석처럼 보이지만, 차이점은 실행 중에도 이 정보를 사용할 수 있다는 점입니다. 주석은 단순히 코드에 대한 ...