반응형
- FormData 파일과 객체 한번에 보내기2021-05-26 00:29:30토이 프로젝트를 진행하면서 리액트에서 스프링 api 서버로 파일을 포함하는 객체를 List 형태로 보내야 했다. 처음에는 프론트단에서 FormData에 일반 객체를 담으면 무시되니까 multipart/form-data로 파일 여러개와 application/json content-type의 객체를 Blob으로 변환시켜 보내는 방식으로 Controller에서는 이렇게 받아서 구현을 했다. 근데 생각해보니 이렇게하면 보내기전에 객체를 한 번 Blob 처리를 해야되니 성능적으로 너무 손해라는 생각이 들었다. 그래서 FormData에 객체 배열을 포함시키는 바꾸는게 더 좋다고 생각하여 이런식으로 배열의 인덱스 접근해서 데이터를 추가하는 방식으로 변형했다. 백엔드 코드야 multipart를 2개로 나눠서 쓰던게 사..
- Iterator 정리2021-05-15 11:05:45오늘은 자바에서 컬렉션 프레임 워크에 저장된 요소를 읽어오는 방법 중 자주 쓰이는 Iterator 인터페이스에 대해 정리해 보겠습니다. 우선 Iterator 인터페이스 내부를 한 번 들여다 보겠습니다. hasNext next remove forEachRemaining 위 4개의 함수가 있네요. 설명을 보면 hasNext는 iteration에 다음 요소가 존재하는지의 여부를 boolean으로 반환하고 next는 해당 iterator에서 다음 요소를 반환합니다. remove는 iteration에서 반환된 마지막 요소를 내부 컬렉션에서 제고하는 역할을 합니다. next()호출마다 한번만 호출 가능하며, 반복이 진행되는 동안 이것 이외의 방법으로 컬렉션이 수정되면 동작이 지정되지 않는다고 설명하고 있습니다. f..
- Comparable와 Comparator 정리2021-04-14 00:30:14오늘은 Comparable과 Comparator의 차이와 그 사용법에 대해 정리해 보겠습니다 우선 java에서 제공되는 정렬이 가능한 클래스들은 모두 Comparable을 구현하고 내부적으로 compareTo()메서드를 재정의 해 구현 방식에 따라 정렬을 수행합니다. 이것들이 내부적으로 Comparable을 구현하고 있습니다. Integer 클래스를 예로 보면 이런식으로 구현하고 있죠? 이렇게 구현한 클래스를 사용하는 방법으로는 다음 두 가지가 있습니다. Arrays.sort() Collections.sort() 두 개의 차이는 Arrays.sort()에 경우 primitive array와 object array둘 다 동작할 수 있도록 내부적으로 구현이 되어 있고 Collections.sort()는 Li..
- Shallow Copy & Deep Copy2021-04-13 23:48:49얕은복사와 깊은복사에 대해 알아봅시다. 얕은 복사 한 쪽에서 수정이 발생되면 복사한 객체에도 영향을 준다. 얕은 복사가 참조값을 복사하기 때문에 복사한 객체도 같은 참조값을 가지므로 수정이 반영되는 것 깊은 복사 참조값을 복사하는 것이 아니라 , 원본 객체의 내부 객체의 값까지 복사해서 힙 영역에 객체를 새로 만드는 것으로 수정이 일어나도 원본과는 관계가 없다. 위의 클래스처럼 clone을 재정의한 클래스를 가지고 비교해보겠다. 실행 결과를 보면 clone을 통해 복사한 객체가 얕은 복사라는 것을 알 수 있다. 여기서 생각드는건 내가 객체를 복사할 때 대부분 원본에 복사본의 수정사항을 반영하고 싶을리가 없다는 거다. 그렇다면 clone을 주의해서 재정의해보자. 이처럼 객체 복사시에 의도적으로 얕은 복사를..
반응형