일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바의 정석 기초편 ch12
- 2024 정보처리기사 시나공 필기
- 2024 정보처리기사 수제비 실기
- 데이터 접근 기술
- 스프링 트랜잭션
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch13
- @Aspect
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch6
- 자바 중급1편 - 날짜와 시간
- 스프링 mvc2 - 검증
- 스프링 mvc2 - 타임리프
- 자바로 계산기 만들기
- 스프링 입문(무료)
- 람다
- 자바 고급2편 - 네트워크 프로그램
- 자바 중급2편 - 컬렉션 프레임워크
- 자바 고급2편 - io
- 자바의 정석 기초편 ch7
- 자바 기초
- 스프링 mvc1 - 스프링 mvc
- 자바로 키오스크 만들기
- 자바의 정석 기초편 ch11
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch2
- Today
- Total
목록자바 로드맵 강의/고급 2 - 입출력, 네트워크, 리플렉션 (14)
개발공부기록

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용HTTP 서버 - 애노테이션 서블릿시작애노테이션 기반의 컨트롤러와 서블릿 만들기 Mapping - 애노테이션@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Documentedpublic @interface Mapping { String value();}AnnotationServletV1package was.httpserver.servlet.annotation;public class AnnotationServletV1 implements HttpServlet { private final List contr..
출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용애노테이션이 필요한 이유리플렉션 서블릿의 남은 문제점리플렉션 서블릿은 요청 URL과 메서드 이름이 같다면 해당 메서드를 동적으로 호출할 수 있는데 요청 URL과 메서드 이름을 다르게 하고 싶다면 지금 만든 기능으로는 구현이 불가능함그리고 앞서 /, /favicon.ico와 같이 자바 메서드 이름으로 처리하기 어려운 URL도 해결이 불가능함자바는 카멜케이스로 메서드 이름을 사용하지만 URL은 주로 -(dash)를 구분자로 사용하기 때문에 /add-member와 같은 URL을 매핑할 수 없음리플렉션 서블릿의 남은 문제점들을 해결하려면 메서드 이름만으로는 해결이 어렵기 때문에 추가 ..
출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용리플렉션이 필요한 이유커맨드 패턴으로 만든 서블릿의 단점앞에서 커맨드 패턴으로 만든 서블릿은 매우 유용하지만 몇 가지의 단점이 있음하나의 클래스에 하나의 기능만 만들 수 있음새로 만든 클래스를 URL 경로와 항상 매핑해야 함문제1: 하나의 클래스에 하나의 기능만 만들 수 있음package was.v5.servlet;public class HomeServlet implements HttpServlet { @Override public void service(HttpRequest request, HttpResponse response) { // 기능 구현 ..

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용HTTP 서버1HTTP 서버 - 시작Hello World을 응답해 주는 서버 만들기웹 브라우저에서 직접 만든 서버에 접속하면 웹 브라우저에 Hello World가 크게 보일 것임 ** 참고HTML은 , , 와 같은 기본 태그를 가지는데 원래는 이런 태그도 함께 포함해서 전달해야 하지만 예제를 단순하게 만들기 위해 최소한의 태그만 사용함HTML에 대한 자세한 내용은 강의에서 설명하지 않음HttpServerV1HTTP 메시지의 주요 내용들을 문자로 읽고 쓰는 서버이므로 BufferedReader, BufferedWriter를 사용함Stream을 Reader, Writer로 변경할 ..

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용채팅 프로그램 - 설계설계요구 사항서버에 접속한 사용자는 모두 대화할 수 있어야 하며 아래의 채팅 명령어가 있어야 함입장/join|{name}: 처음 채팅 서버에 접속할 때 사용자의 이름을 입력해야 함메시지/message|{내용}: 모든 사용자에게 메시지를 전달이름 변경/change|{name}: 사용자의 이름을 변경전체 사용자/users: 채팅 서버에 접속한 전체 사용자 목록을 출력종료/exit: 채팅 서버의 접속을 종료클라이언트 설계기존에 작성한 네트워크 프로그램과 기본 뼈대는 비슷하지만 어느 정도의 설계가 필요함채팅은 실시간으로 대화를 주고받아야 하는데 기존의 네트워크 클..

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 문제 구현하기다음 강의에서 진행하는 네트워크 - 채팅 프로그램 만들기에서 동일한 기능을 미리 구현해보는 학습최대한 직접 구현해보고 문제를 인터넷 검색과 AI 툴을 활용하여 문제를 해결하기이후 강의를 수강 후 강의 버전으로 다시 구현하면서 글을 작성하기문제 - 채팅 프로그램 만들기요구 사항서버에 접속한 사용자는 모두 대화할 수 있어야 하며 아래의 채팅 명령어가 있어야 함 입장/join|{name}: 처음 채팅 서버에 접속할 때 사용자의 이름을 입력해야 함메시지/message|{내용}: 모든 사용자에게 메시지를 전달이름 변경/change|{name}: 사용자의 이름을 변경전체..

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용네트워크 프로그램 - 자원정리 적용네트워크 프로그램4 - finally로 자원을 정리SocketCloseUtil여러 곳에서 사용할 소켓과 스트림을 종료하기 위한 간단한 유틸리티 클래스를 network.tcp 패키지에 생성기본적인 null 체크와 각 자원을 종료 시 예외를 잡아서 처리하는 코드가 들어가 있음자원 정리 과정에서 문제가 발생해도 코드에서 직접 대응할 수 있는 부분은 거의 없으므로 간단히 로그를 남겨서 이후에 개발자가 인지할 수 있는 정도면 충분함각각의 예외를 잡아서 처리했기 때문에 Socket, InputStream, OutputStream 중 하나를 닫는 과정에서 ..

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용네트워크 프로그램1UDP는 직접 사용할 일이 많지 않아 TCP/IP로 예제를 진행하므로 UDP의 네트워크 프로그램은 별도로 검색해 볼 것예제MyLogger스레드 정보와 현재 시간을 출력하는 간단한 로깅 유틸리티 작성(멀티스레드 강의에서 사용했던 로깅 유틸리티와 동일함)네트워크에서는 기본적으로 멀티스레드가 필요하기 때문에 스레드 정보를 확인하기 위해 네트워크 프로그램 강의에서는 이 로거를 통해 출력을 진행package util;public abstract class MyLogger { private static final DateTimeFormatter formatter =..