Hoo, I am

junior_datalist

  • 분류 전체보기 (344)
    • Backend (96)
      • ☕️ Java (32)
      • 🌿 Spring (35)
      • 🩵 Go (7)
      • 🔗 Kafka (3)
      • 🐍 Python (17)
    • Frontend (27)
      • React (9)
      • JS (18)
    • 🌐 Web (13)
    • ☁️ Cloud (10)
      • ⚓️ Kubernetes (0)
    • 💡Database (1)
    • 📔 TIL (98)
    • 📚 Book (6)
      • Core Javascript (2)
      • 데이터 중심 애플리케이션 설계 (3)
    • 🔱 Algorithm (53)
      • DP (7)
      • BFS DFS (3)
      • Greedy (7)
      • Back tracking (2)
      • Else (18)
    • 🤿 숨참고 Deep Dive (3)
    • 📝기록 (20)
      • 후기 (3)
07-24 20:23
  • 홈
  • 태그
  • 방명록
로그인
로그아웃 글쓰기 관리

junior_datalist

컨텐츠 검색

태그

어드바이드 기억보단기록을 스프링부트3 파티션할당전략 리눅스 디렉토리 삭제 null 병합 연산자 데이터중심애플리케이션설계 자바스크립트 map 객체 npm맥윈도우 포인트컷 백준 2346 JavaAppletPlugin Nullish Coalescing Operator 커밋되돌리기 회고 로또의최고순위와최저순위 파이썬 query parameter string 글또 gitreset 모든개발자를위한http웹기본지식

최근글

댓글

공지사항

  • About me

아카이브

