inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

56강에 대한 질문입니다(BoundedMain).

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] package thread.bounded; import static util.MyLogger.log; public class ProducerTask implements Runnable { private BoundedQueue queue; private String request; public ProducerTask(BoundedQueue queue, String request) { this.queue = queue; this.request = request; } @Override public void run() { log("[생산 시도] " + request + " -> " + queue); log("[생산 완료] " + request + " -> " + queue); } } package thread.bounded; import static util.MyLogger.log; public class ConsumerTask implements Runnable { private BoundedQueue queue; public ConsumerTask(BoundedQueue queue) { this.queue = queue; } @Override public void run() { log("[소비 시도] ? <- " + queue); String data = queue.take(); log("[소비 완료] " + data + " <- " + queue); } } package thread.bounded; public interface BoundedQueue { void put(String data); String take(); } package thread.bounded; import java.util.ArrayList; import java.util.List; import static util.MyLogger.log; import static util.ThreadUtils.sleep; public class BoundedMain { public static void main(String[] args) { // 1. BoundedQueue 선택 BoundedQueue queue = new BoundedQueueV1(2); // 2. 생산자, 소비자 실행 순서 선택, 반드시 하나만 선택! producerFirst(queue); // 생산자 먼저 실행 //consumerFirst(queue); // 소비자 먼저 실행 } private static void producerFirst(BoundedQueue queue) { log("== [생산자 먼저 실행] 시작, " + queue.getClass().getSimpleName() + " =="); List<Thread> threads = new ArrayList<>(); startProducer(queue, threads); printAllState(queue, threads); startConsumer(queue, threads); printAllState(queue, threads); log("== [생산자 먼저 실행] 종료, " + queue.getClass().getSimpleName() + " =="); } private static void consumerFirst(BoundedQueue queue) { log("== [소비자 먼저 실행] 시작, " + queue.getClass().getSimpleName() + " =="); List<Thread> threads = new ArrayList<>(); startConsumer(queue, threads); printAllState(queue, threads); startProducer(queue, threads); printAllState(queue, threads); log("== [소비자 먼저 실행] 종료, " + queue.getClass().getSimpleName() + " =="); } private static void startProducer(BoundedQueue queue, List<Thread> threads) { System.out.println(); log("생산자 시작"); for (int i = 1; i <= 3; i++) { Thread producer = new Thread(new ProducerTask(queue, "data" + i), "producer" + i); threads.add(producer); producer.start(); sleep(100); } } private static void startConsumer(BoundedQueue queue, List<Thread> threads) { System.out.println(); log("소비자 시작"); for (int i = 1; i <= 3; i++) { Thread consumer = new Thread(new ConsumerTask(queue), "consumer" + i); threads.add(consumer); consumer.start(); sleep(100); } } private static void printAllState(BoundedQueue queue, List<Thread> threads) { System.out.println(); log("현재 상태 출력, 큐 데이터: " + queue); for (Thread thread : threads) { log(thread.getName() + ": " + thread.getState()); } } } package thread.bounded; import java.util.ArrayDeque; import java.util.Queue; import static util.MyLogger.log; public class BoundedQueueV1 implements BoundedQueue { private final Queue<String> queue = new ArrayDeque<>(); private final int max; public BoundedQueueV1(int max) { this.max = max; } @Override public synchronized void put(String data) { if (queue.size() == max) { log("[put] 큐가 가득 참, 버림: " + data); return; } queue.offer(data); } @Override public synchronized String take() { if (queue.isEmpty()) { return null; } return queue.poll(); } @Override public String toString() { return queue.toString(); } } C:\Users\lgh80\.jdks\temurin-21.0.4\bin\java.exe --enable-preview "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2024.1.4\lib\idea_rt.jar=52674:C:\Program Files\JetBrains\IntelliJ IDEA 2024.1.4\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\java-adv1\out\production\java-adv1 thread.bounded.BoundedMain 09:38:16.411 [ main] == [생산자 먼저 실행] 시작, BoundedQueueV1 == 09:38:16.413 [ main] 생산자 시작 09:38:16.424 [producer1] [생산 시도] data1 -> [] 09:38:16.425 [producer1] [생산 완료] data1 -> [] 09:38:16.531 [producer2] [생산 시도] data2 -> [] 09:38:16.532 [producer2] [생산 완료] data2 -> [] 09:38:16.642 [producer3] [생산 시도] data3 -> [] 09:38:16.642 [producer3] [생산 완료] data3 -> [] 09:38:16.752 [ main] 현재 상태 출력, 큐 데이터: [] 09:38:16.754 [ main] producer1: TERMINATED 09:38:16.754 [ main] producer2: TERMINATED 09:38:16.754 [ main] producer3: TERMINATED 09:38:16.755 [ main] 소비자 시작 09:38:16.757 [consumer1] [소비 시도] ? <- [] 09:38:16.757 [consumer1] [소비 완료] null <- [] 09:38:16.864 [consumer2] [소비 시도] ? <- [] 09:38:16.865 [consumer2] [소비 완료] null <- [] 09:38:16.974 [consumer3] [소비 시도] ? <- [] 09:38:16.975 [consumer3] [소비 완료] null <- [] 09:38:17.085 [ main] 현재 상태 출력, 큐 데이터: [] 09:38:17.085 [ main] producer1: TERMINATED 09:38:17.086 [ main] producer2: TERMINATED 09:38:17.086 [ main] producer3: TERMINATED 09:38:17.086 [ main] consumer1: TERMINATED 09:38:17.087 [ main] consumer2: TERMINATED 09:38:17.087 [ main] consumer3: TERMINATED 09:38:17.087 [ main] == [생산자 먼저 실행] 종료, BoundedQueueV1 == Process finished with exit code 0 이런 식으로 출력이 뜨는데 강의 내용에 나와있는 로그 창이랑 많이 달라서 강의 코드랑도 비교해봤는데 어디에서 문제가 있는 건지 잘 모르겠습니다.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
lgh8079 댓글 2 좋아요 0 조회수 224

의존관계 주입에 대해서 질문드립니다!

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요! 영한님 강의를 잘 듣고 있습니다. 의존관계 주입 설명해주실때 문득 궁금점이 생겨서 질문드립니다. 의존관계 주입은 추상적인 것을 의존하게 하고, 나중에 실제 구체적인것을 넣어주는 부분인데 이는 같은 기능을 수행하는 List(Array, Linked)의 경우라고 한다면 처음에는 한가지 기능만 수행하다가, 필요에 의해서 다른 기능을 만들었고 이걸 공통화가 가능하다면 인터페이스로 만들어주는 작업을 진행하면 되는 걸까요? 실무에서 인터페이스는 처음부터 설계를 잡고 들어가는 경우가 많은지, 혹은 필요에 의해 중간에 만드는 경우도 있는지 궁금합니다! 중간에 필요하긴한데 기능이 다 같진 않은 경우에는 어떻게 하는지도 궁금하네요ㅠ

  • java
  • 객체지향
suco 댓글 1 좋아요 1 조회수 181

Catch 안에서 쓰인 throw

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요. try { writer.close(); } catch (Exception e) { throw new RuntimeException (e); } 여기에서 catch 안에 throw로 RuntimeException 을 발생 시켰는데, 이부분은 어디서 catch가 되나요?

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

router를 사용할 때 왜 페이지가 갱신되는지에 대한 질문

해결됨

Next.js 시작하기

안녕하세요. 면접준비에 도움이 될 거 같고 개념적으로도 궁금해서 질문드립니다. 장바구니에서 삭제를 하면 갱신되는데에 동작원리에서 처음엔 router.replace(router.asPath) 때문에 url이 변경되진 않아도 단순하게 /cart 로 이동이란 동작을 해서 페이지를 다시 그린다고 생각했습니다. CartList 는 CartPage 의 자식 컴포넌트이다. CartPage 는 getServerSideProps 로 서버에서 받아온 데이터를 프롭스(carts)로 받으며, 그 프롭스를 CartList 에게 전달해주고 있다. CartList 는 부모컴포넌트에게 받은 carts 프롭스를 통해 장바구니 목록을 보여주고 있다. 장바구니에서 상품을 삭제하면, 선택한 상품을 서버에서 삭제하고 router.replace 를 통해( router.push 도 동일) 현재 페이지(asPath)인 /cart 로 이동한다. /cart 페이지(즉, CartPage.jsx )가 리렌더링된다. 리액트는 리렌더링되면 컴포넌트의 모든 코드를 다시 실행하게 된다.(고 알고 있습니다.) 그로 인해 getServerSideProps 가 다시 실행되고 갱신된(장바구니에서 상품을 삭제한) 데이터를 다시 CartPage 에게 프롭스로 내려주게 된다. 프롭스가 변경됐으니 자식 컴포넌트인 CartList 도 리렌더링되어 모든 코드가 다시 실행된다. 바뀐 장바구니 데이터로 보여지게 된다. 라고 생각했는데요. https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props#behavior 공식문서를 살펴보니 사용자가 Link 컴포넌트 또는 router를 통해 페이지를 방문할 때 , Next.js는 서버에 API 요청을 보내 getServerSideProps를 실행 합니다. 라고 되어있습니다. 이러면, 현재 CartList 는 CartPage 의 자식 컴포넌트이다. CartPage 는 getServerSideProps 로 서버에서 받아온 데이터를 프롭스(carts)로 받으며, 그 프롭스를 CartList 에게 전달해주고 있다. CartList 는 부모컴포넌트에게 받은 carts 프롭스를 통해 장바구니 목록을 보여주고 있다. 장바구니에서 상품을 삭제하면, 선택한 상품을 서버에서 삭제한다. router.replace 를 통해( router.push 도 동일) 현재 페이지(asPath)인 /cart 로 이동한다. router를 통해 페이지를 방문했으므로 CartPage 의 getServerSideProps 가 다시 실행되고 갱신된 데이터를 CartPage 에게 프롭스로 내려주게 된다. 프롭스가 변경됐으니 자식 컴포넌트인 CartList 도 리렌더링되어 모든 코드가 다시 실행된다. 바뀐 장바구니 데이터로 보여지게 된다. 이렇게 이해하면 될까요? 그리고, getServerSideProps 가 있는 페이지 컴포넌트는 getServerSideProps 가 재실행되면 자동으로 리렌더링되게 되는 구조인가요? 설명해주셨는데 제가 놓친거면 죄송합니다.

  • javascript
  • react
  • next.js
ys5133 댓글 2 좋아요 1 조회수 360

인터럽트에 대해 질문 있습니다.

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

public class ThreadStopMainV2 { public static void main(String[] args) throws InterruptedException { Job job = new Job(); Thread thread = new Thread(job); thread.start(); Thread.sleep(4000); log("작업 중단 지시 interrupt"); thread.interrupt(); log("main 스레드 끝"); } static class Job implements Runnable { @Override public void run() { while (true) { try { log("스레드 실행"); Thread.sleep(2000); } catch (InterruptedException e) { log("예외 발생"); break; } } log("작업 끝"); } } } 위 코드의 실행 결과는 아래와 같습니다. 궁금한 부분은 로그에서 작업 중단 지시 interrupt 이후에 대해 궁금한점이 있습니다. 작업 중단 지시 interrupt 를 로그로 찍고 thread.interrupt();를 호출 했습니다. 그러면 생선한 스레드에 interrupt 신호를 보내고 Thread.sleep(2000); 부분에서 예외가 발생해 catch 문으로 빠지는것도 이해했습니다. 하지만 catch 문으로 빠지기전 log("스레드 실행"); 가 실행되지 않나 라는 생각이 듭니다. 그래서 최종 결과는 아래와 같이 catch 로 빠지기전에 스레드 실행이 한번 더 찍혀야 하지 않나 라는 생각이 듭니다. 23:08:15.622 [ Thread-0] 스레드 실행 23:08:17.629 [ Thread-0] 스레드 실행 23:08:19.613 [ main] 작업 중단 지시 interrupt 23:08:19.613 [ Thread-0] 스레드 실행 23:08:19.614 [ main] main 스레드 끝 23:08:19.614 [ Thread-0] 예외 발생 23:08:19.616 [ Thread-0] 작업 끝

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
감바스 댓글 1 좋아요 0 조회수 320

자바 16부터는 instanceof 사용법에 질문이 있습니다

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 자바 16부터는 instanceof 를 사용하면서 동시에 변수를 선언할 수 있다고 하셨는데 그럼 if(parent instanceof Child child){child.childMethod()} 여기서 child.childMethod() 는 어떻게 작동이되는건가요? Child child 를 선언하긴했지만 instance 주소값을 대입하지않아서 작동이 되지 않는거 아닌가요?

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

자바 예외 처리3 - 체크 예외 질문

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 영상 에서 try-catch문과 throws으로, 예외를 잡는 것과, 던지는 것을 보았습니다. 현실적 으로는, 이 두 가지 사항이 잘 이해가 가는데, ex) 들수 있는 물건 - try-catch 무거운 물건을 들때 도움을 요청 - throws try-catch : 사람의 힘이나 기계의 힘으로 충분이 해결 가능 throws : 사람의 힘으로 안됨- > 기계의 힘으로도 안됨 -> 포기 코드적 으로는 어떨 때에는 try-cath로 잡고, 어떨 때에는 throws로 던져야 하는지 모르겠습니다. 혹 자바 예외 처리 실습 부분에서 이런 부분을 가르쳐 주시나요? 아니라면 어떨 때 던지고, 어떨 때 던져야 하는지 가르쳐 주시면 감사하겠습니다. 답변 부탁 드립니다.

  • java
  • 객체지향
생각하는자 댓글 1 좋아요 0 조회수 201

실차기반 CAN 데이터를 CANdb++로 dbc 파일 만들기

미해결

실무자가 알려주는 CANoe (For CAN 통신)

실차기반 CAN 데이터를 수집한 후 Vector CANdb++을 사용하여 Value Table을 정의할 때 궁금한 점이 있습니다. 방향지시등을 나타내는 데이터가 0x3C1 이라고 할 때, Messages를 TurnSignal로 address는 0x3C1이라고 정의했습니다. 그 후 시그널들을 정의하려고 합니다. 예를 들어 CAN 데이터가 19 D0 00 40 10 00 00 00 이렇게 수집되었을 경우 첫 바이트 19는 CRC를 의미하고 두 번째 바이트 D0 은 카운터를 의미하고 4, 5번째 바이트는 방향지시등 상태를 나타낼 경우 시그널에 CRC와 카운터, 방향지시등 상태를 Value Table를 어떻게 작성해야 할까요? CRC는 CRC 바이트 제외하고 나머지 7바이트를 CRC/8 SAE를 사용하는 것으로 확인했습니다. 두 번째 바이트 카운터는 0x00, 0x10, 0x20, 0x30, ... , 0xD0, 0xE0에서 다시 0x00으로 돌아가서 방향지시등 스위치의 상태가 변하였을 경우 카운터가 0x10 씩 증가하는 카운터를 가졌습니다. 4, 5번 째 바이트는 0x00, 0x00 일 때 좌우측 방향지시등을 점등하지 않은 Normal 상태 0x40, 0x10 일 때 좌측 방향지시등을 점등한 상태 0x00, 0x41 일 때 우측 방향지시등을 점등한 상태입니다. 나머지 바이트는 사용하지 않는 바이트입니다. 이러한 데이터를 가지는 Value Table을 어떻게 정의할 수 있을까요 특히, signal에서 value table을 선택할 때 1개의 Table만 선택할 수 있어서 방향 지시등 상태를 나타내는 2개의 바이트를 하나의 value table로 정의할 수 없을까요?

  • CAN
  • CANoe
  • candb++
LISA LAB SCH 댓글 2 좋아요 0 조회수 705

printf 출력 값 띄어쓰기 문의

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

영상 대략 28분 30초 부분 출력값을 보면, 'apple banana cherry'이렇게 printf 후에 한칸씩 띄어쓰기가 되어있는데, printf 이후에 무조건 띄어쓰기 한칸을 해줘야하는 건가요?

  • python
  • java
  • c
  • 정보처리기사
꿈나무 댓글 1 좋아요 0 조회수 589

Profile1에서 사용하는 Data ID : 2BYTE

미해결

CAN 통신 - 자동차 신입이 알아야 할 모든 것

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. DATAID는 활용만 하는 것이라면, 소프트웨어 개발을 할 때 OEM(완성차업체)에서 사양서 내에 작성해서 보내줬을 때 해당 DataID는 CONST 상수로서 미리 정의해놓고 CAN통신 및 CRC 계산하는데 쓰일 수 있도록 해야하는 거겠네요?? ...이해한 게 맞을까요?

  • CAN
  • uds
데브수달 댓글 2 좋아요 0 조회수 231

CRC 계산 방법

미해결

CAN 통신 - 자동차 신입이 알아야 할 모든 것

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 다름이 아닌, CRC 계산 방법 대강의 흐름만을 봤을 땐 어떤 느낌인지 알겠습디다만, 계산과정에 대해서 한번 자세한 설명 가능할까요 ? 각 BYTE에 있는 값들을 어떻게 POLYNOMIAL로 나눈다고하는데 해당 XOR 나눗셈 연산은 어찌 수행하는지 ...

  • CAN
  • uds
데브수달 댓글 1 좋아요 0 조회수 829

완강 했어요 ^^

미해결

코드로 배우는 React 19 with 스프링부트 API서버

드디어 완강 하였네요.. 이 강의 난의도가 초급이라던데 어려운 부분도 많긴 했어요. 이제 중급 실력되는건가요? ^^;;; 스프링은 모든 내용이 이해가되긴한데 React 쪽이 어렵네요... 아마도 문법이 다양하고 오류 잡기도 어려워서 그렇겠죠? ㅎㅎㅎㅎ intelij 도 만기가 끝나가네요... visual studio code, intelij community학습 목적엔 위 2개로 개발 연습해도 되나요?? 다음으로 학습해야될 스프링 학습은 어떤걸 해야될까요? 잡 사이트 보니깐 코틀린 + 스프링은 쓰는 곳이 없네요... 인기가 없나... 진짜 매력적인 언어인데.

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
just kim 댓글 1 좋아요 0 조회수 154

id값을 얻어오는 시점

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] ID 값은 em.persist(member) 가 호출되어 엔티티가 영속성 컨텍스트에 등록되는 시점에 부여되는 것이 맞는 것인지 아니면 DB를 거쳐서 저장되면서 값이 부여되는 것인지 궁금합니다. @PersistenceContext private EntityManager em; public Long save(Member member){ em.persist(member); return member.getId(); } 이 코드를 보면 persist(영속성 엔티티에서 관리될 때)때 id값이 정해지는 것이 맞는 것 같은데 둘 중 무엇이 맞는 개념인가요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
염경호 댓글 1 좋아요 0 조회수 188

