코딩공부
-
내일배움캠프 84일차코딩공부 2023. 9. 12. 21:05
오늘은 뷰에서 offset 방식과 No offset 방식의 페이징을 각각 적용했다. 쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요. 쿼리 최적화란 select문을 보다 빠르고 효율적으로 실행되도록 하는 작업입니다. 데이터를 빠르게 가져옴으로서 비용 감소와 서비스의 질을 높일 수 있습니다. 쿼리 최적화는 휴리스틱 최적화와 비용 기반 최적화의 두 가지 범주로 크게 나눌 수 있습니다. 휴리스틱 최적화는 개발자 또는 데이터베이스 관리자가 수동으로 정의한 사전 결정된 규칙 및 모범 사례 집합에 의존합니다. 이러한 규칙에는 일반적으로 중복 작업 제거, 검색 조건 단순화 또는 처리 시간을 줄이기 위한 쿼리의 작업 순서 재정렬과 같은 기술이 포함됩니다. 이 접근 방식은 쿼리 성능을 향상시킬 수 있지만 비용 ..
-
내일배움캠프 83일차코딩공부 2023. 9. 11. 20:55
기술면접 질문과 답 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요. 멀티 프로세스란 두개 이상 다수의 프로세서가 협력적으로 하나 이상의 작업을 동시에 처리하는 것을 말합니다. 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용합니다. 멀티 스레드란 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것입니다. 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료 될 위험을 갖고 있습니다. 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높지만, 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지..
-
내일배움캠프 82일차코딩공부 2023. 9. 8. 21:00
오늘은 페이징 처리에 No offset을 적용해보고, 페스티벌 수정 시 태그 변경 여부 확인 기능을 추가하려고 한다. No Offset을 적용할 항목 유저 팔로워/팔로잉 조회 기능 태그 전체 조회 기능 리뷰 댓글 전체 조회 기능 < 고민중 No Offset은 생각보다 어려워서 다 하지 못했고, 태그 확인 기능만 작성할 수 있었다. 기존의 페스티벌 수정 시에는 페스티벌과의 연관관계를 모두 삭제하고 새로 생성했지만, 이번에는 태그 리스트에 변화가 있을 때만 해당 작업을 실행하도록 하였다. 다음의 블로그 글을 참고하여 순서 상관 없이 리스트끼리 비교할 수 있는 containsAll()메소드를 사용하면 된다고 생각한다. https://playground.naragara.com/513/ [Java] 자바 Arra..
-
내일배움캠프 80일차(QueryDSL사용)코딩공부 2023. 9. 6. 21:13
오늘은 프로젝트에 QueryDSL을 적용하는 작업을 한다. QueryDsl 사용을 위해 세팅하는 과정을 기록해 두겠다. QueryDSL 사용을 위해 우선 다음 코드를 build.gradle의 dependencies에 세팅한다. // QueryDSL 설정 implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" build를 ..
-
내일배움캠프 79일차코딩공부 2023. 9. 5. 21:17
오늘은 다음주차로 넘어가서 좀더 심화적인 과정을 각자 하기로 했다. 나는 QueryDSL 적용을 맡았다. 기술면접 질문과 답 16. OSI 7계층에 대해 아는대로 설명해주세요. OSI 7계층이란 통신이 일어나는 과정을 7단계로 정의한 국제 통신 표준 규약입니다. 각 계층은 독립되어 있으며 계급과 상하구조가 존재합니다. L1부터 물리 계층, 데이터링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층으로 이루어져 있습니다. 각 계층은 하위계층을 사용하고 현재 계층의 기능을 포함하여 상위계층에 제공합니다. 전송시 각각의 층마다 인식할 수 있어야 하는 헤더를 붙이는데 이를 캡슐화라고 합니다. 수신시에는 계층이 올라갈 수록 헤더를 떼내는데 이를 디캡슐화라고 합니다. 17. 세션 기반 인증과..
-
내일배움캠프 77일차코딩공부 2023. 9. 1. 20:48
오늘은 리드미 파일 작성과 페이징 처리 보충을 했다. 뷰에서도 페이징을 적용하고 싶었는데 시간상 하지 못했다. GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요. get은 요청하는 데이터가 http url의 일부로 포함되어 전송되며, 일반적으로 조회 작업에 사용됩니다. post는 요청 데이터를 http 메시지 본문에 담아 전송하며, 서버의 상태를 변경하거나 데이터를 추가하는 작업에 사용됩니다. get의 데이터 흐름은 사용자가 브라우저에서 요청을 보내면 브라우저가 서버에 요청을 보내고 서버가 요청을 처리하고 필요한 정보를 응답하면 브라우저가 응답을 받아 사용자에게 표시하는 것입니다. post의 데이터 흐름은 사용자가 데이터를 입력하고 제출 버튼을 클릭하면 브라우저가 데이터를 담아 서버에 요..
-
내일배움캠프 76일차코딩공부 2023. 8. 31. 20:39
오늘은 간단한 랭킹 기능을 구현했다. 과정에서 @Query를 사용했다. 기술면접 질문: ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요? 답변: ORM이란 객체 관계 매핑의 약자입니다. 프로그래밍 언어의 객체와 관계형 테이터베이스의 테이터를 자동으로 매핑해 주는 도구입니다. 정적인 상황에서 사용하는 것이 권장되기 때문에 복잡한 쿼리와 동적인 쿼리를 사용할 때는 문제가 발생할 수 있습니다. 그럴 때는 문자열 형태로 직접 쿼리문을 작성하는 JPQL이나 자바코드로 작성하는 QueryDsl 사용이 권장되고 있습니다.