profile
백엔드 개발자 입니다
post-thumbnail

해싱

해시(hash)는 컴퓨터 공학에서 매우 근본이 되는 알고리즘 중 하나이미 여러 번 본 해시 알고리즘의 용도 \- 해시 테이블에서 데이터를 저장할 위치를 찾기 위해 \- 길이가 긴 데이터 둘을 빨리 비교하기 위해(단, 다른 경우만 빨리 비교 가능) \- 누출되면 곤

2023년 4월 4일
·
0개의 댓글
·

6. 스트림으로 데이터 수집

컬렉터로 스트림의 모든 항목을 하나의 결과로 합칠 수 있다.스트림에 있는 객체의 숫자 필드의 합계나 평균 등을 반환하는 연산에도 리듀싱 기능이 자주 사용된다.joining 메서드는 내부적으로 StringBuilder를 이용해서 문자열을 하나로 만든다.이전에 살펴봤던 모

2023년 4월 3일
·
0개의 댓글
·
post-thumbnail

정렬 알고리즘

목록 안에 저장된 요소들을 특정한 순서대로 재배치하는 알고리즘정렬을 하는 이유 \- 좀 더 효율적인 알고리즘을 사용하기 위해사람이 읽기 편하도록 등등입력 데이터는 일반적으로 배열 같은 데이터 구조에 저장 \- 아무 위치로 임의 접근을 허용연결 리스트를 사용하면 처음

2023년 4월 2일
·
0개의 댓글
·

8. 통합 테스트를 하는 이유

단위 테스트가 아닌 모든 테스트가 통합 테스트에 해당된다. 단위 테스트는 도메인 모델을 다루는 반면, 통합 테스트는 프로세스 외부 의존성과 도메인 모델을 연결하는 코드를 확인한다. 단위 테스트로 가능한 한 많이 비즈니스 시나리오 예외 상황을 확인하고, 통합 테스트는 주

2023년 2월 15일
·
0개의 댓글
·
post-thumbnail

7. 가치 있는 단위 테스트를 위한 리팩터링

도메인 모델과 알고리즘간단한 코드컨트롤러지나치게 복잡한 코드도메인 모델 및 알고리즘을 단위 테스트하면 노력 대비 가장 이롭다. 컨트롤러의 경우, 포괄적인 통합 테스트의 일부로서 간단히 테스트해야 한다.코드가 더 중요해지거나 복잡해질수록 협력자는 더 적어야 한다.지나치게

2023년 2월 11일
·
0개의 댓글
·

6. 단위 테스트 스타일

출력 기반 테스트(output-based testing)상태 기반 테스트(state-based testing)통신 기반 테스트(communication-based testing)테스트 대상 시스템(SUT)에 입력을 넣고 생성되는 출력을 점검하는 방식이다. 출력 기반 단

2023년 2월 8일
·
0개의 댓글
·

5. 목과 테스트 취약성

목은 외부로 나가는 상호 작용을 모방하고 검사하는 데 도움이 된다. 이러한 상호 작용은 SUT가 상태를 변경하기 위한 의존성을 호출하는 것에 해당한다.스텁은 내부로 들어오는 상호 작용을 모방하는 데 도움이 된다. 이러한 상호 작용은 SUT가 입력 데이터를 얻기 위한 의

2023년 2월 6일
·
0개의 댓글
·

4. 좋은 단위 테스트의 4대 요소

회귀 방지리팩터링 내성빠른 피드백유지 보수성회귀는 소프트웨어 버그다. 코드를 수정한 후 (일반적으로 새 기능을 출시한 후) 기능이 의도한 대로 작동하지 않는 경우다. 회귀 방지 지표에 대한 테스트 점수가 얼마나 잘 나오는지 평가하려면 다음 사항을 고려해야한다.테스트 중

2023년 2월 4일
·
0개의 댓글
·

3. 단위 테스트 구조

준비 구절에서는 테스트 대상 시스템(SUT, System Under Test)과 해당 의존성을 원하는 상태로 만든다.실행 구절에서는 SUT에서 메서드를 호출하고 준비된 의존성을 전달하며(출력이 있으면) 출력 값을 캡처한다.검증 구절에서는 결과를 검증한다. 결과는 반환

2023년 2월 4일
·
0개의 댓글
·

2. 단위 테스트란 무엇인가

