이끌든지 따르든지 비키든지

전체 글 67

[기술 면접 단골 질문] Java

Java는? Java의 장 · 단점 Java는 플랫폼 독립적인 언어로, 자바 가상 머신(JVM) 위에서 동작하는 객체 지향 프로그래밍 언어입니다. 장점JVM 위에서 동작하기 때문에 운영체제에 독립적이다.가비지 컬렉터가 메모리를 관리해주기 때문에 편리하다.단점JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다.다중 상속이나 타입에 업격하는 등 제약이 있는 것이 많다.꼬리질문: Java가 다중 상속을 지원하지 않는 이유다중 상속을 지원하면, 다이아몬드 문제가 발생할 수 있기 때문입니다.Java가 다중 상속을 지원하지 않는 이유는 '다이아몬드 문제'를 방지하기 위해서입니다. 다중 상속을 허용하면 두 개 이상의 상위 클래스에서 상속받은 하위 클래스에서 같은 메서드를 가지게 될 경우, 하위 클래스에서는 ..

[Web] RESTful한 API란?

RESTful API란? RESTful API는 REST 원칙을 따르는 API입니다. REST(Representational State Transfer)는 인터넷 상의 시스템 간 상호작용을 위한 아키텍처 스타일입니다. RESTful API는 자원(Resource)의 표현(Representation)을 통해 상태 정보(State)를 주고 받는 구조로, 웹의 기본 프로토콜인 HTTP를 이용하여 구현됩니다.  💡RESTful API의 핵심 구성 요소자원(Resource): REST 아키텍처에서 모든 것은 자원으로 표현됩니다. 자원은 서버에 저장된 데이터나 서비스 같은 웹의 구성 요소를 의미하며, 고유한 URI(Uniform Resource Identifier)를 통해 접근할 수 있습니다.표현(Represen..

[Spring] 스프링의 계층형 아키텍처

프레젠테이션 계층 (Presentation Layer): 이 계층은 사용자의 요청을 받아 처리하고, 그 결과를 사용자에게 돌려주는 역할을 합니다. 컨트롤러(@Controller 또는 @RestController)가 이 계층을 구성합니다. RESTful API를 구성하는 데 필요한 매핑 어노테이션(@GetMapping, @PostMapping 등)을 제공합니다. 서비스 계층 (Service Layer): 비즈니스 로직(애플리케이션의 핵심 기능과 요구 사항)을 수행하는 계층입니다. @Service 어노테이션을 사용하여 이 계층의 컴포넌트를 명시합니다. 서비스 계층은 다양한 도메인 모델과 상호작용하며, 필요한 경우 트랜잭션 관리도 수행합니다. 데이터 접근 계층 (Data Access Layer): DB나 다른..

Framework/Spring 2024.02.19

[Design Pattern] SRP(단일 책임 원칙)

객체지향적인 프로그램 설계 시 가장 중요하게 여겨지며 반드시 지켜야 하는 5가지 원칙이 있습니다. 이들 원칙의 첫 글자를 따서 SOLID 원칙이라고 부릅니다. 오늘은 그중 첫 번째인 단일 책임 원칙(Single Responsibility Principle, SRP)에 대해 알아보겠습니다. 단일 책임 원칙(Single Responsibility Principle, SRP) 단일 책임 원칙은 객체가 오직 하나의 책임만을 가져야 한다는 원칙을 의미합니다. 즉, 객체는 오직 하나의 변경 이유만을 가져야 합니다. 이는 하나의 클래스가 하나의 책임(기능)만을 담당하여 그 책임을 수행해야 한다는 의미로 해석될 수 있습니다. 현실 세계에서 맥가이버칼과 같은 다기능 도구는 여러 작업을 한 번에 해결할 수 있는 편리함을 ..

[Spring] @Transactinal 파헤치기

들어가기 앞서 - 트랜잭션(Transaction)이란? 트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키는 하나의 작업 단위를 의미합니다. 하나의 트랜잭션에 여러 작업(연산)이 포함될 수 있으며, 이 작업들은 모두 성공적으로 완료되거나, 하나라도 실패할 경우 전체가 취소(롤백)되어야 합니다(All or Nothing이라고도 합니다. 한국어로는 모 아니면 도?). 이러한 특성 때문에 트랜잭션은 데이터의 일관성과 무결성을 유지하는 데 핵심적인 역할을 합니다. '@Transactinal' 어노테이션 // try-catch를 통해 트랜잭션을 수동으로 관리하는 코드 public class Example { public static void main(String[] args) { Connection ..

Framework/Spring 2024.02.04

[Spring] Dispatcher-Servlet 알아보기

들어가기 앞서 - 서블릿(Servlet)이란? 동적 웹 페이지(Dynamic Web Page) 생성에 사용되는 서버 사이드 프로그램입니다. HTTP 프로토콜을 사용하며, 클라이언트의 요청에 대한 처리와 그 결과를 클라이언트에게 반하는 역할을 합니다. 서블릿은 일반적으로 HTML, JSON, XML 등의 형태로 데이터를 클라이언트에 전송하며, 이를 통해 동적인 웹 페이지나 웹 애플리케이션을 구현할 수 있습니다. 디스패처 서블릿(Dispatcher-Servlet)이란? 디스패처 서블릿은 웹 애플리케이션에서 들어오는 모든 요청을 가장 먼저 받아 각 요청을 알맞은 컨트롤러로 전달하는 역할을 하는데, 이는 프론트 컨트롤러 패턴을 구현한 것입니다. 💡프론트 컨트롤러 패턴? 프론트 컨트롤러 패턴은 웹 애플리케이션 아..

Framework/Spring 2024.02.02

[프로그래머스] 신규 아이디 추천 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 개인정보 수집 유효기간 / JAVA 풀이 정리 풀이 문제를 보고, 정규 표현식이 바로 떠올랐는데, 필요할 때마다 구글링 해서 사용했어서 규칙이 정확히 기억이 안 났다... 정규표현식으로 풀이하면, 깔끔하게 작성할 수 있을 것 같아 규칙을 보면서 작성해 봤습니다. public String solution(String new_id) { // 1단계 : 모든 대문자를 소문자로 치환 String id = new_id.toLowerCase(); // 2단계 : 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거 id = id.replaceAll("[^a-z0-9-_.]", ""); // 3단계 : 마침표(.)가 2번 이상 연속된 부분을 하..

[프로그래머스] 개인정보 수집 유효기간 - JAVA

프로그래머스 코딩 테스트 연습 문제 - 개인정보 수집 유효기간 / JAVA 풀이 정리 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 고객의 약관 동의 일자와, 약관 종류에 따라 오늘 날짜로 파기해야 할 개인정보 번호들을 구하는 문제입니다. 처음에는 날짜 입력값의 "."을 "-"로 변경하고, LocalDate 타입으로 파싱 해서 LocalDate 클래스의 날짜 연산 메서드를 활용해서 풀어보려고 시도했지만, " 모든 달은 28일까지 있다고 가정합니다." 규칙으로 인해 의도한 대로 결과가 나오지 않아, 오늘 날짜와 보관 가능한 날짜를 일(day)로 변환한..

[Spring] 혼자서 해보는 가상화폐 시세 알림 API - 확장

새로운 요구사항에 대응하는 기능 확장 시나리오 추가된 요구 사항 : 슬랙의 슬래시 커맨드 기능 통합 슬래시 커맨드 기능을 통해 애플리케이션의 기능에 접근할 수 있어야 한다. 1. 슬래시 커맨드 요청 처리를 위한 컨트롤러 구현 @RestController @RequiredArgsConstructor @RequestMapping("/slack") public class SlackController { private final SlackCommandDispatcher commandDispatcher; @PostMapping("/slash-command") public ResponseEntity handleSlashCommand( final @RequestParam("channel_id") String chan..

Framework/Spring 2024.01.17

[Spring] 혼자서 해보는 가상화폐 시세 알림 API - 구현

저번 포스트에서 이어집니다. 구현 ▶ 구현 순서 시세 정보 수집 기능 알림 조건 검사 기능 실시간 알림 발송 기능 이력 관리 기능 1. 시세 정보 수집 기능 1-1. Feign Client 구성 시세 정보 수집을 위해 가상화폐 거래소 API를 조사한 결과, 대부분의 거래소가 자산 조회와 주문 등의 거래 관련 서비스에만 인증 수단을 요구하며, 시세 조회는 별도의 인증 없이 가능함을 확인했습니다. 따라서, Configuration 클래스에 RequestInterceptor를 별도로 구성하지 않았습니다. 시세 조회 서비스의 종류가 많았지만, 우선 거래 가능한 마켓 목록 조회 / 분(Minute) 단위 캔들 시세 조회 두 가지를 활용해 보기로 하고, 이에 대한 요청 메서드를 작성했습니다. @FeignClient..

Framework/Spring 2024.01.14