본문 바로가기

공부/Java28

자바의 입출력(I/O) 및 File(경로/읽기)을 알아보자 스트림(Stream)이란? 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름 자바의 입출력(I/O)를 알아보자 입출력은 데이터를 다른 곳으로 이동 시킬 때 사용된다. 자바는 스트림(Stream)으로 I/O를 사용한다. 1. 입력: InputStream 자바의 기본 입력 클래스이다. byte로 데이터 읽는다. read() 2. 출력: OutputStream 자바의 기본 출력 클래스이다. byte로 데이터 읽는다. write(int b) 종류 FilterOutputStream : 파일로 데이터 쓰기 DataOutputStream : 자바의 primitive type data를 다를 매체로 데이터를 쓸 때 사용 BufferedOutputStream : 버퍼링 사용(효율적인 전송) flush()를 사용하여 .. 2022. 9. 8.
전략패턴과 상태패턴의 공통점과 차이점 헷갈려서 다시 정리 이전 정리 : https://jaehhh.tistory.com/58 전략패턴 vs 상태패턴 결론 전략패턴 : 한 번 인스턴스 생성하고 난 뒤, 상태가 거의 바뀌지 않을 때 사용 상태패턴 : 한 번 인스턴스 생성하고 난 뒤, 상태가 빈번하게 바뀔 때 사용 디자인패턴 (소프트웨어) 디자인 + ( jaehhh.tistory.com 공통점 인터페이스를 사용함으로써 Concrete Class를 캡슐화한다. Concrete Class : 구현클래스(추상클래스가 아닌 모든 클래스) 인터페이스(전략, 상태)만을 인자로 받는다. 차이점 표면상(코드상)으로는 다를게 별로 없다. 구분한 이유가 뭘까? 상태패턴 상태에 따른 로직 끝에 , setState(new State()) 를 호출함으로써 상태를 스스로.. 2022. 6. 6.
IntelliJ 디버깅 해보기 배경 금요일 게더에 현직 개발자께서 오셔서 특강을 해주셨다. 많은 명언들과 꿀팁들도 들을 수 있는 좋은 기회였다. 개발자는 스포츠선수와 직장인 사이에 있다! 스포츠선수가 선수만 뛴다고 실력이 느는가? 아니다. 개인연습 및 훈련이 필요하다. 개발자도 마찬가지이다. 회사에서 협업만 하다보면 뒤처질 때가 분명히 온다. 모르는 부분이 있다면 개인학습이 꼭 필요하며, 추가적인 학습도 꾸준히 되어야 할 것이다. 신입개발자 절반 이상이 디버깅을 하지 않는다. 대부분 출력문을 이용해 검증한다. 여러 말씀을 듣는 와중 매우 뜨끔하였다. 나또한, 대부분 검증을 출력으로 진행했기 때문이었다. 디버깅이 필요한 이유와 사용방법을 정리해보고자 한다! 디버깅 1. 디버깅이란? 개발 단계 중 발생하는 시스템의 논리적인 오류나 버그를.. 2022. 5. 6.
SpringBoot에 원하는 오류페이지로 설정하기 SpringBoot에 존재하지 않는 API 요청에 응답하는 커스터마이징 설정하기!! 1. 원치않는 오류페이지 스프링부트의 기본페이지 1. 배경 @ControllerAdvice 적절한 에러 페이지를 응답해야 한다는 생각에 추가적으로 코드를 분석하기 시작했다. SQL 오류의 경우, 오류의 정보가 클라이언트에 노출된다! SQL Injection 공격으로 개인정보 유출사고 클라이언트에게 에러메시지 정보를 모두 공개할 필요가 없다 2. 설정방법 resources - application.properties spring.mvc.throw-exception-if-no-handler-found=true spring.web.resources.add-mappings=false 예외 핸들러를 찾지 못할경우, 예외를 던진다... 2022. 5. 6.
[JAVA] 한번에 두 개 이상 테스트하기 Assertions.assertAll( () -> assertEquals(piece.checkSameTeam(WHITE), true), () -> assertThat(piece).isInstanceOf(Pawn.class) ); - assertAll을 활용하자 2022. 4. 30.
전략패턴 vs 상태패턴 결론 전략패턴 : 한 번 인스턴스 생성하고 난 뒤, 상태가 거의 바뀌지 않을 때 사용 상태패턴 : 한 번 인스턴스 생성하고 난 뒤, 상태가 빈번하게 바뀔 때 사용 디자인패턴 (소프트웨어) 디자인 + (공통적으로 마주치는 문제를 해결하는 방법의) 패턴 1. 전략패턴 각각의 알고리즘군을 교환이 가능하도록 별도로 정의하고 각 캡슐화한 후 서로 교환해서 사용 구조 장점 코드 중복 방지 확장성 및 알고리즘 변경 용이 예시 오리 종류 (한번 정하면 잘 바뀌지 않음) 날 수 있음 날 수 없음 수영할 수 있음 수영할 수 없음 인터페이스 (해당 예시는 자동차) public interface CarMoveBehavior { public void action(); } 인터페이스 Impl class UpBehavior imp.. 2022. 4. 26.