개인용 클라우드 서비스를 재정비하고 있는데 기존에는 파일갯수가 기껏해야 몇천개 수준에서 갑자기 몇백만개 수준으로 파일이 급증하면서 너무 느려져서 업그레이드 해야할 필요성을 느꼈습니다. 그럼 기존과 변경한 방식을 예시코드를 통해 비교해보겠습니다. 기존 DFS 방식 해당 폴더에 가서 파일 리스트 확인 후 정렬 파일 리스트에 폴더가 존재시 해당 폴더를 탐색 코드 public void filesDFS(){ String originPath = "E:\\WorkSpace"; File defaultFile = new File(originPath); File[] files = defaultFile.listFiles(); long size = files.length; for(File file : files){ size ..
분류 전체보기
원하는 프로젝트에 txt 파일을 하나 작성합니다. 저는 .gitmessage.txt 라는 파일을 사용합니다. 그리고 터미널을 열어서 아래와 같이 작성합니다. git config --local commit.template .gitmessage.txt # commit 메세지 수정 vscode로 설정 git config --global core.editor "code --wait" 그러면 해당 프로젝트는 깃 커밋 메세지가 기본으로 .gitmessage.txt 파일에 있는 내용으로 설정이 됩니다. 아래는 적용 예시입니다.
기존 서버 환경 Ubuntu 20.04.6 LTS Docker 1. MongoDB 설치 docker run -d --restart always --name mongodb -e MONGO_INITDB_ROOT_USERNAME={아이디} -e MONGO_INITDB_ROOT_PASSWORD={패스워드} -p 27017:27017 mongo 옵션내용 포트 : 27017 자동재실행 : always 컨테이너 이름 : mongodb 2. MongoDB conf 파일 수정 (인증 관련 설정) docker exec -it mongodb /bin/bash 위 명령어를 통해 컨테이너에 접속하여 아래 명령어를 통해 conf 파일 수정 vi /etc/mongod.conf // or vim /etc/mongod.conf ※ 만..
개인 프로젝트를 진행 하던 중에 백엔드 파트 쪽 기능이 정상작동을 안한다는 것을 깨달았습니다. 로그를 보면 좀 더 쉽게 파악이 가능할텐데 그럼 어떻게 로그를 확인 및 수집할지 고민을 해보았습니다. 1. 어떤 로그를 확인하고 싶은지 결정 모든 과정을 마치 알고리즘 문제 풀때 반례 찾듯이 코드 한줄마다 로그를 수집하고 싶지 않아 기준을 정했습니다. 기능 단위 동작 에러 발생시 시간, 발생 위치, 해당 데이터 2. 로그를 띄우는 방법 1) 개발 할때 로그 확인 위 스크린 샷 처럼 IDE에서 Log를 찍고 그 결과를 보면 가능합니다. 하지만 이는 서비스를 배포하면 로그를 확인하는데 매우 제한적입니다. 장점 : 개발 단계에서 로그를 쉽게 설정할 수 있다. 단점 : 사실상 개발 할때만 확인이 가능하다. 2) 로그 ..
알고리즘을 공부하면서 라이브러리도 같이 공부하는 중에 발견한 내용 보통 제공되는 라이브러리들은 엄청난 고수분들이 고민하고 최적화하여 작성된 코드이기에 공부할때 종종 참고합니다. 그러다 문득 Arrays.fill() 이란 메소드는 어떻게 동적하는지 궁금하여 살펴보았습니다. 열어보기전 저의 생각은 단순 for문 탐색으로 하는게 아니라 뭔가 고오급 스킬이 있겠지? 이거였습니다. 그동안 봐온 코드들은 어떻게 하면 이런 코드를 생각할 수 있지 하며 감탄한적이 한두번이 아니기 때문입니다. 부푼 마음으로 열어본 코드는? 네 뭐... 큰 그런건 없었네요. 배열 길이를 먼저 정의를 해서 i값 비교할때마다 길이를 계속 측정하는 것을 미리 방지하는 디테일은 있지만 방식은 의외로 단순해서 놀랬네요. 문제를 해결할때 생각을 단..
Spring Boot를 이용해서 개발을 하다가 문득 궁금증이 생겼습니다. Spring Boot는 여러 개의 요청을 어떻게 병렬적으로 처리할까? 바로 알아보겠습니다. Spring Boot가 병렬적으로 처리를 하긴 하나? 아래의 코드를 보겠습니다. @RestController() @RequestMapping("/study") public class StudyController { private final Logger log = LoggerFactory.getLogger(this.getClass().getSimpleName()); @GetMapping("/threadPool") public String threadPoolTest(){ try{ log.info("Method start!"); Thread.sle..