[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 풀이를 보니 풀이가 훨씬 좋은 방법인건 인지가 되지만 제가 생각했을때 제 코드도 실행은 되어야 맞는데 자꾸 출금을 할때 출금 후 while문 처음으로 되돌아가지 않고 다시 출금액을 입력하라고 나옵니다 이유가 뭘까요..? 입금 시에는 정상적으로 while문 처음으로 돌아갑니다 .
[질문 내용] 사용자의 입력을 받을려면Scanner scanner = new Scanner(S ystem.in) ; 코드를 넣어줘야 하는데 여기서 궁금한 것은 제가 만약 int i = 1; 이라고 했다면 i라는 int타입의 변수를 선언과 동시에 초기화를 했다. 라고 볼 수 있습니다. 그렇다면 Scanner scanner라고 잘라서 보면 scanner변수를 선언한 것인데 그 뒤에 = new Scanner(S ystem.in) ;를 붙이면 scanner라는 변수로 = new Scanner(S ystem.in) ;를 초기화했다. 라고 읽어도 되는 걸까요? 아니면 따로 클래스 객체를 초기화하는 것을 뭐라고 부르는 명칭이 있나요?
[질문 내용] 2147483647이 int 타입의 최고값이라고 설명하는 부분에서 long maxIntValue = 2147483647; 이라고 long 타입으로 maxIntValue변수에 값을 초기화하였는데요. 여기서 2147483647을 제가 예시로 int intValue = 2147483647; 라고 초기화를 하면 정상적으로 오류없이 되는데 문제는 maxIntValue를 intValue에 저장할 때 왜 형변환을 해야 하는지 잘 모르겠습니다. 정상적으로 intValue에 2147483647값을 초기화를 했을때는 문제없이 잘 되는데, 어짜피 maxIntValue가 long타입으로 int보다 크고, 애초에 2147483647값이 int의 값 범위 안에 충분히 들어오는 값인데도 불구하고, 저장된 maxIntValue를 intValue안에 넣으면 당연히 정상일 텐데 왜 형변환을 해야 하는지 궁금합니다.
이전에 len함수의 경우엔 \0를 제외한 길이, a.length함수의 경우 \0를 포함한 길이 였다고 배운것 같은데.. 해당사항은 C언어 한정인가요?.. 헷갈리네요 문제 풀이를 보니 a.substring(1,4)면 4번째 자리를 제외한 문자열을 잘라 리턴해주는것 같습니다.(대충 감각따라 풀었더만 ello를 적어 틀렸네요..ㅠ) 이전 파이썬의 for문도 그렇고 이와같은 문자열 함수는 모두 1<=a<4 라고 생각하면 괜찮을까요? 아니면 예외함수가 있을까요?
1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 포스트맨을 통해서 요청을 보낼 때 url파라미터를 통해 page와size를 설정하였는데요, 이는 MemberSearchCondition 말고 Pageable 또한 앞에 @ModelAttribute가 생략된 형태로 동작한다고 생각하면 될까요? 실제 웹 사이트에서 페이징 처리된 부분의 버튼 같은 걸 누를 때 해당 파라미터들을 넣어주는 방식으로 동작할 것 같은데 맞을까요?
안녕하세요 주말 코딩님 강의 잘 듣고 있습니다! 목, 금, 토 이렇게 공부할 수 있는 시간이 3일정도밖에 남지 않은 상황입니다! 혹시 이론 파트 중에 여긴 꼭 확인하고 가라 하는 영역 있으실까요? 프로토콜 종류 결합도/응집도 디자인패턴 보안용어(암호화) 이 정도만 보고 가면 될까요? 선택과 집중이 필요할 것 같아서요!
안녕하세요 강의를 듣는중 추가적으로 tanstack-query를 공부하다가 혼자서 도저히 이해를 할수 없는 부분이 있어서 이 부분에 대해 혹시 조언을 받을수 있을까 싶어 문의드립니다. prefetchQuery가 개인적으로 잘 이해가 안되어서 별도로 프로젝트를 생성하여 기본적인 것부터 다시 공부하고 있었습니다만, tanstack-query 공식사이트에서 권장하던 방법대로 임의적으로 코드를 생성하였더니 router.push()로 다른 페이지에 갔다가(->홈으로[/]) 다시 돌아오는것(->Post페이지(/post))을 반복하다보면 가끔 서버 컴포넌트에 있는 prefetchQuery안의 fetch와 클라이언트 컴포넌트에 있는 useQuery의 fetch가 동시에 실행이 되는 일이 가끔 발생을 해서요. fetch가 이중으로 실행이 되고 있는것 같은데 아무리 코드를 살펴봐도 제가 잘못한 부분을 찾을수가 없어서 조언을 구합니다ㅠ page.tsx import { dehydrate, HydrationBoundary, QueryClient } from '@tanstack/react-query'; import Post from './_component/Post'; import getPostRecommends from './_hook/fetch'; export default async function tanstackQuery() { const queryClient = new QueryClient(); await queryClient.prefetchQuery({ queryKey: ['movies'], queryFn: getPostRecommends, }); const dehydratedState = dehydrate(queryClient); return ( <HydrationBoundary state={dehydratedState}> <Post /> </HydrationBoundary> ); } post.tsx 'use client'; import { useQuery } from '@tanstack/react-query'; import getPostRecommends from '../_hook/fetch'; import { useRouter } from 'next/navigation'; export default function TanstackQuery() { const { data } = useQuery({ queryKey: ['movies'], queryFn: getPostRecommends, }); const router = useRouter(); type PostItem = { id: number; title: string; }; return ( <div> <button onClick={() => router.push('/')}>홈으로</button> {data?.map((item: PostItem) => { return ( <div key={item.id}> <h2>{item.title}</h2> </div> ); })} {data?.message} </div> ); } getPostRecommends export default async function getPostRecommends() { if (typeof window === 'undefined') { console.log('서버에서 fetch 실행' + new Date()); } else { console.log('클라이언트에서 fetch 실행' + new Date()); } const response = await fetch('https://jsonplaceholder.typicode.com/posts?_page=1&_limit=10', { cache: 'no-store', }); if (!response.ok) { throw new Error('Failed to fetch data'); } const res = await response.json(); return res; } 기본 provider 설정 'use client'; import { isServer, QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactNode } from 'react'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; function makeQueryClient() { return new QueryClient({ defaultOptions: { queries: { staleTime: 6 * 1000, }, }, }); } type Props = { children: ReactNode }; let browserQueryClient: QueryClient | undefined = undefined; function getQueryClient() { if (isServer) { return makeQueryClient(); } else { if (!browserQueryClient) browserQueryClient = makeQueryClient(); return browserQueryClient; } } export default function Providers({ children }: Props) { const queryClient = getQueryClient(); return ( <QueryClientProvider client={queryClient}> {children} <ReactQueryDevtools /> </QueryClientProvider> ); } 서버 콘솔 브라우저 콘솔 위에 캡쳐화면 같이 fetch가 거의 동시간에 발생을 하고 있는 모습입니다. next.js router cache 때문에 30초마다 서버 컴포넌트쪽이 리랜더링 되어서 페이지를 새로고침을 하지 않고 router.push로 다시 페이지에 들어가도 서버 컴포넌트쪽이 다시 실행된다는건 이해를 했는데, 그렇다면 초기 랜더링할때와 똑같이 데이터가 prefetch되어서 클라이언트쪽 useQuery가 실행이 되지 않아야하지 않나요? 왜 두번이나 fetch가 도는건지 아무리 자료를 찾아봐도 잘 모르겠어서 결국 문의드리게 되었습니다ㅠ
안녕하세요, 영한님 뒤에 있을 채팅 프로그램을 직접 만들어보려다가 난관에 봉착해 질문드립니다. ClientV6 코드 내의 while문을 Thread에 넣는 작업을 진행하였습니다. 아직 클라이언트에서 입력 값을 넣기 전임에도 불구하고 서버에서 EOFException이 나는데 그 이유를 모르겠습니다. 혹시 제가 코드를 잘못 짠 것인지 아님 놓치는 부분이 있는 것인지 한 번 봐주실 수 있나요? public class ClientV6_1 { private static final int PORT = 12345; public static void main(String[] args) throws IOException { log("클라이언트 시작"); try ( Socket socket = new Socket("localhost", PORT); DataInputStream input = new DataInputStream(socket.getInputStream()); DataOutputStream output = new DataOutputStream(socket.getOutputStream()); ) { log("소켓 연결: " + socket); new Thread(new ClientHandler(socket), "ClientHandler").start(); } catch (IOException e) { log(e); } } } public class ClientHandler implements Runnable { private final Socket socket; private final DataInputStream input; private final DataOutputStream output; public ClientHandler(Socket socket) throws IOException { this.socket = socket; this.input = new DataInputStream(socket.getInputStream()); this.output = new DataOutputStream(socket.getOutputStream()); } @Override public void run() { Scanner scanner = new Scanner(System.in); try { while (true) { System.out.print("전송문자: "); String toSend = scanner.nextLine(); // send output.writeUTF(toSend); log("client -> server: " + toSend); if (toSend.equals("exit")) break; // receive String received = input.readUTF(); log("client <- server: " + received); } } catch (IOException e) { e.printStackTrace(); } finally { close(socket); } } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요! 문제와 풀이를 해보다 문득 궁금해졌는데, 혹시 ArrayList 생성할때 List<Integer> list = new ArrayList<>(); ArrayList<Integer> list = new ArrayList<>(); 두개의 차이가 있을까요 ..?
public class ImmutableMain1 { public static void main(String[] args) { ImmutableObj obj1 = new ImmutableObj(10); ImmutableObj obj2 = obj1.add(20); //계산 이후에도 기존값과 신규값 모두 확인 가능 System.out.println("obj1 = " + obj1.getValue()); System.out.println("obj2 = " + obj2.getValue()); } } public class ImmutableMain2 { public static void main(String[] args) { ImmutableObj obj1 = new ImmutableObj(10); obj1.add(20); //계산 이후에도 기존값과 신규값 모두 확인 가능 System.out.println("obj1 = " + obj1.getValue()); // System.out.println("obj2 = " + obj1.add(20).getValue()); //Q.이렇게 하면 안되는지?? } } Main1에서 했던것처럼 obj2를 하나 새로 만들지 않고 2에서 obj1.add(20).getValue() 이렇게 해도 원하는 결과값이 나오는데 새로 obj2를 만드는것과 어떤 차이가 있나요?? Main2에서 저렇게 코드를 쳤을때 인스턴스값을 확인해보니 1과 2가 각각 다른 값이 나오더라고요 ImmutableObj에서 이미 return new ImmutableObj(result);을 사용하고 있어서 이때 인스턴스가 이미 생성되어서 그렇다고 생각하는데 맞을까요?? 그러면 이미 생성되었는데 또 obj2를 다시 만드는 이유는 무엇인가요??