CAN DBC 파일이 있는데요. 어느 부분에서 E2E프로토콜

미해결

CAN 통신 - 자동차 신입이 알아야 할 모든 것

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. CAN통신 공부중인 학우입니다. CAN DBC 파일이 있는데요. 어느 부분에서 E2E프로토콜 PROFILE이 있는 지 알 수 있을까요? 예전에 Vector CANDB++에디터로 해당 DBC 파일을 열었을 때 Overall View에는 크게 Networks, ECUS, Network nodes, Messages 가 있는데요. 관련 E2E PXX과 같이 표현된게 없으면 없는건가요? 감사합니다. 답변 기다리겠습니다.

  • CAN
  • uds
데브수달 댓글 1 좋아요 0 조회수 414

낙관적락 vs 네임드락

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

낙관적락과 다르게 네임드락은 재시도 로직이 필요 없나요? 낙관적락은 충돌이 빈번하다면 재시도 로직으로 인해 비관적락보다 성능이 떨어질 수 있는데, 네임드락은 어떤가요?

  • java
  • spring
  • 동시성
gelab 댓글 2 좋아요 0 조회수 403

Spring Authorization Server 활용 sso 구축

미해결

스프링 시큐리티 OAuth2

Oauth를 활용해 자체 sso 서버를 구축하려고 하는데 궁금한 게 있어 문의 드립니다. 먼저 구축할 예정인 환경은 아래와 같습니다. 로그인 프론트 Authorization과 로그인을 함께 처리할 백엔드 authorization code 요청 시 로그인 여부를 확인해야 하는데 로그인 정보가 jwt 토큰으로 cookie에 담겨있다면, OAuth2AuthorizationEndpointFilter에서 확인을 해야하는지 OAuth2AuthorizationCodeRequestAuthenticationConverter에서 확인을 해야하는지 궁금합니다.

  • java
  • spring
  • spring-boot
  • oauth
