전체 글64 [OS] Blocking / Non-Blocking, Sync / Async 1. Blocking / Non-BlockingBlocking와 Non-Blocking는 제어권의 위치(작업을 진행할 수 있는지 or 기다려야 하는지)로 구분 할 수 있다.1-1. BlockingBlocking 은 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것이다.즉, 호출된 함수가 자신의 로직을 모두 끝낼 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 돌려주지 않는 상황을 의미한다.예시A : B님 xxx 작업을 처리해줘요B : ㅇㅋ 금방 끝나는 일이니깐 어디가지 말고 옆에서 기다리고 있어욤A : 넵(B가 작업을 완료할때 까지 기다려야 한다.)1-2. Non-BlockingNon-Blocking은 다른 주체의 작업에 관련 없이 .. 2024. 6. 17. [회고] AWS Certified Developer 후기,,, 0. 응시 계기올해 목표인 백엔드 개발자로 필요한 역량을 기를 수 있는 자격증 세개 따기,,, 두번째 자격증으로 AWS Developer 자격증을 땄다.해당 자격증은 2월부터 계획했던 자격증으로 사실 4월 중순에 시험을 보고 따려고 했지만 너무너무 바쁘고 할게 많아서 계속 밀렸었다.마지막의 마지막까지 미룬 뒤 더이상 미루면 안된다고 생각해서 인턴을 같이하는 팀원 중 한명이 정처기 시험본다고 해서 같은날에 같이 보자!!! 라고 하면서 일단 시험을 예약해버렸다.원래 클라우드 서비스에 대해서 처음 배울 때부터 굉장히 흥미가 있었던 것은 사실이지만 시험을 준비하면서 진짜 신기한 기술들이 많은 것을 느꼈다.물론 시험을 준비하고 자격증을 땄지만 그 모든 기능들을 사용할 수 있는 것은 아니다. 애초에 돈이 나갈까봐.. 2024. 5. 26. [Spring Boot] Spring Facade Pattern 1. Facade 패턴이란?포스팅에 앞서, Spring Boot에서는 Bean이 Controller, Service, Repository를 어노테이션만으로 알아서 의존성을 주입해주는 좋은 기능을 가지고 있다.그렇다면 우리가 개발을 진행하면서 하나의 Controller가 하나의 Service를 참조하고, 하나의 Service는 하나의 Repository만 참조해가면서 간단하게 데이터만 반환하는 상황만 있을까?? 간단한 기능을 만들면서도 확인한 결과 절대 아니다. 왜냐하면 하나의 데이터(DTO로 변환해서)를 반환할 때도 여러 엔티티를 참조해서 상황에 맞는 데이터를 잘 조립해서 반환해야 했기 때문이었다. Service 레이어에서 Repository를 너무 많이 의존하고 여러 엔티티를 통해 데이터를 가져온다는 .. 2024. 5. 18. [DBMS] Index를 통한 SELECT 쿼리 성능 개선 1. INDEX1-1. INDEX란?데이터베이스 인덱스(index)는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블에 저장된 데이터의 검색 속도를 향상시키기 위한 자료구조이다. 인덱스는 데이터베이스 내의 특정 컬럼(열)이나 컬럼들의 조합에 대한 값과 해당 값이 저장된 레코드(행)의 위치를 매핑하여 데이터베이스 쿼리의 성능을 최적화하는 데 중요한 역할을 한다. 예를 들어, 책에서 원하는 내용을 찾는다고 가정하면, 책의 모든 페이지를 넘기면서 원하는 내용이 나올 때까지 찾는 것보다 목차 또는 저자가 남긴 색인(index)을 통해 찾는 것이 더욱 빠를 것이다. 데이터베이스의 인덱스가 책의 목차와 색인과 같은 역할을 한다. 간단하게 정리하면 인덱스의 개념은 아래와 같다.테이블에 대한 검색의 속도.. 2024. 5. 16. [Spring Boot] QueryDSL을 활용한 동적 쿼리(Dynamic SQL) 조회하기 (BooleanBuilder 활용) 1. Query DSL 이란?Spring boot에서 Spring Data JPA는 개발자가 간단한 CRUD 메서드 및 쿼리 메서드를 사용할 수 있다.하지만, 원하는 조건의 데이터를 검색해야 할 때 다양한 조건들이 있다면 매개변수는 점차 증가하게 되고 성능 및 가독성이 떨어진다.이때, 개발자는 JPQL을 활용해서 직접 SQL을 작성하여 데이터를 조작할 수 있지만, 로직이 점점 복잡해지면 마찬가지로 SQL에서의 개행이 반복되다보면 해당 쿼리가 어디에 어떻게 쓰이는지 알 수 없을 때가 있다. 또한, JPQL의 경우 복잡한 SQL을 작성하다보면 나올 수 있는 오타/문법적인 오류에 대해서 컴파일 시점에 확인할 수 없고 런타임에서 발생한 에러를 추적해야 한다. 이러한 불편함을 해소해주는 요소 중 하나로 Query.. 2024. 5. 14. [백준] 17143번 낚시왕 (Gold 1) 문제링크 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 문제 접근 1. 2차원 배열에 상어가 존재 2. 각 상어들은 (방향 / 크기 / 속도)를 가진 객체 3. 매초마다 사람은 오른쪽으로 한칸씩 이동하면서 상어를 잡는다. 4. 상어가 이동하는 방향은 1->2->1 혹은 2->1->2 혹은 3->4->3 혹은 4->3->4 이다. 5. 즉, 상어는 아무리 많이 이동해도 매초 (R-1) * 2 마다 같은 위치에 위치하고 같은 방향을 바라보게 되어 실제로 움직이는 것은 (Speed % ((R-1.. 2024. 4. 20. [백준] 17616번 등수 찾기 (Gold 3) 문제 링크 17616번: 등수 찾기 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에 세 정수 N, M, X가 공백을 사이에 두고 주어진다. (2 ≤ N ≤ 105, 1 ≤ M ≤ min(N(N-1)/2, 5×105), 1 ≤ X ≤ N) . 다음 M 줄에는 각각 두 정수 A, B가 주어 www.acmicpc.net 문제 접근 문제는 "최대 몇등부터 몇등까지 할 수 있냐" 를 구하는 문제다. 이 말은 "내 앞에 확정 몇명이 있고 + 내 뒤에 확정 몇명이 있냐" 를 묻는 것과 동일하다. 문제의 입력 형태 "a b"는 "a가 b보다 앞에 등수에 위치한다"는 뜻으로, 이를 통해서 2차원 벡터 vector arr[MAX] 를 통해 단방향 연결을 구현했다. 또한 vector rev_arr[MAX]를 통해 반대 .. 2024. 4. 18. [회고] ASAC_04 해커톤 후기... 해당 포스팅은 ASAC 4기를 마무리하며 진행했던 해커톤에 대해서 간단하게 프로젝트를 진행하며 작성한 노션을 바탕으로 전체적인 흐름을 되뇌어보고 부족한 점을 회고하기 위한 글입니다. 이미 회고를 노션에서 했기 때문에 캡쳐가 대부분,,,, 0. 들어가기전ASAC 4기의 모든 이론 강의가 마무리되며 그동안 배웠던 것들을 실제로 활용할 수 있는 해커톤을 하루동안 해보자는 이야기가 나왔다.나는 해커톤을 진행해본 경험이 없기 때문에 무조건 좋다고 했다기간은 무박 2일로 진행 방법은 이랬다.먼저, 수업 중에 해커톤에서 해야하는 행동 / 하지 말아야 하는 행동으로 나뉘어서 온보딩을 했다.그후, 전날 주제를 발표한 뒤 각자 하나의 주제를 준비해갔다다음날 오전에는 각자 준비한 주제를 발표하고 팀을 짰다. 1. 팀 빌딩나.. 2024. 4. 17. [Docker] Github Actions을 활용한 Spring 자동 배포, Docker Image run(CD) (2) 0. GitHub Actions를 통한 CD 프로세스 진행하기 전 이전 포스팅에서 Github Actions를 사용한 CI 자동화 프로세스 플로우에 대해서 알아봤다. 이번 포스팅에서는 CD 자동화 프로세스 플로우를 학습하고 구축하는 것을 목표로 하려고 한다.즉, 이번 포스팅에서는 진행할 내용 중요한 목차는 아래와 같다.Github Actions에서 EC2에 접근하기이때, IAM 기능을 통해서 Github Actions이 EC2에 접근할 수 있는 권한을 설정해야 한다.기존 EC2에서 구동중인 Docker Container 종료 후 CI를 통해 새롭게 생성된 Docker Image 구동사실 바로 처음 Docker Container를 구동한다면 종료하는 기능이 필요 없을 수 있지만 깔끔하고 에러가 없는 것이.. 2024. 4. 9. 이전 1 2 3 4 5 6 ··· 8 다음