2.1 '단위 테스트'의 정의 작은 코드 조각을 검증 빠르게 수행 격리된 방식으로 처리하는 자동화된 테스트 2.1.1 단위 테스트의 고전파와 런던파 세번째 속성인 격리 문제의 차이가 고전파와 런던파를 구분할 수 있게 해주는 근원 격리 문제에 대한 런던파의 접근 테스트

2023년 2월 4일
·
0개의 댓글
·

1. 단위 테스트의 목표

단위 테스트의 목표는 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는것이다.지속성과 확장성이 핵심이며, 이를 통해 장기적으로 개발 속도를 유지할 수 있다.코드를 단위 테스트하기 어렵다면 코드 개선이 반드시 필요하다는것을 의미한다.테스트는 안전망 역할을 하며, 대

2023년 1월 30일
·
0개의 댓글
·
post-thumbnail

옵저버 (Observer) 패턴

옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 극 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-mnay) 의존성을 정의합니다.위 그림의 구조를 살펴보면 옵저버 패턴은 크게 Subject와

2022년 12월 21일
·
0개의 댓글
·
post-thumbnail

메멘토 (Memento) 패턴

메멘토(Memento) 패턴은 어떠한 객체 내부의 상태를 외부에 저장해놓고 저장된 정보를 복원하고 싶을때 사용되는 패턴입니다. 이 패턴의 가장 큰 특징은 어떤 객체의 상태를 밖에 저장을 하려면 일반적으로 객체의 상태가 온전히 다 노출이 되야합니다. 그런데 캡슐화를 유지

2022년 12월 20일
·
0개의 댓글
·
post-thumbnail

중재자 (Mediator) 패턴

중재자(Mediator) 패턴은 여러 객체들 간의 의사소통하는 방법을 추상화시켜서 여러 객채들 간의 결합도를 낮추는 방법입니다. 위 그림의 구조를 살펴보면 중재자역할을 하는 Mediator인터페이스가 있고 모든 Colleague들은 Mediator라는 인터페이스를 참조

2022년 12월 19일
·
0개의 댓글
·
post-thumbnail

이터레이터 (Iterator) 패턴

이터레이터(Iterator) 패턴은 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 줍니다.위 그림을 통해 구조를 살펴보면 Client가 사용할 Iterator 인터페이스가 정의되어 있습니다. 이 I

2022년 12월 18일
·
0개의 댓글
·
post-thumbnail

인터프리터 (Interpreter) 패턴

인터프리터라는 용어는 ComputerScience에서 주로 사람이 작성한코드를 기계가 이해하기 쉬운형태로 변환해주는 장치를 뜻하는데 ComputerScience외적으로는 통역하는 사람들, 연주하는 사람들을 뜻합니다. 원본이 되는 무언가를 다른형태로 바꿔주는데 가령 연주

2022년 12월 17일
·
0개의 댓글
·
post-thumbnail

커맨드 (Command) 패턴

요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수도 있습니다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원합니다.위 그림으로 커맨드 패턴의 구성요소를 살펴보면 Invoker가 Co

2022년 12월 16일
·
0개의 댓글
·
post-thumbnail

책임 연쇄 패턴 (Chain-of-Responsibility) 패턴

책임 연쇄 패턴은 영어로 Chain-of-Responsibility라고하는데 각각의 인스턴스의 책임들이 체인처럼 연쇄되어 있다는 뜻입니다. 요청을 보내는쪽과 요청을 처리하는 쪽을 분리시키는 패턴인데 요청을 보내는 쪽에서 그 요청을 처리하는 핸들러가 어떤 구체적인 타입인

2022년 12월 15일
·
0개의 댓글
·
post-thumbnail

프록시 (Proxy) 패턴

특정한 객체의 operation을 접근하기 전에 Proxy객체를 경유하여 접근하는 패턴입니다. Proxy는 사전적인 의미로 대리, 대리인이라는 뜻이 있습니다. 그래서 Client가 원래 사용하려고하는 객체를 직접 접근하는 것이 아니라 대리인인 Proxy객체를 거쳐서 쓰

2022년 12월 14일
·
0개의 댓글
·

플라이웨이트 (Flyweight) 패턴

1. 패턴 소개 애플리케이션에 굉장히 많은 인스턴스를 만드는 경우에 주로 쓰이는 패턴입니다. 많은 인스턴스를 생성하면 메모리사용을 많이 하게 되기때문에 Out of Memory가 발생하거나 메모리가 부족해지는 현상이 발생합니다. 하지만 플라이웨이트 패턴을 적용하면 공통

2022년 12월 14일
·
0개의 댓글
·