학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Switch 문을 while 문 중간에 넣었을 때 break 는 중단되지 않았습니다. return 문은 프로그램을 종료시켰습니다. 왜 break 문은 쓸 수 없는지 궁금합니다! package method.ex; import java.util.Scanner; public class MethodEx4 { static Scanner sc = new Scanner(System.in); static int balance = 0; public static void main(String[] args) { while (true) { switch (chooseMenu()) { case 1 -> balance = deposit(); case 2 -> balance = withdraw(); case 3 -> checkBalance(); case 4 -> { printFooter(); return; // break 대신에 return 문 쓰기 } default -> printError(); } } } static int chooseMenu() { System.out.println("------------------------"); System.out.println("1.입금|2.출금|3.잔액 확인|4.종료"); System.out.println("------------------------"); System.out.print("선택: "); return sc.nextInt(); } static int deposit() { System.out.print("입금액을 입력하세요: "); int depositAmount = sc.nextInt(); balance += depositAmount; System.out.println(depositAmount + "을 입금하였습니다. 현재 잔액: " + balance + "원"); return balance; } static int withdraw() { System.out.print("출금액을 입력하세요: "); int withdrawAmount = sc.nextInt(); if (balance >= withdrawAmount) { balance -= withdrawAmount; System.out.println(withdrawAmount + "원을 출금하였습니다. 현재 잔액: " + balance + "원"); } else { System.out.println(withdrawAmount + "원을 출금하려 했으나 잔액이 부족합니다."); } return balance; } static void checkBalance() { System.out.println("현재 잔액: " + balance + "원"); } static void printFooter() { System.out.println("시스템을 종료합니다."); } static void printError() { System.out.println("잘못 번호를 입력하였습니다."); } }
2시간동안 꼼지락 거리다가 이상한 폴더에 mingw-w64가 숨어있는 것을 발견하였습니다! 왜인지는 모르겠으나 과거에 C언어 코딩 독학용으로 깔았던 Dev-Cpp(데브씨플플) 폴더 안에 MinGW64라는 이름으로 있는 것 아니겠어요?! 그리고 열어본 결과 존재 합디다... 그래서 신나서 글을 쓰던 도중 '어? 이거 지우고 다시 깔면 에러가 안 뜨지 않을까?' 해서 지워봤습니다 안 되더라구요... 다시 방황하던 중 msys2를 설치하라는 답변글을 보고 설치했었던 msys2 폴더에서 자포자기한 심정으로 gcc.exe를 검색해 봤습니다 그런데 요녀석이 ucrt64\bin 안에도 숨어있더라구요! 그래서 이번에는 실험 그딴거 안하고 바로 연결했습니다
변수타입 1 강의에서 7:20 쯤 설명하시는 리터럴에 대해 이해가 잘 되지 않는 점이 있습니다. 변수의 값은 변할 수 있지만 리터럴은 개발자가 직접 입력한 고정된 값이다. 따라서 리터럴 자체는 변하지 않는다. 라고 강의 내용과 강의자료에 설명이 되어있습니다. 위 내용이 무슨 뜻인지이해가 잘 안됩니다. 개발자가 변수에 입력한 값이 리터럴 이고,, 리터럴을 수정하면 변수 값이 변하는 것 아닌가요?
안녕하세요 Querydsl Projection 을 활용해 DTO에 담는경우 성능 관련 질문이 있습니다. Querydsl에서 Projections.constructor를 활용해서 query를 작성하는경우 fetchJoin이 되지 않더라구요. 일대 다 관계에서 fetchJoin을 하지 않게되면 n+1 이슈가 발생할거 같은데 Projections을 활용하는 환경에서 성능개선은 어떻게 해야할까요?
공부한 내용을 테스트해보려고 다음 코드를 작성했습니다. #include <stdio.h> #include <stdlib.h> int var_global_initialized = 1; int var_global_uninitialized; void func_test(); int main(void) { // 값이 저장되는 메모리 영역과 그 주소 // Code 영역 printf("%llu [Code]\n", (unsigned long long)"I am a String."); // Data 영역 printf("%llu [Data]\n", (unsigned long long)&var_global_initialized); // BSS 영역 printf("%llu [BSS]\n", (unsigned long long)&var_global_uninitialized); // Heap 영역 char* var_dynamic = (char*)malloc(sizeof(char) * 100); printf("%llu [Heap]\n", (unsigned long long)var_dynamic); // Stack 영역 func_test(); return 0; } void func_test() { int var_local = 0; printf("%llu [Stack]\n", (unsigned long long)&var_local); }; 메모리 영역 별 간격이 너무 작게 출력되는데 올바르게 작성한게 맞을까요..?? 참조 온라인 컴파일러 링크 문자열 리터럴이 저장되는 메모리 영역 링크 메모리 영역별 예제 코드 링크
[질문 내용] 제가 지금 이해한 내용으로는 Parent parent = new child(); 가 있을때 메모리에는 Child를 기준으로 상위 부모 클래스만 메모리에 적재되고 (편의상 Child 메모리라고 하겠습니다), parent의 참조 주소는 생성된 Child 메모리 안의 Parent 클래스를 참조하며, parent의 멤버변수는 Parent 클래스의 멤버변수만 가질 수 있고, 오버라이딩된 메소드가 존재한다면 무조건 오버라이딩된 메소드가 우선권을 가진다 라고이해했는데, 덧붙일 개념들이 혹시 있을까요? 아, 그리고 만약 오버라이딩된 메소드가 부모클래스에서 실행할 수 없는 메소드라면 어떻게되는지도 궁금합니다. (혹시, 오버라이딩된 메소드가 부모클래스에서 실행되지않을 가능성은 아예 없나요?)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 16분 즈음부터 @Table(name = "MBR") 같은 것들은 런타임에 영향을 주지만 @Column(unique = true) 같은 제약조건들은 런타임에 영향을 주지 않는다는 말이 왜 그런 건지 이해가 잘 안 가는데 조금 더 설명해주실 수 있을까요?? 둘 다 데이터베이스에 어떤 쿼리를 날려야 하는데 하나는 런타임에 영향을 주고 하나는 그렇지 않다는 게 이해가 잘 가지 않습니다.
예를들어 id값이 20~30인 member를 가져올때 영속성 컨테스트안의 1차캐시에는 값들이 어떻게 저장이 되나요? 일단 강의에서는 em.persist 와 em.find 인 경우 1차 캐시에 값을 저장한다고 해서 위와 같이 jpql을 사용했을때 일단 영속성 컨테스트에 값이 저장되는지 확인해보았습니다. 영속성 컨테스트에 값이 저장되었다면 commit시 1.flush 발생 2.스냅샷과 비교해서 변경감지. 3.변경이있었다면(setter) 쓰기 지연 SQL 저장소에 UPDATE쿼리 생성 및 저장 4.쓰기 지연 SQL 저장소에 있는 모든 쿼리를 실행. 5.커밋(실제DB반영) 위 과정이 일어나서 NAME 값이 changeMember로 변경되어야하는데 확인해보니 실제로 값이 변경되는걸 확인할 수 있었습니다. update 쿼리도 2번일어나는데 그럼 위의 예시에서 executeQuery로 jpql 실행 시 1차 캐시에 값이 @id Entity 20 member(20,memberA) 30 member(30,memberB) 이렇게 저장되는 거 같은데 맞나요??(리스트로 가져오면 , 하나씩 풀어서 저장) 그리고 commit시 위에 제가 생각한 과정대로 이해한게 맞을까요?
외래키 사용을 지양하라는 내용이 있어서 링크된 글을 읽어봤는데 궁금증이 있습니다. 외래키를 지양한다면 PK 값을 다른 테이블에 넣으면서 그 값으로 조인을 사용하는건가요? 외래키를 지양했을 때 성능상의 이점은 알겠는데 결국 데이터 정합성 부분에서 문제가 발생합니다. RDB에서 데이터 정합성이 깨지면 사용하는 의미가 없다고 하는데 이부분에선 어떻게 생각하시나요? 외래키를 안쓸경우 JPA에서 ManyToOne같은 메소드도 사용하지 않는건가요? 그리고 해당 주장에 대해 반박하는 아래의 링크도 있는데 이 의견은 어떠신가요? https://gdsc-university-of-seoul.github.io/foreign-key/
안녕하세요 강사님! 아래 서보모터 관련 질문을 썼던 학생입니다:) 같은 문제로 여러 번 질문드려 죄송합니다ㅠㅠ 강사님께서 말씀 주신대로 pwm 파형을 오실로스코프로 찍어봤는데 동작펄스폭 내에서 제대로 출력되고 있었습니다. 혹시 몰라 버튼을 누를때마다 펄스폭이 바뀌는 프로그램을 넣어서 실험해봤을 때도 펄스가 제대로 출력되고 있었습니다. 서보모터에 들어가는 전원 5v도 제대로 들어가는 것도 확인했는데, 서보모터가 동작하지 않습니다ㅠㅠ 근데 해당 서보모터를 아두이노 예제 프로그램으로 돌려보면 문제없이 돌아갑니다. 무엇이 문제인지 예상되는 원인이 있을까요?? 저는 아무리 생각해봐도 뭐가 문제인지 모르겠습니다ㅠㅠ 모터에 전원과 pwm만 제대로 인가되면 동작하는 것이 아닌가요? 사용하는 서보모터는 영상과 같은 sg90입니다!
안녕하세요 강의를 듣던 와중에 궁금한 점이 생겨 질문 남깁니다. 실제로 그렇다면 추상 클래스와 인터페이스 중에 인터페이스를 사용하는게 이점일 것 같은데. 대부분의 경우 인터페이스로 구현되고, 추상 클래스는 사용하지 않는 것인가요 ? 백엔드 개발 시에도 인터페이스 구현을 통해서만 작성하는 것 같아 여쭤봅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 맥 터미널에서 권한 부여까지 한후 실행을 했는데 ./bin/ h2.sh : line 3: 3667 Trace/BPT trap: 5 java -cp "$dir/h2-2.2.224.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools .Console "$@" 이와 같은 메세지가 뜨면서 아예 화면도 안뜨네요ㅜㅜ
안녕하세요 수업 잘 듣고 있습니다. malloc함수로 운영체제한테 메모리 공간을 받아온다고 배웠습니다. 이 때는 내가 사용할 메모리 크기을 명시하는데 free로 메모리를 해제할 땐 내가 받아온 메모리 크기를 명시하지 않는데 어떻게 컴퓨터는 할당해준 메모리를 정확하게 해제해줄 수 있나요? 따로 어디에 할당해준 메모리 크기를 저장해두는 건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 강의 잘 듣고 있습니다.강의 도중 궁금한 점이 생겨 질문드립니다. 강의에서는 POST나 PUT요청에서도 Response DTO 객체를 생성해서 전달하셨는데, 실제 실무에서도 이렇게 하는지 궁금합니다. 질문드린 이유는 HTTP Response code상 201이나 204 등의 응답코드가 있는 것으로 알고있는데, Response를 매번 생성하는게 실질적으로 좋은 설계이기 때문인지, 아니면 변경이 완료된 것을 실제로 조회하면서 이해를 돕기 위함인지 궁금했습니다. 감사합니다.