개발하는 히포
close
프로필 배경
프로필 로고

개발하는 히포

  • 분류 전체보기 (14)
    • 공지사항 (1)
    • Java & Kotlin (2)
    • Spring (6)
    • Server (0)
    • Database (1)
    • Network (1)
    • 공부방 (3)
  • 홈
  • 태그
  • 방명록
[Java] Future, Callable의 활용

[Java] Future, Callable의 활용

비동기 프로그래밍, 멀티스레드에 활용되는 Future, Callable에 대해 알아보고자 한다. 이는 기존 스레드 모델의 근본적인 한계를 해결하기 위해 등장하였다.Runnable의 불편함public interface Runnable { void run();}반환 값이 없다: run() 메서드는 반환 값을 가지지 않는다. 즉, 스레드의 실행 결과를 직접 받을 수 없다.예외 처리: run() 메서드는 체크 예외를 던질 수 없다. 체크 예외의 처리는 메서드 내부 에서 처리해야 한다.Runnable이란?더보기Runnable은 별도의 스레드에서 수행할 작업의 로직을 정의하는 인터페이스이다. 스레드가 실행할 코드 블록을 캡슐화한다고 보면 된다.// 스레드에서 실행할 작업을 정의Runnable task = ne..

  • format_list_bulleted Java & Kotlin
  • · 2025. 6. 3.
  • textsms
[Spring] Transaction / AOP Proxy (Self-Invocation 문제)

[Spring] Transaction / AOP Proxy (Self-Invocation 문제)

@TransactionalSpringBoot로 프로젝트를 해본 사람이라면 한 번쯤은 이 어노테이션을 써봤을 것이다. 이 기능은 메서드나 클래스에 적용하면 해당 메서드 혹은 클래스 내의 메서드들이 하나의 트랜잭션으로 묶인다.즉, @Transactional은 스프링 프레임워크에서 데이터의 일관성을 보장하고 트랜잭션을 효과적으로 관리하기 위한 중요한 도구이다.AOP(Aspect Oriented Programming)AOP는 관점 지향 프로그래밍이라고도 하며, 애플리케이션의 핵심적인 기능에서 로깅, 트랜잭션, 보안 등 공통 관심사를 비즈니스 로직에서 분리하여 객체로 관리한다. 이를 통해 코드의 가독성, 유지보수성, 재사용성을 높인다. Aspect: 부가기능 모듈. 여기서 부가기능이란 로깅, 트랜잭션, 보안 등과..

  • format_list_bulleted Spring
  • · 2025. 5. 25.
  • textsms
[Java] Executor Thread Pool 관리

[Java] Executor Thread Pool 관리

간단하게 ThreadPoolExecutor에 대해 설명하자면, ThreadPoolExecutor는 싱글스레드 환경을 멀티스레드 환경으로 전환하여 활용할 수 있는 프레임워크이다. ThreadPoolExecutor는 Java의 동시성 프레임워크인 java.util.concurrent 패키지의 핵심 클래스로 스레드 풀을 생성하고 관리하여 애플리케이션의 성능과 자원 활용을 최적화한다. 일반적으로 ThreadPoolExecutor의 생성자를 만들 때 아래와 같은 속성들을 볼 수 있다.import java.util.concurrent.*;public class ThreadPoolExecutorExample { public static void main(String[] args) { // 스레드 풀..

  • format_list_bulleted Java & Kotlin
  • · 2025. 5. 21.
  • textsms
[Network] HTTPS 통신 (SSL/TLS)

[Network] HTTPS 통신 (SSL/TLS)

학부과정에서부터 SSL, TLS, HTTPS, HTTP에 대해서 무지 많이 들어왔었을 것이다.나 역시 마찬가지였었고, 회사에서 R&D 프로젝트의 프로토타입이 완성되어 도메인과 HTTPS 인증서를 갱신해주어야 하는 업무가 있었다.Q. HTTP와 HTTPS의 차이점이 뭔가요? A. HTTP는 평문으로 데이터를 주고받아 보안 위험성이 존재하여 그걸 암호화 한것입니다....? 나의 지식 밑바닥을 보여준 답변이 아닐까싶다. 이번 기회에 제대로 한 번 알아보고자 한다. 먼저, SSL/TLS는 인터넷 통신의 보안을 위한 암호화 프로토콜이다.SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신에서 데이터를 안전하게 주고받기 위한 기술이다. TLS는 SSL..

  • format_list_bulleted Network
  • · 2025. 4. 28.
  • textsms
[Database] MySQL 문자열 대소문자 구분

[Database] MySQL 문자열 대소문자 구분

사용자의 검색 키워드와 그에 따른 결과를 보기 위해서 검색 기능을 개발하는 중 이상한 점을 발견했다. 검색 키워드를 넣고 검색을 하게 되면 아래와 같이 대소문자가 구분이 되지 않는 상태로 결과가 조회된다. MySQL 세팅 시, 대소문자 구분하지 않는 설정을 안했는데 왜 'apple'을 검색키워드로 넣었는데 왜, 'Apple', 'APPLE333'이 조회가 되는걸까?1. Application Level 분석 (Querydsl) 먼저 대소문자 구분 문제를 확인할 때, 데이터베이스 레벨보다는 애플리케이션 레벨에서의 쿼리 및 ORM(Querydsl) 설정을 살펴보았다. 애플리케이션 레벨에서 문제를 수정하는 것이 일반적으로 더 간단하고 빠르고, 쿼리나 조건을 수정하는 것이 데이터베이스 설정을 변경하는 것보다 용..

  • format_list_bulleted Database
  • · 2025. 2. 8.
  • textsms
[자료구조] HashMap 내부 동작 - 2

[자료구조] HashMap 내부 동작 - 2

일반적으로 get() 및 put() 연산은 평균적으로 O(1)의 시간 복잡도를 갖는다.(Key 값을 알고 있으면 바로 인덱스로 접근 가능) 하지만 최악의 경우(모든 키가 같은 버킷 인덱스로 매핑되는 경우), 연결 리스트나 균형 이진 트리에서 선형 탐색이 필요하므로 O(n)까지 증가할 수 있다.충돌 관리는 어떻게 할까?1. HashMap의 전체 크기(size)가 threshold (capacity * load factor, 기본적으로 초기 용량 16에 로드 팩터 0.75를 곱한 값인 12) 값을 초과할 경우, HashMap은 배열 크기를 두 배로 확장하고 모든 엔트리들을 새 배열에 재배치하는 재해싱 과정을 거친다. 기존 배열 크기 16에서 32가 되고, threshold도 2배인 24가 된다.static ..

  • format_list_bulleted 공부방
  • · 2025. 2. 2.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
전체 카테고리
  • 분류 전체보기 (14)
    • 공지사항 (1)
    • Java & Kotlin (2)
    • Spring (6)
    • Server (0)
    • Database (1)
    • Network (1)
    • 공부방 (3)
최근 글
최근 댓글
태그
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바