뒤늦은 정보처리기사 합격 후기
·
개발지식
합격하고 나서 한참 지났는데 이제야 후기를 남긴다. 바쁘다는 핑계로 계속 미루다 보니 이렇게 됐다.합격 정보구분날짜필기 합격2024.03.13실기 합격2025.12.24 필기현업에서 어느 정도 경험이 쌓여 있다 보니 생각보다 수월했다. 데이터베이스, 네트워크, 소프트웨어 개발 관련 문제들은 실무에서 접해봤던 내용들과 겹치는 부분이 꽤 많아서 크게 부담스럽진 않았다. 그냥 기출문제 몇 회분 돌리고 감 잡은 다음에 시험장 갔다.실기문제는 실기였다. 필기 합격 유효기간이 있다는 걸 알면서도 계속 미루다가, 마지막 응시 기회가 다가오고 나서야 발등에 불이 떨어진 느낌으로 준비를 시작했다.솔직히 말하면 준비 기간이 넉넉하진 않았다. 그래도 현업에 있다 보니 실무와 맞닿아 있는 문제들이 체감상 꽤 됐고, 그게 도움..
템플릿 메서드 패턴 - 적용
·
카테고리 없음
참고 해당 글은 김영한님의 스프링 핵심 원리 - 고급편을 공부하며 작성한 글입니다.https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편| 김영한 - 인프런 강의현재 평점 5.0점 수강생 20,044명인 강의를 만나보세요. 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다. 핵심 디자인 패턴, 스프링 고급 기능, 스www.inflearn.com AbstractTemplate 작성package hello.advanced.trace.template;im..
템플릿 메서드 패턴 - 예제
·
카테고리 없음
참고 해당 글은 김영한님의 스프링 핵심 원리 - 고급편을 공부하며 작성한 글입니다.https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편| 김영한 - 인프런 강의현재 평점 5.0점 수강생 20,044명인 강의를 만나보세요. 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다. 핵심 디자인 패턴, 스프링 고급 기능, 스www.inflearn.com 개요지금 로그추적기를 개발했지만, 로그 추적기 도입을 하려고 보니, 로그를 남기기위한 코드가 핵심 비즈니스..
ThreadLocal - 소개 및 적용
·
카테고리 없음
참고 해당 글은 김영한님의 스프링 핵심 원리 - 고급편을 공부하며 작성한 글입니다.https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B3%A0%EA%B8%89%ED%8E%B8/dashboard 스프링 핵심 원리 - 고급편| 김영한 - 인프런 강의현재 평점 5.0점 수강생 20,044명인 강의를 만나보세요. 스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다. 핵심 디자인 패턴, 스프링 고급 기능, 스www.inflearn.com ThreadLocal 이란쓰레드 로컬은 해당 쓰레드만 접근할 수 있는 저장소를 말한다.쓰레드를 인식해서 쓰..
ThreadLocal - 동시성 문제
·
Back-End/Spring
필드 동기화 - 개발TraceId를 파라미터로 넘기지 않고, 문제를 해결 할 수 있는 방법을 모색해 본다.LogTrace 인터페이스package hello.advanced.trace.logtrace;import hello.advanced.trace.TraceStatus;public interface LogTrace { TraceStatus begin(String message); void end(TraceStatus status); void exception(TraceStatus status, Exception e);}FieldLogTrace 구현체 작성package hello.advanced.trace.logtrace;import hello.advanced.trace.TraceId;im..
스프링 고급편 - 로그 추적기 v2
·
Back-End/Spring
파라미터로 동기화 개발HelloTraceV2 작성@Slf4j@Componentpublic class HelloTraceV2 {// private static final String START_PREFIX = "-->"; private static final String COMPLETE_PREFIX = "beginSync() 메서드가 추가 되었다TraceId를 인자로 넘겨 받고, createNextId() 를 사용하여 ID를 구한다이를 통해 트랜잭션 ID를 유지시키고, 깊이를 표현하는 level을 증가 시킨다.테스트 코드 작성class HelloTraceV2Test { @Test void begin_end_v2() { HelloTraceV2 trace = new Hello..
스프링 고급편 - 로그 추적기 v1
·
Back-End/Spring
로그 추적기 v1요구사항 분석모든 public 메서드의 호출과 응답정보를 로그로 출력애플리케이션의 흐름을 변경하면 안된다.메서드 호출에 걸린 시간정상 흐름과 예외 흐름 구분메서드 호출의 깊이 표현HTTP 요청을 구분예시정상 요청[796bccd9] OrderController.request()[796bccd9] |-->OrderService.orderItem()[796bccd9] | |-->OrderRepository.save()[796bccd9] | |OrderService.orderItem()[b7119f27] | |-->OrderRepository.save()[b7119f27] | |로그 추적기 V1 - 프로토타입 개발로그 추적기를 위한 기반 데이터를 가지는 TraceId, TraceStatus클래스..
QueryDSL - 페이징 활용 및 Count쿼리 최적화
·
Back-End/queryDSL
QueryDSL 페이징 연동스프링 데이터의 Page와 Pageable을 이용해서 페이징 처리Simple - 내용과 카운트를 한번에 조회하는 단순한 방법Complex - 데이터 내용과 카운트를 별도로 조회사용자 정의 인터페이스에 페이징 기능 2가지 추가public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); Page searchPageSimple(MemberSearchCondition condition, Pageable pageable); Page searchPageComplex(MemberSearchCondition condition, Pageable pageable);}전체 내용과 카운트..
QueryDSL - 조회 API 개발 및 데이터 JPA와 같이 사용해보기
·
Back-End/queryDSL
조회 API 개발프로파일 설정src/main/resources/application.ymlspring: profiles: active: localsrc/test/resources/application.yml → 테스트 폴더에 있는 리소스 파일을 설정해준다.pring: profiles: active: test샘플 데이터 추가import jakarta.annotation.PostConstruct;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import jakarta.transaction.Transactional;import lombok.RequiredArgsConstructor;import ..
QueryDSL - 동적 쿼리와 성능 최적화 조회(Builder 와 where절 사용)
·
Back-End/queryDSL
Builder사용MemberTeamDto - 조회 최적화용 DTO 추가package study.querydsl.dto;import com.querydsl.core.annotations.QueryProjection;import lombok.Data;@Datapublic class MemberTeamDto { private Long memberId; private String username; private int age; private Long teamId; private String teamName; @QueryProjection public MemberTeamDto(Long memberId, String username, int age, Long teamId, St..