묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
[JVM이 문자열 상수를 관리하는 구조] 관련 질문드립니다.
안녕하세요 선생님~[JVM이 문자열 상수를 관리하는 구조] 강의를 듣던 중에 이해가 잘 안되는 부분이 있어서 질문드립니다. 제가 기존에 알고 있던 내용과 더불어 강의를 통해 이해한 바로는1. "런타임 상수 풀"은 문자열 리터럴 객체가 아닌 문자열 리터럴의 심볼릭 참조를 저장하는 곳, 즉 실제 객체는 저장되지 않음 - 물론 여러 다른 심볼릭 참조 또한 저장됨2. String s1 = "Hello"처럼 리터럴로 선언된 String instance는 Heap 메모리 영역의 "문자열 상수 풀"에 저장3. String s3 = new String("Hello")는 객체로, Heap 메모리 영역이면서 문자열 상수 풀이 "아닌" 영역에 저장. 즉, 문자열 상수 풀에 독립적4. 따라서 문자열 상수 선언(String s1 = "Hello") 또는 intern() 메서드 호출할 경우에만 문자열 상수 풀에 문자열 저장이 발생위의 이해를 전제로 질문은 아래와 같습니다.[12분 22초]쯤 선생님께서 문자열 상수 풀에서 문자열을 조회할 때,먼저 Runtime Constant Pool 내에 문자열 리터럴을 조회하고, 있으면 바로 반환한다고 하셨는데요.1. 런타임 상수 풀에서만 리터럴을 조회하고 끝나는 절차가 맞는지요? 혹은 "런타임 상수 풀"에 저장된 문자열 리터럴의 심볼릭 참조를 타고 "문자열 상수 풀"의 문자 리터럴 객체를 탐색하는 것까지가 맞는 처리 과정인지요? -> 저는 후자가 맞다고 생각하고 있습니다.2. intern() 호출 시, 런타임 상수 풀 내의 "찾고자 하는 문자열 리터럴의 심볼릭 참조"가 존재하지 않는다면, JVM이 문자열 객체를 생성하여 Heap의 문자열 상수 풀에 저장하나요? 혹은 Heap 영역이지만 문자열 상수 풀이 아닌 영역에 저장되나요? -> 저는 intern() 호출로 생성된 객체는 항상 문자열 상수 풀에 저장되는 걸로 알고 있습니다.3. 그리고 2번 질문과 연관된 질문인데, 수업자료의 예제에서public class Main { public static void main(String[] args) { String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); String s3 = new String("World"); String s4 = s3.intern(); System.out.println(s3 == s4); System.out.println("World" == s3); // 1번 System.out.println("World" == s4); // 2번 } }18분 51초 쯤 선생님께서 말씀하시기를 s3.intern()으로 인해 "World" 리터럴이 Runtime constant pool에 생긴다고 하셨는데, Runtime constant Pool은 오직 심볼릭 참조만 가지고 있는거 아닌가요? Runtime constant pool는 클래스 로드 시 정적으로 생성된 심볼릭 참조를 관리할 뿐이고, 동적으로 업데이트 되는건 아니지 않나요?따라서 s3.intern()으로 인해 "World" 리터럴은 Runtime Constant Pool이 아니라 Heap 영역의 문자열 상수 풀에 들어가야하는 것이 아닌지요?마지막으로,[System.out.println("World" == s3); // 1번]여기서 false가 나온 이유는 new로 동적 할당된 "World"은 문자열 상수 풀이 아닌 Heap 영역에 저장되기 때문에s3 참조자는 문자열 상수 풀이 아닌 그 외 Heap 영역의 String instance를 바라보고 있고,s4 참조자는 intern() 함수로 인한 호출로 문자열 상수 풀에 생긴 객체이기 때문에 false가 나온게 아닌지요?제가 잘못 알고 있는 상태에서 잘못된 질문을 길게 한건가 싶어서 죄송스럽네요.늘 좋은 강의 감사합니다!
-
미해결
언리얼 애니메이션 적용문제
언리얼에서 믹사모 애니메이션을 불러와 적용을 하면 오리진 위치가 캐릭터 엉덩이에 있어서 애니메이션이 이상하게 적용이 되는데 언리얼에서 고칠 수 있는 방법이 있나요?
-
미해결게임 기획자 성공 전략 가이드
루키스터디 출시
다음 루키스터디 강의 출시는 언제일까요?
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
Docker Desktop 설치 , curl 설치 관련 질문 드려봅니다.
docker desktop 설치 후 도커 사이트 로그인 해야 하는건가요? 그리고 curl설치를 하고 실행하면 창이 그냥 닫혀 버림니다 해결 방법이 있는지요?
-
미해결
Discover Connection Like Never Before with Omegle
In an era where digital communication reigns supreme, making genuine connections can often feel like a challenge. Enter Omegle – a unique platform designed to bridge the gap between strangers across the globe. Imagine stepping into a virtual world where you can chat anonymously with someone on the other side of the world, sharing thoughts, ideas, or simply exchanging light-hearted banter.Omegle's simplicity is its charm. With just a click, you can engage in text or video chats, sparking conversations that can be both enlightening and entertaining. Whether you're seeking advice, roasting jokes, or simply curious about different cultures, Omegle allows for spontaneous interactions that break the mold of traditional social media.But why stop there? Omegle not only offers anonymity, but it also cultivates a vibrant tapestry of interactions that can lead to unexpected friendships or intriguing discussions. So dive into the world of Omegle, and discover the beauty of connecting with others, one chat at a time. Who knows? The next stranger you talk to could become a lifelong friend or spark a new passion. Embrace the unknown – adventure awaits!
-
해결됨초보자를 위한 BigQuery(SQL) 입문
구글클라우드설정-테이블성성후 파티션 나누기 설정에서 battle_datetime 이 목록에 나타나지 않습니다.
구글클라우드설정-테이블성성후 파티션 나누기 설정에서 battle_datetime 이 목록에 나타나지 않습니다.
-
미해결3분만에 1000명 DB 확보하는 DB 추출기 프로그램 개발 강의 (셀레니움 + pyqt + gui + exe 프로그램)
제목에 exe 프로그램도 써져있는데 내용이 없어요 수료증 출력이 안돼요
제목에 exe 프로그램도 써져있는데 내용이 없어요 수료증 출력이 안돼요
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
scripting define symbol 관련 질문
안녕하세요, scripting define symbol과 관련해서 질문드립니다.Logger 편에서 Logger 클래스가 monobehaviour을 상속하지 않기 때문에 scripting define symbol을 사용하지 않으면 코드가 작동하지 않는다고 이해했습니다.이는 monobehaviour을 상속하지 않는 모든 클래스에서 해당되는 내용인가요?[Conditional("")] 코드 외에 코드를 작동시키는 방법이 있나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
캐릭터가 분홍색으로 뜬다면 참고해주세요
제가 해결한 방법을 공유해드립니다.액세스 문제로 폴더 이동이 안 돼서 복사를 하고 나니까 분홍색으로 뜨더라고요. 다른 질문 글 보니 비주얼 스튜디오를 닫으면 액세스 문제가 해결된다고 하더라구요.비주얼 스튜디오 닫고 UnithChan!을 다시 임포트하고 나서, 폴더 이동을 하니까 분홍색으로 안 뜨고 잘 나옵니다. 참고로 FBX가 보안 문제로 열람도 안 되는 경우에는 설정에서 열어주게 하면 됩니다.윈도우 10 기준으로 fpx 파일을 더블 클릭하면 3D 뷰어가 뜨는데요. [도움말 - 설정]에 들어가면 관련 옵션을 '설정'으로 해주면 됩니다.
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
[자체 해결]삭제하기 시 경고 alert 출력
안녕하세요. 7.7)리뷰 삭제 기능 구현하기를 하는 중인데, 혹시 바로 삭제하지 않고 중간에 alert 같은 걸로 정말 삭제할지 체크하고 그 다음에 삭제하는 식으로는 어떻게 하면 좋을까요? form 태그에 onsubmit을 달아서 중간에 끼어드는? 방식으로 해볼까 했는데, 뭔가 useActionState랑 호환을 어떻게 해야할지 잘 모르겠네요...아래 코드를 작성해서 해결했습니다! const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => { const confirmDelete = confirm(`댓글을 정말 삭제하시겠습니까?`); if (confirmDelete) { const form = e.currentTarget; form.requestSubmit(); // 폼을 강제로 제출 } };
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
@Repository를 통해 프록시가 생성되려면
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]"@Repository가 붙은 클래스는 예외 변환 AOP의 적용 대상이 된다."는 내용에 대해 더 궁금한 점이 있습니다. 테스트 코드의 @Transactional를 주석 처리하고, @Import로 설정도 수정해서, JPA 대신 MyBatis나 JdbcTemplate을 적용해 봐도log.info("repository = {}", itemRepository.getClass());테스트의 이 코드를 실행하면 itemRepository가 프록시로 생성된다는 것을 확인할 수 있었습니다. JPA가 아니라 해도 @Repository가 적용되면 프록시 객체로 생성되는 것 같습니다. 그런데 이전 스프링 핵심 원리 기본 편 강의에서 사용했던 core 프로젝트에서도 한번 테스트해 봤는데//@Component @Repository public class MemoryMemberRepository implements MemberRepository { . . . } class OrderServiceImplTest { @Test void createOrder() { MemoryMemberRepository memberRepository = new MemoryMemberRepository(); System.out.println(memberRepository.getClass()); . . . } } 이 테스트를 실행해 보면 memoryMemberRepository는 @Repository가 적용되어 있음에도 불구하고 프록시 객체로 생성되지 않는 것 같습니다. 이 이유가 무엇인가요?@Repository를 통해 프록시 객체를 만드는 기능은 JPA 라이브러리가 있어야(JPA를 사용하지 않고 MyBatis를 사용하더라도) 적용되는 건가요? +) 그런데 스프링 DB 1편 강의에서 사용한 프로젝트에서도 테스트해 봤는데, 여기선 JPA 라이브러리를 받지 않았는데도 @Repository를 통해 프록시 객체가 생성되는 것 같습니다. 물론 @Transactional도 주석 처리했습니다.@Slf4j @Repository public class MemberRepositoryV5 implements MemberRepository { private final JdbcTemplate template; . . . } @Test void AopCheck() { log.info("memberService class = {}", memberService.getClass()); log.info("memberRepository class = {}", memberRepository.getClass()); Assertions.assertThat(AopUtils.isAopProxy(memberService)).isTrue(); Assertions.assertThat(AopUtils.isAopProxy(memberRepository)).isFalse(); }@Transactional을 주석 처리했으므로 memberService는 프록시 객체가 아니고,@Repository가 적용된 memberRepository는 CGLIB 관련 내용이 출력됩니다. @Repository를 통해 프록시 객체가 생성되려면 어떤 조건이 필요한지 궁금합니다.
-
해결됨파이썬 주식 매매 봇으로 주식시장 자동사냥하기
섹션 2.2 직관에서 알고리즘 트레이딩까지 강의가 안보여요
'동영상을 준비중에 있습니다.' 라는 화면과 함께 강의 영상이 재생되지 않습니다.아직 준비중인걸까요?
-
해결됨Flutter 앱 개발 실전
수강 기강 연장 부탁드리겠습니다! :ㅇ
안녕하세요 데브스토리님! 수강기한 연장 부탁드리겠습니다. 감사합니다!!
-
미해결빅데이터/텍스트마이닝 분석법 (LDA,BERTtopic,감성분석,CONCOR with ChatGPT)
TF-IDF값에 대해서 질문드립니다.
안녕하세요저도 동일하게 빅카인드 뉴스데이터로TF-IDF 분석을 하다 본 강의를 알게되었는데 TF-IDF 값이 주신 자료의 코드로 분석은 되는데값이 크게 나온 이유가 뭘까요? 강의자료의 예시 파일로 3자리 숫자가 나오는데통상 0.몇의 숫자로 표현되지 않나요? 코드의 계산식을 이용해서 값이 나온 결과를 설명해주세요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불! 코드 질문있습니다
http://boj.kr/ad93c77cfed245858c644f3adb037853큰돌님 작성한 코드의 42번 if 문은 있어도 없어도 둘 다 통과하는데if 문이 없어도 되는 이유가 J 값이 처음부터 가장자리면 바로 출력하면 되는 거고 가장자리가 아니더라도53번의 if문을 통해서 fvisited 값보다 무조건 작은 jvisited 값이 가장자리까지 가는 로직이라서 그런 거죠 ??
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
docker 기반 cicd 배포
안녕하세요 docker 기반으로 cicd 적용시에docker stop 하고 docker rm 으로 container 죽인담에 다시 docker pull -> docker start 하는거면 그 잠깐의 시간이겠짐나 어쨋든 끊기지 않나요 ?혹시 끊기는 시간을 더 줄인다고 하면 우선 먼저 docker pull 를 하고나서 이전 docker stop docker rm 을 하고 새롭게 docker pull 받은것을 docker run -d 할수있으면 좋을것 같은데 방법 있을까요 ?ecs 에서도 ec2 가 있는걸로 알고있는데요 ecs ec2 를 사용하게 되면 blue green 은 아니더라도 롤링 배포를 할 수 있을것 같은데 사용하지 않은 이유가 있을까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
boot에서 빈값이 들어왔을때 Integer와 int로 받을때 질문 그리고 주로 뭘 사용하는지
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]만약에 쿼리파라미터로price="" //빈값price=" " //한칸띈 빈값이렇게 들어오고Integer로 받으면 그냥 null이 들어가나요?int는 그냥 0이 들어가는건가요?테스트 해보니 그런거 같아서요.이유가 뭔가요? 자동으로 컨버터가 되는건가요? 만약에 쿼리파라미터로 price를 넣지 않으면 그냥 자동으로 null이 들어가는건가요? 그리고 숫자가 들어올때 Integer나 int 중에 주로 현업에서는 무엇으로 받는게 좋나요?뭔가 이런 사소한게 선택장애가 있어서
-
미해결비전공자도 따라하는 워드프레스 홈페이지 제작
엘리멘토 프로 이벤트 참여는 어떻게 하나요?
이벤트 참여 정보가 어디있는지 알수가 없네요
-
해결됨Power Automate Level 3 - 명함신청/외부방문등록/주차신청 자동화
RPA 흐름 문의
강사님 흐름 실습 중 문의 사항이 있어서 글 씁니다.하기의 그림과 같이 "Apply to each" 보이지 않아서 문의 드립니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 연장 부탁드립니다.
안녕하세요. 수강 연장 가능한지 문의 드립니다.