본문 바로가기

전체 글56

프로그래머스 레벨 2 - 코딩테스트 고득점kit 해쉬 : 전화번호 목록[자바] 문제난이도 : 레벨2문제 :전화번호부에 적힌 전화번호 중 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하고 결과에 따라 true, false를 리턴하는 문제.전화번호는 String[] phoneBook형태로 주어지게 된다.제한사항 :1 각 전화번호의 길이는 1이상 20이하중복되는 전화번호는 없음답제가 처음 생각한 것은 배열을 정렬한 뒤 가장 작은 수를 가진 배열의 원소를 기준으로 다른 원소들과 비교하여 접두어에 속하는지 판단하는 것이었습니다. import java.util.*;class Solution { public boolean solution(String[] phone_book) { boolean answer = true; ArrayList phone_save_l.. 2024. 6. 12.
스프링 부트 DI - 필드 주입과 생성자 주입의 초기화 시점 DI(의존성 주입)의존성 주입이란 객체가 스프링 빈에 등록된 다른 객체를 필요로 할 경우 해당하는 객체를 가져오는(주입해주는) 행위이다.전통적인 자바에서는 스스로 객체를 생성하거나 찾지만 스프링 부트에서는 이 과정을 외부에서 처리한다. (SOLID원칙을 지켜 객체 간 결합도를 낮추고 코드의 유연성을 증가함.)의존성 주입의 유형생성자 주입수정자(setter) 주입필드 주입일반 메소드 주입포스팅을 하게 된 배경과거 실무에서 저는 이 필드 주입만을 사용하여 DI를 진행했습니다. 그러나 김영한 선생님의 강의를 들으며 이 필드 주입은 그다지 권장하지 않는 방법이다, 라는 것을 배웠습니다.why?-> 필드 주입을 할 경우 객체가 생성되고 난 뒤에 의존성 주입이 일어나기 때문에 객체가 가변적이게 됩니다.-> 이는 다.. 2024. 6. 12.
리액트 커스텀 훅 사용 시 다중상태관리와 클로저의 존재 이유 리액트의 컴포넌트리액트의 컴포넌트는 함수와 클래스로 나뉜다.요새는 함수 컴포넌트를 사용하는 추세라고 한다. 왜냐하면 클래스 컴포넌트는 변경에 취약하여 인스턴스로 만든 속성에 접근이 가능한 반면 함수는 내부 상태를 클로저로 관리하기 때문에 외부에서 접근하지 못한다.또한 클래스 컴포넌트는 리액트 컴포넌트를 반드시 상속 받아야하고 생성자 super 호출 및 render메소드를 반드시 구현해야함.함수 컴포넌트는 리액트 엘리먼트를 반환해야함.클래스 컴포넌트는 상태를 관리하기 위해 this 객체를 사용한다.반면 함수 컴포넌트는 상태관리에 한계가 있기 때문에 등장한 것이 훅(hook)이다.훅(hook)리액트의 useState를 사용하여 함수 컴포넌트의 state값을 변경한다. (클래스의 인스턴스의 경우 this.st.. 2024. 6. 12.
스프링 부트 유효성 검증 예외처리하는 방법(jakarta validation) 시작SI 회사에 재직할때부터 유효성 검증하는 방법은 꽤 자주 바뀌었다. 자바 jsp를 주로 사용해서 그냥 jsp에서 모두 처리를 하고 백엔드에서 처리해야할 로직이 있을 경우에만 service단에서 처리하기도 했다. 나중에는 컨트롤러와 jsp에서 더블체킹하기도 했고 dto의 어노테이션을 사용하여 컨트롤러에서 BindResult 객체를 사용하여 처리를 하기도 했다.사이드 프로젝트를 진행하며 이에 대해 고민하다 나름대로 길을 정하여 그 과정을 포스팅해보고자 한다.Service 처리재직 초반에 사용했던 방법이다. 로그인 API를 예로 들자면, 아이디나 패스워드가 공백은 아닌지, 패스워드 정규식을 만족하는지 등의 체크사항들이 있을 것이다. 그중 프론트엔드에서 처리 가능한 로직은 jsp단에서 전부 체크한다.if(x.. 2024. 6. 12.
[스프링부트] 외부(이카운트) API 연동하여 데이터 통신 feat:HttpUrlConnection 서론 업무 중 외부 API 연동해야 하는 일이 생겼다. 원래라면 만들어둔 소스를 갔다 쓸텐데 Content-Type 관련해서 맞지 않는지 제대로 작동하지 않아서 직접 만들어썼다(라고 말하고 다른 프로젝트에 있던 소스 커스텀만 한거지만). 기능들에 대해 간단히 정리하고 기억하기 위해서 포스팅을 한다. (더 간단하고 쉽거나 효율적인 방법이 있을 수 있으므로 참고만 하시길.) 외부 API 연동관련 정보 연동하기 위해선 몇가지 알아야할 정보가 있다. 나같은 경우 재고관리를 위해 이카운트API라는 것을 사용해야 했고 해당 안내페이지에서 찾을 수 있었다. 다른 API도 홈페이지에 들어가보면 연동에 필요한 기본 정보를 제공하고 있을 것이다. (혹시 모르니 이카운트 URL을 남겨둔다.) https://sboapi.ec.. 2023. 12. 8.
[MYSQL] ROWNUM 으로 번호를 매길 때 특정 조건만 카운팅하는 법 개요 mysql 쿼리문을 사용하여 목록을 추출할 때 순번을 매기는 것으로 ROWNUM을 종종 사용했다. 그런데 이번에 내가 하고 싶었던 것은 목록의 갯수만큼 무조건 +1을 하여 카운팅하는 로직이 아닌 특정 조건에만 +1을 하여 카운팅 하는 쿼리를 만들고 싶었다. 쿼리 고수분들이라면 더 간단하거나 쉬운 방법을 찾을 수도 있었겠지만 내가 찾은 방법은 이렇다. 의식의 흐름 일단 추출하고 싶은 목록을 쿼리로 짠다. SELECT TR.REGISTER_SEQ , TR.ORDER_DEGREE FROM T_REGISTER TR WHERE 1 = 1 //조건절 ORDER BY TR.REGISTER_SEQ 예시로 만든 간단한 쿼리는 이렇다. 'T_REGISTER' 이라는 테이블의 'REGISTER_SEQ, ORDER_DE.. 2023. 11. 25.