본문 바로가기

분류 전체보기365

JAVA 36일차 (2023-07-12) 자바 프로그래밍_여러 클라이언트 요청을 동시에 처리하기: Thread 적용_Calculator - 멀티태스킹의 메커니즘 이해 - 프로세스 스케줄링: Round Robin 방식, Priority + Aging 방식 - 컨텍스트 스위칭 개념 - 프로세스 복제(fork)방식과 스레드 방식 비교 - 임계영역(Critical Region, Critical Section): 세마포어(Semaphore)와 뮤텍스(Mutex) - 스레드의 구동원리와 사용법 - 스레드의 라이프사이클 이해 - Thread 클래스와 Runnable 인터페이스 사용법 Stateful 방식으로 통신하기 ㄴ bitcamp.test 패키지 생성 ㄴ bitcamp.test 패키지에 CalcClient1, CalcServer1 생성 CalcClient1.java ㄴ 클라이언트에서 로컬 호스트(127.0.0.1)의 8888 포트로 소켓 연결을 .. 2023. 7. 12.
JAVA 35일차 (2023-07-11) 자바 프로그래밍_여러 클라이언트의 요청을 순차적으로 처리하기: Stateless 방식_개인프로젝트 - 마트 관리 시스템 ## 42. 여러 클라이언트의 요청을 순차적으로 처리하기: Stateless 방식 - Stateless 방식으로 통신하는 방법 - 구동 원리와 Stateful 방식 대비 이점 - Stateless 방식의 문제점 ServerApp.java ㄴ while 문 껍데기를 제거 => ServerApp.java ㄴ 이제 while 문이 아니므로 quit, break 는 필요 없음 ㄴ continue 는 모두 return 으로 변경 ㄴ 클라이언트 요청을 반복해서 처리하지 않음 => 접속 -> 요청 -> 실행 -> 응답 -> 연결 끊기 DaoBuilder.java ㄴ DaoBuilder 의 생성자에 serverAdddress, port 를 넘겨줌 DaoBuilder.java ㄴ Socket socket = new So.. 2023. 7. 11.
JAVA 35일차 (2023-07-11) 자바 프로그래밍_여러 클라이언트의 요청을 순차적으로 처리하기: Stateful 방식_개인프로젝트 - 마트 관리 시스템 ## 41. 여러 클라이언트의 요청을 순차적으로 처리하기: Stateful 방식 - 클라이언트 요청을 순차적으로 처리하는 방법 - 구동 원리와 문제점 ServerApp.java => ㄴ while 문으로 감싸주기 ServerApp.java ㄴ procesRequest 메서드 생성 => ServerApp.java ㄴ while 문 안에 있는 while 문 잘라내기 => ServerApp.java ㄴ 생성한 processRequest 메서드 안에 잘라낸 코드 삽입하기 ServerApp.java => ServerApp.java ㄴ 예외 처리하기 => in, out 은 밖으로 빼줘야 함 ServerApp.java ㄴ 자원해제 문제 => ServerApp.java ㄴ하나씩 처리해줘야 함 => ServerApp.j.. 2023. 7. 11.
JAVA 35일차 (2023-07-11) 자바 프로그래밍_예외 처리하기_개인프로젝트 - 마트 관리 시스템 ## 40. 예외 처리하기 - 예외가 발생했을 때 시스템을 멈추기 않게 하는 방법 - try ~ catch ~ finally 사용법 ServerApp.java => ServerApp.java ㄴ ERROR 일 경우 에러 메시지를 출력하도록 함 MenuGroup.java => MenuGroup.java ㄴ 입력한 메뉴 번호가 옳지 않은 경우 실행 오류: [오류 메시지] 를 출력하도록 함 => 실행 테스트 2023. 7. 11.
JAVA 33일차 (2023-07-07) 자바 프로그래밍_GoF의 프록시 패턴의 원리 이해 및 적용/분산 컴퓨팅의 개념과 주요 기술 이해_개인프로젝트 - 마트 관리 시스템 ## 38. DAO 프록시 객체를 자동 생성하기 - java.lang.reflect.Proxy 클래스 사용법 - 프록시 객체의 구동원리 이해 ㄴ bitcamp 패키지에 dao 패키지 추가 ㄴ bitcamp.dao 패키지에 DaoInvocationHandler 클래스를 추가 DaoInvocationHandler.java ㄴ InvocationHandler 인터페이스는 Java의 리플렉션을 이용하여 동적으로 메서드 호출을 처리함 DaoInvocationHandler.java => DaoInvocationHandler.java ㄴ invoke 메서드를 오버라이딩하여 실제 메서드 호출을 처리하는 로직을 구현 => invoke 메서드는 proxy 객체, 호출된 메서드, 전달된 인자들을 파라미터로 받아서 필요한 작.. 2023. 7. 8.
JAVA 32일차 (2023-07-06) 자바 프로그래밍_네트워킹을 이용하여 데이터 공유하기 : Client/Server 아키텍처로 전환(계속)_Client와 Server 개념/프로토콜에 따라 애플리케이션 간에 데이터를 주고 받기_개.. ## 37. 네트워킹을 이용하여 데이터 공유하기 : Client/Server 아키텍처로 전환(이어서 계속) - 네트워크 프로그래밍 방법 - Client와 Server 개념 - 프로토콜에 따라 애플리케이션 간에 데이터를 주고 받기 BoardNetworkDao.java ㄴ 서버에서 보낼 명령과 데이터를 Map 객체에 담기 BoardNetworkDao.java ㄴ 주어진 코드에서 request 객체의 "data" 키에 board 객체를 JSON 형식으로 변환한 값을 설정 => 이를 위해 Gson 라이브러리를 사용하여 board 객체를 JSON 문자열로 변환한 후, 해당 JSON 문자열을 "data" 키에 설정 BoardNetworkDao.java ㄴ Map 객체에 담은 정보를 JSON 문자열로 변환하여 서버.. 2023. 7. 6.