본문 바로가기

항해 99

(151)
멀티 프로세스 & 멀티 스레드 Multi Process 와 Multi Thread멀티 프로세스와 멀티 스레드는 한 애플리케이션에 대한 처리방식으로 멀티  프로세스와 멀티 스레드는 여러 개의 프로세스, 스레드가 동작하는 것이다. Multi Process멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술.하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러 개의 프로세스를 생성하는 것이다.멀티 프로세스 vs 멀티 프로세서프로세스(Process)는 프로그램의 실행 상태를 말하고, 프로세서(Processer)는 CPU 코어를 말한다.멀티 프로세스는 하나의 프로그램에서 여러 개의 프로세스를 실행하는 것을 의미하고,멀티 프로세서는 여러 개의 C..
프로세스, 스레드 프로세스 & 스레드 개념프로세스(Process) : 운영체제로부터 자원을 할당받은 작업의 단위스레드(Thread) : 프로세스 할당받은 자원을 이용하는 실행 흐름의 단위정적 프로그램(Static Program)프로그램은 윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일을 통칭한다.아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program) 줄여서 프로그램이라고 한다. 프로그램 개발을 위해서는 C, Java 등과 같은 언어를 사용해 코드를 작성해야 한다(프로그램은 쉽게 말하면 코드 덩어리 인 것). 프로세스(Process)프로세스는 프로그램을 실행 시켜 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말함. 즉, 컴퓨터에서 작업..
RDBMS의 정규화 정규화(Normalization)관계형 데이터베이스(RDBMS)의 설계에서 데이터를 중복 없이 효율적으로 저장하기 위한 과정정규화를 통해 데이터베이스 구조는 불필요한 중복을 최소화하고 데이터의 일관성과 무결성을 유지할 수 있게 된다. 정규화를 통해 DB는 이상 현상(Anomaly)를 방지할 수 있다. 이상 현상(Anomaly)정규화를 적절히 하지 않은 DB 또는 Relation(Table)에 데이터가 중복되고 이 Table에 어떠한 작업을 할 때 비합리적인 문제들이 발생하는 현상이다.Relation : Rows(행)과 Columns(열)로 구성된 테이블이상 현상 종류삽입 이상 : 데이터를 테이블에 저장할 때, 불필요한 데이터도 넣어야 하는 경우삭제 이상 : 데이터를 테이블에서 삭..
Web Game 코드 설계 정리 기술 스택 결정 WebSocket 과 WebRTC 사용 목적 WebSocket : 주로 양방향 통신을 위해 주로 사용 WebRTC : 브라우저 간의 실시간 통신을 가능하게 하며, 주로 비디오, 오디오, 데이터 스트리밍에 사용 웹 게임에서 실시간 오디오, 비디오 통신 또는 피어-투-피어 데이터 교환을 구현하고자 할 때 WebRTC를 사용하게 되며, 이 경우 시그널링 서버가 필요함 WebRTC를 사용하지 않고 순수하게 게임 로직이나 상태 정보 교환 등을 WebSocket만으로 처리하는 경우, 시그널링 서버는 필요하지 않음 WebSocket은 실시간 양방향 통신을 가능하게 하여, 서버와 클라이언트 간에 실시간 메시지 교환이 필요한 웹 기반 게임에 적합하며, 턴제 게임에서 요구되는 기능들을 효과적으로 구현할 수..
프로젝트 코드 분석 Spring Web Game Project Code Review Controller package com.service.indianfrog.domain.game.controller; import com.service.indianfrog.domain.game.dto.GameBetting; import com.service.indianfrog.domain.game.dto.GameDto.StartRoundResponse; import com.service.indianfrog.domain.game.dto.GameInfo; import com.service.indianfrog.domain.game.dto.GameStatus; import com.service.indianfrog.domain.game.dto.Use..
Reflection API Reflection API 리플렉션은 힙 영역에 로드된(런타임) Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메서드를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API이다. 로드된 클래스 : JVM의 클래스 로더에서 클래스 파일에 대한 로딩을 완료한 후, 해당 클래스의 정보를 담은 Class 타입의 객체를 생성하여 메모리의 힙 영역에 저장해 둔 것(new 키워드를 통해 만드는 객체와는 다른 것) 자바에는 동적으로 객체를 생성하는 기술이 없었으나 동적으로 인스턴스를 생성하는 Reflection으로 그 역할을 대신하게 된다. Reflection으로 객체의 형은 알고 있지만 형변환을 알 수 없는 상태에서 객체의 메서드를 호출할 수 있다. R..
POJO POJO(Plain Old Java Object) 위 이미지는 Spring 삼각형이라는 이미지로 Spring의 핵심 개념들을 모두 표현하고 있다. POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는것을 의미한다. POJO란 Plain Old Java Object의 약자로, 직역하면 순수한 오래된 자바 객체이다(Java로 생성하는 순수한 객체를 뜻함). POJO는 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고, 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다. POJO에 애플리케이션의 핵심 로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 한다. POJO 프레임 워크 POJO 프레임워크는 POJO를 사용하는 장점과 EJB에서 제공하는 엔터..
Python으로 MySQL 더미데이터 생성 및 저장 Python 사용 목적 스프링 애플리케이션에서 QueryMethod 와 QueryDSL 의 성능을 비교 측정하기 위해 더미 데이터가 필요했고, 많은 양의 더미데이터를 쉽게 생성하고 DB에 저장하기 위해 Python을 사용하기로 했다. 준비 사항 Python : 필요한 라이브러리를 문제 없이 사용할 수 있는 버전 VSCode : Python 코드 작성용 프로그램 실행 순서 1. 필요 라이브러리 설치 pip install pandas sqlalchemy mysql-connector-python python 설치된 라이브러리 목록 확인 방법(CIL 에서) pip list 2. 스크립트 작성 아래 코드는 user 테이블에 10만 개의 더미 데이터를 생성하고, 이를 1000개 단위로 끊어서 삽입하는 코드이다. i..