전체 글 40

[프로그래머스] 순열 검사

알고리즘 문제 해설 - 순열 검사 프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어 programmers.co.kr 문제 설명 길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다. 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요. 제한 사항 배열의 길이는 10만 이하입니다. 배열의 원소는 0 이상 10만 이하인 정수입니다. 입출력 예 arr answer [4, 1, 3, 2] true [4, 1, 3] false..

코딩테스트 2021.12.06

Linux에서 Mosquitto로 MQTT 통신을 해보자! | Mosquitto 사용

MQTT란 장치 간에 저전력으로 메시지를 전송하는 경량의 구독, 발행 네트워크 프로토콜을 말한다. ​ 네트워크 프로토콜이라고 하지만 일반적으로 TCP/IP를 통해 실행이 된다. ​ MQTT를 사용하기 위해서는 여러 가지 용어를 알아두면 유용하다!! 👉 Broker(브로커) : MQTT 서버이며 장치(이하 client)와 장치(client)를 연결해 주는 역할을 한다. Mosquitto가 Broker이다. ​ 👉 publish(발행) : client는 Broker로 message를 발행할 수 있다. 이때 해당 message를 구분하기 위한 키를 넣어서 보내는데 이걸 Topic이라고 한다. 발행을 하는 client를 publisher(발행자)라고 한다. ​ 👉 subscribe(구독) : client가 br..

ETC 2021.12.03

[프로그래머스] 자릿수 더하기

알고리즘 문제 해설 - 자릿수 더하기 프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어 programmers.co.kr 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한 사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 N answer 123 6 987 24 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다. 입출력 예 #2 9 + 8 + 7 = 24이므로 24를 r..

코딩테스트 2021.12.03

Java 8에 추가된 것들 2

람다(Lambda) 표현식 / 함수형 인터페이스(Functional Interface) 람다 표현식과 함수형 인터페이스는 밀접한 관계가 있어서 함께 정리했다. 메소드가 하나인 인터페이스를 익명클래스로 구현할 수 있는데 익명 클래스를 사용하면 가독성도 떨어지고 코드가 길어지는 단점이 있다. 이러한 단점을 보완하기 위해서 람다 표현식이 만들어졌고 익명 클래스로 구현된 인터페이스를 좀더 간단하게 표현하기위해서 사용되어진다. 람다표현식은 인터페이스에 메소드가 하나인 것들에만 적용이 가능하다. 아래는 익명 클래스를 람다표현식으로 바꾼 예제이다. interface TestInterface{ int calculate(int a, int b); } //익명 클래스 TestInterface calculateAdd = n..

Backend/JAVA 2021.09.17

Java 8에 추가된 것들 1

내가 쓰는 언어의 버전에서 어떤걸 사용할 수 있는지 알아보고자 정리하였다. 먼저 자바 8에서 추가된 주요 기능들을 나열하면 아래와 같다. 1. Optional 2. 인터페이스의 기본 메소드(Default method) 3. 날짜와 시간 관련 클래스들 추가 4. 병렬 배열 정렬 5. StringJoiner 추가 6. 람다(Lambda) 표현식 7. 함수형 인터페이스(Functional Interface) 8. 스트림(Stream) Optional(옵셔널) 선택적으로 뭔가를 처리 할 때 사용하는 것으로 객체를 편리하게 처리하기 위해서 만든 클래스다. Optional클래스는 null 처리를 보다 편리하게 하기 위해서 만들어졌다. NullPointerException이 발생할 수 있는 상황에서 문제를 보다 간편..

Backend/JAVA 2021.09.09

Spring Bean 설정 방법

1. XML 설정 사용 XML을 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있다. 빈 설정에 에러가 났을 경우 컴파일러가 이를 잡아주지 못하고 문제가 생겼을 경우에 원인을 찾는게 어렵다. 최근에는 스프링 부트를 많이 사용하면서 XML기반의 설정은 잘 사용하지 않는다. XML 설정 방법 resources폴더 아래에 xml파일을 생성하여 설정한다. [appConfig.xml] id : 등록할 빈의 이름 class : 패키지명을 포함한 빈으로 정의할 클래스 scope : 빈의 스코프(singleton, prototype, reqeust...), 설정하지 않으면 기본적으로singleton이 적용된다. autowired : 기본적으로 타입과 이름, 생성자등이 있다.(autowired방법) constructo..

