[프로그래머스] 숫자의 표현 - Java(자바)
·
자바/코딩테스트
문제 이해 자연수 n 표현하는 자연수들의 개수를 구하여라(단 연속된 자연수로) 1 ~ n 까지의 자연수의 연속된 합이 n이 되는 경우를 구한다. 배열에 1 ~ n까지 값을 세팅 1 부터 n까지 값을 더하면서 sum이 n과 같으면 answer++ sum 이 n보다 작으면 sum에서 left인덱스 위치의 값을 빼고 left index를 증가시킨다. sum 이 n보다 크면 sum에서 right인덱스 위치의 값을 더하고 right index를 증가시킨다. 배열을 다 소모하기전까지 반복 class Solution { public int solution(int n) { int answer = 0; int[] numList = new int[n]; for(int i = 0; i n){ sum -= numList[le..
[프로그래머스] 올바른 괄호 - Java(자바)
·
자바/코딩테스트
문제이해 괄호의 종류는 "(", ")" 로 한가지 이다. 문자열을 한글자씩 잘라서 모양을 비교한다. "(" 열었으면 +1 ")" 닫았으면 -1 로 숫자를 구한다. -1이 되면 ")" 닫은 괄호가 더 많으므로 잘못된 괄호로 false 로 나간다. 최종 cnt 값이 0이 아니면 열고 닫음의 개수가 동일하지 않으므로 false class Solution { boolean solution(String s) { boolean answer = true; String[] word; // 스트링을 담을 배열 //사실상 가장 간단함 word = s.split(""); //배열에 한글자씩 저장하기 int cnt = 0; for(int i = 0; i
쿠버네티스 배포 개념
·
기타
롤링업데이트 서비스 중단없이 어플리케이션을 지속적인 통합과 지속적인 전달을 가능하게하는 방법 디플로이먼트가 외부로 노출되면, 서비스는 업데이트가 이루어지는 동안 오직 가용한 파드에게만 트래픽을 로드밸런스 할 것이다. ​ 디플로이먼트 어플리케이션 인스턴스를 생성하고 업데이트하는 역할을 담당한다. 쿠버네티스 마스터가 해당 어플리케이션 인스턴스를 쿨러스터의 개별 노드에 스케줄링 해준다. ​ configMap 컨테이너에서 필요한 환경설정 내용을 컨테이너와 분리해서 제공해 주기 위한 기능 : 클라우드 네이티브 아키텍처에서 컨테이너는 변하지 않는 자원 기밀데이터를 키-값 쌍으로 저장하기 위해 사용하는 API객체 컨테이너 이미지에서 설정 데이터를 분리시키기 위한 것 Pod의 컨테이너 이미지에서 사용하는 환경변수 및 ..
쿠버네티스(마스터 컴포넌트, 노드, 애드온)
·
기타
마스터 컴포넌트클러스터 전체를 관리하는 컨트롤러마스터 컴포넌트는 클러스터의 컨트롤 플레인을 제공마스터 컴포넌트는 쿨러스터에 관한 전반적인 결정(스케줄링 등)을 수행하고 클러스터 이벤트(디플로이먼트의 replicas 필드가 요구조건을 충족되지 않을 경우 새로운 Pod를 구동시키는 것)를 감지하고 반응마스터 컴포넌트는 클러스터 내 어떠한 머신에서도 동작 가능API Server, Controller Manager, Scheduler, etcd로 구성관리자는 Master의 API Server를 통해 K8s(쿠버네티스)를 관리하며 모든 컴포넌트들은 API Server를 통해 서로 통신한다.kube-scheduler새로운 Pod가 생성될때 조건에 맞는 노드를 찾아주는 역할 kube-controller-manager..
쿠버네티스 오브젝트
·
기타
오브젝트는 사용자가 쿠버네티스에 바라는 상태(desired state)를 의미하고 컨트롤러는 객체가 원래 설정된 상태를 잘 유지할수있게 관리하는 역할을 하는데, 쿠버네티스에 의해서 배포 및 관리되는 가장 기본적인 오브젝트는 컨테이너화되어 배포되는 어플리케이션의 워크로드를 기술하는 오브젝트로 Pod, service, Volume, Namespace 4가지가 있다. ​ Pod는 컨테이너화된 어플리케이션 Volume은 디스크 Service는 로드밸러서 Nampespace는 패키지명을 의미한다.
쿠버네티스 관련 용어
·
기타
도커 컨테이너 도커 컨테이너는 앱을 서로 그리고 기반이 되는 시스템으로부터 계속 분리하는 기능을 제공하며 동시에 더 쉽게 분리된 특정 애플리케이션의 CPU와 GPU, 메모리, I/O, 네트워킹 등 시스템 리소르 사용 방식을 규정할 수 있다. 대부분의 비즈니스 애플리케이션은 웹 서버, 데이터베이스, 인-메모리 캐시 등 하나의 스택으로 구성되는 여러별개의 구성 요소로 구성되는데, 컨테이너는 이런 조각들을 쉽게 변경할 수 있는 부품으로 구성된 기능 유닛으로 결합하여 처리된다. 쿠버네티스 쿠버네티스와 컨테이너 기술은 마이크로서비스아키텍처(MSA) 환경을 구현하기에 가장 적합한 기술로 취급되며, 비즈니스 민첩성이 점점 더 중요해지는 환경에서 컨테이너와 쿠버네티스는 하이브리드 클라우드, 나아가 멀티 클라우드 서비스..
쿠버네티스와 데브옵스
·
기타
데브옵스는 개발 조직과 운영 조직이 물리적으로 격리되지 않는 환경에서 개발, 테스트, 배포, 운영에 이르는 전체 생명주기를 서로 긴밀하게 통합하여 관리하면 데브옵스를 실현하기 위한 수단으로서 필연적으로 마이크로서비스(Microservice)가 등장한다. ​ 컨테이너 가상화는 지속적인 개발, 통합 및 배포에 효과적이다. ​ 컨테이너 오케스트레이션 서비스는 어플리케이션은 더 이상 하나의 통일체가 아니라 특정 어플리케이션이 설계 의도대로 기능하도록 함께 작동해야 하는 수십 또는 수백 개의 느슨하게 결합되고 컨테이너화된 요소로 구성된다. ​ 쿠버네티스와 데브옵스 ​ 컨테이너 기술은 민첩성을 확보하는 핵심 가상화 기술이며, 컨테이너 기반의 가상화 환경을 운영 관리하는 핵심 기술이 바로 쿠버네티스(Kubernete..
스프링 IOC컨테이너 - DI, DL
·
WEB/Spring
IOC(Inversion of Control)란?직역하면 "제어의 역전"이라는 의미 메소드나 객체의 호출을 개발자가 아닌 외부에서 결정되는 것을 의미한다. 객체간의 결합도를 줄여 유연한 코드를 작성할 수 있다.IOC의 컨테이너객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있다.기존방식 1.객체 생성 2.의존성 객체 생성 - 클래스 내부에서 생성 3.의존성 객체 메소드 호출SPRING1.객체 생성 2.의존성 객체 주입 - 객체를 스스로 만드는 것이 아닌, 제어권을 스프링에게 위임하여 스프링에서 객체를 주입 3.의존성 객체 메소드 호출스프링은 모든 의존성 객체를 스프링 컨테이너를 실행될 때 생성하며 의존성을 주입시켜준다.Bean들은 싱글톤 패턴의 특징을 가져 제어의 흐름이 사용자가 아닌 스..
스프링에서 Service ServiceImpl 사용하는 이유
·
WEB/Spring
스프링에서 Service 인터페이스와 ServiceImpl로 구현하는 구조를 사용한 경우를 자주 볼 수 있다.이와 같은 사용 방법은 스프링의 의존성 주입(DI)에 관련 인터페이스를 구현하는것과 연관이 깊다.Service 인터페이스와 ServiceImpl 구조로 사용하는 이유 1. 객체 간의 결합도를 낮추어 유연한 개발을 하기위함, 하나의 인터페이스를 구현 다형성을 줌으로서 하나의 인터페이스만 바라보지 않게 의존관계를 줄일 수 있다. 2. Spring의 AOP Proxy를 만들기 위함, @Transactional 어노테이션 같은 경우 인터페이스가 존재해야지만 동작할수 있기에 필요하다.(AOP는 기본적으로 Dynamic Proxy를 사용 이같은 경우 인터페이스 기반으로 동작, CGLIB를 사용할경우는 예외 ..
스프링 전역 예외처리
·
WEB/Spring
스프링에는 전역 예외처리를 해주는 방법으로 여러가지 방법을 제공한다. 그중 어노테이션으로 처리하는 방법을 알아보려고 한다. @RestControllerAdvice, @ControllerAdvice 이 두 개의 어노테이션은 같은 방식으로 에러를 처리하는 어노테이션이다 다만 두 개의 어노테이션 차이로는 @RestControllerAdvice = @ControllerAdvice + @ResponseBody 로 볼수가 있다. @ControllerAdvice란?@ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들을 AOP를 적용해 컨트롤러 단에 적용하기 위해 고안된 어노테이션이다. @RestControllerAdvice란?@RestControllerAdvice ..
자바)Reflection 사용한 동적 메소드 호출
·
WEB/Spring
메소드를 사용하고자 할때 보통 @Resource 를 통해 빈 객체를 통해 클래스의 메소드를 호출해 오거나User user = new User(); 객체를 내부에 직접 선언하여 메소드를 호출한다. 내가 사용하고자 하는 클래스와 메소드가 명확할때 위와 같이 사용을 한다.하지만 상황에 따라 사용해야하는 클래스와 메소드가 다양하면 객체를 선언하는 빈도가 많고 소스의 길이가 기하급수적으로 늘어났을 경우 동적으로 메소드를 호출하여 이와 같은 상황을 방지하고자 한다. 구현String ClassName = "kbs.class.chair"; // 사용하고자 하는 클래스의 위치(chair 라는 이름의 클래스)Class cls = Class.forName(ClassName); // 클래스이름 정의// 인자가 없을 경우..
스프링-static field에 의존성 주입하여 DAO 사용하기
·
WEB/Spring
회사에서 공통 함수로 DB를 조회하여 시퀀스를 가져오는걸 만들려고 한다.공통 함수의 경우 static 으로 선언하여 로직내에서 따로 선언 없이 가져오게 하였다.public class commUtil { private static Dao dao; // 시퀀스를 조회하여 String으로 리턴 public static String sSequence() { return dao.selectSequence(); }}위와 같이 사용하였을때 Spring Component scan 범위를 벗어나고 static 으로 선언함으로서 객체로 인정 받지 못해 실제로 실행하였을때 Nullpointerexception 으로 해당 메소드를 가져오지 못하게 된다. 이를 보완하고 static 으로 사용할수 있게 아래와..
대전집주인
'분류 전체보기' 카테고리의 글 목록 (5 Page)