일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 코딩
- Spring
- cs 공부)준비
- Grafana
- 코딩문제
- ArrayList
- 코딩공부
- 이진 탐색(binary search)
- wil
- GIT
- 우선순위 큐(priorityqueue)
- 프로그래머스
- 메서드
- Til
- 면접(java
- 개발자 취업
- css
- 회고
- 코딩테스트 준비
- 배열
- Entity
- 자바
- Java
- 항해99
- github
- HTML
- 정렬 알고리즘(sort algorithm)
- aop
- 99클럽
- 자료구조
- Today
- Total
목록Spring (27)
hayu's 개발 일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oCGcq/btsGCdjypAG/cyH4tnj2ZduIgXm8REFyx1/img.png)
테스트 코드를 작성하는 이유? 테스트 코드를 작성하면 비용을 절감할 수 있다. 서버에서 실행해서 직접 테스트 해보지 않아도 되기 때문에 시간 단축이 가능하다. 테스트 코드를 통해 어떤 값이 주어졌을 때(Given), 어떤 실행을 하면(When), 어떤 결과가 나와야 하는지(Then)를 확인할 수 있기 때문에 코드를 파악하는데도 도움이 된다. → given - when - then 수정사항이 발생하면 기존의 코드에 영향을 주는지 테스트 코드를 통해 파악할 수 있다. 정확한 테스트 코드를 작성해 놓으면 실제 코드를 제대로 작성했는지 확인할 수 있다. (TDD : 테스트 주도 개발) TDD(Test-Driven Development : 테스트 주도 개발) TDD는 개발이 이루어진 다음 테스트 케이스 작성 및 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/snuu5/btsGAMAuhFB/sgC8qFeVsk33N2AkcD6mkK/img.png)
Scheduler 주기적으로 또는 특정 시간에 작업을 실행할 수 있도록 도와주는 도구이다. → 스프링 프레임워크에서 스케쥴러를 지원한다. Spring Scheduler 특징 추가적인 의존성이 불필요하다. (스프링 프레임워크의 기본 기능이다.) 사용이 쉽다(@Component와 @Scheduled 에너테이션 추가로 사용한다.) 1개의 Thread pool을 사용한다. → 스케쥴이 끝나야 다음 스케쥴 실행이 가능하다. Spring Scheduler 사용 방법 @Scheduled Spring Boot 에서 @Scheduled 을 사용하면 일정한 시간 간격으로, 혹은 특정 시간에 코드가 실행되도록 설정할 수 있다. @Scheduled 사용법 Application Class에 @EnableScheduling 를 ..
Dirty Checking 이란? 상태 변경 검사이다. 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서 변경된 부분이 있다면 자동으로 트랜잭션이 끝나는 시점에 데이터 베이스를 반영하는 기능이다. 여기서 Dirty는 엔티티 데이터의 변경된 부분을 뜻한다. 즉, Dirty checking 은 변경된 부분을 감지한다는 의미이다. Dirty Checking 조건 영속성 컨텍스트에서 관리되는 엔티티 영속성 컨텍스트는 엔티티를 처음 조회할 때 시작되며, 이후 변경을 감지한다. 준영속 / 비영속 상태의 엔티티는 더티 체킹의 대상이 되지 못한다. Transaction이 커밋되었을 때 트랜잭션이 커밋되기 전까지 영속성 컨텍스트는 변경사항을 추적하기만 하고, 데이터 베이스에 반영하지 않는다. 따라서 트랜잭션이 커밋될 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nj7B0/btsGmutln1M/WTKZVkw9UxnZDCfA0kIGnK/img.png)
extends, implements 차이 ? 왜 extends를 하지 않았는데 @Override를 사용할까? public class MeetingServiceImpl implements MeetingService { @Override @Transactional public Long updateMeeting(UpdateMeetingRequestDto requestDto, Member member, Long meetingId) { Meeting meeting = meetingRepository.findByIdAndMember(meetingId,member) .orElseThrow(()-> new CustomException(ErrorCode.AUTHORITY_ACCESS)); meeting.updateMee..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b6X2dD/btsGeghcFBg/eq32jGjcyBCwfvpqn9OKS0/img.png)
Polling 클라이언트가 평범한 HTTP Request를 서버로 계속 요청해 이벤트 내용을 전달받는 방식이다. 가장 쉬운 방식이지만 클라이언트가 지속적으로 Request를 요청하기 때문에 클라이언트의 수가 많아지면 서버의 부담이 급증한다. HTTP Request Connection을 맺고 끊는 것 자체가 부담이 많은 방식이고, 클라이언트에서 실시간 정도의 빠른 응답을 기대하기 어렵다. 일정하게 갱신되는 서버 데이터의 경우 유용하게 사용할 수 있는 방법이다. Long Polling Long Polling(롱 폴링)은 클라이언트가 서버에게 요청을 보내고, 서버가 즉시 응답하지 않고 일정 시간 동안 연결을 유지한 채로 대기하다가 새로운 데이터 또는 이벤트가 발생하면 응답을 반환하는 방식의 통신 기법이다. 일..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bNI4JU/btsGfJiomzg/OYLpWXOZptxjdib36Zy830/img.png)
websocket HTML5 표준 기술로, 클라이언트와 서버 간의 양방향 통신을 열고, 실시간으로 데이터를 교환하는 방식이다. 단방향 통신 : TV, 라디오 지연 시간이 낮고 효율적이다. 단일 TCP 연결을 유지하기 때문에 메모리 및 네트워크 사용이 효율적이다. open connection 을 유지해줘야 하기 때문에 따로 chat server 를 만들어서 관리한다. 웹소켓의 동작 방식 웹소켓은 양방향 통신이기 때문에 연속적인 데이터 전송의 신뢰성 보장을 위해 Handshake 과정을 진행한다. 기존의 다른 TCP 기반의 프로토콜은 TCP layer에서의 Handshake를 통해 연결을 수립하는 반면, 웹소켓은 HTTP 요청 기반으로 Handshake과정을 거쳐 연결을 수립한다. Handshake 과정을 ..