Network - TCP, UDP
·
Network
TCP/IP 4계층 모델 TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP 프로토콜의 계층인 인터넷 계층의 상위에서 동작한다. 전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션을 중개하는 역할을 한다. 4층 응용 계층 HTTP, DNS, FTP, ... 애플리케이션에 맞추어 통신 3층 전송 계층 TCP, UDP, ... IP와 애플리케이션을 중개해 데이터를 확실하게 전달 2층 인터넷 계층 IP, ICMP, ARP, RARP 네트워크 주소를 기반으로 데이터를 전송 1층 네트워크 접근 계층 Ethernet, wifi, ... 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간에 전송이 가능하도록 함 TCP, UDP 특징 TCP는 3-way handshake ..
Spring - "urlTemplate not found. If you are using MockMvc did you use RestDocumentationRequestBuilders to build the request?" 원인과 해결 방법
·
나의 에러 일지
배경 이번 에러는 RestDocs를 생성하기 위한 통합 테스트 중 api에 path parameter를 문서화하는 과정에서 발생한 에러다. 아래는 에러가 발생했던 테스트 코드이다. @Slf4j @Disabled @Transactional @SpringBootTest @AutoConfigureMockMvc @AutoConfigureRestDocs @ActiveProfiles("test") public class BaseIntegrationTest { @Autowired protected MockMvc mvc; @Autowired protected Gson gson; } @Slf4j class FeedIntegrationTest extends BaseIntegrationTest { private final..
MySQL - 프로그래머스 164670. 조건에 맞는 사용자 정보 조회하기
·
SQL
[unrated] 조건에 맞는 사용자 정보 조회하기 - 164670 문제 링크 성능 요약 메모리: 0.0 MB, 시간: 0.00 ms 구분 코딩테스트 연습 > String, Date 채점결과 Empty 문제 설명 다음은 중고 거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고 거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS는 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. Column name Type Nullable B..
Spring - Spring Boot 초기 데이터 설정 (data.sql)
·
Spring
프로젝트를 진행하면서 회원 가입할 때 선택할 수 있는 관심사 태그가 필요했다.Enum으로 관리할지 테이블로 관리할지 고민했었는데, 동적으로 관리해야 할 필요가 있어서 테이블로 관리하기로 했다.관심사 태그는 미리 지정되어 있기 때문에 데이터를 미리 넣어 사용하도록 해야 했다.그럼 Spring Boot에서 어떻게 초기 데이터를 설정하는지 알아보자 yml 설정spring: ... jpa: hibernate: ddl-auto: create defer-datasource-initialization: true sql: init: mode: alwaysspring.jpa.hibernate.ddl-auto: create:  Hibernate가 데이터베..
Spring - 통합 테스트에서 S3 Mock 객체로 S3 자원 아끼기
·
Spring
배경 파일 업로드를 위해 S3를 연결하고 테스트하는 과정에서 문제가 발생했다. S3에 테스트를 위해 생성한 파일들이 계속 저장되어 있던 것! 단위테스트는 Mock을 사용하기 때문에 문제가 없었지만 통합테스트에서는 모든 로직이 그대로 실행되서 저장되는 로직이 포함된 만큼 파일이 S3에 저장됐다. 프리티어를 사용하고 있었기 때문에 GET, POST를 요청을 보낼 수 있는 횟수 제한이 있었고 정신없이 테스트를 돌리다보니 GET 500회, POST 900회나 실행되고 있었다. 이 문제를 해결하기 위해 통합 테스트에서도 S3를 Mock으로 만들어 사용해야 했다. 구현 AwsS3Config 기존에 AmazonS3 Bean을 생성하기 위한 코드이다. 해당 Bean을 사용하지 않도록 Test용 Bean을 만들어서 사용..
Java - java.util.ConcurrentModificationException 원인과 해결 방법
·
나의 에러 일지
배경 프로젝트를 진행하면서 피드의 ImageUrl을 수정하는 로직이 있었는데 여기서 java.util.ConcurrentModificationException 예외가 발생했다. ConcurrentModificationException는 무엇이고 어떻게 해결할 수 있는지 알아보자 private void removeFeedImages(List removeImageUrls, Feed feed) { if (removeImageUrls != null) { if (feed.isImageUrlsSizeOne()) { log.debug("FeedService.updateFeed exception occur " + "removeImageUrls : {}, saveFeedImageUrls : {}", removeImage..
Spring - 중복된 Bean이 없는데도 발생하는ConflictingBeanDefinitionException 원인과 해결 방법
·
나의 에러 일지
배경 파일을 이동하거나 삭제하는 작업 이후 ConflictingBeanDefinitionException을 만날 때가 있다. nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'memberRepository' for bean class [클래스 경로] conflicts with existing, non-compatible bean definition of same name and class [중복된 클래스 경로] 일반적으로 ConflictingBeanDefinitionException는 중복으로 등록된 클래스가 존재할 때 발생하는 ..
Java - @Override는 왜 사용할까?
·
Why?
배경 프로젝트를 진행하다 문뜩 @Override 애너테이션을 보다가 이런 생각이 들었다. "이 애너테이션이 반드시 있어야하나?"라는 생각이 들어서 정리를 해봤다. @Override란? @Override는 상위 클래스나 인터페이스의 메서드를 오버라이딩했을 때 오버라이딩한 메서드를 명시해주는 애너테이션이다. 왜 사용할까? 메서드를 오버라이딩하려면 메서드명, 매개변수, 반환 타입이 상위 클래스의 메서드와 정확히 일치해야 한다. 그러나 휴먼에러로 상위 클래스의 메서드와 다르게 작성하는 경우가 생길 수 있다. 하지만 자바는 해당 메서드 오버라이딩 된 메서드인지 알 수 없기 때문에 다른 메서드로 취급하고 에러를 발생시키지 않는다. 이 때 @Override 애너테이션을 사용하면 컴파일러가 해당 메서드가 상위 클래스를..
JPA - 하나의 컬럼에 여러 개의 데이터를 저장하기
·
JPA
배경 프로젝트를 진행하면서 인스타그램의 Feed와 같은 기능을 구현중이었다. Feed에는 여러 장의 Image를 업로드할 수 있다. MultiPartFile로 전달 받은 Image들은 S3에 저장된 후 S3에 저장된 url을 String 값으로 반환한다. 이 ImageUrl들은 별도로 커스텀할 일이 없기 때문에 Entity로 만들 필요를 못느꼈다. 그래서 여러 개의 imageUrl을 하나의 컬럼에 저장할 수 있는 방법에 대해 알아보았고 Converter를 사용하는 방법을 알게되어서 정리한다. 구현 AttributeConverter는 JPA(Java Persistence API)에서 엔티티 클래스와 테이블 간 데이터 변환을 도와주는 인터페이스다. JPA에서는 엔티티 클래스의 필드와 데이터베이스 테이블의 컬..
HTTPS - 이력서 제출했는데 내가 만든 서비스에 접속이 안되었던 건에 대하여
·
나의 에러 일지
열심히 이력서를 만들고 주말에 이력서를 제출했다. 그리고 월요일이 되었는데...내가 만들었던 서비스에 접속이 안된다. 왜 안되지? 여태까지 잘되다가 하필 오늘 갑자기? 지원했던 회사에서 이력서를 열람했다는 알림은 날아오는데 열심히 만든 서비스에 접속이 되지 않는다니...가슴이 아팠다. 아프지만 지금은 아파할 때가 아니다. 빨리 문제를 해결해야 했다. 잘되던 서비스가 왜 갑자기 안될까? 직접 서버 도메인으로 포스트맨을 날려봐도 응답이 없었다. 바로 EC2에 접속해 Java가 잘 실행되고 있는지 확인해 봤다. 그런데 너무 잘 실행되고 있다. 로그도 살펴봤지만 별다른 문제는 없었다. $ ps -ef | grep java root 719534 1 0 17:24 ? 00:00:00 sudo nohup java -..
Cold Bean
'분류 전체보기' 카테고리의 글 목록 (5 Page)