(Day 42) C/S App으로 진화! RMI란?
Review DAO 왜 썼니? (무슨 역할(목적)?) 이전에 핸들러는 UI처리 (콘솔 입출력) 및 데이터 처리 코드가 한 클래스 안에 있었다. 그러면 유지보수가 너무너무너무 힘들어진다. (=불가능해진다.) UI처리를 콘솔 입출력에서 GUI로, 혹은 웹 페이지로 변경한다면 그 때마다 데이터 처리 코드도 수정이 되어야 하는 것이다. 반대로 데이터 처리 코...
Review DAO 왜 썼니? (무슨 역할(목적)?) 이전에 핸들러는 UI처리 (콘솔 입출력) 및 데이터 처리 코드가 한 클래스 안에 있었다. 그러면 유지보수가 너무너무너무 힘들어진다. (=불가능해진다.) UI처리를 콘솔 입출력에서 GUI로, 혹은 웹 페이지로 변경한다면 그 때마다 데이터 처리 코드도 수정이 되어야 하는 것이다. 반대로 데이터 처리 코...
Review Generic 제네릭이란? 타입에 종속되지 않는 메서드와 클래스를 만들어 동일 기능을 여러 타입에 대해 보편적으로 사용할 수 있게 해주는 문법이다. 다르게 말하면, General, 범용적인 클래스와 메서드를 만들 때 쓰는 문법이 generic이다. 줄여 말하면, 범용 클래스를 제작하는 전용 문법이다. 제네릭의 사용법? <> ...
Review Terminology Functional Interface Lambda Grammer Static Method Reference Instance Method Reference Constructor Reference forEach( [lambda] ) 람다 문법과 메서드 레퍼런스 문법은 별개의 문법이며, 모두 functional in...
복습 JSON Library GSON jackson-databind Builder Pattern (GoF) Factory Method 보다 복잡한 옵션을 설정하여 인스턴스를 생성하려고 할 때 사용 만드려는 객체(레퍼런스 변수) = new 빌더().옵션설정(옵션).옵션설정(옵션).create(); 어… 그러면 빌더().create()만 하면 팩토리 메...
복습 Serialize / Deserialize 객체를 SSD, HDD 등의 스토리지에 저장하려면, 저장할 수 있는 형식으로 변경해야 한다. 그래서 일련의 바이트 배열로 변경하는 경우가 있는데, 이것을 Serialization이라고 표현한다. 그렇게 출력하고 저장한 바이트 배열을 읽어들여서 다시 인스턴스를 생성하는 과정은 Deserialization이...
복습 버퍼 사용의 이유 버퍼를 쓰는 이유가 뭔가? 버퍼를 쓰는 이유는 프로그램을 더 빠르게 만들기 위함이다. 버퍼를 쓰면 왜 빨라지나? 컴퓨터는 cpu가 메모리를 다룰 때는 엄청 빠른데, 외부 저장장치에 접근하여 읽거나 쓸 때는 그에 비해서 엄청 느리다. 그래서 메모리 입출력의 횟수를 줄이기 위해서 버퍼라는 임시 저장공간을 메모리에 만들어서 우선 거기...
복습 파일 입출력 파일로 문자열이나 숫자 등의 데이터를 출력하고 읽을 수 있는가? FileInputStream, FileOutputStream 에 대해서 설명할 수 있는가? 무조건 바이트 배열로 입력하고 출력할 수 있는 스트림이다. 파일 입출력의 시초가 되었던 유닉스의 read()에서 유래했다. 상속 사용법 상속을 이용하여 기존 클래스에 기능을 추가할...
복습 중첩클래스 로컬클래스 로컬클래스에서 enclosing 메서드의 변수를 사용하는 메커니즘을 설명할 수 있는가? 그것을 직접 사용하는 것이 아니라, 그 변수의 값을 할당하는 변수를 자동으로 컴파일러가 생성해주기 때문이다. (Non-Static Local Class) 이러한 변수는 바이트코드를 해석한 IDE의 윈도우에서 Synthetic 이라고 붙은 ...
24년이라니!! 복습 Iterator Design Pattern (GoF) 자료구조에서 값을 꺼내는 방법에 통일성을 부여하기 위해 발견된 패턴. 어떤 자료구조에서 값을 꺼내건 동일한 방식으로 꺼내기 위해 사용한다. 장점 통일성 단점 오버헤드 중첩 클래스(Nested Class) 사용 용도 어떤 하나의 클래스에서만 사용하...
23년의 마지막 금요일이다. 23년이 이제 진짜 가는구나. 복습 인터페이스를 이용한 객체 사용 규칙 정의 인터페이스 활용시 이점 교체가 쉬워진다! 이 인터페이스를 (구현한 클래스로 만든 인스턴스(객체)) 쓴다고 코드를 작성하면, 나중에 그 부분을 교체하지 않고 한 두줄의 코드만 변경하여 다형성을 구현할 수 있다. 인터페이스와 추상클래스를 결합해서 사...
학습 Linked List, Array List의 remove(Object) 메서드에서 구현 방법이 다른 이유? Linked List 에서 삭제하려는 값과 동일한 값을 가진 노드를 발견하고서, index를 받아서 삭제하는 remove() 메서드를 실행하여 나머지를 처리하는 경우 traverse를 두 번 해야 하는 비효율이 생긴다. 가비지컬렉션을 도와...
복습 예외처리 예외처리의 고전적 방법 예외를 처리하기 위한 방법은 어떻게 발전해왔나? 호출된 메서드에서, 호출한 메서드에게 정보를 전달하는 방식으로 생각하기 쉬운 것은 return value를 이용하는 것이다. ArrayList 클래스의 indexOf() 메서드가 그러한 방법을 사용한다. 원하는 값이 없는 경우 (예외가 발생한 경우) 인덱스의 값으로...
30일차 복습 날짜 관련 클래스 java.util.Date 클래스 사용할 줄 아는가? (날짜 및 시간 정보의 추출) java.util.Calendar 클래스 사용할 줄 아는가? java.sql.Date 클래스 예외처리 문법의 목적과 구동 방식을 설명할 수 있나? 문법오류가 아니고 실행 중 문제가 발생하면 그것은 대부분 예외...
23/12/22 복습 인스턴스를 복사하는 방법 Object 의 clone() 메서드를 사용하여 인스턴스 복제 가능. clone() 메서드를 사용하려면 Cloneable 인터페이스를 구현한다고 JVM에 알려줘야 함. COPY: Shallow VS Deep 인스턴스를 복제할 때, 깊은 복사와 얕은 복사는 의존 객체는 복제하지 않음. 인스턴...
28일차 23/12/21 복습 배운 내용 돌아보기 인터페이스 인터페이스 문법의 용도? 추상클래스에서 더 나아가서 어떤 메서드를 구현해야 할지만 알려주고 싶은 경우. 인터페이스 상속과 구현에 대한 설명? 인터페이스는 인터페이스를 상속할 수 있다. 인터페이스의 다중 상속이 가능한 경우, 불가능한 경우? 메서드 시그너처가 겹치는 메서드가 구현이 안되어 있...
복습 필드나 메서드에 접근을 제어해야 하는 상황은 언제가 있을까? 대부분의 상황에서 접근을 제어해야 할 것이다. 다른 클래스에서 필드에 임의 접근이 가능하다면 캡슐화가 깨진다. 캡슐화는 추상화를 지원하는 도구이고, 추상화는 현실 세계를 데이터와 연산자로 표현하기 위한 노력이다. 그래야 컴퓨터가 처리할 수 있으니까. Modifer 란? private ...
추상 클래스의 용도는? 상속을 위해 존재하는, generalization을 위한 클래스이다. 인스턴스화를 할 수없다. (인스턴스 생성이 불가능하다.) 레퍼런스 선언은 가능하다. 다형적 변수를 구현한다. 인터페이스도 레퍼런스 선언은 가능하다. 컴파일러: 레퍼런스가 선언된 클래스를 기준으로 형식만을 검사한다. J...
복습 다형적 변수의 사용방법 컴파일러는 형식상 옳은지 아닌지만 검사한다. 자식 타입은 부모보다 변수나 기능이 더 많기 때문에, 자식 타입의 레퍼런스에 부모 클래스의 인스턴스 주소를 할당해 줄 수 없다. 형변환을 통해서 할당한다 하더라도, 부모 인스턴스에서는 자식 클래스의 변수나 메서드가 없기 때문에 런타임 오류가 발생할 것이다. (실제 그 레퍼런스가...
복습 생성자에 대한 설명? 클래스를 객체로 생성할 때(사용할 때) 단 한번 실행되는 메서드가 생성자다. 왜 생성자가 필요한가? 객체가 유효한 상태로 존재하기 위해서는 기본적인 설정이 필요하다. 그 기본적인 설정을 하는 것이 생성자다. 만약 기본적인 설정을 할 게 아무것도 없다면, 아무것도 하지 않고 아무 정보도 받지 않는 생성자인 기본생성자를 쓰면 ...
23일(2023-12-14) 전략을 바꿔야겠다. 실습을 따라가는 것만 해도 하루 시간이 부족할 정돈데, 정리를 따로 해서 올리는 건 시간을 최적화해서 사용하지 못하는 걸로 판단된다. 일자별 내가 무엇을 배웠는지, 이것이 나에게 어떤 성장이 되었는지, 내가 어떤 생각을 하고 있는지를 일기처럼 적어야겠다. (다 상세히 서술하진 못해도) 학습시간 필기...
22일(2023-12-13) 복습 GRASP (일반적 책임할당 지침) 의 Information Expert 적용 정보를 가지고 있는 클래스가 그 정보를 다루게 해라. 그렇게 해야 클래스를 전문화시켜서 높은 응집력을 가지게 할 수 있다. GRASP: High Cohesion 응집력을 높여야 다른 프로젝트에서 사용가능하며, 기능 변경시 작업해야 하는 ...
21일 Open/Closed Principle? 기능 추가(확장)에는 열려있으나 코드 변경에는 막혀있어야 한다는 원칙이다. GRASP: Low-Coupling? 클래스와 클래스간의 결합이 적어야 재사용이 가능한 클래스를 작성할 수 있다. 죽는 순간 까지 햇갈릴 것이다. 헷갈리다? 햇갈리다? 배게? 베게? 어차피 모든 지식은 다 헷갈리게 된다. 인간의...
클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-22 남은 일자 : 111 일 ( 20/129 ) 본 내용은 제가 교육을 수강하며 기록한 내용으로, 정리되지...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록하고 추가한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 20...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 (https://github.com/eomjinyoung/) 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-...
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다. 클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기) 비트캠프 엄진영 강사님 [Github] 훈련기관 : 네이버클라우드주식회사 기간: 2023-11-14 ~ 2024-5-22 남은 일자 : 128 일 ( 1/...