일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 타입스크립트
- 스프링
- 분할메모리할당
- Java
- Spring
- Redux
- OS
- 프로그래머스
- 코드업
- 협업
- 자료구조
- 리덕스장바구니
- C++
- codeup
- js to ts
- error
- 공부
- memory
- Operating System
- web
- 파이썬
- 정렬
- 기초100제
- react
- 토이프로젝트
- 알고리즘
- 일상
- CPU 스케줄링
- 백준
- react-redux
- Today
- Total
목록Java (20)
감자튀김 공장🍟
> 를 읽고 정리합니다. 뒤에 나오는 예시는 책에 적힌 예시입니다. 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("..
Exception in thread "main" java.lang.UnsupportedClassVersionError: hello/hellospring/HelloSpringApplication has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 인프런에서 Spring 강의 들으면서 빌드 도중 이런 에러가 떴다. Error를 찾아보니까 프로젝트 파일은 55.0 버전으로 컴파일 되어 있지만 현재 컴파일러 버전이 52.0이라 로딩이 불가하다는 에러였다. 그래서 ..
1. Aspect Oriented Programming (AOP) 이란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 한다. 이는 횡단 관심사(Cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작을 추가함으로써 수행한다. 즉, 어떤 기능을 구현할 때 주요 핵심 기능과 핵심 기능 구현을 위한 부가적인 기능 구현을 분리하여 각각의 관점별로 묶어서 개발하는 방식이다. 왼쪽 그림에서 보면 Module 1,2,3에 여러가지 concern들이 겹쳐 있음을 알 수 있다. 즉, concern들이 각각의 모듈에 특정 부분을 이루고 있다고 이해하면..