Backend/Spring 2021.08.29

스프링 빈(Bean)

빈이란? 자바 객체를 말하며 스프링에서는 IOC컨테이너를 제공하는데 이 컨테이너가 관리하는 객체를 빈(bean)이라고 합니다. 빈은 IOC컨테이너에 의해서 인스턴스화 되고 조립 및 관리되는 객체입니다. IOC Container, DI Container 어떤 객체가 사용하는 의존 객체를 직접 생성해서 사용하는 것이 아니라 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 말하며 이러한 개념을 토대로 만들어진 것을 IOC Container 또는 DI Container라고 합니다. 스프링에서는 BeanFactory, ApplicationContext가 IOC로 만들어진 인터페이스이며 ApplicaitonContext를 Spring Container라고 합니다. BeanFactory 스프링 컨테이너의 최상..

Backend/Spring 2021.08.20

빈 스코프(Bean Scope)

빈 스코프(Bean scope) 빈이 존재 할 수 있는 범위를 뜻하며 스프링은 빈 등록시 기본적으로 싱글톤 스코프를 사용하고 있습니다. @Scope를 통해 스코프를 지정해 줄 수 있습니다. 싱글톤(Singleton) 스프링의 기본 스코프로, 스프링 컨테이너의 시작과 종료까지 유지되는 가낭 넓은 범위의 스코프 범위. 싱글톤 스코프로 빈을 등록하면 맨 처음 객체가 한번 생성됩니다. 빈 요청을 할 때 항상 동일한 인스턴스를 반환하여 사용 할 수 있습니다. 스프링에서@Component로 클래스 파일을 생성하면 싱글톤 스코프로 등록이 됩니다. @Test void singletonBeanTest(){ AnnotationConfigApplicationContext context = new AnnotationConfi..

Backend/Spring 2021.08.20

[Hook] useEffect, useLayoutEffect 차이

간단하게 useEffect와 useLayoutEffect의 차이점에대해 알아봤다. useEffect는 DOM이 화면에 그려진 후 발생된다. 그래서 만약 아래와 같은 코드가 있을시에 빈값이 잠깐보였다가 값이 추가된걸 볼 수 있다. ... useEffect(() => { setName("홍길동"); },[]) ... return ( 이름 : ${name} // "이름 : "-> "이름 : 홍길동" ) ... 이때 useLayoutEffect를 사용하면 DOM이 화면에 그러지기 전에 발생됨으로 값이 할당되고 나서 DOM이 그려지기 때문에 빈값을 안 볼 수 있다. - useEffect의 이펙트는 DOM이 화면에 그려진 이후에 호출된다. - useLayoutEffect의 이펙트는 DOM이 화면에 그려지기 전에 호..

Frontend/React 2021.08.06

Spring 실행 중 Tibero DB Archive Log Full 처리

staging서버에서 데이터가 안올라온다고 하길래 원격으로 확인을 해봤다... 먼저 tomcat로그로 무슨상황인지 봤는데... DB에 데이터를 넣고있는 스케줄러에서 계속 에러가 나오고 있었다. 에러내용은 SQLException으로 DB Log directory가 가득 찻다는 내용이였다. DB 서버로 가서 확인해보니 역시 Archive 파일?이 저장되는 디렉토리가 가득차있었다. 해당 파일을 저장해야하는데 disk가 꽉 차있으니까 Archive Hang이 걸린것이었다. Archive파일은 나중에 백업할때 필요 할 수 있기때문에 다른곳으로 백업해두고 tibero를 재실행하여 에러를 해결하였다... 운영서버에서도 똑같은 에러가 났었던거같은데 그때는 tibero 엔지니어분이 따로 파일을 관리하는 작업을 해둔거같다..

Error resolution 2021.08.06