본문 바로가기 메뉴 바로가기

Jaime's 기술 블로그

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

Jaime's 기술 블로그

검색하기 폼
  • All (443)
    • IntelliJ IDEA (7)
    • SpringBoot (83)
      • Web Application 만들기 (71)
      • JWT 튜토리얼 (5)
    • Java (13)
    • JPA (32)
    • Querydsl (14)
    • gRPC (10)
    • macOS (6)
    • Docker (1)
    • Linux (5)
    • R (5)
    • Test (3)
    • ETC (11)
    • Algorithm (227)
      • LeetCode Daily Challenge (220)
    • Retrospect (4)
    • git (1)
    • Architecture (8)
    • Book (10)
      • 함께 자라기 (7)
      • 프로그래머의 뇌 (3)
    • Essay (1)
  • 방명록

All (443)
프로그래머 밈(meme) 모음

1. Java에서 c++ 사용하는 방법 2. Client의 직관을 신뢰했을 때 발생하는 일 3. "Good looks sell"은 패션과 소프트웨어에 모두 적용 됩니다. "Good looks sell"은 제품이나 서비스가 잘 보기 좋다면, 더 많은 사람들이 그것을 더 많이 구매하고 사용할 가능성이 높다는 의미입니다. 이는 제품이나 서비스가 시각적으로 매력적이고 눈에 띄는 경우, 소비자들은 더욱 관심을 가지며 제품이나 서비스의 가치를 높게 평가하기 때문입니다. 4. 코드 리뷰를 하는 동안 프로그래머의 심경 변화 5. 왜 아무도 저의 간단한 인터페이스를 이해하지 못하나요? 6. null과 0, undefined 구분하는 방법 7. 자기 성장은 과소평가 되어있다. 8. 분명히 세미콜론은 사탄에 의해 만들어졌을..

ETC 2023. 2. 27. 12:00
Optional을 파라미터로 전달하지 말자

