일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공부
- 협업
- Spring
- 프로그래머스
- 알고리즘
- 타입스크립트
- react-redux
- error
- react
- memory
- Redux
- C++
- web
- 리덕스장바구니
- 토이프로젝트
- 백준
- Operating System
- 기초100제
- 스프링
- 코드업
- 정렬
- 일상
- OS
- Java
- js to ts
- CPU 스케줄링
- 파이썬
- 자료구조
- codeup
- 분할메모리할당
- Today
- Total
목록JAVA (16)
감자튀김 공장🍟
> 를 읽고 정리합니다. 1. 데코레이터 패턴(Decorator Pattern) 도장/도배업자, 장식자 원본에 장식을 더하는 패턴 프록시 패턴과 구현 방법 동일 프록시 패턴은 클라이언트가 최종적으로 돌려 받는 반환값 조작x 그대로 전달 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 덧입힘 "메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴" OCP, DIP 적용 2. 싱글턴 패턴(Singleton Pattern) 인스턴스를 하나만 만들어 사용 필요 요소 new를 실행할 서 없도록 생성자에 private 접근 제어자를 지정 유일한 단일 객체를 반환할 수 있는 정적 메서드 필요 유일한 단일 객체를 참조할 정적 참조 변수 필요 특징 private 생성자를 갖는다. 단일 객체 참조 변수를..
> 를 읽고 정리합니다. 1. 어댑터 패턴(Adapter Pattern) converter(교환기/변환기) - 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것 객체를 속성으로 만들어서 참조하는 디자인 패턴 "호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴" 2. 프록시 패턴(Proxy Pattern) 대리자, 대변인 실제 서비스 객체가 가진 메서드와 같은 이름의 메서드를 사용, 이를 위해 인터페이스 사용 인터페이스 사용 시, 서비스 객체가 들어갈 자리에 대리자 객체를 대신 투입해 클라이언트 쪽에서는 실제 서비스 객체를 통해 메서드를 호출하고 반환 값을 받는지, 대리자 객체를 통해 메서드를 호출하고 반환 값을 받는지 전혀 모르게 처리할 수도 있다. 📌중..
> 를 읽고 정리합니다. 뒤에 나오는 예시는 책에 적힌 예시입니다. 1. SRP - 단일 책임 원칙 "어떤 클래스를 변경해야하는 이유는 오직 하나뿐이어야 한다" - 로버트 C.마틴 📌 속성이 SRP를 지키지 않은 경우 (ex. 남자만 군대를 간다고 가정) class 사람 { String 군번; } .... 사람 로미오 = new 사람(); 사람 줄리엣 = new 사람(); 줄리엣.군번 = "1573042009"; ➡ 사람 클래스를 남자 클래스와 여자 클래스로 분할, 남자 클래스에만 군번 속성을 갖게 한다. 📌 메서드가 단일 책임 원칙을 지키지 않은 경우 class 강아지 { final static Boolean 수컷 = true; final static Boolean 암컷 = false; Boolean ..
> 를 읽고 정리합니다. 1. interface 키워드와 implements 키워드 인터페이스는 public 추상 메서드와 public 정적 상수만 가질 수 있다. 자바8 이후 디폴트 메서드(객체 구상 메서드, 정적 추상 메서드)를 지원할 수 있다. 2. this 키워드 지역 변수와 속성(객체 변수, 정적 변수)의 이름이 같은 경우 지역 변수가 우선한다. 객체 변수와 이름이 같은 지역 변수가 있는 경우 객체 변수를 사용하려면 this를 접두사로 사용한다. 정적 변수와 이름이 같은 지역 변수가 있는 경우 정적 변수를 사용하려면 클래스명을 접두사로 사용한다. 3. SOLID SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Principle): ..
> 를 읽고 정리합니다. 1. abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드: 선언부는 있는데 구현부가 없는 메서드 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스로 선언해야 한다. 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스가 된다. 즉, new를 사용할 수 없다. 추상 메서드는 하위 클래스에게 메서드의 구현을 강제한다.오버라이딩 강제 2. 생성자 생성자 = 객체 생성자 메서드 개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 자동으로 만들어준다. 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다. 3. 클래스 생성 시의 실행 블록, static 블록 클래스 생성자는 존재하지 않는다. 클래스 정보는 해당..
를 읽고 정리합니다. 1. 상속과 인터페이스 상속 관계: 하위 클래스 is a kind of 상위 클래스 해석: 하위 클래스는 상위 클래스의 한 분류다. 예제: 고래는 동물의 한 분류다. 인터페이스: 구현 클래스 is able to 인터페이스 해석: 구현 클래스는 인터페이스할 수 있다. 예제: 고래는 헤엄칠 수 있다. 2. 상속과 T 메모리 하위 클래스의 인스턴스가 생성될 때 상위 클래스의 인스턴스도 함께 생성된다. (+ 최상위 클래스인 Object 클래스의 인스턴스도 같이 생성됨) 3. 객체 형변환 암묵적 형변환 객체가 상위클래스의 형태로 형변환 되더라도 Override된 자신의 기능은 잃지 않는다. 하지만, 추가적으로 구현한 기능은 사용할 수 없다. 자식클래스가 부모클래스에게 상속받은 기능만 사용하도..
를 읽고 정리합니다. 1. 클래스 멤버vs. 객체 멤버 = static 멤버 vs. 인스턴스 멤버 클래스 멤버 = static 멤버 = 정적 멤버 static 키워드가 붙은 속성을 클래스 멤버 속성이라 한다. 객체 멤버 = 인스턴스 멤버 static이 안 붙은 속성은 객체 멤버 속성이라 한다. 정적 메서드는 객체들의 존재 여부에 관계 없이 쓸 수 있는 메서드다. ex) main() 메서드, getter, setter 정적 속성: 스태틱 영역에 클래스가 배치될 때 클래스 내부에 메모리 공간이 확보 객체 속성: 속성명만 존재, 실제 메모리 공간은 확보❌, 힙 영역에 객체가 생성되면 메모리 할당 변수 유형 이름 다른 이름 사는 곳 (T 메모리) static 변수 클래스 [멤버] 속성, 정적 변수, 정적 속성 ..
> 를 읽고 정리합니다. 1. 객체 지향의 4대 특성 캡 - 캡슐화(Encapsulation): 정보 은닉 상 - 상속화 : 재사용 추 - 추상화(Abstraction) : 모델링 다 - 다형성(Polymorphism) : 사용 편의 2. 클래스 VS 객체 클래스는 분류에 대한 개념이지 실체가 아니다. 객체는 실체다. 클래스 : 객체 = 사람 : 이명헌 3. 추상화: 모델링 모델은 추상화를 통해 실제 사물을 단순하게 묘사하는 것 추상화 = 모델링 = 자바의 class 키워드 추상화의 결과물은 모델이다. 이는 자바 언어에서 클래스로 표현된다.
> 를 읽고 정리합니다. 1. 자바 프로그램의 개발과 구동 JDK (Java Development Kit) 자바 개발 도구, 자바 소스 컴파일러 JVM용 소프트웨어 개발 도구 javac.exe JRE (Java Runtime Environment) 자바 실행 환경, 자바 프로그램 실행기 JVM용 OS java.exe JVM (JAva Virtual Machine) 자바 가상 기계 가상의 컴퓨터 자바 개발 도구인 JDK를 이용해 개발된 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM 상에서 구동된다. 2. 프로그램의 메모리 프로그램이 메모리를 사용하는 방식 코드 실행 영역 데이터 저장 영역 객체 지향 프로그램의 메모리 사용 방식 코드 실행 영역 스태틱 (static)영역 - 클래스 스택(stack)영역 -..
다른 분의 블로그를 보면서 블로그 개발 중에 could not find method compile() for arguments 라는 오류를 만났다. 찾아보니 compile, runtime, testCompile, testRuntime은 Gradle 7.0(2021.4.9)부터 삭제되었다고 한다. 그리고 해당 명령들은 implementation, runtimeOnly, testImplementation, testRuntimeOnly으로 대체되었다. 해결 방법 compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2") 이 부분에서 오류가 났기 때문에 compile을 implementation으로 바꿔주면 해결된다. implementation("..