일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @NotEmpty
- 여러인수
- 자료구조
- C
- 10951
- pscp
- @Spring
- 디자인패턴
- 백준
- createQuery
- @ModelAttribute
- designpattern
- 점세개
- Spring
- decorator
- setParameter
- 10844
- gradle
- mycp
- Linux
- 데코레이터패턴
- 자바
- junit
- 쉬운 계단 수
- NamedParameterNotBound
- 전치행렬 #C
- java
- BubbleSorting
- 숫자야구
- springboot
- Today
- Total
목록전체 글 (66)
...

next() -> '토큰'의 개념으로서 문자열을 입력받는다. 따라서 앞뒤 공백이나 스페이스가 구분자로 인식되어 입력값으로 들어오지 않는다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s; while(sc.hasNext()) { s = sc.next(); System.out.println(s); } } } nextLine() -> nextLine()은 토큰 단위로 입력값을 받아오는 게 아닌 콘솔창의 한 문장을 간격으로 입력값을 받아온다. 따라서 앞뒤에 공백이 있거나 중간에 space가 있어도 이를 구분자로 사용하지 않..

문제를 이해 못 해서 헤맸다... 한 케이스 입력 -> 결과 출력 -> 다시 입력 -> 출력 -> 입력값이 더이상 없으면 종료 Scanner 의 hasnext()를 이용하여 문제를 해결하였다. import java.util.Scanner; public class Main { public static void main(String[] args) { int a,b; Scanner sc = new Scanner(System.in); while(sc.hasNext()) { a = sc.nextInt(); b = sc.nextInt(); System.out.println(a+b); } } }
[ Unable to find method ''java.lang.String org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()''. Possible causes for this unexpected error include: Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) ] 프로젝트의 gradle > wrapper > gradle - wrapper.properties 의 distributionUrl=https\://services.gradle.org/distributions/gradle-6.8..

Make 도구는 리눅스에서 여러 파일들을 관리 해주는 도구이다. 이를 이용함으로써 개발자는 여러 파일들을 쉽게 묶을 수 있고, 반복되는 컴파일을 자동화 할 수 있으며, 모듈화 프로그래밍을 쉽게 구현할 수 있게 된다. 이제 Make 도구를 어떻게 활용할 수 있는지 예시를 살펴 보도록 한다. 정말정말 간단한 계산 프로그램을 구현 하도록 한다. add/ sub 두 가지 연산을 모듈화 프로그래밍을 통해 Makefile을 이용해 구현해 볼 것이다. 일단 헤더 파일과 헤더 파일의 메소드를 구현한 공용 C파일 하나를 구현해 주었다. 이 두 파일은 Add 프로그램에도 이용되고, Sub 프로그램에도 이용될 것이다. //Header.h #ifndef MAKEHEADER_H #define MAKEHEADER_H void P..
[ MyShell 구현 ] 리눅스 터미널에서 명령어를 받아 처리한 후 결과를 출력하는 Shell 프로그램의 구현 [ 프로그램 구현 흐름 ] 1. 현재 디렉토리 name 출력하기 2. 사용자로부터 명령어 입력 받아오기 3. 명령어 토큰화 하기 (단어별로 나누기) 4. 프로세스 fork하여 자식 생성하기 5. 부모 프로세스가 wait 하는 동안 자식 프로세스 동작(명령어 실행) 6. exit 입력시 Shell 중단 [ 구현 전 알아야 하는 부분 ] shell 프로그램을 구현할 때 반드시 알고 있어야 할 부분은 리눅스의 명령어는 내부 명령어와 외부 명령어로 나누어져 있다는 점이다. 외부 명령어는 자식 프로세스의 exec 시스템 콜에 의하여 모두 처리 가능하다. 보통 대부분의 명령어들이 외부 명령어이다. 하지만..

데코레이터 패턴이란 , 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. [위키 백과] 쉽게 정리하면, 기본 객체에 추가적인 기능을 유연하게 첨가하는 패턴이다. 기본 객체를 변경 없이 기본 객체를 꾸며주는 것이다. [ 데코레이터 패턴의 장점 ] [1] 위임을 통해 새로운 행동을 유연하게 추가할 수 있다. [2] 기존 코드의 수정 없이도 손쉽게 기능을 확장할 수 있다. 피자를 한 번 생각해보자. 피자 도우가 있다고 하자. 피자의 도우는 기본 객체가 된다. 그리고 이 위에 여러 개의 토핑들을 추가할 것이다. 토핑은 기능이라고 생각하자. 피자의 도우 위에 사용자가 추가로 하는 토핑들을 차례로 얹을 것이다. 페페로..

옵저버 패턴이란, 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. [위키 백과] 즉, 옵저버 패턴을 이용하면 별도의 함수 호출 없이 자동적으로 다른 객체의 상태 변화를 알 수 있다. [ 옵저버 패턴의 장점 ] [1] 객체와 옵저버 객체 사이의 연결이 매우 느슨하다. 맺고 끊기 쉬우며 서로가 서로에게 많은 영향을 주지 않는다. 따라서 시스템이 유연해지며 객체 간의 의존성을 제거할 수 있다. [2] 실시간으로 변경 사항을 옵저버들에게 전달할 수 있다. 예시를 들어서 설명해 보자. 어느 회사에 부서원 A,B,C가 있다고 하자. 부서원들은 회사 내부의 변경 사항이 생길 때마..

어댑터란 무엇일까? 물리적인 의미로 이야기 하자면, 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어주는 결합 도구이다. 예시로 이야기 하자. 충전 단자 부분이 USB 형식인 애플 충전 케이블이 있을 때, USB 포트 부분을 전원 소켓과 연결할 수 있도록 하는 통로 역할을 해주는 것이 어댑터(Adapter)이다. 이를 디자인 패턴, 프로그래밍과 연관 시켜 보자. 기존에 사용하던 A 인터페이스가 있고, 추가적으로 외부에서 들어온 B 인터페이스가 있다. 이를 연결하려면 인터페이스 2개 중 하나를 대폭 수정하여야 할 것이다. 서로의 형식에 맞추어야 하기 때문이다. 이런 경우 두 인터페이스 중 어떤 코드도 변경하지 않고 사용 가능하도록 한 것이 어댑터 패턴이다. 어댑터 패턴의 class diagr..