Skip to content

Commit

Permalink
오타 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
cheese10yun committed May 18, 2019
1 parent 6649c08 commit 21b7573
Show file tree
Hide file tree
Showing 26 changed files with 92 additions and 92 deletions.
2 changes: 1 addition & 1 deletion Database/관계형_데이터베이스_실전_입문.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ B+트리 인덱스에 있는 항목의 수가 테이블 행 수와 똑같다는


## 인덱스의 왼쪽과 검색 범위
B+트리 인덱스 등가 비교와 범위 검색에 사용 할 수있다. 구체적으로 WHERE key = 123 처럼 같은 (=equal)으로 검색한다. 범위 검색은 부등호나 BETWEEN 절 을 사용해 범위를 지정한다. WHERE BETWEEN 100 AND 200
B+트리 인덱스 등가 비교와 범위 검색에 사용 할 수 있다. 구체적으로 WHERE key = 123 처럼 같은 (=equal)으로 검색한다. 범위 검색은 부등호나 BETWEEN 절 을 사용해 범위를 지정한다. WHERE BETWEEN 100 AND 200

LIKe 검색도 범위 검색이다. WHERE key LIKE 'a%'를 검색하면 'a' 이상 'b' 미만의 범위에 있는 항목이 검색된다. **그러나 LIKE 절을 이용한 검색은 와일드카드를 배치하는 위치가 문제가 된다.**

Expand Down
2 changes: 1 addition & 1 deletion ETC/design-pattern/Adapter-pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

* 연관성 없는 두 객체 묶어 사용하기
## 학습 목표
* 알고리즘을 요구사항에 맞춰 사용할 수있다.
* 알고리즘을 요구사항에 맞춰 사용할 수 있다.
2 changes: 1 addition & 1 deletion ETC/design-pattern/strategy-patten.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

## 스트레지 패턴
* 여러 알고리즘을 하나의 **추상적인** 접근점을 만들어 접근 점에서 서로 **교환 가능** 하도록 하는 패턴
* 스트래지 패턴은 전략을 숩게 바꿀 수 있도록 해주는 디자인 패턴이다. 여기서 전략이란 어떤 목적을 당성하기 위해 일을 수행하는 방식, 비지니스 규칙, 문제를 해결하는 알고리즘 등으로 이해할 수있다.
* 스트래지 패턴은 전략을 숩게 바꿀 수 있도록 해주는 디자인 패턴이다. 여기서 전략이란 어떤 목적을 당성하기 위해 일을 수행하는 방식, 비지니스 규칙, 문제를 해결하는 알고리즘 등으로 이해할 수 있다.

