본문 바로가기

전체 글143

[프로그래머스 데브코스] 백엔드 면접&합격 후기 모집 일정 일정: 서류-실력 테스트-면접-발표 서류지원 자소서에는 제가 그동안 공부했던 흔적들을 주로 기재했습니다. 스프링으로 토이 프로젝트 경험이 있어 그 부분에 대한 정보를 정말 자세하게 적어두었습니다. (이 부분이 크게 작용한 것 같습니다.) 코딩테스트 알고리즘 3문제, SQL 2문제, 객관식,주관식 20문제로 이뤄졌습니다. 알고리즘 1문제 제외하고 다 맞추셔야 합격선정도 될 거 같습니다. 문제는 어렵지 않았습니다. 꾸준히 공부하셨다면 다 맞추실 수 있는 정도인거 같아요. 저는 다 못 맞췄습니다. 면접 면접은 준비를 어느정도 했습니다. 면접이 처음이기도 하고 긴장을 많이 하는 타입이라서 프로젝트 했던 팀원들과 준비했었습니다. 도와주신 포터와 제이콥 감사했어요🙏 맛있는거 사드릴게요 1분 자기소개도 준.. 2022. 3. 8.
[A-ger] @ExceptionAdvice로 에러 처리 API 호출하며 생기는 에러에 대한 공통 처리를 해주기 위해 ExceptionAadvice를 선언합니다. @RestControllerAdvice : Exception 발생 시 JSON으로 반환받기 위하여 생성합니다. @ExceptionHandler: Bean에서 발생하는 에러를 잡아 처리합니다. /** * @Class : ExceptionAdvice * @Description : 도메인에 대한 공통 에러 처리 **/ @RestControllerAdvice @RequiredArgsConstructor @Slf4j public class ExceptionAdvice { private final ResponseService responseService; @ExceptionHandler(ExpiredAccess.. 2022. 3. 2.
[A-ger] Rest Api 응답 데이터 구조화하기 아래와 같은 방식으로 구조화를 진행했습니다. // 표준화한 ACCOUNT { "success": true "code": 0, "message": "성공하였습니다.", "data": { "accountId": 1, "accountName": "frank" }, } [CommonResponse 설계] /** * @Class : CommonResponse * @Description : enum으로 api 요청 결과에 대한 code, message를 정의 **/ @Getter @AllArgsConstructor public enum CommonResponse { SUCCESS(0, "성공하였습니다."), FAIL(-1, "실패하였습니다."); private final int code; private final .. 2022. 3. 2.
[스프링부트] MongoDB로 CRUD 실습해보기 [몽고디비 설치] 2022.03.02 - [맥북 M1] - 맥북으로 도커에 mongoDB 설치하기 [스프링부트 프로젝트 가져오기] start.spring.io로 아래 Dependencies를 추가했습니다. 편의를 위해 Lombok 정도만 추가로 가져오겠습니다. [application.properties]: yml로 하셔도 무방합니다. database 부분을 선언하신 데이터베이스 이름으로 할당해주세요. 아래 세 줄은 선언하신 계정 이름과 패스워드에 맞게 바꿔주세요. spring.data.mongodb.database=test spring.data.mongodb.port=27017 spring.data.mongodb.host=localhost #아래 세 줄을 꼭 추가해야 권한 오류가 나지 않습니다. spri.. 2022. 3. 2.
[운영체제] 메모리 관리 전략 메모리 관리 전략 메모리 관리가 필요한 이유? 메모리의 성능도 올라가지만 그에따라 소프트웨어의 성능도 올라가므로 메모리 부족현상은 계속 발생이 되었다. 제한된 메모리를 최대한 효율적으로 사용하기 위해서 메모리 관리전략이 필요하다. 효율적인 메모리 관리 3가지 동적적재 모든 프로그램을 적재하는것이 아니라 반드시 필요한루틴과 데이터만 적재하는 기법입니다. 루틴: 어느 프로그램이 실행될때 불려지거나 반복해서 사용되도록 만들어진 코드들 입니다. 동적연결 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법입니다. 스와핑 실행중이지 않은 프로세스를 저장장치인 swap영역으로 이동하여 메모리를 확보하는 기법입니다. 잦은 스와핑시에 단점 단편화 잦은 메모리 관리가 일어나면 메모리사이에 틈이 .. 2022. 3. 2.
[운영체제] 동기와 비동기, 블로킹과 논블로킹 동기와 비동기의 차이 동기란? 동시에 일어난다는 뜻입니다. 어떠한 요청을 하였을때 응답(결과)을 한자리에서 동시에 일어난다는 뜻입니다.(한가지 일을 하면 결과가 나올때까지는 다른일은 정지가 된다는 뜻입니다.) 비동기 동시에 일어나지 않는다는 뜻입니다. 어떠한 요청을 하였을때 응답이 한자리에 동시에 일어나지 않아도 된다는 뜻입니다.(한가지일을 마칠동안 다른 일도 실행이 된다는 뜻입니다.) 동기의 장/단점 장점: 설계가 단순(직관)하다.(구성하기 쉽다.) 단점: 효율성이 떨어진다. 비동기의 장/단점 장점: 결과가 나오기까지 시간이 걸리지만 다른 작업을 수행할수 있다. (효율성이 좋다.) 단점: 각각의 일마다 결과시간이 달라서 설계가 복잡하다. 추가적인 궁금한부분 비동기와 병렬의 차이? 비동기는 눈속임으로 동.. 2022. 3. 2.
[운영체제] 외부단편화, 내부단편화 주기억장치 할당 기법 단일 분할 할당 기법 다중 분할 할당 기법 다중 분할 할당 기법 주기억장치에 여러 개의 프로그램 동시 적재 기법 다중 프로그래밍을 위한 기법 고정 분할 할당, 가변 분할 할당 MTF(Multiple contiguous Fixed parTition allocation, 고정 분할 할당) 기법 정적 할당 기법 분할된 메모리(크기 일정)에 배치 한 영역에 한 프로그램 적재 가능 단편화 발생 현재는 안 쓰임 단편화 할당과 반납의 과정에서 사용되지 않고 낭비되는 빈 공간 내부 단편화: 공간이 남는 것 외부 단편화: 공간이 작아서 할당을 못하는 것 분할된 메모리 영역 크기 4k, 프로그램 크기가 5K? 외부 단편화 분할된 메모리 영역 크기 4k, 프로그램 크기 2K? 내부 단편화 MVT(Mul.. 2022. 3. 2.
[운영체제] 가상 메모리 가상 메모리 물리적인 메모리의 크기 한계를 극복하기위한 기술입니다. 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할수 있습니다.(수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법) 가상메모리가 구동하는 아이디어 cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다. 가상메모리는 실제 메모리를 참조한다. 1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다. MMU(Memory Management Unit): CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치. 페이징 시스템(Paging System) 페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다. Page : 고정.. 2022. 3. 2.
[운영체제] Context switching Context switching 컨텍스트(Context)란? CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들을 말함 이러한 컨텍스트는 프로세스의 PCB(Process Control Block)에 저장된다. 그렇기 때문에 이전 작업을 PCB에서 불러와서 이어서 하는 작업이 가능하다. 컨텍스트 스위칭(Context Switching)? 프로세스의 정보의 교체??? 멀티프로세싱하기 위해 CPU를 나눠서 사용하기 위해 Context를 교체하는 것이 Context Switching 단점 Context Switching 때 해당 CPU는 아무것도 못함. → 그래서 빈번하게 스위칭이 발생하면 오버헤드가 발생해 효율 및 성능이 저하된다. 🚩오버헤드란 ? 오버헤드(overhead)는 어떤 처리를 하기 위해.. 2022. 3. 2.
[데이터베이스] MongoDB DB 생성 및 제거 [도커로 데이터베이스 진입] docker exec -it mongodb /bin/bash mongo [데이터베이스 생성]: use Ex) use testmongo로 데이터베이스를 생성합니다. [현재 데이터베이스 확인]: db [데이터베이스 리스트 확인]: show dbs 데이터가 없다면 나오지 않습니다. 데이터를 하나 넣어보겠습니다. 어라 데이터 삽입이 되지 않습니다. 쉘 접근할때 인증을 해야 된다고 합니다. mongo -u root -p 1234 데이터 삽입이 완료되었습니다. employee는 collection에 해당합니다. db.employee.save({ ename : "김식당", depart : "자재팀", status : "B", height: 177 } ) [Collection 리스트 확인].. 2022. 3. 2.
[데이터베이스] MongoDB란 [MongoDB] C++로 작성된 오픈소스 문서지향적 크로스 플랫폼 데이터베이스입니다. 뛰어난 확장성과 성능을 보여줍니다. [NoSQL] 기존의 RDBMS의 한계를 극복하기 위해서 만들어진 데이터 저장소입니다. RDBMS에 있는 JOIN나 정규화가 없습니다. [문서(Document)란?] Document란 RDBMS의 record와 비슷한 개념입니다. 한 개 이상의 key-value 짝으로 이뤄져 있습니다. JSON 형식과 굉장히 비슷한 구조로 보입니다. 도큐먼트는 동적 스키마를 가지고 있습니다. 같은 Collection의 Document끼리라도 다른 스키마를 가지고 있을 수 있습니다. 예시 _idsms 12bytes의 값으로 RDBMS의 기본키 역할을 합니다. 첫 4bytes는 현재 timestamp,.. 2022. 3. 2.
맥북으로 도커에 mongoDB 설치하기 터미널에서 docker pull mongo를 통해 이미지를 다운 받습니다. 도커 위에 이미지 올리기 docker run --name mongodb -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=1234 mongo --name: 사용할 컨테이너의 이름 -d: 백그라운드에서 실행 -p: 호스트와 컨테이너 간의 포트를 연결 (host-port:container-port) --restart=always: 도커가 실행되는 경우 항상 컨테이너를 실행 -e: 기타 환경설정(Enviorment) MONGO_INITDB_ROOT_USERNAME=root // MongoDB의 초기 root 사용자 설정 MONGO_INIT.. 2022. 3. 2.