본문 바로가기

개발일지/TIL

(89)
[230708] Json 변환시 Entity 순환 참조 문제 에러 ❗ Infinite recursion (StackOverflowError) com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) ✔ 에러 테스트 코드 @Test public void entityToJsonTest() throws JsonProcessingException { Post post = postRepository.findById(1L).orElseThrow( () -> new IllegalArgumentException() ); mapper.writeValueAsString(post); } 에러 이유 ❗ 양방향 연관관계가 있는 Entity가 Json 변환될 때 순환 참조가 일어나..
[230707] Git add할 때 CRSL 관련 에러 에러 내용 ❗ warning: in the working copy of 'team_stduy/Test2/gradlew.bat', CRLF will be replaced by LF the next time Git touches it 에러 원인 윈도우와 맥, 리눅스 사용자가 Git을 통해 협업을 할 때 발생하는 개행 관련 에러이다. 윈도우의 경우 개행은 CR(Carriage Return)과 LF(Line Feed)로 이루어져 있으며, 맥과 리눅스의 경우는 개행이 LF(Line Feed)로 이루어져 있다. 이것이 서로 다른 OS 간 협업을 하면서 혼합이 되기 때문에 생기는 것이다. 에러 해결 Git에서 이러한 문제를 해결하기 위해 자동으로 변환시켜 주는 기능을 제공한다. 그 기능은 Command 명령어를 통해..
[230706] String Constant Pool? String 생성 🎈상수 할당을 통한 생성 - String name = "jeong"; 🎈생성자를 통한 생성 - String name = new String("jeong"); String 저장되는 곳이 다름 💬 상수 할당을 통해서 String을 생성할 경우 String Constant Pool에 상수 값을 만들고 그 주소값을 사용합니다. 이후에 같은 값을 똑같이 할당할 경우 기존에 String Constant Pool에 만든 값을 사용합니다. 💬 생성자를 통해서 String을 생성할 경우 Heap 영역에 값을 저장하고 그 주소값을 사용합니다. 이후에 같은 값으로 생성자를 호출하더라도 Heap에 객체가 새롭게 하나 만들어집니다. 실제 코드 테스트 public void stringPoolTest(){ St..
[230705] 미니 프로젝트(230628) 코드 피드백 및 적용 피드백 받은 내용 🎈 첫 번째 피드백 ❗아래 코드에서 조건문의 경우 정규식에 포함시킬 수 있지 않을까요? private boolean validateUsername(String userName){ return userName.matches("[a-z0-9]+") && userName.length() >= 4 && userName.length() =8 && password.length()
[230704] 즉시 로딩과 지연 로딩? 즉시로딩 vs 지연로딩 ❓JPA에서 즉시 로딩이란? 💬 즉시 로딩이란 DB에서 데이터를 조회할 때 연관관계가 있는 데이터들도 가져오는 것입니다. ❓JPA에서 지연 로딩이란? 💬 지연 로딩은 DB에서 데이터를 조회할 때 연관관계가 있는 데이터들을 Proxy로 대체를 해둡니다. 그리고 실제로 사용할 때 데이터를 가져옵니다. ❓둘 중 어느 것이 Default로 설정이 되어있나요? ✅ ManyToOne, OneToOne 경우 Default는 즉시 로딩입니다. ManyToMany, ManyToOne 경우 Default는 지연 로딩입니다. public @interface ManyToOne { FetchType fetch() default FetchType.EAGER; } public @interface ..
[230703] JavaServlet에 대해 이해하기 내가 잘못 알고 있던 것 ❌ 오늘 Servlet를 자세히 알아보기 전까지 Servlet Container를 Servlet으로 잘못 알고 있었다. Dispacther Servlet에서 HttpServletRequest와 HttpServletResponse을 만들어준다고 생각했다. 이를 기반으로 Filter를 보다 보니 전체적인 흐름이 이해가 안 가기 시작했다. 내가 알게 된 것 ✅ Tomcat에는 Servlet Container가 있다. 그리고 요청을 받았을 때 HttpServletRequest와 HttpServletResponse을 만든다. 이후 Servlet 분석 후 찾은 Servlet을 init, service 메서드를 호출해 초기화 실행한다. 그리고 요청 메서드에 따라 doGet, doPost 등을..
[230702] Java 이미지 리사이징 방법 이유 인생퍼즐 프로젝트에서 이미지 리사이징 기능을 추가하기로 했다. 저장 공간을 절약하고 Front에서 이미지를 불러올 때 더 빨리 불러올 수 있도록 하기 위해서였다. 사전 조사 이미지 리사이징을 하기 위해서 방법을 찾아봤다. 우리는 원하는 기능이 있으며 빠르게 처리할 수 있는가를 기준을 세워서 말이다. 잘 작성된 글을 찾아서 쉽게 결정할 수 있었다. 이후 퍼포먼스의 문제가 없다면 결정이 바뀌지는 않을 것 같다. 📌 이미지 리사이징 라이브러리와 속도 측정 결과 Marvin – 361ms Imgscalr – 143ms Thumbnailator – 547ms java.awt.Graphics2D – 34ms Image.getScaledInstance() – 235ms 참고 사이트 : https://www.b..
[230701] 쿠키, 세션, JWT ? 인증 & 인가 ❓인증은 무엇인가요? 💬 사용자의 신원을 확인하는 과정으로 "너 여기 들어올 수 있는 사람이야?"라고 물어보는 거와 같다. ❓인가는 무엇인가? 💬 인증된 사용자에 대한 접근 권한을 결정하는 과정으로 "너 이거 사용할 수 있는 사람이야?"라고 물어보는 거와 같다. 쿠키 & 세션 ❓쿠키가 나온 이유는 무엇인가? 💬 클라이언트와 서버가 연결이 계속되어 있는 경우 자원의 소비가 너무 많다. 특히 서버 쪽에 부하가 많이 걸린다. 그래서 클라이언트와 서버는 비연결 방식을 사용한다. 비연결 방식을 사용하면 클라이언트와 서버가 서로의 상태를 알지 못하게 되는데, 이를 보완하고자 필요한 정보를 저장을 해뒀다고 주고받는 쿠키를 사용하는 것 같다. ❓쿠키는 무엇인가? 💬 쿠키는 클라이언트에 통신간에 필요한 정..