## 스트래지 패턴 역할
* Strategy : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시한다.
Expand Down
22 changes: 11 additions & 11 deletions JAVA/Effective-java.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
- [인터페이스는 믹스인(혼합)을 정의하는 데 이상적이다.](#인터페이스는-믹스인혼합을-정의하는-데-이상적이다)
- [인터페이스는 비 계층적인 자료형 프레임워크를 만들 수 있도록 한다.](#인터페이스는-비-계층적인-자료형-프레임워크를-만들-수-있도록-한다)
- [인터페이스를 사용하면 포장 클래스 숙어을 통해 안전하면서도 강력한 기능 개선이 가능하다.](#인터페이스를-사용하면-포장-클래스-숙어을-통해-안전하면서도-강력한-기능-개선이-가능하다)
- [추상 골격 구현 클래스를 중요 인터페이스마다 두면, 인터페이스의 장점과 추상 클래스의 장점을 결합 할 수있다.](#추상-골격-구현-클래스를-중요-인터페이스마다-두면-인터페이스의-장점과-추상-클래스의-장점을-결합-할-수있다)
- [추상 골격 구현 클래스를 중요 인터페이스마다 두면, 인터페이스의 장점과 추상 클래스의 장점을 결합 할 수 있다.](#추상-골격-구현-클래스를-중요-인터페이스마다-두면-인터페이스의-장점과-추상-클래스의-장점을-결합-할-수 있다)
- [인터페이스보다 추상 클래스가 발전시키기는 쉽다](#인터페이스보다-추상-클래스가-발전시키기는-쉽다)
- [public 인터페이스는 신중하게 설계해야 한다.](#public-인터페이스는-신중하게-설계해야-한다)
- [19. 인터페이스는자료형을 정의할 대만 사용하라](#19-인터페이스는자료형을-정의할-대만-사용하라)
Expand Down Expand Up @@ -283,10 +283,10 @@ public int hashCode() {
* private
* 이렇게 선언된 멤버는 선언된 최상위 레벨 클래스 내부에서만 접근 가능하다.
* package-private
* 이렇게 선언된 멤버는 같은 패키지 내부 아무 클래스나 사용할 수있다.
* 이렇게 선언된 멤버는 같은 패키지 내부 아무 클래스나 사용할 수 있다.
* default access 으로 알려져 있다. 아무 것도 붙이지 않으면 이 권한이 주어지기 때문에
* protected
* 이렇게 선언된 멤버는 선언된 클래스 및 하위 클래스에만 사용할 수있다.
* 이렇게 선언된 멤버는 선언된 클래스 및 하위 클래스에만 사용할 수 있다.
* 같은 패키지 내에서도 사용 가능
* 내 개인적생각 : protected는 동일 패키지에서 접근하는 것은 그렇게 바람직하지 않아보임, protected 자체가 상속을 위한 개념으로 받아 들이기 때문에
* public
Expand Down Expand Up @@ -475,7 +475,7 @@ class Yun implements SingerSongwriter {
* 추상 클래스를 사용해서 자료형을 정의하면 프로그래머는 계승 이외의 수단을 사용 할 수없다.
* 그렇게 해서 만든 클래스는 포장 클래스보다 강력하지 않고, 꺠지기도 쉽다

## 추상 골격 구현 클래스를 중요 인터페이스마다 두면, 인터페이스의 장점과 추상 클래스의 장점을 결합 할 수있다.
## 추상 골격 구현 클래스를 중요 인터페이스마다 두면, 인터페이스의 장점과 추상 클래스의 장점을 결합 할 수 있다.

## 인터페이스보다 추상 클래스가 발전시키기는 쉽다
* 다음 릴리즈에 새로운 메서드를 추가하고 싶다면, 적당한 기본구현 코드를 담은 메서드를 언제든지 추가할 수 있다. 하지만 인터페이스는 이런 작업들이 어렵다.
Expand Down Expand Up @@ -523,7 +523,7 @@ public interface Good{

### 정적 멤버 클래스 (static member class)
* 정적 멤버 클래스는 가장 단간한 중첩 클래스
* 정적 멤버 클래스는 바깥 클래스의 모든 맴버에(private로 선언된 것까지도) 접근할 수있다.
* 정적 멤버 클래스는 바깥 클래스의 모든 맴버에(private로 선언된 것까지도) 접근할 수 있다.
* 정적 멤버 클래스는 바깥 클래스의 정적 멤버이며, 다른 정적 멤버와 동일한 접근 권한 규칙을 따른다.
* 정적 멤버 클래스를 private로 선언했다면 해당 중첩 클래스에 접근할 수 있는 것은 바깥 클래스 뿐일것이다.
* 정적 멤버 클래스의 흔항 영례 가운데 하나는 바깥 클래스스와 함께 사용될때 용의하다
Expand Down Expand Up @@ -820,7 +820,7 @@ for(Elment e : elemtes){
## 돈을 계산할 때는 BigDeimal, int 또는 Long을 사용해야 한단는 원칙을 지켜라
* 정확한 답을 요구하는 문제를 풀 때는 float, dobule을 쓰지말라
* 소수점 이하 처리를 시스템이 알아서 해줬으면하거, 기본 잘형 보다 사용하기가 좀 불편해도 괜찮으며 성능이 조금 떨어져도 상관없을 경우에는 BigDeimal을 쓰라.
* BigDeimal은 올림 연산을 어떻게 수행해야하는지 여덟 가지 올림 모드 가운데 하나로 지정할 수있다
* BigDeimal은 올림 연산을 어떻게 수행해야하는지 여덟 가지 올림 모드 가운데 하나로 지정할 수 있다
* 그러나 성능이 중요하고 소수점 이래 수를 직접 관리해도 상관 없으며 계산할 수가 심하게 크지 않을 ㄱ때는 intlong을 쓰라. 관계된 수치들이 십진수 아홉 개 이하로 표현이 가능할 때는 int를 쓰라 18개 이하로 펴햔 가능할 때는 long을 쓰라 그 이상일 때는 BigDecimal을 써야한다.

# 49. 객체화 된 기본 자료형 대신 기본 자료형을 이용하라
Expand Down Expand Up @@ -976,7 +976,7 @@ public String statment(){
# 52. 객체를 참조할 때는 그 인터페이스르 사용해라

* 인자의 자료형으로 클래스 대신 인터페이스를 사용해야한다.
* 객체를 참조할 때는 클래스보다 인터페이스를 사용해야 한다는 것으로 이해할 수있다.
* 객체를 참조할 때는 클래스보다 인터페이스를 사용해야 한다는 것으로 이해할 수 있다.
* **만일 적당한 인터페이스 자로형이 있다면 인자나 반환값, 변수 그리고 필드의 자료형은 클래스 대신 인터페이스로 선언하자**
* 객체의 실제 클래스를 참조할 필요가 있는 유일한 순간은 생성자로 객체를 생성할 때다.

Expand All @@ -994,8 +994,8 @@ Vector<Subscriber> subscribers = new Vector<subscribers>();
# 53. 리플렉션 대신 인터페이스를 이용하라
* **리플랙션 기능을 이용하면 메모리에 적재된 클래스의 정보를 가져오는 프로그램을 작성할 수 있다.**
* Class 객체가 주어지면 해당 객체가 나타내는 클래스의 생성자, 메서드 필드 등을 나타내는 Constructor, Method, Field 객체들을 가쟈ㅕ올 수 있는데, 이 객체들을 사용하면 클래스의 멤버 이름이나. 필드 자료형, 메서드 시그니처 등의 정보를 얻어낼 수 있다.
* 게다가 Constructor, Method, Field 객체들을 이용하면 거기에 연결되있는 실세 성성자, 메서드, 필드들을 반영적으로 조작할 수있다.
* 예를 들어 Method invoke를 이용하면 어던 클래스의 어떤 객체에 정의돈 어떤 메소드라도 호출할 수있다.
* 게다가 Constructor, Method, Field 객체들을 이용하면 거기에 연결되있는 실세 성성자, 메서드, 필드들을 반영적으로 조작할 수 있다.
* 예를 들어 Method invoke를 이용하면 어던 클래스의 어떤 객체에 정의돈 어떤 메소드라도 호출할 수 있다.

## 주의점
* 컴파일 시점에 자료형을 검사함으로 얻을 수 있는 이점을 포기해야한다.. 리플렉션을 통해서 존재하지 않은, 또는 접근할 수없는 메서드릉ㄹ 호출하려면 실행 도중에 오류가 발생할 것이다. 그러니 특별히 주의해야 한다.
Expand Down Expand Up @@ -1024,7 +1024,7 @@ Vector<Subscriber> subscribers = new Vector<subscribers>();
* 이런 부분은 성능 문제가 발뎐된 후에 수정하기 어렵다.

### API를 설계할 때 내리는 결정들이 성능에 어떤 영향을 끼맃지를 생각하라
* public 자로형은 변경 가능하게 만들면 쓸데 없이 방어적 복사를 많이 해야 할 수있다.
* public 자로형은 변경 가능하게 만들면 쓸데 없이 방어적 복사를 많이 해야 할 수 있다.


### 좋은 성능을 내기 위해 API를 급진적으로 바꾸는 것은 바람직하지 않다.
Expand Down Expand Up @@ -1129,4 +1129,4 @@ try {
* **catch 블록은 예외를 선언한 목적, 그러니까 예외적 상황을 반드시 처리하도록 강제하는 목적에 배치된다.**
* 예외를 무시하는 것은 화재 경고를 무시하는 것과 같다.
* **적도 catch 하는 블록안에 예외를 무시해도 괜찮은 이유라도 주석으로 남겨둬야한다.**
* 이런 예외가 발생하더라도 catch 블록으로 예외를 무시하는 프로그램은 오류가 생겨도 조용히 실행을 계속한다. 예외를 적절히 처리하면 오류도 프로그램이 죽는일은 피할 수있다 **하지만 명확한 이유가 없지 않은 이상 사용하지마라 (내 개인적 생각)**
* 이런 예외가 발생하더라도 catch 블록으로 예외를 무시하는 프로그램은 오류가 생겨도 조용히 실행을 계속한다. 예외를 적절히 처리하면 오류도 프로그램이 죽는일은 피할 수 있다 **하지만 명확한 이유가 없지 않은 이상 사용하지마라 (내 개인적 생각)**
2 changes: 1 addition & 1 deletion JAVA/thread.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
* 모든 자바 프로그램은 메인 스레드가 메인 메서드를 실행하면서 시작된다.
* main() 메서드의 첫 코드부터 아래로 순차적으로 실행한다.
* main() 메서드의 마지막 코드를 실행하거나, return 문을 만나면 실행이 종료된다.
* 메인 스레드(메인 스레드는 JVM이 생성)는 작업 스레드를 만들어서 병렬로 코드들을 실행 할 수있다.
* 메인 스레드(메인 스레드는 JVM이 생성)는 작업 스레드를 만들어서 병렬로 코드들을 실행 할 수 있다.

## 멀티 스레드, 싱글 스레드
![](/draw/java-thread-single-multy.png)
Expand Down
6 changes: 3 additions & 3 deletions JAVA/람다식-기초.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- [스트림](#%EC%8A%A4%ED%8A%B8%EB%A6%BC)
- [스트림 이란 ?](#%EC%8A%A4%ED%8A%B8%EB%A6%BC-%EC%9D%B4%EB%9E%80)
- [내부 반복자를 사용하므로 병렬 처리가 쉽다.](#%EB%82%B4%EB%B6%80-%EB%B0%98%EB%B3%B5%EC%9E%90%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%AF%80%EB%A1%9C-%EB%B3%91%EB%A0%AC-%EC%B2%98%EB%A6%AC%EA%B0%80-%EC%89%BD%EB%8B%A4)
- [스트림은 중간 처리와 최종 처리를 할 수있다.](#%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%80-%EC%A4%91%EA%B0%84-%EC%B2%98%EB%A6%AC%EC%99%80-%EC%B5%9C%EC%A2%85-%EC%B2%98%EB%A6%AC%EB%A5%BC-%ED%95%A0-%EC%88%98%EC%9E%88%EB%8B%A4)
- [스트림은 중간 처리와 최종 처리를 할 수 있다.](#%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%80-%EC%A4%91%EA%B0%84-%EC%B2%98%EB%A6%AC%EC%99%80-%EC%B5%9C%EC%A2%85-%EC%B2%98%EB%A6%AC%EB%A5%BC-%ED%95%A0-%EC%88%98%EC%9E%88%EB%8B%A4)
- [스트림의 종류](#%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%98-%EC%A2%85%EB%A5%98)
- [파이프 라인](#%ED%8C%8C%EC%9D%B4%ED%94%84-%EB%9D%BC%EC%9D%B8)
- [필터링 : distinct(), filter()](#%ED%95%84%ED%84%B0%EB%A7%81--distinct-filter)
Expand Down Expand Up @@ -114,7 +114,7 @@ MyFunctionInterface fi = ()->{...};
```

# 클래스 맴버와 로컬 변수 사용
* 람다식 실행 불록에는 클래스의 맴버인 필드와 메서드를 제약 없이 사용 할 수있다.
* 람다식 실행 불록에는 클래스의 맴버인 필드와 메서드를 제약 없이 사용 할 수 있다.
* 람다식 실행 블록내에서는 this는 람다싯을 실행한 객체의 참조이다.

# 표쥰 API의 함수적 인터페이스
Expand Down Expand Up @@ -186,7 +186,7 @@ dobule ageAvg = list.stream() // 오리지날 스트림
* 한가지 작업을 서브 작업으로 나누고, 서브 작업들을 분리된 스레드에서 병렬적으러 처리한 후, 서브 작업들의 결과들을 최종 결합하는 방법
* 자바는 ForkJoinPool 프레임워크를 이용해서 병렬 처리를 한다.

### 스트림은 중간 처리와 최종 처리를 할 수있다.
### 스트림은 중간 처리와 최종 처리를 할 수 있다.
![](../../assets/stream-work.png)

* 중간 처리: 요소들의 매핑, 필터링, 정렬
Expand Down
Loading

0 comments on commit 21b7573

Please sign in to comment.