안녕하세요, 영한님 뒤에 있을 채팅 프로그램을 직접 만들어보려다가 난관에 봉착해 질문드립니다. 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를 다시 만드는 이유는 무엇인가요??
Child obj = new Child();를 해주면 Child생성자가 호출되고 this(7000)를 명시 해주었기 때문에 부모의 기본 생성자가 호출안되고 인자를 받는 Child(int x)가 호출되고 Child(int x)에서는 super같은 키워드가 없으니 이때 부모의 Parent()기본 생성자가 호출되어서 x가 600으로 채워 지는것 아닌가요? 강사님은 new Obj하면 바로 Parent의 기본 생성자를 호출하는 식으로 흐름을 설명하셔서 질문드립니다.
[질문 내용] 여기에 질문 내용을 남겨주세요. 2024-10-16T00:11:04.326+09:00 INFO 16884 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2024-10-16T00:11:04.335+09:00 INFO 16884 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-10-16T00:11:04.336+09:00 INFO 16884 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.20] 2024-10-16T00:11:04.387+09:00 INFO 16884 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-10-16T00:11:04.387+09:00 INFO 16884 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1088 ms 2024-10-16T00:11:04.433+09:00 INFO 16884 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-10-16T00:11:06.881+09:00 ERROR 16884 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: getsockopt: localhost" [90067-224] 어플리케이션을 실행했더니 이러한 에러가 뜹니다... 제가 생각하기엔C:\Users\재성 이 폴더에 db파일이 없어서 생기는 오류같은데 어떻게 해결해야할 지 모르겠습니다... 다른 강의 이것저것 번갈아가면서 듣다 보니 db파일을 삭제했다가 새로 만들고 반복했었는데 오랜만에 강의 들으니까 db에서 오류가 발생합니다ㅠ
안녕하세요, '서비스란 무엇인가' 강의를 보고 질문드립니다. 서비스는 불변으로 만들기 위해 서비스에서 쓰고 있는 리포지토리를 final로 선언하라고 강의를 통해 배웠습니다. 컨트롤러에서 쓰는 서비스나 리포지토리에서 쓰는 것들도 final로 선언해도 될까요? 불변이면 생성된 객체가 변경할 수 없는 것 이라는 정도만 이해하고 있는데 다른 레이어도 final로 선언하면 더 안정적인 애플리케이션이 되는 거 아닌가? 라는 생각이 들어 질문드립니다! 감사합니다.
뺄셈 함수 중간 궁금해서 해본 질문인데, 만약 10과 4도 값을 받고 싶다면 int main(){ int a; int b; scanf("%d%d", &a, &b); int result = subtract(a, b); printf("%d-%d = %d\n", a, b, result); return 0; } 이런식으로 바꾸면 될까요? 공부 도중 문득 생각나서 바꿨는데 부족한 부분이 있을까 하여 여쭤봤습니다.
Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/kimhs/OneDrive/%EB%AC%B8%EC%84%9C/springboot/jpashop/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.10.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 11s 4 actionable tasks: 1 executed, 3 up-to-date MemberRepositoryTest 를 실행하면 위와 같은 오류가 발생합니다 원인이 무엇일까요
class Parent { Parent() { System.out.println("Parent default"); } class Child extends Parent { System.out.println("Child Default"); } public class Test{ public static void main(String[] args){ Child child = new Child(); } } 위의 코드가 실행이 된다면 생성자가 자식이기 때문에 Child Default만 출력되지만 만약 Parent child = new Child(); 일 경우에는 부모기본생성자 실행 후 자식 기본생성자가 실행되어 아래처럼 출력이 되는게 맞을까요..?? Parent default Child Default
안녕 하세요 (5:24) 강사님 포인터 이론 공부 하던중 아래 코드는 강의 내용 ppt 에 없는거 같습니다. 그리고 왜 n 값을 출력 하라 했는데 100 이 출력 되었는지 이해가 안됩니다. #include <stdio.h> int main() { int n = 42; int *p = &n; printf("%d\n", n); // ㅎ당 출력문은 왜 100이 출력 돼는지 이해가 안됩니다. 42가 출력 되어야 하는게 아닌가요? printf("%d\n", &n); // 헤딩 출력문은 n의 주소값을 출력 하라고 했으니 100 출력 따라서 출력값은 42 100 위의 처럼 되어야 하는거 아닌가요? 제가 잘못 이해 한것 일까요?
http://localhost:9000/oauth2/authorize?response_type=code&client_id=oauth2-client-app1&scope=openid%20read%20write&redirect_uri=http://127.0.0.1:8081 형태에 첫 로그인 요청을 했을때, 로그인 페이지로 가지 않는 현상이 있습니다. => 확인을 해봤을때, CustomAuthenticationProvider 에서 프로세스 진행 완료 후 principal = AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_ANONYMOUS]] principal 까지 확인되었습니다. 그 다음 추가적인 내용을 확인해봐야될 내용이 어떤 걸 까요? 추가적으로 첫 요청에 따른 redirect 하는 클래스가 어디인지 알고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 위와 같은 오류가 뜨는데 인텔리제이와 스프링 자바 버전 둘 다 17로 맞췄고 스프링 초기값은 다음과 같이 맞춰서 제너레이트를 했는데 위 오류 때문에 실행도 시킬 수가 없네요 어떻게 해결해야 할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. List<Member> findMembers = em.createQuery( "select m from Member m where m.username like '%kim%'",Member.class).getResultList(); 위와 같이 작성하여 실행해보니 위와 같이 escape '' 이 붙여진 상태로 쿼리가 생성이 되는데 혹시 어떤게 잘못된건지 알 수 있을까요? 버전정보는 아래와 같습니다.