CS

    [MYSQL] float, double 저장 시, 소수점이 깨지는 문제

    [MYSQL] float, double 저장 시, 소수점이 깨지는 문제

    배포된 서비스에서 점수를 소수점 입력이 가능하도록 변경해야 하는 이슈가 있었다. 현 서비스에서는 mysql + aws rds를 이용해서 운영을 하고, 로컬 테스트를 위해 h2 db에서 테스팅 하는 과정에서 문제가 발생했다. 분명 입력값으로 2.333을 넣었는데, 이런 식으로 소수부분이 깨지는 현상이 발생했다. Mysql decimal vs float(double) 결론적으로, float와 double 타입의 경우에는 부동 소수점 방식의 데이터 타입이다. 부동소수점(floating point) 방식은, 이진수에서 0과 1을 사용하여 소수를 근사해서 표현하는 방식을 말한다. 사실 부동이라는 단어에서 움직이지 않는다는 뜻이라고 유추했는데, 실제 뜻은 떠다니며 움직인다는 의미라고 한다. (뜰 부 + 움직일 동)..

    [객체지향] 응집도와 결합도의 차이

    객체지향의 관점에서 설계의 품질 척도를 결정하기 위해 다양한 평가 기준을 도입하였다. 그 중, 가장 대표적인 척도인 응집도(cohesion)과 결합도(coupling)의 차이를 알아보고자 한다. 응집도란(cohension)? 응집도란 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타낸다. 다시 말해, 한 모듈 내에서 내부 요소들이 같은 목적을 추구하는지에 대한 척도이다. 모듈 내의 요소들이 동일 목적을 위해 긴밀하게 협력한다면, 높은 응집도를 가진다고 말한다. 일반적으로 응집도가 높을수록 좋은 설계라고 말할 수 있다. 결합도란(Coupling)? 결합도란 의존성의 정도를 말한다. 한 모듈이 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 나타내는 척도이다. 어떤 모듈이 다른 모듈에 대해 필요한 ..

    [Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor의 차이점 간단 정리.

    [Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor의 차이점 간단 정리.

    스프링 코드를 보다 보면 항상 엔티티 클래스 위에 저 세가지 어노테이션이 종종 붙어 있는 경우를 보았다. 지난 포스트에 DI의 세가지 방법에 관한 글을 정리하고 나니 아래의 세 어노테이션을 정리할 필요성이 느껴져 해당 어노테이션들도 공부해보려고 한다! @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor @NoArgsConstructor @NoArgsConstructor는, 매개변수를 갖지 않는 기본 생성자를 생성해준다. @NoArgsConstructor는 주로 access = AccessLevel.PROTECTED 를 설정하여 무분별한 객체 생성을 막는 용도로 쓰인다. 해당 속성을 부여하면 기본 생성자에 접근 제어가 되므로, 결국 해당 클래스..

    [Spring] DI의 세 가지 방법(필드 주입, 생성자 주입, setter 주입)

    먼저 DI에 대해서 다시 한번 짚고 넘어가보자면, DI(Dependency Injection)이란, 어떤 코드에서 필요로 하는 의존성을 외부에서 주입(injection)하는 방법을 말합니다. DI의 목적은 한 코드 내에서 생성과 구현의 책임을 분리하기 위함이고, 이를 통해 런타임 의존성을 갖게 되어 결합도를 낮추고 유연한 코드 설계를 가능하게 해 주는 기법입니다. DI 설명을 위해 예시 코드로 Adder(두 수를 더하는 클래스)를 작성했습니다. DI의 세 가지 방법 - 1. setter 주입 public class Adder { private int number1; private int number2; public void setNumber1(int value){ this.number1 = value; ..

    [WEB] REST API - URI 설계 규칙

    결국 REST API의 핵심을 정리하자면 다음과 같다. 클라이언트 - 서버 간의 통신 방식 중 하나이다. 자원을 이름으로 구분한다. 자원과 행위를 분리하여 HTTP 메서드로 표현한다. 자원의 상태를 서로 주고 받는다. URI 란? URI(Uniform Resource Identifier)란, 직역하면 "통합 자원 식별자" 이다. Uniform : 자원을 식별하는 통합된 방식 Resource : 웹 브라우저 파일이나 이미지, 기타 리소스(식별 가능한 모든 자원) Identifier : 식별자 즉, URI란 자원을 식별하기 위한 시퀀스이며, 이는 REST에서 자원을 잘 식별하여 처리하기 위해 사용한다. 따라서, 개발자는 URI를 잘 네이밍해야 좋은 API를 만들 수 있고, 이를 위해서는 다음의 URI 설계 ..

    [Web] REST API란?

    [Web] REST API란?

    사실 REST API라는 말에 대해서 정말 많이, 그리고 자주 들어 왔지만 정작 REST API를 설명해달라고 하면 뭐부터 이야기해야 할 지 정리가 잘 되지 않았다. 그래서 이번 포스트를 통해 REST API를 차근차근 정리해보려고 한다! 웹의 역사와 REST의 등장 배경 먼저 REST가 등장한 배경을 살펴보기 위해, WEB이 등장한 시점으로 거슬러 올라가자. www의 창시자인 팀 버너스 리는, 인터넷에서 정보를 공유하기 위해 정보들을 하이퍼텍스트(Hypertext)로 연결하자는 아이디어를 제시하였다. 이를 표현하는 형식을 HTML이라고 하며, 정보를 전송하는 방법을 HTTP라 이름짓고 이를 설계하는 작업에 돌입하였다. 해당 작업에 참여한 로이 필딩은 다음과 같은 생각을 한다. WEB의 세계는 너무나도 ..

    [Spring] 스프링에서 빈 객체를 등록하는 방법(@Bean, @Component)

    [Spring] 스프링에서 빈 객체를 등록하는 방법(@Bean, @Component)

    https://youwjune.tistory.com/37 [Spring] DI와 IOC에 대해서 스프링을 막 공부하기 시작하는 비기너에게 DI와 IOC에 대한 개념은 너무나도 중요한 것 같습니다! 하지만, 이를 왜 사용할까요? DI와 IOC를 활용하면 어떤 이점이 있을까요? Spring에서는 DI와 IOC가 youwjune.tistory.com 지난번에 DI와 IOC를 공부하며, 자바와 다르게 스프링에서는 객체의 대한 생성부터 소멸까지 모든 관리 책임을 스프링이 갖고(IoC), 필요한 경우 해당 객체를 전달(DI) 한다고 했다. 그렇다면, 스프링은 객체를 대체 어떻게 관리할까? POJO 객체란? 스프링 빈(Bean)이란, 스프링에서 관리하는 자바 POJO 객체라고 말할 수 있다. 사실 이 POJO 객체에..

    [WEB] HTTP Method란?

    [WEB] HTTP Method란?

    HTTP Method에 대해 HTTP Method란? 클라이언트 - 서버 구조에서 요청(request)와 응답(response)가 이루어지는 방식을 의미합니다. 서버가 수행해야 할 동작을 지정하여 요청(request)을 보내는 방법이라고 정리할 수 있겠네요. HTTP 메서드는 왜 사용할까요? 결국 리소스와 동작를 분리하기 위함입니다. HTTP METHOD를 통해 서버가 수행해야 할 동작을 지정하면, URI는 리소스만 식별하면 되기 때문이죠. HTTP Method의 종류 HTTP Method는 크게 8가지가 있으며, 다음과 같습니다. GET : 리소스를 조회 POST : 데이터 추가, 등록 PUT : 리소스 대체, 수정 / 해당 리소스가 없으면 새롭게 생성 DELETE : 리소스 삭제 PATCH : 리소스..