묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
25강 질문있습니다
JpaRepository를 UserRepository가 상속받게 해줄때, 만든 테이블의 매핑 객체인 User 와 유저 테이블의 id인 Long 타입을 각각 적어주어야 한다고 하셨는데 user객체는 이해가 가는데 갑자기 id인 Long타입은 왜 적나요?
-
미해결[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
예제문제 추가 쿼리 질문
안녕하세요 공부하다가 쿼리에 추가해보고 싶은게 생겨서 질문드립니다!예2: 서브카테코리가 '여성신발'인 상품중 할인가격이 가장 높은 상품의 할인가격 가져오기이 문제에 정석 답변이라면 MAX(dis_price) 컬럼만 도출될텐데요! 앞에다가 해당 상품명 title을 추가해서 총 두 개의 컬럼이 나오게끔 만들어보려다가 막혀서 질문드립니다.원래는 99000짜리 하나만 나와야하는데밑에 쿼리로 하니까 여러개가 나와서요 ㅠㅠ 여러개가 나온 이유는 알거같아요 타이틀을 그룹바이해서 그 그룹별로 제일 높은 가격이 도출된 것 같은데 그건 제가 원하는 답은 아니어서요! 맥스 디스 프라이스를 가진 아이템코드의 타이틀을 어떻게 해야 효과적으로 도출할 수 있나요?SELECT title, MAX(dis_price) FROM items JOIN ranking on items.item_code = ranking.item_code WHERE sub_category = "여성신발" group by title;
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
14강. 유저 업데이트 API, 삭제 API 개발과 테스트 수정하기 안됨
코드대로 글을 잘 작성하고 POST,GET,DELETE도 전부 잘 동작하고 db에서도 확인이 되는데,수정하기만 동작하지 않습니다..어떻게 해야할까요..수정하기 버튼을 누를시 아무런 화면의 변화가 없습니다.
-
해결됨SQL 코딩테스트를 위한 첫 걸음
sql 코딩 테스트에서 index 생성 가능 여부
안녕하세요, 강의 감사합니다. leetcode 나 다른 코딩 테스트 플랫폼에서 응답시간을 짧게 하기 위해 create index 를 사용하는걸 지원하나요? 현재 leetcode 에서 create index 쪽이 계속 syntax error 가 나길래 혹시 막아둔건지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
섹션3 질문 있습니다
안녕하세요!섹션3 마지막 부분쯤 나온 @Component 어노테이션에 대해 질문이 있습니다!이 어노테이션은 다음과 같은 경우에 사용된다고 하셨는데요!컨트롤러, 서지스, 리포지토리가 모두 아니고,개발자가 직접 작성한 클래스를 스프링 빈으로 등록할 때 사용된다. 제가 궁금한 것은 Service 나 리포지토리 모두 우리가 직접 작성한 클래스 아닌가요??그러면 컴포넌트 어노테이션 아닌가요??답변해주시면 감사하겠습니다
-
해결됨장래쌤과 함께하는 쉽고 재미있는 SQL 이야기
주차별 데이터에서 전 주 데이터 가져오기
안녕하세요, 질문드립니다! week. date. 값31 2024-08-02 A31 2024-08-03 A32 2024-08-07 B32 2024-08-08 C 위와 같이 주차별로 쌓여있는 테이블에서 현재 주차가 32주차라고 가정하면32주차의 값을 가져오는게 아니라 저번주 차의 값을 가져오고싶습니다. 원래 대로라면 32주차 (B 값 1개) 가 분모가 되겠지만31주차 (A 값 2개) 로 가져오고 싶습니다ㅠ 방법이 있을까요
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
섹션3 컨트롤러테스트 오류
안녕하세요. 강의노트와 강의를 보면서 수정해 보았는데 resume에서만 test가 실패합니다. 제가 보기엔 resume가 JSON이 null이라서 그런것 같은데 어느 부분을 봐야할지 모르겠습니다. Datainitiallizer.kt를 봐도 잘 안보이네요. 아래는 에러 메세지와 코드입니다.java.lang.NullPointerException: Cannot invoke "org.json.JSONArray.length()" because the return value of "org.json.JSONObject.optJSONArray(String)" is null at com.dogu.portfolio.presentation.controller.PresentationApiControllerTest.testGetResume(PresentationApiControllerTest.kt:66) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) @Test @DisplayName("resume") fun testGetResume() { //given val uri = "/api/v1/resume" //when val mvcResult = performGet(uri) val contentAsString = mvcResult.response.getContentAsString(StandardCharsets.UTF_8) val jsonObject = JSONObject(contentAsString) //then Assertions.assertThat(jsonObject.optJSONArray("experiences").length()).isPositive() Assertions.assertThat(jsonObject.optJSONArray("achievements").length()).isPositive() Assertions.assertThat(jsonObject.optJSONArray("skills").length()).isPositive() }
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
26강 오류입니다 !
Execution failed for task ':LibraryAppApplication.main()'.> Process 'command 'C:/Program Files/Java/jdk-11/bin/java.exe'' finished with non-zero exit value 1 이것은 어떤 에러일까요 ㅠㅠ
-
해결됨인프라공방 - 그럴듯한 서비스 만들기
aws 비용관련 문의
학습을 진행하다보니 aws에서 비용청구가 계속해서 진행되고있는데요. ㅠㅠec2의 비용청구를 중지하려면 인스턴스만 끄면 해결이 되는 문제일까요? 아니면 설정했던 모든 부분에 대한 삭제가 진행되어야 할까요?
-
해결됨Real MySQL 시즌 1 - Part 1
char vs varchar 타입에 궁금한 점이 있습니다.
varchar 타입의 경우 데이터 업데이트시 파편화가 생길 수 있다는 점을 이해했습니다! 다만, char 타입을 쓰면 좋은 경우가 문자열의 길이가 가변성이 크지 않은 경우라고 한다면varchar의 경우에도 길이 가변성이 크지 않은 탓에 처음부터 선언해둔 길이를 벗어나지 않을 가능성이 클 거 같다는 생각이 들었습니다. 만약 주민등록번호라고 한다면 13자리니까char(13)로 하거나 varchar(13)해도 이 자리수를 넘어가지 않을 것이고자주 업데이트 되는 경우라고 해도 char도 그렇고 varchar도 그렇고 길이수만 잘 잡아놓으면fragmenation 문제가 없는 것이 아닌지 궁금합니다. 그럼에도 char를 쓰는 것이 더 좋은 이유가 있을지 궁금해서 질문남깁니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
19강 질문
1. 유저 컨트롤러에서 jdbc를 설정해준적이 없다고 하셨는데 여기서 jdbc클래스설정 이라는게 무슨말인가요?jdbc에 대한 생성자를 말하는건가오?생성자를 설정안해 줘서 탬플릿을 설정안해준거라면 userservice나 userRepositry 모두 다 템플릿에 대해 설정 안해줬는데 저 둘은 스프링빈도 아닌데 어떻게 jdbc템플릿 가져온건가요
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문
안녕하세요, 좋은 강의 감사합니다. 제공해 주신 쿼리에 대해 질문이 있는데요,제 생각에는 아래 쿼리가 특정 부서에서 최대 연봉을 가진 사용자를 조회하는게 아닌,전체 부서에서 최대 연봉이 x 라고 하면,세 부서에서 그 값이 있으면 출력하는 문인것 같은데,제가 어느 부분에서 헷갈린 건지 알려주시면 감사하겠습니다.SELECT * FROM users WHERE salary = (SELECT MAX(salary) FROM users) AND department IN ('Sales', 'Marketing', 'IT'); SELECT MAX(salary) FROM users 는 users 테이블의 최대 salary 를 가져오는것이고,괄호 밖의 department In (...) 은 부서 세개,그리고 salary = (SELECT MAX ...) 와 함께 저 salary 에 해당 하는 users 가져오는 것이 아닌가요? 제가 sql 초보라 양해 해주시면 감사하겠습니다 ...
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
스프링부트,Mysql작업시 빌드
안녕하세요 강의 듣다 궁금한 점이 생겨서 질문 남깁니다! 스프링 부트,mysql 을 이용하여 프로젝트 작업 진행하기 위해 작업 진행전 docker로 초기 환경 세팅을 하고 두가지 동시에 띄우는 작업을 했습니다! 도커 연결전에는 IDE에서 run버튼을 눌러 작업 확인을 했었는데, 지금은 빌드 하고, compose up해서 확인을 해야하는걸까요? run버튼 누르니까 에러가 뜹니다.
-
미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
여유가 되신다면 mmorpg의 꽃, 레이드관련 강의 요청드려도 될까요
용가리가 브레스 쾅발구르기 낙석 쿠과광마지막 발악패턴 비늘탄막 슈슈숭난관을 넘어 던전에서 쌓여가는 우정!상상으로도 가슴뛰는 컨텐츠인데너무 무리한 부탁이겠지유
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
mutableListOf
강의를 들으면서 코틀린 문법도 같이 병행하면서 듣고있는데 이부분 질문을 하고 싶습니다!mutableListOf 로 감싸줘서 넣어져야지 코드가 오류 없이 되는지 궁금합니다. jpa 특성상 그런건가용?
-
해결됨인프라공방 - 그럴듯한 서비스 만들기
validbit
valid bit 1은 메모리에 페이지가 존재하는것 아닌가요?
-
해결됨비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
created_at 에 index 거는것과 지속적인 데이터 증가
안녕하세요, 좋은 강의 감사합니다. created_at 에 index 를 걸어서 order by 와 같은 문제를 해결하는 것을 보았는데요, 데이터가 지속적으로 증가하고 밀리초 단위로 들어오는 created_at 이 있다면, 이것들을 모두 다 인덱스로 걸어도 괜찮은건가요?? 데이터가 계속 커지면 어떻게 처리하나요??
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
WHERE A OR B 에서 인덱스 걸기
안녕하세요, 좋은 강의 제공해 주셔서 감사합니다.[실습] WHERE문에 인덱스를 걸기 vs ORDER BY문에 인덱스를 걸기 강의 에서 질문이 있습니다. 만일 created_at 과 department 가 AND 가 아닌 OR 조건이 주어지면, 데이터 엑세스가 더 많은것에 인덱스를 거는것이 좋을까요?? SELECT * FROM users WHERE created_at >= DATE_SUB(NOW(), INTERVAL 3 DAY) OR department = 'Sales' -- AND 대신 OR ORDER BY salary LIMIT 100;
-
미해결백엔드 개발자 성능 개선 초석 다지기
인덱스 활용 질문
인덱스를 걸때 카디널리티 수치를 확인해 높은 컬럼을 인덱스로 설정하라고 강의에서 들었습니다. 이에 궁금한 점이 몇가지 있습니다.Q1 : WHERE 절에 검색조건으로 사용되는 컬럼이 5가지라고 가정하면 가장 카디널리티가 높은 컬럼 1개만 인덱스로 걸어야 하나요?? 아니면 카디널리티가 높은 순서대로 묶어서 하나의 복합 인덱스를 만들어 주어야 하나요?? 차이점이 궁금하고 어떤 방식이 더 나은 방식인지 궁금합니다 Q2 : WHERE 절에 사용되는 검색조건인 컬럼 한개가 있다고 가정했을때 해당 컬럼의 카디널리티 수치가 낮더라도 인덱스를 만드는게 낫지 않나요? Q3 : Mysql의 경우 범위검색의 경우 B-Tree 인덱스를 사용한다고 알고있습니다 . 강의에서 만든 인덱스도 날짜이고 범위검색이니 B-Tree 인덱스를 사용한거 같습니다. 정확한 일치 검색의 경우 해시 인덱스를 사용할 수 있다고 들었습니다. 이때는 인덱스를 만들때 코드를 어떻게 써줘야 해시 인덱스를 만들 수 있나요?
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
질문이있습니다.
제가 선생님 강의를보고테이블에 천만개의 데이터를 넣고 인덱스를 테스트하고있었는데요, 2가지 질문이 생겼습니다. 질문다음과 같이 익스플레인 에널라이즈를 하면 소요시간이 약 704ms 으로 나옵니다. 그런데 익스플레인 에널라이즈만 제거하고 다시 셀렉트를 하면 소요시간이 1.494로 증가하는데 단순 조회 쿼리와 익스플레인 에널라이즈 쿼리가 서로 다르게 동작해서 그런건가요? 분석때문에 에널라이즈쪽이 더 오래걸릴까 싶었는데 오히려 반대라서 왜 이런현상이 발생하는지 궁금합니다.-> Filter: ((reservation.userId = 389788) or (reservation.seatId = 50)) (cost=11192 rows=10272) (actual time=2.33..678 rows=10271 loops=1) -> Deduplicate rows sorted by row ID (cost=11192 rows=10272) (actual time=2.3..676 rows=10271 loops=1) -> Index range scan on reservation using idx_user over (userId = 389788) (cost=1.11 rows=1) (actual time=0.115..0.115 rows=0 loops=1) -> Index range scan on reservation using idx_seat over (seatId = 50) (cost=1038 rows=10271) (actual time=0.0497..2.77 rows=10271 loops=1) 질문제가 다음과 같은 쿼리에 인덱스를 걸며 테스트해보니복합인덱스 ( userId,seatId or reverse ) 는 전혀 인덱스를 활용하지않고 단일 인덱스를 각각 지정했을 경우에만 아래와같이 인덱스를 병합해서 사용하더라구요. 이렇게 속도를 절반으로 떨어뜨렸는데 아무래도 데이터가 천만개라 그런가 여전히 1초 이상의 시간이 소요되어서 선생님이 보셨을때 여기서 더 개선해볼 방법이 있는지 궁금합니다.where쪽을 건드려 보자니 둘중 하나라도 충족되면 가져와야하는 상황이라면 or 말고 다른건 떠오르질않았습니다.(에널라이즈는 시간이 1초 미만으로 나오지만 실제로 쿼리 돌려보면 소요시간 1.4초 이상으로 찍힙니다. ) CREATE INDEX idx_user ON reservation_entity(userId); CREATE INDEX idx_seat ON reservation_entity(seatId); SELECT `reservation`.`createdAt` AS `reservation_createdAt`, `reservation`.`updatedAt` AS `reservation_updatedAt`, `reservation`.`deletedAt` AS `reservation_deletedAt`, `reservation`.`id` AS `reservation_id`, `reservation`.`userId` AS `reservation_userId`, `reservation`.`concertId` AS `reservation_concertId`, `reservation`.`seatId` AS `reservation_seatId`, `reservation`.`status` AS `reservation_status`, `reservation`.`price` AS `reservation_price`, `reservation`.`concertName` AS `reservation_concertName`, `reservation`.`seatNumber` AS `reservation_seatNumber`, `reservation`.`openAt` AS `reservation_openAt`, `reservation`.`closeAt` AS `reservation_closeAt` FROM `reservation_entity` `reservation` WHERE `reservation`.`userId` = 389788 OR `reservation`.`seatId` = 50; -> Filter: ((reservation.userId = 389788) or (reservation.seatId = 50)) (cost=11192 rows=10272) (actual time=2.33..678 rows=10271 loops=1) -> Deduplicate rows sorted by row ID (cost=11192 rows=10272) (actual time=2.3..676 rows=10271 loops=1) -> Index range scan on reservation using idx_user over (userId = 389788) (cost=1.11 rows=1) (actual time=0.115..0.115 rows=0 loops=1) -> Index range scan on reservation using idx_seat over (seatId = 50) (cost=1038 rows=10271) (actual time=0.0497..2.77 rows=10271 loops=1)