묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
signal을 받은 스레드의 대기큐에서 우선순위
안녕하세요 영한님. 스레드의 대기 강의에서 질문이 있습니다. BoundedQueueV5를 사용하여 [소비자 먼저 실행] 때 질문입니다. 제가 이해한 것을 쭉 요약해볼테니 어디에서 틀렸는지, 왜 아닌지 답변을 부탁드립니다. ReentrantLock을 사용하게 되면 대기 큐와 producerCond, consumerCond가 있습니다. 소비자1,2,3은 현재 consumerCond에 있는 상황이고 이제 [생산자 시작]으로 넘어가게 됩니다. 생산자1이 락을 획득하였다고 가정하겠습니다. 그럼 생산자1이 락을 획득하여 생산을 시작하겠고, 생산자2와 3은 대기 큐에 등록되어 WAITING 상태로 락을 기다리고 있다고 생각했습니다. 생산자1이 생산을 하고 consumerCond.signal();을 호출하여 consumerCond에 있는 소비자1,2,3 중 하나를 깨웁니다. (소비자 1을 깨웠다고 가정)소비자1은 consumerCond에서 대기 큐로 이동하여 락을 받을 준비를 합니다. 생산자1이 종료되면서 락을 넘겨줍니다.이때 락을 받기 위해 대기중인 스레드가 소비자1, 생산자2, 생산자3이 있는데 왜 항상 소비자1이 우선적으로 락을 획득할까요? signal()을 통해 깨어난 스레드는 락을 우선적으로 획득할 수 있는 무언가가 주어지는건가요?? 답변을 기다리겠습니다. 감사합니다
-
해결됨C개발자를 위한 최소한의 C++
빈 포인터에 멤버함수 호출
class A{public:int foo(int num) { return num; }};int main(){A* a = nullptr;int pa = a->foo(10);return 0;}이 코드를 실행하면 문제가 나지 않았습니다. 멤버 함수 호출이라는 것이 결국에 함수에 this포인터만 넣어주는 형태이기 멤버를 건드리지 않는 이상 런타임상에서 크래시가 나지 않는 걸로 생각은 하는데 이 생각이 맞을까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
생산자 소비자 대기 공간 분리 예제5 분석 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예.2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예.3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예.[질문 내용] 안녕하세요 영한님. 자바 고급편1 생산자 소비자 대기 공간 분리 - 예제5 분석 강의를 듣고 질문이 있어서 질문 올립니다. 소비자 먼저 시작 상황에서 질문이 있습니다.소비자 1,2,3이 대기상태에 들어가면서 consumerCond.await() 에서 대기를 하고 있습니다. 그 다음으로 생산자1이 락을 받고 실행이 되지요? 생산자가 생산을 하고 consumerCond에 signal을 주게 됩니다. consumerCond.await()에서 대기하고 있던 소비자를 깨우게 되겠죠. 그럼 대기하고 있던 소비자 중 하나가(소비자1)이 와서 락을 받고 소비를 한 뒤에 producerCond에 signal을 보냅니다. 여기서 제가 궁금한게 나옵니다. 대기상태에 있던 소비자1이 깨어나서 소비를 하고 producerCond에 signal을 줄때 producerCond에 대기중인 생산자가 하나도 없지 않습니까? 그럼 이때 생산자가 락을 받는다는 100%의 보장이 어떻게 이루어지는지 그게 궁금합니다. 질문을 요약해서 적겠습니다. 대기상태에서 깨어난 소비자가 producerCond에 signal을 보낼때 producerCond에 대기하고 있던 생산자가 하나도 없는데 어떻게 생산자가 그 락을 받는다는 100%의 보장을 할 수 있는지?대기상태에서 깨어난 소비자가 producerCond에 signal을 보낼때 producerCond에 대기하고 있던 생산자가 하나도 없는데 이럴때 소비자가 보낸 producerCond.signal(); 은 어떻게 처리가 되는지?감사합니다.
-
미해결스프링 핵심 원리 - 기본편
빈 등록 초기화, 소멸 메서드 지정 질문
안녕하세요. 섹션 9의 빈 등록 초기화, 소멸 메서드편에서 질문 드립니다.인터페이스(InitializingBean, DisposableBean)설정 정보에 초기화 메서드, 종료 메서드 지정@PostConstruct, @PreDestroy 애노테이션 지원위 3가지 방법 중 2번째 방법에서요. init, close 같은 초기화, 소멸 메서드가 미리 구현이 되어있으면 그걸 @Bean 설정할 때 지정함으로써 초기화가 가능한 것은 이해했습니다. 그런데 만약 init, close같은 초기화, 소멸 메서드가 외부 라이브러리 클래스 내에 미리 구현되어있지 않다면 해당 클래스를 수정할 수는 없으므로 초기화가 불가능한게 맞나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
src가 안떠요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.강의에서는 src가 뜨는데 제 화면에는 src가 안떠요
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
SocketException: Connection reset 에러가 뜨지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java.net.SocketException: Connection reset네트워크 예외4- 강제종료 강의 중 위 에러가 뜨질 않습니다. 혹시나 서버에서 close() 호출 후 FIN packet을 보내는 것이 오래걸리나 싶어 Thread.sleep()도 3초에서 5초 가량으로 늘려보기도 했는데, "read = -1" 이라고 콘솔에 뜹니다. 반면, "java.net.SocketException: Broken pipe" 에러는 잘 뜹니다. 무슨 문제인지 잘 모르겠습니다.
-
미해결유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
안녕하세요 구글로그인 SDK 적용하고 빌드문제가있어 질문드립니다.
영상처럼구글 SDK 를 적용하고 MinimumAPI Api23targetApiLevel 34로 선택하고빌드를진행하면 이렇게 오류가뜨는데 어떻게 해결할까요..어제 부터 계속 구글링하며 찾고있는데 못찾아서.. 질문드립니다.. Starting a Gradle Daemon, 1 incompatible and 4 stopped Daemons could not be reused, use --status for details> Configure project :launcherWARNING:The option setting 'android.bundle.enableUncompressedNativeLibs=false' is deprecated.The current default is 'true'.It will be removed in version 8.0 of the Android Gradle plugin.You can add the following to your build.gradle instead:android {packagingOptions {jniLibs {useLegacyPackaging = true}}}WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34This Android Gradle plugin (7.1.2) was tested up to compileSdk = 32This warning can be suppressed by addingandroid.suppressUnsupportedCompileSdk=34to this project's gradle.propertiesThe build will continue, but you are strongly encouraged to update your project touse a newer Android Gradle Plugin that has been tested with compileSdk = 34> Task :unityLibrary:FirebaseApp.androidlib:preBuild UP-TO-DATE> Task :unityLibrary:preBuild UP-TO-DATE> Task :unityLibrary:preReleaseBuild UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:preReleaseBuild UP-TO-DATE> Task :unityLibrary:packageReleaseRenderscript NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:packageReleaseRenderscript NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseRenderscript NO-SOURCE> Task :unityLibrary:compileReleaseRenderscript NO-SOURCE> Task :unityLibrary:generateReleaseResValues UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseResValues UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseResources UP-TO-DATE> Task :unityLibrary:generateReleaseResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:packageReleaseResources UP-TO-DATE> Task :unityLibrary:packageReleaseResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:extractDeepLinksRelease UP-TO-DATE> Task :unityLibrary:extractDeepLinksRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:processReleaseManifest UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseLibraryResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseAidl NO-SOURCE> Task :launcher:preBuild UP-TO-DATE> Task :launcher:preReleaseBuild UP-TO-DATE> Task :launcher:compileReleaseRenderscript NO-SOURCE> Task :launcher:generateReleaseResValues UP-TO-DATE> Task :launcher:generateReleaseResources UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseBuildConfig UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:javaPreCompileRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:writeReleaseAarMetadata UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:mergeReleaseShaders UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseShaders NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseAssets UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:packageReleaseAssets UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:processReleaseJavaRes NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:bundleLibResRelease NO-SOURCE> Task :unityLibrary:FirebaseApp.androidlib:mergeReleaseJniLibFolders UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:mergeReleaseNativeLibs NO-SOURCE> Task :unityLibrary:compileReleaseLibraryResources UP-TO-DATE> Task :unityLibrary:compileReleaseAidl NO-SOURCE> Task :unityLibrary:generateReleaseBuildConfig UP-TO-DATE> Task :unityLibrary:javaPreCompileRelease UP-TO-DATE> Task :unityLibrary:writeReleaseAarMetadata UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:copyReleaseJniLibsProjectOnly UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:prepareReleaseArtProfile UP-TO-DATE> Task :unityLibrary:mergeReleaseShaders UP-TO-DATE> Task :unityLibrary:compileReleaseShaders NO-SOURCE> Task :unityLibrary:generateReleaseAssets UP-TO-DATE> Task :launcher:mergeReleaseResources UP-TO-DATE> Task :launcher:createReleaseCompatibleScreenManifests UP-TO-DATE> Task :launcher:extractDeepLinksRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:parseReleaseLocalResources> Task :unityLibrary:parseReleaseLocalResources> Task :unityLibrary:FirebaseApp.androidlib:generateReleaseRFile> Task :unityLibrary:processReleaseManifest> Task :launcher:checkReleaseDuplicateClasses UP-TO-DATE> Task :launcher:compileReleaseAidl NO-SOURCE> Task :launcher:generateReleaseBuildConfig UP-TO-DATE> Task :launcher:javaPreCompileRelease UP-TO-DATE> Task :launcher:checkReleaseAarMetadata UP-TO-DATE> Task :launcher:mergeReleaseShaders UP-TO-DATE> Task :launcher:compileReleaseShaders NO-SOURCE> Task :launcher:generateReleaseAssets UP-TO-DATE> Task :launcher:processReleaseJavaRes NO-SOURCE> Task :launcher:mergeReleaseJniLibFolders UP-TO-DATE> Task :launcher:collectReleaseDependencies UP-TO-DATE> Task :launcher:configureReleaseDependencies UP-TO-DATE> Task :launcher:parseReleaseIntegrityConfig UP-TO-DATE> Task :launcher:writeReleaseAppMetadata UP-TO-DATE> Task :launcher:validateSigningRelease UP-TO-DATE> Task :unityLibrary:packageReleaseAssets> Task :unityLibrary:FirebaseApp.androidlib:compileReleaseJavaWithJavac> Task :unityLibrary:FirebaseApp.androidlib:bundleLibCompileToJarRelease UP-TO-DATE> Task :unityLibrary:FirebaseApp.androidlib:bundleLibRuntimeToJarRelease UP-TO-DATE> Task :launcher:processReleaseMainManifest> Task :launcher:processReleaseManifest UP-TO-DATE> Task :launcher:processApplicationManifestReleaseForBundle UP-TO-DATE> Task :launcher:bundleReleaseResources UP-TO-DATE> Task :launcher:processReleaseManifestForPackage UP-TO-DATE> Task :launcher:mergeReleaseAssets> Task :unityLibrary:processReleaseJavaRes UP-TO-DATE> Task :unityLibrary:bundleLibResRelease UP-TO-DATE> Task :unityLibrary:mergeReleaseJniLibFolders UP-TO-DATE> Task :unityLibrary:mergeReleaseNativeLibs UP-TO-DATE> Task :unityLibrary:copyReleaseJniLibsProjectOnly UP-TO-DATE> Task :unityLibrary:prepareReleaseArtProfile UP-TO-DATE> Task :launcher:mergeReleaseJavaResource UP-TO-DATE> Task :launcher:mergeReleaseNativeLibs UP-TO-DATE> Task :launcher:stripReleaseDebugSymbols UP-TO-DATE> Task :launcher:mergeReleaseArtProfile UP-TO-DATE> Task :unityLibrary:generateReleaseRFile> Task :launcher:extractReleaseNativeSymbolTables UP-TO-DATE> Task :unityLibrary:compileReleaseJavaWithJavac UP-TO-DATE> Task :launcher:processReleaseResources UP-TO-DATE> Task :unityLibrary:bundleLibRuntimeToJarRelease UP-TO-DATE> Task :unityLibrary:bundleLibCompileToJarRelease UP-TO-DATE> Task :launcher:compileReleaseJavaWithJavac UP-TO-DATE> Task :launcher:dexBuilderRelease UP-TO-DATE> Task :launcher:desugarReleaseFileDependencies> Task :launcher:mergeExtDexRelease UP-TO-DATE> Task :launcher:mergeDexRelease FAILEDDeprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings71 actionable tasks: 11 executed, 60 up-to-dateUnityEditor.BuildPipeline:BuildPlayer (UnityEditor.BuildPlayerOptions)BuildManager:StartAOSBuild () (at Assets/02.Scripts/Editor/BuildManager.cs:89)
-
미해결김영한의 실전 자바 - 중급 1편
try-with-resources질문
마지막 강의의 2: 10에서 close()메서드에서 예외가 안터진다 한들, 굳이 throws Exception을 "꼭" 제거해야하는 이유가 있나요? 어차피 안 없애도 문제는 없지 않나요? 메서드 옆에 throws Exception이거 적어주는 것은 단지 Exception예외가 일어났을때, 이 메서드에서 처리하지 않고 , 호출한 곳으로 예외를 던진다는 뜻인데.. 왜 꼭 제거하라고 한 건지 이해가 안갑니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
자바 병렬 처리
안녕하세요 영한님 ^^ 1기 인프콘때 뵈고, 오랜만에 강의를 보게되어서 반갑습니다 ㅎㅎ 다름이 아니라, 주문 체결 시스템을 개발하여서 병렬 처리 관련해서 공부 및 개발중인데 혹시 아래 링크책을 예전에 공부하신적 있으신가요? https://product.kyobobook.co.kr/detail/S000007668255아니면 다른 책 추천해주실만한게 있으실까요 ? ㅎㅎ아니면 이 강의 다보면 제가원하는 주문 체결 시스템을 만들기위한 기본 베이스는 이해가 될 수 있을까요?설날 잘보내시고 새해 복 많이받으세요 !
-
해결됨오브젝트 - 기초편
예제코드 github
안녕하세요. 혹시 예제 코드들을 github에서 볼 수 있을까요?감사합니다
-
미해결김영한의 실전 자바 - 기본편
상속 생성자 super과 this 사용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예안녕하세요상속 생성자의 super 사용에 대해 궁금한 점이 생겨 질문을 남깁니다. 생성자를 사용 시 this를 사용해도 상위의 생성자를 만들기 위해 super();을 한 번은 호출해야 한다고 이해했는데, 하위 클래스에서 하나의 생성자 안에 this와 super();을 함께 사용하지는 못할까요 ? 만약 하나의 생성자 안에 this와 super을 함께 사용이 가능하다면 super을 먼저 쓰는지 this를 먼저 쓰는지에 따라 상위와 하위 생성자 할당 순서가 달라질텐데 무엇을 먼저 써주어야하는지가 궁금합니다. 좋은 강의 항상 감사드립니다 !
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
팩토리 메서드에 대해서 궁금증이 생겨서 질문드려봅니다!
심플 팩토리에서 chrome, safari 등등 if문을 통해서 브라우저환경에 맞는 그림판 인스턴스를 가져올 수 있도록 한 코드가 있었는데, 팩토리 메서드가 그 역할을 대신한다고 이해했습니다. 궁금한점은 결국 크롬이든 사파리든 브라우저환경을 알아내서 main함수에 넘겨줄 수 있어야하는데 그 분기는 어디서 해야하는걸까요?function clientCode(creator: Creator) { creator.someOperation() } clientCode(new ConcreteCreator1())아래의 코드라면 new ConcreteCreator1()를 판단할 수 있는 조건 분기를 결국 어디서는 해야하지 않는가에 대한 고민입니다!
-
미해결코틀린 함수형 프로그래밍 - 입문편
[문제집] 6_함수를 응답으로 받기 - 1번문제 오류
안녕하세요, [문제집] 6_함수를 응답으로 받기 1번문제에 오류가 있습니다. createMultiplier 함수 파라미터로 factor가 되어야 하는데 2로 들어와있네요. 문제집 해설 영상 보면 알 수 있지만 잘못되어 있어서 제보드립니다. 감사합니다.
-
미해결김영한의 실전 자바 - 중급 1편
basic,gold,diamond에 왜 new ClassGrade로 인스턴트 생성하나요? 그냥 선언만 하면 안되나여??
package enumeration.ex2;public class ClassGrade {public static final ClassGrade BASIC = new ClassGrade();public static final ClassGrade GOLD = new ClassGrade();public static final ClassGrade DIAMOND = new ClassGrade(); } =>public static final ClassGrade BASIC;public static final ClassGrade GOLD ;public static final ClassGrade DIAMOND ; 이로면 안되나여?new를 왜햇는지 모르겟어요
-
미해결김영한의 실전 자바 - 중급 1편
discount 메서드에서 타입을 String 타입이 아닌 StringGrade타입으로 받으면 되지않나여??
package enumeration.ex1; public class DiscountService { public int discount(StringGrade grade,int price){ int discountPercent=0; if(grade.equals(StringGrade.BASIC)) { discountPercent=10; }else if(grade.equals(StringGrade.GOLD)){ discountPercent=20; }else if(grade.equals(StringGrade.DIAMOND)){ discountPercent=30; }else{ System.out.println(grade+":할인 x"); } return price*discountPercent/100; } } discount 메서드에서 타입을 String 타입이 아닌 StringGrade타입으로 받으면 아래 예제가 다 에러 표시가 나면서 개발자들이 실수 하지않게 되는데? 왜 굳이 enum을 쓰나여?StringGrade타입으로 하면되자나여package enumeration.ex1; import enumeration.ex1.DiscountService; public class StringGradeEx1_2 { public static void main(String[] args) { int price=100000; DiscountService discountService=new DiscountService(); //존재하지 않는 등급 int VIP =discountService.discount("VIP",price); System.out.println("VIP = " + VIP); //오타 int diamoddd= discountService.discount("diamoddd",price); System.out.println("diamoddd = " + diamoddd); //소문자 입력 int gold= discountService.discount("gold",price); System.out.println("gold = " + gold); } }
-
미해결김영한의 실전 자바 - 중급 2편
UnitPrinter.printV2 와일드카드 작성 시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]public static void printV2(Shuttle<? extends BioUnit> shuttle) { shuttle.showInfo(); } 이 부분에 와일드카드가 BioUnit 을 extends 해야 한다고 명시적으로 작성해 주고 있는데 Shuttle 클래스에서 이미 <T extends BioUnit> 을 하고 있기 때문에 와일드카드는 단순하게 ? 만 사용해도 괜찮은 걸까요?다른 개발자가 사용할 경우에 좀 더 명시적으로 확인시켜주기 위해 적은거라고 이해해도 되는 건지 궁금합니다. public static void printV2(Shuttle<?> shuttle) { shuttle.showInfo(); }이렇게 코드를 작성한 이후에 여러 테스트를 해봤는데 Shuttle 클래스를 만들때 <T extends BioUnit> 에 걸려서 Integer나 Object 등 다른 타입은 사용할 수 없더라구요.
-
미해결스프링 핵심 원리 - 기본편
테스트 두개를 동시에 돌렸을 경우 왜 밸류값이 달라지는 건가요??
public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " Object = " + bean); } } @Test @DisplayName("모든 빈 출력하기") void findApplicationAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " Object = " + bean); } } } }테스트 코드를 이렇게 짠 후 같이 돌리면 오브젝트로 나오는 애들 코드가 각각 다르게 나옵니다.스프링 컨테이너는 초기에 한 번만 생성/등록되고 각각의 테스트에서 같은 것을 가져오는 건줄 알았는데 아닌가요..??
-
해결됨김영한의 실전 자바 - 중급 2편
[수정 건의] NodeMain3의 add(Node node, String param) 메서드에 대한 수정 건의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]대상 강의록: 4. 컬렉션 프레임워크 - LinkedList.pdf의 p.12대상 소스 파일: NodeMain3add(Node node, String param) 메서드건의 내용:해당 부분은 아직 LinkedList에 대한 제네릭 도입 전이므로 Node 클래스에서도 item의 타입을 Object로 사용하고 있습니다.public class Node { Object item; Node next; public Node(Object item) { this.item = item; } ... }따라서 add 메서드 또한 추가할 데이터인 param을 String이 아닌, Object 타입으로 설정해야 수강생들의 이해가 쉬울 것이라고 생각합니다.// 기존 강의록 코드 private static void add(Node node, String param) { Node lastNode = getLastNode(node); lastNode.next = new Node(param); } // 수정 제안 코드 <<수정부분: String -> Object>> private static void add(Node node, Object param) { Node lastNode = getLastNode(node); lastNode.next = new Node(param); }
-
해결됨김영한의 실전 자바 - 중급 2편
강의록 오타 제보
[질문 내용]파일: 4. 컬렉션 프레임워크 - LinkedList.pdf페이지/위치: 4페이지/NodeMain1 코드11페이지/NodeMain3 코드오타 내용: System.out.println("모든 노트 탐색하기");수정 내용: System.out.println("모든 노드 탐색하기");
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ExecutorServic 우아한 종료 isTerminated()에 대해서 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 올립니다.복습을 하던중에이쪽 부분에서 isTerminated() 부분을 호출하면 셧다운 상태를 확인할 수 있다고 해서, 당연히 true가 나올줄 알고 검증을 해보기 위해서 해보았습니다.근데 왠걸? 저와의 예상과는 다르게 false가 나옵니다..뭐가 문제 있는가 생각해봐서 여러 군데에 isTerminated()를 붙여놓고 해봤는데 true가 나옵니다.볼록 된 부분 입니다.근데 왜? 이렇게 되는지 아무리 생각해봐도 이유를 모르겠습니다.혹시 이렇게 되는 이유를 가르쳐 줄 수 있으신가요? 수정1submit로 뭐 좀 해보는게 있었는데 이것을 execute로 안바꾸고 실행해서 사진 수정함 + 인프런 ai가 답변해준 isShutDown()이 궁금해서 추가 된게 있음(이건 블락? 처리) 수정2사진1개 더 추가. 여러 번 돌려보니 에러메시지가 중간에 떠서 다시 올림. 모르겟다.. 답변 부탁 드립니다.