본문 바로가기

항해 99

(151)
Java - Garbage Collector, Java Map Garbage Collector 가비지 컬렉터와 가비지 컬렉션의 차이 가비지 컬렉터 : 메모리 관리를 담당하는 시스템 또는 프로그램의 구성 요소이며, 메모리에서 더 이상 사용되지 않는 객체를 찾아 제거하여 메모리를 회수하는 역할을 수행 가비지 컬렉션 : 메모리 관리 기술 중 하나로, 가비지 컬렉터에 의해 수행되는 프로세스를 의미 가비지 컬렉션은 프로세스 자체이고 컬렉터는 실제 역할을 수행하는 주체이다. Garbage Collection(GC)? 자바의 메모리 관리 방법 중 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스 장점 Java 프로세스가 한정된 메모리를 효율적으로 사용할 수 있게 하고, 개발자 입장에서 메..
WIL-9 Fact : 이번주 있었던 일, 내가 한 일 월 : WebSocket 게임 구현 코드 분석 화 : 게임 관련 로직(라운드, 베팅) 구현 시작 수 : 라운드 시작, 종료, 베팅 관련 로직 구현, Call by Reference 학습 목 : 코드 리팩토링 작업, JPA 더티 체킹 학습 금 : 코드 리팩토링 작업, 스택과 힙 메모리 학습 토 : 게임 관련 로직 단위 테스트 및 통합 테스트 Feeling : 나의 감정적인 반응, 느낌 게임 관련 로직을 처음 만들다보니 구현에 어려움을 많이 느낌 작성한 코드가 통합 테스트를 할 때 제대로 동작할 지 불안했음 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 코드 작성 후 리팩토링 작업을 통해 코드에 대한 이해도를 높이고 향후 유지보수에 좋도록 바꾸는 방법..
Java - 컴파일, JVM 스택 / 힙 메모리, 클래스 / 인스턴스 Java 컴파일 과정 자바 컴파일 과정 개발자가 자바 소스코드(.java)를 작성합니다. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일합니다, 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드입니다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달합니다. 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올립니다. 클래스 로더 세부 동작 로드 : 클래스 파일을 가져와서 ..
Override, Overload / JPA 더티체킹 / JVM Overloading(오버로딩) 같은 이름의 메서드를 여러 개 가지며 매개변수의 유형과 개수가 달라도 되는 기술 두 메서드가 같은 이름을 가지고 있으나 인자의 수나 자료 타입이 다른 경우를 뜻함(리턴 값만 다르게 갖는 오버로드는 작성할 수 없음) 오버로딩 예시 public double computeArea(Circle c) { ... } public double computeArea(Circle c1, Circle c2) { ... } public double computeArea(Square c) { ... } Overriding(오버라이딩) 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용 상위 클래스의 메서드와 이름, signature가 같은 함수를 하위 클래스에 재정의하는 것(상속..
Call by Reference 자바의 Call by Value / Call by Reference 함수의 매개변수에서 값을 복사하느냐 주소값을 참조하느냐에 따라 반환 결과가 달라지기 때문에 대부분의 프로그래밍 교육 과정에서는 중요시 하게 여김 자바의 데이터 타입은 크게 두 가지로 나뉨 기본형(primitive type) : Boolean Type(boolean), Numerice Type(short, int, long, float, double, char) 참조형 (reference type) : Class Type, Interface Type, Array Type, Enum Type, 기본형을 제외한 모든 타입 메서드에 입력값(파라미터)에 원시값(primitive type)을 전달하는 것과 객체(reference type)를 전달하..
WebSocket 활용 웹 게임 구현 요구 조건 WebSocket 통신을 이용한 유저간 1:1 인디언 포커 게임을 실행할 수 있어야 한다 게임은 1판에 총 3개의 라운드가 진행되야 한다 각 라운드는 규칙에 맞게 동작할 수 있어야 한다 게임 종료 후 유저의 선택에 따라 게임을 다시 시작하거나 게임방 또는 로비로 나가도록 구현되야 한다 게임 규칙 숫자 1~10까지의 숫자 카드 덱 2개를 사용한다 라운드 종료 시 더 높은 숫자 카드를 가진 유저가 라운드에서 승리하고 베팅된 포인트를 모두 가져간다 라운드 시작 시 플레이어는 각각 카드를 1장 받는다(자신의 카드는 라운드 종료 시까지 확인할 수 없음) 베팅은 다음 3가지 중 하나를 선택할 수 있음 CHECK 선턴인 유저 : 게임에 참가한 유저 중 포인트가 더 적은 유저의 10% 값 만큼 베팅한다 후턴..
WebSocket - 실제 코드 분석 웹 게임 프로젝트 관련 코드 분석 - with GPT4 분석 프로젝트 : https://github.com/namoldak/Backend/tree/dev/src/main/java/com/example/namoldak Config WebSocketConfig package com.example.namoldak.config; import com.example.namoldak.util.webSocket.SignalHandler; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context..
Git Project 관리 Git Project 생성 1. GitHub 대시보드에서 Project → New project 클릭 2. Project Template 선택 후 프로젝트 생성 3. +버튼(Add a new column to the board)으로 보드 추가, ... 버튼(Action for column)으로 보드 관리 4. + Add item 버튼으로 이슈 추가 이슈 페이지에서 생성 후 프로젝트 연결도 가능 Git Issue 관리 이슈 생성 - 공식문서 Issue Template 1. 세팅 repository → settings 2. General 탭의 스크롤을 내려 Features → Issues → Set up Templates 3. Add Template : select 후 원하는 템플릿 선택(Custom tem..