전체 글

멋진 개발자가 되자
· 언어/JAVA
업무를 진행 하면서 BigDecimal을 주로 사용하는데 사칙연산이 기본 int와 달라서 종종 헷갈려서 정리합니다. BigdDecimal 사용 BigDecimal number = new BigDecimal("100.00010"); BigDecimal number2 = new BigDecimal("2.3110"); BigDecimal zero = BigDecimal.ZERO; 이런식으로 사용할 수 있습니다. BigDecimal 사칙연산 - 더하기 : number.add(number2); =====> "102.31110" - 빼기 : number.subtract(number2) =====> "97.6891" - 나누기 : number.divide(number2) =====> "43.27135439203808..
🌱스프링 빈(Bean)이란? - 스프링(Spring) 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 합니다. Spring의 특징에는 제어의 역전(IoC)이 있습니다. 제어의 역전이란, 간단히 말해서 객체의 생성 및 제어권을 사용자가 아닌 Spring에게 맡기는 것입니다. 지금까지는 사용자가 new연산을 통해 객체를 생성하고 메소드를 호출했습니다. IoC가 적용된 경우에는 이러한 객체의 생성과 사용자의 제어권을 Spring에게 넘깁니다. 사용자는 직접 new를 이용해 생성한 객체를 사용하지 않고, Spring에 의하여 관리당하는 자바 객체를 사용합니다. 이 객체를 '빈(bean)'이라 합니다. 스프링 컨테이너란? - 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는..
Annotation 이란? 사전적 의미로 주석이라는 뜻. 자바에서 Annotation은 코드 사이에 주석처럼 쓰이며특별한 의미, 기능을 수행하도록 하는 기술. 이는 프로그램에게 추가적인 정보를 제공하는 metadata 라고 볼수있다. [ metadata : 데이터를 위한 데이터 ] Annotation 용도 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보 제공 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공 실행 시 (런타임) 특정 기능을 실행하도록 정보 제공 Annotation 사용을 위한 순서 Annotation을정의한다. 클래스에 Annotation을 배치한다. 코드가 실행되는 중에 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시한다. * Refl..
회사 업무를 진행 하면서 컴포지트 패턴을 적용하여 개발을 하였다. 정확한 이해를 하고 사용해야 할 것 같아서 두고두고 보기 위해 정리 한다. 컴포지트 패턴이란?? 컴포지트(Composite) 패턴은 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴이며 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 컴포지트 패턴(Composite Pattern)은 구조(Structural) 패턴 중 하나로써 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴이다. 컴포지트 패턴을 사용하는 이유!? 상속의 한계 - 설계가 거대해질 수록 예외 케이스가 늘어나 OCP(Open-Closed Principle)가 지켜지지 않는다. 이러한 상속의 문제를 해결하기 위..
· UML
[상태 다이어그램] 특정 객체 내부의 자세한 동작을 기술하거나 시스템 전체의 자세한 동작을 기술하는 데 이용하는 상호작용 다이어그램이다. 표현(기본 표기법) 1. 상태(state) : 둥근 모서리 직사각형 2. 이벤트(event) : 객체의 전이를 유발하는 자극 / 표현 : > 3. 전이(Transition) : 이벤트가 전달되는 곳을 향하는 실선 화살표 (확장 표기법) - 아래 그림과 같이 상태 이름아래에 활동이 들어가는 것이 확장표기법이다. entry/ action(): 객체가 상태1에 들어왔을 때 action()를 실행합니다. exit / action(): 객체가 상태1에서 나갈 때 action()를 실행합니다. do / action(): 객체가 상태1에 머무는 동안에 action()를 실행합니다...
· 언어/JAVA
자바로 개발 하다 보면 형식의 코드들이 보인다. 나는 제네릭에 대해 공부하지 못하여 이게 뭔지 궁금했다. 그래서 자세히 알아보려 한다! 1. 제네릭(Generic) 다양한 타입의 객체에 재사용을 높일 수 있는 기법으로 클래스에서 사용할 타입을 외부에서 설정하는 것을 말한다. 선언 시 클래스 또는 인터페이스에 ""를 붙이고 타입 파라미터를 지정한다. 제네릭을 사용하지 않을 경우 빈번한 타입 변환이 발생 할 수 있으며 이는 프로그램 성능을 저하시킨다. 예시를 보자! public class Car{ private Object obj; public void set(Object obj){ this.obj = obj; } public Object get(){ return obj; } Car car = n..
· 언어/JAVA
스프링을 공부하면서 본게 오버라이딩이 자주쓰이는 것 같았다. 그래서 오버로딩과 오버라이딩의 정의를 정확히 인지하고 사용해야 내가 더 잘 사용할 수 있을것 같아서 한번 찾아보았다. 간단하게 알아보자! 오버로딩(Overloading) 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것. 오버로딩의 조건 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다. ex)😀 public class Main { public static void main(String[] args) { Message aMessage = new Message(); aMessage.getMethodInfo(); aMessage.getMethodInfo..
오늘도 어김없이 해시와 친해지기 위해 해시문제를 도전!! 저번에 올렸던 해시 레벨1 문제를 기억하면서 풀어보기 도즈언!! 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return하도록 solution함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존..
· 언어/JAVA
java공부를 하다가 StringBuilder라는 클래스를 알게되었다. 나는 기본 String 클래스밖에 몰랐었다. 그러나 String은 클래스가 문자열을 생성자로 넣어 인스턴스를 한번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못하는 단점이 있다. 이를 보완한 클래스가 StringBuilder와 StringBuffer인데 이번엔 StringBuilder클래스에 대해 알아보자. 위 단점을 보완한 내용은 즉, 같은 인스턴스 안의 문자열(char 배열) 필드 값을 추가하거나 변경할 수 있도록 되어있다. 또한 원본 문자열을 바꿀 수 있는 만큼 문자열을 다루는 메소드도 더 많이 포함되어 있다. StringBuffer와 StringBuilder는 모두 쓰임과 메소드가 같다. 그러나 StringBuffer..
Hash함수에 대해 이해도를 높이기 위해 Hash문제를 다시 풀어보았다. 나는 처음에 해시를 몰라 배열로 접근하였지만, 해시를 사용하면 속도나 효율성 측면에서 더 나은것 같아서 다시 해시를 정확히 이해할 때 까지 차근차근 문제를 접해보겠다. 문제설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participan..
나는이지훈
나는이지훈