IntelliJ 자주 쓰는 단축키 정리

자주 쓰일법한 단축키를 정리해봤다. 생각보다 유용한 context 제시 기능이 많다. Super + K Git commit Super + Shift + K Git push Alt + Return context 제안 보기 (class import, 오타 수정 등등) Super + E 가장 최근에 봤던 파일들 Super + Shift + Return 문장 완성 Super + Alt + V 타입 변형 (Optional 호출 …
IntelliJ 자주 쓰는 단축키 정리 더보기

테스트 코드의 작성법 assert

테스트코드 개발된 코드가 예상된 결과값을 내놓는가에 대한 시험 TDD 테스트를 먼저 만들고 구현체를 개발하는 방법 테스트 주도 개발 관례 src 아래 test라는 폴더 아래로 프로젝트와 같은 패키지 구조를 가짐. 테스트하고자 하는 클래스의 끝에 Test라고 붙이는 것이 관례 메소드를 명시하고 @Test 어노테이션을 붙임. junit Assertions사용법 (예시) 결과값 result가 기대값 member를 만족하면 테스트 코드를 통과한다. assertj Assertions …
테스트 코드의 작성법 assert 더보기

스프링 부트; 훑어보기#1

시작하기 전에 사족 나의 스프링 역사는 작년 이맘때쯤 시작됐다. (2020년 2월) 백엔드 개발자가 되기 위해 호기롭게 한권의 책으로 시작했으나 당시 나한텐 자바 언어를 떠나서 OOP에 대한 지식이 없었다. 세상에 프로그래밍을 위한 책이 모두 완벽하면 좋겠으나 다른 분야의 책들도 정오표를 내는 마당에 사전 지식없이 오류에 부딪히기엔 너무 버거웠다. 책 앞부분 부터 예제의 오류로 대부분의 시간을 보내다가 …
스프링 부트; 훑어보기#1 더보기

파이썬의 정렬과 힙 #1

python의 sort 커스텀 정렬의 기준이 되는 가중치를 key 필드로 임의 지정할 수 있다. 원소가 이터러블일때 모두 사용가능하다. 가중치를 자유롭게 지정할 수 있다. is_prime 구현 소수 구하기 heapq, deque 짧은 정리 이진트리기반의 heapq와 연결리스트 기반의 데크는 원소를 추가하고 삭제하는 것이 배열보다 비용이 적다. heqpq : 우선순위 큐 deque : 양 끝단에서 데이터를 넣고 뺄 수 있는 …
파이썬의 정렬과 힙 #1 더보기

스프링5; AOP의 실제 #2

이전 글 execution 패턴 표현식 execution(public void set*(..)) : 반환형이 void이고, 메소드 이름의 set으로 시작하고 인자가 0개 이상인 메소드를 호출한다. executation(* dto.*.*()) : dto 패키지 탕비에 속한 인자가 없는 모든 메소드를 호출한다. executation(* dto..*.*(..)) : dto 패키지 및 하위 패키지에 있고 인자가 0개 이상인 메소드를 호출한다. execution(Long dto.StudentRepository.getAge(..)) : 반환형이 Long인 StudentRepository 타입의 getAge() 메소드를 …
스프링5; AOP의 실제 #2 더보기

스프링5; AOP의 실제 #1

스프링에서 프록시 패턴을 어떻게 적용시키는지 실제로 스프링을 통해 적용해본다. proxy 패턴은 decorator 객체 로도 활용할 수 있다. 기능 추가와 확장에 초점이 맞춰져있다. 짤막한 프록시의 핵심 프록시의 특징은 핵심 기능은 구현하지 않는다는 점이다. 프록시는 핵심 기능을 구현하지 않는 대신 여러 객체에 공통으로 적용할 수 있는 기능을 구현한다. AOP의 기본 핵심은 공통 기능을 삽입하는 것 이다. AOP의 …
스프링5; AOP의 실제 #1 더보기

1차 중간점검

오늘 한 것 쿼리큘럼 중간 점검 의식의 흐름대로 대화 정리 1) 스프링5 초보 개발자를 위한 스프링5 입문 – 가메출판사 스프링5의 코어 부분은 거의 마무리 됐음 (DI, Bean, AOP, Component scan, 자동 주입..) 스프링 DB나 MVC는 설정 지옥임. 특히 DB는 지금 봐도 이해도 안 될 것임. 그래서 스프링 부트로 넘어가서 속도를 내는 것을 추천함 김영한 스프링 입문 – 말랑말랑해서 스프링 부트에 대해 훑어보기 …
1차 중간점검 더보기

알고리즘; 해싱 #2, 스택, 정렬

2월 4일 목요일 알고리즘 스터디에서 진행한 프로그래머스 문제 풀이다. 브레인스토밍과 채점이 끝나고 다른사람의 코드 보기를 보면 파이써닉한 코드가 많은데 그렇게까지 해야 할 필요가 있나 싶다.. 프로그래머스 해시 #3 코드 및 알고리즘 해설 같은 카테고리로 dictionary를 만든다 dictionary key의 길이를 구한다 (총 카테고리의 개수) n개의 카테고리중 1개만 입는 경우를 구한다 → 각 카테고리의 원소 개수를 전부 …
알고리즘; 해싱 #2, 스택, 정렬 더보기

스프링5; Prototype 범위

Prototype 스프링 컨테이너는 기본적으로 bean객체를 생성 할 떄 싱글톤으로 생성한다. 그러나 여러개의 인스턴스가 필요한 경우 prototype으로 scope를 지정하면 된다. 프로토타입 범위 지정 bean설정에서 scope에 속성으로 지정하면 된다. 아래 코드 참고. 그리고 아래 코드를 실행 하면 false가 반환된다. 프로토타입 주의사항 프로토타입 범위를 갖는 bean은 완전한 라이프사이클을 따르지 ㅇ낳는다. 컨테이너 생성시 초기화 작업까지는 하지만 컨테이너 를 소멸하는 …
스프링5; Prototype 범위 더보기

스프링5; Bean 라이프사이클

Bean Lifecycle 스프링 컨테이너를 초기화하고 종료할 때는 다음 작업을 수행한다. 컨테이너 초기화 → bean 객체의 생성, 의존 주입, 초기화 컨테이너 종료 → bean 객체의 소멸 초기화와 소멸의 bean 인터페이스 InitializingBean bean객체가 생성 된 뒤 InitializingBean 클래스의 afterPropertiesSet() 메소드가 호출된다. 초기화 직후 필요한 작업이 있다면 이 클래스를 구현하면 된다. DisposableBean bean객체가 소멸할때 close()로 호출하는데 이 호출되는 …
스프링5; Bean 라이프사이클 더보기