yjlee341 댓글 1 좋아요 0 조회수 442

변경된 api 사용시 text 안나오는 문제

미해결

만들면서 배우는 리액트 : 기초

변경된 api 주소를 사용하면 text가 안나오는데, 이럴 경우에는 이미지 위에 text가 나오도록 기능을 따로 만들어야 하나요?

  • javascript
  • react
코딩쿤스트 댓글 1 좋아요 0 조회수 174

랜더링된 HTML 에 대한 질문입니다

해결됨

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

안녕하세요! NextJS 에 대한 Flow 설명중 질문이 있습니다 9:01 Timeline 유저의 접속요청시 해당 페이지에 대한 내용만 랜더링하여 HTML 을 반환하는 걸까요? 그게 아니고 설명하신 모든 컴포넌트에 대한 렌더링이 이루어지는 것이라면 CSR 방식과 마찬가지로 HTML 반환이 늦어지지 않나 싶습니다 또한 사전 렌더링이 NextJS 서버가 부팅시 이루어지는 행위인지 궁금합니다! (서버 부팅시 랜더링된 HTML 이 생성되는지)

  • react
  • typescript
  • next.js
도크 댓글 2 좋아요 0 조회수 287

useState

미해결

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

TypeError: Cannot read properties of null (reading 'useState') 현재 27강 듣고있는데 저런에러가 나오네요.. 어떤게 문제인가요ㅜㅜ

  • react
  • node.js
ahj0156 댓글 1 좋아요 0 조회수 589

인기 태그

인프런 TOP Writers

주간 인기글