전체 글
-
[Spring JPA] 1:N 매핑 관계에서 순환참조 문제 DTO로 해결하기WEB 2024. 3. 26. 02:51
문제 상황 질문-답변 엔티티가 있는데 1:N관계 질문 엔티티를 조회해서 답변 리스트까지 같이 보내고 싶은 경우, 그냥 질문을 조회해서 클라이언트에게 반환하니까 순환참조를 일으키며 overflow 에러가 발생했다. 그렇다면, 순환참조 없도록 dto를 구성하는 방법은? Question 엔티티 @Entity @Getter @ToString(of = {"id", "content"}) @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Question extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = ..
-
MyBatis N+1 성능 개선하기WEB 2024. 2. 12. 15:00
개선 전 하루의 기록을 조회하기 위해 해당일자 meeting 개수+1 번 검색을 하는 로그이다 심지어 nested-select도 아니고 그냥 쌩으로 쿼리를 여러번 돌리는 식이었다 @Override @Transactional public Map getMeetingsByDate(Map map) throws Exception { Map res = new HashMap(); List list = meetingMapper.getMeetingsByDate(map); for (MeetingDto meeting : list) { meeting.setChats(meetingMapper.getChatsByMeeting(meeting.getId())); meeting.setClips(meetingMapper.getClips..
-
[백준 20166] 문자열 지옥에 빠진 호석 (JAVA/골드 4)알고리즘? 2024. 1. 18. 21:08
원래 알고리즘 글은 잘 안쓰는데 질문글 부분에 별로 글이 없길래 나중에 다른 사람들이 궁금해할까봐 올리는 글! 정해 한 줄 요약 더보기 depth가 5인 dfs 돌린 후 메모이제이션으로 저장. (1000개 중 중복된 문자열이 있을 수 있기 때문) 근데 뭔가... ab 상태일때의 경우의 수를 가지고 aba 상태일 때의 경우의 수를 구하는 dp방식으로 구할수도 있을 것 같은데 자료구조가 너무 복잡해져서 각이 잘안나와서 포기했다. 위에 적어놓은 정해로 풀려면 진짜 쉽다. 굳이 이 문제만의 특별한 포인트를 집어보자면 8방향으로 이동하다 map을 벗어날 경우 반대쪽으로 연결시켜줘야하는데 이 부분은 그냥 int ty=(i+dy[d]+N)%N; int tx=(j+dx[d]+M)%M; 이렇게 생각해주면 끝이다. 정답코..
-
[Spring Boot]java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present 에러 해결카테고리 없음 2024. 1. 12. 12:14
스프링 부트 버전이 3.x.x 일 때 springfox에서 제공하는 swagger를 사용하려고 하면 이런 에러가 발생한다. swagger는 spring boot 3을 제공하지 않는다. gradle 기준으로 application.properties에 추가 implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' //이 부분 swagger 지워주기 // implementation 'io.springfox:springfox-swagger-ui:3.0.0' // implementation 'io.springfox:springfox-swagger2:3.0.0' 이외에도 컨트롤러와 모델의 annotation을 springdoc으로 바꿔주고, ..
-
[Spring Boot] <!DOCTYPE mapper … > 태그 인식 못하는 문제 해결방법카테고리 없음 2024. 1. 11. 20:17
mybatis,mysql,hikari,intellij,gradle 환경에서 mapper 설정을 위해서 mapper 파일을 생성했는데 태그를 인식 못하는 문제가 발생했다 적은 코드는 이게 전부. 하지만 두번째 줄부터 빨간줄이 발생했다. 뚜렷한 에러문도 안떠서 당황했는데 src/main/resources 디렉토리에 mybatis_config.xml 파일을 생성하고 이렇게만 입력해주니 해결되었다. mybatis-config.xml 파일은 MyBatis의 전반적인 설정을 담당하는 파일인데 아예 생성조차 안해놨다보니 mapper를 이해하지 못해서 생긴 문제로 파악됨.
-
[실습] http api 통신 구현(HttpURLConnection,RestTemplate,WebClient)CS지식 2023. 12. 28. 18:17
cat-facts라는 open api를 활용 -매일 다른 고양이에 대한 사실을 보내주는 open api https://loosie.tistory.com/467 [Eclipse/ IntelliJ] Java 프로젝트에 JSON 라이브러리 설치하기 (org.json) JSON이란? JSON 형식은 XML과 비슷하게 데이터를 처리하기 위한 형식으로, '속성- 값 쌍' 또는'키 -값 쌍'으로 이루어진 데이터 오브젝트를 전달하기 위한 인간이 읽을 수 있는 텍스트를 사용하는 개 loosie.tistory.com gson 라이브러리 추가 필수 감상 : 어우 코드 급하게 먹다가 체하겠다 HttpURLConnection - 스프링 없이 바닐라 자바로 구현 import com.google.gson.JsonArray; imp..
-
[운영체제] CPU 스케쥴링 알고리즘CS지식 2023. 11. 16. 21:16
CPU 스케줄러는 프로세스에서 해야할 일을 스레드 단위로 CPU에 할당한다. 이 때 할당하는 규칙을 CPU 스케쥴링 알고리즘이라고 한다. cpu 스케쥴링 알고리즘의 목표 : cpu 이용률은 높게 (주어진 시간에 많은 일을 하도록), 프로세스의 응답시간은 짧게 설정하는 것 CPU 스케쥴링 알고리즘은 우선 비선점형,선점형로 나눌 수 있다. 비선점형 non-preemptive 프로세스가 한번 cpu를 점유하면 끝날 때까지 나가지 않는다. (프로세스가 running 과 terminate만 겪는다) 따라서 *컨텍스트 스위칭으로 인한 부하가 적다. * 컨텍스트 스위칭 : CPU에 실행할 프로세스를 교체하는 기술 교착 상태가 일어날 수 있다. FCFS : First Come First Served 가장 먼저 온것을 ..
-
Chapter 5 Review : 애플리케이션 설정과 검사 [처음부터 제대로 배우는 스프링 부트]WEB 2023. 10. 5. 22:53
이 장의 학습목표 애플리케이션 동적 설정 현재 설정과 해당 출처를 확인 애플리케이션 환경과 health 지표 검사, 모니터링 실시간으로 애플리케이션의 로깅 수준을 일시적으로 조정해 근본 원인 식별 하는 법을 알아봄으로써 동적이고 분산된 애플리케이션 속에서 디버깅을 편리하게 할 수 있도록 한다. 애플리케이션 설정 많은 설정 요소 중 다음 세가지만 실습해본다. *모든 설정 요소들은 적용되는 우선 순위가 있다. 여기서는 위에 있는 것이 우선순위가 높은 것. 명령 줄 인수 OS 환경 변수 패키징된 애플리케이션 jar 안에 있는 애플리케이션 속성 (application.properties와 YAML 파일) 애플리케이션 속성 Application properties @Value 어노테이션으로 설정을 코드에 넣기 @..