inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

Item에서 Category가 Import되지 않아요

미해결

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

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

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
이연서 댓글 1 좋아요 0 조회수 91

OneToMany속의 ManyToOne 조회시 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

OneToMany 관계에서 페치조인을 하게되면 페이징이 불가하다고 하셨는데 OneToMany는 batchSize를 조절하여 해결한뒤 OneToMany안의 ManyToOne 관계는 어떻게 페치조인 할수있을까요? 예를 들어서 테이블 A, B, C가 있을경우 A와 B는 OneToMany관계 B와 C는 ManyToOne관계 class A { @OneToMany private List<B> b = new ArrayList<>(); } class B { @ManyToOne // Lazy private A a; @ManyToOne // Lazy private C c; } class C { } A를 조회하고 C까지 끌고와야하는경우 A와 B는 OneToMany 관계이기 때문에 페치조인이 불가능하지만 B와 C는 페치조인이 가능하다고 이해하였습니다 BatchSize를 설정하여 A에서 B를 가져올시 IN 쿼리로 가져온뒤 B에서 C를 페치 조인하는 방법은 없나요? 아니면 이런경우 특수하게 B에서 C를 Eager로 설정 해야할까요 애초에 B를 통해서 A와 C를 가져와야할까요

  • java
  • spring
  • spring-boot
  • jpa
h0ch1 댓글 1 좋아요 1 조회수 180

강의 자료 내용 확인 부탁드립니다.

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

안녕하세요. 수강생 입니다. 좋은 강의 잘 수강하면서 열심히 공부하고 있습니다. 노션 페이지 내용 관련으로 문의드립니다. [입문] 시작은 프리캠프 - 섹션 3 CSS의 기본과 싸이월드 실습 1 CSS 사용방법 3가지 예시 이미지 중 해당 내용들에 대한 이미지가 이상해 문의 남깁니다. 감사합니다.

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
at k 댓글 1 좋아요 0 조회수 196

백틱

미해결

처음 만난 리액트(React)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 혹시 작은 따옴표와 백틱을 구분하여 사용해야 하나요? 백틱을 써야하는데 작은 따옴표를 쓰면 오류가 나거나 그 반대 상황에서도 오류가 나는 경우가 있을까요?큰 따옴표도 궁금합니다!

  • HTML/CSS
  • javascript
  • react
오키오키 댓글 1 좋아요 1 조회수 136

memberrepositorytest 오류

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. could not prepare statement [Sequence "MEMBER_SEQ" not found; SQL statement: select next value for member_seq [90036-232]] [select next value for member_seq]; SQL [select next value for member_seq] org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement [Sequence "MEMBER_SEQ" not found; SQL statement: select next value for member_seq [90036-232]] [select next value for member_seq]; SQL [select next value for member_seq] at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:560) at org.springframework.dao.support .ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support .DataAccessUtils.translateIfNecessary(DataAccessUtils.java:343 ) 이런 에러가 납니다ㅠㅠ

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
이연서 댓글 1 좋아요 0 조회수 443

pg 파라미터가 이제는 없어진다고 하는데 업데이트 해주시나요?

미해결

[백엔드/예외처리 시나리오/집계 최적화] 백엔드 포트폴리오와 실무 이력 강화 전략. 올인원 PART1

pg 파라미터가 이제는 없어진다고 하는데 업데이트 해주시나요?

  • java
  • spring-boot
  • 포트폴리오
  • 기술면접
  • bulkinsert
kofk113 댓글 1 좋아요 0 조회수 231

cas 연산3 incrementAndGet 질문

미해결

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