자바 프로그래밍을 하다보면 Optional을 파라미터로 전달했을 때 컴파일러가 경고(노란줄)를 표시합니다. (IntelliJ에서는 표시해주는데 다른 IDE는 어떤지 잘 모르겠네요) 경고를 확인하기 위해 간단한 코드를 작성해보면, public void foo(String nullable) { bar(Optional.of(nullable)); } private void bar(Optional s) { // do something } 'Optional' used as type for parameter 's' 바로 이런 내용을 확인할 수 있습니다. 그렇다면 왜 Optional을 파라미터로 전달하면 안 되는 것일까요? 결론부터 말씀드리면 장점보다 단점이 많기 때문입니다. 먼저 장점으로는 전달할 당시에 별 생각 없..

Java 2023. 2. 3. 04:38
Optional에서 orElse()와 orElseGet()은 무슨 차이가 있을까?

Optional을 사용하다보면 마지막에 orElse() 또는 orElseGet()를 이용해 원래 값을 얻습니다. 그동안 저는 두 메서드의 차이가 단순히 전달해야하는 파라미터의 차이라고 생각했었습니다. 예를 들면 orElse(defaultValue), orElseGet(this::getDefaultValue) (또는 orElseGet(() -> getDefaultValue())) 이런식으로 하나는 값을 전달하고 하나는 구현체를 전달하기 때문에 그냥 적절하게 사용하면 되겠다는 정도로만 생각했었습니다. 그러던 중 테스트 클래스를 작성하다가 mocking을 사용하였는데 정상적으로 동작하지 않았습니다. 본문과 크게 관련 없는 내용(어떤 테스트가 동작하지 않았는지)이라 접어두겠습니다. 테스트 할 클래스는 Servi..

Java 2023. 2. 1. 10:30
I/O는 더 이상 Bottleneck이 아니다

흥미로운 글이 있어 공유합니다. 원글은 여기서 확인할 수 있습니다. 프로그래머를 인터뷰할 때 텍스트 파일에서 단어 빈도를 세는 간단한 프로그램을 코딩하도록 요청합니다. 많은 기술을 테스트하고 몇 가지 후속 질문을 통해 놀라울 정도로 깊이 들어갈 수 있는 좋은 문제입니다. 후속 질문 중 하나는 "귀하의 프로그램에서 성능 병목 현상이 무엇입니까?"입니다. 대부분의 사람들은 "입력 파일에서 읽기"와 같은 말을 합니다. 실제로 성능을 측정해보기 전까지는 모두 같은 생각일 것입니다. 우리 모두 I/O는 느리다고 배웠기 때문입니다. 하지만 더 이상 I/O는 10년전, 20년전만큼 느리지 않습니다. 디스크에서 파일을 순차적으로 읽는 것은 매우 빠르기 때문입니다. 어떤 기기로, 방법으로 테스트했는지는 이 글에서 크게 ..

ETC 2022. 12. 7. 10:30
188. Best Time to Buy and Sell Stock IV

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem You are given an integer array prices where prices[i] is the price of a given stock on the ith day, and an integer k. Find the maximum profit you can achieve. You may complete at most k transactions. Note: You may not engage in multiple transactions simultaneously (i.e., you must sell the stock before you buy again). Example 1: Input: k = 2, prices = [2,4,1] ..

Algorithm/LeetCode Daily Challenge 2022. 9. 13. 12:00
JPA @Where 애너테이션

DB에서 물리적으로 데이터를 지우는 것이 아니라 논리적으로 삭제하는 방법이 있습니다. 많이 사용하는 방법 중 하나가 바로 삭제 여부를 판단하는 컬럼을 사용하는 것인데요, 삭제 된 날짜가 존재하면 정확한 삭제 시기를 알 수 있으므로 deleted_at과 같은 컬럼을 사용할 수 있습니다. 하지만 이런 컬럼이 존재할 경우 정상 데이터를 조회하기 위한 모든 쿼리에 where deleted_at is null과 같은 조건절이 필요합니다. 이럴 때 @Where 애너테이션을 활용하면 간단히 해결할 수 있습니다. 먼저 BaseEntity를 생성해줍니다. package io.lcalmsky.wheredemo; import java.time.LocalDateTime; import javax.persistence.Colum..

JPA 2022. 9. 12. 12:00
1996. The Number of Weak Characters in the Game

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem You are playing a game that contains multiple characters, and each of the characters has two main properties: attack and defense. You are given a 2D integer array properties where properties[i] = [attacki, defensei] represents the properties of the ith character in the game. A character is said to be weak if any other character has both attack and defense lev..

Algorithm/LeetCode Daily Challenge 2022. 9. 11. 12:00
94. Binary Tree Inorder Traversal

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given the root of a binary tree, return the inorder traversal of its nodes' values. Example 1: Input: root = [1,null,2,3] Output: [1,3,2] Example 2: Input: root = [] Output: [] Example 3: Input: root = [1] Output: [1] Constraints: The number of nodes in the tree is in the range [0, 100]. -100 3 순으로, inorder의 경우 1 -> 2 -> 3 순으로, postorder의 경우 1 -> 3 -> 2 순으로 재..

Algorithm/LeetCode Daily Challenge 2022. 9. 10. 12:00
144. Binary Tree Preorder Traversal

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given the root of a binary tree, return the preorder traversal of its nodes' values. Example 1: Input: root = [1,null,2,3] Output: [1,2,3] Example 2: Input: root = [] Output: [] Example 3: Input: root = [1] Output: [1] Constraints: The number of nodes in the tree is in the range [0, 100]. -100

Algorithm/LeetCode Daily Challenge 2022. 9. 9. 12:30
814. Binary Tree Pruning

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given the root of a binary tree, return the same tree where every subtree (of the given tree) not containing a 1 has been removed. A subtree of a node node is node plus every node that is a descendant of node. Example 1: Input: root = [1,null,0,0,1] Output: [1,null,0,null,1] Explanation: Only the red nodes satisfy the property "every subtree not containing a ..

Algorithm/LeetCode Daily Challenge 2022. 9. 8. 12:00
이전 1 2 3 4 ··· 45 다음
이전 다음
공지사항
최근에 올라온 글
  • 프로그래머 밈(meme) 모음
  • Optional을 파라미터로 전달하지 말자
  • Optional에서 orElse()와 orElse⋯
  • I/O는 더 이상 Bottleneck이 아니다
최근에 달린 댓글
  • 안녕하세요! 알림설정까지 잘 왔습니다. 헌데 알림이라⋯
  • 안녕하세요, 쭈욱 보다가 질문이생겼습니다. 로그인 할때⋯
  • Form과 Entity의 차이를 질문하신 게 맞을까요?⋯
  • 컨트롤러에서 리턴 값이 String이고 RestCont⋯
Total
202,025
Today
462
Yesterday
517
링크
  • github
TAG
  • JSON
  • @ManyToOne
  • Spring Boot JPA
  • 함께 자라기 후기
  • r
  • spring boot app
  • 알고리즘
  • 스프링 부트 튜토리얼
  • spring boot application
  • Spring Boot Tutorial
  • spring boot jwt
  • intellij
  • proto3
  • 스프링 데이터 jpa
  • 스프링 부트
  • 스프링부트
  • 클린 아키텍처
  • Linux
  • Spring Boot
  • Jackson
  • 헥사고날 아키텍처
  • Spring Data JPA
  • gRPC
  • Java
  • 함께 자라기
  • leetcode
  • JPA
  • QueryDSL
  • 스프링 부트 회원 가입
  • 스프링 부트 애플리케이션
more
«   2023/03   »
일 월 화 수 목 금 토
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
글 보관함
  • 2023/02 (3)
  • 2022/12 (1)
  • 2022/09 (13)
  • 2022/08 (31)

Blog is powered by Tistory / Designed by Tistory

티스토리툴바