개발은 재밌어야 한다
article thumbnail
Item2. 생성자에 매개변수가 많다면 빌더를 고려하라
JAVA/이펙티브자바 2024. 2. 18. 01:03

정적 팩터리와 생성자로 객체생성시 매개변수가 많을때 대응이 어렵다는 제약이 있다. 이런 상황에는 점증척 생성자 패턴(telescoping constructor pattern)으로 매개변수에 대응되는 생성자를 늘려가는 방식으로 대응 점증척 생성자 패턴(telescoping constructor pattern)이란? 생성자를 필수 매개변수 1개만 받는 생성자, 필수 매개변수 1개와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개를 받는 생성자 등에 형태로 매개변수 개수만큼 생성자를 늘리는 방식 public class NutritionFacts { private final int servingSize; // (ml, 1회 제공량) 필수 private final int servings; // (회, 총 ..

article thumbnail
Item1. 생성자 대신 정적 팩터리 메서드를 고려하라.
JAVA/이펙티브자바 2024. 2. 18. 00:02

일반적인 인스턴스 생성 방법은 public 생성자다. 정적 팩터리 메서드(static factory method) 로도 클래스 인스턴스를 생성 할 수 있다. 정적 팩터리 메서드란? 객체 생성을 흔히 사용하는 생성자가 아닌 정적(static) 메서드로 객체를 생성하는 메서드 정적 팩터리 메서드의 장점 1. 이름을 가질 수 있다. 일반적으로 생성자의 경우 객체를 생성할 때, 반활될 객체의 특성을 설명할 수 없다. → 이름을 따로 못가지기 때문에 ex) public class ExampleCalendar { private int year; private int month; } public static void main(String[] args) { // 생성자로 객체를 생성 ExampleCalendar cal..

article thumbnail
[자바 Java] Java.sql.Time을 milliseond로 변환
JAVA 2022. 3. 11. 10:33

Java.sql.Time을 millisecond로 변환하는 방법 Time 객체 생성은 @Deprecated표시가 되어있지만 예시 데이터를 생성하기 위해 사용했다. Time timeValue = new Time(0, 0, 12); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); Date convertdate = simpleDateFormat.parse(timeValue.toString()); System.out.println(convertdate.getTime()); 원하는 Java.sql.Time의 12초를 milliseco..

article thumbnail
[자바 JAVA] BigInteger&BigDecimal 클래스 개념 (long보다 큰 수 표현)
JAVA 2022. 3. 7. 10:17

일전에 백준에서 큰수에 대한 문제를 풀었을때 만났었던 클래스인데 이번에 또 만나게 되어 BigDecimal과 BigInteger에 대한 설명을 포스팅하려고 합니다. BigInteger를 사용한 백준 문제 (10757번 큰 수 A+B) https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net MySQL에서 Data에 대한 매핑을 보다가 BIGINT 즉 큰수에 대한 값을 자바에서 convert해서 가져오는 과정에서 사용되는 클래스로 java.math.BigDecimal이 사용되는 것을 확인 할 수 있습니다. 그럼 BigDecimal과 BigInteger가 무엇인지에..

article thumbnail
[자바 JAVA] 예외의 종류
JAVA 2022. 2. 17. 01:03

자바에서 자주 발생하는 예외들과 예외에 대한 처리들에 대해서 정리 해 보도록 하겠습니다. 에러와 예외 컴퓨터 하드웨어의 동작의 오작동 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 자바에서는 에러(error)라고 합니다. 에러는 JVM 실행에 문제가 있다는 것이므로 JVM 위에서 실행되는 프로그램을 아무리 견고하게 만들어도 결국 실행 불능 상태가 되어버립니다. 자바에서는 에러 이외에 예외(exception)이라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하다. 그러나 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정..

article thumbnail
[JAVA 자바] 메소드 체이닝이란?
JAVA 2022. 1. 11. 18:04

지난번 포스팅으로 빌더 패턴에 대해서 알아보았습니다. https://dreamcoding.tistory.com/56 [디자인 패턴] 빌더 패턴(Builder Pattern) 스프링 인 액션 5판 스터디를 진행하던 중에 스프링 시큐리티에서 빌더 패턴이 사용되는 부분을 보고 빌더 패턴에 대한 포스팅을 해보겠습니다. 빌더 패턴은 소프트 웨어 디자인 패턴 중에 하나 dreamcoding.tistory.com 빌더 패턴도 어찌보면 메소드 체이닝 방식을 사용한 하나의 디자인 패턴인데요. 그 원리 속에 작용하느 메소드 체이닝에 대해서 한번 다시 생각해보면서 한번 어떻게 빌더 패턴이 작용할 수 있는가를 생각해보겠습니다. 메소드 체이닝이란? 말그대로 메소드를 고리마냥 줄줄이 엵어서 메소드를 계속해서 사용할 수 있게끔 하..

article thumbnail
[JAVA]유닉스 타임스탬프 YYYY-MM-dd HH:mm:ss로 변환
JAVA 2021. 11. 24. 08:59

