inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

[JVM이 문자열 상수를 관리하는 구조] 관련 질문드립니다.

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 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가 나온게 아닌지요? 제가 잘못 알고 있는 상태에서 잘못된 질문을 길게 한건가 싶어서 죄송스럽네요. 늘 좋은 강의 감사합니다!

  • java
  • 객체지향
  • jvm
  • data-structure
널개짱 댓글 1 좋아요 4 조회수 319

[자체 해결]삭제하기 시 경고 alert 출력

미해결

한 입 크기로 잘라먹는 Next.js

안녕하세요. 7.7)리뷰 삭제 기능 구현하기를 하는 중인데, 혹시 바로 삭제하지 않고 중간에 alert 같은 걸로 정말 삭제할지 체크하고 그 다음에 삭제하는 식으로는 어떻게 하면 좋을까요? form 태그에 onsubmit을 달아서 중간에 끼어드는? 방식으로 해볼까 했는데, 뭔가 useActionState랑 호환을 어떻게 해야할지 잘 모르겠네요... 아래 코드를 작성해서 해결했습니다! const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => { const confirmDelete = confirm(`댓글을 정말 삭제하시겠습니까?`); if (confirmDelete) { const form = e.currentTarget; form.requestSubmit(); // 폼을 강제로 제출 } };

  • react
  • typescript
  • next.js
He T (Tty) 댓글 2 좋아요 0 조회수 308

Member와 Locker 테이블에 질문이 있습니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 영상을 4분대까지 본 후 혼자 테스트를 해보고 있던 중 질문이 있습니다. Member 클래스에서 JoinColumn을 통해 name을 LOCKER_ID로 설정해주셨는데 이 LOCKER_ID는 어떤 것을 의미하나요? Locker 테이블의 id값이 그럼 @Column(name = "LOCKER_ID") 이렇게 되어있어야 하는 것 이라고 이해를 하고있습니다. 두 번째 질문으로 Member 클래스에서 JoinColumn을 지우고 Locker 테이블에서도 따로 @Column(name ="LOCKER_ID")를 설정해주지 않고 JpaMain 클래스에서 Locker locker = new Locker(); locker.setName("lockerA"); em.persist(locker); Member member = new Member(); member.setUsername("member1"); member.setLocker(locker); em.persist(member); Team team = new Team(); team.setName("teamA"); team.getMembers().add(member); em.persist(team); tx.commit(); 이렇게 실행을 해보았는데 어째서 Member 테이블에 LOCKER_ID 라는 이름으로 컬럼이 생기고 값이 들어가는지 궁금합니다. -> Member 클래스에서 locker변수에 @JoinColumn도 해주지 않았습니다. Member, Locker 클래스는 이렇습니다 ! @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; @OneToOne private Locker locker; public Locker getLocker() { return locker; } public void setLocker(Locker locker) { this.locker = locker; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Team getTeam() { return team; } public void setTeam(Team team) { this.team = team; team.getMembers().add(this); } } @Entity public class Locker { @Id @GeneratedValue private Long id; private String name; @OneToOne(mappedBy = "locker") private Member member; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 잘못 이해한 것이 있으면 설명 부탁드리겠습니다 ㅎㅎ

  • java
  • jpa
이동준 댓글 1 좋아요 0 조회수 159

데이터 패칭 관련 질문 드립니다.

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요 이정환 강사님. 인스타의 위치검색기능과 비슷한 기능을 구현하고 있습니다. 조회버튼을 클릭해서 serachParams를 서버컴포넌트로 전달하는 형식이 아니라 검색어가 입력되면 바로 검색해서 결과를 출력해야 하는 페이지인 경우에는 전부 클라이언트 컴포넌트로 구성해야 하나요? 어떤식으로 구성해야 Next의 장점을 최대한 살릴 수 있는지 궁금합니다.

  • react
  • typescript
  • next.js
Byoungmin Kang 댓글 2 좋아요 0 조회수 337

실행이 안돼요 ㅠㅠ

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

최신버전으로 다운 받았는데도 실행이 안돼서 강의를 진행할 수 없습니다. ㅠㅠ 어떻게 해야하나요. 자세히좀 알려주세요

  • java
  • spring
  • mvc
  • spring-boot
강세준 댓글 2 좋아요 0 조회수 346

실행이 안돼요 ㅠㅠ

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

최신 버전으로 다운받고 했는데 실행이 안돼요.. 공부를 진행하고 싶어도 이거때문에 시간만 보내고 진행이 안돼네요 ㅠㅠ

  • java
  • spring
  • mvc
  • spring-boot
강세준 댓글 1 좋아요 0 조회수 211

클래스 로딩 순서에 관해 질문이 있습니다.

해결됨

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

10분 24초에 클래스를 로딩하기에 앞서서 검사, 준비, 해결과정을 거친다고 하셨는데 로딩을 한 후 링킹(검사,준비, 해결)과정을 수행하는 것이 아닌가요? 로딩전 링킹과정 후 로딩을 하는 것인가요? 제가 잘못이해하고 있는 것인지 궁금합니다

  • java
  • 객체지향
  • jvm
  • data-structure
김민정 댓글 2 좋아요 0 조회수 234

게시글 삭제하기

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요 제로초님! 게시글 삭제하기 기능을 구현하고 있습니다! 구현해도 안되길래 스웨거가서 테스트를 하고 서버를 봤더니 오류가 나더라구요 혹시 이유를 알 수 있을까요??

  • react
  • next.js
  • react-query
  • next-auth
  • msw
정새롬 댓글 1 좋아요 0 조회수 108

08:55 테스트 이후에 파라미터 id 값을넣어도 에러가 뜹니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] JdbcTemplateMemberRepository 클래스내의 메서드에 id파라미터가 없어서 에러가 떴다는 내용인데.. 그래서 넣어줬습니다. @Override public Optional<Member> findById(Long id) {//리스트 형태로 반환 하기 List<Member> result = jdbcTemplate.query("select * from member where id =? ", memberRowMapper(), id);//parameter 셋팅 id return result.stream ().findAny(); } 그런데도 에러메시지에 이런 내용이 뜨네요 Could not detect default configuration classes for test class [hello.hello_spring.service.MemberServiceIntegrationTest]: MemberServiceIntegrationTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration.

  • java
  • spring
  • mvc
  • spring-boot
sh hhyeogi365 댓글 2 좋아요 0 조회수 201

React Server Component 와 Pre Fetching

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요, 강의 애청자(?) 입니다. React Server Component가 도입된 후에 interaction이 필요한 component(Client component)만 JS Bundle에 포함시켜서 Browser로 보냄으로써 JS Bundle의 불필요한 계산(용량)을 줄일 수 있다고 말씀하셨습니다. 그렇다면 여기서 궁금한것이 React Server Component를 설명해주시기 전에 Pre Fetching에서 JS Bundle에는 사실 현재 Page에 필요한 JS Bundle만 전달된다. 이유는 용량이 커지면 hydration이 지연되기 때문. 그 후에 Pre fetching으로 나머지 연결된 모든 Page의 JS Bundle을 불러온다고 설명해주신 개념은 여전히 유지가 되는건가요? 즉, 아래의 순서가 맞는지 궁금합니다. (Brower) 접속요청 (Server) JS 실행-Rendering (Server to Browser) Rendering 된 HTML (Browser to User) 화면에 Rendering (Server to Browser) JS Bundle ( 단, '현재 Page에 필요한', 'Client component') (Browser) Hydration (Browser to User) Interaction 가능 - TTI (Server to Browser) Pre Fetching/JS Bundle (단, '연결된 모든 Page의', 'Client component') 이 순서가 맞을까요? 아니라면.. Pre fetching 개념이 React Server Component 도입이후 없어진건가요?(이건 아닌거같긴한데 ㅎ) 어떻게 동작하는지 궁금합니다. 항상 잘 듣고있습니다. 감사합니다.

  • react
  • typescript
  • next.js
codingforfun 댓글 1 좋아요 0 조회수 211

게시글 삭제

해결됨

한 입 크기로 잘라먹는 Next.js

안녕하세요 제로초님! 게시글 삭제하기 기능을 구현하고 있습니다! 구현해도 안되길래 스웨거가서 테스트를 하고 서버를 봤더니 오류가 나더라구요 혹시 이유를 알 수 있을까요??

  • react
  • typescript
  • next.js
댓글 2 좋아요 1 조회수 229

toString()

미해결

김영한의 실전 자바 - 중급 1편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] debug("xx ={} ", str); 에도 내부적으로 toString()이 적용되어서 출력되나요?

  • java
  • 객체지향
sjphone95 댓글 1 좋아요 0 조회수 176

존재하지 않는 ip와 서버가 사용하지 않는 ip의 차이

해결됨

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] ai야 999.999.999.999 라는 ip를 사용해서 UnknownHostException 을 받는 경우와 192.168.1.250를 사용해서 ConnectException 을 받는 경우의 차이를 설명해줘

  • java
  • 네트워크
  • 객체지향
ssshhh 댓글 1 좋아요 0 조회수 211

키보드 어떤 거 사용하시나요

미해결

Next.js 시작하기(feat. 지도 서비스 개발)

궁금합니다

  • seo
  • next.js
  • vercel
  • csr
  • ssg
  • ssr
kaibee1202+ 댓글 1 좋아요 1 조회수 374

안녕하세요, 혹시 다른문제도 여쭤볼 수 있을까요?

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

import java.util.*; public class Main { static int N; static ArrayList<Integer>[] graph; static ArrayList<Integer>[] graphReverse; static ArrayList<Integer> orderNode = new ArrayList<>(); static ArrayList<Integer> reverseOrderNode = new ArrayList<>(); static boolean[] visited; public static void dfs(int idx) { visited[idx] = true; orderNode.add(idx); for(int next : graph[idx]) { if(!visited[next]) { dfs(next); } } } public static void dfsReverse(int idx) { visited[idx] = true; reverseOrderNode.add(idx); for(int next : graphReverse[idx]) { if(!visited[next]) { dfsReverse(next); } } } public static void main (String[] args) { Scanner input = new Scanner(System.in); boolean isReverseOrder = true; boolean isOrder = true; N = input.nextInt(); graph = new ArrayList[N+1]; graphReverse = new ArrayList[N+1]; visited = new boolean[N+1]; for(int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); graphReverse[i] = new ArrayList<>(); } for(int i = 0; i < N-1; i++) { int x = input.nextInt(); int y = input.nextInt(); graph[x].add(y); graph[y].add(x); graphReverse[x].add(y); graphReverse[y].add(x); } input.nextLine(); String[] orderStr = input.nextLine().split(" "); for(int i = 1; i <= N; i++) { Collections.sort(graphReverse[i], Collections.reverseOrder()); } for(int i = 1; i <= N; i++) { if(!visited[i]) { dfs(i); } } visited = new boolean[N+1]; for(int i = 1; i <= N; i++) { if(!visited[i]) { dfsReverse(i); } } for(int i = 1; i <= orderStr.length; i++) { // System.out.println(orderStr[i-1]); if(reverseOrderNode.get(i-1) != Integer.parseInt(orderStr[i-1])) { isReverseOrder = false; } if(orderNode.get(i-1) != Integer.parseInt(orderStr[i-1])) { isOrder = false; } } if(isOrder || isReverseOrder) { System.out.println(1); } else { System.out.println(0); } } } 안녕하세요 강사님,, 덕분에 비전공자인 제가 dfs 26개의 문제를 풀고 골드에 진입했습니다. 정말 너무나도 감사합니다. 하지만 골드에서 막히는게 많은데 이번 문제는 도저히 검색하고, 반례를 다 찾아보고 해봐도 해결이 되지않아 답답한 마음에 여기에 글을 적습니다.. 문제는 백준 https://www.acmicpc.net/problem/16964 DFS 스페셜 저지입니다. 제가 푼 방법은 2개의 그래프를 만든 후, 1개는 sort, 다른 한개는 reverseOrder을 하여, 정점 방문 순서를 2개 구한 후, 마지막에 제시되는 4개의 숫자와 비교하여 출력하는 방식으로 코드를 작성하였습니다. 하지만 제가 찾아본 모든 반례와 백준에서 제공되는 예제들은 통과되는데, 6%에서 틀렸다고 나옵니다. 다른문제로 곤란하게 해드렸다면, 바로 글 삭제하겠습니다. 감사합니다.

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
김예현 댓글 1 좋아요 1 조회수 147

유저의 요청으로 서버에서 "JS 실행(렌더링)"을 하는것에 관한 질문

미해결

한 입 크기로 잘라먹는 Next.js

유저가 웹 앱에 진입을 하면서 서버에 요청을 보낼 때, 서버에서 JS를 실행하여 html을 채워준 뒤 에 클라이언트로 보낸다고 이해하였습니다. 질문 1) 그렇다면, 서버에서는 node와 같은 자바스크립트 런타임 환경이 갖춰져 있어야 한다는 이야기일까요?? 질문 2) 더 나아가서, 넥스트 프로젝트의 배포 방법이 리액트의 배포 방법과 차이가 많이 날까요??(vercel을 사용하지 않는다는 전제하에)

  • react
  • typescript
  • next.js
learn2.dosystem 댓글 2 좋아요 1 조회수 124

5분대 설명하신 부분이 이해가 잘 안됩니다.

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 5분 지점에 member와 team을 분리해서 호출하기 위해 프록시를 사용한다라고 이해했는데 9분 53초대에서 보면 getUsername()을 호출했을 때 쿼리가 team까지 조인해서 가져옵니다. getTeam() 을 호출하지 않아도 조인으로 가져오는 거라면 굳이 프록시를 사용해야되는 것인지 의문점이 들었습니다. 제가 이해한 것이 맞는지 궁금합니다.

  • java
  • jpa
jaemoon 댓글 3 좋아요 0 조회수 175

구글 로그인 구현하기

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요 제로초님! 완강하고 지금 구글 로그인 구현중입니다. 구글로 로그인하다가 마지막에 인가토큰받는 부분에서 404 에러가나는데 이유를 모르겠습니다... 도와주세요 ㅠ_ㅠ

  • react
  • next.js
  • react-query
  • next-auth
  • msw
정새롬 댓글 2 좋아요 0 조회수 219

실무 코드스타일 질문

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

FileReader(FILE_NAME) 이렇게 생성하면 시스템의 기본 디폴드 캐릭터셋을 사용한다고했습니다. 그런데 실제로 실무에서 애플리케이션을 만들고 배포하면 어떤 환경에서 실행될지모르기때문에 코드안에 캐릭터셋을 지정해주는 편인가요? FileReader(FILE_NAME, UTF-8) 이렇게요 개발하는입장에선 당장은 캐릭터셋을 지정안해도되지만 추후에 이 애플리케이션이 실행될 환경을 고려해서 적어주는게 바람직할까요.?

  • java
  • 네트워크
  • 객체지향
준호 댓글 2 좋아요 0 조회수 191

인기 태그

인프런 TOP Writers

주간 인기글