java 93

YML파일 이해하기

YML파일 이해하기 음료 공장을 만드는 기술자 1. 두 번째 공장 2. 공장 입구는 서쪽 3. 음료 요청은 전부 한글 문서로 변경해서 받는다. 4. 음료는 전부 콜라로 만들어서 출시된다. 5. 음료 총고는 컨테이너 박스를 사용한다. 6. 음료는 요청에 따라 페트병, 캔, 병으로 출시된다. 7. 공장이 재가동 될때 기존에 만들어졌던 음료는 버리지 않는다. 8. 음료 요청 시 A4용지 2장 이상의 문서는 받지 않는다. 9. 음료 요청은 아무나 할 수 없다. 암호를 아는 사람만 요청한다. 이런 문서와 규칙에따라서 기술자는 음료공장을 만들듯이 스프링 프레임워크에서 YML파일이란? 스프링 프레임워크로 공장을 만들 것인데 이 공장을 만들기 위한 문서다. 스프링 프레임워크 서버가 만들어질 때 스프링에서 이 YML파일..

Springboot 2021.12.09

어댑터 패턴과 인터페이스default

어댑터 패턴 일상생활에서의 어댑터는 일반적으로 걸러내는 역할을 한다. 인터페이스가 너무 많은 행위의 제약을 가지고 있으면 경우에 따라서 걸러내기 위해서 추상 클래스로 걸러낼 메서드를 오버라이드 해서 해당 인터페이스를 상속받으면 경우에따라서 행위의 제약을 벗어 날 수 있다. 하지만! 자바는 다중상속을 재한 하기 때문에 어댑터 패턴의 단점은 분명하다. 그래서 나온것이 interface내부에서 default라는 문법이 생겨 난 것이다. default는 인터페이스도 몸체가 있는 메서드를 만들 수 있다. 왜 이 문법이 생겼냐?! (다중 상속이 안 되는 것이 많기 때문이다.) 그래서 최근의 자바버전에선 어댑터 패턴 대신에 default를 사용하는 것이 좋다

JAVA,객체지향 2021.12.06

소켓통신 실습 (스레드로 양방향통신)

일대일로 소켓통신을 하는 것은 한 방향으로만 이루어진다. 쓰는 쪽(클라이언트)과 읽는 쪽(서버). 일대일 방식의 소켓통신을 그림으로 표현해 봤는데 여기서 먼저 개선해야 할 부분은 클라이언트가 메시지 한 개만 보내면 프로그램이 종료되는 것이다. 이럴 때 종료되지 않고 "반복"되게 하기 위해서 while을 사용해서 메시지를 보내더라도 프로그램이 계속 돌도록 해본다. 자 그럼 이제 하나의 문제점을 개선했는데 개선을 해놓고 보니 클라이언트만 일방적으로 메시지를 보내고 서버는 그 메시지를 읽기만 한다. 완전한 단방향 통신이다. 이를 어떻게 개선해야 할까? 이문제를 개선하기 위해서는 먼저 스레드에 대해서 생각을 해 봐야 한다. 지금 현제 위 프로그램에서 java는 main스레드 하나가 동기적으로 열심히 쓰고 읽고를..

JAVA,객체지향 2021.12.03

소켓통신 실습 (일대일)

