일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 코테
- 자바
- DP
- 코딩테스트실력진단
- 완전탐색
- 알고리즘기본개념
- 코드트리
- JPA
- 코딩테스트
- Spring
- 그리디
- Union Find
- Java
- 다익스트라
- 알고리즘
- 백준
- 항해플러스ai
- JUnit
- DFS
- 트러블슈팅
- BFS
- 다시보기
- 싸피
- 유니온파인드
- SSAFY
- SWEA
- database
- 항해플러스ai후기
- 그래프
- 항해솔직후기
- Today
- Total
목록workspace/backend (122)
HwangHub
문제 상황 기존에 작업에서는 게시글 엔티티가 아래와 같이 선언되어 있었다. @Entity public class Post extends BaseTimeEntity { ... @Column(length = 500) private String title; @Column(length = 50000) private String body; ... } 본문 필드에 50000으로 받겠다고 선언되어있었는데, 이는 일반적이지 않은 선언이다. 우선 mysql 기준 레코드 전체 크기가 65,535 bytes로 제한되어 있으므로, 50000과 같은 길이 설정 자체에서 오류를 일으키기도 하고, 그것 외에도 실제 생성하면서도 레코드가 생성되지 않고 에러를 발생시킬 수 있기 때문이다. 반면, 일반적으로 긴 문자열을 저장하기 위해 ..
data jpa에서는 persistenceContext라는 개념이 존재하고, 엔티티 스냅샷을 비교하여 dirtyChecking을 수행하는 방식으로 운영된다. 따라서 엔티티가 persistence layer 이외에 노출되는 것은 엔티티에 대하여 불필요한 엑세스 포인트를 과하게 노출시키는 행위이며, 만약 협업을 하다가 로직이 꼬이게 되면 의도치 않은 엔티티 수정이 발생될 수 있다. 그 외에도 여러가지의 '안정성'을 위한다는 이유들로 persistence layer 이외의 레이어에서는 dto 사용이 적극 권장된다. 가지고 있던 문제는? 멋대플랫폼 아키텍처의 처음 구현 방식에서는 엔티티가 useCase라는 client 객체에서부터 사용되고 있었다. 처음 presentation layer에서 dto로 reques..
기존에는 유저 ID를 클라이언트에서 입력하도록 API가 설계되어 있었다. 즉, Controller 레벨에서 pathVariable 또는 requestParam으로 userId를 받고 있었다. 아래는 api 중 유사한 api의 예시이다. @GetMapping("/mypage/author/{userId}") public SuccessResponse findAuthorPosts(@PathVariable Long userId, @RequestParam Integer page, @RequestParam Integer size) { ... return SuccessResponse.of(response); } 문제가 무엇인가? 클라이언트는 엑세스 토큰, 리프레시 토큰을 가지고 있음에 불과하고, 로그인 유저 정보를 관..
프로젝트를 진행하면서 각 도메인의 작업물을 stage 브랜치로 merge하고 나니 팀원 중 한 명이 필드 인젝션을 사용한 것을 확인할 수 있었다. 본능적으로 "어라? 왜 생성자 인젝션을 사용하지 않았지?"라는 생각이 들었는데, 스스로 필드 인젝션의 위험성에 대한 이유를 명확히 댈 수 없음을 깨달았다. 따라서 이번 기회에 정리하고자 한다. 의존성 주입 방법 3가지 스프링부트를 활용하면서 의존성을 주입하는 방법은 대표적으로는 3가지가 있다. Setter 주입 생성자 주입 필드 주입 이는 @Autowired 어노테이션을 Setter, 생성자, 필드에 선언해주는 것으로 구현한다. 따라서 이 방법들을 알아보기 전에 @Autowired 에 대해 간단하게 짚고 넘어가고자 한다. @Autowired란? docs.spr..
공부를 하다보면 "멱등성"이라는 단어를 마주칠 때가 있는데, 이전에는 멱등성에 대한 이해가 서칭 포인트가 아니였기에 넘어갔다. 그러다 오늘, 학습을 진행하다가 멱등성이 다시 등장했고, 오늘은 이 녀석을 한번 정리해볼까 한다. 멱등성, 출신이 어디인가? 조금이라도 관심있게 알아본 사람은 모두 알겠지만, 멱등성은 수학에서 나온 단어이다. 아래 정의를 보면 알 수 있듯, 연산을 여러 번 수행하더라도 그 결과가 동일할 때 "멱등성을 갖는다"고 한다. 멱등법칙(冪等法則) 또는 멱등성(冪等性, 영어: idempotent)은 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. 출처: 위키피디아 이를 서버의 관점에서 이해해보자. 우리는 보통 HTT..

