🚀 다형성에서 빠질 수 없는 개념 추상화는 어떠한 객체에 대한 공통 요소를 추출하는 과정 으로 배웠다. 그러나 구체적인 행위를 구현하는 것이 아닌 메소드의 이름만 명시하고 하위 클래스에서 그 행위를 구현하도록 JAVA는 약속했다. 이렇게 행위를 구현화 하는데 필요한 절차가 오버로딩 , 오버라이딩 이라고 하는 것이다. 🌠 오버라이딩 Ride : (말, 자동차 등에) 타다 오버라이딩에 대해서는 상속과 추상화를 배웠다면 익숙한 어노테이션 일것이다. 상위 클라스의 추상메소드를 하위 클라스에서 구체화하는 과정으로 이해하면 충분하다 생각한다. abstract class Animal { void sound() {} } class Dog extends Animal { @Override public void sound(..
목차 내부클래스 내부 클래스의 종류 익명 클래스 내부클래스 내부 클래스안 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다. 이러한 내부 클래스는 외부 클래스에 대해 두 개의 클래스가 서로 긴밀한 관계를 맺고 있을 때 선언 가능하다. 외부 클래스 내부의 각각의 내부 클래스의 멤버들 간의 접근이 자유로우며 불필요한 클래스를 감춰서 코드 복잡성을 줄일 수 있다. 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있다. 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가 외부에서는 내부 클래스에 접근할 수 없으므로, 코드의 복잡성을 줄일 수 있다. class OutterClass{ class InnerClass{ } } 내부 클래스의 종류 정적 클래스 인스턴스 클래스 지역..
👱♀상속를 공부하면 따라오는 것 객체 지향 프로그래밍(OOP)의 특성 중 하나인 상속은 상위 클라스의 기능을 하위 클라스 에서도 가능하도록 부여받는 것으로 확장성, 유연성, 재사용성의 기능을 높여준다. 상속을 공부한다면 추상화를 볼 수 있을 것이고 인터페이스를 공부하게 될 것이고 오버라이딩, 오버로딩 까지 같이 공부하게 된다. 나는 두 기초적인 지식에서 정리가 되지 않았고 이번 기회로 정리하고자 한다. 🚀 abstract 추상 클래스를 알기 전에 추상화에 대한 오해를 풀고 가자 ☄ 추상화 JAVA에서 추상화는 특별한 용어는 아니다. 그저 국어 표현에서 말하는 추상은 실체 간에 공통되는 특성을 추출한 것으로 정리되는 할 수 있는데 개발자가 어떤 객체의 공통되는 특성을 뽑아내어 하나의 공통 객체로 만들어 ..
🚀 OOP를 올바르계 설계해 나가는 원칙 OOP의 4대 특성 캡슐화, 상속, 추상화, 다형성은 객체지향 프로그래밍을 이어가는 동안 사용할 Tool 같은 역할이 된다. 도구가 있다면 용도에 맞게 사용해야하는데 요리를 하면 표준에 있듯이 OOP 세계에서도 원칙이라는 것이 존대한다. OOP를 기반으로 설계하는 방식을 OOD (Object Oriented Design)이라고 하며 설계 방법을 구체화 하여 정리한 원칙이 SOLID가 되는 것이다. 🌠 SOLID 원칙이 탄생한 것은 높은 응집도와 낮은 결합도 목표로 로버트 C.마틴이 확립한 개념이다. ☄ DIP(Dependency Inversion Principle) : 의존 역전 원칙 자신보다 변하기 쉬운 것에 의존하지 마라 아래 그림에서는 자동차 클래스가 스노우..
🚀 프로그램이 메모리를 사용하는 방식 하나의 프로그램이 실행될 때 프로그램이 메모리를 사용하는 방식이다. 기계어를 포함한 모든 프로그래밍이 언어의 공통된 메모리 사용방식이며 OOP에서는 데이터 저장 영역을 다시 3개의 영역으로 나누어 사용한다. 🌠 main() 메소드 : 메소드 스택 프레임 자바가 실행되면 JRE는 프로그램 내부의 main() 메소드의 유무를 확인하고 이어서 JVM이 역할을 이어 받아 전저리 과정을 이어간다. 프로그램이 실행되면 JVM은 실행에 필요한 패키지(ex. java.lang)를 Static 영역에 저장한다. 그리고 JVM은 개발자가 작성한 모든 클래스와 패키지 역시 Static영역에 저장한다. ☄ main() 메소드가 실행되기 전 JVM에서 수행하는 전처리 작업들 java.lan..
🚀 자바의 구성 우리가 자바를 다루면서 자바가 어떻게 운영되는지 확인할 필요가 있다. 자바의 최대 장점으로 JVM이 설치되어 있는 어느 운영체제라도 JDK를 사용할 수 있다 알고있다. 우리는 여기서 더 자세하게 알고 들어갈 필요가 있다. 🌠 JVM(Java Virtual Machine) 자바 바이트코드를 실행할 수 있는 스택 기반의 가상 머신을 구현한 소프트웨어이다. JVM의 역할은 JAVA Application을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실할하게된다. 때문에 JAVA와 OS에서 중계 역할을 하여 JAVA가 OS환경에 구애받지 않고 실행을 가능하게 해준다. 또한, 메모리 관리, GC(Garbage collection)을 수행한다. 🌠 JDK(Java Development kit)..
🚀 Lambda 의 등장 기술이 발전되어 가면서 커져만 가는 데이터를 처리한 방법을 필요로했고 이를 필요로 하는 CPU 의 성능 향상이 필요하게 되었다. 이후 CPU에 멀티 코어가 등장하게 되면서 모든 데이터를 빠르게 처리하기 위해 모든 코어를 동원할 수 있는 기술을 개발하게된다. 그렇게 JAVA 8에서 새롭게 등장한 병렬화 개념이 등장했고 동시에 Collection (Map / Set / List)가 더욱 강화 되었다. 이러한 컬렉션 기능을 더욱 효울적으로 사용하기 위해 등장한 함수형 프로그래밍이 오늘의 주제인 Lambda인 것이다. 그래서 람다식이란? 스프링을 위한 자바 객체 지향의 원리와 이해 에서 정의한 람다식 이란? 코드 블록을 위해 메서드를, 메서드를 사용하기 위해 익명 객체를 만드는 복잡함을..
🚀 Stream 이란? 데이터의 흐름을 정의가능한 API로 Collection을 함수로 정의할 수 있다. java8 에서 추가된 API 데이터를 다루는 영역에서 강한 측성을 보임 데이터를 처리하기 위한 내부반복을 통해 정렬 / 필터링 기능 제공 🌠 특징 ✔ 병렬 처리에 유리 병렬 처리를 위해 common fork join pool을 사용하는 parallel() 메소드 제공 common fork join pool 각 스레드가 개별 큐를 가지고 있으며, 놀고 있는 스레드가 있으면 일하는 스레드의 작업을 가져와 수행하여 최적의 성능 도출 코어의 수가 많을수록, 처리할 데이터 수가 많을수록, 데이터당 처리 시간이 길수록 병렬 처리 성능 향상 배열, ArrayList 사용 시 유리(LinkedList는 순차 진행..
🚀 시작점에 대해 모든 언어가 그렇듯이 그 시작 포인트가 있다. C 계열 int main(void){ print("Hi") return 0; } JVM 계열 class main{ public static void main(String[] args){ System.out.println("Hello world!"); } } 이는 실행시 메모리를 할당하고 프로세스 종료시에 같이 종료됨을 의미한다. 때문에 모든 언어가 프로세스를 실행하는 목적으로 시작점을 가지고 있다. 🌠 자바의 시작점 처음 JAVA를 배우는 경우 Hello, World를 출력하기 위해 다음과 같은 스크립트를 보게된다. 핵심은 System.out.println() 이지만 중요한 것은 쓰레드를 실행하기 위한 main() 이다. 물론 초기 초보 개..
- Total
- Today
- Yesterday
- 매트랩
- CS
- C언어
- security
- java
- Solid
- Matlab
- 스프링부트
- OOP
- 디자인패턴
- 그래프
- JPA
- 스프링
- Spring
- 릿코드
- 자바
- 자격증
- 프로그래머스
- kakao
- docker
- 수학
- nginx
- 면접
- springboot
- 백준
- Algorithm
- interview
- spring-cloud
- 알고리즘
- ajax
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |