IoC Container의 기능, 장점 설명해주세요.
·
Interview
IoC란? - 제어권 역전 - 생성, 생명주기 관리까지 모든 객체에 대한 제어권이 바뀌었음을 의미 IoC Container - Spring Framework도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능 - IoC Container는 객체의 생성을 책임지고, 의존성을 관리한다. - POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다. - 개발자는 직접 POJO를 생성할 수 있지만 컨테이너에 맡긴다. - 장점: 개발자는 객체 관리를 컨테이너 맡기고, 로직에만 집중할 수 있다. IoC 종류 DL(Dependency Lookup) 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Lookup 하는 것 DI(Dependency Injection): 의존성 ..
Problem2
·
Algorithm/Socar
문제설명 - int[] numbers가 있다. - 각 요소들은 인접한 요소와 값의 차가 k이하가 되어야 한다. - k 이하가 안되면 swap을 해서라도 k이하가 되게 만들어야 한다. - 최소 swap 횟수를 구한다. - numbers의 길이는 최대 8이다. 입출력 정보 input - int k - int[] numbers output int answer(최소 swap 횟수) Code Solution.class package jason.socar.problem2; import java.util.*; public class Solution { static Set answerSet = new HashSet(); static int sum=0; public int solution(int k, int[] numb..
Problem1
·
Algorithm/Socar
문제 설명 - 각 섬(=노드) 사이를 자전거 타고 활보한다. k 시간에 정차 할 수 있는 섬들은? - 간선의 값은 이동거리를 의미한다. - 섬은 중복해서 이동할 수 있다. - 시작 노드는 0 이다. 입출력 정보 Input - int n(노드의 수): 0~n-1까지 노드가 존재 - int k(도착시간) - int[][] roads(간선 정보) int[][] roads={{5, 4, 6}, {5, 2, 5}, {0, 4, 2}, {2, 3, 3}, {1, 2, 7}, {0, 1, 3}}; //roads[0]= {5,4,6}; //노드 5와 노드 4 사이 간선의 길이는 6 Output - int[] answer(k 시간에 도착할 수 있는 노드들의 집합) Code Solution2.class package ja..
11053. 가장 긴 증가하는 부분 수열(Java)
·
Algorithm/BaekJoon
문제 링크 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 풀이 DP 문제입니다. n의 범위를 고려해서 이중 for문을 사용했습니다. 코드 package jason.baekjoon.problem11053; import java.util.Scanner; public class Main { public static void main(String[] args) { S..
Spring framework로 개발한 이유는? Spring의 장점을 설명해보세요
·
Interview
Spring Framework란?- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크- 동적인 웹 개발하기 위한 여러 가지 서비스 제공Spring Framework의 장점은?1. 라이브러리 관리 자동화 기존 스프링 자바 프로젝트는 maven 또는 gradle을 이용해서 라이브러리 의존성을 관리한다. 하지만 Spring Boot는 spring-boot-starter을 이용해 특정 기능에 필요한 라이브러리 의존성을 더욱 간단히 처리할 수 있다. spring-boot-starter의 역할이 뭐지?- Spring Boot를 사용하면서 자주 사용하게 되는 라이브러리간의 의존성, 버전 조합을 제공한다.- 예를들어, 기존에 aspectJ를 이용한 AOP를 이용하고 싶으면 org.springframework:spr..
Quick Sort(퀵 정렬)
·
Algorithm
퀵정렬 합병 정렬(merge sort)과 달리 퀵 정렬은 리스트를 비균등하게 분할 pivot을 기준으로, pivot보다 작은 원소는 왼쪽, 큰 원소는 오른쪽으로 이동 start, end을 지정해서, 위의 조건을 만족하면 swap한다. start>end가 되는 순간 리스트를 분할한다. 분할된 리스트들은 각각 quick sort을 진행한다. 분할된 리스트의 원소 갯수가 1개가 되면 더 이상 quick sort 진행 X 코드 package jason.quicksort; import java.util.Arrays; public class QuickSort { static void quickSort(int[] arr) { quickSort(arr, 0, arr.length - 1); } static void qu..
SOLID, 객체 지향 설계 원칙
·
Programming/Java
SOLID객체 지향 설계 다섯 가지 원칙- S: Single Responsibility Principle- O: Open Closed- L: Liskov Substitution Principle- I: Interface Segregation Principle- D: Dependency Inversion PrincipleS: Single Responsibility Principle, 단일 책임 원칙- 하나의 클래스는 하나의 책임(기능)을 가져야 한다.- 책임의 캡슐화public class Car{ private Seat seat; private Heater heater; private Wheel wheel;}O: Open Closed Principle, 개방 폐쇄 원칙- 기능 추가 시, 기존..
Http 상태코드
·
Network
1xx 요청 수신되어 처리 중 거의 사용 X 2xx 요청 성공 200, 201, 202, 204 201 Created 요청 성공해서 리소스 생성 Location header를 응답에 추가 생성된 리소스는 Location header(리스소 위치) 필드로 식별 202 Accepted 요청이 접수되었으나 처리가 완료되지 않음 배치 처리에 주로 사용 거의 사용 X 204 Not Content 서버 요청 성공했지만, 응답 페이로드 본문에 보낼 데이터가 없음 ex) save 버튼. save 눌러도 같은 화면 유지 3xx Redirection 요청 완료를 위해 유저 에이전트(웹브라우저) 추가 요청 301, 302, 303, 307, 308 리다이렉션 흐름 웹 브라우저는 3xx 응답 결과에 Location heade..
업캐스팅, 다운캐스팅
·
Programming/Java
캐스팅이란?- 타입을 변환하는 것. 형변환- 부모와 자식 클래스 간 형변환 가능 Upcasting- 자식 클래스의 객채가 부모 클래스 타입으로 형변환 되는 것- p는 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 멤버에만 접근 가능하다.class Person{ String name; Person(String name){ this.name = name; }}class Student extends Person{ String check; Student(String name){ super(name); }}public class Main{ public static void main(String[] args){ Student s = new Student("홍길동"); Per..
ArrayList vs LinkedList
·
Programming/Java
모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. 하지만 인터페이스만 같을 뿐 내부적으로 동작하는 방식은 다르다. ArrayList- 내부적으로 데이터를 관리.- 데이터 추가/ 삭제를 위해 임시 배열을 생성해 데이터를 복사- 인덱스 기반 자료구조이기 때문에 검색에 유리- 대량의 자료를 추가/삭제 하는 경우 그만큼 데이터의 복사-> 성능 저하 LinkedList- 데이터를 저장하는 각 노드는 이전 노드와 다음 노드 상태만 알고 있다. - 추가/ 삭제 시 불필요한 데이터 복사가 없어 데이터 추가/ 삭제에 유리- 검색 시, 인덱스가 없기 때문에 처음부터 노드 순회-> 성능 저하데이터 검색, 삽입, 삭제 시 성능 비교검색- ArrayList: O(1). 인덱스 기반 자료구조..