본문 바로가기

분류 전체보기

(695)
Game Villages 개발 스프린트 분할 4월 1-2주차 (4.3 ~ 4.14) : User Service (프론트/백) 4월 3-4주차 (4.15 ~ 4.28) : DM Service (프론트/백) 4월 5주차, 5월 2주차 (4.29 ~ 5.12) : Server List Service (프론트/백) > 후원 기능 프론트엔드 : 토스 (장범룡) 5월 3-4주차 (5.13 ~ 26) : Community Service (프론트/백), 마인크래프트 플러그인 (후원 - 유저 > 해당 서버) 5월 5주차 (5.27~ 5.31): Caddy Server 및 전체 서버 구축, 부하 테스트, 마인크래프트 플러그인 (추천 - 서버 보상)
Game Villages Landing Page
Game Villages 서버 계획 MSA, 수평확장 메인 서버 4코어 8스레드 16GB : Gateway - Caddy Server (GO) 처리 서버 1 18코어 36스레드 32GB : Java, GO 처리 서버 2 18코어 36스레드 32GB : Java, GO DB 서버 18코어 36스레드 64GB - MySQL 1(User), MySQL 2(Server List), PostgreSQL(Community), Redis, MongoDB(DM) Java User Service Server List Service GO Community Service DM Service
String Tokenizer vs split split = 토큰화에 대한 생각을 항해 잡담방에 올렸다. 그 뒤 재밌는 질문을 받게 되었다. 그러면 StringToken방식이랑 split메서드에 차이도 크게 있을까요?? 혹은 split메서드는 배열을 따로 받아 사용하는데 메모리관점에서 비효율적인게 아닐까요?? 궁금해서 댓글 남겨요! 질문에 답변 드리기 위해 조사한 결과를 기록한다. 안녕하세요 __ 님 :) 토큰화 방식은 필요에 따라 다른 메서드를 활용하면 좋을 것 같다고 생각합니다. 조사한 내용을 공유 드립니다! StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split는 빈 문자열을 토큰으로 인식하는 차이가 있습니다. StringTokenizer는 결과값이 문자열이라면 split는 결과 값이 문자열 배열입니다. 따라서 Strin..
부하와 오버헤드는 다른 단어이다. 부하 (Load): "부하"는 시스템이나 장치에 가해지는 작업량이나 압력을 의미합니다. 컴퓨팅에서는 주로 CPU, 메모리, 디스크, 네트워크 등의 하드웨어 자원에 가해지는 작업량을 의미합니다. 높은 부하는 시스템의 성능 저하나 응답 지연을 초래할 수 있습니다. 오버헤드 (Overhead): "오버헤드"는 시스템이나 프로세스를 실행하는 데 필요한 추가적인 리소스나 작업을 의미합니다. 이는 실제 작업에 직접적으로 기여하지 않지만, 작업을 완료하기 위해 필요한 추가적인 작업이나 리소스를 말합니다. 예를 들어, 프로세스 간 통신을 위해 추가적인 네트워크 오버헤드가 발생할 수 있습니다.
인코딩 Encoding 과 디코딩 Decoding 인코딩(Encoding): Enable할 때 En ~하게 하다. 되게끔 만들다 라는 어원. 코드하게 하다. 인코딩은 특정한 데이터를 컴퓨터가 처리 가능한 형태로 변환하는 과정입니다. 특히, 문자열을 바이트 형태로 변환하는 과정을 인코딩이라고 합니다. 인코딩은 문자나 기호를 컴퓨터가 이해할 수 있는 숫자 형태로 변환합니다. 가장 일반적인 인코딩 방식으로는 ASCII, UTF-8, UTF-16 등이 있습니다. 예를 들어, 문자 'A'를 ASCII 코드로 변환하면 65가 됩니다. 디코딩(Decoding): De- 되돌리다라는 접두사. 코드 되돌리다 디코딩은 인코딩된 데이터를 원래의 형태로 변환하는 과정입니다. 즉, 바이트 형태로 저장된 데이터를 문자열로 변환하는 과정을 디코딩이라고 합니다. 디코딩은 컴퓨터가 ..
splilt() 메서드는 토큰화의 예시이다. split메서드는 특정 문자열을 기준으로 토큰화한다. "This is a book" ["This", "is", "a", "book"] 내부는 보통은 단순한 for문을 이용한 구조이다. 문자열을 선형 시간(O(n))에 처리하는 방식이다. 효율적인 구분자 검색을 위해 보이어-무어 알고리즘이나 KMP 알고리즘과 같은 문자열 검색 알고리즘을 사용하는 경우도 있을 수 있다.
퀵 정렬 (Java7 이후 Arrays.sort()메서드의 Dual Pivot Quick Sort) 퀵 정렬(Quick Sort) 피봇(Pivot)을 선택해 피봇보다 작은 그룹과 큰 그룹으로 나누는 작업을 반복하여 정렬하는 방식 장점 기준값에 의한 분할을 통해서 구현하는 정렬법으로써, 분할 과정에서 logN 이라는 시간이 걸리게되고 전체적으로 보게 되면 평균 NlogN 으로써 실행시간이 준수한 편이다. 단점 기준값(Pivot)에 따라서 시간복잡도가 크게 달라진다. Pivot이 적당하게 이상적인 값을 선택했다면 NlogN의 시간복잡도를 갖지만, 최악으로 Pivot을 선택할 경우 O(N^2)이라는 시간복잡도를 갖게 된다. Java의 Arrays.sort() 메서드는 기본적으로 Dual-Pivot Quicksort 알고리즘을 사용합니다. 이는 Java 7 이후 버전부터 도입되었습니다. 그러나 Java 7 이..