소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given a string s, find the first non-repeating character in it and return its index. If it does not exist, return -1. Example 1: Input: s = "leetcode" Output: 0 Example 2: Input: s = "loveleetcode" Output: 2 Example 3: Input: s = "aabb" Output: -1 Constraints: 1 test("loveleetcode", 2), () -> test("aabb", -1) ); } private void test(String given, int expected)..
이 포스팅은 프로그래머의 뇌를 읽고 작성하였습니다. 정보가 두뇌로 들어오면 STM에 도달하기 전에 감각 기억 공간이라는 영역을 통과합니다. 감각 기억 공간은 컴퓨터에 비유하면 입력장치와 통신하는 입출력 버퍼라고 볼 수 있습니다. 주변 장치로부터 전송된 정보가 입출력 버퍼에 잠시 저장되는 것처럼 감각 공간에도 마찬가지로 시각, 청각, 촉각에 의한 정보가 잠시 저장됩니다. 그리고 각 감각에 대해 각자의 임시 저장공간이 존재합니다. 이 중 프로그래밍과 관련된 감각은 영상 기억 공간입니다. 영상 기억 공간 코드를 읽을 때 눈을 통해 정보가 들어오고 이 정보는 영상 기억 공간에 잠시 저장됩니다. 영상 기억 공간을 간단히 설명하면 어두운 곳에서 폭죽을 흔들면 그 잔상이 남아 글씨를 쓸 수 있는데 이 때 사용되는 기..
이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 여태까지 다루지 않은 매핑에 대한 문제를 다룹니다. 매퍼 구현을 피하기 위해 두 계층에서 같은 모델을 사용하는 것에 대한 논쟁이 있습니다. 두 계층 간 매핑을 하지 않으면 두 계층에서 같은 모델을 사용해야 하는데 이렇게 하면 두 계층이 강력하게 결합하게 됩니다. 반면에 두 계층 간 매핑을 따로 하게 되면 보일러플레이트 코드가 너무 많이 늘어나게 됩니다. 대부분 유스케이스들이 CRUD 작업만 수행하는 경우 계층 간에도 같은 모델을 사용하는 경우가 많아 계층 사이의 매핑이 의미가 없을 수도 있습니다. 각 매핑 전략에 따른 장단점을 알아보도록 하겠습니다. 매핑하지 않기 전략 송금하기 유스케이스를 그림..
이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 헥사고날 아키텍처에서의 테스트 전략에 대해 살펴봅니다. 테스트 피라미드 위 그림은 몇 개의, 어떤 종류의 테스트를 목표로 해야 하는지 결정하는 데 도움을 줍니다. 기본적으로 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야 합니다. 여러 개의 단위와 경계를 결합하는 테스트는 비용이 비싸지고 실행이 느려져 깨지기 쉬워집니다. 테스트 피라미드는 테스트가 비싸질 수록 커버리지를 낮게 잡아야 한다는 것을 보여줍니다. 그렇지 않으면 기능구현보다 테스트 구현에 시간이 더 오래 걸리는 배보다 배꼽이 더 큰 상황이 발생하게 됩니다. 단위 테..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II. Roman numerals are usually written largest to..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).” Example 1: Input: root ..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given the root of a binary tree, determine if it is a valid binary search tree (BST). A valid BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search tr..
이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 처음 계층적 아키텍처의 문제접을 다룰 때 모든 것이 영속성 계층에 의존하게 되어 데이터베이스 주도 설계가 된다는 점을 다룬 적이 있는데요, 의존성을 역전시키기 위해 영속성 계층을 애플리케이션 계층의 플러그인으로 만드는 방법을 살펴봅니다. 의존성 역전 애플리케이션 서비스에서는 영속성을 사용하기위해 아웃고잉 포트 인터페이스를 호출합니다. 이 포트는 영속성 작업을 수행하고 데이터베이스와 통신할 영속성 어댑터가 구현하게 됩니다. 헥사고날 아키텍처에서 영속성 어댑터는 아웃고잉 어댑터에 해당하므로 애플리케이션 계층에서 호출하고 역방향으로 어댑터가 애플리케이션을 호출할 일이 없습니다. 애플리케이션 서비스가 ..
커리어 회고(Prequel Part 1): 공대생이 되다 최근에 퇴사 및 이직이 결정되면서, 지금까지 커리어를 정리해보고 싶은 마음이 생겼습니다. 저와 비슷하신 분들도, 그렇지 않은 분들도 계시겠지만, 커리어 상승을 꿈꾸는 분들께 도움이 됐으 jaime-note.tistory.com 커리어 회고(Prequel Part 2): 노예가 되다 최근에 퇴사 및 이직이 결정되면서, 지금까지 커리어를 정리해보고 싶은 마음이 생겼습니다. 저와 비슷하신 분들도, 그렇지 않은 분들도 계시겠지만, 커리어 상승을 꿈꾸는 분들께 도움이 됐으 jaime-note.tistory.com 커리어 회고(Prequel Part 3): 노예, 좋좋소에 가다 최근에 퇴사 및 이직이 결정되면서, 지금까지 커리어를 정리해보고 싶은 마음이 생겼..
이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 웹 인터페이스를 제공하는 어댑터의 구현 방법을 살펴봅니다. 의존성 역전 웹 어댑터는 주도하는(driving) 또는 인커밍 어댑터 입니다. 외부로부터 요청을 받아 애플리케이션 코어를 호출합니다. 이 때 제어 흐름은 웹 어댑터에 있는 컨트롤러에서 애플리케이션 계층에 있는 서비스로 흐릅니다. 애플리케이션 계층은 웹 어댑터가 통신할 수 있는 포트 인터페이스인 유스케이스를 제공하고 해당 유스케이스를 구현합니다. 여기 의존성 역전 원칙이 적용된 것을 확인할 수 있습니다. 어댑터와 유스케이스 사이에 인터페이스가 존재하는 이유는 애플리케이션 코어가 외부와 통신할 수 있는 규격이기 때문입니다. 이 포트를 적절하..
- Total
- Today
- Yesterday
- Spring Boot
- spring boot jwt
- 스프링 부트
- intellij
- spring boot app
- 함께 자라기
- 스프링 부트 튜토리얼
- 알고리즘
- 스프링 부트 회원 가입
- proto3
- QueryDSL
- Spring Data JPA
- 헥사고날 아키텍처
- Spring Boot JPA
- Spring Boot Tutorial
- 함께 자라기 후기
- 클린 아키텍처
- JPA
- gRPC
- Jackson
- @ManyToOne
- 스프링 부트 애플리케이션
- Java
- 스프링부트
- spring boot application
- r
- leetcode
- Linux
- 스프링 데이터 jpa
- JSON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |