개발은 재밌어야 한다
반응형
article thumbnail
[Java] SimpleDateFormat으로 날짜 포맷 값 생성하기: 밀리초 단위까지
JAVA 2024. 12. 2. 01:52

많은 애플리케이션에서 고유한 값이나 정밀한 시간 정보가 필요할 때, 날짜 포맷을 활용합니다. 일반적으로 "yyyyMMddHHmmss" 형태로 초 단위까지 기록하지만, 초 단위만으로는 여러 이벤트가 겹칠 수 있습니다. 이런 상황에서 밀리초(millisecond)를 추가하여 더 정밀한 시간을 기록하면 고유성과 정확도를 높일 수 있습니다. 기본 초 단위 날짜 포맷초 단위까지 포함된 날짜 포맷을 만드는 기본적인 방법은 아래와 같습니다:import java.text.SimpleDateFormat;import java.util.Date;public class DateExample { public static void main(String[] args) { // 초 단위 날짜 포맷 St..

article thumbnail
Stream API에서 Null 체크 처리하기
JAVA 2024. 11. 26. 21:05

Java Stream API는 컬렉션을 효율적으로 처리하기 방법이지만, null 값이 포함된 경우 예기치 않은 오류가 발생할 수 있습니다. 특히, NullPointerException을 주의해서 사용해야 합니다. 이번 글에서는 Stream API에서 안전하게 null 체크를 처리하는 방법을 알아보겠습니다.왜 Null 체크가 필요한가?Stream 연산 중 null 값이 존재하면 NullPointerException이 발생할 수 있습니다. 예를 들어, 다음 코드를 보면 문제가 생길 가능성이 있습니다List list = Arrays.asList("A", null, "B");long count = list.stream() .filter(s -> s.startsWith("A")) //..

article thumbnail
Java에서 NullPointerException 피하기
JAVA 2024. 11. 16. 22:07

NullPointerException(NPE)는 Java 개발자라면 누구나 한 번쯤 겪어본 골칫거리입니다. 이 글에서는 NPE를 예방하기 위한 Java의 주요 도구인 Optional 클래스를 중심으로, null 안전성을 향상시키는 다양한 기법을 비교하고 활용법을 소개합니다.NullPointerException: 왜 발생할까?NPE는 다음과 같은 상황에서 주로 발생합니다:null 값을 참조하려고 할 때String name = null;System.out.println(name.length()); // NPE 발생메서드의 반환값이 null인데 이를 처리하지 않을 때 public String findName() { return null;}System.out.println(findName().length(..

article thumbnail
[Java] Reflection를 활용한 런타임 동적 프로그래밍
JAVA 2024. 11. 15. 17:47

Java의 Reflection API는 런타임에 클래스의 메타데이터에 접근하고 조작할 수 있도록 해줍니다. Reflection을 활용하면 객체의 클래스 정보를 동적으로 확인하고, 객체의 메서드 호출, 필드 접근 등도 가능해지죠. 성능과 보안상의 이슈도 있을 수 있으니 신중한 접근이 필요합니다. 이 글에서는 Reflection의 기본 개념과 활용 방법을 단계별로 설명해 보겠습니다.Reflection API란?Reflection은 런타임에 Java 객체의 클래스를 조사하고, 필드나 메서드 등을 동적으로 호출할 수 있는 기능입니다. 주로 다음과 같은 상황에서 사용됩니다. 클래스 정보 확인: 클래스 이름, 메서드, 필드, 생성자 등 다양한 메타데이터를 조회할 수 있습니다.동적 객체 생성: 런타임에 클래스의 객체..

article thumbnail
Java의 Map 컬렉션 정리: HashMap, TreeMap, LinkedHashMap 비교
JAVA 2024. 11. 14. 17:43

Java에서 데이터를 key-value 형태로 저장할 때 많이 사용하는 자료구조가 바로 Map입니다. 그중에서도 HashMap, TreeMap, LinkedHashMap은 가장 흔히 쓰이는 Map의 구현체들인데, 이들의 차이점과 사용 예시를 알아 보겠습니다.HashMap: 빠르고 유연한 비동기 Map기본 개념과 내부 구조HashMap은 해시 테이블 구조를 사용하여 데이터를 저장합니다. key의 해시 값을 이용해 버킷(bucket)을 찾아 저장하고, 필요 시 연결 리스트나 트리 구조를 통해 데이터를 빠르게 조회할 수 있도록 합니다.Java 8 이후에는 해시 충돌을 최소화하기 위해, 해시 버킷이 일정 크기 이상이 되면 연결 리스트 대신 트리로 변환하여 조회 속도를 높입니다.특징과 성능동기화(Synchroni..

article thumbnail
자바의 HashMap vs ConcurrentHashMap: 차이점과 활용법
JAVA 2024. 11. 3. 23:46

자바에서 데이터를 key-value 형식으로 저장할 때 가장 널리 쓰이는 컬렉션으로 HashMap과 ConcurrentHashMap이 있습니다. 두 클래스 모두 Map 인터페이스를 구현하지만, 내부 동작 방식과 동시성 처리 면에서 큰 차이가 있습니다. 이 글에서는 HashMap과 ConcurrentHashMap의 구조와 특징을 비교하고, 각 컬렉션을 상황에 맞게 선택할 수 있도록 설명하겠습니다.기본 개념: HashMap과 ConcurrentHashMapHashMap: 자바에서 비동기적인 key-value 구조로 데이터를 저장하는 기본 컬렉션입니다. 단일 쓰레드 환경에서 빠르고 효율적으로 동작하지만, 멀티 쓰레드 환경에서는 안전하지 않습니다. 두 개 이상의 쓰레드가 동시에 접근하여 수정할 경우 데이터 손상..

article thumbnail
Java record: 불변 객체의 간결한 정의와 활용
JAVA 2024. 10. 23. 19:24

Java record: 불변 객체의 간결한 정의와 활용Java 14부터 도입된 record는 데이터를 간단하게 표현하고 불변성을 쉽게 유지할 수 있는 강력한 도구입니다. record는 데이터 클래스를 간결하게 작성하는 데 유용하며, 데이터를 안전하게 다루면서도 코드의 가독성을 높여 줍니다. 이 글에서는 Java record가 무엇인지, 어떻게 사용하는지, 그리고 JavaScript의 Object.freeze()와의 간단한 비교를 통해 불변 객체를 다루는 두 가지 방법을 알아보겠습니다.Java record란?Java의 record는 데이터를 저장하기 위한 간단한 클래스입니다. 기존의 자바 클래스를 만들 때는 getter, toString(), equals(), hashCode() 메서드를 수동으로 작성해야..

article thumbnail
Java 접근 제어자 종류와 이해
JAVA 2024. 10. 22. 09:45

Java 접근 제어자 이해하기Java에서 접근 제어자(Access Modifier)는 클래스, 메서드, 필드의 접근 수준을 결정하는 중요한 요소입니다. 이 제어자들은 객체 지향 프로그래밍에서 정보 은닉(Encapsulation)을 구현하는데 핵심적인 역할을 하며, 코드의 가독성과 유지보수성을 높이는 데 기여합니다. 이번 글에서는 public, private, protected, 그리고 default 네 가지 접근 제어자의 개념과 사용법을 예시를 통해 알아보겠습니다.public: 어디서나 접근 가능public은 가장 개방적인 접근 제어자로, 클래스나 메서드, 필드가 모든 패키지나 클래스에서 접근 가능합니다. 예를 들어, 다른 패키지에 있는 클래스에서도 자유롭게 접근할 수 있습니다.public class M..

article thumbnail
Java Stream API 사용법
JAVA 2024. 10. 21. 20:31

Java Stream API 사용법Stream API는 Java 8에서 도입된 매우 유용한 기능으로, 데이터를 효율적이고 간결하게 처리할 수 있는 방법을 제공합니다. 이 글에서는 Stream API의 기본 개념부터 다양한 활용 방법까지 살펴보며, 실용적인 예시와 함께 Stream API가 왜 중요한지 알아보겠습니다.Stream API란 무엇인가?Stream은 데이터를 처리하기 위한 흐름을 나타냅니다. Java의 Stream API는 컬렉션(Collection), 배열(Array) 또는 I/O 자원을 일관된 방식으로 처리하는 기능을 제공합니다. 이로 인해 반복적인 데이터 처리가 단순화되고, 코드의 가독성이 향상됩니다.Stream API의 주요 특징은 다음과 같습니다:• 함수형 프로그래밍 스타일: 람다 표현..

article thumbnail
Java Enum 사용법과 활용 예시
JAVA 2024. 10. 18. 04:37

Enum이란?Java에서 Enum(열거형)은 서로 관련 있는 상수 집합을 정의하기 위해 사용되는 특별한 데이터 타입입니다. Enum은 주로 한정된 값의 집합을 표현할 때 유용하며, 이러한 값을 더 안전하고 읽기 쉽게 관리할 수 있습니다.기본 정의 예시public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}이 예에서 Day는 요일을 나타내는 Enum으로, SUNDAY, MONDAY 등의 값이 포함되어 있습니다.Enum의 특징타입 안전성: Enum은 각 항목이 명시된 타입으로만 사용되기 때문에 잘못된 값이 사용될 가능성이 낮습니다.싱글톤: Enum 상수는 기본적으로 싱글톤이기 때문에 각 상수는 유일하며 인스턴스가 ..

article thumbnail
Java에서의 CORS 설정하기
JAVA 2024. 10. 18. 04:13

CORS란 무엇인가?CORS(Cross-Origin Resource Sharing)는 웹 브라우저가 한 출처의 웹 애플리케이션이 다른 출처의 리소스에 접근할 수 있도록 허용하는 메커니즘입니다. 기본적으로 웹 브라우저는 보안을 위해 동일 출처 정책(Same-Origin Policy)을 따릅니다. 이 정책에 따르면, 다른 출처의 리소스에 대한 접근이 제한됩니다. CORS는 이러한 제한을 완화하여, 서버에서 특정 출처의 요청을 허용할 수 있도록 합니다.CORS는 마치 우리 부모님처럼, 다른 집에 들어가는 걸 엄격히 지키지만, 간혹 마음에 드는 친구가 오면 문을 열어주곤 하죠.동일 출처 정책(Same-Origin Policy)동일 출처 정책은 웹 보안의 기본 원칙으로, 스크립트가 다른 출처에서 실행되는 문서의 ..

article thumbnail
Java에서 단일 String을 List으로 변환하는 방법
JAVA 2024. 10. 17. 20:37

String 타입의 단일 값을 List으로 변환해야 하는 상황이 발생합니다. 이때 여러 가지 방법을 사용할 수 있으며, 각각의 방법은 상황에 맞게 효율적으로 적용될 수 있습니다. 이번 포스팅에서는 Java에서 단일 String 값을 List으로 변환하는 3가지 방법을 소개하겠습니다.Arrays.asList() 사용Arrays.asList()는 Java에서 가장 많이 사용되는 방법 중 하나입니다. 이 메소드는 전달된 값을 기반으로 고정된 크기의 리스트를 생성합니다. 만약 여러 개의 String을 리스트로 변환하고 싶다면 이 방법을 매우 유용하게 사용할 수 있습니다.String singleString = "example";List itemList = Arrays.asList(singleString);위 코드..

반응형