개요웹 개발을 하다보면 자주 사용되는 용어인 API와 Endpoint가 있습니다. 이 둘은 많은 개발자들이 혼동하기 쉬운 개념인데, 저는 Endpoint를 URL의 특정 resource path로 알고있었습니다. 본 글에서는 API와 Endpoint의 정확한 의미와 차이점에 대해 정리하고자 합니다. API란❓API(Application Programming Interface)는 서로 다른 소프트웨어 시스템들이 통신할 수 있게 해주는 인터페이스입니다.즉, 어플리케이션 간의 통신을 할수 있게 해주는 접점 예를 들어, 카카오 API는 지도, 결제, 로그인 등 다양한 서비스를 제공하며, 각 서비스에 접근하기 위한 규칙과 방법을 정의합니다. Endpoint란❓Endpoint는 API의 한 구성 요소로, 특정 기능..
개요데이터베이스 작업 시 여러 문자열을 하나로 합쳐야 하는 경우가 자주 있습니다. MySQL에서는 이러한 작업을 위해 CONCAT_WS 함수를 제공합니다. 본 글에서는 MySQL의 CONCAT_WS 함수에 대해서 정리하고자 합니다. CONCAT_WS란❓CONCAT_WS는 "Concatenate With Separator"의 약자로, 여러 문자열을 지정된 구분자로 연결하는 MySQL 함수입니다.CONCAT_WS의 기본 문법CONCAT_WS(separator, string1, string2, ...) 일반 CONCAT 함수와 달리, CONCAT_WS는 첫 번째 인자로 구분자를 지정하고, 이후의 모든 문자열 사이에 해당 구분자가 자동으로 삽입됩니다.CONCAT과 CONCAT_WS의 차이점-- CONCAT 사용..
개요Java 알고리즘 문제 풀이에서 Scanner로 입력을 받다가 시간 초과가 발생할 때, BufferedReader 클래스로 변경하면 해결되는 경우가 있습니다. BufferedReader 클래스는 버퍼를 이용해 입력을 한 번에 읽어오기 때문에 Scanner보다 빠른 것으로 알려져 있습니다. 하지만 BufferedReader는 String으로 입력을 받아 정수로 형변환이 필요하므로, 단일 정수나 적은 양의 정수 입력에서는 Scanner가 더 빠를 것이라는 의문이 있었습니다. 본 글에서는 적은 양의 정수 입력에서도 BufferedReader가 실제로 더 빠른지 코드를 통해 검증해보겠습니다. BufferedReader 클래스와 Scanner의 차이 위 그림에서 알 수 있듯이, Scanner는 데이터를 읽을 ..
개요데이터를 다루는 객체를 설계하다 보면 VO(Value Object)와 DTO(Data Transfer Object)를 자주 마주하게 됩니다. 얼핏 보면 비슷해 보이는 이 두 객체는 각각의 특성과 사용 목적이 명확히 다릅니다. 이번 글에서는 VO와 DTO의 차이점에 대해 정리하고자 합니다. VO(Value Object)란❓VO는 도메인에서 한 개 또는 그 이상의 속성들을 묶어서 특정 값을 나타내는 객체입니다. 또한 VO(Value Object)는 값을 표현하는 객체로, 불변(immutable) 특성을 가지며, 동일한 값을 가지면 같은 객체로 취급됩니다.VO 예시// VO: 값 자체를 표현, 불변public class Money { private final int amount; // 불변(fina..