일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- visualvm
- docker
- java
- 스웨거
- 남궁성과 끝까지 간다
- Spring Security
- 데이터베이스
- Kafka
- 쇼트유알엘
- emqx
- @jsonproperty
- 프로그래머스
- 웹개발
- MYSQL
- 패스트캠퍼스
- WEB SOCKET
- JWT
- 항해99
- JavaScript
- DB
- EC2
- 스프링의 정석
- 스파르타코딩클럽
- 카프카
- CentOS
- 시큐리티
- Spring
- AWS
- 개인프로젝트
- 생성자 주입
- Today
- Total
목록전체 글 (337)
Nellie's Blog
20. RequestScope 브라우저에서 새로운 요청이 발생하면, 브라우저는 서버에 요청에 관련된 정보를 전송한다. 이를 받은 서버는 브라우저가 보낸 요청 정보들을 보관하기 위해 HttpServletRequest객체를 생성해 요청 정보들을 담아둔다.그 요청정보가 담겨있는 HttpServletRequest객체는 응답결과가 브라우저로 전송될 때까지 유지되며 사용이 가능하다.새로운 요청이 발생해 응답결과가 브라우저로 전달 될 때까지요청정보가 담겨있는 Request객체를 사용할 수 있는데, 이 사용 범위를 RequestScope라고 부른다. 이 HttpServletRequest객체는 서버개발자가 필요에 의해 데이터나 객체를 저장할 수 있고 RequestScope내에서 사용이 가능하다. 하나씩 살펴보자. 1. ..
10. URL Mapping Servlet / JSP URL 주소 - URL주소 : 사용자가 서버에 접속해서 서비스를 받기 위해 입력하는 주소 - URL주소 구성 : 프로토콜://도메인주소(IP)/포트번호/경로1/경로2/경로3/... - 프로토콜 : 서버와 클라이언트간의 통신을 위한 약속 (생략시 http) - 도메인주소(IP주소) : IP주소는 같은 네트워크 망에서 컴퓨터를 구분하기 위해 제공되는 숫자로 구성된 고유 주소. - 포트번호 : 1~65535 번까지 구성된 숫자. 컴퓨터 내에서 프로그램을 구분하기 위해 사용한다.(생략시 80) - 경로1/경로2/경로3..: 이 부분은 서버 혹은 개발 방식이나 분야에 따라 다르게 해석된다. Servlet/JSP에서 첫번째 경로는 Context Path라고 부른..
04. 자바 프로젝트 만들기 원래 지금까지 하던대로 자바 프로젝트를 만들어 보자. ① 클래스가지고 객체를 먼저 생성하고, ② 해당 객체의 주소값을 참조변수에 넣어주고 , ③그 참조변수를 통해서 뭔가 작업을 하는 식으로 보통 개발을 한다. 그런데, 만약에 내가 만든 HelloWorldEn클래스를 HelloWorldKo클래스로 변경을 하고 싶다면 어떻게 해야 할까? 당연히, 객체를 만들었던 클래스명을 먼저 변경해주고, 객체 생성 코드 변경, 메서드에 매개변수로 넣어줄 데이터타입도 변경해야 한다. 자바프로젝트의 문제점. 밑줄 부분을 모두 수정 해야 한다. 지금까지는, 이렇게 무언가가 변경되었을때 수동으로 모두 수정을 해줘야 했다. 다루기에 매우 번거롭다는 불편함을 가지고 있고, 유지보수에도 어려움이 있었다. ..
1. Spring MVC 소개 서블릿API를 기반으로 만들어졌으며 스프링이 가지고 있는 다양한 기능들을 이용해서 웹 어플리케이션을 개발할 수 있도록 만들어진 웹 프레임워크이다. Spring MVC에는 웹 어플리케이션 개발을 위한 다양한 라이브러리가 포함되어 있다. 공식이름은 Spring Web MVC이지만 보통 Spring MVC라고 부른다. 본 과정은 스프링 프레임워크5버전으로 진행된다. SpringMVC 개발방식은 SpringFramework와 동일하게 xml을 이용한방법과 자바어노테이션을 이용한 방법을 사용한다. Servlet / JSP + Spring MVC Library 2. 설치할 프로그램 스프링MVC 프로젝트 자체가 자바언어 기반의 웹 어플리케이션을 개발하는 서블릿/JSP 프로젝트에, 스프링..
public class MainClass { //배열안의 최댓값과 최솟값의 합을 리턴하시오 static int solution(int[] arr) { int k = 0; int min = arr[0]; int max = arr[0]; for(int i=0; i= max) { max = arr[i]; } if(arr[i]
26. 오라클 데이터베이스 설치 현재 오라클사이트에서 11g버전의 database가 제공되지 않기때문에 윤재성선생님의 구글드라이브https://drive.google.com/drive/folders/1f11i7pkl2pOFnWARgHevupQsN-ry8sQL에서 다운을 받았다. setup.exe를 눌러 설치를 진행한다. 관리비밀번호는 1234로 했다. 이 창이 뜨면 우측 하단 비밀번호 관리 클릭 - SYS/ SYSTEM/ SCOTT 에 비밀번호 1234로 설정 cmd창에서 아래와같이 설치된 것 확인 27. SQL Devleoper설치 오라클 데이터베이스를 GUI환경에서 관리할 수 있도록 제공되는 도구이다. 깔끔한 환경으로 편리하게 사용가능하다. 오라클에서 다운로드 - sqldeveloper.exe 더블클..
23. AOP 특정메소드를 호출할때, 그 메소드를 가로채가서 다른 메소드를 먼저 호출하거나 그 이후에 호출하게 만드는 것. 예를 들어, 특정 웹페이지 요청시 로그인 여부를 검사하게 하는것 등으로 활용한다. method1()메소드가 호출될때, AdvisorClass가 가지고 있는 beforeMethod를 호출해라.(method가 호출되기전에) 라는 뜻으로 아래와 같이 beans.xml에 작성해줄 수 있다. 24. execution 명시자 25. @AspectJ 어노테이션 사용하기 지금까지는 어드바이저 역할을 할 클래스를 만들었었다. xml에 설정해놓은 메소드를 찾아서 자동으로 호출을 했었다. 그런데 @AspectJ 를 활용하면 xml파일이 아닌 어드바이저역할을 할 클래스에 직접 세팅할 수 있다. 먼저 , ..
20. Component 빈클래스 자체에 등록하는것. 그동안은 xml 파일이나 자바파일에 빈을 등록한 후 사용을 했다. 그런데 @Component를 사용하면, xml파일이나 빈 컴피그파일(자바파일)에 빈을 등록하지 않아도 자동으로 등록이 된다. 빈 등록이라든지 빈에 관련된 여러가지 내용들을 xml이나 자바파일에 등록을 하게 되는데, xml을 이용하는 방식을 사용할때 Comoponent를 쓰게되면 아래와 같이 작성을 해야한다. "이 패키지들의 component를 다 읽어서 빈으로 등록해줘!" Bean Configuration 자바파일을 이용할때는 아래와 같이 작성해야 한다. 컴포넌트 스캔은 하나의 이름만 지정 가능하기 때문에, 여러이름을 지정하고 싶으면 xml파일이나 자바파일에 수동으로 등록해줘야 한다. ..
16. init, destroy 메서드 xml파일로 init, destroy메서드등록과 자바파일로 등록하는법 비교해보면 아래와 같다. 17. 주입 xml파일로 자동주입등록과 자바파일로 등록하는법 비교해보면 아래와 같다. 18. 어노테이션을 이용한 빈 설정 어차피 만들어질 빈클래스를 xml이나 자바파일에 설정하지말고, 해당 파일(TestBean1)에서 어노테이션으로 간편하게 설정해보자. 우선 아래와 같이 xml파일에 context 네임스페이스를 추가 해줘야 한다. 1) @Required 반드시 주입해야 할 프로퍼티가 있다면 @Required 를 붙여준다. 그러나 스프링 5.1 부터는 @Required를 붙여도 아무런 일이 일어나지 않는다. 반드시 주입해야 할 프로퍼티는 생성자를 통해 주입받는 것을 사용해야..
15. 빈 등록 지금까지는 xml파일에 빈을 등록했었다. 이제부터는 자바파일에 빈 등록을 배워보자. xml으로 빈을 정의하는것과 자바파일로 빈을 정의하는 것을 비교해보자. 자바 파일은 @Configuration 을 붙여주며 시작한다. 자바파일이 xml파일 역할을 하는것이라고 명시해 주는 것이다. 자바파일로 빈을 정의할때는 , 메소드 형태로 빈을 만들어주는데, 이때 메소드 이름이 빈의 id값이 된다. 여기서는 java1이 id값이 된다. main클래스에서 불러올때 java1을 호출해 주는 것이다. 메인클래스 자바파일 호출하는 괄호안에 BeanConfigClass.class를 적으면 BeanConfigClass.java 파일에 세팅해놓은 @Bean 을 찾아서 , 아 여기에서 빈을 정의했구나 ! 판단하고 이 ..
14. 자동 주입 지금까지 Bean을 정의할 때 주입할 객체는 생성자를 통한 주입이나 setter를 통한 주입을 사용했다. 스프링에서는 객체를 주입할 때 자동으로 주입될 수 있도록 설정할 수 있는데, 이름, 타입, 생성자를 통해 가능하며 이것을 auto wire라고 한다. 기본자료형(정수, 실수, 문자열)은 자동주입이 불가능하며 기존의 방식으로 주입해야 한다. 자동주입은 객체만 가능하다. 1) 이름을 통한 주입 xml파일에 id값을 지정해주면 , 변수에 바로 넣는게 아니고 setter메소드를 호출하여 주입해준다. 일반주입과 이름을 통한 자동주입을 비교해보자. 2) 타입을 통한 주입 타입을 통한 자동주입은 , 타입만 같으면 무조건 주입하기 때문에 id값은 생략 가능하다. 3) 생성자를 통한 주입 이렇게 x..
13. 컬렉션 주입 1) List 주입 String, Integer로 이루어진 List컬렉션을 주입해보자. 아래처럼 순으로 값 주기 이번에는 객체로 이루어진 List를 주입해보자. 객체 만들어서 주입 3줄 / 미리 만들어진 빈객체 주입 3줄 property - list - bean class / property - list - ref bean 순으로 작성! 2) Set 주입 set는 중복데이터를 저장하지 않는다. beans.xml에 같은 String, Integer데이터를 넣어도 중복값은 출력되지 않는다. scope를 프로토타입으로 설정해도, 주소가 다른 객체가 생성이 되는데 스프링은 객체의 주소가 달라도 id값이 같으면 중복으로 인지하여 중복값이 출력 되지 않도록 한다. 객체를 계속 생성하고 싶으면 6..
11. 생성자를 통한 주입 의존성 주입(Dependency Injection) - Bean객체를 생성할 때 Bean객체가 관리할 값이나 객체를 주입하는 것 - Bean객체 생성후 Bean객체가 가질 기본값을 자바코드로 설정하는 것이 아닌 Bean을 정의하는 xml코드에서 정의하는것 먼저 매개변수가 1개인 자바코드와 생성자주입을 비교해보자. 일반 자바코드에서는 TestBean.java에 int data1를 매개변수로 갖는 생성자를 1개 생성한 후, MainClass.java에서 TestBean t2 = new TestBean(100); 으로 생성자를 호출했다. 생성자를 통한 주입은 TestBean.java에 int data1를 매개변수로 갖는 생성자를 1개 생성한 후(동일), beans.xml에 bean정..
07. IoC 컨테이너 IoC(Inversion of Control, 제어 역전) 일반적으로 프로그래밍을 작성할 때 프로그램이 흘러가는 흐름이나 생성되는 객체에 대한 제어권을 개발자가 가지는 것과 달리 프레임워크가 가지는 것을 의미한다. 개발자가 직접 객체 생성에 관련된 코드를 작성하는 것이 아닌, 프레임워크가 사용하는 파일에 작성하면 이를 토대로 프레임워크가 객체를 생성하여 반환하고 코드가 동작하는 순서를 결정하게 된다. POJO Class(Plain Old Java Object) 자바 모델이나, 기능, 프레임워크 등에 따르지 않고 홀로 독립적이며 단순한 기능만을 가진 객체들을 의미한다. 자바에서는 이러한 객체들을 Bean이라고 부른다. POPO(PHP), POCO(닷넷 프레임워크), PODS(C++)..
04. 자바 프로젝트 만들기 원래 지금까지 하던대로 자바 프로젝트를 만들어 보자. 평소대로라면, ① 클래스가지고 객체를 먼저 생성하고, ② 해당 객체의 주소값을 참조변수에 넣어주고 , ③그 참조변수를 통해서 뭔가 작업을 하는 식으로 보통 개발을 한다. package kr.co.softcampus.beans; public class HelloWorldEn { public void sayHello() { System.out.println("Hi~~~"); } } package kr.co.softcampus.main; import kr.co.softcampus.beans.HelloWorldEn; import kr.co.softcampus.beans.HelloWorldKo; public class MainCla..
09. 관심사의 분리와 MVC패턴 - 이론 OOP 5대설계원칙 - SOLID 1. SRP - 단일책임의 원칙 : 하나의 메서드는 하나의 책임(관심사)만 진다. 2~5번째는 나중에 배울 것이다. 관심사가 분리되지 않은 YoilTeller코드 앞에서 만들었던 YoilTeller코드를 보자. 크게 입력코드, 요일계산하는코드, 출력코드 이렇게 3부분으로 해야할 작업(관심사)이 나뉘어 있다! 그렇게되면 바로 위의 설계원칙인 SRP-단일책임의 원칙에 위배된다. 하나의 main메서드에서 3가지 작업을 하고 있다..!!! 어떻게 해결할 것인가? 객체지향적코딩을 하려면 코드의 분리를 잘 해야한다. 1) 관심사 분리 2) 변하는것, (자주)변하지않는것의 분리 3) 중복코드의 분리 공통 코드의 분리 - 입력의 분리 입력부분..
07. HTTP 요청과 응답 - 이론 HTTP란? Hyper Text Transfer Protocol. 하이퍼텍스트(html)를 전송하기위한 규칙. 세가지 특징이 있다. 1) 사람이 읽을 수 있는 텍스트 기반의 프로토콜이다. 2) 상태를 유지하지 않는다(stateless). 클라이언트 정보를 저장x -> 보완하기위해 쿠키 & 세션을 사용한다. 3) 확장가능하다 - 커스텀 헤더(header) 추가가능. 표준에 정해놓지 않은 헤더를 맘대로 추가 가능하다. HTTP 요청, 응답 메시지 우리는 단순히 URL을 입력할 뿐이지만, 브라우저가 알아서 요청메시지를 만들어준다. HTTP 메시지 - 응답메시지 HTTP 메시지 - 요청메시지(GET/ POST) 08. 텍스트와 바이너리, MIME, Base64 바이너리 파일..
05. 클라이언트와 서버 서버의 포트 한대의 서버컴퓨터(IP주소 1개)안의 여러 서버 프로그램이 있을 때, 클라이언트가 요청을 했을때 원하는 서버를 찾기위해 포트번호도 추가로 적어줘야 한다. 웹서버는 기본적으로 80이고, 80은 생략 가능하다. 미리 서버가 포트에서 기다리고(Listening)있어야 클라이언트 요청과 잘 연결(binding)된다. 포트번호 0~1023번까지는 예약된 번호여서 사용불가, 총 65535개의 포트를 사용할 수 있다. WAS란? 웹 어플리케이션 서버(WAS) : 웹 어플리케이션을 서비스하는 서버. 서버에 프로그램을 설치해놓고, 클라이언트가 이 프로그램을 사용할수 있게 해준다. 프로그램을 클라이언트에 설치할수도 있지만, 서버에 설치하는 이유는 ? 예전에는 각 컴퓨터에 프로그램을 다..
03. HTTP 요청과 응답 - 실습 지금까지는 원격프로그램의 결과를 톰캣의 콘솔에 출력했었는데, 이번엔 톰캣이 아니라 브라우저에 출력을 해보자! 연월일을 입력시 요일을 알려주는 프로그램 (클래스 YoilTeller)을 만들어 보자. package com.spring.fastcampus.ch2; import java.util.Calendar; //연월일을 입력시 요일을 알려주는 프로그램 public class YoilTeller { public static void main(String[] args) { //1. 입력 String year = args[0]; String month = args[1]; String day = args[2]; int yyyy = Integer.parseInt(year); i..
서블릿을 알아보기 전에 WAS에 대해 먼저 알아보자. WAS가 뭐야? 기존 웹에서는 웹서버로 정적자원만 반환을 하다가, 점점 동적 웹에 대한 수요가 커져갔다. 그에 따라 DB에 접근하고, 다양한 로직처리를 통해 동적 자원을 만드는 뭔가가.. 필요해졌다! 그 뭔가..가 DB에서 받아온 데이터들을 요리조리 요리해 줄수 있었으면 좋겠어! 그것이 WAS이다...!!! DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server. HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다. “웹 컨테이너(Web Container)” 혹은 “서블릿 컨테이너(Servlet Container)”라고도 불린다. Container란 JSP,..
01. 원격 프로그램의 실행 원격 프로그램을 실행시키려면 2가지가 필요하다. 브라우저와 WAS(톰캣)이다. 브라우저URL에 IP주소를 입력하면 WAS가 8080포트를 호출해서 프로그램을 실행시키는 것이다. 여기서 아무 프로그램이나 실행시킬수 없기때문에 두가지가 필요하다. 1. 프로그램 등록 (@Controller 어노테이션을 클래스 앞에 붙여준다.) 2. URL과 프로그램을 연결 (@RequestMapping 어노테이션을 호출하려는 메서드 앞에 붙여주고, URL키워드를 써준다.) 먼저, ch2 project를 만들어보자. src/main/java폴더 안에는 자동으로 HomeController.java파일이 들어가있다. 열어보면, 이렇게 필수 두가지 어노테이션이 잘 들어가 있다. package com.fa..
01. Spring Framework는 무엇일까? 강의 내용 1. Spring Framework를 배울 준비 - 개발도구, 설치, 설정 2. Spring MVC - 웹의 기초, HTTP, TCP, IP 3. Spring DI 4. Spring AOP | Spring의 핵심 개념 5. MyBatis - DB 6. REST Api 7. Spring MVC로 웹사이트 만들어 보기 with AWS 수업자료 : https://github.com/castello/spring_basic 02. Spring 개발도구 소개 1. 자바개발도구 : JAVA 11 (Java 11부터는 Oracle JDK와 open JDK가 동일) - JDK 2가지 1) Oracle JDK (공식) 2) open JDK : IBM, RedHa..
👉 5주차 수업목표 1. '버킷리스트'를 완성한다. 2. EC2에 내 프로젝트를 올린다. (배포) 👉 5주차 설치 1. Filezilla 설치하기 (내 작업물을 클라우드에 올리기위해 파일을 보낼수 있는 프로그램) 2. 가비아 가입하기 & 도메인 구입하기 👉 버킷리스트 사이트 만들기 - 버킷리스트 목록을 기록하고, 완료 버튼을 누르면 취소선이 그어지도록 만들어 보자! - 힌트 : 취소선이 그어지도록 만든다는 것은? 넘버링이 되어야 한다는 뜻! 어떤 목록을 취소선 그을지 알아야 하니까! 패키지 설치하기 3개 : flask, pymongo, dnspython (기본으로 3개 설치하고, 크롤링 할거면 request, bs4추가) 1. 서버 만들기 (순서대로 작성) from flask import Flask, r..
👉 4주차 수업목표 1. Flask 프레임워크를 활용해서 API를 만들 수 있다. 2. '화성에 땅사기' API를 만들고 클라이언트에 연결한다. 3. '스파르타피디아' API를 만들고 클라이언트와 연결한다. 1,2주차에는 html,css,js를 배웠고, 3주차에는 서버를 다룰수있는 python과 저장소인 db를 배웠다. 4주차에는 드디어 서버를 배워본다! 👉 Flask 시작하기 - 서버만들기 참고) 파이썬으로 웹개발을 할 때 가장 유명한 것은 Django(장고)인데, 장고는 무겁고 기능이 많아서 복잡하여 초보가 쓰기 쉬운 라이트한 flask프레임워크를 사용한다. (자바의 Spring) - HTML과 mongoDB까지 연동해서 서버를 만들어보자! 1. 파이참에서 Flask 패키지 설치 (Flask 프레임워..
👉 3주차 수업목표 1. 파이썬 기초 문법을 안다. 2. 원하는 페이지를 크롤링 할 수 있다. 3. pymongo를 통해 mongoDB를 제어할 수 있다. 👉 3주차 설치 1. Python 설치 파이썬을 설치한다는것은? → 일종의 번역팩을 설치하는것. 컴퓨터는 101010001 과 같은 언어만 알아듣는데, 파이썬 문법으로 된 것을 101010001로 변환해줄 수 있도록, 번역 패키지를 설치하는 것!!! 2. (윈도우만!) Git bash 설치 👉 2주차 연습 겸 복습 - 스파르타피디아에 OpenAPI 붙여보기 - 아티클들의 정보를 불러오는 OpenAPI를 써서 저장된 포스팅 불러오기(GET)를 만들어보자! 아래 처럼! ..... // ⭐id="cards-box"를 이용해서 이쪽에 append해주자! 영화..
2주차에서는, HTML파일을 받았다고 가정하고, Javascript로 다시 서버에 데이터를 요청하고 받는 방법을 배운다. jQuery를 이용해 Javascript로 HTML을 쉽게 제어하고, Ajax를 이용해 다시 서버에 데이터를 요청하고 받아보기! 👉 jQuery 란? - HTML의 요소들을 조작하는, 편리한 Javascript를 미리 작성해둔 라이브러리! (쓰기 전에 "임포트"필수! 아래와 같이 head안에 한줄 넣어주면 끝!) Javascript로도 모든 기능(예 - 버튼 글씨 바꾸기 등)을 구현할 수는 있지만, 1) 코드가 복잡하고, 2) 브라우저 간 호환성 문제도 고려해야해서, jQuery라는 라이브러리가 등장하게 됨. - jQuery와 Javascript 코드 비교 document.getEle..
제이쿼리(jQuery) 선택자 선택자명 설명 $("tag") tag라는 이름의 모든 태그 요소를 선택 $(".class") class라는 클래스명의 모든 클래스 요소를 선택 $("#id") id라는 아이디명의 아이디요소를 선택(한페이지에 1개만 가능) $("div li") div에 있는 li모두 선택 $("div > p") div의 p태그라는 직계자식을 선택 $(this) 현재선택중인 요소를 가리킴 ※ 선택자 태그 입력 시 홑따옴표(') 또는 쌍따옴표("") 모두 입력가능 $('') 또는 $("") 제이쿼리(jQuery) 메소드 모음 분류 메소드 설명 일반노드찾기 $(선택자).length 찾은개수 구하기 $(선택자).eq(index) n번째 노드 접근하기 $(선택자).get(index) $(선택자)[in..
👉 웹의 동작 개념 (로컬 개발 환경) 👉 웹의 동작 개념 (배포) 👉 HTML / CSS 기초 - 로그인 페이지 만들기 로그인 페이지 아이디, 비밀번호를 입력해주세요 ID: PW: 로그인하기 background-image: url(''); background-position: center; background-size: cover; --> 배경넣을때 이 3줄은 항상 같이 다닌다. 👉 구글 웹폰트 입히기 https://fonts.google.com/?subset=korean Google Fonts Making the web more beautiful, fast, and open through great typography fonts.google.com 구글 웹폰트 사이트 접속 -> 마음에 드는 폰트 클릭..
- 자바스크립트를 사용하기앞서, Visual Studio Code 와 Node.js 를 설치해준다! - Node.js 란 ? "Node.js is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser" Node.js를 정의하는 문장. 우리가 자바스크립트 언어의 문법에 맞게 코딩을 했을 때 컴퓨터가 이를 해석해서 처리할 수 있도록 해주는 일종의 전용번역기. 이 번역기가 이전에는 웹브라우저에만 있었지만, 우리 컴퓨터에 Node.js만 설치해주면 웹브라우저가 아닌 곳에서도 자바스크립트 코드를 실행하..
문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 예시 arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] 코드 해석 및 전체 코드 1. 배열 길이를 구하기 2. 나누어 떨어지는 값이 없으면 배열 값 -1 반환 3. 구한 배열 길이 만큼 배열 선언 4. 나누어 떨어지는 값 배열에 저장 5. 정렬 class Solution { public int[] solution(int[] arr, int divis..