일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JavaScript
- 게임 서버 아키텍처
- pm2
- MongoDB
- Github
- Prisma
- 자바스크립트
- 지금 자면 꿈을 꾸지만
- insomnia
- Next
- PROJECT
- 더 흔한 색칠 타일 문제
- 그리디
- 백준 28303번
- branch
- string
- ucpc 2023 예선 i번
- HTTP
- 백준 32029번
- ucpc 2024 예선 e번
- ERD
- router
- ucpc 2023 예선 d번
- ccw 알고리즘
- localstorage
- html5
- MySQL
- 백준 32028번
- Express.js
- map
- Today
- Total
목록내일배움캠프 (70)
dh_0e
객체 리터럴{}로 객체 리터럴을 정의할 때 사용키-값 쌍으로 구성된 데이터 구조블록 문{}로 코드 블록을 정의할 때 사용여러 명령문을 묶어서 실행하는데 사용 객체 리터럴과 블록 문 구분JavaScript에서 똑같이 중괄호 '{}'를 사용하는 두 경우를 어떻게 구분할 수 있을까?'{}'가 객체 리터럴인지 블록 문인지 구분하기 어려운 경우가 있다.다음 예시는 그 구분이 애매할 때 발생할 수 있는 에러이다.let name, age;{ name, age } = { name: 'Alice', age: 30 }; // SyntaxError 발생name, age를 key값으로 가진 객체 리터럴에서 구조 분해 할당을 하려 한다.이때, 작성자는 '{ name, age }'를 객체 리터럴을 목적으로 작성했지만 실제로 컴파..
장르: 대규모 다중 사용자 온라인 게임플랫폼: 웹 브라우저ex) agar.io, deep.io1. 클라이언트게임 유저가 웹으로 접속합니다.서버와 통신하여 게임 플레이를 할 수 있습니다. 2. 매칭 서버서버 인원 수를 고려하여 최적의 서버(지역별)에 유저를 매칭합니다.클라이언트와 통신이 일정 속도 이상인 서버들 중에 매칭해줍니다. 3. 로비 서버게임에 입장할 닉네임을 입력합니다. 4. Leaderboard DB현재 유저들의 순위를 실시간으로 갱신해줍니다.유저의 정보는 ID가 전부입니다. 5. 호스트 매니저실제 게임 서버인 호스트 서버의 배치를 관리하고, 각 게임 세션을 할당합니다.각 지역에 호스트 매니저가 하나씩 존재합니다. 6. 호스트 서버실제로 게임 세션을 호스팅하는 서버입니다.지역별로 여러 개의 호스..
서버 아키텍처 종류일반적인 클라이언트 - 서버 아키텍처게임 서버의 모든 기능이 하나의 코드베이스와 배포 단위로 구성되는 방식배포를 단순하게 할 수 있고, 초기 개발 및 설정이 쉬움확장성과 유지보수에 어려움이 있음초기 스타트업이나 소규모 프로젝트에 적용하기에 좋음 데디케이트 서버 아키텍처게임 회사에서 관리하는 전용 서버를 이용하여 게임 세션을 호스팅하는 방식하나의 서버가 게임 한판 만을 전담높은 대역폭과 최적화된 네트워크 환경을 제공하여 지연 시간을 최소화함FPS게임에서 많이 사용되는 아키텍처로 일관성을 유지할 수 있음 분산 서버 아키텍처단일 서버 대신 여러 서버가 협력하여 하나의 시스템을 구성하는 방식대규모 사용자 기반 처리, 시스템의 가용성과 확장성을 극대화하기에 용이함대부분의 상용 게임들이 이 아키텍..
rest parametersES6에서 도입되었으며 함수의 매개변수로 전달된 가변 개수의 인자를 배열 형태로 처리할 수 있는 기능함수 정의에서 사용되며 스프레드 연산자('...')를 매개변수로 사용하여 구현 (C와 동일)function exampleFunction(arg1, arg2, ...restArgs) { console.log(arg1); // 첫 번째 인자 console.log(arg2); // 두 번째 인자 console.log(restArgs); // 나머지 인자들 (배열 형태)}function sum(...numbers) { return numbers.reduce((acc, num) => acc + num, 0);}console.log(..
동기화가 고려되지 않은 멀티스레드 코드 예시 (JAVA)public class CounterTest { private static int counter = 0; public static void main(String[] args) throws InterruptedException { Thread[] threads = new Thread[10]; // 동기화 없이 실행 for (int i = 0; i { for (int j = 0; j 위 코드를 실행시키면 counter 값이 10000이 아니라 그에 못 미치는 99xx 값이 나온다.이는 데이터 경합 즉, Race condition이 발생한 결관데 동시에 counter 변수의 값을..