인터넷 프로토콜 4계층 IP 패킷 출발지 IP, 목적지 IP, 데이터, 기타.. 정보를 담고있다. IP 프로토콜의 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 = 상대방의 컴퓨터가 꺼져있어도 그냥 보낸다. 비신뢰성 중간에 패킷이 사라질 수 있다. 패킷이 순서대로 도착한다는 보장은 없다. 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? TCP(Transmission Control Protocol) 출발지 Port, 목적지 Port, 전송 제어, 순서, 검증 정보...등을 가지고 있다. 아래와 같은 특징들로 IP 프로토콜의 한계를 해결해준다. 연결지향 - TCP 3 way handshake (가상 연결) 신뢰할 수 있는 프로토콜 데이터 전달 보증..
개발 과정의 순간 순간을 기록하기 위해서 버전 관리 도구인 Git을 많이 사용한다. 이때 충돌을 방지하기 위해서 혹은 개발 과정의 구분을 위해 여러 분기로 나누어 작업하고, 작업한 내용을 병합하게 된다. 브랜치를 나누는 전략 중 Git Flow는 디테일하게 브랜치를 나누지만 그만큼 귀찮고, Github Flow는 덜 디테일하지만 과정이 더 간소하다. Github Flow main 브랜치와 feature 브랜치만을 가지는 간단한 방식이다. 각각의 기능마다 feature 브랜치를 생성해서 기능을 구현하고 main에 병합하면 된다. Git Flow Master(main) -> HotFix -> Release -> Develop -> Feature 5가지 브랜치로 구분하여 각각은 아래와 같은 기준으로 구분된다...
문제 발생 디스패처 서블릿 예제를 구현하는 도중 home.jsp를 요청하는 GET 요청을 보냈을 때 요청이 2번 들어가서 2번째 요청에서 null pointer Exception이 발생했다. @WebServlet("/") public class DispatcherServlet extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(DispatcherServlet.class); private RequestMappingHandlerMapping rmhm; @Override public void init() throws ServletException { rmhm = new RequestMappingHandlerMapp..
1. mysql docker image download docker pull mysql:{version} 2. docker container run docker run --name {컨테이너 이름} -e MYSQL_ROOT_PASSWORD={패스워드} -d -p 3306:3306 mysql:{version} -e: 환경변수 설정 MYSQL_ROOT_PASSWORD: mysql root 사용자 비밀번호 -d: 백그라운드 실행 (데몬 모드) -p: 포트 지정 {호스트의 포트}:{컨테이너 내부 포트} 3. docker container에 접속 docker exec -it {컨테이너 이름} /bin/bash exec: 실행 중인 컨테이너 내에서 명령 실행 -it: 가상의 터미널을 사용하여 상호작용 /bin/ba..