안녕하세요? 강의 잘 듣고 있습니다. CAS 연산3에서 질문이 있는데요, 아래는 incrementAndGet을 학습용으로 만들어주신 메서드입니다. private static int incrementAndGet(AtomicInteger atomicInteger) { int getValue; boolean result; // 읽고 -> 읽은 값이 바뀌지 않았는지 확인하고 -> 업데이트 // [읽은 값이 바뀌지 않았는지 확인하고 -> 업데이트] 이 부분을 CAS 연산으로 보장 do{ getValue = atomicInteger.get(); log("getValue : " + getValue); sleep(100); // 스레드 동시 실행을 위해 잠시 대기 // 읽은 값이 그대로 있다면(벽경되지 않았다면) 내가 의도한 값을 넣어라! result = atomicInteger.compareAndSet(getValue, getValue+1); log("result: " + result); } while(!result); //compareAndSet이 실패했으면 계속 다시 해라 return getValue + 1; // atomicInteger.get() 하지 않는 이유 <- 그새 다른 스레드가 값을 변경할 수 있기 때문 } 이 코드에서 보면 값을 어플리케이션으로 가져와서 -> CAS연산을 시키고 충돌이 발생할 경우 재실행을 시키는데 애초부터 CPU한테 +1을 하는 것을 시키면 굳이 낙관적락을 적용할 필요가 없지 않나요? 굳이 어플리케이션으로 가져와서 검증을 하는 이유를 아무리 생각해봐도 잘 모르겠습니다. ㅠㅠ

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
김영빈 댓글 1 좋아요 1 조회수 235

프로젝트 생성 강의 관련 질문드립니다~

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 프로젝트 생성 강의 듣고나서 떠오르는 2가지 질문이 있어 글을 올려봅니다! 1) 먼저, 제가 start.spring.io 에선 자바 17버전으로 프로젝트를 시작했는데, 막상 main 메서드를 실행시켜서 스프링부트 애플리케이션을 띄울 때 콘솔에는 2024-12-19T20:15:54.366+09:00 INFO 38362 --- [hello-spring] [ main] h.hello_spring.HelloSpringApplication : Starting HelloSpringApplication using Java 21.0.5 with PID 38362 (/Users/.../Desktop/study/hello-spring/build/classes/java/main started by ... in /Users/.../Desktop/study/hello-spring) 이렇게 왜 자바 21.0.5버전을 사용하고 있다고 나올까요? 이미 제 맥북에 21버전 자바가 설치되어서 그런걸까요?? build.gradle에는 java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } 이렇게 17버전으로 올바르게 되어있긴 합니다! 2) 선생님께서 인텔리제이 Preferences > Gradle에서 Build and run using을 Gradle로 되어있는 걸 인텔리제이로 바꾸면 더 빠르게 실행할 수 있다고 하셨는데, 만약, Gradle (Default)로 설정된 경우 > 인텔리제이 화살표 버튼을 클릭했을 때 자바 소스 코드를 컴파일하고 빌드 과정을 포함해서 빌드를 진행하고 스프링부트 애플리케이션을 실행하고, IntelliJ IDEA로 설정된 경우 > 인텔리제이 화살표 버튼을 클릭했을 때 자바 소스 코드를 컴파일하고 빌드를 진행하지 않고 스프링부트 애플리케이션을 바로 실행하기 때문에 더 빠르게 실행된다고 하신걸까요??

  • java
  • spring
  • mvc
  • spring-boot
ajdsasld 댓글 1 좋아요 0 조회수 260

강의 자료 내용 맞는지 확인 부탁드립니다.

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

[입문] 시작은 프리캠프 - 섹션 2 HTML과 기술스택 이해하기 노션 페이지 내용 중 종속태그 예시 부분의 이미지에 태그 내용은 없고 글자만 표기되어 있습니다. 이 부분이 오류인지 확인 부탁드립니다.

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
at k 댓글 1 좋아요 0 조회수 147

도메인 오브젝트 메소드 주입에 대해 질문있습니다. (의존성 관련)

미해결

토비의 스프링 6 - 이해와 원리

안녕하세요 토비님. 질문드리기 전 먼저 오랜만에 너무 즐겁게 공부하고 있어 감사하다는 말씀을 드리고 싶습니다! 질문은 다름이 아니라 '도메인 오브젝트 테스트' 편에서 마지막에 메소드로 ExProvider 를 주입하는 방식을 언급해 주셨는데, 이렇게 되면 Payment 가 ExProvider 에 의존하게 되는 것 같아서 고민이 되었습니다. Payment 는 도메인 오브젝트로서 순수하게 Payment 에 관련된 응집만 추구해야 할 것 같은데, 그걸 넘어서는 건 아닐까라는 생각도 들었고, Payment 테스트 시 ExPriovider 주입이 필요하게 되는 점도 걸렸습니다. 기존처럼 BigDecimal 을 받도록 의존성을 끊어주는 게 더 낫지는 않을지 고민이 됩니다. 비슷한 경험으로 이전에 SpringSecurity 의 PasswordEncoder 를 도메인 오브젝트에 메소드로 넘겨볼까 하다가 의존성을 생각해 포기하고 String으로 받았었는데, 이와 동일하지는 않겠지만 앞으로도 고민이 될 수 있는 부분인 것 같아 꼭 질문을 드리고 싶었습니다. 도메인 개념적으로 Payment 가 ExProvider 와 묶여있는 게 자연스럽다 생각하셔서 그렇게 설계하신 걸까 싶은데, 이에 대해 어떻게 생각하시는지 궁금합니다.

  • java
  • spring
nilgil 댓글 1 좋아요 3 조회수 514

서버 컴포넌트에서 API 호출 시 Supabase의 클라이언트/서버 클라이언트 차이점이 궁금합니다.

해결됨

Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)