Paging 조회 API 테스트코드를 아래와 같이 작성하였고, security filterchain에서는 모든 요청에 대하여 열어두었다. @WebMvcTest(controllers = PostController.class) @ActiveProfiles("test") class PostControllerTest { @Autowired private ObjectMapper om; @Autowired private MockMvc mockMvc; @MockBean private PostService postService; @MockBean private PostRepository postRepository; @DisplayName("유저가 입력한 키워드, 그리고 클라이언트에서 전해주는 page=0++, size..
어플리케이션 성능 모니터링 어플리케이션 성능 모니터링(APM)은 어플리케이션의 성능을 실시간으로 모니터링할 수 있도록 해주는 도구입니다. 이를 통해 개발자는 어플리케이션의 성능을 실시간으로 확인하고 분석할 수 있습니다. Spring Boot Actuator : 스프링 부트 어플리케이션의 상태를 모니터링하고 관리하는 데 사용되는 모듈입니다. Actuator를 사용하면 어플리케이션의 상태, 메트릭, 빈, 스레드 등을 확인할 수 있습니다. Actuator는 spring boot starter에 등록되어 있습니다. 그 외에 Micrometer와 같은 모니터링 시스템 구현체도 있습니다. 로깅 및 로그 분석 어플리케이션 로그는 어플리케이션의 동작과 관련된 중요한 정보를 담고 있습니다. 로그를 효과적으로 관리하고 분..

Q. 아래 표를 참고하여 다음 물음에 답하시오. Q1. 5번 부서에서 근무하고, 급여(salary)가 30000 이상인 모든 직원의 성명(Fname, Lname)을 검색하라. SELECT Fname, Lname FROM Employee WHERE Dno = 5 AND salary >= 30000; 결과: Fname Lname John Smith Franklin Wong Ramesh Narayan Q2. ‘ProductX’ 프로젝트에서 주당 10시간 이상 작업한 5번 부서에서 근무하는 모든 직원의성명(Fname, Lname)을 검색하라. SELECT Fname,Lname FROM PROJECT , WORKS_ON, EMPLOYEE WHERE EMPLOYEE.Ssn = WORKS_ON.Essn AND Hou..

Q. 다음 표를 보고 아래 질문에 답하시오. 💡 문제를 풀기 전에 integrity contraints에 대해 간단하게 정리해보자. 1. entity integrity constraints - pk값은 null이 아니여야 한다. - pk값은 중복되지 않는 값이여야 한다. 2. referential integrity constraints - fk값은 관계성을 갖는 레코드의 유효한 PK 값이여야 한다. Answers. 1) PROJECT 테이블은 Pnumber를 PK 칼럼으로 갖고 있으며, Dnum은 Department 테이블의 PK값을 FK로써 가지고 있다. 이 때, 주어진 Insert 문 insert into PROJECT에 따르면 Pnumber는 4로 입력되기 때문에 null도 아니고 중복되지도 않는 ..
💡 기본적으로 redis-cli에서는 대소문자 구분이 되지 않습니다. 따라서 대문자로 표기한 것은 가독성을 위한 것이라 이해하면 됩니다.Redis 실행하기sudo service redis-server startRedis-cli 시작하기redis-cliRedis가 잘 실행되고 있는지 확인하기PING // response : PONG Create여기서 hello가 key, 그리고 redis가 키에 대한 value, 저장에 성공하면 OK 반환, 동일한 key에 다른 value 저장을 수행하면 update로 수행SET hello redis Readhello 라는 키에 대한 value를 반환해 줌. 여기선 “redis”, 없는 값을 조회하려고 하면 nil 반환 (null과 유사한 의미)GET hello Delet..