유닉스 타임스탬프를 문자열 YYYY-MM-dd HH:mm로 변환하는 상황이 자주 있는데 할 때 마다 까먹어서 기록하고자 한다. https://www.epochconverter.com/ Epoch Converter Convert Unix Timestamps (and many other date formats) to regular dates. www.epochconverter.com 유닉스 타임스탬프를 시간으로 변환해주는 사이트는 이 사이트를 주로 이용합니다. 예로 타임 스탬프의 값이 1637711686이면 1 2 3 4 5 6 7 8 9 10 11 // String 값인 타임스탬프 String unixTimeStamp = "1637711686"; long timestamp = Long.parseLong(u..

article thumbnail
[JAVA 자바] 방문자 수 차트 JSON데이터로 총 방문자 수 구해보기
JAVA 2021. 8. 13. 22:25

안녕하세요 뭔가 오랜만에 글을 작성하는 것 같은데 최근에 토이프로젝트를 진행하고 코딩테스트에 대한 공부를 하느라 블로그에는 신경을 쓰지 못하고 있었는데요. 최근에 방문자수가 늘고 있는게 보이더라구요... 근데 항상 느끼던게 티스토리의 방문 통계 차트 그래프는 항상 느리더라구요... 그래서 차트 데이터도 한번 볼 겸 오늘은 소소하게 차트데이터를 통해서 최근 방문자수의 총 합을 한번 알아보도록 하겠습니다! 티스토리의 관리 페이지를 처음 띄웠을때의 화면입니다 이 차트의 데이터는 구성을 한번 보도록 하겠습니다. 일단 /manage로 진입했을때에 호출하는것들은 count.json, trend.json, toEntry.json등 이렇게 있습니다. 한번 찬찬히 response데이터를 먼저 보겠습니다 lastUpdat..

article thumbnail
[JAVA 자바] 가비지 컬렉션(Garbage Collection)이란?
JAVA 2021. 6. 16. 13:28

Gabage Collection, 줄여서 약어로 GC라고 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부릅니다. 메모리 관리 방법 중에 하나로, 말그대로 안쓰는 쓰레기(자원)를 수집(회수)한다고 생각하면 됩니다. 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라고 부릅니다. 가령 C언어는 개발자가 메모리를 할당한(malloc) 뒤 수동으로 해제(free) 작업을 직접 관리하여야 한다. 그래서 메모리를 할당해 놓고 필요없어진 뒤에도 해제를 안하는 일 등이 생겨서 메모리 누수가 생기거나 거꾸로 해제했던 메모리를 다시 사용하는 실수등 버그가 생기게 된다. 하지만, 가비지 컬렉션 기..

article thumbnail
[JAVA 자바] String, StringBuilder, StringBuffer의 차이
JAVA 2021. 6. 16. 10:21

Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuilder, StringBuffer가 있습니다. 이 세가지 클래스 모두 문자열을 저장하고 관리하는 클래스이며 연산이 많지 않을때에는 이 중 어떠한 클래스를 사용해도 이슈가 발생할 가능성은 거의 없습니다. 각 클래스의 특징에 맞게 상황에 따라 적절하게 사용해주면 됩니다. | String VS StringBuilder / StringBuffer String은 immutable(불편)하고 StringBuilder,StringBuffer는 mutable(가변)하다는 차이로 나눌 수 있습니다. HelloWorld 라는 문자열을 예시로 보겠습니다. HelloWorld 라는 문자열을 만들기 위해 먼저 할당된 'Hello' 문자열을 생성했다고 ..

article thumbnail
[JAVA 자바] String 문자열 자르기 (substring(), split(), StringTokenizer)
JAVA 2021. 4. 28. 16:15

String 문자열에서 원하는 특정 문자들을 잘라서 사용해야 할 때가 자주 있습니다. 이번 포스팅은 이런 문자열을 자르는 방법들에 대해서 알아보겠습니다. substring() - 특정 인덱스를 기준으로 자른 문자열을 반환 📄substring(int index) - index부터 문자열 끝까지 문자열을 리턴(String) 📄substring(int beginIndex, int endIndex) - beginIndex 부터 endIndex전까지 문자열을 리턴(String) String으로 구성된 문자열은 기본적으로 char형태의 한개의 문자를 여러개로 구성한 형태인데 이러한 String을 특정 index를 중심으로 자르는 방법으로 substring() 메소드를 사용합니다. subString은 특정 인덱스의 ..

article thumbnail
[JAVA 자바] Date 원하는 날짜 포맷으로 변환하기(날짜 형태, 데이터형 변환, 초를 x일x시간x분x초로 변환)
JAVA 2021. 4. 21. 15:33

이번 포스팅은 실무에서 주로 날짜 데이터를 다룰때가 있는데 그때마다 주로 사용하는 방법들을 정리해보려고 합니다. 1. 경과된 밀리세컨드(millisecond)를 현재시간에서 빼기 1 2 3 4 5 6 7 8 9 10 11 // millisecond 값이 String으로 주어졌을때 // 2412716459밀리세컨드 만큼의 값이 흘렀을 때 현재시간에서 밀리세컨드를 뺀 날짜를 구하기 String strMilliSeconds = "2412716459"; Long MilSeonds = Long.parseLong(value.toString()); Date nowDate = new Date(); long wantMilSecs = nowDate.getTime() - MilSeonds; Date wantDate = ne..