Overview 개인정보 보호 등을 위해 컬럼을 암호화하는 경우가 있습니다. JPA 사용이 너무나도 당연해진 요즘, 암호화 필드를 검색하기 위해서는 where절에 평문을 비교해야 할까요? 아니면 암호화 된 값을 비교해야 할까요? 뭔가 당연히 이거 겠지! 싶었던 건데 막상 답을 하려니 헷갈리시죠? 확인하기 위해 테스트를 해보았습니다. AES256 등의 알고리즘을 이용해 개인을 특정할 수 있는 항목을 암호화하게 되는데, salt를 사용하면 암호가 계속 바뀌게 되기 때문에 검색이 어려워집니다. 따라서 여기서는 고정된 IV를 사용해 암호화를 하더라도 항상 같은 값을 이용하도록 설정하였습니다. Implementation 앞서 언급했듯이 JPA를 이용해야하기 때문에 spring boot 프로젝트를 생성하였습니다. ..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem A car travels from a starting position to a destination which is target miles east of the starting position. There are gas stations along the way. The gas stations are represented as an array stations where stations[i] = [positioni, fueli] indicates that the ith gas station is positioni miles east of the starting position and has fueli liters of gas. The car ..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem You are given an integer array arr. You can choose a set of integers and remove all the occurrences of these integers in the array. Return the minimum size of the set so that at least half of the integers of the array are removed. Example 1: Input: arr = [3,3,3,3,5,5,5,2,2,7] Output: 2 Explanation: Choosing {3,7} will make the new array [5,5,5,2,2] which has ..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem International Morse Code defines a standard encoding where each letter is mapped to a series of dots and dashes, as follows: 'a' maps to ".-", 'b' maps to "-...", 'c' maps to "-.-.", and so on. For convenience, the full table for the 26 letters of the English alphabet is given below: [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. 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 ..
- Total
- Today
- Yesterday
- 스프링 부트
- 함께 자라기
- intellij
- gRPC
- spring boot jwt
- Spring Boot
- JSON
- Spring Boot Tutorial
- spring boot app
- Java
- 스프링 부트 회원 가입
- 스프링부트
- 클린 아키텍처
- @ManyToOne
- 헥사고날 아키텍처
- 스프링 부트 튜토리얼
- leetcode
- Linux
- 함께 자라기 후기
- r
- 스프링 부트 애플리케이션
- QueryDSL
- 알고리즘
- Spring Boot JPA
- proto3
- JPA
- Spring Data JPA
- Jackson
- 스프링 데이터 jpa
- spring boot application
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |