1. FTP & SFTP

- FTP(File Transfer Protocol) : 파일을 서버와 클라이언트 간 주고 받을 때 사용하는 통신 규약(프로토콜)
- Active mode : 클라이언트가 서버에게 포트 번호를 알려주어 서버가 클라이언트와 통신하는 것
- Passive mode : 서버가 클라이언트에게 포트 번호를 알려주어 클라이언트가 서버와 통신하는 것
- SFTP : 기존 FTP에 보안 기능을 추가한 파일 전송 프로토콜로 암호화된 파일을 주고 받는다.
2. Proxy
프록시란 서버와 클라이언트 사이를 중계해주는 서버를 의미하고 ‘포워드 프록시’와 ‘리버스 프록시’로 구분된다.
💡 Load Balnacing : 특정 서비스가 여러 서버를 사용할 경우 클라이언트의 요청을 서버에 과부하가 오지 않도록 분산 처리 하는 것
3. 탄력적 IP

- EC2 인스턴스의 메모리 과부하로 인해 인스턴스가 재기능을 못하는 경우가 있는데 이 때 인스턴스를 중지 후 다시 시작(재부팅)을 하게 되면 인스턴스에 할당된 퍼블릭 IP 주소가 변경되어 Putty나 WinScp의 설정을 재부팅 할 때마다 바꿔줘야 한다.
- 이를 해결하기 위해 인스턴스에 고정 IP를 부여해주기 위해 탄련적 IP를 생성하고 이를 기존에 만들었던 인스턴스에 연결 해주었다.
4. 추가 참고 사항
- controller 마다 logger 변수 선언
- 스프링 부트는 route가 따로 없고 컨트롤러에서 라우트 역할까지 수행
- 도메인 마다 controller, provieder, service, dao 모두 필요
- RequestMapping : 해당 controller에 기본적인 매핑 정보(url)
- RequestParam(required= false) : 쿼리 스트링을 받오는 어노테이션, 쿼리 스트링이 없을 경우 오류를 반환하지 않고 없나보다 하고 넘어 감
- JDBC 사용 시 select가 아닌 모든 쿼리문은 update로 진행된다
- 반환 값은 update가 성공한 row의 갯수이다.
- mysql의 last_insert_id : 하나의 insert 쿼리에 대해서 성공 시 마지막 auto_increment 값
- .query ⇒ list를 받아오는 경우
- .queryForObject ⇒ 한 가지 값(로우)만 받아오는 경우
- .getChar()는 존재하지 않는다 → .getString() 사용 권장!
- Error creating bean with name 'requestMappingHandlerMapping’ → 특정 url이 여러 개의 api에 중복될 때 발생
- 프로젝트 빌드 시 .gradle이 있는 위치(root?)에 build 폴더 내 libs 폴더 안에 jar 파일이 존재한다.
로컬에서 빌드 안되는 문제는 내 pc의 자바 버전이 1.7이여서 였다…!(자바 버전과 롬복 버전을 확인하자)