Backend(96)

  • [Kafka] Avro 알아보기

    서론 데이터를 파일에 쓰거나 네트워크를 통해 전송하려면 바이트열 형태로 encoding 작업이 필요하다. 인메모리 표현에서 바이트열로 전환하는 작업을 인코딩(encoding, 부호화, serializing) 이라 하며, 그 반대를 디코딩(decoding, 복호화, deserializing) 이라 한다. Binary Encoding 여러 인코딩 방법이 존재하지만 우선 이진 부호화 방식을 살펴보자. 이진 부호화는 데이터를 이진 숫자(0, 1)로 표현하는 과정을 의미한다. 데이터를 이진 형태로 표현하기 때문에 JSON, XML 같은 부호화 방법보다 효율적인 데이터 저장 및 전송이 가능하다. 가독성이 뛰어난 JSON 방식보다 읽기는 어렵겠지만 대규모 데이터셋을 저장해야 하는 상황이라면 이진 부호화가 좋은 선택이..

    2024.03.04
  • 운영중인 서비스 스프링부트 3 업그레이드

    목차 0. JDK 1. javax -> jakarta 2. querydsl 3. spring security 현재 Tidify iOS 앱을 운영 중이다. 서버는 스프링부트 2.7.8 버전을 사용 중이었는데 연휴기간 동안 버전업을 진행했다. 버전업을 진행하면서 다양한 벽(?)에 부딪혔는데 그 과정을 하나하나 풀어보겠다. 스프링부트 3 에는 다양한 라이브러리가 추가됐지만 다음의 큰 특징이 있다. Java17과 Java19 지원 (Java 21 도 추가) GraalVM 지원 Spring framework 6.0 기반 0. jdk 스프링부트 3은 java17 을 기반으로 작성됐기 때문에 17 미만의 JDK는 지원하지 않는다. 기존에도 jdk 는 java 17 을 사용하고 있었기에 별도로 jdk 업데이트는 하지 ..

    2024.02.19
  • [Java] 1급 컬렉션으로 리팩토링

    목차 서론 배경 설명 및 요구사항 Before Refactoring 일급 컬렉션이란? After Refactoring 일급 컬렉션 사용시 이점 요약 및 결론 서론 일급 컬렉션의 개념을 모호하게 알고 있었는데, 이번 기능 개발을 통해 일급 컬렉션을 사용해야 이유와 사용 후 코드 응집력이 높아지는 것을 직접 경험한 내용을 공유합니다. 배경 설명 및 요구사항 호텔 도메인의 백오피스를 개발하고 있다. 호텔에 등록된 객실을 한눈에 볼 수 있는 페이지에서 객실의 순서를 클릭-드래그하여 변경할 수 있는 기능이 개발 사항이었다. 검은 박스로 표시된 두 객실의 순서를 변경하는 것으로 인접한 객실의 순서 뿐만 아니라 인접하지 않은 객실의 순서도 드래그로 변경할 수 있어야 했다. 추가로 아래 이미지의 검은 박스로 표시된 요..

    2024.02.02
  • 예시를 통한 Go 객체 생성 이해하기

    목표 Go의 struct 이해 struct의 method 이해 method 와 function 의 차이 이해 구조체(Struct ) 란? Go 언어의 struct는 데이터를 묶는 데 사용되는 자료형 입니다. struct는 다양한 데이터 타입의 필드를 묶어 하나의 레코드로 만들 수 있습니다. 이를 통해 관련 있는 데이터를 논리적으로 그룹화하고 구조화할 수 있습니다. 구조체 정의 구조체(struct)는 다음과 같이 정의할 수 있습니다. type 타입명 struct { 필드명 타입 ... 필드명 타입 } 초기화 아래 예시코드는 Account 구조체를 Owner(계좌주)와 Balance(잔액) 필드와 함께 정의했습니다. 구조체로 변수를 생성할 때 필드 순서로 초기값을 대입하거나, 필드명을 지정하여 초기화 할 수..

    2024.01.25
  • [Golang] new, make, pointer 탐구

    목차 1. new 키워드 2. 틈새 포인터 설명 3. 키워드 4. 요약 Go 언어의 new 와 make 는 새로운 데이터 구조를 생성한다는 공통점이 있지만 적용할 상황과 대상이 다른다. 둘의 공통점과 차이점을 비교하여 어느 상황에 적합하게 사용할 수 있는지 알아보고, 더불어 알게된 포인터 지식도 같이 정리해본다. new 키워드 사용 목적 new 는 주로 기본 데이터 타입(원시 타입)의 포인터를 할당할 때 사용된다. 즉 새로운 인스턴스를 할당하고 해당 인스턴스의 포인터를 반환한다. new 는 메모리 할당 후 제로값으로 초기화된 포인터를 반환하며, new 로 생성된 값은 0 또는 nil 값으로 초기화 된다. var k *int k = new(int) fmt.Println("k: ", k, " *k: ", *..

    2024.01.07
  • [Java] LocalDateTime toString() 00초 일 때 발생한 문제

    문제 상황 알림 메시지 테스트 중 발견한 문제. 가장 최근도착한 알림의 활동 시간(ex. n초 전, n시간 전)이 업데이트되지 않는 현상을 발견했다. 앱을 껐다 켜도 여전히 가장 최신 알림의 0초 전은 변하지 않았다. 곧바로 해당 알림이 적재된 테이블을 확인했다. 해당 시간은 테이블의 데이터가 생성되는 순간(created_date) 를 기준으로 표시된다. 위의 하이라이트 된 부분이 문제의 알림 데이터다. 해당 데이터베이스는 mysql 을 사용중이고 created_date 컬럼은 datetime 타입이다. 솔직히 해당 데이터의 초단위(00)를 보자마자 느낌이 싸했다. 설마.. 해당 데이터가 api response 로는 어떤 형태로 나가는지 확인하면, 대충 아래 이미지다. 초가 생략된 문자열이 나가기 때문에..

    2024.01.05
  • [Kafka 에러] LEADER_NOT_AVAILABLE

    상황 카프카 클러스터 구축 중 발생한 에러. 도커 컴포즈를 활용해 브로커 3대, 주키퍼 1대 조합으로 카프카 클러스터를 구성했다. 브로커 내부에서 kafka-console-producer 로 topic 에 메시지를 발행했는데 에러가 발생했다. 에러 메시지 WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient) 원인과 해결 메시지를 발행하고자 한 토픽이 아직 생성되지 않았기 때문에 발생한 에러였다. 도커 컴포즈 yml 작성 시 아래 옵션을 true 로 설정하면 토픽이 자..

    2024.01.04
  • [Java] 안전하게 파일 삭제하기

    목차 1. File.delete() 2. Files.delete() 3. 해당 파일이 존재하는 디렉토리(폴더)까지 모두 삭제 자바에서 메모리에 존재하는 파일을 삭제하는 방법을 알아보자. 안전하게 파일을 삭제하고 해당 파일이 존재하는 폴더 내부를 모두 삭제하는 방법까지 알아보겠다. 1. File.delete() 가장 간단하게 File 클래스에 존재하는 delete method 를 직접 호출하는 방법이 있다. File 인스턴스에서 직접 delete() 를 호출하는 방법이다. public class SimpleTest { @Test public void FILE_SIMPLE_DELETE() { File file = new File("./test"); file.delete(); } } 해당 delete() 메서..

    2023.12.22
  • [Spring] @Async 비동기 동작 원리 파헤치기

    목차 - 서론 - @EnableAsync 동작원리 - @Async 동작원리 - 결론 실습 환경 - Java 17 - Springboot 3.2.0 서론 실무에서 비동기 처리를 위해 CompletableFuture 클래스를 사용했다. 잘 동작하는 것을 확인했지만 문득 @Async 어노테이션을 이용하면 더 편리하지 않을까 하는 생각과 @Async는 어떤 원리로 비동기를 처리하는지 궁금해졌다. @Async 내부 동작을 디버깅 한 결과 결국 @Async 역시 CompletableFuture을 사용하고 있었다. 이 글에서는 스프링부트에서 @Async 어노테이션이 붙은 메서드가 어떻게 비동기로 처리되는지와 더불어 @EnableAsync 가 어떻게 동작하는지를 다뤄보겠다. @EnableAsync 동작원리 @Enabl..

    2023.12.21
1 2 3 4 5 ··· 11
Github LinkedIn
© Huge Hoo

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.