'섹션 1. 1장 스프링 부트 개발 준비하기' - '1. JDK와 STS설치, 웹 서비스의 동작 원리, Spring Boot Devtools과 롬복 설치 등' 관련된 내용 입니다. 'LiveReload++'가 '이 확장 프로그램은 Chrome 확장 프로그램 권장사항을 준수하지 않으므로 더 이상 지원되지 않습니다.'라고 뜨면서 '크롬에 추가' 버튼이 비활성화 되네요. 혹시 LiveReload++와 비슷한 대체할만한 게 있나요?
안녕하세요. 인덱스를 활용한 조회 성능 개선을 공부하던 중 궁금한 점이 생겨 질문드립니다. 현재 저는 OFFSET 기반 pagination을 사용하는 서비스 를 개발하고 있으며, 다음과 같은 환경에서 성능 테스트를 진행했습니다. 데이터: 약 1,000만 건 서버: EC2 t3.small DB: RDS t4g.micro k6 vus100 1. 문제 상황 초기에는 OFFSET 제한 없이 마지막 페이지까지 이동 가능하도록 구현했습니다. 하지만 데이터가 1,000만 건 수준으로 증가하자, 깊은 페이지로 갈수록 조회 속도가 급격히 느려지는 문제 를 확인했습니다. 2. 고민 및 제약 일반적으로 이 문제는 Keyset Pagination(커서 기반) 으로 해결하라고 많이 알려져 있습니다. 하지만 제 서비스는 👉 네비게이션 바를 통한 페이지 직접 이동 (ex. 1, 10, 100 페이지 클릭) 이 필요하기 때문에 Keyset 방식만으로는 요구사항을 만족시키기 어렵다고 판단했습니다. 3. 적용한 개선 방법 다음과 같은 방식으로 성능 개선을 진행했습니다. OFFSET 최대 범위를 제한 (최대 10,000 페이지 / OFFSET 100,000) 커버링 인덱스 적용 조회 방식 개선 먼저 ID만 조회 → 이후 필요한 10건만 상세 조회 전체 게시글 수(count)는 캐싱 처리 4. 성능 개선 결과 [Page 10] avg: 1.4s → 700ms p95: 4.5s → 1.8s [Page 100] avg: 17s → 1.18s p95: 24s → 3.3s [Page 1000] avg: 32.1s → 1.7s p95: 59s → 4.27s 5. 추가 제약사항 로그인 사용자와 비로그인 사용자의 조회 결과가 다름 (사용자별 구독 게시글이 포함됨) 따라서 캐시는 비로그인 사용자에만 적용 위 성능 수치는 로그인 사용자 기준 6. 현재 고민 위와 같이 개선했지만, 👉 여전히 성능이 충분하지 않다고 느끼고 있습니다. 특히 궁금한 점은 다음과 같습니다. 7. 질문 OFFSET 기반 pagination을 유지하면서 👉 추가로 성능을 개선할 수 있는 방법이 있을까요? 다음과 같은 방법들을 고려했는데, 방향성이 맞는지 궁금합니다. RDS를 2개를 사용하여 조회 성능 데이터를 각각 2개의 db가 처리하도록 한다? Keyset + OFFSET 혼합 방식 ( 일반적인 페이지 이동은 Keyset Pagination을 사용하고, 사용자가 특정 페이지를 직접 입력하거나 점프하는 경우에만 제한적으로 OFFSET 기반 조회를 사용하는 혼합 방식) RDS 스펙 업그레이드 또한 에펨코리아( https://www.fmkorea.com/ )와 같은 대형 커뮤니티는 제가 원하는 페이지 네이션 방식을 사용하면서 깊은페이지(최대 1만)도 지원하고 동시접속자 수십만 페이지 수천~수만 대량 데이터 환경에서도 빠른 조회 성능을 유지하는데 👉 이러한 서비스들은 어떤 방식으로 pagination 및 조회 성능을 처리하는지 궁금합니다.
select o from Order o where o.orderAmount > ALL(select p.stockAmount from Product p) ALL 예제가 강의록에 위와같이 되어있던데요. 이게 아래 sql 문처럼 서브쿼리에 MAX 적용한 거랑 동일한 결과를 내는 걸까요?? select o from Order o where o.orderAmount > (select MAX(p.stockAmount) from Product p)
다차원 배열과 문자열 배열 21:45 다차원 문자열 배열에서 포인터 변수 관련으로 질문이 있습니다. *arr[2][2]={{"Hello", "World"}, {"app", "dev"}} 이렇게 2차원 문자 배열이 있을 때 printf("%c\n", arr);의 답은 arr의 초기값으로 H인지 아니면 Hello인지 궁금합니다. 그리고 arr+1 또는 arr ++ 하면 다음 주소로 이동하는 값을 나타내는 것이라고 하는데 그러면 답이 e인지 아니면 World인지 궁금합니다.
다차원 배열과 문자열 배열 1:14 예를 들어, {2, 4, 8, 10, 12} 라는 배열이 있을 때 포인터 p 변수 경우 *(p+4)를 하면 12가 답이 됩니다. 하지만 아래와 같이 다차원 배열 일 때 {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}} *(p+4)를 하면 답이 어떻게 되는지 궁금합니다.
안녕하세요! 좋은 강의 감사합니다! 제가 1년 동안 기획하고 개발해서 플레이 스토어에 출시한 커뮤니티 앱이 있습니다. 그 후 6개월동안 꾸준히 업데이트하고 관리해서(코드 13만줄, 앱 계속 운영중) 현재 1300다운로드, 리뷰 80개를 달성했는데, 이제 취업을 하려고 하니 차라리 적당히 하고, 다른 스펙 쌓는 게 나았을까 생각이 드네요 저의 성과가 어느 정도 가치가 있는지 솔직한 평가가 궁금합니다. 앱 개발에 너무 몰두하다 보니 다른 팀 프로젝트나 자격증이 부족하다고 느껴져서 만약 그렇게 큰 가치가 없다고 하면 부트캠프를 지원하거나 해서 팀 프로젝트를 쌓고, 가치가 있다고 하면 코테에 몰두하려고 합니다 정말 솔직한 말씀 부탁드립니다!
함수와 재귀함수(v2) 22:15 void printString(char *str){ printf("입력된 문자열: %s\n", str); } int main(){ char myString[] = "this is string"; printString(myString); return 0; } 위 구문에서 void 구문 중 char *str 부분에서 설명으로 myString을 가리키는 주소 값 중 1번째를 가리킨다고 하는데 t가 아니라 왜 this is string 배열 전체를 의미하는지 이해가 되지 않습니다.
섹션[6] 66.[출제유형] 거리측정, 최단거리 페이지 오타 방법 2) 큐에 거리 정보까지 함께 저장하는 방식 ✔ visited를 사용한 구현 코드 설명에 visited 코드 예시가 아니라 아래 설명되어있는 distance와 동일한 코드 예시로 되어있습니다. visited로 활용하는 코드로 변경 필요할 것 같습니다. 현재 노션도 이와 동일하게 되어있습니다..!
포인터 조작과 출제 패턴(2. 포인터 중가/감소, 이중 포인터) 9:40 포인터 값 관련하여 예를 들어 배열 값이 5, 7, 9, 11, 13일 경우 *(ptr_a + 1) 출력값에 대해서는 초기 인덱스 [0]의 값 5에서 포인터 위치를 1칸 오른쪽으로 이동 후 해당 값에 대한 것을 적는것으로 확인이 되는데 그러면 답은 7이 될 겁니다. 지금 강의를 보면 ++이나 +1에 대해서는 값을 더하기 1하는 것이 아닌 포인터 위치를 오른쪽으로 1칸 이동시키는 것만 나오는 것 같은데 값 자체를 1증가시크는 것과 포인터 위치를 1 오른쪽으로 이동하는 것 관련하여 어떻게 구분하는지 모르겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 지금 영상 따라 진행하던도중 막혔는데 최신 버전 설명도 읽어봤으나 무슨 말인지도 하나도 모르겠습니다.. 계속 오류만 뜨고 화면도 전혀 다르고...
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 강의 자료의 버전 별 파라미터 차이에 관해 질문드립니다. HttpRequestHandlerV2는 process()에 Socket 파라미터를 받지 않고 멤버 변수를 쓰는데, HttpServerV1과 V3부터 최종 버전까지는 process()에 Socket을 받는 것으로 강의 자료에 나와 있습니다. 어떤 스타일을 따르는 게 맞을까요?
강의에서는 직접 만들어서 쓰기도 한다고 언급하셨는데, 그게 업계에서 대부분이 그렇게 쓰는건지, 아니면 특수한 경우에서만 그렇게 썼던 것인지 궁금합니다. 강의에서 나온 xnew 같은 것들을 만약 디버깅이나 개발의 편의성을 위해서 직접 쓴다면, 제가 개인 프로젝트를 할 때 강의에서 나온 주요 서버 엔진 코드(매크로 등)를 기본 베이스로 깔고 해도 되는건가요? 아니면 만들다가 필요한 부분이 있으면 그때 그때 엔진도 같이 발전시켜 나가는 형태로 개발이 되는건가요? 이 강의를 다 듣고 추후에 포트폴리오를 만들 때 강의에 나온 코드를 이용하여도 되는지 궁금합니다.