목록PROGRAMING (35)
nickjoIT
1. Adapter Pattern 어댑터 패턴은 우리가 잘 알다시피 일상에서도 자주 볼 수 있다. 위의 이미지가 미국식 플러그라 조금 적응 안 되지만,어쨌든 해외에 나가서 이처럼 국내 플러그의 인터페이스에 맞게 전기를 사용하려면어댑터를 이용해서 해외 플러그에 맞게 변환해주어야 한다. 지금 알아보려는 어댑터 패턴도 이와 마찬가지이다. 왼쪽의 기존 시스템과 오른쪽의 업체에서 제공한 클래스 라이브러리.이 2 개의 코드를 바꾸지 않고 중간에서 호환이 가능하게끔 변환해 주는 녀석을 어댑터라고 한다. * Adapter Pattern :한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다.어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. ..
1. 스트림이란 - 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메소드들을 정의해 논것 2. 장점 - 데이터를 추상화하였다는 것은, 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 되었다는 것과 코드의 재사용성이 높아진다는 것을 의미한다 - 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있다 - 코드가 간결하고 이해하기 쉬우면서 재사용성이 높다 String[] strArr = {"aaa","ccc","bbb","aaa"}; List list = Arrays.asList(strArr); Stream stream = list.stream(); // 스트림 생성 Stream stream1 = Arrays.asList(strArr).stream(); str..
1. 람다식이란?- 람다식(Lambda expression)은 간단히 말해서 메서드를 하나의 식으로 표현한 것이다.- 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다.- 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수' 라고도 한다. int[] arr = new int[5]; ArrayList arrList = new ArrayList(); Arrays.setAll(arr, a -> (int)(Math.random()*5)+1); for(int a: arr) System.out.print(a + " "); 2. 람다식의 장점- OOP 언어인 Java에서 함수형 코드를 작성할 수 있게 해준다.- 람다 표현식을 이용함으로써 간결하고 명확한 코드로 그 ..
1. 지네릭스- 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compile-time type check)를 해주는 기능이다.- 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거러움이 줄어든다. 2. 지네릭스의 장점- 타입 안정성을 제공한다.- 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. public class Box { T item; public T getItem() { return item; } public void setItem(T item) { this.item = item; } } public class BoxMain { public static void main(String[] args) { Box box = n..
cp: 파일과 디렉터리 복사mv: 파일과 디렉터리 이동 또는 이름변경rm: 파일과 디렉터리 삭제-r: 일반 파일이면 그냥 삭제하고, 경로라면 그 하위 경로와 파일들을 한번에 모두 삭제-f: 아무런 경고 메시지를 보여주지 않고 강제로 삭제 mkdir: 디렉터리 생성rmdir: 디렉터리 삭제 # 퍼미션chmod: 파일, 디렉터리에 대한 접근 권한을 변경하는 명령su: 일시적으로 수퍼유저 또는 다른 유저로 전환하는 명령chown: 파일, 디렉터리의 소유자를 변경하는 명령chgrp: 파일, 디렉터리의 그룹 소유자를 변경하는 명령 chmod 값 설명 777 (-rwxrwxrwx)모든 접근에 대해 제한을 두지 않는다. 누구나 읽기, 쓰기, 실행이 가능하다. 755 (-rwxr-xr-x)파일 소유자는 읽기, 쓰기, ..
파일 확장자명 의미 .sh 본 쉘, 배시 쉘 스크립트 파일 .txt 일반 텍스트 파일 .log 로그 파일 .html, .htm html 정적 웹페이지 소스 파일 .tgz, .tar.gz, bz2 압축 파일 .php, .php3, .php4,.php5 php 소스파일 .h, .c, .cc, .cpp c/c++ 소스파일(gcc/g++) .py python 소스파일
1. 정의- 대리자로써 일을 맡기면 그 일을 처리하고 완료된 결과를 알려주는 패턴- 실제 사용하려는 객체를 대신해서 역할을 해주는 패턴- 원래 객체의 접근제어를 목적으로 이용된다. 2. 클래스 다이어그램 1) Subject interface- proxy 클래스와 RealSubject 클래스가 구현을 하는 인터페이스로 Client에서는 이 인터페이스만 알고 있으므로 내부 동작은 어떻게 이뤄지는지 모르게 된다.2) Proxy class- RealSubject 객체를 참조하고 있으며, 클라이언트로 부터 들어오는 메소드 호출에 대해서 적절한 행동을 취하게 된다. 비용이 많은 객체 생성, 보안관리, 리모트 콜 등의 작업들이 추가 되어진다.3) RealSubject class- 실제 동작을 하는 클래스4) Clie..
1. Decorator pattern 의 의미- 데코레이터 패턴은 객체의 추가적인 요건을 동적으로 추가한다.- 데코레이터는 서브 클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.- 한 객체를 여러 개의 데코레이터로 감쌀 수 있다.- 기존 코드를 수정하지 않고도 행동을 확장 할 수 있다. 2. 단점- 데코레이터 패턴을 이용해 디자인을 하다 보면 잡다한 클래스가 많아 질 수 있다.- 겹겹이 애워싼 객체의 정체를 알기가 힘들다.- 상속을 통해 확장할 수도 있지만, 디자인 유연성 면에서는 별로 좋지 않다. 3. OCP(Open-Closed Principle)- OCP는 가장 중요한 디자인 원칙 가운데 하나이다.- 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 있어서는 닫혀..
1. 정의- 데이터 군을 저장하는 클래스들을 표준화한 설계를 뜻 한다.- 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다.- 다른 말로는 컨테이너라고 부르는데, 이것은 값을 담는 그릇이라는 의미 이다. - 담는 값의 성격에 따라 컨테이너의 성격이 조금씩 달라지는데, 자바는 다양한 상황에서 사용할 수 있는 다양한 컨테이너를 제공하며, 이것을 컬렉션 프레임워크라고 부른다.- JDK1.2 이전까지는 Vector, Hashtable, Properties와 같은 컬렉션 클래스들을 서로 다른 각자의 방식으로 처리해야 했으나, JDK1.2 부터 컬렉션 프레임웍이 등장하면서 다양한 종류의 컬렉션 클래스가 추가되고 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화되..
1. String- 자바에서 String은 불변객체(immutable instance)이다. ex)1) String hello = "Hello";, 라는 문자열 인스턴스를 메모리에 생성하고 그 래퍼런스를 hello 라는 문자열 변수에 대입한다.2) hello는 단지 "Hello" 라는 문자열 객체를 가리키는 레퍼런스를 담고 있다.3) hello += "and how are you?";, 이 문장을 수행한 결과 hello가 가리키는 문자열 객체의 내용은 "Hello and how are you?"가 된다.불변 객체인 String의 내용이 바뀐 것이다.4) hello += "and how are you?"; 문장이 내부적으로hello = new StringBuffer(hello).append(" and ho..