자바에서 자주 발생하는 예외들과 예외에 대한 처리들에 대해서 정리 해 보도록 하겠습니다. 에러와 예외컴퓨터 하드웨어의 동작의 오작동 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 자바에서는 에러(error)라고 합니다.에러는 JVM 실행에 문제가 있다는 것이므로 JVM 위에서 실행되는 프로그램을 아무리 견고하게 만들어도 결국 실행 불능 상태가 되어버립니다.자바에서는 에러 이외에 예외(exception)이라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하다.그러나 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행..
지난번 포스팅으로 빌더 패턴에 대해서 알아보았습니다.https://dreamcoding.tistory.com/56 [디자인 패턴] 빌더 패턴(Builder Pattern)스프링 인 액션 5판 스터디를 진행하던 중에 스프링 시큐리티에서 빌더 패턴이 사용되는 부분을 보고 빌더 패턴에 대한 포스팅을 해보겠습니다. 빌더 패턴은 소프트 웨어 디자인 패턴 중에 하나dreamcoding.tistory.com 빌더 패턴도 어찌보면 메소드 체이닝 방식을 사용한 하나의 디자인 패턴인데요.그 원리 속에 작용하느 메소드 체이닝에 대해서 한번 다시 생각해보면서 한번 어떻게 빌더 패턴이 작용할 수 있는가를 생각해보겠습니다.메소드 체이닝이란?말그대로 메소드를 고리마냥 줄줄이 엵어서 메소드를 계속해서 사용할 수 있게끔 하는 방법인..
유닉스 타임스탬프를 문자열 YYYY-MM-dd HH:mm로 변환하는 상황이 자주 있는데 할 때 마다 까먹어서 기록하고자 한다.https://www.epochconverter.com/ Epoch ConverterConvert Unix Timestamps (and many other date formats) to regular dates.www.epochconverter.com유닉스 타임스탬프를 시간으로 변환해주는 사이트는 이 사이트를 주로 이용합니다. 예로 타임 스탬프의 값이 1637711686이면 1234567891011// String 값인 타임스탬프String unixTimeStamp = "1637711686"; long timestamp = Long.parseLong(unixTimeStamp);Si..
안녕하세요 뭔가 오랜만에 글을 작성하는 것 같은데 최근에 토이프로젝트를 진행하고 코딩테스트에 대한 공부를 하느라 블로그에는 신경을 쓰지 못하고 있었는데요. 최근에 방문자수가 늘고 있는게 보이더라구요... 근데 항상 느끼던게 티스토리의 방문 통계 차트 그래프는 항상 느리더라구요... 그래서 차트 데이터도 한번 볼 겸 오늘은 소소하게 차트데이터를 통해서 최근 방문자수의 총 합을 한번 알아보도록 하겠습니다! 티스토리의 관리 페이지를 처음 띄웠을때의 화면입니다 이 차트의 데이터는 구성을 한번 보도록 하겠습니다. 일단 /manage로 진입했을때에 호출하는것들은 count.json, trend.json, toEntry.json등 이렇게 있습니다. 한번 찬찬히 response데이터를 먼저 보겠습니다 lastUpdat..
Gabage Collection, 줄여서 약어로 GC라고 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부릅니다. 메모리 관리 방법 중에 하나로, 말그대로 안쓰는 쓰레기(자원)를 수집(회수)한다고 생각하면 됩니다. 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라고 부릅니다. 가령 C언어는 개발자가 메모리를 할당한(malloc) 뒤 수동으로 해제(free) 작업을 직접 관리하여야 한다. 그래서 메모리를 할당해 놓고 필요없어진 뒤에도 해제를 안하는 일 등이 생겨서 메모리 누수가 생기거나 거꾸로 해제했던 메모리를 다시 사용하는 실수등 버그가 생기게 된다. 하지만, 가비지 컬렉션 기..
Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuilder, StringBuffer가 있습니다. 이 세가지 클래스 모두 문자열을 저장하고 관리하는 클래스이며 연산이 많지 않을때에는 이 중 어떠한 클래스를 사용해도 이슈가 발생할 가능성은 거의 없습니다. 각 클래스의 특징에 맞게 상황에 따라 적절하게 사용해주면 됩니다. | String VS StringBuilder / StringBuffer String은 immutable(불편)하고 StringBuilder,StringBuffer는 mutable(가변)하다는 차이로 나눌 수 있습니다. HelloWorld 라는 문자열을 예시로 보겠습니다. HelloWorld 라는 문자열을 만들기 위해 먼저 할당된 'Hello' 문자열을 생성했다고 ..
String 문자열에서 원하는 특정 문자들을 잘라서 사용해야 할 때가 자주 있습니다.이번 포스팅은 이런 문자열을 자르는 방법들에 대해서 알아보겠습니다. substring() - 특정 인덱스를 기준으로 자른 문자열을 반환📄substring(int index) - index부터 문자열 끝까지 문자열을 리턴(String)📄substring(int beginIndex, int endIndex) - beginIndex 부터 endIndex전까지 문자열을 리턴(String)String으로 구성된 문자열은 기본적으로 char형태의 한개의 문자를 여러개로 구성한 형태인데이러한 String을 특정 index를 중심으로 자르는 방법으로 substring() 메소드를 사용합니다. subString은 특정 인덱스의 숫자를..
이번 포스팅은 실무에서 주로 날짜 데이터를 다룰때가 있는데 그때마다 주로 사용하는 방법들을 정리해보려고 합니다. 1. 경과된 밀리세컨드(millisecond)를 현재시간에서 빼기1234567891011// millisecond 값이 String으로 주어졌을때 // 2412716459밀리세컨드 만큼의 값이 흘렀을 때 현재시간에서 밀리세컨드를 뺀 날짜를 구하기String strMilliSeconds = "2412716459";Long MilSeonds = Long.parseLong(value.toString()); Date nowDate = new Date(); long wantMilSecs = nowDate.getTime() - MilSeonds; Date wantDate = new Date(wantMil..
자바에서 데이터의 객체 타입이 뭔지 비교가 필요하여 해당 객체가 어떤 객체인지 파악할 때가 있어서 사용을 해봤습니다. 예시는 객체 데이터의 값이 어떤 객체인지를 확인하기 위한 예제입니다. // 키 값이 String, 값이 Object인 dataMap이 있다고 가정합니다. Map dataMap = new HashMap(); // dataMap에 첫번째는 String, 두번째는 Boolean 세번째는 Int 값을 넣습니다. dataMap.put("first", "StringValue"); dataMap.put("second", true); dataMap.put("third", 3); // for 문으로 각각의 키값 반복문을 통하여 값에 따른 객체의 형태를 알아봅시다. for (String key : data..
주로 스프링에서 RESTAPI의 결과값으로 받아올 때에 MAP형태나 리스트맵형태로 반환을 사용하기 때문에 Map에 대한 이해가 필요할 때가 많다. HashMap에 대한 사용을 위해 키들과 값을 가져오는 방법에 대해 알아보자 다음과 같은 HashMap을 선언하였습니다Map classMap = new HashMap(); HashMap은 {key - value}의 형태로 쌍의 데이터로 저장되는 구조를 갖고 있는 객체이다. 값은 중복될 수 있지만 키 값은 중복이 되지않아 이미 존재하는 key 값에 동일한 key를 put하게 되면 기존의 데이터는 새로 put한 값으로 대체가 된다. 선언한 classMap에 키와 값들을 아래와 같이 세팅해준다.classMap.put("철수", 1);classMap.put("영희..
이번에는 간단하면서도 중요한 개념인 CallCall by value와 Call by Reference에 대해서 알아보려고한다.전공시간에 교수님이 매우 중요한 개념이라고 말씀하셨는데 면접때도 질문으로 나왔었던.... 우선 Call by value와 Call by Reference는 일단 함수의 호출 방식을 의미한다. Call by value(값에 의한 호출) - 함수에 매개 변수의 내용물을 전달하여 복사해서 사용하는 방식Call by reference(참조에 의한 호출) - 함수에 매개 변수의 참조 주소를 참조해서 호출하는 방식 의미 자체로만 본다면 함수의 호출을 값에 의해서 하는가 아니면 참조에 의해서 하는가라는 차이를 알 수 있다. 참조와 값에 따른 호출에 대한 좋은 그림예시가 있다Call by..