소켓통신을 일대일 방식으로 하려면 두 개의 소캣이 필요하다 서버 소켓과 클라이언트소켓 그럼 이 두 개의 소켓을 ByteStream으로 연결하는데 ip주소로 서로 통신할 수 있도록 할 것입니다. 포트를 양 끝단에 달고 하는 통신(소켓통신) 다음과 같은 방식으로 통신이 이루어집니다. 위 그림에는 빠져있지만 클라이언트 소켓은 메시지를 쓰는 쪽이기 때문에 키보드와 연결하는 스트림이 하나 더 있어야 합니다.(클라이언트 파일 소스코드 참고) 서버 소켓 파일 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; public class ServerFile { /..

JAVA,객체지향 2021.12.03

소켓통신 개념(포트(port)개념)

소켓통신을 이해하기 위해선포트(port)를 이해하는 선수과정이 필요하다. 포트는 주차요원이 손님의 차키를 받아서 주차를 시킬 때 만약에 주차선을 지키지도 않고 그냥 넣어지는 대로 주차를 하면 어떻게 될까? 아마 차를 뺄 수도 없게 되고 한 곳에 차를 몰아서 주차시켰다면 꽉 차서 주차를 더 이상 할 수 없게 될 수도 있다. 차를 주차시키는 위치가 포트 주소가 된다. 컴퓨터통신에 왜 포트가 필요할까? 컴퓨터로 LOL도 하고 카카오톡 도하면서 스타크래프트도 동시에 할 수 있다. 그럼 각각 의 프로그램이 데이터를 주고받기 위해서 Byte Stream이 필요하게 되는데 LOL도 스타도 카톡도 다 각자의 ByteStream이 필요한 상황에서 컴퓨터로 연결된 렌선은 하나밖에 없다. 그럼 LOL 서버로부터 우리 집 컴..

JAVA,객체지향 2021.12.02

버퍼(Buffer)란?

Buffer -> 임시 저장 공간 Buffer를 이해하기 전에 Stream 대한 이해가 필요하다. Stream 이란? 마치 수도꼭지와 비슷한데 수도꼭지에서 물을 틀어서 그 물이 수도관을 통해서 내려가게 되는데 이 수도꼭지를 여는 순간 물이 이동하는 물의 흐름을 Stream이라고 한다. 이 물의 흐름을 프로그램에서는 전류의 흐름으로 다룬다. 흔히 Stream은 컴퓨터를 이용하면서 늘상 존재하는데 키보드를 사용할 때도 키보드에서 누르는 자판의 신호를 전기적 신호로 본체에 전달해서 원하는 문자열이 모니터에 다시 출력되기까지는 수많은 전기선과 장치들로 전류가 이동하면서 일을 하기 때문에 사용할 수 있는 것이다. 그럼 조금만 생각해 보면 Stream이라는 것은 흐름이라 흐름을 주는 쪽과 받는 쪽으로 나눠지게 되는..

JAVA,객체지향 2021.12.02

String Constant Pool

java에서 문자열을 표현할 때는 String을 사용하는데 이 String이란 이름에서 얻을 수 있는 힌트는 첫 글자가 대문자라는 점에서 클래스라는 것을 유추해 낼 수 있다. String은 Char의 배열 형태 인데 그럼 지금 까지 배운 문법에서는 클래스를 사용하려고 메모리에 띄우기 위해선 new를 해야 한다. 왜 String은 그냥 사용해도 되는 것일까? 분명 같은 문자열을 s1과 s2에 저장을 했는데 왜 false가 나오냐면 java에서는 "=="을 사용해서 비교를 하게 되면 메모리 주소 번지를 비교한다. 즉 s1과 s2의 주소 번지가 다르기 때문에 false가 나온다. 처음에 java언어를 개발한 Sun이라는 회사에서 String클래스는 사용빈도가 굉장히 높을 것 같아서 String클래스만 특별히 ..

JAVA,객체지향 2021.12.02

예외처리란?

예외처리는 Exception이라고 한다. 예를 들어서 슈퍼마켓을 운영을 하는데에 위험 요소 및 준비해야 할 것 들을 생각해보자. 1. 도둑을 잡기 위해 cctv 설치 2. 잔돈 준비 2. 직원 채용 3. 장소 임대 등등 이 있다. 그렇게 준비할 것을 준비를 해 놓고 운영을 시작해서 장사를 하다 보면 생각지도 못한 문제점들이 생길 수 있다. 잔돈이 모자랄 수 있다. cctv 사각지대에 있는 물건이 도난당했다. 등등.. 그럼 위 상황을 크게 두 가지로 나눌 수 있는데 운영전/운영후 java에서 운영전(실행 전)에 일어나는 준비과정 및 위험요소 제거는 jvm이 알아채고 오류를 발생시켜 예외처리(try/catch)를 하도록 개발자에게 강제로 시켜버린다. 운영 후에 생기는 예외에 대한 처리는 런타임 시에 일어나기..

JAVA,객체지향 2021.12.01