안녕하세요, 강의내용 중 질문이 있어 글 올립니다. orchestrator와 proxysql로 auto failover 구성시 db001(master), db002(slave1), db003(slave2) 상태에서 db001을 종료(docker stop db001)하여 db002(master), db003(slave) 상태가 되고 db001을 다시 실행(docker start db001)하게 되면, 강의 내용 처럼 db001 접속후 read_only 설정, db002를 master로 지정하는 slave작업을 하기전에 app_test_insert.sh 로 테스트 해보면 db001, db002 양쪽으로 저장이 됩니다. 이걸 막을 방법이 없나요? 실제 운영시 사용자가 없는 시점에서 db001을 실행해야되는건지 아니면 docker-compose에서 db설정 파일인 conf를 호스트 파일로 마운트 하고 호스트에 있는 파일을 수정후 db001을 실행해야될까요?
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요. 강의 결제는 했는데요. 강의 영상 말고 소개에 나오는 강의 자료? pdf나 웹링크? 같은것은 어디에 안내되어있나요? 따로 요청을 해야 하나요? 강의 영상이랑 같이 제공해주시는 자료가 있다면 미리 다 받고 한번에 빠르게 학습하려고 합니다. (현업개발자라 알고 있는 내용은 스킵하면서 빠르게 봐야 합니다.) 메일 주소를 알려 드려야 하나요? 아니면 어디로 요청 메일을 보내야 하나요?
맥에서도 사용해보고 싶어서 git을 설치하는 과정에서 해당 에러가 지속적으로 나와 brew update를 먼제 해봤는데 homebrew-core is a shallow clone. 또 에러가 나와서 오류 창에서 알려준데로 git -C ......이부분 명령어를 실행해줬는데 저 에러가 안없어지더라구요... 그리고 ARM processor 에러 부분도 shallow clone 이 에러가 납니다... 왜그럴까요... 혹시 실습때 git 이 반드시 필요한 걸까요? git의 역할이 궁금합니다...
안녕하세요, 영한님 뒤에 있을 채팅 프로그램을 직접 만들어보려다가 난관에 봉착해 질문드립니다. 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 하는 클래스가 어디인지 알고 싶습니다.