강의를 듣다가 궁금한 점이 생겨서 질문드립니다. 브라우저에서 실행되는 코드에서는 브라우저 클라이언트를 사용하고, 서버에서 실행되는 코드에서는 서버 클라이언트를 사용합니다. - [ Creating a Supabase client for SSR ]( https://supabase.com/docs/guides/auth/server-side/creating-a-client?queryGroups=framework&framework=nextjs&queryGroups=environment&environment=client#create-a-client ) @supabase/ssr 라이브러리를 사용해서 2가지 유형의 클라이언트를 생성합니다. 클라이언트 컴포넌트 클라이언트(createBrowerClient) - 브라우저에서 실행되는 클라이언트 컴포넌트에서 Supabase에 접근 서버 컴포넌트 클라이언트(createServerClient) - 서버에서만 실행되는 서버 컴포넌트, 서버 액션 및 라우트 핸들러에서 Supabase에 접근 서버 컴포넌트로 동작하는 page 컴포넌트에서 각 클라이언트를 사용해 번갈아 API 호출을 해봤는데 동일하게 작동하는 것 같았습니다. 서버 컴포넌트에서 Supabase의 클라이언트/서버 클라이언트가 동작하는 방식의 차이가 있는지, 렌더링 방식에 차이가 있는지 궁금합니다. 서버와 클라이언트 개념과 렌더링 방식(SSR, CSR)이 자꾸 혼동되어 헷갈리네요.. import { getTodos as getTodosClient } from '@/apis/todos'; import { getTodos as getTodosServer } from '@/actions/todos'; export default async function page() { const todos = await getTodos...(); } // todos.ts import { createBrowserSideClient } from "@/lib/client/supabase"; export const getTodos = async() => { const supabase = await createBrowserSideClient(); const result = await supabase.from("todos").select("*"); return result.data; } // todos.action.ts import { createServerSideClient } from "@/lib/server/supabase"; export const getTodos = async() => { const supabase = await createServerSideClient(); const result = await supabase.from("todos").select("*"); return result.data; }

  • react
  • 클론코딩
  • next.js
  • supabase
seong2 댓글 2 좋아요 0 조회수 363

문제와 풀이 join() 활용2 - 코드 질문

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 남깁니다. '문제 풀이2번 을 어떻게 하면 될까?' 라고 생각 하던 도중,조인 하나만 맨 밑에 넣어보자, 라고 해보니.. 답은 나오긴 하였습니다. (코드 내용) t1.start(); t2.start(); t3.start(); t3.join(); (코드 완료) 근데 여기서 궁금증이 생겼습니다. 여러 개의 작업을 시키고 나서, 끝이 나고, 기다려야 하는 경우에, 정답 풀이에서는 t1.join(); , t2.join(); , t3.join() 이렇게 전부다 join()을 해주었는데, 저 처럼 't3.join()' 하나만 써도 상관 없나요? 답변 부탁 드립니다.

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
생각하는자 댓글 1 좋아요 0 조회수 193

C언어로 입력받고 출력하기 문제 - 1 개행 문자 관련 질문

해결됨

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

04 : 08 안녕하세요. C언어로 입력받고 출력하기 문제 - 1 에서 교재의 문제 하단 답에 왜 printf("두 숫자를 입력하세요: ") 이후의 출력이 두 숫자를 입력하세요: 5 10 5 + 10 = 15 (이하 생략) 로 출력되는지 궁금합니다. printf("두 숫자를 입력하세요: ") 의 경우 개행 문자가 없기 때문에 두 숫자를 입력하세요: 5 105 + 10 = 15 이런식으로 붙어서 출력되어야 하는게 아닌가요? 기초적인 질문입니다만, 답변 부탁드립니다. 감사합니다.

  • python
  • java
  • c
  • 정보처리기사
김도영 댓글 1 좋아요 1 조회수 180

프로젝트 생성오류 (gradle)

미해결

백엔드 개발을 위한 필수 강의 - 스프링 부트3

개발환경 자바 버전 : 21.0.2 프로젝트 : gradle 스프링부트 : 3.4.1 dependencis : 1. Spring Web Spring Boot DevTools ================================================================== 인텔리제이에서 프로젝트 열기시 오류가 발생함. - 이걸로 3일째 해결을 못하고 있어요. Build file 'D:\proj\demo1\build.gradle' line: 3 Plugin [id: 'org.springframework.boot', version: '3.4.1'] was not found in any of the following sources: * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org .

  • java
  • aws
  • spring-boot
백건민 댓글 1 좋아요 0 조회수 244

페이지라우터와 앱라우터의 데이터 패칭 방식의 차이에 관한 질문.

해결됨

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

해당 강의에서 선생님이 설명해주시기로는, 페이지라우터와 앱라우터의 차이로 인해 앱 라우터 버전에서는 리퀘스트 메모이제이션이 생겼다고 하셨습니다. 페이지라우터에서는, 트리의 최상단에서 api요청이 발생한다음에 해당 결과값을 각 컴포넌트에 나눠주는 구조이고, 앱 라우터는 모든 서버컴포넌트가 각각 api를 호출해야하는 구조라고 하셧는데, 제가 테스트 해본결과, 서버컴포넌트 끼리도 props로 데이터를 주고받을 수 있는것 같습니다. 그래서 햇갈리는 부분이 존재하는데요. import "./globals.css"; import Link from "next/link"; import style from "./layout.module.css"; import { BookData } from "@/types"; function InnerFooter({ books }: { books: BookData[] }) { return <>{books[0].author}</>; } async function Footer() { const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book` ); if (!response.ok) { return <footer>제작 @winterlood</footer>; } const books: BookData[] = await response.json(); const bookCount = books.length; return ( <footer> <footer>제작 @winterlood</footer> <div>{bookCount}개의 책이 존재함</div> <InnerFooter books={books} /> </footer> ); } export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( <html lang="en"> <body> <div className={style.container}> <header> <Link href={"/"}>📚 ONEBITE BOOKS</Link> </header> <main>{children}</main> <Footer /> </div> </body> </html> ); } 제가 테스트 한 코드에서는 Footer 컴포넌트가 내부적으로 InnerFooter 컴포넌트를 호출하면서 데이터를 넘겨주고 있습니다. 선생님이 설명하신 부분이 제가 이해한 부분과는 다른걸까요?

  • react
  • typescript
  • next.js
2Digit APP 댓글 1 좋아요 0 조회수 189

섹션2 자료 확인 부탁드립니다~!

미해결

모바일 웹 퍼블리싱 포트폴리오 with CSS Nesting

선생님 ~ 섹션2 [실습] HTML 와이어프레임 만들기 실습(커스텀 체크박스 로그인 폼) 듣고 있는데 자료 다운 폴더에 모바일 웹 HTML 와이어프레임 구조 폴더가 없는것 같습니다. HTML 와이어프레임 실습(로그인 폼), 모바일 웹 개별 페이지(PNG) 등 등, 그리고 피그마 주소도 보이지 않네요 ~! 자료 받을수 있을까요?

  • HTML/CSS
  • 모바일-디자인
  • wireframe
  • iframes
  • slick-slider
스리 댓글 2 좋아요 1 조회수 160

paymentProcess() 결제내역 남기기

미해결

[백엔드/예외처리 시나리오/집계 최적화] 백엔드 포트폴리오와 실무 이력 강화 전략. 올인원 PART1

제가 알기로는 request_pay() 매개변수로 포트원 대시보드에서 확인가능한 storeId 와 channelkey을 추가해서 요청해야, 결제내역에 남는걸로 알고있습니다. 결제기록 안남으시면 참고하세용

  • java
  • spring-boot
  • 포트폴리오
  • 기술면접
  • bulkinsert
구코딩 댓글 0 좋아요 0 조회수 186

채팅 프로그램 관련 질문이 있습니다.

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 영한님 코드는 제가 이해한 바로는 세션 객체를 돌리는 스레드가 채팅을 다른 사람에게 전파하는 코드도 돌리는 걸로 알고 있습니다. 저는 채팅을 다른 사람에게 보내는 것을 맡은 객체를 따로 만들고 스레드도 따로 돌리게 만들었습니다. 혹시 이렇게 하는 게 좋은 건지 궁금합니다. 이걸 가능하게 하기 위해서 ConcurrentLinkedQueue를 사용했고 각 세션이 채팅을 받으면 이 queue에 채팅 내용을 넣으면 이 queue를 담당하는 스레드에서 큐를 비워가면서 채팅을 각 사용자에게 보내게 했습니다. 근데 큐가 차 있는지 확인하는 방법을 잘 몰라서 0.1초마다 while문을 돌려서 큐가 차 있는지 확인하고 차 있으면 채팅을 보내게 했습니다. 이 방식이 굉장히 마음에 안 드는데 더 좋은 방법이 뭐가 있을지 궁금합니다.

  • java
  • 네트워크
  • 객체지향
사차 댓글 1 좋아요 2 조회수 248

오타 제보

미해결

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

1. Object 클래스 문제와 풀이 부분에 오타 제보입니다. 넓이(width)-->너비(width) 수정하면 좋을 것 같습니다.

  • java
  • 객체지향
이희원 댓글 2 좋아요 0 조회수 130

인기 태그

인프런 TOP Writers

주간 인기글