묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코틀린 고급편
SuperTypeSafeCage에 대해 질문드립니다
val superTypeToken = object:SuperTypeToken<List<GoldFish>>(){} val superTypeSafeCage = SuperTypeSafeCage(); superTypeSafeCage.putOne(superTypeToken,listOf(GoldFish("금붕어1"),Carp("새"))) superTypeSafeCage.getOne(superTypeToken).forEach(::println)superTypeToken은 List<GoldFish> 전용토큰인데 실제 Carp를 putOne 하여도 데이터가 삽입이 됩니다. 또한 superTypeSafeCage.getOne(superTypeToken) 입력 시 Carp까지 조회되네요.해당 부분에 대한 유효성 검사를 각각 진행해야 되는건가요?
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
스프링 데이터 JPA 인터페이스에서의 default 메서드 사용
영한님 강의를 들으면서 인터페이스의 default 메서드는 하위 호환성을 위해서만 사용하고 일반적인 애플리케이션 개발시에는 사용할 일이 없다고 생각했었습니다. 그러나 프로젝트를 하던 도중에 스프링 데이터 JPA를 사용하는 Interface에서 Service에서 매번 Optional을 꺼내기 번거로우니 default 메서드를 사용해서 .orElseThrow(() -> new 예외 발생) 처럼 메서드를 작성하고 이렇게 해도 된다고 이야기를 들었습니다. 저는 이런 예외 발생도 Service 계층에서 하는 것이 맞는것 같기도 하면서, 사실 매번 Optional을 꺼내는 것이 귀찮기도 했던것이 사실이라 이렇게 사용하는 것이 일반적으로 정상적인 패턴인지 궁금해서 질문 드렸습니다. 디폴트 메서드의 올바른 사용법에서 '공통으로 쓰기 쉬운 간단한 로직'에 이정도의 상황이 부합되는지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
독립적인 스레드 할당 시 스레드 개수는 어떻게 할당해야 할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]궁금한점이 있습니다. 독립적인 스레드 풀을 만들어 사용할 때 스레드 수는 어떻게 측정하는게 좋을까요?예를들어 CPU Core 수가 4개인 경우에 일반적으로 사용하는 스레드 수는 어떻게 할당할지 감이 안잡힙니다.독립적인 스레드 풀을 만들 때 CPU Core 수에 따른 적절한 스레드 수가 있는지, 아니면 직접 스레드 수를 조절해가며 테스트를 해봐야하는지 궁금합니다.
-
미해결코틀린 고급편
좋은 코드 예시
안녕하세요 코틀린 강의 초급, 고급 다 잘 들었습니다. 저는 웹 백앤드 개발자인데요.MVC 패턴 등으로 여러 코드들을 공부 & 회사에 적용시키고 싶은데, 좋은 코드 예시들은 어디서, 어떻게 찾아볼 수 있을까요!? github 에서 검색한다면 키워드는 보통 어떤식으로 찾아볼 수 있을까요? 등등 팁 같은 것 알려주시면 감사하겠습니다.감사합니다!
-
미해결함수형 프로그래밍과 JavaScript ES6+
filter가 아무것도 걸러내지 못하는 경우
function FlatEvaluation(evaluation: Array<[string, { score: number }]>) { return pipe( evaluation, filter(([key]) => key !== "overallAssessment"), map(([key, value]) => ({ key: key, score: value.score })) ); } function findPros(evaluation: { [x: string]: { score: number } }) { return pipe( Object.entries(evaluation), FlatEvaluation, filter((item) => item.score >= 80), reduce((item, acc) => (item.score > acc.score ? item : acc)), (item) => item.key ); } // A의 경우 findPros({ a: { score: 90 }, b: { score: 85 }, c: { score: 75 } }) // B의 경우 findPros({ a: { score: 70 }, b: { score: 65 }, c: { score: 75 } }) 안녕하세요 선생님 강의 잘 듣고 있습니다. 다름이 아니라 한 가지 궁금한 점이 있어서 이렇게 질문을 드립니다 (나중에 뒤에 가서 이 문제에 대한 해답이 나오거나, 이미 앞에 이런 문제에 대한 해결 방법이 나왔다면 참 부끄러워질 거 같긴 합니다)다름이 아니라 FxTS를 사용해 기존의 프로젝트 일부를 함수형으로 리팩토링 해보고자 하는 중이었습니다. { [x: string]: { score: number } } 타입의 객체를 인자로 받아 제일 고득점을 한 인원의 이름(key)를 리턴해야 합니다. A의 경우 80점 이상의 득점자가 두 명이 있고, 그 중 더 높은 득점을 한 a의 이름이 잘 리턴됩니다.그런데 B의 경우 80점 이상의 득점자가 하나도 없다보니 filter가 적절한 값을 리턴하지 못해 reduce에서 에러가 납니다. 이런 경우에는 어떻게 처리하는 게 옳을지 궁금합니다.
-
미해결코틀린 고급편
val 키워드도 setValue가 있나요?
by lazy 위임 프로퍼티 강의에서 by 키워드를 사용하려면 getValue 함수와 setValue 함수가 필요하다고 하셨는데 val 키워드로 변수 선언 시 setValue가 존재할수 없지 않나요? var 키워드 -> getValue(),setValue()val 키워드 -> getValue()로 by 키워드를 사용할 수 있는것같아 질문드립니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
병렬 프레임 병목 현상 해결책에 대해 궁금한 점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Fork/Join 공용 풀(및 병렬 스트림)을 I/O 대기 작업에 사용하면 스레드 병목으로 요청이 밀려서 그 해결책으로 로직 전용 스레드 풀을 만들었잖아요.ExecutorService logicPool = Executors.newFixedThreadPool(400);다른 해결책으로 다음과 같이 공용이 아닌 그냥 Fork/Join 풀을 써도 되나요? 공용이 아니니깐 스레드 병목 현상도 없으니깐요.ForkJoinPool logicPool = new ForkJoinPool(400);아니면 이것도 여전히 안 좋나요?
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
스트림 중복 에러 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 영한님 🙂스트림 중복 여부의 경우 왜 컴파일 에러가 아닌 런타임 에러로 자바가 만들어진 이유를 알 수 있을까요?챗지피티에 질문을 해봤는데 잘 이해가 되지 않아 질문드리는점 양해 부탁드립니다(_ _)감사합니다.
-
미해결코틀린 고급편
반공변성 질문드립니다.
Cage4 클래스로 반공변성 설명해주시는 부분에 실제 사용 예제가 없는 것 같습니다.혹시 다른 곳처럼 예시코드 부탁드려도 될까요?
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
자바 버전이 31 까지 업데이트 된다면 새로운 자바 강의를 추가 하실 건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 영한님 궁금증이 생겨서 질문을 드립니다.만약의 경우이지만, 자바 버전이 31까지 업데이트가 된다면 새로운 기능(어떤 것들이 나올지 모르지만.)에 대해서 강의를 낼 생각이 있는지 궁금합니다. 답변 부탁 드립니다.
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
임계값과 스레드수를 줄일 경우 교착상태가 발생할수 있는건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스레드를 조인하면 다른 스레드의 작업이 처리될때까지 기다려야한다고 배웠는데, 지금 예시에서는 스레드 수가 여유로워서 괜찮지만 만약 제목대로 임계값을 더 작게 하고, 스레드 수도 줄인다면 처리할 스레드의 수가 부족해져 데드락이 발생할 수도 있는 상황인지 궁금합니다
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
변수 합치기에 대해서 질문드립니다!
안녕하세요!실습문제 풀다가 질문이 있어서 올려봅니다제가 코드를 작성할때는 흐름대로 쭉 작성하고마지막에는 간결하게 줄일 수 있는 부분은 줄여서 표현하고 있는데, 이게 저는 흐름대로 쭉 작성을 하고나서 변수를 합치거나 하니깐 괜찮은데 동료들이 이 코드를 보게 되면 변수를 선언하지 않고 합쳐서 표현해놓는 경우 이해가 바로 안되는 경우가 있을 수 있을거 같은데, 이런 경우에는 합치지 않고 두는게 좋을까요? 영한님이 생각하시는 운영관점에서 인라인 활용에 대해 궁금합니다!
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
flatMap 응용 방법에 대해서, 이렇게 하는게 맞는지?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. flatMap 을 응용하려고 만들어봤는데 이렇게 하는게 맞는지?? 알고 싶어서 코드를 올립니다.일단 저가 한 것은, 리스트 안에 맵 자료구조 를 여러개를 놓고(map 도 of가 있네요) 이것들을 평탄화 하려고 한 방법 입니다.이렇게 하면 되는 것인가요?(한번에 하는 방법을 못찾아서 이렇게 2번으로 쪼갰습니다.)
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
선생님께 질문드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]드디어 자바 완강을 했는데 중급 1~2 와 고급 1은 두번씩 들었고 고급2도 혼자서 채팅프로그램,네트워크 이런거 다 만들어보긴 했는데 이거 공부하는동안 또 기억이 잘 안나더라구요 ㅎㅎ.. 람다도 이제 어느정도 다 읽고 쓸줄은 아는데 자세한 메서드는 기억이 안나는 것도 많고, 다운 스트림 같은 경우에도 기억이 가물가물하고요.. 일주일에 한번씩 강의 마다 요약노트 작성한거 읽고 있긴한데 이대로 한번 쭉 읽고 스프링으로 넘어가는게 나을까요 아니면 자바를 좀 더 봐야할까요??
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
자바 람다의 지연 평가과 스트림의 지연 연산
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자바 람다의 지연 평가과 스트림api의 지연 연산의 차이가 궁금합니다
-
해결됨멀티패러다임 프로그래밍 1편: 반복자 패턴 & LISP (with TypeScript, Clojure, Kotlin)
멀티패러다임 프로그래밍 책
유인동님! 안녕하세요!!책을 아직 구매하지 않았는데 책과 이 영상강의중 어떤 것이 더 심화된 내용일까요!?아니면 같은내용인데 영상으로 더 쉽게 접할 수 있게 만드신 강의인건지 궁금합니다!
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
디폴트 메서드 pdf파일 오류 및 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]디폴트 메서드 공부하다가 영상 화면이랑, pdf 결과 화면이 달라서 제보를 드립니다.영상 화면 에서는 time 다음에 2025-03-생략... 이렇게 나오는데,pdf 파일에서는이렇게 나옵니다. 그래서 오류이고요.여기서 질문이 생깁니다.pdf 파일 에서 time: 다음에 "(실행 시점: +1일)" 이렇게 나오는데, 어떻게 하신건가요?일단 생각나는 방법이..이렇게 만들기는 하였는데..pdf파일에 나온 결과처럼 하는 방법은 생각이 안납니다.(저의 생각상 포멧터 를 이용 하신것 같은데 모르겠더라고요.)추가1포멧터 라고, 생각한 이유 + pdf 파일 오류라 는 것을 아는 이유는.출력이 너무 없어 보여서 고치자는 생각에 고쳤고, 11:08초 부분에 pdf 파일을 보여주는데 이게 눈에 뛰더라고요.답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
자바 그룹핑
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 갓영한님 자바에서 이렇게 그룹핑 하는 경우도 있을까요 ?실무에서 보통 쿼리쪽에서 하지않나용??
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
'병렬스트림 사용시 주의점1' 중 I/O 바운드 작업은 '소요시간이 긴 작업'으로 이해해도 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? - 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? - 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? - 예[질문 내용]안녕하세요, 강의 즐겁게 듣고 있습니다.강의: 섹션 13. 병렬 스트림 - 병렬스트림 사용시 주의점1질문: 강의 내용 중 'Fork/Join 프레임워크를 I/O 바운드 작업에는 사용하지 않는다'는 내용에서 I/O 바운드 작업을 '소요시간이 긴 작업'으로 이해해도 될까요?세부I/O 바운드 작업을 공용 풀에서 처리할 경우 발생하는 문제들이 I/O 작업 자체보다는 긴 시간이 소요되는 작업으로 풀의 한정된 수의 스레드를 점유하는 것이 원인이라 이해했는데 강의내용이 I/O 바운드 작업에 초점을 맞추어 제 이해에 오해가 있는가 싶습니다.병렬 스트림 등의 기능을 통해 공용 풀에서 I/O 바운드 작업이 처리되면 스레드 블로킹에 의한 CPU 낭비, 스레드 수를 증가시킨다면 컨텍스트 스위칭 오버헤드 증가, 작업 훔치기 기법 무력화 등의 부작용이 있는데 이는 긴 시간이 소요되는 작업으로 풀의 한정된 수의 스레드가 오래 점유되면서 발생하는 문제로 이해했습니다.CPU 바운드 작업이라도 소요시간이 길다면 CPU 낭비를 제외하고 위와 같은 문제가 발생되리라 생각합니다. (I/O 바운드 작업이 긴 시간 CPU를 사용하지 않으면서 스레드를 점유한다면 무거운 CPU 바운드 작업은 긴 시간 CPU를 사용하면서 스레드를 점유, 이로 인해 공용풀의 스레드를 늘린다면 컨텍스트 스위칭 오버헤드 증가, CPU 바운드 작업이더라도 작업이 빨리 끝나지 않아 훔치기 기법 무력화 등)일반적으로 I/O 바운드 작업은 CPU 바운드 작업보다 긴 시간이 소요되는 것이 경험적/현실적 가정으로 알고 있습니다. 이런 일반적인 현상을 전제로 I/O 바운드 작업을 '소요시간이 긴 작업'을 대표하는 의미로 사용하신 것인지, 아니면 제가 놓친 다른 의미, I/O 바운드 작업만이 가지는 특징을 염두에 두신 것인지 궁금합니다.좋은 5월 보내시길 바랍니다. 감사합니다.
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
메서드 참조 4가지 유형(정적, 임의 객체) 구분 할수 있는 방법에 대해서,
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.메서드 참조의 4가지 유형중정적메서드 참조, 임의 객체의 인스턴스 메서드 참조의 표현 방식을 보시면"클래스명::메서드명" 똑같이 적힌 것 을 알수 있었습니다. 그래서 함께 쓰면 어떻게 될까 해보니 써지더라고요.여기서 질문이 생깁니다.이렇게 임의 객체, 및 정적 메서드를 같이 쓸 경우 구분법이 따로 있냐요?(아니면 변수 이름을 잘 지정해야 하는지?)Ide의 도움으로 메서드 이름을 클릭으로 구분은 가능한데,다른 방법이 없는지 궁금합니다.답변 부탁 드립니다.수정1 : 사진 수정(다른 것들도 되는지 확인하기 위해서)