묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨오브젝트 - 기초편
DAO 관련 질문드립니다
안녕하세요 좋은 강의 감사합니다! ReservationService에서 xxDAO를 인터페이스로 선언한 부분에서 질문드립니다. 아래와 같이 여러 persistence 클래스를 같이 사용하는 경우 결합도를 낮추려면 xxxDAO 구현체 내부에 jpaRepository, querydslRepository, jdbcRepository를 주입받는 것이 좋을까요?(이렇게 하면 xxxDAO를 인터페이스로 선언할 필요가 있나 고민도 됩니다)public class xxxService { JpaRepository jpaRepository; QueryDslRepository queryDslRepository; JdbcRepository jdbcRepository; }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 scanner 한글입력 안됌
이클립스에선 한글입력이 되는데 인텔리제이는 왜안될까요 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
애노테이션 기반 빈 자동 등록 / OCP 위반에 대해
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]학습을 통해애노테이션 기반 빈 등록에서1. @Configuration 을 통한 수동 등록@Conponent 와 @ComponentScan 을 통한 등록 방법이 있다는 것은 알았습니다.자동 등록의 경우, 결국 클라이언트 코드를 수정할 일이 발생하니 OCP 위반이고, 편의성을 위한 트레이드 오프라는 것도 표면적으론 알겠는데요..실무에서는 두개 섞어서 쓰게 되나요?아님 불편해도 객체지향 원칙에 부합하는 수동 등록하게 되나요? 특정 버전 이후부턴 자동 vs 수동 = 수동 win 에서자동 vs 수동 = 오류! 라니까 뭐가 더 적합한지 헷갈립니다.
-
미해결김영한의 실전 자바 - 중급 1편
pdf 학습자료 5.열거형 문제풀이2 정답코드오류
[질문 내용]5.열거형 pdf 파일 32페이지에 문제풀이2의 정답 코드에 findByCode 메서드의 실행블럭 첫번째 줄에 HttpStatus[] values = values(); 코드가 누락된거같아요
-
미해결김영한의 실전 자바 - 중급 2편
<> 유무
MyLinkedListV3 stringList = new MyLinkedListV3<>();에서는 <> 가 있어야 하는데 왜 MyLinkedListV3 stringList = new MyLinkedListV3[CAPACITY]; 에서는 <> 를 쓰면 안되는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 2편
6강 해시 충돌 구현
2:30 를 보면 영한님께서 해시 테이블에서 Linkedlist 를 전체 버킷의 컨테이너로 사용하셨는데, ArrayList 를 전체 버킷의 컨테이너로 사용해도 전혀 문제가 없지 않나요 ?따라서, 해시 테이블에서 ArrayList를 전체 버킷의 컨테이너로 사용하고, 각 버킷 내에서는 LinkedList를 사용해 충돌을 처리하는 방법도 괜찮지 않나요 ?
-
미해결스프링 핵심 원리 - 기본편
프로젝트 생성 오류
강의 내용 그대로 따라했는데 강사님은 다운로드 하고 build.gradle 을 누르면 바로 인텔리제이로 이동되는것같은데 저는 인텔리제이로 열어지지가 않고 자꾸 비주얼스튜디오코드로 열립니다. 제가 인텔리제이에서 따로 들어가서 설치를 하거나 설정을 해야할것이 있는걸까요? 강의 처음부터 놓치지 않고 따라하고 있는데 안되니까 몇시간째 너무 스트레스를 받고있는 상황입니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
프록시 패턴 vs 데코레이터 패턴
섹션11에서 프록시에 대한 설명이 있는데요, 제가 알고 있는 데코레이터 패턴과 완전히 동일한 거 같은데 둘간의 차이점은 뭐라고 봐야하나요?
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
이 비디오에서 말씀해주신 것들을 적용하는데 어려움이 있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 사실 제 개인의 문제는 아니고 이걸 팀 단위의 규칙으로 가져가기엔 현재 다니는 회사에서 다른 분들을 설득하는데에서 늘 어려움에 부딪히는데요. 이러한 상황에서는 우빈님은 어떻게 팀원들을 설득하셨나요?
-
미해결김영한의 실전 자바 - 중급 2편
Comparable이 아닌 Comparator를 사용하는 경우
이 부분에서 '기본 정렬 외에 다른 정렬 방법을 사용해야 하는 경우'가 잘 이해가 되지 않는데요. 예를 들어, MyUser에서 age는 int형이라서 '<' 비교 연산이 가능하지만 id는 String이라 비교 연산을 할 수 없기 때문에 Comparable이 아닌 Comparator를 사용하는 건가요?'기본 정렬 외에 다른 정렬 방법을 사용해야 하는 경우'가 이러한 경우를 의미하는 건가요??만약 그렇다면 SortMain2에서 AscComparator, DescComparator를 Comparable이 아닌 Comparator로 구현한 이유가 무엇인가요?
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
Optional 질문이 있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. Spring Data JPA를 사용할 때 Repository에서 단일 엔티티 객체를 반환받을 때 옵셔널로 무조건 감싸는데 이러한 것도 Optional의 비용을 생각하지 않고 남발하는 경우 일까요?
-
미해결스프링 핵심 원리 - 기본편
웹 스코프와 프로토타입 스코프
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 이해한 것이 맞는지 궁금합니다웹 스코프와 프로토타입 스코프의 공통점은 클라이언트가 요청할 때마다 새로운 인스턴스가 생성된다.하지만 웹 스코프는 컨테이너가 생명 주기를 모두 관리하고 웹 환경에서만 사용되며프로토타입 스코프는 컨테이너가 생성과 의존 관계 주입 이후 관리하지 않고 웹 환경에 국한되지 않는다. 이렇게 이해하였습니다.
-
미해결김영한의 실전 자바 - 중급 2편
implement iterator 주석처리 해도 myArray는 배열 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]순회 2 -향상된 for문 1;18초에서 implememt를 주석 처리 하고 향상된 for문을 돌렸을 때 배열이거나 iterable이여야한다고 에러가 떴습니다 .근데 MyAraayMain에서 이미 myarray 는 new int [] {1.2.3.4}로 배열로 선언한거 아닌가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
q를 입력하면 예외가 발생하는데 그 이유를 모르겠습니다.
안녕하세요. 항상 강의 잘 듣고 있습니다 🙂public static void main(String[] args) throws InterruptedException { Printer printer = new Printer(); Thread printerThread = new Thread(printer, "printer"); printerThread.start(); Scanner sc = new Scanner(System.in); while (true) { log("프린터할 문서를 입력하세요. 종료 (q): "); String str = sc.nextLine(); if (str.equals("q")) { printerThread.interrupt(); break; } printer.addJob(str); } } static class Printer implements Runnable { Queue<String> jobQueue = new ConcurrentLinkedQueue<>(); @Override public void run() { log("outer 상태 : " + Thread.currentThread().isInterrupted()); while(!Thread.interrupted()) { try { if (jobQueue.isEmpty()) { continue; } String job = jobQueue.poll(); log("출력 시작: " + job + ", 대기 문서: " + jobQueue); log("inner 상태 : " + Thread.currentThread().isInterrupted()); Thread.sleep(3000); log("출력 완료"); } catch (InterruptedException e) { e.printStackTrace(); log("인터럽트!"); System.out.println(e.getMessage()); break; } } log("프린터 종료"); } public void addJob(String str) { jobQueue.offer(str); } }저는 q를 입력하면 인터럽트 상태가 false로 바뀌게 되고, 프린터 종료 로그가 남을 거라고 생각했습니다.실행하고 바로 q를 입력하면 제가 예상한 대로 동작하지만, 값을 입력 후 q를 입력하면Thread.sleep(3000);이 부분에서 InterruptedException 예외가 발생했습니다.저는 이 부분에서 의문점이 들었습니다.while(!Thread.interrupted()1. 인터럽트 상태가 바뀌었을 텐데 왜 예외가 발생하지?2. 상태가 안 바뀌었나?라는 생각을 하고 로그를 확인해봤는데07:21:21.366 [ printer] outer 상태 : false 07:21:21.366 [ main] 프린터할 문서를 입력하세요. 종료 (q): 123 07:21:22.790 [ main] 프린터할 문서를 입력하세요. 종료 (q): 07:21:22.796 [ printer] 출력 시작: 123, 대기 문서: [] 07:21:22.796 [ printer] inner 상태 : false q java.lang.InterruptedException: sleep interrupted at java.base/java.lang.Thread.sleepNanos0(Native Method) at java.base/java.lang.Thread.sleepNanos(Thread.java:491) at java.base/java.lang.Thread.sleep(Thread.java:522) at thread.control.printer.MyPrinterV3$Printer.run(MyPrinterV3.java:46) at java.base/java.lang.Thread.run(Thread.java:1570) 07:21:22.980 [ printer] 인터럽트! sleep interrupted 07:21:22.980 [ printer] 프린터 종료q를 입력하면 바로 예외가 발생해서 상태가 바뀌었는지는 잘 모르겠습니다.만약 상태가 안 변했다고 해도 결국 sleep 부분에서 예외가 발생할 텐데, 로그가 안 찍힌 이유도 모르겠습니다.그래서 여러 번 실행해본 결과 값 입력하고 3초 후 q를 입력하면 예외가 발생하지 않는다는 걸 알게 되었습니다.잠자고 있는 스레드를 깨워서 문제가 발생하는 것 같은데 제 지식으로는 여기까지인 것 같습니다.질문 1. while(!Thread.interrupted()) 이 부분에서 인터럽트 상태가 false로 변경되었을 것 같은데 예외가 발생한 이유를 모르겠습니다. 제가 다시 생각해보니 프린터 스레드는 sleep() 때문에 3초 기다리고 있는 상태에서 깨우니 sleep() 부분에서 예외가 발생하고 로그도 안 찍혔을 것 같다는 생각이 들었습니다.
-
해결됨C개발자를 위한 최소한의 C++
쓸데없지만 질문드리고싶습니다
안녕하세요. 항상 양질의 강의 감사합니다.link 오류시, 컴파일러가 맹글링 해놓은 함수의 진짜 이름이 출력되고, 이러한 오류를 dll 을 사용함에 있어서 자주 볼 수 있다고 말씀하셨는데 리눅스에서 라이브러리든 실행파일이든 용량을 조금이나마 줄이기위해 stip??? 명령어를 사용해 디버깅 심볼을 없앨 수 있었던 것으로 기억합니다.근데, 디버깅 심볼에는 변수, 함수이름, 소스코드 줄 번호등 다양한 정보가 들어가 있다고 배웠었는데, 해당 명령어로 디버깅 심볼을 없애버린 라이브러리 파일을 사용하여 만든 소스파일을 빌드하는 경우에서, 링크 오류가 나게되면 어떠한 현상이 이뤄지는지 궁금합니다
-
미해결스프링 핵심 원리 - 기본편
진짜 객체를 찾는다는 표현에 대해
프록시 타겟 클래스를 스코프에 설정하면 가짜 프록시 객체가 생성되고 MyLogger 의 로직 호출 시점에서 진짜 빈을 요청하는 위임 로직이 작동한다고 이해했는데 이 진짜 빈을 요청한다는 시점에 request 빈이 생성된다고 보면 될까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보합니다
사소한 부분이긴 하지만 오타 제보합니다.synchronized vs ReentrantLock 대기 파트의 ReentrantLock 의 대기2: await() 대기 부분에서 WAITING 상대로 대기 -> WAITING 상태로 대기로 수정이 필요할 것 같습니다.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
테스트 코드 실행 시 로그 출력
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이번편 뿐만 아니고 강의를 보다보면 테스트 코드를 똑같이 작성을 해도 영상에서는 로깅 내용이 출력이 되는데 제가 똑같은 환경에서, 똑같은 코드로 테스트를 진행하면 로그가 보이지를 않는데 혹시 로그를 출력하는 방법이 따로 있을까요?
-
미해결김영한의 실전 자바 - 중급 2편
커리큘럼 목록체크
영상 볼때 옆에 툴바에 커리큘럼 누르면 동영상 목록뜨고 수업 들으면 자동으로 체크 되자나요. 이거 체크 해제 어떻게 하나요. 만약 체크해제 기능이 없으면 유저들을 위해서 만들어 주시면 좋을거 같아요
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
getter 질문드립니다
안녕하세요!예시에서 person.get지갑().get신분증().findAge() >= 19를 person.isAgeGreaterThanOrEqualTo(19) 메서드로 만들면person 내부에서 다시 지갑.get신분증().findAge() 형태가 되는데, 이 경우 지갑.isAge..(19) 같은 메서드를 계속 만드는지 끊어내는 기준이 있는지 궁금합니다.